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

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

代码如下:

  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
原文地址:https://www.cnblogs.com/kingbk/p/5515329.html