




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
沈 阳 航 空 工 业 学 院 课程设计 学 号 200704021127班 级7402104 姓 名 张玉龙指导教师 尹航2008年 9月 12日沈阳航空工业学院课程设计任务书电子信息工程学院 电子信息工程专业 7402104班 200704021127一、课程设计题目:用简单链表管理员工信息二、课程设计工作自2008年9月8日起至2008年9月12日止三、课程设计内容:运用所学的C语言知识,编制和调试程序,具有如下功能:从键盘输入4位员工的信息到动态创建的线性单向链表中;然后通过访问该链表,将其中的所有节点中的员工信息存放到文件myfile.dat中。每位员工的信息如下:杜永宁软件部5760王传华销售部3920殷 泳培训部2940杨柳青软件部5440。四、课程设计要求:程序质量:l 贯彻结构化程序设计思想。l 用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。l 用户界面中的菜单至少应包括“运算选项”、“数据输入”、“保存结果”、“退出”4项。l 代码应适当缩进,并给出必要的注释,以增强程序的可读性。课程设计说明书:课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下:l 封面l 课程设计任务书l 目录l 需求分析(分析题目的要求)l 程序流程图(总体流程图和主要功能模块流程图)l 核心技术的实现说明及相应程序段l 个人总结l 参考资料l 源程序及适当的注释指导教师: 学生签名: 五、成绩:六、教师评语:沈 阳 航 院 设 计 用 纸目录一、需求分析1二、程序流程图2三、核心技术的实现说明及相应程序段4四、个人总结7五、参考文献7六、源程序811一、需求分析经过对程序设计题目的分析可知,整个程序的设计实现大致分为三个模块,其中每一个模块对应一个函数,他们的功能分别是输入员工信息函数,显示员工信息的函数和保存员工信息的函数,具体如下:1 定义一个结构体,分别输入员工的姓名、所在部门和编号信息。2 创建三个自定义子函数,用于输入、显示和保存。3 创建主函数,通过主函数实现对子函数的调用执行程序设计任务。4 退出函数,实现终止程序的执行。 退出函数属于附加函数,可以在一次运行当中循环执行所有的功能,并根据需要最终终止程序的执行。每一个员工的纪录都包含姓名、所在部门、编号三个信息。 在程序当中,将员工信息类型定义为结构体类型,添加的员工信息直接写入d盘的myfile.dat文件中,现实函数每次对员工纪录的访问,其数据来源都是myfile.dat文件。二、程序流程图1、程序总体结构图开 始 打开文件 XUANZE!=0 N YChoice=manu()保 存显示员工信息输入员工信息退 出 图1程序总体结构图2、具体功能框图 (1)向链表添加节点的函数Insertlistp为整个链表的头,in为要插入的节点,t为新节点 p=Null Return t 如果 p-next为真p=p-nextp-next=t;return h (2)输出信息函数Print定义初始化数据输出“姓名”,“部门”,“编号” 当(out!=Null)out=out-next(3)保存信息函数Save如果文件为空Return 0 p!=Nullp=p-next 三、核心技术的实现说明及相应程序段本程序主要由一个定义的结构体、三个子函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。在这些函数当中,输入员工信息函数、显示员工信息函数和保存信息函数是程序中较为核心的部分,下面分别进行说明。1添加员工信息的函数CHARU (1)该函数用于插入节点,定义了文件指针,打开员工信息的文件。 (2)如果输入的数据为空,则返回t,如果输入的数据不为空,则由p=p-next输出下一个节点。具体函数段如下,struct yuangong *CHARU(struct yuangong *p, const struct yuangong * in) /*从链表插入一个节点*/ struct yuangong *t=(struct yuangong *)malloc(sizeof(struct yuangong),*h=p;*t=*in;t-next=NULL;if(p=NULL)return t;elsewhile(p-next)p=p-next; p-next=t;return h; 2输出信息的函数SHUCHU SHUCHU的作用在于显示出输入的员工信息,当进入系统后通过选择自动显示所有员工的信息。Out先指向第一个结点,当输出完第一个结点之后,out指向第二个结点。程序中out=-next的作用是将out原来所指向的结点中next的值赋给out,而out-next的值就是第二个结点的起始地址。将它赋给out,就是使out指向第二个结点。具体函数段如下,void SHUCHU(const struct yuangong *out) /*输出信息的子函数*/ printf(*n);printf(%-30s%-30s%-30sn, 姓名,部门,编号);while(out!=NULL) printf(%-30s%-30s%-30dn, out-name, out-bumen, out-num); out=out-next; 3保存信息函数BAOCUN 如果文件为空,则返回;如果文件不为空并且有数据,则保存成功,p=p-next就指向下一个节点。具体函数段如下,void BAOCUN(struct yuangong *p) /*保存信息的子函数*/ int i; FILE *fp; if(fp=fopen(d:myfile.dat,wb)=NULL) return; for(i=0;p!=NULL;i+) if(fwrite(p,sizeof(struct yuangong),1,fp)!=1) printf(保存失败!); p=p-next; fclose(fp); 4主函数 在主函数中我应用了switch函数,通过多分支选择语句对三个子菜单进行调用,供选择。具体函数段如下,main() int XUANZE; struct yuangong *start=NULL,t; FILE *fp; if(fp=fopen(myfile.dat,rb)=NULL) return 0; while (XUANZE=memu() !=4) switch (XUANZE) case 1: printf(*请输入员工的姓名、部门、编号 以ENTER键间隔:*n); scanf (%s%s%d,&,&t.bumen,&t.num); start=CHARU(start,&t); break; case 2: SHUCHU(start); break; case 3: BAOCUN(start); printf(保存成功!n); break; default: puts(错误:非法命令 !); break; SHUCHU(fp, start); return 0; 四、个人总结 一周的C语言课设使我受益匪浅,刚看到这个题目一点概念都没有。但经过向同学请教和查找资料,我建立一个链表,学会向链表插入节点。在编程序的过程汇中,有一点差错,就会使整个程序无法运行。当脚踏实地的把每个问题都解决后,成功了。所以在以后的学习中我们要多动脑、多思考、多讨论,更重要的是动手才会找出你的缺点。五、参考文献1 谭浩强C程序设计北京:清华大学出版社,2005六、源程序#include#include#include#define P 40struct yuangong /*定义一个结构体*/ char name P; char bumen P; int num; struct yuangong *next; ; struct yuangong *CHARU(struct yuangong *p, const struct yuangong * in) /*从链表插入一个节点*/ struct yuangong *t=(struct yuangong *)malloc(sizeof(struct yuangong),*h=p;*t=*in;t-next=NULL;if(p=NULL)return t;elsewhile(p-next)p=p-next; p-next=t;return h; void SHUCHU(const struct yuangong *out) /*输出信息的子函数*/ printf(*n);printf(%-30s%-30s%-30sn, 姓名,部门,编号);while(out!=NULL) printf(%-30s%-30s%-30dn, out-name, out-bumen, out-num); out=out-next; void BAOCUN(struct yuangong *p) /*保存信息的子函数*/ int i; FILE *fp; if(fp=fopen(d:myfile.dat,wb)=NULL) return; for(i=0;p!=NULL;i+) if(fwrite(p,sizeof(struct yuangong),1,fp)!=1) printf(保存失败!); p=p-next; fclose(fp); int menu(void) /*菜单*/ int a; printf(*n); printf(* 输入1请输入员工信息 *n * 输入2显示员工信息 *n * 输入3保存 *n * 输入4退出 *n); printf(*n); scanf(%d,&a); return(a); main() /*主函数*/ int XUANZE; struct yuangong *start=NULL,t; FILE *fp; if(fp=fopen(d:myfile.dat,w)=NULL) return 0; while (XUANZE=menu() !=4) switch (XUANZE) case 1: printf(*请输入员工的姓名、部门、编
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年区块链金融行业应用前景研究报告
- 2025年医疗健康行业智能医疗设备市场前景展望报告
- 国家事业单位招聘2025国家海洋标准计量中心招聘应届毕业生拟聘人员笔试历年参考题库附带答案详解
- 吉林省2025年吉林白城通榆县事业单位引进急需紧缺人才笔试历年参考题库附带答案详解
- 南宁市2025广西南宁市青秀区委政法委招聘2人笔试历年参考题库附带答案详解
- 克拉玛依市2025新疆克拉玛依市企事业单位高层次急需紧缺人才引进(493人)笔试历年参考题库附带答案详解
- 乌兰察布市2025内蒙古乌兰察布市四子王旗高层次和紧缺急需人才引进46人笔试历年参考题库附带答案详解
- 2025重庆国咨数据服务有限公司招聘18人笔试参考题库附带答案详解
- 2025甘肃张掖市发展投资集团有限公司招聘专业技术人员6人笔试参考题库附带答案详解
- 2025河南空港数字城市开发建设有限公司第一批社会招聘20人笔试参考题库附带答案详解
- 危重患者皮肤管理课件
- 2025年国防教育知识竞赛试题(附答案)
- 工伤受伤经过简述如何写
- 银行现金取款申请书
- 人事外包招聘代理合同
- 数字经济学-课件 第3章 数字技术
- AI引领时尚设计新潮-个性化需求的新一代解决方案
- 高二数学直线倾斜角与斜率同步练习题
- 2024-2030年全球及中国热障涂层(TBC)行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- 大轻质泡沫混凝土研究报告
- 室内装修工程质量保障措施方案
评论
0/150
提交评论