资源描述:
《学生证管理系统》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
C语言课程设计报告学院:地球科学学院专业:资源环境与城乡规划管理题目:学生证管理系统班号:XXXXXXXX姓名:学号:XXXXXXXX指导教师:报告目录ー、课程设计目的3二、实习内容及要求3三、需求分析3四、总体分析3五、详细设计45.0头文件及结构体4
15.1主函数45.3公共函数65.4添加模块105.5修改模块105.6浏览模块115.7查询模块115.7.1按学号查询125.7.2按名字查询135.7.3按班级查询145.8统计模块145.8.1男生信息155.8.2女生信息176.8.3全体学生信息185.9删除模块19六、上机操作207.1系统说明206.2系统测试20七、总结25ハ、源代码25ー、课程设计目的通过实践,学会编制结构清晰、风格良好、数据结构适当的C语言程序,加深对C语言基础知识的理解和掌握,进ー步巩固C语言编程实践能力,锻炼思维逻辑和解决综合性实际问题的能力。二、实习内容及要求1、用c语言编写ー个学生证管理系统,该系统具有以下功能:
2(1)录入某位学生的学生证信息;(2)给定学号,显示某位学生的学生证信息;(3)给定某个班级的班号,显示该班所有学生的学生证信息;(4)给定某位学生的学号,修改该学生的学生证信息;(5)给定某位学生的学号,删除该学生的学生证信息;(6)提供一些统计各类信息的功能;(7)提供浏览所有学生的学生证信息的功能。2、输入要求应用程序运行后,在屏幕上显示一个菜单;用户可以根据要求,选定相应的操作项目;进入某个操作后,根据应用程序的提示,从键盘输入相应的信息。3,输出要求(1)应用程序运行后,要在屏幕上显示ー个菜单;(2)要求用户输入数据时,给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。三、需求分析根据题目要求,学生信息要从文本文件中存取,所以本程序应该提供读写文件,显示、统计、查询、修改记录,保存文件等操作,此外,还应该提供键盘式选择菜单实现功能。四、总体设计根据需求分析,可以把这个系统的设计分为添加、修改、查询、浏览、统计、删除六大模块,其中查询模块可以分为三个子模块,统计模块可以分为三个子模块,子模块下面还有子函数;系统功能模块图如下所示:
3五、详细设计5.0头文件及结构体#include#include#include#defineN100structClass(charCname[20];charCno[20];1■〃班级〃班名〃班号LstructStudent(charSname[20];charSex[10J;charSno[20];intAge;structClassCInfo;}StuInfo[N];〃学生〃姓名〃性别〃学号〃年龄〃嵌套结构体,表示班级信息〃结构体数组,用作读取和存放临时数据5.1主函数voidmain()(〃菜单menu();getchar();}
4(主菜单)5.2菜单模块voidmenu()(intchose;intright;do{system(HclsM);printf("
5\t\t\t\t学生证管理系统
6");printf("");printf("菜单:\tl-添加ゝt2一修改't3ー浏览全部\t4ー查询't5ー统计ゝt6ー删除ゝt7ー退出
7");printf("");primf("请输入数字选择:");scanf("%dH,&chose);if(chose<1llchose>8){right=l;printf("输入错误,请重新输入!
8");getchar();}elseright=O;}while(right==l);switch(chose)
9case1:add();break;//添加模块case2:modify();break;〃修改模块case3:browse();break;〃浏览模块case4:quiry();break;〃查询模块case5:stastic();break;〃统计模块case6:Delete();break;//删除模块case7:exit(0);〃退出5.3公共函数5.3.1返回主菜单函数voidBackMenu()(printf(H
10请按enter键返回主菜单!
11”);getchar();getchar();menu();)5.3.2加载文件函数以读(r)的方式打开Stulnfo.txt文件,若不能打开,表示文件不存在,返回0;若文件存在,就读入所有记录到结构体数组中,并返回记录数;intLoadFileO(inti;FILE*fp;if((fp=fopen(,'StuInfo.txtM;,r,,))==NULL)(return0;〃返回〇,表示文件不存在)for(i=0;!feof(fp);i++){fscanf(fp,M%s%s%s%d%s%sM,&StuInfo[i].Sname,&StuInfb[i].Sex,&StuInfo[i].Sno,&StuInfd[i].Age,&StuInfo[i].CInfo.Cno,&StuInfo[i].CInfo.Cname);)fclose(fp);returni;〃返回记录条数)5.3.3输入第num+1条记录
12首先要判断记录数num==N是否成立,因为结构体数组的大小为N,当num=N时,表示已满,不能再存储数据,需要修改N的值。若numくN,则按提示输入ー一条记录,输入格式要求:性别为男或女,学号为11位且不能重复,年龄在0T00之间,班级号为6位,程序提供了完善的验证机制,输入错误时将提示重新输入直到正确为止。(开始)voidInput(intnum)Iinti;intage;charsno[20];charsex[20];charcno[20];intright;if(num==N)(printf(”
13保存记录数超出结构体数组数的大小,请先修改N的值
14");BackMenu();)printf("
15请按照提示输入学生信息:
16
17");
18printf("姓名:");scanf("%s",&StuInfo[num].Sname);do(printf("
19性别(男或女):");scanf(H%s,\sex);if((strcmp(sex,"男")!=0)&&(strcmp(sex,"女")!=0))(printf("输入错误,请输入男或女!、バ);right=l;getchar();}elseright=O;}while(right==l);strcpy(StuInfo[num].Sex,sex);do{printf("
20学号(11位):”);scanf("%s",sno);if(strlen(sno)!=l1){printf("输入错误,学号长度应为11位数!'n");right=1;getchar();}elseright=O;for(i=0;i100)printf("年龄应在0-100之间,请重新输入年龄!
21“);right=1;getchar();
22}elseright=O;}while(right==l);StuInfo[num].Age=age;do(printfCXn班号(6位):”);scanf(n%sn,cno);if(strlen(cno)!=6){printf("输入错误,班号长度应为6位数!ゝガ);right=l;getchar();)elseright=O;}while(right==l);strcpy(StuInfo[num].CInfo.Cno,cno);printf("
23班名:");scanf(M%sM,&StuInfb[num].CInfo.Cname);}5.3.4保存文件以写的方式新建文件Stulnfo.txt,然后将结构体数组中的记录写入文件中。voidSaveFile(intnum)〃保存num+l条记录{FILE*fpw;inti;if((fpw=fopen(',StuInfo.txt,,,,,w,'))==NULL)(printf("文件打不开,保存失败いn”);BackMenu();}for(i=0;i<=num;i++)(fprintf(fpw;'
24%s\t%s\t%s\t%d\t%s\t%s,',StuInfo[i].Sname,StuInfo[i].Sex,StuInfo[i].Sno,StuInfo[i].Age,StuInfo[i].CInfo.Cno,StuInfo[i].CInfo.Cname);}fclose(fpw);printf(M
25保存成功!
26n);
271.14添加模块voidadd()(intnum;system(,'clsn);num=LoadFile();Input(num);SaveFile(num);BackMenu();)5.5修改模块与输入模块ー样,输入的格式要求:性别为男或女,学号为11位且不能与除当前修改的记录的学号外的记录的学号重复,年龄在0T00之间,班级号为6位,程序提供了完善的验证机制,输入错误时将提示重新输入直到正确为止,输入完成后,保存文件。voidmodifyO{intnum;inti;intright;intfound=-1;charStuNO[20];num=LoadFile();system(Hcls");if(num==0)(printf("文件为空!");BackMenu();)printf("
28请输入学号选择要修改的记录:");scanf("%s",StuNO);for(i=0;i29你要修改的学生信息为:
30
31");printf("姓名性别学号年龄读取文件班号班名
32");printf(n%s\t%s\t%s\t%d\t%s\t%s
33H,StuInfo[i].Sname,StuInfo[i].Sex,StuInfo[i].Sno,StuInfo[i].Age,StuInfo[i].CInfo.Cno,StuInfo[i].CInfo.Cname);
34})if(found<0)(printf(H
35没有找到该学号的记录NT);BackMenu();)Input(found);SaveFile(num-l);BackMenu();)5.5浏览模块voidbrowse()〃显示所有学生信息(intnum;inti;num=LoadFile();system(,'clsM);if(num==0)(printf("文件为空!”);BackMenu();)printf(M
36已添加%d个学生信息、n
37”,num);printf("姓名性别学号年龄班号班名Xn”);for(i=0;i38n,StuInfo[i].Sname,StuInfo[i].Sex,StuInfo[i].Sno,StuInfo[i].Age,StuInfo[i].CInfo.Cno,StuInfo[i].CInfo.Cname);}BackMenu();)5.6查询模块voidquiry()(intchose;intright;do{system("cls");printf(”
39\tl-按学号查询't2-按姓名查询\t3.某班学生信息't4.返回
40”);
41printf(”
42请输入数字选择ア);scanf(H%d';&chose);if(chose<1llchose>4){right=l;getchar();}elseright=O;}while(right==l);switch(chose){case1:system(Mclsn);bySno();break;case2:system(,'cls,');bySname();break;case3:system("cls");byCno();break;case4:menu();}}5.6.0返回查询子菜单voidBackQuiryO(printf("
43请按enter键返回上级菜单!
44");getchar();getchar();quiry();)5.6.1根据学号查找某学生的学生证信息:voidbySno()(intfound=-1;intnum;inti;charno[20];num=LoadFile();if(num==0){printf("文件为空!ッ;BackQuiryO;)printf("
45请输入学生学号:");scanf(n%sM,no);
46for(i=0;i47
48");printf("姓名性别学号年龄班号班名、ガ);printf(H%s\t%s\t%s\t%d\t%s%s
49,',StuInfo[found].Sname,StuInfo[found].Sex,StuInfo[found].Sno,StuInfo[found].Age,StuInfo[found].CInfo.Cno,StuInfo[found].CInfo.Cname);if(found<0)printf(u
50没有找到该班号的记录!
51");BackQuiryO;}5.6.2根据姓名查找某学生的学生证信息:voidbySname()(intfound=-l;intnum;inti;charname[20];num=LoadFile();if(num==0)printf("文件为空!");1BackQuiryO;)printf("
52请输入学生姓名:");scanf("%s",name);printf("
53叫该姓名的学生信息为:
54
55");printf("姓名性别学号年龄班号for(i=0;i56,,,StuInfo[found].Sname,StuInfb[found].Sex,StuInfo[fbund].Sno,StuInfo[found].Age,StuInfo[found].CInfo.Cno,StuInfo[found].CInfo.Cname);})if(found<0)printf(u
57没有找到该班号的记录!'n");
58BackQuiryO;5.6.3根据班号查询某个班级所有学生的学生证信息:voidbyCno()(intfound=-1;intnum;inti;charClaNO[20];num=LoadFile();if(num==0)(printf("文件为空!");BackQuiryO;)prinビ("ヽn请输入班号:");scanf("%s",ClaNO);primf(”
59该班级的学生信息为:
60
61”);printf("姓名性别学号年龄班号for(i=0;i62“);found=i;printf(',%s\t%s\t%s\t%d\t%s%s
63,\StuInfo[found].Sname,StuInfo[found].Sex,StuInfo[found].Sno,StuInfo[found].Age,StuInfo[found].CInfo.Cno,StuInfo[found].CInfo.Cname);))if(found<0)printf("
64没有找到该班号的记录!
65");BackQuiryO;5.7统计模块该模块实现了基本的统计功能,包括分别统计男女生的人数、平均年龄,以及全体学生的人数和平均年龄;voidstastic()intchose;intright;do
66printf("
67l•全体男生\t2.全体女生't3.全体学生't4.返回Xn");printf('*
68请输入数字选择:");scanf(M%dM,&chose);if(chose<1llchose>4)输入choseright=l;getchar();}elserighl=O;Male。男生信息}while(right==1);switch(chose){casel:system(“cls");Male();BackStastic();break;case2:system(,,cls");Female();BackStastic();break;case3:system(,,cls',);StuMsg();BackStastic();break;case4:menu();)}5.7.0统计模块的公共函数,返トvoidBackStastic()(printfCAn请按enter键返回上级菜单!山’);getchar();getchar();stastic();}5.7.1统计男生信息子模块voidMale()(intnum;〃人数floatmg;〃平均年龄num=MaleNum();mg=MaleMG();printf("
69男生总人数为:%d
70平均年龄为:%f
71",num,mg);}5.7.1.1返回男生人数子函数(开始う读取文件
72intMaleNum()intnum;intcount=0;inti;num=LoadFile();if(num==O)printf("文件为空!M);BackStastic();)for(i=0;i0)
73mAge/=count;}returnmAge;)5.7.2统计女生信息子模块voidFemale()(intnum;floatmg;num=FemaleNum();mg=FemaleMG();printf("
74女生总人数为:%d
75平均年龄为:%f
76",num,mg);)5.7.2.1返回女生人数子函数intFemaleNum(){intnum;intcount=0;inti;num=LoadFile();if(num==0)(printf("文件为空!");BackStastic();)for(i=0;i77intnum;intcount=0;floatmAge=O;inti;num=LoadFile();if(num==0)(primf("文件为空!り;BackStastic();)for(i=0;i0)(mAge/=count;)returnmAge;}5.7.3全体学生统计信息子模块voidStuMsgO(intnum;floatmg;num=StuNum();mg=MG();printf("
78学生总人数为:%d
79学生平均年龄为:%An”,num,mg);Male();Female();)5.7.3.1返回全体学生的人数子函数intStuNum()[intnum;num=MaleNum()+FemaleNum();
80读取文件returnnum;5.7.3.2返回全体学生的平均年龄子函数floatMG()floatmAge;mAge=(MaleNum()*MaleMG()4-FemaleNum()*FemaleMG())/(MaleNum()+FemaleNum());returnmAge;}6.8删除模块voidDelete(){intnum;inti;intfound=-l;charStuNO[20];system("cls");num=LoadFile();if(num==O)(printf("文件为空!");BackMenu();}printf(H
81请输入学号选择你要删除的记录ゴ);scanf("%s\StuNO);for(i=0;i82你删除的学生信息为:
83
84");printf("姓名性别学号年龄班号班名、n)printf(',%s\t%s\t%s\t%d\t%s%s
85,\StuInfo[found].Sname,StuInfo[found].Sex,StuInfo[found].Sno,StuInfo[found].Age,StuInfo[found].CInfo.Cno,StuInfo[found].CInfo.Cname);if(found86StuInfo[found].Age=StuInfo[found+l].Age;strcpy(StuInfo[found].CInfo.Cno,StuInfo[found+l].CInfo.Cno);strcpy(StuInfo[found].CInfo.Cname,StuInfo[found+l].CInfo.Cname);SaveFile(num-2);)}if(found<0)(printfCAn没有找到该学号的记录到”);BackMenu();)BackMenu();)六、上机操作5.1系统说明本系统存储信息的文本文件名为Stulnfo.txt;由程序自动创建,该文件在程序主目录下,如过该文件已存在,也可以直接打开该文件进行浏览、编辑;D©里国wDebugStudent,cStudent,dspStudentStudent,opt葡StudentriStulnfo,1□1x|文件⑹编辑©格式9)帮助出ヨ伟民方伟琴仙世笑小2007100392622014072地理二班2001477582123014072地理二班2001544875423014071地理一班2558444758621014071地理一班2007100445821014072地理三班5.2系统测试6.2.0主菜单
87学生证管理系统菜单:・添加2一修改3ー浏览全部4ー查询5ー统计6ー删除7一退出请输入数字选择5.2.1浏览数据己添加5个学生信息民方伟琴伟名世尖小仙姓李王書李年龄班号23014072施理二班23014071地理一班21014071地理一班21014072地理三班21014072地理二班子节2001477582120015448754255844475862007100445820071003925□[x请按enter键返回主菜单,6.2.2添加数据c\"C:\Docu>entsandSettrator、桌面、学生证管理系统\Debug\Stud...请按照提示输入学生信息:姓名:高小寒駅讎囁舞或女,性别(男或女):男学号(H位):2007输入宿误,学号长度应为[[位数,学号<1[位):200?[003925该学号己经存在,请重新输入,学号([[位):2007[003926年龄:2[[车舲应在0T00之间,请重新输入年龄,年龄:20班号(6位):02[綸入错误,班号长度应为6位数,班号(6位):让4072班名:地理二班保存成功!请按enter键返回主菜单,
88添加该生信息后浏览结果:1cC'C:\DocuBentsandSettings'Adainistratoエ、桌面、学生证管理系统\Debug\Stud・・・|sE)已添加6个学生信息-,姓名性别学号年龄班号班名李世民男2001477582123014072地理二班主个方な200154487542301407I地理一班茅大伟男255844475862101407I地理一班廣小琴な2007100445821014072地理三班李仙伟S2007100392521014072地理二班高小寒男2007100392620014072:地理ニ班请按enter键返回主菜单?16.2.3修改数据c:*C:\Docu>entsandSettings\Ad*inistrator\^ffi\^£iiE^9^S£\Debug\Stud...请输入学号选择要修改的记录:20071004458你要修改的学生信息为।姓名性别学号年龄班号班名ー黄小琴女2007100445821014072地理三班请按照提示输入学生信息:姓名:高小琴性别(男或女):女学号(11位):20071004458年龄:21班号(6位):014071班名:地理ー班保存成功!请按enter键返回主菜单,修改后的结果c<*C:\Docu>entsand56七ta85\4(1«1£,セ门101ヽ桌面ゝ学生证管理系统\口©1111&\$1遍・・・己添加6个学生信息姓李王吏咼至咼名世尖^^小民方伟琴伟寒学方年龄班号班名2001477582123014072地理二班2001544875423014071地理一班2558444758621014071地理一班2007100445821014071地理一班2007100392521014072地理二班2007100392620014072地理二班
89请按enter键返回主菜单,
90可"二回メ民伟寒另性®^^学号年龄200147758212320071003925212007100392620班号班名014072地理二班014072通理二班014072地理二班cl*C:\Docu>entsand5£1セ1れ8.\ム(1>1£$!m1〇し'桌面ゝ学生证管理系统\»£1)1!8ヽ5セ!Iイ・・.い按学号查询2ー按姓名查询3ー某班学生信息4ー返回请输入数字选择:i.按学号查询:C:'DocuaentsandSettings'Ad>inistrator'桌面'学生证管理系统'Debug'Stud.・.-可X请输入学生学号:20071003925该学生的信息为:姓名性别学号年龄班号班名李仙伟男2007100392521014072地理二班请按enter键返回上級菜单!按姓名査询:バ・C:\Docu>entsandSettings\Ad>inistrator、桌面、学生证管理系统\Debug\Stud...请输入学生姓名:李仙伟叫该姓名的学生信息为:姓名性别学号年龄班号班名ー李仙伟男2007100392521014072地理二班请按enter键返回上级菜单,按班级查询:ct"C:\DocuBentsandSettings\Ad>inistrator、桌面、学生证管理系统\Debug\Stud请输入班号:014072该班级的学生信息为:请按enter键返回上级菜单,
91
92|Ta|xc\*C:\Docu>entsandSettings\Ad>inistrator\桌面、学生证管理系统\Debug\Stud.・.请输入学号选择你要删除的记录:20071003926你删除的学生信息为:筵名性别学号年龄班号班名高小寒男2007100392620014072地理二班保存成功!请按enter键返回主菜单?删除后的结果:い・C:\Docu>entsandSettings\Ad>inist门七〇ハ桌面ヽ学生证管理系统\»ヒ1)1Iハ5セ£己添加5个学生信息名世^仙民方伟琴伟学节年龄班号20014775821230140722001544875423014071255844475862101407120071004458210140712007100392521014072ニーニニ名理理理理理任也也也也也り丸丸丸丸九别性男皇賓请按entei«键返回王菜单,七、总结本次C语言课程设计非常有意义,它锻炼了我们解决实际问题的能力。由于本人对编程感兴趣,在编程方面有一定基础,因此尝试着由自己完成整个系统,在设计的过程里也遇到了很多麻烦,但是通过査询参考书和网络,•个个疑难迎刃而解。通过这次实践课,不只是强化了我们C语言编程的能力,更重要的是使我们学会了一种工作方法,学会了如何规划、组织、设计、实施项目,从整体到局部,从局部又到整体。此外,在设计流程图和编制报告的过程里也学了不少东西,学会了用。fficevisio制作流程图,学会了组织报告等等。
93ハ、源代码#include#include#include#defineN100structClass(charCname[20J;charCno[20];〃班级〃班名〃班号]■>structStudent(charSname[20];charSex[10J;charSno[20];intAge;structClassCInfo;}StuInfo[N];〃函数申明voidmenu();voidadd();voidmodifyO;voidDelete();voidbrowse();voidquiry();voidstastic();〃学生〃姓名〃性别〃学号〃年龄〃嵌套结构体,表示班级信息〃主菜单〃添加模块〃修改模块〃删除模块〃浏览模块〃查询模块〃统计模块voidbySname();voidbySno();voidbyCno();voidStuMsgO;voidFemale();voidMale();intFemaleNum();floatFemaleMG();intMaleNum();floatMaleMG();intStuNum();floatMG();voidBackMenu();voidBackQuiryO;voidBackStastic();intLoadFile();〃按姓名查询,子模块〃按学号查询,子模块〃按班号查询,子模块〃返回全体学生统计信息,子模块〃女生统计信息,子模块〃男生统计信息,子模块〃返回女生人数,子函数〃返回女生平均年龄,子函数〃返回男生人数,子函数〃返回男生平均年龄,子函数〃返回全体学生人数,子函数〃返回全体学生的平均年龄,子函数〃返回主菜单〃返回查询子菜单〃返回统计子菜单〃加载文件voidSaveFile(intnum);〃保存文件
94voidInput(intnum);〃输入第num+1个记录voidmain()(menu();getchar();}voidmenu()〃菜单(intchose;intright;do(system("^cls^,);printf(M
95\t\t\t\t学生证管理系统
96");printf(n");printfC,菜单:\tl・添加ゝt2.修改't3.浏览全部't4.查询't5.统计't6.删除\t7.退出
97“);printf(H*');printf("请输入数字选择:");scanf("%dH,&chose);if(chose7){printf("输入错误,请重新输入!
98");right=1;getchar();}elseright=O;}while(right==l);switch(chose){case1:add();break;case2:modify();break;case3:browse();break;case4:quiry();break;case5:stastic();break;case6:Delete();break;case7:exit(0);}}voidBackMenu()〃返冋主菜单printf(n
99请按enter键返回主菜单!
100");getchar();getchar();menu();}intLoadFileO〃读取文件(inti;FILE*fp;if((fp=fopen(,'StuInfo.txt',;,r',))==NULL)(return0;〃返回0»表示文件不存在)for(i=0;!feof(fp);i++){fscanf(fp,,,%s%s%s%d%s%s',,&StuInfo[i].Sname,&StuInfo[i].Sex,&StuInfo[i].Sno,&StuInfo[i].Age,&StuInfo[i].CInfo.Cno,&StuInfo[i].CInfo.Cname);)fclose(fp);returni;〃返回记录条数}
101voidInput(intnum)〃输入第num+1条记录(inti;intage;charsno[20];charsex[20];charcno[20];intright;if(num==N)(printf(-
102保存记录数超出结构体数组数的大小,请先修改N的值也”);BackMenu();)printf("
103请按照提示输入学生信息:
104
105”);printff姓名:");scanf(M%sM,&StuInfb[num].Sname);do{printf("
106性别(男或女):");scanf("%s",sex);if((strcmp(sex,"男")!=0)&&(strcmp(sex,"女")!=0))printf("输入错误,请输入男或女!
107");right=1;getchar();}elseright=O;}while(right==l);strcpy(StuInfo[num].Sex,sex);do(printf(“ヽn学号(H位):");scanf(n%sM,sno);if(strlen(sno)!=l1){printf("输入错误,学号长度应为11位数!
108");right=l;getchar();}elseright=O;for(i=0;i109");
110right=1;getchar();)}}while(right==l);strcpy(Stu!nfo[num].Sno,sno);do|printf("
111年龄:");scanf(H%d",&age);if(age<=Ollage>100)(printf("年龄应在0-100之间,请重新输入年龄!
112");right=1;getchar();}elseright=O;}while(right==l);StuInfo[num].Age=age;doprintf("
113班号(6位):");scanf('*%s,,,cno);if(strlen(cno)!=6){printf("输入错误,班号长度应为6位数!
114");right=1;getchar();}elseright=O;}while(right==l);strcpy(StuInfo[num].CInfo.Cno,cno);printf(H
115班名:");scanf(w%sM,&StuInfo[num].CInfo.Cname);}voidSaveFile(intnum)〃保存num+1条记录{FILE*fpw;inti;if((fpw=fopen(,,StuInfo.txt',,,,w,,))==NULL)|printf(“文件打不开,保存失败!
116”);BackMenu();)for(i=0;i<=num;i++)〃保存文件
117(fprintf(fpw,M
118%s\t%s\t%s\t%d\t%s\t%sM,StuInfo[i].Sname,StuInfo[i].Sex,StuInfo[i].Sno,StuInfo[i].Age,StuInfo[i].CInfo.Cno,StuInfo[i].CInfo.Cname);}fclose(fpw);printf(”ヽn保存成功!
119H);}voidadd()〃添加学生信息,一次添加一条记录(intnum;systemC^cls");num=LoadFile();Input(num);SaveFile(num);BackMenu();voidmodifyO〃修改学生信息(intnum;inti;intright;intfound=-1;charStuNO[20];num=LoadFile();system("cls");if(num==0)(printf("文件为空!”);BackMenu();)printf(H
120请输入学号选择要修改的记录ゴ);scanf(K%sw,StuNO);for(i=0;i121
122“);printf("姓名性别学号年龄班号班名
123");printf(*'%s%s%s%d%s%s
124,',StuInfo[iJ.Sname,StuInfoliJ.Sex,StuInfo[i].Sno,StuInfo[iJ.Age,StuInfo[i].CInfo.Cno,StuInfo[i].CInfo.Cname);})if(found<0)(printf("
125没有找到该学号的记录!
126”);BackMenu();}Input(found);SaveFile(num-l);BackMenu();}voidbrowse()〃显示所有学生信息intnum;inti;num=LoadFile();system(,'clsH);if(num==O){
127printf("文件为空!M);BackMenu();}printf(M
128已添加%d个学生信息
129
130”,num);printf("姓名性别学号年龄班号班名、ガ);for(i=0;i131",StuInfo[i].Sname,StuInfo[i].Sex,StuInfo[i].Sno,StuInfo[i].Age,StuInfo[i].CInfo.Cno,StuInfo[i].CInfo.Cname);)BackMenu();}voidquiry()(intchose;intright;do(system(nclsH);printf("
132\tl・按学号查询't2.按姓名查询't3.某班学生信息\t4.返回'n");printf("
133请输入数字选择ゴ);scanf(M%d",&chose);if(chose<1llchose>4){right=l;getchar();}elseright=O;}while(right==l);switch(chose){casel:system(,,cls,,);bySno();break;case2:system(Mclsn);bySname();break;case3:system(,,cls,1);byCno();break;case4:menu();}}voidBackQuiryO〃返回查询子菜单printf(n
134请按enter键返回上级菜单!
135");getchar();getchar();quiry();voidbySno()(intfound=-l;intnum;inti;charno[20];num=LoadFile();if(num==0){printf("文件为空!M);BackQuiryO;)printfC'
136请输入学生学号:”);scanf(n%s",no);for(i=0;i137
138”);printf(”姓名性别学号年龄班号班名
139”);printf(”%s%s%s%d%s
140%s
141,',Stulnfo[found].Sname,StuInfo[found].Sex,Stulnfo[found].Sno,StuInfo[foundJ.Age,StuInfo[found].CInfo.Cno,Stu!nfo[found].CInfo.Cname);if(found<0)printf(u
142没有找到该班号的记录!
143");BackQuiryO;voidbySname()intfound=-l;intnum;inti;charname[20];num=LoadFile();if(num==O)(printf("文件为空!M);BackQuiryO;)printf(H
144请输入学生姓名:");scanf(M%s",name);printf(”
145叫该姓名的学生信息为:
146
147”);primf(”姓名性别学号年龄班号班名
148");for(i=0;i149,,,StuInfo[found].Sname,StuInfo[found].Sex,StuInfo[found].Sno,StuInfo[found].Age,StuInfo[found].CInfo.Cno,StuInfo[found].CInfo.Cname);))if(found<0)printf("
150没有找到该班号的记录!
151");BackQuiryO;}voidbyCno()(intfound=-1;intnum;inti;charClaNO[20];num=LoadFile();if(num==0)(printf(”文件为空!M);BackQuiryO;)printf(M
152请输入班号:");scanf(”%s”,ClaNO);prinlf(”
153该班级的学生信息为:
154
155”);printf(”姓名性别学号年龄班号班名Xn");for(i=0;i156'',StuInfo[found].Sname,StuInfo[found].Sex,StuInfo[found].Sno,StuInfo[found].Age,StuInfo[found].CInfo.Cno,StuInfo[found].CInfo.Cname);))if(found<0)printf(H
157没有找到该班号的记录到");BackQuiryO;)voidstastic()(intchose;intright;do{system(,,clsM);printf("
158\tl-全体男生\t2.全体女生't3•全体学生't4•返回
159");printf("
160请输入数字选择:");scanf(M%d'*,&chose);
161if(chose4){right=l;getchar();)elseright=O;}while(right==l);switch(chose){casel:system(,,cls,');Male();BackStastic();break;case2:system(,,cls,');Female();BackStastic();break;case3:system("cls");StuMsg();BackStastic();break;case4:menu();})voidBackStastic()printf(n
162请按enter键返回上级菜单!
163");getchar();getchar();stastic();voidMale()〃男生基本统计信息(intnum;floatmg;num=MaleNum();mg=MaleMG();prinlf("
164男生总人数为:%d
165平均年龄为:%f
166H,num,mg);)intMaleNum()〃男生人数{intnum;intcount=0;inti;num=LoadFile();if(num==0)(printf("文件为空!”);BackStastic();}for(i=0;i167(intnum;intcount=0;floatmAge=0;inti;num=LoadFile();if(num==0)(printf(”文件为空!M);BackStastic();}for(i=0;i0){mAge/=count;)returnmAge;}intFemaleNum()〃女生人数{intnum;intcount=0;inti;num=LoadFile();if(num==O)(printf("文件为空!");BackStastic();)for(i=0;i168平均年龄为:%f
169”,num,mg);floatFemaleMGO〃女生平均年龄(intnum;intcount=0;floatmAge=O;inti;num=LoadFile();if(num==0){printf("文件为空!”);BackStastic();)for(i=0;i170mAge+=StuInfo[i].Age;)}if(count>0){mAge/=count;)returnmAge;)voidStuMsgO〃全体学生基本统计信息{intnum;floatmg;num=StuNum();mg=MG();primf("
171学生总人数为:%d
172学生平均年龄为:%f
173",num,mg);Male();Female();)intStuNum()〃全体学生人数(intnum;num=MaleNum()+FemaleNum();returnnum;floatMG()〃全体学生平均年龄(floatmAge;mAge=(MaleNum()*MaleMG()+FemaleNum()*FemaleMG())/(MaleNum()+FemaleNum());returnmAge;}voidDelete(){intnum;inti;intfound=-1;charStuNO[20];system(nclsM);num=LoadFile();if(num==0)(printf("文件为空!”);BackMenu();}printf(”
174请输入学号选择你要删除的记录ゴ);scanf(H%sM,StuNO);for(i=0;i175你删除的学生信息为ハn
176”);printf(”姓名性别学号年龄班号班名Xn”);printf(M%s\t%s\t%s\t%d\t%s\t%s
177,,,StuInfo[fdund].Sname,StuInfd[found].Sex,StuInfo[found].Sno,StuInfo[fbund].Age,StuInfo[found].CInfo.Cno,StuInfo[found].CInfo.Cname);if(found178SaveFile(num-2);)}if(found<0)(printf(、没有找到该学号的记录ヘガ);BackMenu();)BackMenu();