zoukankan      html  css  js  c++  java
  • 大学生成绩管理系统(C语言)

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

    系统功能:

        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("请输入学生的学号、姓名、性别、班级、语数英成绩:
    ");
     27      printf("(之间用Tab键隔开)
    
    ");
     28      printf("学号   姓名    性别    班级    语文    数学    英语
    ");
     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("学号   姓名    性别    班级    语文    数学    英语    总分    平均分
    ");
     42      for(i=1;i<=L->len;i++)
     43      {
     44          printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d
    ",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("学号   姓名    性别    班级    语文    数学    英语    总分    平均分
    ");
     94              printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d
    ",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("学号   姓名    性别    班级    语文    数学    英语    总分    平均分
    ");
    108              printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d
    ",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("学号有误!!
    ");
    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("*************************************
    ");
    290      printf("*         大学生成绩管理系统        *
    ");
    291      printf("*1----------------------录入学生信息*
    ");
    292      printf("*2----------------------浏览学生信息*
    ");
    293      printf("*3----------------------查找学生信息*
    ");
    294      printf("*4------------------------------排序*
    ");
    295      printf("*5----------------------插入学生信息*
    ");
    296      printf("*6----------------------删除学生信息*
    ");
    297      printf("*0----------------------退出管理系统*
    ");
    298      printf("*************************************
    ");
    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("      欢迎使用大学生成绩管理系统         
    ");
    309      do
    310      {
    311          menu();
    312          printf("
    请输入你的选择:");
    313          scanf("%d",&sel);
    314          switch(sel)
    315          {
    316              case 1:printf("
    你选择了录入学生信息:
    
    ");
    317                     input(L);
    318                 break;
    319              case 2:printf("
    你选择了浏览学生信息:
    
    ");
    320                     display(L);
    321                 break;
    322              case 3:printf("
    你选择了查找学生信息:
    
    ");
    323                     printf("**************************************
    ");
    324                     printf("*按<学号>查找请按1,按<姓名>查找请按2*
    ");
    325                     printf("*按<性别>查找请按3,按<班级>查找请按4*
    ");
    326                     printf("**************************************
    ");
    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("学号有误!!
    ");
    336                         }
    337                         else
    338                         {
    339                             printf("学号   姓名    性别    班级    语文    数学    英语    总分    平均分
    ");
    340                             printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d
    ",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("姓名有误!!
    ");
    351                         }
    352                         else
    353                         {
    354                             printf("学号   姓名    性别    班级    语文    数学    英语    总分    平均分
    ");
    355                             printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d
    ",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("请输入性别(男或女):
    ");
    361                         scanf("%s",x.sex);
    362                         search_sex(L,x);
    363                     }
    364                     else
    365                     {
    366                         printf("请输入班级:
    ");
    367                         scanf("%s",x.cla);
    368                         search_cla(L,x);
    369                     }
    370                 break;
    371             case 4:printf("
    你选择了排序:
    
    ");
    372                    printf("*********************************************
    ");
    373                    printf("*按<语文成绩>排序请按1,按<数学成绩>排序请按2*
    ");
    374                    printf("*按<英语成绩>排序请按3,按<平均成绩>排序请按4*
    ");
    375                    printf("*    按<学号>排序请按5,按<姓名>排序请按6    *
    ");
    376                    printf("*    按<总分>排序请按7                      *
    ");
    377                    printf("*********************************************
    ");
    378                    scanf("%d",&s);
    379                    if(s==1)
    380                    {
    381                        sort_Chinese(L);
    382                        printf("按语文成绩排序:
    ");
    383                        printf("学号   姓名    性别    班级    语文    数学    英语    总分    平均分
    ");
    384                        for(i=1;i<=L->len;i++)
    385                        {
    386                             printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d
    ",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("按数学成绩排序:
    ");
    393                        printf("学号   姓名    性别    班级    语文    数学    英语    总分    平均分
    ");
    394                        for(i=1;i<=L->len;i++)
    395                        {
    396                             printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d
    ",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("按英语成绩排序:
    ");
    403                        printf("学号   姓名    性别    班级    语文    数学    英语    总分    平均分
    ");
    404                        for(i=1;i<=L->len;i++)
    405                        {
    406                             printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d
    ",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("按平均分排序:
    ");
    413                        printf("学号   姓名    性别    班级    语文    数学    英语    总分    平均分
    ");
    414                        for(i=1;i<=L->len;i++)
    415                        {
    416                             printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d
    ",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("按学号排序:
    ");
    423                        printf("学号   姓名    性别    班级    语文    数学    英语    总分    平均分
    ");
    424                        for(i=1;i<=L->len;i++)
    425                        {
    426                             printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d
    ",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("按姓名排序:
    ");
    433                        printf("学号   姓名    性别    班级    语文    数学    英语    总分    平均分
    ");
    434                        for(i=1;i<=L->len;i++)
    435                        {
    436                             printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d
    ",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("按总分排序:
    ");
    443                        printf("学号   姓名    性别    班级    语文    数学    英语    总分    平均分
    ");
    444                        for(i=1;i<=L->len;i++)
    445                        {
    446                             printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d
    ",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("
    你选择了插入学生信息:
    
    ");
    451                    printf("请输入要插入的学生的学号、姓名、性别、班级、语数英成绩:
    ");
    452                    printf("学号   姓名    性别    班级    语文    数学    英语
    ");
    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("
    你选择了删除学生信息:
    
    ");
    459                    printf("请输入要删除的学生的学号:");
    460                    scanf("%d",&x.no);
    461                    k=search_no(L,x);
    462                    if(k==0)
    463                    {
    464                         printf("学号有误!!
    ");
    465                    }
    466                    else
    467                    {
    468                         printf("学号   姓名    性别    班级    语文    数学    英语    总分    平均分
    ");
    469                         printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d
    ",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("
    是否要删除此学生的信息?
    ");
    471                         printf("(是请按1,否请按0)
    ");
    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  }
  • 相关阅读:
    公司真题-字节跳动
    全素组探求
    枚举
    求n个整数的最大公约数
    Ajax技术
    读文本文件
    JSTL标签库
    URL跟URi的区别
    常用的JSTL标签
    EL表达语言
  • 原文地址:https://www.cnblogs.com/xautlmx/p/3441349.html
Copyright © 2011-2022 走看看