#includestdio.h//编译预处理指令#includestring.h//定义处理字符串函数#includeprocess.h//宏指令的声明#includeconio.h//定义通过控制台进行数据输入以及输出#defineN2000//最多的人数人#defineM3//统计成绩typedefstructstudent//定义类型{charnumber[10];//保存所有人的学号charname[20];//保存学生姓名charsex[10];//保存性别floatscore[M];//保存所有课程成绩floataver;//保存每个人的平均成绩floattotal;//总计成绩}STU;STUstu[N];intn;voidinputscore(void);//学生成绩新建voidsavescore(void);//学生成绩保存voidavergescore(void);//学生平均成绩voidtotal(void);//学生成绩总计voidmodifyscore(void);//学生成绩修改voidlookscore(void);//学生成绩查看voidsearchscore(void);//学生成绩查询voidstatistic(void);//学生成绩统计voidadd(void);//学生成绩添加voidmodify(void);//学生成绩修改voiddelscore(void);//学生成绩删除voidmenu(void);//学生成绩菜单voidmain(){shortintflag=0;menu();do{flag=1;switch(getch()){case'1':inputscore();break;//在菜单界面输入1,调用i函数nputscore()实现输入学生成绩信息功能case'2':lookscore();break;//在菜单界面输入2,调用函数lookscore()实现学生成绩按平均分高低排序输出,同时lookscore()函数调用avregescore()函数实现各个学生的平均分计算case'3':searchscore();break;//在菜单界面输入3,调用searchscore()函数实现通过学号查找学生成绩信息功能case'4':statistic();break;//在菜单界面输入4,调用statistic()函数输出每一门课程的最高分,平均分以及不及格人员case'5':modify();break;//在菜单界面输入5,调用modify()函数实现通过学号修改学生成绩的功能case'6':add();break;//在菜单界面输入6,调用add()函数实现添加学生成绩case'7':delscore();break;//在菜单界面输入7,调用delscore()函数实现删除指定学生的成绩case'8':savescore();break;//在菜单界面输入8,调用savescore()函数将学生成绩信息保存case'9':exit(0);break;//在菜单界面输入9,退出成绩管理系统default:printf(输入有误\n);}printf(按任意键继续\n);getch();//按任意键继续,起到暂停的作用,函数头文件conio.h已经定义过menu();//菜单}while(flag==1);}voidmenu(void){system(cls);//清屏printf(\n);printf(★★★★★★★欢迎进入学生成绩管理系统★★★★★★★\n);printf(菜单\n);printf(☆输入成绩-------------------------------------1\n);printf(☆查看成绩及成绩排序---------------------------2\n);printf(☆查询学生成绩---------------------------------3\n);printf(☆成绩统计-------------------------------------4\n);printf(☆修改成绩-------------------------------------5\n);printf(☆添加成绩-------------------------------------6\n);printf(☆删除成绩-------------------------------------7\n);printf(☆保存成绩-------------------------------------8\n);printf(☆退出系统-------------------------------------9\n);printf(★★★★★★★★★★★★★★★★★★★★★★★★\n);printf(请输入您的选择(1~9)\n);}/***************输入各个同学的学生信息******************************/voidinputscore(void)//输入成绩{inti,j;system(cls);//清屏专用,以下出现位置作用相同printf(已经转到输入成绩菜单\n);printf(请输入学生总数:\n);scanf(%d,&n);printf(提示:输入学号时请输入9位学生编号:图书借阅证上的学号\n);//因二维表上下需对正故有此要求for(i=0;in;i++){printf(\n);printf(请输入第%d位学生的学号:\n,i+1);scanf(%s,stu[i].number);//输入学生学号printf(姓名:\n);scanf(%s,stu[i].name);//输入学生名字printf(请输入该学生性别\n);scanf(%s,stu[i].sex);//输入性别printf(请输入学生成绩:\n);printf(高数分\t英语分\tC语言分\n);for(j=0;jM;j++)scanf(%f,&stu[i].score[j]);//输入高数、英语、C语言的成绩}printf(成功输入(按任意键继续后请输入8进行保存)\n);}/*****************计算各个同学的总分*****************************/voidtotal(void){inti,j;//定义变量i,j;i用来表示学生个数,j则用来表示学生每门课的分数for(i=0;in;i++){stu[i].total=0;for(j=0;jM;j++)//M表示科目在头文件出已经定义{stu[i].total+=stu[i].score[j];}}}/*****************计算各个同学的平均分*****************************/voidavergescore(void){inti,j;//定义变量i,j;i用来表示学生个数,j则用来表示学生每门课的分数for(i=0;in;i++){stu[i].aver=0;for(j=0;jM;j++)//M表示科目在头文件出已经定义{stu[i].aver+=stu[i].score[j];}stu[i].aver=stu[i].aver/M;//计算平均分}}/************查看学生成绩及根据平均分对学生进行排序*********************/voidlookscore(void){inti,j,k;//i,j,k都表示学生成绩比较用来调换顺序STUt;total();//此处用来对调用函数的声明avergescore();system(cls);//清屏专用printf(已经转到查看成绩及成绩排序菜单\n);for(i=0;in-1;i++){for(k=i,j=i+1;jn;j++)if(stu[j].averstu[k].aver)k=j;if(k!=j){t=stu[k];stu[k]=stu[i];stu[i]=t;}}printf(名次\t学号\t\t姓名\t性别\t高数分\t英语分\tC语言分\t总分\t平均分\n);for(i=0;in;i++){printf(%d\t%s\t%s\t%s\t,i+1,stu[i].number,stu[i].name,stu[i].sex);for(j=0;jM;j++)printf(%4.2f\t,stu[i].score[j]);printf(%4.2f\t,stu[i].total);printf(%4.2f,stu[i].aver);printf(\n);}}/*****************通过输入学号查找学生成绩***************************/voidsearchscore(void){chara[10];//定义数组a的类型可输入数字,字母或字符inti,j;system(cls);//清屏printf(已经转到查询学生成绩菜单\n);printf(请输入需查询的学生学号\n);scanf(%s,a);for(i=0;in;i++){if(strcmp(a,stu[i].number)==0)//如果输入的学号为真则输出相关信息{printf(名次\t学号\t\t姓名\t性别\t高数分\t英语分\tC语言分\t总分\t平均分\n);printf(%d\t%s\t%s\t%s\t,i+1,stu[i].number,stu[i].name,stu[i].sex);for(j=0;jM;j++)printf(%4.2f\t,stu[i].score[j]);printf(%4.2f\t,stu[i].total);printf(%4.2f,stu[i].aver);printf(\n);break;//找到该学生成绩信息后跳出for循环}elseprintf(未找到该学生信息\n);}}/*******统计学生成绩信息,计算出每一门课的最高分****************/voidstatistic(){inti,j=0,k=0,c1;charstr[2];floataverage[M],sum=0;printf(没有可被查找的记录\n);//system(cls);if(M==0)//如果没有输入成绩则输出没有可查找的记录printf(没有可被查找的记录\n);else{while(1){printf(下面将统计考试成绩\n);printf(请选择你要统计哪科的成绩1.高数\t2.英语\t3.C语言\n);scanf(%d,&c1);printf(\t一共有%d个记录\n,M);/*总共记录数*/switch(c1){case1://用来判断高数的最高分,平均分,输出不及格人员名单for(i=0;iM;i++){sum+=stu[i].score[0];if(stu[k].score[0]stu[i].score[0])k=i;if(stu[j].score[0]stu[i].score[0])j=i;}average[0]=sum/M;printf(\t高数的最高分:\n);printf(\t\t学号:%s姓名:%s分数:%.2f\n,stu[j].number,stu[j].name,stu[j].score[0]);printf(\t高数的最低分是:\n);printf(\t\t学号:%s姓名:%s分数:%.2f\n,stu[k].number,stu[k].name,stu[k].score[0]);printf(\t高数的平均分是%5.2f\n,average[0]);printf(平均分低于60分的学生成员名单\n);for(i=0;iM;i++){if(stu[i].score[0]60)printf(%s\n,stu[i].name);}break;case2://用来判断英语的最高分,平均分,输出不及格人员名单for(i=0