功能:成绩管理系统包含了学生的全部信息,每个学生是一个记录,包括学号,姓名,性别,班级,各科成绩(语数外)。

系统功能:

    1.信息录入——录入学生信息;

    2.信息输出——显示所有信息;

    3.信息查询——查询单个学生信息(按学号或按姓名),按性别,班级查询;

    4.信息排序——分别按各科成绩,平均成绩,学号,姓名,总分排名;

    5.信息插入——插入一学生信息(中间插入和最后插入);

    6.信息删除——删除一学生信息;(先打出学生信息然后确认删除);

  1 #include<stdio.h>
  2 #include<stdlib.h>
  3 #include<string.h>
  4 #define MAXSIZE 1000
  5  typedef struct
  6  {
  7      int no;
  8      char name[11];
  9      char sex[9];
 10      char cla[11];
 11      int Chinese,math,Eng,sum,average;
 12  }Datatype;
 13
 14  typedef  struct
 15  {
 16      Datatype data[MAXSIZE];
 17      int len;
 18  }SeqList;
 19
 20 /*录入学生信息*/
 21  void input(SeqList *L)
 22  {
 23      int i;
 24      printf("请输入学生的人数:");
 25      scanf("%d",&L->len);
 26      printf("请输入学生的学号、姓名、性别、班级、语数英成绩:\n");
 27      printf("(之间用Tab键隔开)\n\n");
 28      printf("学号   姓名    性别    班级    语文    数学    英语\n");
 29      for(i=1;i<=L->len;i++)
 30      {
 31          scanf("%d%s%s%s%d%d%d",&L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,&L->data[i].Chinese,&L->data[i].math,&L->data[i].Eng);
 32          L->data[i].sum=L->data[i].Chinese+L->data[i].math+L->data[i].Eng;
 33          L->data[i].average=(int)L->data[i].sum/3;
 34      }
 35  }
 36
 37 /*浏览学生信息*/
 38  void display(SeqList *L)
 39  {
 40      int i;
 41      printf("学号   姓名    性别    班级    语文    数学    英语    总分    平均分\n");
 42      for(i=1;i<=L->len;i++)
 43      {
 44          printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
 45      }
 46  }
 47
 48  /*按学号查找学生信息*/
 49  int search_no(SeqList *L,Datatype x)
 50  {
 51      int i=1;
 52      while(i<=L->len&&L->data[i].no!=x.no)
 53      {
 54          i++;
 55      }
 56      if(i>L->len)
 57      {
 58          return 0;
 59      }
 60      else
 61      {
 62          return i;
 63      }
 64
 65  }
 66
 67  /*按姓名查找学生信息*/
 68  int search_name(SeqList *L,Datatype x)
 69  {
 70      int i=1;
 71      while(i<=L->len&&strcmp(L->data[i].name,x.name)!=0)
 72      {
 73          i++;
 74      }
 75      if(i>L->len)
 76      {
 77          return 0;
 78      }
 79      else
 80      {
 81          return i;
 82      }
 83  }
 84
 85  /*按性别查找学生信息*/
 86  void search_sex(SeqList *L,Datatype x)
 87  {
 88      int i;
 89      for(i=1;i<=L->len;i++)
 90      {
 91          if(i<=L->len&&strcmp(L->data[i].sex,x.sex)==0)
 92          {
 93              printf("学号   姓名    性别    班级    语文    数学    英语    总分    平均分\n");
 94              printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
 95          }
 96      }
 97  }
 98
 99  /*按班级查找学生信息*/
100  void search_cla(SeqList *L,Datatype x)
101  {
102      int i;
103      for(i=1;i<=L->len;i++)
104      {
105          if(i<=L->len&&strcmp(L->data[i].cla,x.cla)==0)
106          {
107              printf("学号   姓名    性别    班级    语文    数学    英语    总分    平均分\n");
108              printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
109          }
110      }
111  }
112
113  /*按语文成绩排序*/
114  void sort_Chinese(SeqList *L)
115  {
116      Datatype hold;
117      int pass,i;
118      for(pass=0;pass<((L->len)-1);pass++)
119      {
120          for(i=1;i<L->len;i++)
121          {
122              if(L->data[i].Chinese<L->data[i+1].Chinese)
123              {
124                  hold=L->data[i];
125                  L->data[i]=L->data[i+1];
126                  L->data[i+1]=hold;
127              }
128          }
129      }
130  }
131
132   /*按数学成绩排序*/
133  void sort_math(SeqList *L)
134  {
135      Datatype hold;
136      int pass,i;
137      for(pass=0;pass<((L->len)-1);pass++)
138      {
139          for(i=1;i<L->len;i++)
140          {
141              if(L->data[i].math<L->data[i+1].math)
142              {
143                  hold=L->data[i];
144                  L->data[i]=L->data[i+1];
145                  L->data[i+1]=hold;
146              }
147          }
148      }
149  }
150
151   /*按英语成绩排序*/
152  void sort_Eng(SeqList *L)
153  {
154      Datatype hold;
155      int pass,i;
156      for(pass=0;pass<((L->len)-1);pass++)
157      {
158          for(i=1;i<L->len;i++)
159          {
160              if(L->data[i].Eng<L->data[i+1].Eng)
161              {
162                  hold=L->data[i];
163                  L->data[i]=L->data[i+1];
164                  L->data[i+1]=hold;
165              }
166          }
167      }
168  }
169
170   /*按平均分成绩排序*/
171  void sort_average(SeqList *L)
172  {
173      Datatype hold;
174      int pass,i;
175      for(pass=0;pass<((L->len)-1);pass++)
176      {
177          for(i=1;i<L->len;i++)
178          {
179              if(L->data[i].average<L->data[i+1].average)
180              {
181                  hold=L->data[i];
182                  L->data[i]=L->data[i+1];
183                  L->data[i+1]=hold;
184              }
185          }
186      }
187  }
188
189   /*按学号排序*/
190  void sort_no(SeqList *L)
191  {
192      Datatype hold;
193      int pass,i;
194      for(pass=0;pass<((L->len)-1);pass++)
195      {
196          for(i=1;i<L->len;i++)
197          {
198              if(L->data[i].no>L->data[i+1].no)
199              {
200                  hold=L->data[i];
201                  L->data[i]=L->data[i+1];
202                  L->data[i+1]=hold;
203              }
204          }
205      }
206  }
207
208   /*按姓名排序*/
209  void sort_name(SeqList *L)
210  {
211      Datatype hold;
212      int pass,i;
213      for(pass=0;pass<((L->len)-1);pass++)
214      {
215          for(i=1;i<L->len;i++)
216          {
217              if(strcmp(L->data[i].name,L->data[i+1].name)>0)
218              {
219                  hold=L->data[i];
220                  L->data[i]=L->data[i+1];
221                  L->data[i+1]=hold;
222              }
223          }
224      }
225  }
226
227   /*按总分排序*/
228  void sort_sum(SeqList *L)
229  {
230      Datatype hold;
231      int pass,i;
232      for(pass=0;pass<((L->len)-1);pass++)
233      {
234          for(i=1;i<L->len;i++)
235          {
236              if(L->data[i].sum<L->data[i+1].sum)
237              {
238                  hold=L->data[i];
239                  L->data[i]=L->data[i+1];
240                  L->data[i+1]=hold;
241              }
242          }
243      }
244  }
245
246  /*插入学生信息*/
247  void insert(SeqList *L,Datatype x)
248 {
249     int i=1,j;
250     while(i<=L->len&&(L->data[i].no<x.no))
251     {
252         i++;
253     }
254     if(L->len==MAXSIZE-1)
255     {
256         printf("系统存储空间已满,无法增加学生信息!!");
257     }
258     else
259     {
260         for(j=L->len;j>=i;j--)
261         {
262             L->data[j+1]=L->data[j];
263         }
264         L->data[i]=x;
265         L->len++;
266     }
267 }
268
269 /*删除学生信息*/
270 void del(SeqList *L,Datatype x)
271 {
272     int i,j;
273     i=search_no(L,x);
274     if(i==0)
275     {
276         printf("学号有误!!\n");
277     }
278     else
279     {
280          for(j=i+1;j<=(L->len);j++)
281          {
282              L->data[j-1]=L->data[j];
283          }
284          L->len--;
285     }
286 }
287  void menu()
288  {
289      printf("*************************************\n");
290      printf("*         大学生成绩管理系统        *\n");
291      printf("*1----------------------录入学生信息*\n");
292      printf("*2----------------------浏览学生信息*\n");
293      printf("*3----------------------查找学生信息*\n");
294      printf("*4------------------------------排序*\n");
295      printf("*5----------------------插入学生信息*\n");
296      printf("*6----------------------删除学生信息*\n");
297      printf("*0----------------------退出管理系统*\n");
298      printf("*************************************\n");
299  }
300
301  int main()
302  {
303      Datatype x;
304      SeqList *L;
305      int sel,k,s,i;
306      L=(SeqList *)malloc(sizeof(SeqList));
307      L->len=0;
308      printf("      欢迎使用大学生成绩管理系统         \n");
309      do
310      {
311          menu();
312          printf("\n请输入你的选择:");
313          scanf("%d",&sel);
314          switch(sel)
315          {
316              case 1:printf("\n你选择了录入学生信息:\n\n");
317                     input(L);
318                 break;
319              case 2:printf("\n你选择了浏览学生信息:\n\n");
320                     display(L);
321                 break;
322              case 3:printf("\n你选择了查找学生信息:\n\n");
323                     printf("**************************************\n");
324                     printf("*按<学号>查找请按1,按<姓名>查找请按2*\n");
325                     printf("*按<性别>查找请按3,按<班级>查找请按4*\n");
326                     printf("**************************************\n");
327                     scanf("%d",&s);
328                     if(s==1)
329                     {
330                         printf("请输入要查找的学生的学号:");
331                         scanf("%d",&x.no);
332                         k=search_no(L,x);
333                         if(k==0)
334                         {
335                             printf("学号有误!!\n");
336                         }
337                         else
338                         {
339                             printf("学号   姓名    性别    班级    语文    数学    英语    总分    平均分\n");
340                             printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[k].no,L->data[k].name,L->data[k].sex,L->data[k].cla,L->data[k].Chinese,L->data[k].math,L->data[k].Eng,L->data[k].sum,L->data[k].average);
341                         }
342                     }
343                     else if(s==2)
344                     {
345                         printf("请输入要查找的学生的姓名:");
346                         scanf("%s",x.name);
347                         k=search_name(L,x);
348                         if(k==0)
349                         {
350                             printf("姓名有误!!\n");
351                         }
352                         else
353                         {
354                             printf("学号   姓名    性别    班级    语文    数学    英语    总分    平均分\n");
355                             printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[k].no,L->data[k].name,L->data[k].sex,L->data[k].cla,L->data[k].Chinese,L->data[k].math,L->data[k].Eng,L->data[k].sum,L->data[k].average);
356                         }
357                     }
358                     else if(s==3)
359                     {
360                         printf("请输入性别(男或女):\n");
361                         scanf("%s",x.sex);
362                         search_sex(L,x);
363                     }
364                     else
365                     {
366                         printf("请输入班级:\n");
367                         scanf("%s",x.cla);
368                         search_cla(L,x);
369                     }
370                 break;
371             case 4:printf("\n你选择了排序:\n\n");
372                    printf("*********************************************\n");
373                    printf("*按<语文成绩>排序请按1,按<数学成绩>排序请按2*\n");
374                    printf("*按<英语成绩>排序请按3,按<平均成绩>排序请按4*\n");
375                    printf("*    按<学号>排序请按5,按<姓名>排序请按6    *\n");
376                    printf("*    按<总分>排序请按7                      *\n");
377                    printf("*********************************************\n");
378                    scanf("%d",&s);
379                    if(s==1)
380                    {
381                        sort_Chinese(L);
382                        printf("按语文成绩排序:\n");
383                        printf("学号   姓名    性别    班级    语文    数学    英语    总分    平均分\n");
384                        for(i=1;i<=L->len;i++)
385                        {
386                             printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
387                        }
388                    }
389                    if(s==2)
390                    {
391                        sort_math(L);
392                        printf("按数学成绩排序:\n");
393                        printf("学号   姓名    性别    班级    语文    数学    英语    总分    平均分\n");
394                        for(i=1;i<=L->len;i++)
395                        {
396                             printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
397                        }
398                    }
399                    if(s==3)
400                    {
401                        sort_Eng(L);
402                        printf("按英语成绩排序:\n");
403                        printf("学号   姓名    性别    班级    语文    数学    英语    总分    平均分\n");
404                        for(i=1;i<=L->len;i++)
405                        {
406                             printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
407                        }
408                    }
409                    if(s==4)
410                    {
411                        sort_average(L);
412                        printf("按平均分排序:\n");
413                        printf("学号   姓名    性别    班级    语文    数学    英语    总分    平均分\n");
414                        for(i=1;i<=L->len;i++)
415                        {
416                             printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
417                        }
418                    }
419                    if(s==5)
420                    {
421                        sort_no(L);
422                        printf("按学号排序:\n");
423                        printf("学号   姓名    性别    班级    语文    数学    英语    总分    平均分\n");
424                        for(i=1;i<=L->len;i++)
425                        {
426                             printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
427                        }
428                    }
429                    if(s==6)
430                    {
431                        sort_name(L);
432                        printf("按姓名排序:\n");
433                        printf("学号   姓名    性别    班级    语文    数学    英语    总分    平均分\n");
434                        for(i=1;i<=L->len;i++)
435                        {
436                             printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
437                        }
438                    }
439                    if(s==7)
440                    {
441                        sort_sum(L);
442                        printf("按总分排序:\n");
443                        printf("学号   姓名    性别    班级    语文    数学    英语    总分    平均分\n");
444                        for(i=1;i<=L->len;i++)
445                        {
446                             printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
447                        }
448                    }
449                 break;
450             case 5:printf("\n你选择了插入学生信息:\n\n");
451                    printf("请输入要插入的学生的学号、姓名、性别、班级、语数英成绩:\n");
452                    printf("学号   姓名    性别    班级    语文    数学    英语\n");
453                    scanf("%d%s%s%s%d%d%d",&x.no,x.name,x.sex,x.cla,&x.Chinese,&x.math,&x.Eng);
454                    x.sum=x.Chinese+x.math+x.Eng;
455                    x.average=(int)x.sum/3;
456                    insert(L,x);
457                 break;
458             case 6:printf("\n你选择了删除学生信息:\n\n");
459                    printf("请输入要删除的学生的学号:");
460                    scanf("%d",&x.no);
461                    k=search_no(L,x);
462                    if(k==0)
463                    {
464                         printf("学号有误!!\n");
465                    }
466                    else
467                    {
468                         printf("学号   姓名    性别    班级    语文    数学    英语    总分    平均分\n");
469                         printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[k].no,L->data[k].name,L->data[k].sex,L->data[k].cla,L->data[k].Chinese,L->data[k].math,L->data[k].Eng,L->data[k].sum,L->data[k].average);
470                         printf("\n是否要删除此学生的信息?\n");
471                         printf("(是请按1,否请按0)\n");
472                         printf("你的选择是:");
473                         scanf("%d",&s);
474                         if(s==1)
475                         {
476                             del(L,x);
477                         }
478                    }
479                 break;
480          }
481      }while(sel!=0);
482      printf("谢谢使用此系统!!");
483      return 0;
484  }

转载于:https://www.cnblogs.com/xautlmx/p/3441349.html

大学生成绩管理系统(C语言)相关推荐

  1. 用c语言编写图书成绩管理系统,学生成绩管理系统(c语言编写).doc

    学生成绩管理系统(c语言编写) C程序 学生管理系统 /* Note:Your choice is C IDE */ #include "stdio.h" #include&quo ...

  2. 更新学生的成绩C语言,学生成绩管理系统C语言代码实现.pdf

    学生成绩管理系统C语言代码实现 这篇文章主要为大家详细介绍了C语言代码实现学生成绩管理系统,文中示 代码介绍的非常详细,具有一定的参 考价值,感兴趣的小伙伴们可以参考一下 C语言实现了学生成绩管理系统 ...

  3. 按平均成绩排行c语言文件操作,学生成绩管理系统(c语言结构体以及文件操作)实验报告精选.doc...

    学生成绩管理系统(c语言结构体以及文件操作)实验报告精选 C程序设计 实验报告 编号: 姓名院系学号任课教师于萧指导教师实验地点实验时间实验名称文件操作同 组 人无预习报告(对实验主要内容的认识)得分 ...

  4. 用C语言学生成绩数据库排序功能设计,[c语言学生成绩管理系统]C语言学生成绩管理系统实验报告...

    篇一 : C语言学生成绩管理系统实验报告 实 验 四:结构体(6学时) 实验目的: 1.更加灵活的使用数组作为函数参数: 2.初步掌握开发一个小型实用系统的基本方法: 3.初步掌握书写程序设计开发文档 ...

  5. 学生成绩排名及管理系统c语言,学生成绩管理系统__C语言版.doc

    学生成绩管理系统__C语言版 学生成绩管理系统__C语言版 #include #include #include #include #include #include using namespace ...

  6. 生成绩管理系统c语言,学生成绩管理系统——C语言版

    <学生成绩管理系统--C语言版>由会员分享,可在线阅读,更多相关<学生成绩管理系统--C语言版(12页珍藏版)>请在人人文库网上搜索. 1.*常用的标准输入输出函数*/*acc ...

  7. 学生成绩表c语言,学生成绩管理系统C语言(附完整源代码) .doc

    学生成绩管理系统C语言(附完整源代码) 课程设计报告 学生成绩管理系统 院系: 专业: 班级: 完成日期: 2009年1月03日 设计题目:学生成绩管理系统 目录 1.题目描述2.算法设计/设计思想3 ...

  8. c语言编程项目实践报告快递管理系统,学生成绩管理系统C语言程序设计实践报告.doc...

    学生成绩管理系统C语言程序设计实践报告 (此文档为word格式,下载后您可任意编辑修改!) 中南大学 C语言程序设计实践报告 题 目 学 生 成 绩 管 理 系 统 学生姓名 木雕小象 指导教师 × ...

  9. 成绩处理工具C语言论文,学生成绩管理系统C语言程序论文

    C语言,大型工作语言,大型工作1项目目录1.目标...........22.主题描述和要求........23.报告内容...........3 3.1需求寻求和分析概要设计........3 3.2 ...

最新文章

  1. IDC: New H3C集团正式启动——中国企业IT新星时代已然来临
  2. 用Java实现几种常用排序算法(先实现一个org.rut.util.algorithm.SortUtil)
  3. php 获取文件扩展名的方法,PHP获取文件扩展名的4种方法,_PHP教程
  4. python保存图片到指定路径_使用Python将不同大小照片制作为GIF动画2
  5. 雷林鹏分享:Lua 面向对象
  6. java好学吗谁学过说话,最全Java知识总结
  7. Python操作Redis和Memcached
  8. ftp、sftp简介
  9. PHP-Smarty
  10. np.dot、np.outer、np.matmul、np.multipy、np.inner、np.outer与np.cross几个函数之间的区别
  11. Mysql从入门到入魔——5. 聚集、分组、子查询
  12. 如何一键制作DTS Audio DVD、AC3 Audio DVD、WAV Audio DVD纯音乐碟片
  13. 相忘江湖不如相濡以沫(II)
  14. stata怎么画分类图_Stata中的图形制作(绝对自己总结)
  15. 从Mpx资源构建优化看splitChunks代码分割
  16. scipy.misc.imresize改为Image.resize方法
  17. IEC的PLC编程语言标准 IEC61131-3
  18. 【android】项目案例(三)之微信朋友圈上传,下载图片
  19. Cadence Allegro导出Gerber步骤
  20. 【空间计量经济学】中国31省省会地理距离矩阵

热门文章

  1. 虚拟机上使用ghost xp
  2. ES6的新特性(8)——数组的扩展
  3. TCP为什么要三次握手和四次挥手
  4. CodeForces 11D(状压DP 求图中环的个数)
  5. [IoC容器Unity]第三回:依赖注入
  6. Selenium 中文API
  7. Hadoop 使用FileSystem API 读取数据
  8. Python字符串笔录
  9. 云计算学习资料分享:type查看命令
  10. depends用于测试程序运行所缺少的文件,可以帮我们很快找到问题