久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3728|回復: 2
打印 上一主題 下一主題
收起左側

C語言學生成績管理系源代碼

[復制鏈接]
跳轉到指定樓層
樓主

學生成績管理系統,可以輸入學生成績,并且可以查看統計平均分總分等,并可以實現成績的實時存儲。代碼有注釋哦~

C語言源程序如下:
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<conio.h>
  4. #include<stdlib.h>
  5. #define N 10/*定義學生人數*/
  6. #define M 4 /*定義學科人數*/
  7. typedef struct student/*定義結構體數組*/
  8. {
  9.         int number; /*學號*/
  10.         char name[10];/*姓名*/
  11.         char zhuanye[10];/*專業*/
  12.         int cla;/*班級*/
  13.         float score[M];/*分數*/
  14.         float sum;/*總分*/
  15.         float average;/*平均分*/
  16. }STU;
  17. STU stu[N];
  18. void menu(void);
  19. void input(void);
  20. void savescore(void);
  21. void loadf(void);
  22. void inoutput(void);
  23. void sumaverage(STU stu[N]);
  24. void paixu(STU stu[N]);
  25. void tongji1(STU stu[N]);
  26. void tongji2(STU stu[N]);
  27. void shuchuone(int i);
  28. void output2(STU stu[N]);
  29. void xiugai(int n);
  30. void xianshi(STU stu[N]);
  31. void chazhao(STU stu[N]);
  32. void chazhao1(int n);
  33. void main()
  34. {
  35.         char choice;
  36.         system("color F0");
  37.         do
  38.         {        menu();               
  39.                 printf("\n\tPress a key for your choice: ");
  40.                 switch(choice=getchar())                                                       
  41.                 {        case '1':        inoutput();break;/*輸入學生成績并保存加載顯示*/
  42.                     case '2':   chazhao(stu);break;/*查找學生信息及各個統計結果*/
  43.                         case '3':        xiugai(N);break;/*修改學生信息*/       
  44.                         case '4':   xianshi(stu);break;/*顯示統計結果*/
  45.                         case '5':        goto QUIT;/*安全退出*/
  46.                         case '\n':        break;                                                       
  47.                         default:        printf("\t輸入錯誤,請重新輸入!");/*輸入錯誤時的處理*/
  48.                                        
  49.                 }
  50.                 getch();                                                       
  51.    }while(1);  
  52. QUIT:       
  53.         printf("\n\t謝謝使用,再見!\n\n\t");       
  54.         getch();
  55.         exit(0);
  56. }
  57. void menu(void)/*定義菜單函數*/
  58. {
  59.         system("cls");/*清屏*/
  60.         printf("\n\n\t*********歡迎使用學生信息管理系統************\n");
  61.         printf("\n\t     1、添加學生信息并顯示:\n");
  62.         printf("\t     2、查找學生信息:\n");
  63.         printf("\t     3、修改學生信息:\n");
  64.         printf("\t     4、顯示所有學生信息及統計結果:\n");
  65.         printf("\t     5、退出。\n");
  66.         printf("\n\n\t*********************************************");
  67. }
  68. void input(void)/*定義輸入函數*/
  69. {
  70.         int i,j;
  71.         system("CLS");
  72.         printf("輸入學生各科成績:\n");
  73.         puts("學號\t姓名\t專業\t班級\t英語\t高數\t物理\t體育");
  74.         for(i=0;i<N;i++)
  75.         {
  76.                 printf("輸入%d的學生信息:\n",i+1);
  77.                 scanf("%d%s%s%d",&stu[i].number,stu[i].name,stu[i].zhuanye,&stu[i].cla);
  78.                 printf("輸入%d的學生各科成績:\n",i+1);
  79.                 for(j=0;j<M;j++)
  80.                         scanf("%f",&stu[i].score[j]);
  81.         }
  82.         printf("\n已輸入%d個學生數據.\n",N);
  83. }
  84. void savescore(void)/*定義保存成績到文件函數*/
  85. {
  86.         FILE * fp;
  87.         int i,flag=1;
  88.         char m;
  89.         puts("是否現在保存成績(Y/N)");
  90.         scanf("%s",&m);
  91.         if(m=='Y')
  92.         {
  93.                 if((fp=fopen("c:\\student.dat","wb"))==NULL)
  94.                 {
  95.                         printf("無法打開文件\n");
  96.                         return;
  97.                 }
  98.                 for(i=0;i<N;i++)
  99.                 {
  100.                         if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
  101.                         {
  102.                                 printf("文件寫入錯誤\n");
  103.                                 flag=0;
  104.                         }
  105.                 }
  106.                 if(flag==1)
  107.                         puts("文件成功保存!");
  108.                 fclose(fp);/*及時關閉文件*/
  109.         }
  110.         else
  111.                 return;
  112. }
  113. void loadf(void)/*定義加載文件函數*/
  114. {
  115.         FILE *fp;
  116.         int i,flag=1;
  117.         char m;
  118.         puts("是否現在打開文件!(Y/N)");
  119.         scanf("%s",&m);
  120.         if(m=='Y')
  121.         {
  122.                 if((fp=fopen("c:\\student.dat","rb"))==NULL)
  123.                 {
  124.                         printf("無法打開文件\n");
  125.                         flag=0;
  126.                         return;
  127.                 }
  128.                 for(i=0;!feof(fp);i++)
  129.                         fread(&stu[i],sizeof(STU),1,fp);
  130.                 if(flag==1)
  131.                         puts("文件加載成功!");
  132.                 fclose(fp);
  133.         }
  134.         else
  135.                 return;
  136. }
  137. void sumaverage(STU stu[N])/*定義求和與求平均值函數*/
  138. {
  139.         FILE *fp;
  140.         int i,j;
  141.         if((fp=fopen("c:\\student.dat","rb"))==NULL)/*以讀方式打開文件并查詢文件是否存在*/
  142.         {
  143.                 printf("error!");
  144.                 exit(0);
  145.         }
  146.         for(i=0;!feof(fp);i++)
  147.                 fread(&stu[i],sizeof(STU),1,fp);/*一次讀出所有數據*/
  148.         fclose(fp);
  149.         for(i=0;i<N;i++)
  150.         {
  151.                 stu[i].sum=0.0;
  152.                 for(j=0;j<M;j++)
  153.                         stu[i].sum+=stu[i].score[j];
  154.                 stu[i].average=stu[i].sum/M;
  155.         }
  156. }
  157. void paixu(STU stu[N])/*定義排序函數*/
  158. {
  159.         int i,j,k;
  160.         STU temp;
  161.         for(i=0;i<N-1;i++)
  162.         {
  163.                 k=i;
  164.                 for(j=i+1;j<N;j++)
  165.                 if(stu[i].sum<stu[j].sum)
  166.                         k=j;
  167.                 if(i!=k)
  168.                 {
  169.                         temp=stu[i];
  170.                         stu[i]=stu[k];
  171.                         stu[k]=temp;
  172.                 }
  173.         }
  174. }
  175. void tongji1(STU stu[N])/*定義統計成績率函數*/
  176. {
  177.         int m,i;
  178.         float a=0.0,b=0.0,c=0.0;
  179.         FILE *fp;
  180.         if((fp=fopen("c:\\student.dat","rb"))==NULL)/*以讀方式打開文件并查詢文件是否存在*/
  181.         {
  182.                 printf("error!");
  183.                 exit(0);
  184.         }
  185.         for(i=0;!feof(fp);i++)
  186.                 fread(&stu[i],sizeof(STU),1,fp);/*一次讀出所有數據*/
  187.         fclose(fp);
  188.         printf("********************選擇統計學科**********************\n"); /*選擇功能菜單*/
  189.         printf("統計英語成績不及格率、通過率及優秀率請按:1\n");
  190.         printf("統計高數成績不及格率、通過率及優秀率請按:2\n");           
  191.         printf("統計物理成績不及格率、通過率及優秀率請按:3\n");
  192.         printf("統計體育成績不及格率、通過率及優秀率請按:4\n");
  193.         printf("******************************************************\n");
  194.         scanf("%d",&m);                     
  195.         for(i=0;i<N;i++)
  196.         {
  197.                 if(stu[i].score[m-1]<60)
  198.                         a++;
  199.                 else
  200.                         b++;
  201.                 if(stu[i].score[m-1]>=90)
  202.                         c++;
  203.         }
  204.                 printf("不及格率為%.1f,通過率為%.1f,優秀率為%.1f\n",a/N,b/N,c/N);
  205.                 printf(" ******************************************************");
  206. }
  207. void tongji2(STU stu[N])/*定義查找最高分函數*/
  208. {
  209.         int i,m,k=0;
  210.         FILE *fp;
  211.         if((fp=fopen("c:\\student.dat","rb"))==NULL)/*以讀方式打開文件并查詢文件是否存在*/
  212.         {
  213.                 printf("error!");
  214.                 exit(0);
  215.         }
  216.         for(i=0;!feof(fp);i++)
  217.                 fread(&stu[i],sizeof(STU),1,fp);/*一次讀出所有數據*/
  218.         fclose(fp);
  219.         printf("********************輸入查找選項**********************\n");
  220.         printf("1、查找英語成績最高學生請按:1\n");
  221.         printf("2、查找高數成績最高學生請按:2\n");           
  222.         printf("3、查找物理成績最高學生請按:3\n");
  223.         printf("4、查找體育成績最高學生請按:4\n");
  224.         printf("*****************************************************\n");
  225.         scanf("%d",&m);                        
  226.         for(i=0;i<N;i++)               
  227.         {
  228.                 if(stu[i].score[m-1]>stu[k].score[m-1])
  229.                         k=i;
  230.         }
  231.         sumaverage(stu);
  232.         printf("最高分學生信息如下:\n");
  233.         shuchuone(k);
  234.         printf(" 輸出結束\n");
  235.         printf(" **********************************************************");
  236. }
  237. void shuchuone(int i)/*定義輸出一個學生函數*/
  238. {
  239.         printf("學號:%d  姓名:%s  專業:%s  班級:%d\n",stu[i].number,stu[i].name,stu[i].zhuanye,stu[i].cla);
  240.         printf("英語:%.1f  高數:%.1f  物理:%.1f  體育:%.1f  總分:%.1f  平均分:%.1f\n",stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].average);
  241. }
  242. void inoutput(void)/*定義輸入成績與保存加載顯示函數*/
  243. {
  244.         int i,j;
  245.         input();/*調用輸入成績函數*/
  246.         savescore();/*調用保存函數*/
  247.         loadf();/*定定義加載函數*/
  248.         puts("學號\t姓名\t專業\t班級\t英語\t高數\t物理\t體育");
  249.         for(i=0;i<N;i++)
  250.         {
  251.                 printf("%d\t%s\t%s\t%d\t",stu[i].number,stu[i].name,stu[i].zhuanye,stu[i].cla);
  252.                 for(j=0;j<M;j++)
  253.                         printf("%.1f\t",stu[i].score[j]);
  254.                 printf("\n");
  255.         }
  256. }
  257. void output2(STU stu[N])/*定義輸出成績函數*/
  258. {
  259.         int i,j;
  260.         FILE *fp;
  261.         if((fp=fopen("c:\\student.dat","rb"))==NULL)/*以讀方式打開文件并查詢文件是否存在*/
  262.         {
  263.                 printf("error!");
  264.                 exit(0);
  265.         }
  266.         for(i=0;!feof(fp);i++)
  267.                 fread(&stu[i],sizeof(STU),1,fp);/*一次讀出所有數據*/
  268.         fclose(fp);
  269.         puts("學號\t姓名\t專業\t班級\t英語\t高數\t物理\t體育\t總分\t平均分");
  270.         for(i=0;i<N;i++)
  271.         {
  272.                 printf("%d\t%s\t%s\t%d\t",stu[i].number,stu[i].name,stu[i].zhuanye,stu[i].cla);
  273.                 for(j=0;j<M;j++)
  274.                 {
  275.                         printf("%.1f\t",stu[i].score[j]);
  276.                 }
  277.                 sumaverage(stu);
  278.                 printf("%.1f\t",stu[i].sum);
  279.                 printf("%.1f\t",stu[i].average);
  280.         }
  281. }
  282. void xiugai(int n)/*定義修改信息函數*/
  283. {
  284.         STU some;
  285.         int k=-1,m,i;
  286.         FILE *fp;
  287.         if((fp=fopen("c:\\student.dat","rb"))==NULL)/*以讀方式打開文件并查詢文件是否存在*/
  288.         {
  289.                 printf("error!");
  290.                 exit(0);
  291.         }
  292.         for(i=0;!feof(fp);i++)
  293.                 fread(&stu[i],sizeof(STU),1,fp);/*一次讀出所有數據*/
  294.         fclose(fp);
  295.         printf("\n請輸入要修改的同學的學號:");
  296.         scanf("%d",&m);
  297.         for(i=0;i<n;i++)
  298.         {
  299.                 if(m==stu[i].number)
  300.                 {
  301.                         k=i;
  302.                         break;
  303.                 }
  304.         }
  305.         if(k<0)
  306.                 printf("\n輸入學號有誤,請重新輸入!");
  307.         else
  308.         {
  309.                 printf("請輸入要修改學生修改后的的信息\n");
  310.                 printf("學號\t專業\t班級\t英語\t高數\t物理\t體育\n");
  311.                 scanf("%d\t%s\t%d\t%f\t%f\t%f\t%f",&some.number,some.zhuanye,&some.cla,&some.score[0],&some.score[1],&some.score[2],&some.score[3]);
  312.                 strcpy(some.name,stu[i].name);
  313.                 some.sum=(some.score[0]+some.score[1]+some.score[2]+some.score[3]);   
  314.                 some.average=some.sum/M;
  315.                 stu[k]=some;
  316.                 shuchuone(k);
  317.                 printf("\n修改成功!恭喜!\n");
  318.         }


  319. }
  320. void xianshi(STU stu[N])/*定義顯示成績函數*/
  321. {
  322.         sumaverage(stu);
  323.         paixu(stu);
  324.         output2(stu);
  325. }
  326. void chazhao(STU stu[N])/*定義查找函數*/
  327. {
  328.         int m,i;
  329.         FILE *fp;
  330.         if((fp=fopen("c:\\student.dat","rb"))==NULL)/*以讀方式打開文件并查詢文件是否存在*/
  331.         {
  332.                 printf("error!");
  333.                 exit(0);
  334.         }
  335.         for(i=0;!feof(fp);i++)
  336.                 fread(&stu[i],sizeof(STU),1,fp);/*一次讀出所有數據*/
  337.         fclose(fp);
  338.         sumaverage(stu);/*求平均值和總分*/
  339.         printf("********************輸入查找選項**********************\n");
  340.         printf("1、查找成績最高學生請按:1\n");
  341.         printf("2、查看學生的各項成績率請按:2\n");
  342.         printf("3、查找單個學生信息請按:3\n");
  343.         printf("******************************************************\n");
  344.         scanf("%d",&m);
  345.         if(m==1)
  346.                 tongji2(stu);
  347.         if(m==2)
  348.                 tongji1(stu);
  349.         if(m==3)
  350.             chazhao1(N);
  351. }
  352. void chazhao1(int n)/*定義查找單個學生成績函數*/
  353. {
  354.         int k=-1,a,i;
  355.         FILE *fp;
  356.         if((fp=fopen("c:\\student.dat","rb"))==NULL)/*以讀方式打開文件并查詢文件是否存在*/
  357.         {
  358.                 printf("error!");
  359.                 exit(0);
  360.         }
  361.         for(i=0;!feof(fp);i++)
  362.                 fread(&stu[i],sizeof(STU),1,fp);/*一次讀出所有數據*/
  363.         fclose(fp);
  364.         printf("請輸入要查找的同學的學號:\n");
  365.         scanf("%d",&a);
  366.         for(i=0;i<n;i++)
  367.         {
  368.                 if(a==stu[i].number)
  369.                 {
  370.                         k=i;
  371.                         break;
  372.                 }
  373.         }
  374.         if(k<0)
  375.                 printf("\n輸入學號有誤,請重新輸入!");
  376.         else
  377.                 sumaverage(stu);
  378.                 shuchuone(k);
  379. }
復制代碼

所有資料51hei提供下載:
學生成績管理系統.rar (222 KB, 下載次數: 19)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1010056 發表于 2022-4-16 09:48 | 只看該作者
這個地方要加個換行,不然顯示全部信息的時候,第二排開始全亂了

{9SU2PG]6G)M}B)V)M_Q7IK.png (94.28 KB, 下載次數: 62)

{9SU2PG]6G)M}B)V)M_Q7IK.png
回復

使用道具 舉報

板凳
ID:68847 發表于 2022-6-25 19:00 | 只看該作者
沒有時間和年代信息,不實用~
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 羞羞的视频免费看 | www狠狠干| 国产亚洲一区在线 | 伊人99 | 丁香婷婷久久久综合精品国产 | 国产精品国产三级国产播12软件 | 日韩精品一区在线 | 99久久婷婷国产亚洲终合精品 | 91久久国产综合久久 | 91福利网址 | 久久精品欧美一区二区三区不卡 | 久久精品国产亚洲a | 亚洲午夜精品一区二区三区 | 日韩精品1区2区3区 国产精品国产成人国产三级 | 日韩欧美三区 | 欧美伊人影院 | 欧美日韩一区精品 | 国产成人免费视频网站高清观看视频 | 国产免费一区二区三区免费视频 | 日韩成人高清 | 91麻豆精品一区二区三区 | 欧美在线一二三 | 国产精品美女一区二区 | 亚洲国产伊人 | 中文字幕亚洲精品在线观看 | 91资源在线观看 | 一级毛片观看 | 欧美大片黄 | 国产精品美女在线观看 | 亚洲久久一区 | 自拍偷拍中文字幕 | 一本一道久久a久久精品综合蜜臀 | 久久国内精品 | 99re热这里只有精品视频 | 在线一级片 | 亚洲精品久久久久久下一站 | 亚洲精品观看 | 日韩av一区二区在线 | 亚洲狠狠爱一区二区三区 | 91精品国产美女在线观看 | 国产精品欧美大片 |