《课程设计实验说明书.doc》由会员分享,可在线阅读,更多相关《课程设计实验说明书.doc(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 课 程 设 计 说 明 书课程名称: 数 据 结 构 与 算 法 设计题目: 职 工 信 息 管理 院 系: 计算机科学与信息工程学院 学生姓名: 张 贺 贺 学 号: 7 专业班级: 软件工程(1)班 指导教师: 闫 怀 平 2012年 月 日课 程 设 计 任 务 书设计题目职工信息管理学生姓名张贺贺所在院系计算机科学与信息工程学院专业、年级、班10级软件工程(1)班设计要求:1、 职工信息保存在文本文件2、 排序:按不同关键字,对所有职工的信息进行排序,并输出排序结果。3、 查询:按特定条件查找职工。4、 修改:按姓名对某个职工的某项信息进行修改。5、 录入:录入职工的信息。6、 删除
2、:按姓名删除已离职的职工的信息。学生应完成的工作:每个职工的信息包括:编号、姓名、性别、出生年月、学历、职务、电话、住址等。系统能够完成职工信息的查询、更新、插入、删除、排序等功能。1. 设计职工信息的存储结构2. 根据系统需要实现的功能编写下列对应的实现函数:1) 录入职工信息的函数2) 按工号查找职工信息的函数3) 按姓名查找职工信息的函数4) 修改职工信息的函数5) 按姓名删除职工信息的函数6) 按工号排序职工信息的函数7) 显示职工信息的函数8) 退出职工信息管理系统的函数9) 对所有功能函数调用的主函数3. 编译并上机调试,得出正确实验结果4. 结果分析5. 撰写设计报告6. 准备设
3、计答辩参考文献阅读:1.数据结构(C语言版)严蔚敏 吴伟民 编著 2.C语言程序设计教程 谭浩强著工作计划:1、第一周的第一天:布置设计题目,考虑设计方向2、第一周的第二天:审题,查阅资料,进行设计前的必要资料准备。3、第一周的第三天、第四天、第五天:程序编写、上机调试4、第二周的第一天至第三天: 上机调试程序、结果分析。5、第二周的第四天: 撰写设计报告。6、第二周的第五天: 设计答辩及成绩评定。任务下达日期: 年 月 日 任务完成日期: 年 月 日指导教师(签名): 学生(签名): 职工信息管理系统摘 要: 针对企业职工信息管理的实际情况,本次课程设计模拟企业职工信息管理的系统。利用数据结
4、构及C语言的相关知识,建立职工信息管理系统的实现算法,将数据结构的有关算法思想应用于具体的实践之中。该系统要解决的是企业管理职工信息的问题,能够满足职工信息管理的基本要求,包括录入、查找、修改、排序、删除等功能。关键词:职工 信息 管理 结构体 实现函数 指针 目 录1.设计背景61.1课程设计目的61.2题目要求62.设计方案62.1设计方法62.2方法实现83. 方案实施83.1采用的数据结构说明及类型的定义83.2函数功能描述及相关函数的实现93.3程序中需说明的地方,如用到的宏及代表的意义164. 结果与结论 224.1测试数据及测试结果224.2实验结论265. 收获与致谢266.
5、参考文献277. 附件271. 设计背景1.1课程设计目的通过本课程设计,加深对面向对象程序设计C+课程所学知识的理解,熟练掌握和巩固C+语言的基本知识和语法规范,掌握使用面向对象程序设计语言C+,或面向对象开发平台Visual C+等,培养调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。学会编制结构清晰、风格良好的C+语言程序,从而具备利用计算机编程分析解决综合性实际问题的初步能力。1.2题目要求课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程. 通过课程设计,巩固和加深对哈希表等理论知识的理解;掌
6、握现实复杂问题的分析建模和解决方法,掌握包括问题描述、系统分析、设计建模、代码实现、结果分析等的方法;提高利用计算机分析解决综合性实际问题的基本能力;锻炼个人动手能力,历练自身素质。2.设计方案2.1设计方法2.11问题的分析和结构的设计思路1)职工信息管理系统的所有功能:录入职工信息,按工号查找职工信息,按姓名查找职工信息,修改职工信息,按姓名删除职工信息,职工信息按工号排序,显示职工信息,退出职工信息管理系统等功能。2)需要创建所有职工信息的存储结构。3)课程设计的目的是通过选择对的应的选项,进行相应的录入信息、查找、修改、删除、排序、心事、退出等操作。4)选择算法实现系统的各个功能。5)
7、选择合适的变量,来表示职工信息相应的姓名、工号、性别、年龄、地址、月薪、健康状况、教育程度、退出等,以及查找,排序等信息。6)当信息出错时,程序应给错误信息提示,使程序设计得全面周密。2.1.2职工信息管理系统的算法思想及设计本系统主要设计思想是实现对职工信息的录入、删除、排序、查询等主要功能。职工信息以文件的形式存储。系统的人际接口采用简单的字符界面进行交互。系统的设计方法是结构化设计方法,采用C语言进行开发。软件平台采用Visual C+6.0。1.录入职工信息职工信息管理系统2.查找职工信息3.修改职工信息4.删除职工信息5.排序职工信息6.显示职工信息0.退出职工信息系统2.2方法实现
8、2.21创建结构体typedef struct employee2.2.2编写函数建立具体的功能实现函数,如录入职工信息input()查找职工信息1.按工号查找numfind()2.按姓名查找namefind修改职工信息modify()删除职工信息delet()排序职工信息numsort()显示职工信息print()更新职工信息renew()主函数main()3. 方案实施3.1采用的数据结构说明及类型的定义1 职工信息队列的存储表示如下typedef struct employeechar name20; /姓名long num; /工号char sex5; /性别int age; /年龄c
9、har addr30; /地址int wage; /工资char health20; /健康状况char edu20; /教育程度struct employee * next;EMP;3.2函数功能描述及相关函数的实现1.主函数main()void main()EMP *fhead;int choice,flag=1;char s;while(flag)printf(n *n);printf( 欢迎使用职工信息管理系统! );printf(n);printf( *nn);printf( 主窗口菜单nn);printf(1.录入职工信息nn);printf(2.查找职工信息nn);printf(
10、3.修改职工信息nn);printf(4.删除职工信息nn);printf(5.排序职工信息(按工号)nn);printf(6.显示职工信息nn);printf(0.退出n);printf(n请选择: );scanf(%d,&choice);getchar();switch(choice)case 0: exit(0);case 1: input();break;case 2: system(cls);printf(na.按工号查找nn);printf(b.按姓名查找n);printf(n请选择: );scanf(%c,&s);getchar();fhead=open();if(s=a)num
11、find(fhead);else if(s=b)namefind(fhead);elseprintf(n输入错误!n);break;case 3: fhead=open();modify(fhead);break;case 4: fhead=open();delet(fhead);break;case 5: printf(n按工号排序nn);case 6: fhead=open();print(fhead);break;default: printf(n输入错误!n);printf(n按任意键返回主菜单!);getchar();system(cls);2.录入职工信息input()void i
12、nput()int flag=1;char s;FILE *fp;EMP *p,*p1,*p2,*head;head=p1=p2=(EMP *)malloc(LEN);while(flag=1)system(cls);printf(n姓名: );scanf(%s,p1-name);printf(n工号: );scanf(%ld,&p1-num);getchar();printf(n性别: );scanf(%s,p1-sex);printf(n年龄: );scanf(%d,&p1-age);printf(n地址: );scanf(%s,p1-addr);printf(n月薪: );scanf(%
13、d,&p1-wage);printf(n健康状况: );scanf(%s,p1-health);printf(n教育程度: );scanf(%s,p1-edu);getchar();printf(n是否继续录入?(y/n): );scanf(%c,&s);getchar();if(s=y)p2=p1;p1=(EMP *)malloc(LEN);p2-next=p1;elseflag=0;p1-next=NULL;p=head;if(fp=fopen(employee.txt,ab)=NULL)if(fp=fopen(employee.txt,wb)=NULL)printf(无法打开文件!n);
14、exit(0);while(p!=NULL)if(fwrite(p,LEN,1,fp)!=1)printf(无法保存!n);p=p-next;fclose(fp);printf(n录入成功!n);3. 将职工信息保存到文本文档中EMP * open()EMP * open(void)n=0;EMP *fhead,*p1,*p2;FILE *fp;fhead=NULL;p1=p2=(EMP *)malloc(LEN);if(fp=fopen(employee.txt,rb)!=NULL)fread(p1,LEN,1,fp);while(!feof(fp)n=n+1;if(n=1)fhead=p1
15、;elsep2-next=p1;p2=p1;p1=(EMP *)malloc(LEN);fread(p1,LEN,1,fp);p2-next=NULL;elsefp=fopen(employee.txt,wb);fclose(fp);return (fhead);4.按姓名查找职工信息namefind() void namefind(EMP * head) int a=0;char findname20;EMP *p;p=head;printf(n请输入姓名: );gets(findname);while(p!=NULL)if(strcmp(findname,p-name)=0)a=a+1;i
16、f(a=1)printf(n姓名 工号 性别 年龄 地址 月薪 健康状况 教育程度nn);printf(%-8s%-8ld%-8s%-8d%-14s%-9d%-12s%-8sn,p-name,p-num,p-sex,p-age,p-addr,p-wage,p-health,p-edu);p=p-next;if(a=0)printf(n没有姓名为 %s 的职工n,findname);5.按工号查找职工信息numfind()void numfind(EMP * head) int findnum,a=0;EMP *p;p=head;printf(n请输入职工号: );scanf(%ld,&find
17、num);getchar();while(p!=NULL)if(findnum=p-num)a=a+1;printf(n姓名 工号 性别 年龄 地址 月薪 健康状况 教育程度nn);printf(%-8s%-8ld%-8s%-8d%-14s%-9d%-12s%-8sn,p-name,p-num,p-sex,p-age,p-addr,p-wage,p-health,p-edu);p=p-next;if(a=0)printf(n没有工号为 %ld 的职工n,findnum);6.修改职工信息modify()void modify(EMP * head)EMP *p;int a=0;char fin
18、dname20;p=head;system(cls);printf(n请输入姓名: );gets(findname);while(p!=NULL)if(strcmp(findname,p-name)=0)a=a+1;printf(n姓名 工号 性别 年龄 地址 月薪 健康状况 教育程度nn);printf(%-8s%-8ld%-8s%-8d%-14s%-9d%-12s%-8sn,p-name,p-num,p-sex,p-age,p-addr,p-wage,p-health,p-edu);printf(n请修改!n);printf(n姓名: );scanf(%s,p-name);printf(n
19、工号: );scanf(%ld,&p-num);getchar();printf(n性别: );scanf(%s,p-sex);printf(n年龄: );scanf(%d,&p-age);printf(n地址: );scanf(%s,p-addr);printf(n月薪: );scanf(%d,&p-wage);printf(n健康状况: );scanf(%s,p-health);printf(n教育程度: );scanf(%s,p-edu);getchar();printf(n修改成功!n);p=p-next;if(a=0)printf(n没有姓名为 %s 的职工n,findname);e
20、lserenew(head);7.删除职工信息delet()void delet(EMP * head)int a=0;char c,findname20;EMP *p1,*p2;p1=p2=head;system(cls);printf(n请输入姓名: );scanf(%s,findname);getchar();while(p1!=NULL)if(strcmp(findname,p1-name)=0)a=a+1;printf(n姓名 工号 性别 年龄 地址 月薪 健康状况 教育程度nn);printf(%-8s%-8ld%-8s%-8d%-14s%-9d%-12s%-8sn,p1-name
21、,p1-num,p1-sex,p1-age,p1-addr,p1-wage,p1-health,p1-edu);printf(n确定删除该职工信息?(y/n): );c=getchar();getchar();if(c=y)if(p1=head)p1=p2=head=p1-next;elsep2-next=p1-next;free(p1);p1=p2;printf(n删除成功!n);p2=p1;if(p1!=NULL)p1=p1-next;else;if(a=0)printf(n没有姓名为 %s 的职工n,findname);elserenew(head);8.更新职工信息renew()voi
22、d renew(EMP * head)FILE *fp;struct employee *p;p=head;if(fp=fopen(employee.txt,wb)=NULL)printf(无法打开文件!n);exit(0);while(p!=NULL)if(fwrite(p,LEN,1,fp)!=1)printf(无法保存!n);p=p-next;fclose(fp);9.显示职工信息print()void print(EMP * head)EMP * p;p=head;system(cls);if(p=NULL)printf(n无任何信息!n);elseprintf(n姓名 工号 性别 年
23、龄 地址 月薪 健康状况 教育程度nn);while(p!=NULL)printf(%-8s%-8ld%-8s%-8d%-14s%-9d%-12s%-8snn,p-name,p-num,p-sex,p-age,p-addr,p-wage,p-health,p-edu);p=p-next;10.按工号排序numsort()void numsort(EMP * head)int i;EMP *p1,*p2,*p3,*end=NULL;p1=p2=p3=head;if(head!=NULL&head-next!=NULL)for(i=1;inext;while(p1!=end)if(p1-numnu
24、m)p2-next=p1-next;p1-next=p2;if(p2=p3)head=p1;elsep3-next=p1;p3=p1;p1=p2-next;elsep3=p2;p2=p1;p1=p1-next;end=p2;p1=p2=p3=head;renew(head);4. 结果与结论4.1测试数据及测试结果(宋体小四,1.5倍行距)1主函数中菜单选项测试,输入0-6以外的数,给出错误提示。结果如下:2.测试录入职工信息,结果如下:3.显示职工信息,结果如下:4.查找职工信息,结果如下:a.按工号查找:b.按姓名查找:5.修改职工信息,结果如下:6.按工号排序职工信息,结果如下:7.删除
25、职工信息,结果如下:8.退出系统,结果如下:4.2实验结论 通过以上程序演示的结果,其测试功能包含本次课程设计所要求的系统全部的功能,每个职工的信息包括:编号、姓名、性别、出生年月、学历、职务、电话、住址等,系统能够完成职工信息的查询、更新、插入、删除、排序等功能。1.数据结构的构造及初始化无误,能够满足员工信息储存的要求。2. 录入功能,结果2能够验证其效果。3. 显示所有职工,结果3可验证。4. 查找职工信息,可以由结果4显示。5. 修改职工信息可由结果5验证实现。6. 排序功能可通过结果6得以体现。7. 删除离职职工信息可由结果7实现。至此,本课程设计所提出的设计方法均得到有效的验证及证
26、实,各个功能均能完成其设计需要,各部分功能之间能够相互协调印证,整个设计的结果与预期相符。5. 收获与致谢经过一学期数据结构学习,我们基本掌握了基础知识,基本能够读懂别人用 c 语言设计的程序。 平时的程序设计大多是是按书本输入程序代码,虽然有所接触,但都不完全相同。而这两周的课程设计,却让我们完完全全用自己学到的知识编写一个完整的体统程序。这是一个新的挑战,也是一种新的学习。 我选择的是职工信息管理系统。这需要设计一个系统,可以输入信息、使之显示在屏幕上,进行删除、添加等对信息的修改。当我拿到这道题目时,觉得好难。以前的 C 语言学的不怎么好,导致现在课题中的某些算法不知道怎么去实现。后来,
27、老师对我们的课题内容进行了分析,为我们建好了程序的轮廓,让我们明白了我们的目标是什么,要做些什么,为我们指明了道路。往往组合之后会有很多错误的地方,我们要一个一个地去解决。感觉这次不仅仅是做课题,同时也让我学到了许多课堂上学不到的东西。其一,课堂上学到的知识,能否真正变成自己的东西,自如地运用到实际问题中,这需要通过实践去检验。其二,遇到问题,不可怕,可怕的是你遇到问题后置之不理。我们应该在错误中修正自己的错误,在失败中为成功积累经验。6. 参考文献1 严蔚敏,吴伟民. 数据结构(C语言版).清华大学出版社2谭浩强 .C语言程序设计.清华大学出版社7. 附件Employee.cpp /存放实验的代码指导教师评语:1、课程设计报告:a、内容: 不完整 完整 详细 b、方案设计: 较差 合理 非常合理c、实现: 未实现 部分实现 全部实现 d、文档格式: 不规范 基本规范 规范 2、出勤: 全勤 缺勤 次3、答辩: a、未能完全理解题目,答辩情况较差 b、部分理解题目,部分问题回答正确 c、理解题目较清楚,问题回答基本正确 d、理解题目透彻,问题回答流利 课程设计报告成绩: ,占总成绩比例: 50% 课程设计其它环节成绩:环节名称: 出勤 ,成绩: ,占总成绩比例: 20% 环节名称: 答辩 ,成绩: ,占总成绩比例: 30% 总 成 绩: 指导教师签字:年 月 日
限制150内