c语言课程设计报告.doc
《c语言课程设计报告.doc》由会员分享,可在线阅读,更多相关《c语言课程设计报告.doc(53页珍藏版)》请在咨信网上搜索。
1、C语言课程设计报告 2010年11月26日报告目录一、课程设计目的 3二、实习内容及要求 3 三、需求分析 3四、总体分析 3五、详细设计 45.0 头文件及结构体 45.1 主函数55.2 菜单模块55.3 添加模块65.4 修改模块10 5.5 浏览模块 14 5.6 查询模块 15 5.6.1 按学号查询 15 5.6.2 按名字查询 16 5.6.3 按班级查询 175.7 统计模块 18 5.7.1 男生信息19 5.7.2 女生信息21 5.7.3 全体学生信息 23 5.8 删除模块 23六、上机操作 26 6.1 系统说明 266.2 系统测试 26 七、总结 32八、源代码
2、32一、课程设计目的通过实践,学会编制结构清晰、风格良好、数据结构适当的C语言程序,加深对C语言基础知识的理解和掌握,进一步巩固C语言编程实践能力,锻炼思维逻辑和解决综合性实际问题的能力。二、实习内容及要求1、用C语言编写一个学生证管理系统,该系统具有以下功能: (1)录入某位学生的学生证信息;(2)给定学号,显示某位学生的学生证信息;(3)给定某个班级的班号,显示该班所有学生的学生证信息;(4)给定某位学生的学号,修改该学生的学生证信息;(5)给定某位学生的学号,删除该学生的学生证信息;(6)提供一些统计各类信息的功能;(7)提供浏览所有学生的学生证信息的功能。2、输入要求应用程序运行后,在
3、屏幕上显示一个菜单;用户可以根据要求,选定相应的操作项目;进入某个操作后,根据应用程序的提示,从键盘输入相应的信息。3、输出要求(1)应用程序运行后,要在屏幕上显示一个菜单;(2)要求用户输入数据时,给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。三、需求分析根据题目要求,学生信息要从文本文件中存取,所以本程序应该提供读写文件,显示、统计、查询、修改记录,保存文件等操作,此外,还应该提供键盘式选择菜单实现功能。四、总体设计根据需求分析,可以把这个系统的设计分为添加、修改、查询、浏览、统计、删除六大模块,其中查询模块可以分为三个子模块,统计模块可以分为三个子模块,子模块下面还有子
4、函数;系统功能模块图如下所示:五、详细设计5.0 头文件及结构体#include#include#include#define N 100struct Class /班级 char Cname20; /班名 char Cno20;/班号;struct Student /学生 char Sname20; /姓名 char Sex10;/性别 char Sno20;/学号 int Age;/年龄 struct Class CInfo; /嵌套结构体,表示班级信息StuInfoN; /结构体数组,用作读取和存放临时数据5.1 主函数void main() menu(); /菜单 getchar();
5、5.2 菜单void menu() int chose; int right; do printf(ntttt学生证管理系统n); printf(); printf( 菜单:t1-添加t2-修改t3-浏览全部t4-查询t5-统计t6-删除t7-退出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
6、:modify(); break; /修改模块case 3:browse(); break; /浏览模块case 4:quiry(); break; /查询模块case 5:stastic(); break; /统计模块case 6:Delete(); break; /删除模块case 7:exit(0); /退出 5.3 添加模块首先要判断文件StuInfo.txt是否存在,如果存在就以读写(r+)的方式打开,如果不存在,就以写(w)的方式创建文件StuInfo.txt。输入格式要求:性别为男或女,学号为11位且不能重复,年龄在0-100之间,班级号为6位,程序提供了完善的验证机制,输入错误
7、时将提示重新输入直到正确为止。此外,如果以读写的方式打开,还要判断记录数numN是否成立,因为结构体数组的大小为N,当num=N时,表示已满,不能再存储数据,需要修改N的值。void add() int num; /表示记录数 int i; int age; /临时变量,用于验证输入的性别是否满足条件 char sno20; /临时变量,用于验证输入的学号是否满足条件 char sex20; /临时变量,用于验证输入的性别是否满足条件 char cno20; /临时变量,用于验证输入的班号是否满足条件 int right; FILE*fp; if(fp=fopen(StuInfo.txt,r+
8、)=NULL) /以读写方式打开 if(fp=fopen(StuInfo.txt,w)=NULL) /文件不存在就创建文件 printf(n文件不存在且创建失败,返回!n); menu(); printf(n请按照提示输入学生信息:nn); printf(姓名:); scanf(%s,&StuInfo0.Sname); do printf(n性别(男或女):); scanf(%s,sex); if(strcmp(sex,男)!=0)&(strcmp(sex,女)!=0) printf(输入错误,请输入男或女!n);right=1;getchar(); else right=0; while(r
9、ight=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) printf(年龄应在0-100之间,请重新输入年龄!n);right=1;getchar(); else right=0;
10、while(right=1); StuInfo0.Age=age; do printf(n班号(6位):); scanf(%s,cno); if(strlen(cno)!=6) printf(输入错误,班号长度应为6位数!n);right=1;getchar(); else right=0; while(right=1); strcpy(StuInfo0.CInfo.Cno,cno); printf(n班名:); scanf(%s,&StuInfo0.CInfo.Cname); fprintf(fp,n%st%st%st%dt%st%s,StuInfo0.Sname,StuInfo0.Sex,
11、StuInfo0.Sno,StuInfo0.Age,StuInfo0.CInfo.Cno,StuInfo0.CInfo.Cname); 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.Sex,&StuInfoi.Sno,&StuInfoi.Age,&StuInfoi.CInfo
12、.Cno,&StuInfoi.CInfo.Cname); num=i; /记录数 if(num=N) printf(n保存记录数超出结构体数组数的大小,请先修改N的值!n); printf(n请按enter键返回主菜单!n); getchar(); getchar(); menu(); printf(n请按照提示输入学生信息:nn); printf(姓名:); scanf(%s,&StuInfonum.Sname); do printf(n性别(男或女):); scanf(%s,sex); if(strcmp(sex,男)!=0)&(strcmp(sex,女)!=0) printf(输入错误,
13、请输入男或女!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(该学号已经存在,请重新输入!n); right=1; getchar(); whil
14、e(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,cno); if(strlen(cno)!=6) printf(输入错误,班号长度应为6位数!n);right=1;getchar(); else right=0; whil
15、e(right=1); strcpy(StuInfonum.CInfo.Cno,cno); printf(n班名:); scanf(%s,&StuInfonum.CInfo.Cname); /把该记录写到文件末尾 fprintf(fp,n%st%st%st%dt%st%s,StuInfonum.Sname,StuInfonum.Sex,StuInfonum.Sno,StuInfonum.Age,StuInfonum.CInfo.Cno,StuInfonum.CInfo.Cname); fclose(fp); printf(n保存成功!n); printf(n请按enter键返回主菜单!n);
16、getchar(); getchar(); menu();5.4 修改模块先判断文件StuInfo.txt以读(r)的方式能否打开,不能就返回,可以就读入记录;然后输入学号查找记录,没找到就返回,找到就按照提示修改该记录,与输入模块一样,输入的格式要求:性别为男或女,学号为11位且不能与除当前修改的记录的学号外的记录的学号重复,年龄在0-100之间,班级号为6位,程序提供了完善的验证机制,输入错误时将提示重新输入直到正确为止。输入完成后,再以写(w)的方式创建文件,不能创建就返回,可以就将结构体数组中的所有记录保存到文件中,这与添加稍有差别,最后返回主菜单。void modify() int
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。