学生证管理系统C语言技术交底大全报告.doc

上传人:小飞机 文档编号:5013458 上传时间:2023-05-29 格式:DOC 页数:33 大小:684.50KB
返回 下载 相关 举报
学生证管理系统C语言技术交底大全报告.doc_第1页
第1页 / 共33页
学生证管理系统C语言技术交底大全报告.doc_第2页
第2页 / 共33页
学生证管理系统C语言技术交底大全报告.doc_第3页
第3页 / 共33页
学生证管理系统C语言技术交底大全报告.doc_第4页
第4页 / 共33页
学生证管理系统C语言技术交底大全报告.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《学生证管理系统C语言技术交底大全报告.doc》由会员分享,可在线阅读,更多相关《学生证管理系统C语言技术交底大全报告.doc(33页珍藏版)》请在三一办公上搜索。

1、C语言课程设计报告学 院:计算机学院专 业:网络工程题 目:学生证管理系统班序号 :19313126学 号:姓 名: 清华2013年12月31日报告目录一、 实习容要求3二、需求分析 3三、总体设计3四、设计简介44.0头文件 44.1主函数54.2子函数菜单54.3子函数添加54.4子函数修改104.5子函数浏览134.6子函数查询144.7子函数统计184.8 子函数删除23五、上机操作255.1系统说明255.2 系统测试25六、总结 _31一、实习容要求1、用C语言编写一个学生证管理系统,该系统具有以下功能:1录入某位学生的学生证信息;2给定学号,显示某位学生的学生证信息;3给定某个班

2、级的班号,显示该班所有学生的学生证信息;4给定某位学生的学号,修改该学生的学生证信息;5给定某位学生的学号,删除该学生的学生证信息;6提供一些统计各类信息的功能;7提供浏览所有学生的学生证信息的功能。2、输入要求应用程序运行后,在屏幕上显示一个菜单;用户可以根据要求,选定相应的操作工程;进入某个操作后,根据应用程序的提示,从键盘输入相应的信息。3、输出要求1应用程序运行后,要在屏幕上显示一个菜单;2要求用户输入数据时,给出清晰、明确的提示信息,包括输入的数据容、格式及完毕式等。二、需求分析学生证信息采用文件存储,因而要提供问价的输入/输出操作;要根据给定的学号或班号进展相应操作,要提供查找操作

3、;实现一些统计给雷信息的功能要提供统计操作;另外,还要提供键盘式选择菜单以实现功能选择。三、总体设计这个程序被设计成数据输入模块、数据查找模块、数据子函数删除和数据子函数统计。即:添加,修改、查询,浏览、删除,统计等,如下列图所示:四、设计简介4.0头文件#include#include#include#define N 100struct Class char ame20;/班名 char o20;/班号;struct Student/学生 char Sname20;/XX char Sex10;/性别 char Sno20;/学号 int Age;/年龄 struct Class CInf

4、o;/嵌套构造体,表示班级信息StuInfoN; /构造体数组,用作读取和存放临时数据4.1 主函数void main() menu(); getchar();4.2子函数菜单void menu() int chose; int right; do printf(ntttt学生证管理系统n); printf(*n); printf(tttt1.添加学生信息);printf(ntttt2.修改学生信息);printf(ntttt3.全部学生信息);printf(ntttt4.查询学生信息); printf(ntttt5.统计学生信息); printf(ntttt6.删除学生信息);printf(

5、ntttt7.退出系统n); printf(*); printf(请输入数字选择:); scanf(%d,&chose); if(chose8) right=1; printf(输入错误,请重新输入!n); getchar(); else right=0;while(right=1);switch(chose)case 1:add(); break; /子函数添加case 2:modify(); break; /子函数修改case 3:browse(); break; /子函数浏览case 4:quiry(); break; /子函数查询case 5:stastic(); break; /子函

6、数统计case 6:Delete(); break; /子函数删除case 7:exit(0); /退出 4.3子函数添加首先要判断文件StuInfo.txt是否存在,如果存在就以读写r+的式翻开,如果不存在,就以写w的式创立文件StuInfo.txt。输入格式要求:性别为男或女,学号为11位且不能重复,年龄在0-100之间,班级号为6位,程序提供了完善的验证机制,输入错误时将提示重新输入直到正确为止。此外,如果以读写的式翻开,还要判断记录数numN是否成立,因为构造体数组的大小为N,当num=N时,表示已满,不能再存储数据,需要修改N的值。void add() int num; int i;

7、 int age; char sno20; char sex20; char o20; int right; FILE*fp; if(fp=fopen(StuInfo.txt,r+)=NULL) if(fp=fopen(StuInfo.txt,w)=NULL) printf(n文件不存在且创立失败,返回!n); menu(); printf(n请按照提示输入学生信息:nn); printf(XX:); scanf(%s,&StuInfo0.Sname); do printf(n性别男或女:); scanf(%s,sex); if(strcmp(sex,男)!=0)&(strcmp(sex,女)

8、!=0) printf(输入错误,请输入男或女!n);right=1;getchar(); else right=0; while(right=1); strcpy(StuInfo0.Sex,sex); do printf(n学号11位:); scanf(%s,sno); if(strlen(sno)!=11) printf(输入错误,学号长度应为11位数!n);right=1;getchar(); else right=0; while(right=1); strcpy(StuInfo0.Sno,sno); do printf(n年龄:); scanf(%d,&age); if(age100

9、) printf(年龄应在0-100之间,请重新输入年龄!n);right=1;getchar(); else right=0; while(right=1); StuInfo0.Age=age; do printf(n班号6位:); scanf(%s,o); if(strlen(o)!=6) printf(输入错误,班号长度应为6位数!n);right=1;getchar(); else right=0; while(right=1); strcpy(StuInfo0.CInfo.o,o); printf(n班名:); scanf(%s,&StuInfo0.CInfo.ame); fprin

10、tf(fp,n%st%st%st%dt%st%s,StuInfo0.Sname,StuInfo0.Sex,StuInfo0.Sno,StuInfo0.Age,StuInfo0.CInfo.o,StuInfo0.CInfo.ame); fclose(fp); printf(n保存成功!n); printf(n请按enter键返回主菜单!n); getchar(); getchar(); menu(); /以上的输入是以写的式输入,下面是以读写的式输入数据 for(i=0;!feof(fp);i+) fscanf(fp,%s%s%s%d%s%s,&StuInfoi.Sname,&StuInfoi.

11、Sex,&StuInfoi.Sno,&StuInfoi.Age,&StuInfoi.CInfo.o,&StuInfoi.CInfo.ame); num=i; /记录数 if(num=N) printf(n保存记录数超出构造体数组数的大小,请先修改N的值!n);printf(n请按enter键返回主菜单!n); getchar();getchar();menu(); printf(n请按照提示输入学生信息:nn); printf(XX:); scanf(%s,&StuInfonum.Sname); do printf(n性别男或女:); scanf(%s,sex); if(strcmp(sex,

12、男)!=0)&(strcmp(sex,女)!=0) printf(输入错误,请输入男或女!n);right=1;getchar(); else right=0; while(right=1); strcpy(StuInfonum.Sex,sex); do printf(n学号11位:); scanf(%s,sno); if(strlen(sno)!=11) printf(输入错误,学号长度应为11位数!n);right=1;getchar(); else right=0; for(i=0;inum;i+) if(strcmp(sno,StuInfoi.Sno)=0) printf(该学号已经存

13、在,请重新输入!n); right=1; getchar(); while(right=1); strcpy(StuInfonum.Sno,sno); do printf(n年龄:); scanf(%d,&age); if(age100) printf(年龄应在0-100之间,请重新输入年龄!n);right=1;getchar(); else right=0; while(right=1); StuInfonum.Age=age; do printf(n班号6位:); scanf(%s,o); if(strlen(o)!=6) printf(输入错误,班号长度应为6位数!n);right=1

14、;getchar(); else right=0; while(right=1); strcpy(StuInfonum.CInfo.o,o); printf(n班名:); scanf(%s,&StuInfonum.CInfo.ame); /把该记录写到文件末尾fprintf(fp,n%st%st%st%dt%st%s,StuInfonum.Sname,StuInfonum.Sex,StuInfonum.Sno,StuInfonum.Age,StuInfonum.CInfo.o,StuInfonum.CInfo.ame); fclose(fp); printf(n保存成功!n); printf(

15、n请按enter键返回主菜单!n); getchar(); getchar(); menu();4.4子函数修改先判断文件StuInfo.txt以读r的方式能否翻开,不能就返回,可以就读入记录;然后输入学号查找记录,没找到就返回,找到就按照提示修改该记录,与输入模块一样,输入的格式要求:性别为男或女,学号为11位且不能与除当前修改的记录的学号外的记录的学号重复,年龄在0-100之间,班级号为6位,程序提供了完善的验证机制,输入错误时将提示重新输入直到正确为止。输入完成后,再以写w的方式创立文件,不能创立就返回,可以就将构造体数组中的所有记录保存到文件中,这与添加稍有差异,最后返回主菜单。voi

16、d modify() int num; int i; int right; int age; char sex20; char o20; char sno20; int found=-1; char StuNO20; FILE*fpr,*fpw; if(fpr=fopen(StuInfo.txt,r)=NULL) printf(文件打不开!n); menu(); for(i=0;!feof(fpr);i+) / fscanf(fpr,%s%s%s%d%s%s,&StuInfoi.Sname,&StuInfoi.Sex,&StuInfoi.Sno,&StuInfoi.Age,&StuInfoi.

17、CInfo.o,&StuInfoi.CInfo.ame); num=i; fclose(fpr); printf(n请输入学号选择要修改的记录:); scanf(%s,StuNO); for(i=0;inum;i+) if(strcmp(StuNO,StuInfoi.Sno)=0) found=i; printf(n你要修改的学生信息为:nn);printf(XX 性别 学号年龄 班号 班名n); printf(%st%st%st%dt%st%sn,StuInfoi.Sname,StuInfoi.Sex,StuInfoi.Sno,StuInfoi.Age,StuInfoi.CInfo.o,St

18、uInfoi.CInfo.ame); printf(n请按照提示输入学生的新信息:n); printf(XX:);scanf(%s,&StuInfofound.Sname); do printf(n性别男或女:); scanf(%s,sex); if(strcmp(sex,男)!=0)&(strcmp(sex,女)!=0) printf(输入错误,请输入男或女!n);right=1;getchar(); else right=0; while(right=1); strcpy(StuInfofound.Sex,sex); do printf(n学号11位:); scanf(%s,sno); i

19、f(strlen(sno)!=11) printf(输入错误,学号长度应为11位数!n);right=1;getchar(); else right=0; for(i=0;inum;i+) if(i!=found)&(strcmp(sno,StuInfoi.Sno)=0) printf(该学号已经存在,请重新输入!n); right=1; getchar(); while(right=1); strcpy(StuInfofound.Sno,sno); do printf(n年龄:); scanf(%d,&age); if(age100) printf(年龄应在0-100之间,请重新输入年龄!n

20、);right=1;getchar(); else right=0; while(right=1); StuInfofound.Age=age; do printf(n班号6位:); scanf(%s,o); if(strlen(o)!=6) printf(输入错误,班号长度应为6位数!n);right=1;getchar(); else right=0; while(right=1); strcpy(StuInfofound.CInfo.o,o); printf(n班名:); scanf(%s,&StuInfofound.CInfo.ame); if(fpw=fopen(StuInfo.tx

21、t,w)=NULL) printf(文件打不开,保存失败!n); menu(); for(i=0;inum;i+) /保存文件 fprintf(fpw,n%st%st%st%dt%st%s,StuInfoi.Sname,StuInfoi.Sex,StuInfoi.Sno,StuInfoi.Age,StuInfoi.CInfo.o,StuInfoi.CInfo.ame); fclose(fpw); printf(n修改成功!n); printf(n请按enter键返回主菜单!n); getchar(); getchar(); menu(); if(found0) printf(n没有找到该学号的

22、记录:n); printf(n请按enter键返回主菜单!n); getchar(); getchar(); menu(); 4.5 子函数浏览void browse() int num; int i; FILE*fp; if(fp=fopen(StuInfo.txt,r)=NULL) printf(文件打不开!n); menu(); for(i=0;!feof(fp);i+) fscanf(fp,%s%s%s%d%s%s,&StuInfoi.Sname,&StuInfoi.Sex,&StuInfoi.Sno,&StuInfoi.Age,&StuInfoi.CInfo.o,&StuInfoi.

23、CInfo.ame); fclose(fp); num=i; printf(n已添加%d个学生信息nn,num); printf(XX 性别 学号 年龄 班号 班名n); for(i=0;inum;i+) printf(%st%st%st%dt%s%sn,StuInfoi.Sname,StuInfoi.Sex,StuInfoi.Sno,StuInfoi.Age,StuInfoi.CInfo.o,StuInfoi.CInfo.ame); printf(n请按enter键返回主菜单!n); getchar(); getchar(); menu();4.6 子函数查询void quiry() int

24、 chose; int right; do printf(n1-按学号查询t2-按XX查询t3-某班学生信息t4-返回n); printf(n请输入数字选择:); scanf(%d,&chose); if(chose4) right=1; getchar(); else right=0;while(right=1);switch(chose) case 1:bySno();break;case 2:bySname();break;case 3:byo();break;case 4:menu(); 4.6.1 根据学号查找某学生的学生证信息:void bySno() int found=-1;

25、int num; int i; char no20; FILE*fp; if(fp=fopen(StuInfo.txt,r)=NULL) printf(文件打不开!n); menu(); for(i=0;!feof(fp);i+) fscanf(fp,%s%s%s%d%s%s,&StuInfoi.Sname,&StuInfoi.Sex,&StuInfoi.Sno,&StuInfoi.Age,&StuInfoi.CInfo.o,&StuInfoi.CInfo.ame); num=i; fclose(fp); printf(n请输入学生学号:); scanf(%s,no); for(i=0;inu

26、m;i+) if(strcmp(no,StuInfoi.Sno)=0) found=i;printf(n该学生的信息为:nn);printf(XX 性别 学号 年龄 班号 班名n); printf(%st%st%st%dt%st%sn,StuInfofound.Sname,StuInfofound.Sex,StuInfofound.Sno,StuInfofound.Age,StuInfofound.CInfo.o,StuInfofound.CInfo.ame); if(found0) printf(n没有找到该班号的记录!n);printf(n请按enter键返回上级菜单!n); getcha

27、r(); getchar(); quiry();4.6.2 根据XX查找某学生的学生证信息:void bySname() int found=-1; int num; int i; char name20; FILE*fp; if(fp=fopen(StuInfo.txt,r)=NULL) printf(文件打不开!n); menu(); for(i=0;!feof(fp);i+) fscanf(fp,%s%s%s%d%s%s,&StuInfoi.Sname,&StuInfoi.Sex,&StuInfoi.Sno,&StuInfoi.Age,&StuInfoi.CInfo.o,&StuInfo

28、i.CInfo.ame); num=i; fclose(fp); printf(n请输入学生XX:); scanf(%s,name); for(i=0;inum;i+) if(strcmp(name,StuInfoi.Sname)=0) found=i; printf(n该学生的信息为:nn);printf(XX性别学号年龄班号班名n); printf(%st%st%st%dt%st%sn,StuInfofound.Sname,StuInfofound.Sex,StuInfofound.Sno,StuInfofound.Age,StuInfofound.CInfo.o,StuInfofound

29、.CInfo.ame); if(found0) printf(n没有找到该班号的记录!n);printf(n请按enter键返回上级菜单!n); getchar(); getchar(); quiry();4.6.3 根据班号查询某个班级所有学生的学生证信息:void byo() int found=-1; int num; int i; char ClaNO20; FILE*fp; if(fp=fopen(StuInfo.txt,r)=NULL) printf(文件打不开!n); menu(); for(i=0;!feof(fp);i+) fscanf(fp,%s%s%s%d%s%s,&St

30、uInfoi.Sname,&StuInfoi.Sex,&StuInfoi.Sno,&StuInfoi.Age,&StuInfoi.CInfo.o,&StuInfoi.CInfo.ame); num=i; fclose(fp); printf(n请输入班号:); scanf(%s,ClaNO); printf(n该班级的学生信息为:nn); printf(XX 性别 学号 年龄 班号 班名n); for(i=0;inum;i+) if(strcmp(ClaNO,StuInfoi.CInfo.o)=0) found=i; printf(%st%st%st%dt%st%sn,StuInfofound

31、.Sname,StuInfofound.Sex,StuInfofound.Sno,StuInfofound.Age,StuInfofound.CInfo.o,StuInfofound.CInfo.ame); if(found0) /found小于0,说明不存在班号的学生记录 printf(n没有找到该班号的记录!n);printf(n请按enter键返回上级菜单!n); getchar(); getchar(); quiry();4.7 子函数统计该模块实现了根本的统计功能,包括分别统计男女生的人数、平均年龄,以及全体学生的人数和根本年龄;void stastic() int chose; i

32、nt right; do printf(n1-全体男生t2-全体女生t3-全体学生t4-返回n); printf(n请输入数字选择:); scanf(%d,&chose); if(chose4) right=1; getchar(); else right=0;while(right=1);switch(chose) case 1:Male(); /男生的统计信息printf(n请按enter键返回上级菜单!n); getchar(); getchar(); stastic();break;case 2:Female(); /女生的统计信息printf(n请按enter键返回上级菜单!n);

33、getchar();getchar(); stastic();break;case 3:StuMsg(); /全体学生的统计信息printf(n请按enter键返回上级菜单!n); getchar();getchar(); stastic();break;case 4:menu(); 4.7.1统计男生信息子模块void Male() int num; /人数 float mg; /平均年龄 num=MaleNum(); mg=MaleMG(); printf(n男生总人数为:%dn平均年龄为:%fn,num,mg);4.7.1.1 返回男生人数子函数int MaleNum() int num; int count=0; int i; FILE*fp; if(fp=fopen(StuInfo.txt,r

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号