#includestdio.h#defineN50#defineM200intstumax=0,scoremax=0;FILE*fp;structstudent{charnum[9];//学号charname[20];//姓名intsex;//性别introom;//宿舍号码longinttel;//电话号码}stu[N];structstuscore{charnum[9];//学号charcoursenum[10];//课程编号charcourse[15];//课程名称floatpoint;//学分intnscore;//平时成绩intexpscore;//实验成绩intexamscore;//卷面成绩intcomscore;//综合成绩floatgetpoint;//实得学分}score[M],score1[M];voidenter_stu();voidinput_stu(intj);voidenter_score();voidinput_score(inti);voidcom_score(inti);voidbrowse_stu();voidbrowse_score();voidsearch();voidsearch_stu();voidsearch_num();voidsearch_name();voidsearch_room();voidsearch_score();voidprintf_onestu_score(charsnum[]);voiddelete_one();voidorder();voidorder_course_num();voidorder_course();voidorder_printf(intk);/***********菜单***********/voidmenu(){intw1;charn;/*变量n保存选择菜单数字,w1判断输入的数字是否在功能菜单对应数字范围内*/system(cls);do{puts(****************************************************************\n\n);puts(\t*****************总菜单*****************\n\n);puts(\t***1.输入学生的基本信息***);puts(\t***2.浏览学生的基本信息***);puts(\t***3.输入学生的成绩基本信息***);puts(\t***4.浏览学生的成绩基本信息***);puts(\t***5.查询信息功能***);puts(\t***6.删除信息功能***);puts(\t***7.排序:按综合成绩或实得学分***);puts(\t***8.退出***);puts(\n\n****************************************************************);printf(\n选择要进行的功能代号(1-8):[]\b\b);scanf(%c,&n);if(n'1'||n'8')/*对选择的数字作判断*/{w1=1;printf(\n\n???请输入数字1~8!\n\n);}else{w1=0;/*选择功能*/switch(n){case'1':enter_stu();break;/*输入基本信息模块*/case'2':browse_stu();break;/*浏览基本信息模块*/case'3':enter_score();break;/*输入成绩基本信息模块*/case'4':browse_score();break;/*浏览成绩基本信息模块*/case'5':search();break;/*查找模块*/case'6':delete_one();break;/*删除学籍模块*/case'7':order();break;/*排序模块*/case'8':exit(0);}}}while(w1==1);getch();}/**********主函数*********/voidmain(){menu();/*进入菜单*/}/*公用函数***********************************************************************//*保存所有分数*/voidsave_score(){inti;if((fp=fopen(b.txt,w+))==NULL)/*以输出方式打开,在此前的记录被覆盖*/{printf(\n不能打开文件.);getch();}for(i=0;iscoremax;i++)if(fwrite(&score[i],sizeof(structstuscore),1,fp)!=1)printf(\n文件输入错误.);fclose(fp);printf(\n输入数据结束.Pressanykeytocontinue...);getch();}/*保存所有学生信息*/voidsave(){inti;if((fp=fopen(a.txt,w+))==NULL)/*以输出方式打开,在此前的记录被覆盖*/{printf(\n不能打开文件);getch();}for(i=0;istumax;i++)if(fwrite(&stu[i],sizeof(structstudent),1,fp)!=1)printf(\n文件输入错误.);fclose(fp);}/*显示一个分数,形参i表示显示第i个记录*/voidprintf_one_score(inti){printf(\n学号:%s课程编号:%s课程名称:%s学分:%f\n平时成绩:%d实验成绩:%d卷面成绩:%d综合成绩:%d实得学分:%f,score[i].num,score[i].coursenum,score[i].course,score[i].point,score[i].nscore,score[i].expscore,score[i].examscore,score[i].comscore,score[i].getpoint);}/*显示一个学生信息,形参j表示显示第j个记录*/voidprintf_one_stu(intj){printf(\n学号:%s姓名:%s性别:%d宿舍号码:%d电话号码:%ld,stu[j].num,stu[j].name,stu[j].sex,stu[j].room,stu[j].tel);}/*删除一个分数,形参i表示删除第i个记录*/voiddelete_one_score(inti){printf_one_score(i);score[i]=score[scoremax];scoremax--;printf(\n删除学生数据成功!Pressanykeytocontinue...);getch();save_score();}/*录入模块***********************************************************************//*学生信息录入*/voidenter_stu(){inti,n,es1;printf(\n要输入多少学生基本信息(1~%d)?,N-1);scanf(%d,&n);/*要输入的学生基本信息的个数*/es1=n+stumax;/*输入n个后应有的记录个数*/printf(\n输入信息:);for(i=stumax;ies1;i++)input_stu(i);/*调用输入学生基本信息函数*/printf(\n共输入%d项基本信息.Pressanykeytocontinue...,n);getch();menu();/*提示输入任务结束,按任意键返回主菜单*/}/*录入一个学生信息*/voidinput_stu(intj){inti1,k=0,d;switch((j+1)%10){case1:printf(\nInputthe%dststudent'sinformation:,j+1);break;case2:printf(\nInputthe%dndstudent'sinformation:,j+1);break;default:printf(\nInputthe%dthstudent'sinformation:,j+1);}printf(\n学号姓名性别宿舍号码电话号码\n);scanf(%s%s%d%d%ld,stu[j].num,stu[j].name,&stu[j].sex,&stu[j].room,&stu[j].tel);stumax++;/*输入一个信息,总数加1*/for(i1=0;i1stumax;i1++)if(i1!=j&&strcmp(stu[i1].num,stu[j].num)==0)/*表示学号已存在*/{k=1;/*k为学号是否已存在标记,k=1表存在*/printf_one_stu(i1);/*显示已存在的学号的信息*/printf(\n此学生存在!);/*提示学号已存在*/stumax--;/*总数减1,删除输入信息*/printf(\n删除信息成功!);save();/*调用保存函数*/break;}if(k==0)/*表示学号不重复*/{printf(\n输入信息成功!);/*提示输入成功*/save();/*调用保存函数*/}}/*学生成绩信息录入*/voidenter_score(){inti,n,es1;printf(\n要输入的学生基本信息的个数(1~%d)?,M-1);scanf(%d,&n);/*要输入的学生基本信息的个数*/es1=n+scoremax;/*输入n个后应有的记录个数*/printf(\n输入数据:\n);for(i=scoremax;ies1;i++)input_score(i);/*调用输入学生成绩基本信息函数*/save_score();/*调用保存学生成绩基本信息函数*/printf(\n共输入了%d项数据.Pressanykeytocontinue...,n);getch();menu();/*提示输入任务结束,按任意键返回主菜单*/}/*录入一个成绩*/voidinput_score(inti){intj,j1,k,c;floata;switch((i+1)%10){case1:printf(\nInputthe%dststudent'sscore:,i+1);break;case2:printf(\nInputthe%dndstudent'sscore:,i+1);break;default:printf(\nInputthe%dthstudent'sscore:,i+1);}printf(\n学号课程编号课程名称学分平时成绩实验成绩卷面成绩\n);scanf(\n%s%s%s%f%d%d%d,score[i].num,score[i].coursenum,score[i].course,&a,&score[i].nscore,&score[i].expscore,&score[i].examscore);score[i].point=a;com_score(i);/*调用计算综合成绩、实得学分函数*/scoremax++;for(j1=0;j1stumax;j1++)if(strcmp(score[i].num,stu[j1].num)==0)break;if(j1==stumax)/*学生不存在*/{printf(\n该学生不存在!);delete_one_score(i);/**************/}else/*学生存在*/{for(k=0;kscoremax;k++){if(k!=i&&strcmp(score[k].num,score[i].num)==0&&strcmp(score[k].coursenum,score[i].coursenum)==0&&strcmp(score[k].course,score[i]