还剩14页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
#includestdio.h#defineN50#defineM200intstu__x=0score__x=0;FILE*fp;structstudent{charnum
[9];//学号charname
[20];//姓名int___;//性别introom;//宿舍号码longinttel;//__号码}stu[N];structstuscore{charnum
[9];//学号charcoursenum
[10];//课程编号charcourse
[15];//课程名称floatpoint;//学分intnscore;//平时成绩intexpscore;//实验成绩intexamscore;//卷面成绩intcomscore;//综合成绩floatgetpoint;//实得学分}score[M]score1[M];voidenter_stu;voidinput_stuintj;voidenter_score;voidinput_scoreinti;voidcom_scoreinti;voidbrowse_stu;voidbrowse_score;voidsearch;voidsearch_stu;voidsearch_num;voidsearch_name;voidsearch_room;voidsearch_score;voidprintf_onestu_scorecharsnum[];voiddelete_one;voidorder;voidorder_course_num;voidorder_course;voidorder_printfintk;/***********菜单***********/voidmenu{intw1;charn;/*变量n保存选择菜单数字,w1判断输入的数字是否在功能菜单对应数字范围内*/systemcls;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%cn;ifn1||n8/*对选择的数字作判断*/{w1=1;printf\n\n请输入数字1~8!\n\n;}else{w1=0;/*选择功能*/switchn{case1:enter_stu;break;/*输入基本信息模块*/case2:browse_stu;break;/*浏览基本信息模块*/case3:enter_score;break;/*输入成绩基本信息模块*/case4:browse_score;break;/*浏览成绩基本信息模块*/case5:search;break;/*查找模块*/case6:delete_one;break;/*删除学籍模块*/case7:order;break;/*排序模块*/case8:exit0;}}}whilew1==1;getch;}/**********主函数*********/void__in{menu;/*进入菜单*/}/*公用函数***********************************************************************//*保存所有分数*/voids__e_score{inti;iffp=fopenb.___w+==NULL/*以输出方式打开,在此前的记录被覆盖*/{printf\n不能打开文件.;getch;}fori=0;iscore__x;i++iffwritescore[i]sizeofstructstuscore1fp!=1printf\n文件输入错误.;fclosefp;printf\n输入数据结束.Pressanykeytocontinue...;getch;}/*保存所有学生信息*/voids__e{inti;iffp=fopena.___w+==NULL/*以输出方式打开,在此前的记录被覆盖*/{printf\n不能打开文件;getch;}fori=0;istu__x;i++iffwritestu[i]sizeofstructstudent1fp!=1printf\n文件输入错误.;fclosefp;}/*显示一个分数,形参i表示显示第i个记录*/voidprintf_one_scoreinti{printf\n学号:%s课程编号:%s课程名称:%s学分:%f\n平时成绩:%d实验成绩:%d卷面成绩:%d综合成绩:%d实得学分:%fscore[i].numscore[i].coursenumscore[i].coursescore[i].pointscore[i].nscorescore[i].expscorescore[i].examscorescore[i].comscorescore[i].getpoint;}/*显示一个学生信息,形参j表示显示第j个记录*/voidprintf_one_stuintj{printf\n学号:%s姓名:%s性别:%d宿舍号码:%d__号码:%ldstu[j].numstu[j].namestu[j].___stu[j].roomstu[j].tel;}/*删除一个分数,形参i表示删除第i个记录*/voiddelete_one_scoreinti{printf_one_scorei;score[i]=score[score__x];score__x--;printf\n删除学生数据成功!Pressanykeytocontinue...;getch;s__e_score;}/*录入模块***********************************************************************//*学生信息录入*/voidenter_stu{intines1;printf\n要输入多少学生基本信息1~%dN-1;scanf%dn;/*要输入的学生基本信息的个数*/es1=n+stu__x;/*输入n个后应有的记录个数*/printf\n输入信息:;fori=stu__x;ies1;i++input_stui;/*调用输入学生基本信息函数*/printf\n共输入%d项基本信息.Pressanykeytocontinue...n;getch;menu;/*提示输入任务结束,按任意键返回主菜单*/}/*录入一个学生信息*/voidinput_stuintj{inti1k=0d;switchj+1%10{case1:printf\nInputthe%dststudentsinfor__tion:j+1;break;case2:printf\nInputthe%dndstudentsinfor__tion:j+1;break;default:printf\nInputthe%dthstudentsinfor__tion:j+1;}printf\n学号姓名性别宿舍号码__号码\n;scanf%s%s%d%d%ldstu[j].numstu[j].namestu[j].___stu[j].roomstu[j].tel;stu__x++;/*输入一个信息,总数加1*/fori1=0;i1stu__x;i1++ifi1!=jstrcmpstu[i1].numstu[j].num==0/*表示学号已存在*/{k=1;/*k为学号是否已存在标记,k=1表存在*/printf_one_stui1;/*显示已存在的学号的信息*/printf\n此学生存在!;/*提示学号已存在*/stu__x--;/*总数减1,删除输入信息*/printf\n删除信息成功!;s__e;/*调用保存函数*/break;}ifk==0/*表示学号不重复*/{printf\n输入信息成功!;/*提示输入成功*/s__e;/*调用保存函数*/}}/*学生成绩信息录入*/voidenter_score{intines1;printf\n要输入的学生基本信息的个数1~%dM-1;scanf%dn;/*要输入的学生基本信息的个数*/es1=n+score__x;/*输入n个后应有的记录个数*/printf\n输入数据:\n;fori=score__x;ies1;i++input_scorei;/*调用输入学生成绩基本信息函数*/s__e_score;/*调用保存学生成绩基本信息函数*/printf\n共输入了%d项数据.Pressanykeytocontinue...n;getch;menu;/*提示输入任务结束,按任意键返回主菜单*/}/*录入一个成绩*/voidinput_scoreinti{intjj1kc;floata;switchi+1%10{case1:printf\nInputthe%dststudentsscore:i+1;break;case2:printf\nInputthe%dndstudentsscore:i+1;break;default:printf\nInputthe%dthstudentsscore:i+1;}printf\n学号课程编号课程名称学分平时成绩实验成绩卷面成绩\n;scanf\n%s%s%s%f%d%d%dscore[i].numscore[i].coursenumscore[i].courseascore[i].nscorescore[i].expscorescore[i].examscore;score[i].point=a;com_scorei;/*调用计算综合成绩、实得学分函数*/score__x++;forj1=0;j1stu__x;j1++ifstrcmpscore[i].numstu[j1].num==0break;ifj1==stu__x/*学生不存在*/{printf\n该学生不存在!;delete_one_scorei;/**************/}else/*学生存在*/{fork=0;kscore__x;k++{ifk!=istrcmpscore[k].numscore[i].num==0strcmpscore[k].coursenumscore[i].coursenum==0strcmpscore[k].coursescore[i].course==0/*该学生该课程已存在*/{printf\n该学生的此项信息已经存在!;delete_one_scorei;/**************/break;}ifstrcmpscore[k].coursenumscore[i].coursenum==0strcmpscore[k].coursescore[i].course!=0||strcmpscore[k].coursenumscore[i].coursenum!=0strcmpscore[k].coursescore[i].course==0/*该课程编号和课程名称与前面矛盾并提示删除哪一个*/{printf\n课程编号和课程名称不符:;printf\n成绩信息[%d]:i;printf_one_scorei;/*显示矛盾课程*/printf\n成绩信息[%d]:k;printf_one_scorek;/*显示矛盾课程*/printf\n1删除成绩[%d]2删除成绩[%d][]\b\bik;scanf%dc;switchc{case1:delete_one_scorei;break;/*调用删除函数*/default:delete_one_scorek;/*调用删除函数*/}break;}}ifk==score__xprintf\n输入信息成功!Pressanykeytocontinue...;getch;}}/*计算综合成绩*/voidcom_scoreinti{ifscore[i].expscore==-1/*判断是否有实验*/score[i].comscore=score[i].nscore*
0.3+score[i].examscore*
0.7;elsescore[i].comscore=score[i].nscore*
0.15+score[i].expscore*
0.15+score[i].examscore*
0.7;switchscore[i].comscore/10{case10:case9:score[i].getpoint=score[i].point*
1.0;break;case8:score[i].getpoint=score[i].point*
0.8;break;case7:score[i].getpoint=score[i].point*
0.75;break;case6:score[i].getpoint=score[i].point*
0.6;break;default:score[i].getpoint=0;}printf\n综合成绩计算结束.Pressanykeytocontinue...;getch;}/*浏览模块***********************************************************************//*浏览学生信息*/voidbrowse_stu{inti;fori=0;istu__x;i++/*stu__x为总的学生数*/printf_one_stui;/*调用显示一个学生基本信息函数*/printf\n浏览学生基本信息结束.Pressanykeytocontinue...;getch;menu;}/*浏览学生成绩信息*/voidbrowse_score{intj;forj=0;jscore__x;j++/*stu__x为总的学生数*/printf_one_scorej;/*调用显示一个学生成绩基本信息函数*/printf\n浏览学生成绩信息结束.Pressanykeytocontinue...;getch;menu;}/*查找模块***********************************************************************//*查找*/voidsearch{intcc1;printf\n查找中...\n选择要查询的信息:\n1学生基本信息2学生成绩3返回菜单[]\b\b;scanf%dc;/*选择查找内容*/ifc=1c=3switchc{case1:search_stu;break;/*调用查找学生基本信息函数*/case2:search_score;break;/*调用查找学生成绩基本信息函数*/default:menu;}printf\n查询结束...\n是否继续查询1是2否[]\b\b;/*询问是否继续查找*/scanf%dc1;switchc1{case1:search;break;/*继续查找*/default:menu;}}/*查找学生信息*/voidsearch_stu{intic;printf\n查找学生信息中...\n选择查询方式:\n1学号2姓名3宿舍编号4返回查询[]\b\b;scanf%dc;/*选择查找方式*/switchc{case1:search_num;break;/*调用按学号查询函数*/case2:search_name;break;/*调用按姓名查询函数*/case3:search_room;break;/*调用按宿舍号查询函数*/default:printf\n继续查询...;}printf\n查询结束.Pressanykeytocontinue...;getch;}/*按学号查找学生信息*/voidsearch_num{intic;charn1
[9];printf\n请输入要查询学生的学号:;scanf%sn1;/*输入要查询的学号*/fori=0;istu__x;i++ifstrcmpstu[i].numn1==0{printf_one_stui;/*显示查到的记录*/break;}ifi==stu__x{printf\n此学号不存在!\n查询下一个学号1是2否[]\b\b;/*未查到相应记录,询问是否继续查找*/scanf%dc;switchc{case1:search_num;break;/*继续按此方式查找*/default:printf\n继续查找...;}}else{printf\n学生信息查询结束.Pressanykeytocontinue...;getch;}}/*按姓名查找学生信息*/voidsearch_name{inticsn1=0;charn2
[20];printf\n输入要查询学生的名字:;scanf%sn2;fori=0;istu__x;i++ifstrcmpstu[i].namen2==0{printf_one_stui;/*显示查到的记录*/sn1++;}ifsn1==0{printf\n此学生不存在!\n查询下一个学生1是2否[]\b\b;/*未查到相应记录,询问是否继续查找*/scanf%dc;switchc{case1:search_name;break;/*继续按此方式查找*/default:printf\n继续查询...;}}else{printf\n查询结束.Pressanykeytocontinue...;getch;}}/*按宿舍查找学生信息*/voidsearch_room{inticrsr1=0;printf\n输入要查询学生的宿舍号码:;scanf%dr;fori=0;istu__x;i++ifstu[i].room==r{printf_one_stui;/*显示查到的记录*/sr1++;}ifsr1==0{printf\n这个宿舍号码不存在!\n查询下一个宿舍号码1是2否[]\b\b;/*未查到相应记录,询问是否继续查找*/scanf%dc;switchc{case1:search_room;break;/*继续按此方式查找*/default:printf\n继续查询...;}}else{printf\n查询结束.Pressanykeytocontinue...;getch;}}/*按学号查找学生成绩*/voidsearch_score{intias1;charn3
[9];printf\n输入要查询成绩的学生的学号:;scanf%sn3;printf_onestu_scoren3;/*显示查到的记录*/printf\n查询结束.\n是否查询其他学生1是2否[]\b\b;/*询问是否继续查找*/scanf%ds1;switchs1{case1:search_score;break;/*继续按此方式查找*/default:printf\n查询结束.Pressanykeytocontinue...;getch;}}/*显示一个学生的所有分数*/voidprintf_onestu_scorecharsnum[]{intijk=0a1;floatgp=0;forj=0;jstu__x;j++ifstrcmpsnumstu[j].num==0{printf\n学号:%s姓名:%sstu[j].numstu[j].name;printf\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^;break;}ifj==stu__xprintf\n此学生不存在!;else{fori=0;iscore__x;i++ifstrcmpscore[i].numsnum==0/*显示该学生的所有成绩*/{printf_one_scorei;k++;gp+=score[i].getpoint;}printf\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^;printf\n共修:%d科实得总学分:%-
5.1f\nkgp;printf\n此学生成绩显示完毕.Pressanykeytocontinue...;getch;}}/*删除*/voiddelete_one{intijsd1=0sd2sd3;charc
[9];printf\n你要删除哪位同学的信息记录\n请输入他的学号:;scanf%sc;/*输入要删除的学号*/fori=0;istu__x;i++ifstrcmpstu[i].numc==0break;ifi==stu__x/*未找到学生*/printf\n未找到该学生!;else/*找到学生*/{printf_one_stui;/*显示学生基本信息记录*/printf\n要删除这些信息么1是2否并返回[]\b\b;scanf%dsd2;/*删除确认?*/ifsd2==1/*确认*/{stu[i]=stu[stu__x-1];/*删除该学生基本信息*/stu__x--;printf\n删除学生信息成功!\n;s__e;/*调用保存学生基本信息函数*/forj=0;jscore__x;j++/*删除该学生的成绩信息*/ifstrcmpscore[j].numc==0{delete_one_scorej;/*调用删除成绩函数*/sd1++;}ifsd1==0printf\n该学生无成绩记录.;/*该学生无成绩记录*/printf\n删除信息成功.;}}printf\n删除其他学生的成绩1是2否[]\b\b;/*是否继续删除*/scanf%dsd3;switchsd3{case1:delete_one;break;/*继续删除*/default:printf\n查询学生的号码结束.Pressanykeytocontinue...;getch;menu;}}/*********排序*********/voidorder{intc;printf排序中...\n按什么排序:1课程编号2课程[]\b\b;scanf%dc;/*指定按什么排序*/switchc{case1:order_course_num;printf\n排序结束.Pressanykeytocontinue...;break;/*选择按课程编号排序*/case2:order_course;printf\n排序结束.Pressanykeytocontinue...;break;/*选择按课程名称排序*/default:printf\n输入错误.请重新输入1~2!\n;order;}getch;menu;}/*按课程编号排序*/voidorder_course_num{intijk=0;charcnum
[10];structstuscoresco;printf\n输入要排序的课程编号:;scanf%scnum;/*输入要排序的课程编号*/fori=0;iscore__x;i++ifstrcmpscore[i].coursenumcnum==0/*查找对应信息并保存在score1[M]中*/{score1[k]=score[i];/*score1[M]为全局数组*/k++;}fori=0;ik-1;i++forj=i+1;jk;j++{ifscore1[i].comscorescore1[j].comscore/*升序排序*/{sco=score1[i];score1[i]=score1[j];score1[j]=sco;}}order_printfk;/*调用显示函数*/printf\n排序结束Pressanykeytocontinue...;getch;}/*按课程名称排序*/voidorder_course{intijk=0;charc
[15];structstuscoresco;printf\n输入要排序的课程名称:;scanf%sc;/*输入要排序的课程名称*/fori=0;iscore__x;i++ifstrcmpscore[i].coursec==0/*查找对应信息并保存在score1[M]中*/{score1[k]=score[i];k++;}fori=0;ik-1;i++forj=i+1;jk;j++{ifscore1[i].comscorescore1[j].comscore/*升序排序*/{sco=score1[i];score1[i]=score1[j];score1[j]=sco;}}order_printfk;/*调用显示函数*/printf\n排序结束.Pressanykeytocontinue...;getch;}/*排序显示*/voidorder_printfintk{intw1ic;do{printf\n选择排序的顺序:\n1升序2降序[]\b\b;/*选择显示顺序*/scanf%dc;ifc=1c=2{w1=0;switchc{case1:fori=0;ik;i++/*选择升序显示*/printf\n学号:%s课程编号:%-10s课程名称:%-15s综合成绩:%5d实得学分:%fscore1[i].numscore1[i].coursenumscore1[i].coursescore1[i].comscorescore1[i].getpoint;break;case2:fori=k-1;i=0;i--/*选择降序显示*/printf\n学号:%s课程编号:%-10s课程名称:%-15s综合成绩:%5d实得学分:%fscore1[i].numscore1[i].coursenumscore1[i].coursescore1[i].comscorescore1[i].getpoint;break;}printf\nPressanykeytocontinue...;getch;}else{w1=1;printf\n输入错误请重新输入1~2!;}}whilew1==1;printf\n排序结束.Pressanykeytocontinue...;getch;}。