文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么使用C语言代码实现学生成绩管理系统

2023-06-30 18:02

关注

这篇文章主要介绍“怎么使用C语言代码实现学生成绩管理系统”,在日常操作中,相信很多人在怎么使用C语言代码实现学生成绩管理系统问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用C语言代码实现学生成绩管理系统”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

某班有最多不超过 30 人(具体人数由键盘输人)参加期未考试,考试科目 最多不超过 6 门(具体门数由键盘输入,但不少于 3 门),学生成绩管理系统是一 个非常实用的程序,如果能够把用户输入数据存盘,下次运行时读出,就更有用 了。增加文件读写的功能,即编程实现如下菜单驱动的学生成绩管理系统:

(1) 录入每个学生的学号、姓名和各科考试成绩。
(2) 计算每门课程的总分和平均分。
(3) 计算每个学生的总分和平均分。
(4) 按每个学生的总分由高到低排出名次表。
(5) 按学号由小到大排出成绩表。
(6) 按姓名的字典顺序排出成绩表。
(7) 按学号查询学生排名及其考试成绩。
(8) 按姓名查询学生排名及其考试成绩。
(9) 按优秀(90-100 分)、良好(80-89 分)、中等(70-79 分)、及格(60-69 分)、 不及格(0-59 分)5 个类别,对每门课程分别统计每个类别的人数以及所占的百 分比。
(10)输出每个学生的学号、姓名、各科考试成绩、总分、平均分以及每门课 程的总分和平均分。

代码如下:

#include<stdio.h>#include<string.h>#include<stdlib.h>const int N = 40;int i,j;typedef struct  control{    int no;    char name[20];    char name1[20];    int cj[7];    int all;    int lave;} AVA;// ------------------------函数void menu();void menu1();void menu2();void menu4(AVA stu[],int n,int n3);//-------------------------//-------------------------链接菜单与功能的函数void basic(AVA stu[]);//------------------------//-------------------------信息录入函数void keyboard(AVA stu[],int n,int n2);//------------------------功能函数调用总函数void case1(AVA stu[],int n,int a);//========================//------------------------功能函数void function4(AVA stu[],AVA t,int n);//总分排序void function5(AVA stu[],AVA t,int n);//学号排序void function6(AVA stu[],AVA t,int n);//姓名排序void function7(AVA stu[],AVA t,int n,int w);//学号查找void function8(AVA stu[],AVA t,int n,char s[]);//姓名查找void function9(AVA stu[],int n,int a);//数据分析void function10(AVA stu[],int n,int a,int b1[],int b2[]);//输出学生信息void function11(AVA stu[],int n,int a);//存进文件里面void exchange(AVA stu[],int a,int b);//读档函数//-------------------------int main(){    AVA  stu[N];   for(i = 0; i < 30; i ++)   {       stu[i].all = 0;       stu[i].lave = 0;   }  basic(stu);  return 0;}void menu(){     printf("_                                                                     _\n");    printf("|                                                                     |\n");    printf("                                                                       \n");    printf("                                                                       \n");    printf("                            学生信息管理系统                           \n");    printf("                                                                       \n");    printf("                                                                       \n");    printf("                                                                       \n");    printf("|                                                                     |\n");    printf("-                                                                     -\n");}void menu1(){    printf("->                             信息输入                              <-\n");    printf("->                             学课成绩                              <-\n");    printf("->                             学生成绩                              <-\n");    printf("->                             总分排序                              <-\n");    printf("->                             学号排序                              <-\n");    printf("->                             姓名排序                              <-\n");    printf("->                             学号查询                              <-\n");    printf("->                             姓名查询                              <-\n");    printf("->                             数据分析                              <-\n");    printf("->                             信息输出                              <-\n");    printf("->                             数据存档                              <-\n");}void menu2(){    printf("_                                                                     _\n");    printf("|                                                                     |\n");    printf("->                             功能代号                              <-\n");    printf("->                <1><2><3><4><5><6><7><8><9><10><11>                <-\n");    printf("|                                                                     |\n");    printf("-                                                                     -\n");}void menu4(AVA stu[],int n,int n3)//读档函数总调用{    printf("如果档案中没有存有足够的学科数,则可能提取乱码\n");    printf("如果文件中没有数据则会显示无法打开\n");    exchange( stu,n,n3);    case1( stu,n,n3);}//中转函数,菜单与功能的桥梁void basic(AVA stu[]){    menu();    printf("若无学生信息档案需要先录入\n");    printf("<1-录入><2-读档><3-退出>\n");    int n,n1,n3;    do    {        scanf("%d",&n1);        if(3<n1||n1<1)        {            printf("数据输入错误,请重新输入\n");        }    }while(3<n1||n1<1);     printf("输入学生数量\n");    do    {        scanf("%d",&n);        if(30<n||n<1)        {            printf("数据输入错误,请重新输入<1-30>\n");        }    }while(30<n||n<1);    printf("输入学科数量\n");     do    {        scanf("%d",&n3);        if(6<n3||n3<3)        {            printf("数据输入错误,请重新输入<3-6>\n");        }    }while(6<n3||n3<3);    if(n1==1){ keyboard( stu,n,n3);   case1( stu, n,n3);}    else if(n1==2)  menu4(stu,n,n3);    else    {        printf("欢迎再次使用\n");        exit(0);    }}//=========================功能函数调用的函数void case1(AVA stu[],int n,int a){    AVA t;         for(i = 0; i < n; i ++)    {        for(j = 0; j < a; j ++)        {            stu[i].all+=stu[i].cj[j];        }        stu[i].lave = stu[i].all/a;    }     int x[10]={0},y[10]={0};      for(j = 0; j < a;j ++)    {       for(i = 0; i < n; i ++)        {            y[j]+=stu[i].cj[j];        }    }    for(i = 0; i < a; i ++)    {        x[i] = y[i]/n;    }    menu1();    menu2();    printf("数据录入成功\n");    printf("请输入你想选择的功能\n");    int n2;    while(scanf("%d",&n2)&&n2!=0)    {        if(n2==2)        {            for(i = 0; i < a; i ++)            {                 printf("第%d门总分为:%d,平均分为:%d\n",i+1,y[i],x[i]);            }            menu1();            menu2();            printf("完成\n");        }        else if(n2==3)        {            int f;            printf("计算完成,是否打印?<1 or 0>\n");            scanf("%d",&f);            if(f==1)                {            for(i = 0; i < n; i ++)            {                printf("第%d个同学的总分为:%d,平均分为:%d\n",i+1,stu[i].all,stu[i].lave);            }            printf("打印完成\n");            menu2();                }            else            {                menu1();                menu2();            }             printf("完成\n");        }        else if(n2==4)        {            function4( stu, t, n);            menu1();            menu2();            printf("完成\n");        }        else if(n2==5)        {            function5( stu, t, n);            menu1();            menu2();            printf("完成\n");        }        else if(n2==6)        {            function6( stu, t, n);            menu1();            menu2();            printf("完成\n");        }        else if(n2==7)        {            int w;            printf("输入你想查询的学号\n");            scanf("%d",&w);            function7( stu, t, n, w);            menu1();            menu2();            printf("完成\n");        }        else if(n2==8)        {            char s[30];            printf("输入你想查询的名字\n");            scanf("%s",s);            function8(stu,t, n,s);             menu1();             menu2();            printf("完成\n");        }        else if(n2==9)        {            function9( stu, n, a);            menu1();            menu2();            printf("完成\n");        }        else if(n2==10)        {            function10( stu, n, a, x, y);            menu1();           menu2();           printf("完成\n");        }        else if(n2==11)        {            function11( stu, n, a);            menu1();            menu2();            printf("完成\n");        }        else  menu2();    }}//=========================信息录入函数void keyboard(AVA stu[],int n,int n2){         for(i = 0; i < n; i ++)    {        printf("正在输入%d个学生信息\n",i+1);                     //        printf("学号:\n");        scanf("%d",&stu[i].no);        printf("姓名:\n");        scanf("%s",stu[i].name);        printf("姓名拼音简写\n");        scanf("%s",stu[i].name1);        printf("分别输入%d门学课成绩\n",n2);        for(j = 0; j < n2; j ++)        {            scanf("%d",&stu[i].cj[j]);        }    }}void function4(AVA stu[],AVA t,int n)//总分排序{    printf("总分排序\n");    FILE *fp;    for(i = 0; i < n-1;i ++)      for(j = 0; j < n-1-i;j++)      {         if(stu[j].all<stu[j+1].all)         {             t = stu[j];             stu[j] = stu[j+1];             stu[j+1] = t;         }      }     printf("正在生成文件\n");     printf("请及时拷贝文件,否则会造成数据丢失\n");     fp = fopen("总分排序.txt","w");     if(fp==NULL)     {         printf("打开失败\n");         exit(0);     }     for(i = 0; i < n;i ++)     {         fprintf(fp,"%s %d\n",stu[i].name,stu[i].all);     }     fclose(fp);}void function5(AVA stu[],AVA t,int n)//学号排序{    printf("学号排序\n");    FILE *fp;    for(i = 0; i < n-1;i ++)      for(j = 0; j < n-1-i;j++)      {         if(stu[j].no<stu[j+1].no)         {             t = stu[j];             stu[j] = stu[j+1];             stu[j+1] = t;         }      }     char name[N];     strcpy(name,"学号为:");     printf("正在生成文件\n");     printf("请及时拷贝文件,否则会造成数据丢失\n");     fp = fopen("学号排序.txt","w");     if(fp==NULL)     {         printf("打开失败\n");         exit(0);     }     for(i = 0; i < n;i ++)     {         fprintf(fp,"%s%d\n",name,stu[i].no);         fprintf(fp,"%s%d\n",stu[i].name,stu[i].all);     }     fclose(fp);}void function6(AVA stu[],AVA t,int n)//姓氏排序{    printf("姓名排序\n");    FILE *fp;    for(i = 0; i < n-1;i ++)      for(j = 0; j < n-1-i;j++)      {         if(stu[j].name1[0]>stu[j+1].name1[0])         {             t = stu[j];             stu[j] = stu[j+1];             stu[j+1] = t;         }      }     printf("正在生成文件\n");     printf("请及时拷贝文件,否则会造成数据丢失\n");     fp = fopen("姓名排序.txt","w");     if(fp==NULL)     {         printf("打开失败\n");         exit(0);     }     for(i = 0; i < n;i ++)     {         fprintf(fp,"%s%d\n",stu[i].name,stu[i].all);     }     fclose(fp);}void function7(AVA stu[],AVA t,int n,int w)//学号查找{     int m = 0;     for(i = 0; i < n-1;i ++)      for(j = 0; j < n-1-i;j++)      {         if(stu[j].all<stu[j+1].all)         {             t = stu[j];             stu[j] = stu[j+1];             stu[j+1] = t;         }      }      for(i = 0; i <n; i ++)      {          m++;          if(stu[i].no==w)          {              printf("学号为:%d\n",stu[i].no);              printf("姓名为:%s\n",stu[i].name);              printf("成绩为:%d\n",stu[i].all);              printf("排名为:%d\n",m);              break;          }      }}void function8(AVA stu[],AVA t,int n,char s[])//姓名查找{     int m = 0;     for(i = 0; i < n-1;i ++)      for(j = 0; j < n-1-i;j++)      {         if(stu[j].all<stu[j+1].all)         {             t = stu[j];             stu[j] = stu[j+1];             stu[j+1] = t;         }      }      for(i = 0; i <n; i ++)      {          m++;          if(strcmp(stu[i].name,s)==0)          {              printf("学号为:%d\n",stu[i].no);              printf("姓名为:%s\n",stu[i].name);              printf("成绩为:%d\n",stu[i].all);              printf("排名为:%d\n",m);              break;          }      }}void function9(AVA stu[],int n,int a)//数据分析{    printf("请在文件夹中查看\n");    for(i = 0; i < a; i++)    {        double k1=0,k2=0,k3=0,k4=0,k5=0;         for( j = 0; j < n; j ++)    {        if(stu[j].cj[i]>=90)  k1++;        else if(stu[j].cj[i]>=80&&stu[j].cj[i]<=89) k2++;        else if(stu[j].cj[i]>=70&&stu[j].cj[i]<=79) k3++;        else if(stu[j].cj[i]>=60&&stu[j].cj[i]<=69)  k4++;        else if(stu[j].cj[i]<=59)  k5++;    }      FILE *fp;      fp = fopen("数据分析.txt","a");      if(fp==NULL)      {        printf("打开失败\n");        exit(0);      }      char s[20];      strcpy(s,"subject");      s[7] = '0'+i;      s[8] = '\0';      char name1[20];      char name2[20];      char name3[20];      char name4[20];      char name5[20];      strcpy(name1,"优:%");      strcpy(name2,"良好:%");      strcpy(name3,"中等:%");      strcpy(name4,"及格:%");      strcpy(name5,"不及格:%");      fprintf(fp,"\n%s\n",s);      fprintf(fp,"%s%.2f\n",name1,(k1*100)/n);      fprintf(fp,"%s%.2f\n",name2,(k2*100)/n);      fprintf(fp,"%s%.2f\n",name3,(k3*100)/n);      fprintf(fp,"%s%.2f\n",name4,(k4*100)/n);      fprintf(fp,"%s%.2f\n",name5,(k5*100)/n);     k1=0,k2=0,k3=0,k4=0,k5=0;     fclose(fp);    }}void function10(AVA stu[],int n,int a,int b1[],int b2[])//输出学生信息{    for(i = 0; i < n; i ++)  {       printf("学号:%d\n",stu[i].no);       printf("姓名:%s\n",stu[i].name);       printf("总分:%d\n",stu[i].all);       printf("平均分:%d\n",stu[i].lave);       printf("每科分数为:");       for(j = 0; j < a; j ++)       {           printf("%d ",stu[i].cj[j]);       }       printf("\n");       printf("\n");       printf("\n");       printf("\n");       }    printf("学科平均分为:\n");   for(j = 0; j < a; j ++)    {    printf("第%d学科平均分为:%d\n",j+1,b1[j]);    }    printf("学科总分:\n");    for(j = 0; j < a; j ++)    {    printf("第%d学科总分为:%d\n",j+1,b2[j]);    }}void function11(AVA stu[],int n,int a)//存进文件中{    FILE *fp;    fp = fopen("学生信息存档.txt","a");    if(fp==NULL)    {        printf("无法打开\n");        exit(0);    }    char name[30];    char name1[30];    char name2[30];    strcpy(name,"每科成绩:");    strcpy(name1,"总平均成绩:");    strcpy(name2,"总成绩:");    for(i = 0; i < n; i ++)    {        fprintf(fp,"\n%d %s\n",stu[i].no,stu[i].name);        fprintf(fp,"%s %d\n",name2,stu[i].all);        fprintf(fp,"%s %d\n",name1,stu[i].lave);        fprintf(fp,"%s\n",name);        for(j = 0; j < a;j ++)        {            fprintf(fp,"%d ",stu[i].cj[j]);        }    }  fclose(fp);  FILE *fpk1,*fpk2,*fpk3,*fpk4,*fpk5,*fpk6,*fpk7,*fpk8,*fpk9;  fpk1 = fopen("学号.txt","a");  fpk2 = fopen("姓名.txt","a");  fpk3 = fopen("姓名简称.txt","a");  fpk4 = fopen("学科1.txt","a");  fpk5 = fopen("学科2.txt","a");  fpk6 = fopen("学科3.txt","a");  fpk7 = fopen("学科4.txt","a");  fpk8 = fopen("学科5.txt","a");  fpk9 = fopen("学科6.txt","a");  if(fpk1==NULL||fpk2==NULL||fpk3==NULL||fpk4==NULL||fpk5==NULL||fpk6==NULL||fpk7==NULL||fpk8==NULL||fpk9==NULL)  {      printf("无法打开\n");      exit(0);  }  for(i = 0; i < n; i ++)  {      fprintf(fpk1,"%d\n",stu[i].no);      fprintf(fpk2,"%s\n",stu[i].name);      fprintf(fpk3,"%s\n",stu[i].name1);      fprintf(fpk4,"%d\n",stu[i].cj[0]);      fprintf(fpk5,"%d\n",stu[i].cj[1]);      fprintf(fpk6,"%d\n",stu[i].cj[2]);      if(a==4||a==5||a==6)      {          fprintf(fpk7,"%d\n",stu[i].cj[3]);      }      if(a==5||a==6)      {          fprintf(fpk8,"%d\n",stu[i].cj[4]);      }      if(a==6)        {        fprintf(fpk9,"%d\n",stu[i].cj[5]);        }  }   fclose(fpk1);   fclose(fpk2);   fclose(fpk3);   fclose(fpk4);   fclose(fpk5);   fclose(fpk6);   fclose(fpk7);   fclose(fpk8);   fclose(fpk9);}void exchange(AVA stu[],int a,int b)//读档函数 a学生b学科{   FILE *fpk1,*fpk2,*fpk3,*fpk4,*fpk5,*fpk6,*fpk7,*fpk8,*fpk9;    fpk1 = fopen("学号.txt","r");    fpk2 = fopen("姓名.txt","r");    fpk3 = fopen("姓名简称.txt","r");    fpk4 = fopen("学科1.txt","r");    fpk5 = fopen("学科2.txt","r");    fpk6 = fopen("学科3.txt","r");    fpk7 = fopen("学科4.txt","r");    fpk8 = fopen("学科5.txt","r");    fpk9 = fopen("学科6.txt","r");    if(fpk1==NULL||fpk2==NULL||fpk3==NULL||fpk4==NULL||fpk5==NULL||fpk6==NULL||fpk7==NULL||fpk8==NULL||fpk9==NULL)  {      printf("无法打开\n");      exit(0);  }  i = 0;  char s1[N],s2[N],s3[N],s4[N],s5[N],s6[N],s7[N],s8[N],s9[N];   while(fgets(s1,40,fpk1)!=NULL)   {       int w;       w = strlen(s1);       if(w==2)       {           stu[i].no = s1[0]-'0';       }       else if(w==3)       {           stu[i].no=(s1[0]-'0')*10+s1[1]-'0';       }       i++;       if(i==a) break;   }   i=0;   while(fgets(s2,40,fpk2)!=NULL)   {       strcpy(stu[i].name,s2);       i++;       if(i==a)break;   }   i=0;    while(fgets(s3,40,fpk3)!=NULL)   {       strcpy(stu[i].name1,s3);       i++;       if(i==a)break;   }        i = 0;   while(fgets(s4,40,fpk4)!=NULL)   {       int w;       w = strlen(s4);       if(w==2)       {          stu[i].cj[0] = s4[0]-'0';       }       else if(w==3)       {            stu[i].cj[0]=(s4[0]-'0')*10+s4[1]-'0';       }       i++;       if(i==a) break;   }    i = 0;   while(fgets(s5,40,fpk5)!=NULL)   {       int w;       w = strlen(s5);       if(w==2)       {            stu[i].cj[1] = s5[0]-'0';       }       else if(w==3)       {          stu[i].cj[1]=(s5[0]-'0')*10+s5[1]-'0';       }       i++;       if(i==a) break;   }    i = 0;   while(fgets(s6,40,fpk6)!=NULL)   {       int w;       w = strlen(s6);       if(w==2)       {           stu[i].cj[2] = s6[0]-'0';       }       else if(w==3)       {           stu[i].cj[2]=(s6[0]-'0')*10+s6[1]-'0';       }       i++;       if(i==a) break;   }    if(b==4||b==5||b==6)    {          i = 0;   while(fgets(s7,40,fpk7)!=NULL)   {       int w;       w = strlen(s7);       if(w==2)       {           stu[i].cj[3] = s7[0]-'0';       }       else if(w==3)       {           stu[i].cj[3]=(s7[0]-'0')*10+s7[1]-'0';       }       i++;       if(i==a) break;   }    }     if(b==5||b==6)     {          i = 0;   while(fgets(s8,40,fpk8)!=NULL)   {       int w;       w = strlen(s8);       if(w==2)       {            stu[i].cj[4] = s8[0]-'0';       }       else if(w==3)       {          stu[i].cj[4]=(s8[0]-'0')*10+s8[1]-'0';       }       i++;       if(i==a) break;   }     }    if(b==6)    {         i = 0;   while(fgets(s9,40,fpk9)!=NULL)   {       int w;       w = strlen(s9);       if(w==2)       {           stu[i].cj[5] = s9[0]-'0';       }       else if(w==3)       {           stu[i].cj[5]=(s9[0]-'0')*10+s9[1]-'0';       }       i++;       if(i==a) break;   }    }   fclose(fpk1);   fclose(fpk2);   fclose(fpk3);   fclose(fpk4);   fclose(fpk5);   fclose(fpk6);   fclose(fpk7);   fclose(fpk8);   fclose(fpk9);   printf("读档完成\n");}

到此,关于“怎么使用C语言代码实现学生成绩管理系统”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯