• 帮初中同学做的简单的课程设计


    因为同学没学链表,结构体,只能简单并且麻烦的做了一个课程设计。内容为存储学生信息和考试成绩,对成绩单进行编辑,排序,删除,显示等功能。

    代码如下:

      1 #include <stdio.h>
      2 #include <conio.h>
      3 #include <string.h>
      4 #define NUMSTU 5000      /*最大学生人数*/
      5 #define NUMSCORE 4    /*成绩个数*/
      6 #define NAMELEN 100    /*姓名的最大长度<10*/
      7 void main()
      8 {
      9     char menuItem,subItem;        /*用户输入的菜单项*/
     10     int i,j,l;
     11     unsigned long tempNo;       //用于排序对调内存的中间变量
     12     char tempName[NAMELEN];
     13     float  sum,k;
     14 
     15     /*主要数据结构*/
     16     unsigned long no[NUMSTU]={0};        /*学号*/
     17     char name[NUMSTU][NAMELEN]={""};    /*姓名*/
     18     float score[NUMSTU][NUMSCORE]={0};    /*数学、语文、英语、平均成绩*/
     19     int excellentNum[3]={0};            /*每科成绩为优秀(>=90)的人数*/
     20     char subject[NUMSCORE][NAMELEN]={"数学","语文","英语","平均"};
     21     int currentNumStu;                    /*当前表中的学生人数*/
     22     
     23     currentNumStu=0;
     24     do
     25     {    
     26         printf("|-------------------------------------------------------|
    ");
     27         printf("|							|
    ");
     28         printf("|		  请输入选项编号(0 ~~ 7):  		|
    ");
     29         printf("|							|
    ");
     30         printf("|-------------------------------------------------------|
    ");
     31         printf("|							|
    ");
     32         printf("|		    1——创建成绩单          		|
    ");
     33         printf("|		    2——添加学生          		|
    ");
     34         printf("|		    3——编辑学生          		|
    ");
     35         printf("|		    4——删除学生          		|
    ");
     36         printf("|		    5——统计成绩          		|
    ");
     37         printf("|		    6——排序成绩单        		|
    ");
     38         printf("|		    7——显示成绩         		|
    ");
     39         printf("|		    0——退出                 		|
    ");
     40         printf("|-------------------------------------------------------|
    ");
     41     
     42         printf("请输入选项编号(0 ~ 7): ");
     43         /*清除键盘缓冲区*/
     44         fflush(stdin);
     45         scanf("%c",&menuItem);
     46 
     47         switch(menuItem)
     48         {
     49             case '1':/*创建成绩单*/
     50                    if(currentNumStu>0)
     51                    {
     52                        printf("
    不能重新创建学生成绩单
    ");
     53                    }
     54                    else
     55                    {
     56                        printf("注意:输入的结束标志为学号为0!
    ");
     57                        i=0;
     58                        printf("请输入学号:");
     59                        scanf("%lu",&no[i]);
     60                        
     61                        /*清除键盘缓冲区*/
     62                        fflush(stdin);
     63                        while(no[i]!=0&&currentNumStu<NUMSTU)
     64                        {
     65                            printf("请输入姓名:");
     66                            gets(name[i]);
     67                           for(j=0; j<NUMSCORE-1; j++)
     68                           {
     69                               printf("请输入%s成绩:",subject[j]);
     70                               scanf("%f",&score[i][j]);
     71                           }
     72 
     73                           /*计算平均成绩*/
     74                           sum=0;
     75                           for(j=0; j<NUMSCORE-1; j++) 
     76                                 sum = sum+score[i][j];
     77                           score[i][3] =    sum/3;
     78                         
     79                           currentNumStu++;
     80                            if(currentNumStu==NUMSTU) 
     81                            {   printf("成绩单已满!结束创建!!
    ");
     82                                break;
     83                            }
     84                            i++;
     85                            
     86                            printf("请输入学号:");
     87                            scanf("%lu",&no[i]);
     88                            /*清楚键盘缓冲区*/
     89                            fflush(stdin);
     90                        }
     91                    }
     92                    break;
     93             case '2':
     94                   /*添加学生*/
     95                    if(currentNumStu>=NUMSTU)
     96                    {
     97                        printf("成绩单已满!不可再加学生信息!!
    ");
     98                    }
     99                    else
    100                    {
    101                        i=currentNumStu;
    102                        printf("请输入学号:");
    103                        scanf("%lu",&no[i]);
    104                        fflush(stdin);
    105                        printf("请输入姓名:");
    106                        gets(name[i]);
    107                        for(j=0; j<NUMSCORE-1; j++)
    108                        {
    109                            printf("请输入%s成绩:",subject[j]);
    110                            scanf("%f",&score[i][j]);
    111                        }
    112 
    113                           /*计算平均成绩*/
    114                        sum=0;
    115                        for(j=0; j<NUMSCORE-1; j++) 
    116                            sum = sum+score[i][j];
    117                        score[i][3] =sum/3;
    118                        currentNumStu++;
    119                        printf("添加成功!");
    120                    }
    121                    break;
    122             case '3':/*编辑学生信息*/
    123                    scanf("%lu",&tempNo);
    124                    for(i=0;i<currentNumStu;i++)
    125                        if(no[i]==tempNo)
    126                            break;
    127                    if(i!=currentNumStu)
    128                    {
    129                        for(j=0; j<NUMSCORE-1; j++)
    130                        {
    131                            printf("请输入%s成绩:",subject[j]);
    132                            scanf("%f",&score[i][j]);
    133                        }
    134 
    135                           /*计算平均成绩*/
    136                        sum=0;
    137                        for(j=0; j<NUMSCORE-1; j++) 
    138                            sum = sum+score[i][j];
    139                        score[i][3] =sum/3;
    140                        printf("编辑成功!");
    141                    }
    142                    else
    143                        printf("不存在该学生!
    ");
    144                    break;
    145             case '4':/*删除指定学号的学生信息*/
    146                    printf("请输入学号:");
    147                    scanf("%lu",&tempNo);
    148                    for(i=0;i<currentNumStu;i++)
    149                        if(no[i]==tempNo)
    150                            break;
    151                    if(i!=currentNumStu)
    152                    {
    153                        for(;i<currentNumStu-1;i++)
    154                        {
    155                            no[i]=no[i+1];
    156                            strcpy(name[i],name[i+1]);
    157                            for(j=0; j<NUMSCORE; j++)
    158                            {
    159                               score[i][j]=score[i+1][j];
    160                            }
    161                        }
    162                        currentNumStu--;
    163                        printf("删除成功!");
    164                    }
    165                    else
    166                        printf("不存在该学生!
    ");
    167                     break;
    168             case '5':/*统计每科成绩>=90分以上的学生人数*/
    169                     if(currentNumStu==0)
    170                         printf("目前无记录,请添加成绩单信息!
    ");
    171                     else
    172                     {
    173                         for(i=0;i<currentNumStu;i++)
    174                             for(j=0; j<NUMSCORE-1; j++)
    175                             {
    176                                 if(score[i][j]>=90)
    177                                     excellentNum[j]++;
    178                             }
    179                         printf("%10s%10s%10s
    ","数学成绩","语文成绩","英语成绩");
    180                         for(j=0; j<NUMSCORE-1; j++)
    181                             printf("%10d",  excellentNum[j]);
    182                         printf("
    ");
    183                     }
    184                     break;
    185             case '6':/*按学号升序或降序排列实现*/
    186                     printf("|---------------------------------------|
    ");
    187                     printf("|                                       |
    ");
    188                     printf("|               排序菜单                |
    ");
    189                     printf("|                                       |
    ");
    190                     printf("|---------------------------------------|
    ");
    191                     printf("|                                       |
    ");
    192                     printf("|          1——按学号升序排列          |
    ");
    193                     printf("|          2——按学号降序排列          |
    ");
    194                     printf("|---------------------------------------|
    ");
    195 
    196                     printf("请输入选项编号(1 ~2): ");
    197                     fflush(stdin);
    198                     scanf("%c",&subItem);
    199 
    200                     switch(subItem)
    201                     {
    202                         case '1':
    203                                 if(currentNumStu<2)
    204                                 {
    205                                     printf("成绩表中少于2人则不做排序!
    ");
    206                                 }
    207                                 else
    208                                 {
    209                                     /*按学号升序排列*/
    210                                     for(i=0;i<currentNumStu-1;i++)
    211                                        for(j=i+1; j<currentNumStu; j++)
    212                                        {
    213                                            if(no[i]>no[j])
    214                                            {
    215                                                tempNo=no[i];
    216                                                no[i]=no[j];
    217                                                no[j]=tempNo;
    218                                                strcpy(tempName,name[i]);
    219                                                strcpy(name[i],name[j]);
    220                                                strcpy(name[j],tempName);
    221                                                for(l=0; l<NUMSCORE; l++)
    222                                                {
    223                                                    k=score[i][l];
    224                                                    score[i][l]=score[j][l];
    225                                                    score[j][l]=k;
    226                                                }
    227                                            }
    228                                        }
    229                                     printf("排序结束,请选择菜单项显示信息!
    ");
    230                                 }
    231                                 break;
    232                         case '2':
    233                                 if(currentNumStu<2)
    234                                 {
    235                                     printf("成绩表中少于2人则不做排序!
    ");
    236                                 }
    237                                 else
    238                                 {
    239                                         /*按学号降序排列*/
    240                                     for(i=0;i<currentNumStu-1;i++)
    241                                        for(j=i+1; j<currentNumStu; j++)
    242                                        {
    243                                            if(no[i]<no[j])
    244                                            {
    245                                                tempNo=no[i];
    246                                                no[i]=no[j];
    247                                                no[j]=tempNo;
    248                                                strcpy(tempName,name[i]);
    249                                                strcpy(name[i],name[j]);
    250                                                strcpy(name[j],tempName);
    251                                                for(l=0; l<NUMSCORE; l++)
    252                                                {
    253                                                    k=score[i][l];
    254                                                    score[i][l]=score[j][l];
    255                                                    score[j][l]=k;
    256                                                }
    257                                            }
    258                                        }
    259                                         printf("排序结束,请选择菜单项显示信息!
    ");
    260                                 }
    261                                 break;
    262                         default:printf("非法输入
    ");
    263                     }
    264                 break;
    265             case '7':/*显示学生信息*/
    266                 if(currentNumStu==0)
    267                 {
    268                     printf("无学生记录,请创建成绩单!
    ");
    269                 }
    270                 else
    271                 {
    272                     printf("学生信息如下:
    ");
    273                     printf("%15s%15s%10s%10s%10s%10s
    ","学号","姓名","数学成绩","语文成绩","英语成绩","平均成绩");
    274                     for(i=0; i<currentNumStu; i++)
    275                     {
    276                         printf("%15lu",no[i]);
    277                         printf("%15s",name[i]);
    278                         for(j=0; j<NUMSCORE; j++)
    279                             printf("%10.1f",  score[i][j]);
    280                         printf("
    ");
    281                     }
    282                 }
    283                   break;
    284             case '0':printf("您选择了“0——退出”
    ");break;
    285             default:printf("非法输入
    ");
    286         }
    287 
    288     }while(menuItem!='0');
    289 }
    View Code
  • 相关阅读:
    Fedora 23 配置
    小小的告别一下这个博客
    markdown测试
    ihhh题解
    【BZOJ】1998: [Hnoi2010]Fsk物品调度
    【BZOJ】2563: 阿狸和桃子的游戏
    【BZOJ】3712: [PA2014]Fiolki
    【BZOJ】2333: [SCOI2011]棘手的操作
    我的vimrc
    Ubuntu Gnome 14.04.2 lts 折腾笔记
  • 原文地址:https://www.cnblogs.com/kingbk/p/5515329.html
Copyright © 2020-2023  润新知