C语言利用结构体数组实现学生成绩管理系统
要求:
某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入)。定义结构体类型描述学生信息,每个学生信息包括:学号、姓名、多门课的成绩、总成绩和平均成绩。用结构体数组作为函数参数,编程实现如下菜单驱动的学生成绩管理系统。
(1)录入每个学生的学号、姓名和各科考试成绩。
(2)计算每门课程的总分和平均分。
(3)计算每个学生的总分和平均分。
(4)按每个学生的总分由高到低排出名次表。
(5)按学号由小到大排出成绩表。
(6)按姓名的字典顺序排出成绩表。
(7)按学号查询学生排名极其考试成绩。
(8)按姓名查询学生排名极其考试成绩。
(9)按优秀(90~100)、良好(80~90)、中等(70~80)、及格(60~70)、不及格(0~59)5个类别,对每门课程分别统计每个类别的人数以及所占的百分比。
(10)输出每个学生的学号、姓名、各科考试成绩以及每门课程的总分和平均分。
代码:
#include#include #include #defineSN30//学生人数 #defineCN6//科目数 #defineNL20//名字字节长度 typedefstructstudent{ longintnum; charname[NL]; floatscore[CN]; floatsum; floataver; }STU; STUs[SN]; intitemSelected=-1; intn=0;//学生数 intm=0;//课程数 intMenu();//菜单 voidchose(intitemSelected);//选择 voidinputScore();//输入分数 voidAverofC();//计算每门课程平均数 voidAverofS();//每名学生总分和平均分 voidsortByNum();//学生总分排行 voidsortByGrade(); voidsortByName(); voidfindByNum(); voidfindByName(); voidstatisticsAnalysis(); voidprintScore(); voidmain(){ printf("请输入学生总数(n<%d):\n",SN); scanf("%d",&n); printf("请输入课程总数(m<%d):\n",CN); scanf("%d",&m); while(1){ itemSelected=Menu(); chose(itemSelected); itemSelected=-1; } } intMenu(){ intitemSelected; system("cls"); printf("\n==============学生成绩管理系统===============\n"); printf("\t1.输入学号、姓名及各科成绩\n"); printf("\t2.计算每门课程总分和平均分\n"); printf("\t3.计算每个学生总分和平局分\n"); printf("\t4.按每个学生总分高低排出名次表\n"); printf("\t5.按学号从小到大排出成绩表\n"); printf("\t6.按学生字典顺序排出成绩表\n"); printf("\t7.按学号查询学生排名和考试成绩\n"); printf("\t8.按姓名查询学生排名和成绩\n"); printf("\t9.结果分析\n"); printf("\t10.输出信息\n"); printf("\t0.退出\n"); printf("===============================================\n"); printf("请选择选项:"); scanf("%d",&itemSelected); returnitemSelected; } voidchose(intitemSelected){ switch(itemSelected){ case1:inputScore();break; case2:AverofC();break; case3:AverofS();break; case4:sortByGrade();break; case5:sortByNum();break; case6:sortByName();break; case7:findByNum();break; case8:findByName();break; case9:statisticsAnalysis();break; case10:printScore();break; case0:exit(0); printf("即将退出程序");break; default:printf("输入错误!");break; } } voidinputScore(){ printf("\n===============================================\n"); printf("请输入学生学号、姓名及各科信息(输入0停止信息输入)\n"); for(inti=0;i s[i+1].num){ temp1=s[i]; s[i]=s[i+1]; s[i+1]=temp1; } } printf("\n==============按学号从小到排序===============\n"); for(intj=0;j (int)(s[i+1].name[0]))){ //将名字首字母转成成ASCII码从而比较大小排序 temp1=s[i]; s[i]=s[i+1]; s[i+1]=temp1; } } printf("\n==============按学号从小到排序===============\n"); for(intj=0;j =90&&s[i].score[j]<=100){ a1[j]++; }elseif(s[i].score[j]>=80&&s[i].score[j]<90){ a2[j]++; }elseif(s[i].score[j]>=70&&s[i].score[j]<80){ a3[j]++; }elseif(s[i].score[j]>=60&&s[i].score[j]<70){ a4[j]++; }elseif(s[i].score[j]<60){ a5[j]++; } } } printf("\n====================各们课程概况==================\n"); for(intk=0;k 更多学习资料请关注专题《管理系统开发》。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。