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

Posted king丶貔貅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了帮初中同学做的简单的课程设计相关的知识,希望对你有一定的参考价值。

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

 

代码如下:

  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("|-------------------------------------------------------|\\n");
 27         printf("|\\t\\t\\t\\t\\t\\t\\t|\\n");
 28         printf("|\\t\\t  请输入选项编号(0 ~~ 7):  \\t\\t|\\n");
 29         printf("|\\t\\t\\t\\t\\t\\t\\t|\\n");
 30         printf("|-------------------------------------------------------|\\n");
 31         printf("|\\t\\t\\t\\t\\t\\t\\t|\\n");
 32         printf("|\\t\\t    1——创建成绩单          \\t\\t|\\n");
 33         printf("|\\t\\t    2——添加学生          \\t\\t|\\n");
 34         printf("|\\t\\t    3——编辑学生          \\t\\t|\\n");
 35         printf("|\\t\\t    4——删除学生          \\t\\t|\\n");
 36         printf("|\\t\\t    5——统计成绩          \\t\\t|\\n");
 37         printf("|\\t\\t    6——排序成绩单        \\t\\t|\\n");
 38         printf("|\\t\\t    7——显示成绩         \\t\\t|\\n");
 39         printf("|\\t\\t    0——退出                 \\t\\t|\\n");
 40         printf("|-------------------------------------------------------|\\n");
 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("\\n不能重新创建学生成绩单\\n");
 53                    }
 54                    else
 55                    {
 56                        printf("注意:输入的结束标志为学号为0!\\n");
 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("成绩单已满!结束创建!!\\n");
 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("成绩单已满!不可再加学生信息!!\\n");
 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("不存在该学生!\\n");
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("不存在该学生!\\n");
167                     break;
168             case \'5\':/*统计每科成绩>=90分以上的学生人数*/
169                     if(currentNumStu==0)
170                         printf("目前无记录,请添加成绩单信息!\\n");
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\\n","数学成绩","语文成绩","英语成绩");
180                         for(j=0; j<NUMSCORE-1; j++)
181                             printf("%10d",  excellentNum[j]);
182                         printf("\\n");
183                     }
184                     break;
185             case \'6\':/*按学号升序或降序排列实现*/
186                     printf("|---------------------------------------|\\n");
187                     printf("|                                       |\\n");
188                     printf("|               排序菜单                |\\n");
189                     printf("|                                       |\\n");
190                     printf("|---------------------------------------|\\n");
191                     printf("|                                       |\\n");
192                     printf("|          1——按学号升序排列          |\\n");
193                     printf("|          2——按学号降序排列          |\\n");
194                     printf("|---------------------------------------|\\n");
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人则不做排序!\\n");
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("排序结束,请选择菜单项显示信息!\\n");
230                                 }
231                                 break;
232                         case \'2\':
233                                 if(currentNumStu<2)
234                                 {
235                                     printf("成绩表中少于2人则不做排序!\\n");
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("排序结束,请选择菜单项显示信息!\\n");
260                                 }
261                                 break;
262                         default:printf("非法输入\\n");
263                     }
264                 break;
265             case \'7\':/*显示学生信息*/
266                 if(currentNumStu==0)
267                 {
268                     printf("无学生记录,请创建成绩单!\\n");
269                 }
270                 else
271                 {
272                     printf("学生信息如下:\\n");
273                     printf("%15s%15s%10s%10s%10s%10s\\n","学号","姓名","数学成绩","语文成绩","英语成绩","平均成绩");
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("\\n");
281                     }
282                 }
283                   break;
284             case \'0\':printf("您选择了“0——退出”\\n");break;
285             default:printf("非法输入\\n");
286         }
287 
288     }while(menuItem!=\'0\');
289 }
View Code

 

以上是关于帮初中同学做的简单的课程设计的主要内容,如果未能解决你的问题,请参考以下文章

课程设计感想

数据结构-课程设计-职工管理系统

帮同学参加数学建模做的求点集间最短距离,时间复杂度300*300

对Quin同学的试卷自动生成程序代码分析

JAVA课程设计 彩票号码产生器

JAVA课程设计 彩票号码产生器