版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、16 - 1 - 一、课程设计的内容学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,e-mail等。试设计一学生信息管理系统,使之能提供以下功能:系统以菜单方式工作学生信息录入功能(学生信息用文件保存)- 输入学生信息浏览功能-输出查询、排序功能-算法按学号查询按姓名查询学生信息的删除与修改(可选项)二、课程设计的要求与数据1、进一步掌握和利用c 语言进行程设计的能力;2、进一步理解和运用结构化程序设计的思想和方法;3、初步掌握开发一个小型实用系统的基本方法;4、学会调试一个较长程序的基本方法;5、学会利用流程图或n-s 图表示算法;6、掌握书写程序设计开发文档的能力。三、课程设计
2、应完成的工作1、编写完成相应题目的程序;2、编写课程设计报告 ,课程设计报告的内容应包括以下6 个部分:1) 需求分析:包括设计题目、设计要求以及系统功能需求分析;2) 总体设计:包括系统总体设计框架和系统功能模块图;3) 详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图;4) 调试分析过程描述:包括测试数据、测试输出结果,以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等,适当的包含结果截图) ;5) 总结:课程设计完成了哪些功能,有没有什么扩展功能?还有哪些地方需要改进?课程设计过程中的学习体会与收获、对本次课程设计的认识以及自己的建议等内容
3、;6) 附录:主要源程序代码,含必要的注释。16 - 2 - 3、答辩:在实验室建立程序运行的环境,并在指导教师的监督下,独立解决问题、运行程序和回答教师提出的问题。四、课程设计进程安排序号设计各阶段内容地点起止日期1 下达任务书,说明设计要求;收集资料实验 3#517 6.18 2 总体方案设计、详细设计实验 3#517 6.19 3 编写程序,调试分析实验 3#517 6.20 4 撰写报告并上交,答辩实验 3#517 6.21 五、应收集的资料及主要参考文献1 谭浩强 .c程序设计 ( 第三版 )m ,北京:清华大学出版社,2005.9 2 谭浩强 . c程序设计题解与上机指导(第三版)
4、m , 北京:清华大学出版社, 2005.7 3 刘振安 .c 程序设计课程设计(第一版 )m, 北京 :机械工业出版社,2004.9 4 徐连信 .c 语言程序设计习题解答与实验指导m, 北京 : 清华大学出版社,2005.9 发出任务书日期: 2007 年 6 月 18 日指导教师签名:计划完成日期: 2007年 6 月 22 日基层教学单位责任人签章:主管院长签章:目录1 设计目的与要求5 2 总体设计5 3 详细设计6 3.1 功能模块设计6 16 - 3 - 3.2 数据结构设计6 4 调试分析7 5 总结9 6 附录9 6 答辩记录(正文处请留出适当空白)16 7 指导教师意见(正
5、文处请留出十行空白)17 1 目的与要求1.1 设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼:1)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。2)掌握自顶而下的设计方法,将大问题进行模块化,领会结构化程序设计的方法。3)熟练掌握 c 语言的基本语法,灵活运用各种数据类型。16 - 4 - 4)进一步掌握在集成环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试)和修改程序。2.1 程序设计要求1.建立文件
6、 .用于保存信息2.增加学生信息.可以将信息添加到已有文件或新建文件3.显示信息 .可以随时显示内存中的记录4.储存信息 .储存信息 ,方便以后查看,操作5 查询信息 .通过键入名字,显示所要查询的信息6 整理信息 .分别通过学号,姓名升降排序2 总体设计程序包含文件的存取过程.它的功能是按输入顺序建立纪录.如果原来没有记录文件,可以重新建立一个文件;如果已有记录,可以把文件内容读入.然后把新记录追加到原来记录的尾部 ;也可以单独建立文件,以后再使用读取文件的方法拼装.通过以上分析,本程序可以通过多个函数共同来实现其功能.主要有以下几个函数main 主函数select 菜单选择menu 菜单处
7、理addinfo 在表尾追加信息display 显示信息searchinfo 查询指定学生的信息sortinfo 排序saveinfo 文件储存loadinfo 文件读取quit 结束运行showtable 打印表头copyrecord 复制记录16 - 5 - 3 详细设计3.1 功能模块设计0 层1 层main 1. 增加学生信息2. 保存学生信息2 层3. 显示学生信息1. 按学号进行升序排序4. 载入学生信息2. 按学号进行降序排序5. 查询学生信息3. 按姓名进行升序排序6. 学生信息排序4. 按姓名进行降序排序7. 结束运行3.2 数据结构设计依据给定的学生信息和数据形式,结构数据
8、分量必须用结构实现.结构类型定义为全局标识符: /*定义结构体数组*/ struct studentinfo char number15; char name20; char gender4; char birthday15; char age15; char address15; char telephone15; char mail15; ; 4 调试分析运行程序 ,出现一下显示说明菜单函数输出正常16 - 6 - 依次输入1,2,3,4,5 验证都能运行 .如下显示当保存有文件后,键入 6,再选择 2 按学号进行降序排序,得到以下结果16 - 7 - 得到除了学号和姓名正确排序外,其它的
9、出现错误.分析原因 ,应该是 sortinfo( ) 出现错误void copyrecord(stuinfo*before,stuinfo*after) strcpy(after-number,before-number); strcpy(after-name,before-name); 缺少了其它信息的地址交换修改 sortinfo( ) 后 ,再次运行得正确结果. 最后验证完毕. 16 - 8 - 5 总 结这个程序实现了设计要求中的所有功能,能够简单地管理学生信息:对学生信息的输入,显示 ,排序 ,查询 ,储存等操作 .本程序还有很多不足之处,譬如 ,不能修改 ,删除信息 ,还有待改进
10、.通过这次程序设计我对c 语言有了更深刻的了解,知道了如何去调试,查错 ,修改 .发现自己的思维很不严谨,今后还要不断地练习. 7.附录/*源程序代码 */ #include #include #include #include #define initialsize 100 #define incrsize 50 struct studentinfo /定义结构体数组char number15; /学号char name20; /姓名char gender4; /性别char birthday15; /出生年月char age15; /年龄char address15; /地址char te
11、lephone15; /电话char mail15; /电子邮箱; typedef struct studentinfo stuinfo; extern int numstus; extern stuinfo *records; extern char savedtag; extern int arraysize; void menu(void); int select(void); void addinfo(void); void display(void); void searchinfo(void); void sortinfo(void); int saveinfo(void); in
12、t loadinfo(void); void quit(void); void showtable(void); 16 - 9 - void copyrecord(stuinfo*before,stuinfo*after); int numstus = 0; stuinfo *records = null; char savedtag =0; int arraysize; int main() /主函数records = (stuinfo*)malloc(sizeof(stuinfo)*initialsize); /初始化数组if(records=null) printf(memory fai
13、l!); exit(-1); arraysize = initialsize; printf(n); printf(t*n); printf(t* 这是一个*n); printf(t* 学生信息管理系统*n); printf(t* 欢迎使用*n); printf(t*n); printf(n); menu(); void menu(void) for(;) switch(select() case 1: addinfo();break; case 2: saveinfo();break; case 3: display();break; case 4: loadinfo();break; ca
14、se 5: searchinfo();break; case 6: sortinfo();break; case 7: quit(); int select() /显示菜单与选择函数char s2; 16 - 10 - int cn=0; printf(n); printf(tt1. 增加学生信息 n); printf(tt2. 保存学生信息 n); printf(tt3. 显示学生信息 n); printf(tt4. 读取学生信息 n); printf(tt5. 查询学生信息 n); printf(tt6. 学生信息排序 n); printf(tt7. 结束运行 n); printf(nt
15、请选择所需操作前的数字(1-7): n); for(;) gets(s); cn = atoi (s); if(cn=0&(strcmp(s,0)!=0) cn=8; if(cn7) printf(nt 输入错误 ,重选 1-7:); else break; return cn; void addinfo(void) /添加信息函数 */ char str10; if(numstus=0) printf( 没有记录 ,现在添加 n); else printf( 添加新的信息n); while(1) printf( 添加一组新信息,继续 ?(y/n); gets(str); if(str
16、0=n | str0=n)break; if(numstus =arraysize) /数组空间不足,申请空间records=realloc(records,(arraysize+ incrsize)*sizeof(stuinfo); if(records = null) printf(memory failed!);exit(-1); arraysize = arraysize+incrsize; printf( 请输入学号 : ); gets(recordsnumstus.number); printf( 请输入姓名 : ); gets(); 16 -
17、 11 - printf( 请输入出生年月: ); gets(recordsnumstus.birthday); printf( 请输入年龄 : ); gets(recordsnumstus.age); printf( 请输入地址 : ); gets(recordsnumstus.address); printf( 请输入电话 : ); gets(recordsnumstus.telephone); printf( 请输入 e-mail: ); gets(recordsnumstus.mail); printf( 请输入性别 (0 为女 ,1 为男 ): ); gets(str); if(st
18、r0=0) strcpy(recordsnumstus.gender, 女 ); /将” 女” 的地址传给前者else strcpy(recordsnumstus.gender, 男 ); numstus+; printf( 现在有 %d 条信息 n,numstus); savedtag = 1; void sortinfo(void) /排序子菜单函数char str5; int i,j; stuinfo tmps; /tmps 为中间量 .传递值if(numstus = 0) printf( 没有可供排序的记录!); return; printf( 请输入您希望进行排序的方式: n); p
19、rintf(1. 按学号进行升序排序n); printf(2. 按学号进行降序排序n); printf(3. 按姓名进行升序排序n); printf(4. 按姓名进行降序排序n); printf(5. 我不想进行排序,返回 n); gets(str); if (str06)return; for(i=0; inumstus-1;i+) for(j=i+1;j0) | (str0=2 & strcmp(recordsi.number, recordsj.number)0) | (str0=4 & strcmp(,)number,
20、before-number); /结构体数组内部地址交换strcpy(after-name,before-name); strcpy(after-age,before-age); strcpy(after-gender,before-gender); strcpy(after-birthday,before-birthday); strcpy(after-telephone,before-telephone); strcpy(after-address,before-address); strcpy(after-mail,before-mail); int loadinfo(void) /读取
21、信息函数file *fp; char fname30; char str5; if(numstus!=0 & savedtag=0) /若已保存有则覆盖printf( 覆盖现有记录(y),); printf( 还是要将读取的记录添加到现有记录(n)?n); printf( 回车覆盖现有记录n) ; gets(str); if(str0 = 0 | str0 = n) savedtag = 1; /savedtag=1 表示信息未保存else if(savedtag = 1) printf( 读取文件将会更改现有记录,); printf( 是否保存原来记录?(y/n); gets(str
22、); if(str0 != n & str0 != n) saveinfo(); numstus = 0; 16 - 13 - printf( 请输入要读取的文件名(回车选文件stu_info): ); gets(fname); if(strlen(fname) = 0) strcpy(fname,stu_info); if(fp=fopen(fname,rb) = null) /文件名不存在printf( 打不开文件 !重新选择 n); return -1; printf(n 取文件 .n); while(!feof(fp) if(numstus =arraysize) record
23、s = realloc(records,(arraysize+ incrsize)*sizeof(stuinfo); if(records = null) printf(memory failed!); exit(-1); arraysize = arraysize+incrsize; if(fread(&recordsnumstus, sizeof(stuinfo),1,fp) != 1)break; numstus+; fclose(fp); printf( 现在共有 %d 条记录。 ,numstus); return 0; int saveinfo(void) /保存信息file
24、 *fp; char fname30; if(numstus = 0) printf( 没有记录可存!); return -1; printf( 请输入要存入的文件名); printf( 直接回车选择文件stu_info):); gets(fname); if(strlen(fname) = 0) strcpy(fname,stu_info); if(fp=fopen(fname,wb) = null) printf( 不能存入文件!); return -1; printf(n 存文件 .n); 16 - 14 - fwrite(records,sizeof(stuinfo)*numstus,1,fp); printf(n%d条记录已存入文件,请继续操作。 n,numstus); fclose(fp); savedtag = 0; /更新已保存的标记return 0; void showtable(void) /打印表头函数printf( 学号 t 姓名 t 年龄 t 性别 t 出生年月 ); printf(t 地址 t 电话 te-mail); void display(void) /显示所有学生信息int i; if(numstus = 0) printf( 没有可显示的记录! ); return; showtable(); for(i=0; i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026考研数学二冲刺试卷|带详细目录
- 2025考研数学一强化试卷|命题趋势分析
- 2024年全国统考数学三期末试卷(超清扫描版)
- 【2022考研】上海财经大学数学分析押题卷(真题逐题精讲)
- 2026年中职服装陈列与展示设计(橱窗陈列设计)试题及答案
- 南昌一模考试题目及答案
- 哲学自考试题及答案
- 天津市河西区2026年数学三上期末考试模拟试题含解析
- 2026年高职学前教育应用技术基础(教育应用)试题及答案
- 1150MW机组供热扩容项目可行性研究报告
- 井场作业应急预案(3篇)
- 儿童先天性代谢病净化方案
- 2024年上海秋季高考语文真题含答案
- CQC17463416-2024建设工程用电缆燃烧性能分级认证实施规则
- 华为战略合作协议书
- GMP卫生知识培训课件
- DB13(J)-T 8522-2023 承插型盘扣式钢管脚手架安全选用技术规程(京津冀)
- 电车充电桩安全管理培训课件
- 员工岗位安全操作规程模板
- 2025年高中生物会考测试真题(含答案)
- 《信息组织》课程教学大纲
评论
0/150
提交评论