C语言课程设计报告-学生证管理程序.doc_第1页
C语言课程设计报告-学生证管理程序.doc_第2页
C语言课程设计报告-学生证管理程序.doc_第3页
C语言课程设计报告-学生证管理程序.doc_第4页
C语言课程设计报告-学生证管理程序.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言课程设计报告报告题目:学生证管理程序 任课老师: 报告人: 所在班级:191124班2013年1月5日一、 题目要求【功能要求】该程序应该具有下列功能:(1) 录入某位学生的学生证信息。学生证应该包含的信息参见自己的学生证。(2) 给定学号,显示某位学生的学生证信息。(3) 给定某个班级的班号,显示该班所有学生的学生证信息。(4) 给定某位学生的学号,修改该学生的学生证信息。(5) 给定某位学生的学号,删除该学生的学生证信息。(6) 提供一些统计各类信息的功能。【输入要求】应用程序运行后,在屏幕上显示一个菜单。用户可以根据需求,选定相应的操作项目。进入某个操作项目后,根据应用程序的提示信息,从键盘输入相应信息。【输出要求】(1)应用程序运行后,要在屏幕上显示一个菜单。(2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。二、需求分析学生证信息采用文件存储,因而要提供文件的输入/输出操作;要根据给定的学号或班号进行相应的操作,要提供查找操作;显示信息要提供显示操作;修改和删除要提供文件的修改和删除操作;实现一些统计各类信息的功能要提供统计操作;另外,还要提供键盘式选择菜单以实现功能选择。三、总体设计整个管理程序被设计为数据输入模块、数据查找模块、数据修改模块、数据删除模块和数据统计模块。如图所示:学生证管理系统查找增加修改删除统计四、详细设计1.主函数主函数一般设计得比较简洁,只提供输入、处理和输出部分的函数调用。其中各功能模块用菜单方式选择。【流程图】开始显示一系列功能选项输入n,判断n是否是16根据n的值调用各功能模块函数结束YN【程序】int main() int n;Re_file(); /读学生证信息文件n=1;while(n)system(cls); printf(nn);printf(tt* Welcome to Studentcard System *);printf(nnn); printf(ttt主菜单n); printf(ttt n); printf(ttt 1.录入学生证信息 n);printf(ttt 2.查找学生证信息 n); printf(ttt 3.修改学生证信息 n); printf(ttt 4.删除学生证信息 n); printf(ttt 5.执行统计功能 n); printf(ttt 6.退出 n); printf(ttt n); printf(tttn); printf(nnttt请输入您所需相应操作前的数字:); scanf(%d,&n);printf(nn); switch(n) case 1:Append();Display1();break; case 2:Query();break; case 3:Modify();Display2();break; case 4:Delete();Display3();break; case 5:Stat();break; case 6:exit(0);printf(nnnttt 请按任意键继续!);getch(); Wr_file(); /写文件return 0;2.各功能模块设计(1)数据读入模块【数据结构】struct StudentCard /学生证结构体char name10;int sex; char stuNo10; /学号int classNo; /班号StuCardN;注意:StuCardN中的N为学生人数,程序中采用宏定义的方式,可以随时在源程序宏定义中修改。本程序中宏定义为:#define N 10。【程序】/*数据读入模块*/void Re_file()int i;FILE *fp;fp=fopen(file1.txt,r);i=0;while(fscanf(fp,%s %d %s %d,StuC,&StuCardi.sex,StuCardi.stuNo,&StuCardi.classNo)!=EOF)i+;fclose(fp);(2)增加模块【需求分析】该模块的功能是增加新的学生的学生证信息,用户从键盘出入并逐条写到原来的输入文件中。【程序】/*增加模块*/void Append() int Q; system(cls); printf(nnn); printf(ttt *n); printf(ttt * 录入学生证信息 *n); printf(ttt *n); printf(nnn); printf(ttt请输入相关信息:nn); printf(ttttt姓名:); scanf(%s,StuC); printf(nttttt性别:); scanf(%d,&StuCard10.sex); printf(nttttt学号:); scanf(%s,StuCard10.stuNo); printf(nttttt班号:); scanf(%d,&StuCard10.classNo); printf(nn); Q=N+1; system(cls); printf(nnn); printf(ttt 添加成功!);(3)查询模块【需求分析】该模块的功能是根据输入的学号查找对应的记录。开始【流程图】 输入学号,判断该学号是否与文件内某一学号相同NY输出属于该学号的学生证信息结束【程序】/*查询模块*/void Query() int i,k,d,j20=-1,t=0,Q=N;char m20;system(cls); printf(nnn);printf(ttt *n); printf(ttt * 查找学生证信息 *n); printf(ttt *n); printf(nnn); printf(ttt功能选择n);printf(ttt n); printf(ttt n);printf(ttt 1.学号 n);printf(ttt n); printf(ttt n);printf(ttt 2.班号 n); printf(ttt n); printf(ttt n);printf(ttt n);printf(tttn);printf(nnttt 请输入您所需相应操作前的数字:);scanf(%d,&k);printf(nn);if(k=1)printf(ttt请输入学号:); scanf(%s,m);printf(n);for(i=0;iN;i+)if(strcmp(m,StuCardi.stuNo)=0) jt=i;t=t+1;else if(k=2)printf(ttt请输入班号:);scanf(%d,&d);printf(n);for(i=0;iN;i+)if(d=StuCardi.classNo)jt=i;t+;if(j0=-1&t=0)printf(nttt 对不起,没有找到!);if(j0!=-1&t!=0)system(cls); printf(nnn);printf(t查找结果如下:n);printf(ttt*n);printf(ttt姓名 性别 学号 班号n);for(i=0;it;i+)printf(ttt%-11s%-10d%-10s%-10dn,StuC,StuCardji.sex,StuCardji.stuNo,StuCardji.classNo);printf(ttt*n);(4)修改模块【需求分析】该模块的功能是根据某个班级的班号找到要修改的记录,并提示用户修改该记录的哪部分信息(是姓名、性别、学号还是班号),然后根据用户的选择修改相应信息。【程序】/*修改模块*/void Modify() int i,k;char n20;system(cls); printf(nnn);printf(ttt *n); printf(ttt * 修改学生证信息 *n); printf(ttt *n); printf(nnttt 请输入需要修改信息的学生的学号:);scanf(%s,n); for(i=0;i=1&k=4)if(k=1)printf(ttt请输入新的姓名:); scanf(%s,StuC); if(k=2) printf(ttt请输入新的性别:); scanf(%d,&StuCardi.sex); if(k=3) printf(ttt请输入新的学号:); scanf(%s,StuCardi.stuNo); if(k=4) printf(ttt请输入新的班号:); scanf(%d,&StuCardi.classNo); system(cls); printf(nn); printf(nnttt 修改成功!);else printf(nnttt 对不起,没有该选项!);(5)删除模块【需求分析】用户输入要删除学生证信息的某位学生的学号,根据学号查找学生证信息并删除。删除一般的做法是将数据从文件中删除,删除位置后面的记录往前移动。【程序】/*删除模块*/void Delete()int i,j=-1,Q,t=0; char n20;system(cls); printf(nnn); printf(ttt *n); printf(ttt * 删除学生证信息 *n); printf(ttt *n); printf(nnttt 请输入需要删除的学生的学号:); scanf(%s,n);printf(nnn); for(i=0;iN;i+) if(strcmp(n,StuCardi.stuNo)=0)j=i;if(j!=-1)Q=N-1; for(i=j;i=Q&j!=-1;i+)StuCardi=StuCardi+1;system(cls); printf(nn);printf(ttt 删除成功!); else if(j=-1)printf(nttt 对不起,没有找到!);(6)统计模块【需求分析】该模块的功能是根据用户需求统计菜单所显示信息。【流程图】统计读入文件信息计算班级总人数计算所有男女人数计算班级男女人数【程序】void Stat()int i,n,m,k=0,boy=0,girl=0,Q=N;system(cls); printf(nnn);printf(ttt *n); printf(ttt * 统计学生证信息 *n); printf(ttt *nnn);printf(ttt功能选择n);printf(ttt n); printf(ttt n);printf(ttt 1.班级总人数 n);printf(ttt n); printf(ttt 2.年级男女人数 n);printf(ttt n); printf(ttt 3.班级男女人数 n); printf(ttt n);printf(ttt n);printf(tttn); printf(nnttt 请输入统计选项:); scanf(%d,&n);printf(nn);if(n=1)printf(ttt 请输入您需要统计的班号:);scanf(%d,&m);system(cls);printf(nnn);printf(ttt*n);printf(ttt姓名 性别 学号 班号n);for(i=0;iQ;i+)if(m=StuCardi.classNo)printf(ttt%-11s%-10d%-10s%-10dn,StuC,StuCardi.sex,StuCardi.stuNo,StuCardi.classNo); k+; printf(ttt*n);if(k!=0)printf(nnttt 该班共有%d人。,k);else printf(nttt 对不起,没有找到!);if(n=2)for(i=0;iQ;i+)if(StuCardi.sex=0)boy=boy+1;if(StuCardi.sex=1)girl=girl+1;printf(ttt 该年级男生共有%d人,女生共有%d人。,boy,girl);if(n=3)printf(ttt 请输入您需要统计的班号:);scanf(%d,&m);for(i=0;iQ;i+)if(m=StuCardi.classNo)if(StuCardi.sex=0)boy=boy+1; if(StuCardi.sex=1)girl=girl+1;system(cls);printf(nnn);printf(ttt*n);printf(ttt姓名 性别 学号 班号n);for(i=0;iQ;i+)if(m=StuCardi.classNo)printf(ttt%-11s%-10d%-10s%-10dn,StuC,StuCardi.sex,StuCardi.stuNo,StuCardi.classNo); k+; printf(ttt*n);if(boy=0&girl=0)printf(nttt 对不起,没有找到!);else printf(nnttt 该班男生共有%d人,女生共有%d人。,boy,girl);(7) 浏览模块【需求分析】该模块的功能是显示所有学生的学生证信息。因为人数有不同变化,所以将该模块分为三个部分:录入后的浏览模块、修改后的浏览模块和删除后的浏览模块。【程序】/*录入后的浏览模块*/void Display1()int i,Q=N+1;printf(nn);printf(ttt*n);printf(ttt 姓名 性别 学号 班号n);for(i=0;iQ;i+)printf(ttt %-10s%-10d%-13s%-10dn,StuC,StuCardi.sex,StuCardi.stuNo,StuCardi.classNo);printf(ttt*n);/*修改后的浏览模块*/void Display2()int i;printf(nn);printf(ttt*n);printf(ttt 姓名 性别 学号 班号n);for(i=0;iN;i+)printf(ttt %-10s%-10d%-13s%-10dn,StuC,StuCardi.sex,StuCardi.stuNo,StuCardi.classNo);printf(ttt*n);/*删除后的浏览模块*/void Display3()int i,Q=N-1;printf(nn);printf(ttt*n);printf(ttt 姓名 性别 学号 班号n);for(i=0;iQ;i+)printf(ttt %-10s%-10d%-13s%-10dn,StuC,StuCardi.sex,StuCardi.stuNo,StuCardi.classNo);printf(ttt*n);五、上机操作1.数据源学生的学生证信息文件file1.txt的格式:每行存储一个学生的学生证信息,其中包括姓名、性别、学号和班号。例如:ZHANG 0 2012100 121 WANG 0 2012101 1222.编译、链接和运行3.结果下面是各个模块的界面效果:(1) 主函数页面(即主界面)如图1.1 图1.1(2)录入模块在主界面中输入“1”,然后按Enter键,选择录入功能,系统提示让用户输入需要录入新学生证的姓名、性别、学号和班号。例如依次输入“su”“0”“2012111”“000”如图2.1图2.1按Eneter键,将显示录入后的所有学生证信息。如图2.2图2.2(3)查找模块在主界面中输入“2”,然后按Enter键,进入查询功能,系统提示让用户输入需要进行的操作。如图3.1图3.1 输入“1”,按Enter键,将提示用户输入学号,如图3.2。图3.2输入某一学号,按Enter键,若查找成功将显示如图3.3所示信息。图3.3输入某一选项,按Enter,若查找不成功将显示如图3.4所示信息。图3.4 输入“2”,按Enter键,将提示用户输入学号,如图3.5。图3.5输入某一班号,按Enter键,若查找成功将显示如图3.6所示信息。图3.6输入某一选项,按Enter,若查找不成功将显示如图3.7所示信息。 图3.7(4)修改模块在主界面中输入“3”,然后按Enter键,选择修改功能,系统提示让用户输入需要修改学生证信息的学生学号。如图4.1 图4.1输入某一学号后,例如“2012100”,显示该学生原来的学生证信息并需要用户选择修改内容。如图4.2 图4.2输入修改选项,例如:输入“1”,按Enter键,输入“NEW”后按Enter键,显示修改后的所有学生证信息,可见学号为2012100的学生ZHANG的姓名已被修改为NEW。如图4.3 图4.3(5)删除模块在主界面中输入“4”,然后按Enter键,选择删除功能,系统提示让用户输入需要删除学生证信息的学生学号。如图5.1 图5.1输入某一学号,例如“2012100”,按Enter键,显示如图5.2所示信息,可见学号为2012100学生信息已被删除。 图5.2(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论