




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
沈 阳 航 空 工 业 学 院 课程设计学 号 200604021080班 级 6402103 姓 名 董洪杰指导教师 刘成2007年 9月 18日14沈阳航空工业学院课程设计任务书院系:电子 专业:电子信息工程 班级:6402103 一、课程设计题目:用简单链表管理员工信息二、课程设计工作自2007年9月14日,共计一周,20学时。三、课程设计内容:用C语言编写软件完成以下任务:从键盘输入4位员工的信息到动态创建的线形单向链表中;然后通过访问该链表,将其中的所有节点中的员工信息存放到文件myfile.dat中。每位员工信息如下:杜永宁 软件部 5760王传华 销售部 3920殷 泳 培训部 2940杨柳青 软件部 5440四、课程设计要求:1程序质量:l 贯彻结构化的程序设计思想。l 用户界面友好,功能明确,操作方便。l 用户界面的菜单至少应包括“输入员工信息”,“显示员工信息”,“保存员工信息”,“退出”4项。l 代码应适当缩进,并给出必要的注释,以增强程序的可读性。课程设计说明书:课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下:l 封面l 课程设计任务书l 目录l 需求分析(分析题目的要求)l 程序流程图(总体流程图和主要功能模块流程图)l 核心技术的实现说明及相应程序段l 个人总结l 参考资料l 源程序及适当的注释指导教师:_刘成_ 学生签名:_董洪杰_目录一、需求分析4二、程序流程图5三、核心技术的实现说明及相应程序段7四、个人总结10五、参考文献10六、源程序11 一、需求分析 经过对程序设计题目的分析可知,整个程序的设计实现大致分为二个模块,其中每一个模块对应一个函数,他们的功能分别是输入员工信息函数和显示员工信息的函数,具体如下:1 结构体,分别输入员工的姓名、所在部门和编号信息。2 创建两个自定义子函数,用于输入和显示。3 创建主函数,通过主函数实现对子函数的调用执行程序设计任务4 .退出函数,实现终止程序的执行. 退出函数属于附加函数,可以在一次运行当中循环执行所有的功能,并根据需要最终终止程序的执行。每一个员工的纪录都包含姓名、所在部门、编号、三个信息。 在程序当中,将员工信息类型定义为结构体类型,添加的员工信息直接写入E盘的myfile.dat文件中,现实函数每次对员工纪录的访问,其数据来源都是myfile.dat文件。二、程序流程图1总体设计2模块设计(1)插入结点的函数InsertList(2)显示员工数据Print三、核心技术的实现说明及相应程序段本程序主要有一个定义的结构体,一个主函数,函数InsertList和函数Print构成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。在这些函数当中,InsertList和Print是程序中较为核心的部分,下面进行分别说明。1添加数据的函数InsertList对于员工信息的添加,这里应用了InsertList函数。(1)、用于插入结点,定义了文件指针,打开员工管理系统的文件。 (2)、输入员工的姓名,所在部门,编号,当姓名重复时则不能打开文件,也就不可输入信息,当不重复时可以继续输入新的员工信息。具体的程序段如下:struct employee *InsertList(struct employee *p, const struct employee * in) struct employee *newPtr=NULL; if (!p|strcmp(p-name, in-name)0) if(newPtr=(struct employee*) malloc(sizeof(struct employee)=NULL) exit(0); /*如果不能创建一个员工的信息,就退出*/ *newPtr=*in; newPtr-next=p; p=newPtr; else if (strcmp(p-name, in-name) next=InsertList(p-next, in); return p; 2Print Print的作用在于显示出以入的员工信息,当进入系统后通过选择自动显示所有员工的信息。Out先指向第一个结点,爱输出完第一个结点之后,out指向第二个结点。程序中out=-next的作用是将out原来所指向的结点中next的值赋给out,而out-next的值就是第二个结点的起始地址。将它赋给out,就是使out指向第二个结点。具体函数段如下, void Print(FILE *stream, const struct employee *out) printf(*n); printf(%-30s%-30s%-30sn, Name,Department,Num); while(out!=NULL) fprintf(stream,%-30s%-30s%-30dn, out-name, out-branch, out-num); out=out-next; printf(*n); 3关于主函数 在主函数中期我应用了swich这个函数,应用选择结构对两个子菜单进行调用,供选择。具体程序段如下:main() int choice; struct employee *start=NULL, temp; FILE *fp; if(fp=fopen(E:myfile.dat,w)=NULL) return 0; /*如果不能打开文件就返回*/ while (choice=MenuChoice() !=3) switch (choice) case 1: printf(*Please enter employees Name ,Department ,Num :*n); scanf (%s%s%d,&,&temp.branch,&temp.num); start= InsertList(start,&temp); break; case 2: Print(stdout,start); break; case 3: exit(0); default: puts(cuo wu :fei fa de ming ling !); break; Print(fp, start); return 0; 四、个人总结一周的课设已经在我们辛勤努力中过去了,回顾这短短的一周,我觉得我收获很大,这是一段难忘的时光。C语言我们已经学习了一个学期了,但它所包含的内容是我们短短一学期所无法学精的,再经过这一周的课设我更是深有体会。特别的我这次的题目是用链表处理实际问题,链表是难点但在上学期的学习中不是重点我并没有太重视,甚至有些忽略。现在我是非常的后悔,这几天下来我经过查阅各种资料,并且在课余时间向高年级的学长请教,几天下来我感觉对于链表问题有了大概的印象,但还不过深入,答辩就能很好的说明,对于我这次答辩的失败我感到非常后悔。我在今后的学习过程中一定要更加专心仔细,对于细节不怕麻烦深入研究。总之经过这一周的课设的学习我不只是学到C程序设计的方法,这对我今后生活处理各种问题也有很大的帮助,很感谢能有这次机会让我能力得到较大的提高,让我更好的认清自己。五、参考文献1 谭浩强C程序设计北京:清华大学出版社,20052 刘成等C语言程序设计实验指导与习题集北京:中国铁道出版社,2006六、源程序 #include#include#includestruct employee char name 30; /*员工姓名*/ char branch 30; /*所在部门 */ int num; /*编号*/ struct employee *next; ; int Menuchoice(void); struct employee*InsertList(struct employee *p, const struct employee* in); void Print(FILE *stream, const struct employee *out); main() int choice; struct employee *start=NULL, temp; int MenuChoice(void); FILE *fp; if(fp=fopen(E:myfile.dat,w)=NULL) return 0; /*如果不能打开文件就返回*/ while (choice=MenuChoice() !=3) switch (choice) case 1: printf(*Please enter employees Name ,Department ,Num :*n); scanf (%s%s%d,&,&temp.branch,&temp.num); start= InsertList(start,&temp); break; case 2: Print(stdout,start); break; case 3: exit(0); default: puts(cuo wu :fei fa de ming ling !); break; Print(fp, start);return 0; /*显示所有员工的信息*/void Print(FILE *stream, const struct employee *out) printf(*n);printf(%-30s%-30s%-30sn, Name,Department,Num);while(out!=NULL) fprintf(stream,%-30s%-30s%-30dn, out-name, out-branch, out-num); out=out-next; printf(*n); /*向链表中添加以为员工的信息i*/struct employee *InsertList(struct employee *p, const struct employee * in) struct employee *newPtr=NULL; if (!p|strcmp(p-name, in-name)0) if(newPtr=(struct employee*) malloc(sizeof(struct employee)=NULL) exit(0); /*如果不能创建一个员工的信息就返回*/ *newPtr=*in; newPtr-next=p; p=newPtr; else if (strcmp(p-name, in-name) nex
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 跨部门协作与沟通会议记录模板
- 企业财务成本预算工具跨企业适用
- 全面生产效率提升行动计划模板
- 公司合同管理规范与风险防范
- 会议组织与活动策划执行指南
- 技术研发项目需求调研与解决方案
- 会议记录与行动项跟踪表单
- 家庭农场农田合作协议
- 医院感染控制规范标准
- 机关单位办公设备使用管理
- ERCP护理题库及答案解析
- 2025年网络信息安全技术岗位专业知识试卷及答案解析
- 2025新款餐饮兼职合同模板
- 网络安全知识宣传科普主题班会课件
- 2025四川省水电投资经营集团有限公司所属电力公司员工招聘6人考试参考试题及答案解析
- 多家俱乐部转让合同范本
- 人工智能应用基础 课件 3.1AI办公
- 第二课 现代媒体艺术的类型和特点教学设计-2025-2026学年高中美术人美版2019选择性必修6 现代媒体艺术-人美版2019
- 2025年财政部高层次财会人才选拔考试综合试题及答案
- DL∕T28112024变电站二次系统通信报文规范
- 2025年“好年华 聚福州”(福州大学场)福州地铁高校毕业生招聘模拟试卷带答案详解
评论
0/150
提交评论