C语言课程设计实验报告-学生信息管理系统.rtf
C报告人:09114115 孟凡超 指导老师:姜 林 报告日期:2009 年 12 月 26 日 语言程序设计实验报告C 语言程序设计实验报告2C语言课程设计实验报告1.设计目的:学生信息管理系统设计学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail 等。试设计一学生信息管理系统,使之能提供以下功能:1.系统以菜单方式工作2.学生信息录入功能-输入3.学生信息浏览功能-输出4.查询、排序功能-算法按学号查询按姓名查询5.学生信息的删除与修改(可选项)2.总体设计:程序设计组成框图主菜单学生信息录入学生信息浏览信息查询学分查询姓名查询信息编辑信息添加信息删除信息编辑信息添加信息删除C 语言程序设计实验报告3流程图case 4case 3case 2case 1结束N调用writeinfo()YFileopen()清屏判断 n0?n=1pr()输入选择 ch调用viewinfo()N=0调用pr2()ch开始Filesave()C 语言程序设计实验报告43.详细设计:1函数入口说明pr()输出主菜单pr2()输出检索菜单界面fileopen()文件操作:打开filesave()文件操作:保存editname(int n)编辑子菜单:对姓名编辑editage(int n)编辑子菜单:对年龄编辑editsex(int n)编辑子菜单:对性别编辑editbir(int n)编辑子菜单:对出生年月编辑editadd(int n)编辑子菜单:对住址编辑edittel(int n)编辑子菜单:对电话进行编辑editemail(int n)编辑子菜单:对电子邮件地址编辑last(int n)显示翻页致末尾的信息edit(int n)信息编辑函数del(int n)删除信息的函数editpr(int n)输出编辑界面jsid()检索:按学号jsname()检索:按姓名writeinfo()录入、添加信息viewinfo()学生信息查看main()主函数2调用关系 3参数说明 editname(int n)、editage(int n)、editsex(int n)、editbir(int n)、editadd(int n)、edittel(int n)、editemail(int n)、last(int n)、edit(int n)、del(int n)、editpr(int n)函数中的 n 都为检索中确定的学生数组下标。editpr(int n)editpr(int n)main()fileopen()filesave()pr()writeinfo()viewinfo()pr2()jsname()jsid()edit(int n)del(int n)edit(int n)(同上)del(int n)editsex(int n)editname(int n)editbir(int n)editadd(int n)edittel(int n)editemail(int n)editage(int n)C 语言程序设计实验报告54.调试与测试:1调用pr2()函数(检索界面)一闪而过。解决方法:添加 getchar()语句使程序暂停。2无法有效的控制输出函数循环终止。解决方法:添加全局变量“stunum”,使用该全局变量来记录学生总数,从而控制输出循环的次数。3查询函数数据量过多时同时输出,先输出的内容无法查看,或需用户自行查看。解决方法:添加 getchar()语句使程序暂停,当用户按 Enter 时继续。4文件在打开和保存时有问题。解决方法:调整文件的打开方式,从原来的单纯的 w+修改为添加一个 if 语句,当没有文件时执行 w+的操作,否则执行 r+。避免了原存储文件被覆盖的问题。C 语言程序设计实验报告65.源程序清单和执行结果:#include#include#include#includeint stunum=0;struct studentint id;char name30;int age;char sex2;char birthday9;char add80;char tel15;char email25;stu100;void pr()system(cls);printf(*学生信息管理系统*);printf(n-V 1.0.0-);printf(n 您想要:);printf(n 1.录入学生信息);printf(n 2.浏览学生信息);printf(n 3.检索学生信息);printf(n 4.退出信息管理);printf(n-By 09114115 孟凡超-);printf(n*n);void pr2()void jsid();void jsname();int a;char ch;while(a)system(cls);printf(*学生信息管理系统*);printf(n-检 索-);printf(n 您想要:);printf(n 1.按学号检索);printf(n 2.按姓名检索);printf(n 3.返回主菜单);printf(nn-By 09114115 孟凡超-);printf(n*n);ch=getchar();switch(ch)case 1:jsid();break;case 2:jsname();break;case 3:a=0;break;void fileopen()FILE*fp;int n;if(fp=fopen(data,r+)=NULL)fp=fopen(data,w+);for(n=0;n100;n+)fread(&stun,sizeof(struct student),1,fp);fread(&stunum,4,1,fp);fclose(fp);void filesave()int n;FILE*fp;fp=fopen(data,r+);C 语言程序设计实验报告7for(n=0;n100;n+)fwrite(&stun,sizeof(struct student),1,fp);fwrite(&stunum,4,1,fp);fclose(fp);void editname(int n)printf(n 新姓名:);scanf(%s,stun.name);void editage(int n)printf(n 新年龄:);scanf(%d,&stun.age);void editsex(int n)printf(n 新性别:);scanf(%s,stun.sex);void editbir(int n)printf(n 新出生年月);scanf(%s,stun.birthday);void editadd(int n)printf(n 新地址:);scanf(%s,stun.add);void edittel(int n)printf(n 新电话:);scanf(%s,stun.tel);void editemail(int n)printf(n 新 E-mail:);scanf(%s,stun.email);void last(int n)if(n=stunum)system(cls);/清屏printf(*学生信息管理系统*);printf(n-检 索-);printf(n 已检索到末尾。);printf(nPress any key to continue.);printf(nn-By 09114115 孟凡超-);printf(n*n);void edit(int n)char ch;int a=1,b;while(a)system(cls);printf(*学生信息管理系统*);printf(n-修 改-);printf(n 请输入你想修改的内容:);printf(n1.姓名 2.年龄 3.性别 4.出生年月 5.地址 6.电话 7.E-mailn);printf(nn-By 09114115 孟凡超-);printf(n*n);getchar();ch=getchar();switch(ch)C 语言程序设计实验报告8case 1:editname(n);break;case 2:editage(n);break;case 3:editsex(n);break;case 4:editbir(n);break;case 5:editadd(n);break;case 6:edittel(n);break;case 7:editemail(n);break;b=1;while(b)printf(n 确认吗?(y/n);getchar();ch=getchar();switch(ch)case Y:case y:b=0;a=0;break;case N:case n:b=0;break;void del(int n)int a;for(a=n;astunum;a+)strcpy(stua.name,stua+1.name);/拷贝后一个学生信息到前一个人上。stua.age=stua+1.age;strcpy(stua.sex,stua+1.sex);strcpy(stua.birthday,stua+1.birthday);strcpy(stua.add,stua+1.add);strcpy(stua.tel,stua+1.tel);strcpy(stua.email,stua+1.email);stunum-;printf(删除成功!press Enter to continue.);int editpr(int n)int a=1;char ch;while(a)getchar();printf(n 您想要:);printf(nn1.修改学生信息);printf(n2.删除该条信息);printf(n3.返回上级菜单);printf(n4.查看下条信息);ch=getchar();switch(ch)case 1:edit(n),a=0;break;case 2:del(n),a=0;break;case 3:a=0;return(0);break;case 4:a=0;break;void jsid()int n,i,j=0;system(cls);printf(*学生信息管理系统*);printf(n-检 索-);printf(n 请输入想要检索的学号:);scanf(%d,&n);if(n=stunum)n=n-;C 语言程序设计实验报告9printf(学号 姓 名 年龄 性别 出生年月n);printf(%4d,stun.id);printf(%12s,stun.name);printf(%4d,stun.age);printf(%4s,stun.sex);printf(%8s n,stun.birthday);printf(nnn 学号 电 话 E-mail 地址n);printf(%4d,stun.id);printf(%15s,stun.tel);printf(%15s,stun.email);printf(%sn,stun.add);j=editpr(n);i+;if(i=0)printf(nError:无此学生。);printf(n-By 09114115 孟凡超-);printf(n*n);elseif(j=0)goto end;elsesystem(cls);last(n);getchar();end:getchar();void jsname()int n,j,i=0;char m30;system(cls);printf(*学生信息管理系统*);printf(n-检 索-);printf(n 请输入想要检索的姓名:);scanf(%s,m);for(n=0;nstunum;n+)if(strcmp(m,stun.name)=0)system(cls);printf(学号 姓 名 年龄 性别 出生年月n);printf(%4d,stun.id);printf(%8s,stun.name);printf(%4d,stun.age);printf(%4s,stun.sex);printf(%8s n,stun.birthday);printf(nnn 学号 电 话 E-mail 地址n);printf(%4d,stun.id);printf(%15s,stun.tel);printf(%15s,stun.email);printf(%sn,stun.add);i+;if(j=editpr(n)=0)break;if(i=0)printf(nError:无此学生。);if(j!=0)last(n);getchar();getchar();void writeinfo()int a,n=1,m;C 语言程序设计实验报告10char ch;while(n)a=stunum;system(cls);printf(ID:);stua.id=(a+1);printf(%d,stua.id);printf(nName:);scanf(%s,&stua.name);printf(nAge:);scanf(%d,&stua.age);printf(nSex:);scanf(%s,&stua.sex);printf(nBirthday(E.g 20090101):);scanf(%s,&stua.birthday);printf(nAddress:);scanf(%s,&stua.add);printf(nTel:);scanf(%s,&stua.tel);printf(nE-mail:);scanf(%s,&stua.email);m=1;while(m)/做一个循环,直到 m=0 时跳出system(cls);printf(ID:);printf(%d,stua.id);printf(nName:);printf(%s,stua.name);printf(nAge:);printf(%d,stua.age);printf(nSex:);printf(%s,&stua.sex);printf(nBirthday:);printf(%s,stua.birthday);printf(nAddress:);printf(%s,stua.add);printf(nTel:);printf(%s,stua.tel);printf(nE-mail);printf(%s,stua.email);printf(n 请选择:1.确认并继续 2.重新填写 3.放弃并返回 4.确认并返回);ch=getchar();switch(ch)case 1:m=0;stunum+;break;case 2:stunum,m=0;break;case 3:m=0,n=0;break;/选择此项时,m=0,循环终止case 4:m=0,n=0;a=stunum+;break;void viewinfo()int count=1,i,n=1,pagenum=1,page=stunum/5+1;/设定变量控制翻页char ch;while(n)system(cls);printf(学号 姓 名 年龄 性别 出生年月n);for(i=count-1;icount+4&istunum;i+)printf(%4d,stui.id);printf(%12s,stui.name);printf(%4d,stui.age);printf(%4s,stui.sex);printf(%8s n,stui.birthday);printf(nnn 学号 电 话 E-mail 地址n);for(i=count-1;icount+4&ipage)count=1,pagenum=1;else count=(pagenum-1)*5+1;break;case 0:n=0;break;void main()/主函数int n=1;char ch;fileopen();/文件打开while(n)pr();ch=getchar();switch(ch)/switch 语句选择功能case 1:writeinfo();break;case 2:viewinfo();break;case 3:pr2();break;case 4:n=0;break;filesave();文件保存C 语言程序设计实验报告126.实验心得:1)对 C 语言的编程实践有所认识。2)在遇到程序调试不通过时,会通过缩小范围的分析来锁定问题所在。3)通过这次实验,熟悉了从自然语言转换成伪代码再转换为流程图的过程。4)在程序中设定合适的全局变量,可以简化程序的编写难度。5)运用函数可以减少编写时的代码量,也使程序条理清晰。6)通过本次 C 语言上机实验,我对这个介于人类与非人类之间的计算机编程语言有了一定的体验。随着实验的成功与报告的完成,有点微微的成就感使人难忘。伴随着学习的深入,我发现高深的东西还有很多很多,等待着我自己去挖掘。对 C 语言的学习,我会加倍努力。