ImageVerifierCode 换一换
格式:DOCX , 页数:40 ,大小:148.34KB ,
资源ID:26469344      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26469344.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(职工管理系统课程设计报告.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

职工管理系统课程设计报告.docx

1、职工管理系统课程设计报告分类号 编 号 华北水利水电学院North China Institute of Water Conservancy and Hydroelectric Power 课 程 设 计题目 职工管理系统 院 系 信息工程学院 专 业 计算机科学与技术 姓 名 学 号 指 导 教 师 2012年7月 6 日1 需求分析职工管理系统是一个工作单位不可缺少的管理工具,它管理的数据对于公司的决策者和管理者来说都至关重要,所以职工管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来各个公司基本上都是靠传统的人工方式来管理职工信息,这种管理方式存在着许多缺点,如:效率低、保

2、密性差,另外时间一长,将产生大量的文件和数据,这对于信息的查找、更新和维护都带来了不少的困难。 当今社会,信息迅速膨胀,随着各个公司的规模增大,有关信息管理工作所涉及的数据量越来越大,职工信息量也大大增加,利用传统的手工查询、登记、修改等方法的处理速度远远跟不上公司的需求,有的公司不得不靠增加人力、物力来进行信息管理。 随着计算机技术的不断提高,计算机作为知识经济时代的产物,其强大的功能已为人们深刻认识,它已进入人类社会的各个行业和领域并发挥着越来越重要的作用,成为人们工作和生活中不可缺少的一部分。而作为计算机应用的一部分,使用计算机对职工进行管理,具有手工管理所无法比拟的优点。例如:检索迅速

3、、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高职工管理的效率,也是公司的科学化、正规化管理和与世界接轨的重要条件。职工管理系统作为一种管理软件正在各公司中得到越来越广泛的应用,且已达到了良好效果。简单的职工管理系统:1.1 问题描述对单位的职工进行管理,包括插入、删除、查找、排序等功能。1.2 要求职工对象包括姓名(字符串)、性别(字符)、出生年月(数字)、工作年月(数字)、学历(字符串)、职务(字符串)、住址(字符串)、电话(字符串)等信息。(1)新增一名职工:将新增职工对象按姓名以字典方式职工管理文件中。(2)删除一名职工:从职工管理文件中删除一名职工对

4、象。(3)查询:从职工管理文件中查询符合某些条件的职工。(4)修改:检索某个职工对象,对其某些属性进行修改。(5)排序:按某种需要对职工对象文件进行排序。1.3 实现功能(1)由键盘输入职工对象,以文件方式保存。程序执行时先将文件读入内存。(2)对职工对象中的“姓名”按字典顺序进行排序。(3)对排序后的职工对象进行增、删、查询、修改、排序等操作。2 概要设计 2.1输入功能的实现:要想实现职工管理系统的输入,必须要建立一个职工信息系统的抽象数据类型,其中职工信息以链表的存储方式实现。由键盘输入职工对象,以文件方式保存。程序执行时先将文件读入内存。2.2 系统处理功能的实现:系统管理员根据公司的

5、人员流动情况,在提示信息的提示下,选择相应的服务进行操作。如对职工对象中的姓名按字典顺序进行排序;对排序后的职工对象进行增、删、查询、修改、排序等操作。2.3 输出功能的实现:根据选择的操作,输出与之对应的信息。综上可以绘制出职工管理功能的系统流程图,如图1所示图1 系统流程图2.4 系统功能结构根据职工管理系统问题的分析和设计要求,可以得到该职工管理系统可以分为五个模块:职工信息添加模块、职工信息修改模块、职工信息删除模块、职工信息查询模块、职工信息排序模块。其系统功能结构如图2所示。 图2 系统功能结构图2.5 模块函数构造根据系统功能结构图的描述,可以构造出该系统的抽象数据类型和相对应的

6、函数,其方法名和功能如表1所示。 表1 函数功能表模块函数或数据结构功能链表数据类型typedef struct Enode定义链表结点void InitLst(Employee *&head)初始化链表系统处理模块void FirstInsert(Employee *&head)插入职工信息int DeleteByName(Employee *&head,char *name)删除职工信息int AlterLst(Employee *&head,char *name)修改职工信息int Save(Employee *&head)保存职工信息int Load(Employee *&head)加

7、载职工信息void Search(Employee *&head,int &n)查询职工信息void SortByBorn(Employee *&head)职工信息排序输出模块void Display(Employee *&head)显示职工信息2.6 模块间调用关系根据需求分析和概要分析,可得出职工管理系统的各模块调用关系。如图2所示图3 模块调用关系图3 详细设计3.1抽象数据类型定义(1)定义表结点(typedef struct Enode)typedef struct Enode /职工结点类型 char EnameMAXSIZE; /姓名 char sex3; /性别 char bo

8、rnDate11; /出生日期 char workDate11; /工作日期 char degreeMAXSIZE; /学历 char jobMAXSIZE; /职位 char addressMAXSIZE;/地址 char teleNum12; /电话号码 Enode *next; Employee; (2)初始化链表(void InitLst(Employee *&head)void InitLst(Employee *&head) /初始化职工链表 head =(Employee *)malloc(sizeof(Employee); head-next=NULL;3.2 主函数设计(1)

9、根据详细设计要求,可以得到主函数代码及其对应的程序流程图:在主函数中,实现了友好的界面设计。系统需要输入职工的基本信息:姓名、性别、出生年月、工作年月、学历、职务、住址、电话等。这个系统还利用键盘输入提供的主菜单服务,在主菜单中,有七种操作的调用:新增职工信息:void FirstInsert(Employee *&head) /添加职工信息查询职工信息:void Search(Employee *&head,int &n)/按属性查找职工删除职工信息:int DeleteByName(Employee *&head,char *name)/根据姓名删除修改职工信息:int AlterLst(

10、Employee *&head,char *name)/修改职工信息职工信息排序:void SortByBorn(Employee *&head)/按出生日期排序(选择法) void SortByName(Employee *&head) /按姓名排序(冒泡法)保存职工信息:int Save(Employee *&head) /将职工信息保存到文件中显示职工信息:void Display(Employee *&head) /显示职工信息函数代码见附录3.3 查找算法设计在查询算法中,职工管理系统提供了七种查询操作,实现了系统的人性化查询操作。这些查询操作分别为:对姓名进行查询,对性别进行查询,

11、对出生年月进行查询,对工作年月进行查询,对学历进行查询,对职位进行查询,对住址进行查询,对电话进行查询等一些列操作。查找算法中,利用链表的指针的移动扫描整个职工信息表,利用strcmp()函数判断字符串是否匹配。查询算法的核心代码为:void Search(Employee *&head,int &n)/按给定信息查找职工 if( head =NULL |head-next=NULL) return ; int flag=0; Employee *p=head-next; switch(n) case 2: char born11; coutborn; cin.ignore(); while(

12、p) if(strcmp(p-bornDate,born)=0) Print(p); flag=1; p=p-next; if(!flag) cout不存在此职工!; break; case 3: char work11; coutwork; cin.ignore(); while(p) if(strcmp(p-workDate,born)=0) Print(p); flag=1; p=p-next; if(!flag) cout不存在此职工!; break; case 4: char degreeMAXSIZE; coutdegree; cin.ignore(); while(p) if(s

13、trcmp(p-degree,degree)=0) Print(p); flag=1; p=p-next; if(!flag) cout不存在此职工!; break; case 5: char jobMAXSIZE; coutjob; cin.ignore(); while(p) if(strcmp(p-job,job)=0) Print(p); flag=1; p=p-next; if(!flag) cout不存在此职工!; break; case 6: char addressMAXSIZE; coutaddress; cin.ignore(); while(p) if(strcmp(p-

14、address,address)=0) Print(p); flag=1; p=p-next; if(!flag) coutnext=NULL) cout职工信息为空!next; cout职工信息如下:endl; cout*; cout*endl; cout.setf(ios:left,ios:adjustfield); coutsetw(10)姓名; coutsetw(6)性别; coutsetw(12)出生日期; coutsetw(12)工作日期; coutsetw(8)学历; coutsetw(8)职位; coutsetw(8)地址; coutsetw(12)电话号码endl; whil

15、e(p) cout.setf(ios:left,ios:adjustfield); coutsetw(10)Ename; coutsetw(6)sex; coutsetw(12)bornDate; coutsetw(12)workDate; coutsetw(8)degree; coutsetw(8)job; coutsetw(8)address; coutsetw(12)teleNumnext; 4 测试与分析测试是使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验是否满足规定的需求或弄清预期结果与实际结果之间的差别。职工信息有:姓名、性别、出生年月、工作年月、学历、职务、住址、

16、电话。在数据输入时注意数据类型:现有6组测试数据:姓名、性别、出生年月、工作年月、学历、职务、住址、电话胡文云 女 1990-06 2010-11 本科 职工 新乡 1234李明 男 1988-09 2010-11 研究生 经理 郑州 123456思彤 女 1988-11 2011-11 研究生 经历 郑州 12435654王芳 女 1990-11 2010-11 研究生 经历 许昌 12435654月牙 女 1987-09 2009-11 本科 经理 新郑 123687赵灵歌 女 1989-09 2011-11 本科 职工 郑州 123系统运行结果:4.1 进入职工管理系统主界面:图 4 进

17、入职工管理系统主界面4.2 选择6显示文件中的所有职工信息: 图 5 显示职工信息4.3 选择4进入查询子菜单,查询给定信息的职工:图6显示查询子菜单(1)选择1查询给定姓名为李明的职工的信息:图7显示姓名为李明的所有职工的信息(2) 选择2查询出生日期为1990-11的所有职工的信息:图8显示出生日期为1990-11所有职工的信息选择3查询工作日期为2010-11的所有职工的信息:(3) 选择4查询学历为研究生的所有职工的信息:图9显示学历为研究生所有职工的信息(4) 选择5查询职位为职工的职工的信息:图10显示职位为职工所有职工的信息(5) 选择6查询地址为郑州的所有职工的信息:图11显示

18、地址为郑州的所有职工的信息五 用户使用说明进入职工管理系统,首先看到的就是欢迎界面,提示:选择1添加职工信息,按提示,按次序依次输入职工的姓名、性别、出生年月、工作年月、学历、职务、电话的信息(注意是依次输入,中间可以用空格,tab,回车做切换输入),输完信息后自动回到主界面,根据提示:-1.退出管理系统 1.添加职工信息2.删除职工信息3.修改职工信息4.查询职工信息5.选条件排序6.显示职工信息,输入相应操作的数字,如-1,退出职工管理系统;如1,提示依次输入职工信息,录入完毕自动返回主界面;如2,提示输入要删除的职工的姓名,成功正确返回,错误有提示信息删除失败;如3,提示输入要修改信息的

19、职工姓名,然后进行依次修改职工所有信息;如4,提示查询方式,进入查询子菜单:0.退出查询子菜单,回到主菜单1.按姓名查询2.按出生日期查询3.按工作日期查询,4.按学历查询5,按职位查询6按地址查询,输入相应编号进行查询;如5,提示方式排序,进入排序子菜单:0.退出排序系统子菜单,回到主菜单1.按姓名排序2.按出生日期排序;如6,显示系统内所有职工信息;6 总结本次课程设计是围绕数据结构进行。根据问题描述可知,需要解决问题并不复杂,整个问题只需要实现一个职工管理系统功能,那就是在这个系统中实现对职工信息的插入、删除、查询、排序、修改以及保存。但是,为了实现该功能,却需要优秀的算法和数据结构以保

20、证实现的时间和空间效率。把职工信息存储在一个单链表中,利用指针实现对职工信息的各项基本操作。虽然设计的程序完成了题目描述所需要实现的功能,但是仍然存在不如人意的地方。那就是可以排序上面多设计几个算法。实现多角度排序。在这个系统中没有职工序号的信息,所以允许职工姓名相同,在很大程度上面,可能是的职工信息重复。经过这次数据结构课程设计,我们不仅及时巩固的了数据结构、算法、以及软件工程的知识,并明白数据结构和算法对于程序时间和空间性能的影响,及软件工程提供的开发流程和工具对于实现特定功能程序的重要意义。当我们面对一个实际问题,应该迅速根据问题性质和特点抽象成特定的数据结构,当然每个问题都有可能能够抽

21、象成多种数据结构,每种数据结构适应于不同的算法。因此应该综合考虑这样的数据结构、算法以及它们的空间和时间效率,然后从中选择一个作为实现程序的基础。此外,对程序的测试应该要仔细,根据模块的特点和测试阶段,采用各种软件测试方法对程序进行测试,确保各个模块的正确性和完整性,最后集成起来测试其是否正确和完整地实现了问题描述中要求的功能。参考文献:1 李云清,杨庆红,揭安全.数据结构(C语言版)M.北京:人民邮电大学出版社,2004.62 潘彦.算法设计与分析基础M.北京:清华大学出版社,2007.13 肖梦强,曲秀清.软件工程原理、方法与应用 M.北京:中国水利水电出版社,2005.104 吕凤翥.C

22、+语言程序设计(第2版)M.北京:电子工业出版社,2007.25 严蔚敏,吴伟民.数据结构(C语言版)M.北京:清华大学出版社,2002.96 谭浩强.C程序设计(第四版)M.北京.清华大学出版社,2010.6附录:程序源代码:#include #include #include #include #include #include /头文件#define MAXSIZE 20typedef struct Enode char EnameMAXSIZE; /姓名 char sex3; /性别 char bornDate11; /出生日期 char workDate11; /工作日期 char

23、degreeMAXSIZE; /学历 char jobMAXSIZE; /职位 char addressMAXSIZE;/地址 char teleNum12; /电话号码 Enode *next; Employee; /职工结点类型void InitLst(Employee *&head) /初始化职工链表 head =(Employee *)malloc(sizeof(Employee); head-next=NULL;int CheckSex(char* s) /检查性别是否合法 if(strcmp(s,男)=0| strcmp(s,女)=0) return 1; else return

24、0;int CheckName(Employee *&head,char *name)/检查姓名是否合法 Employee *p=head-next; if(name=NULL) return 1; else while(p) if(strcmp(p-Ename,name)=0) return 1; p=p-next; return 0 ;void Print(Employee *&p) /用以输出满足查询条件的职工信息 coutendl; cout.setf(ios:left,ios:adjustfield); coutsetw(10)Ename; coutsetw(6)sex; couts

25、etw(12)bornDate; coutsetw(12)workDate; coutsetw(8)degree; coutsetw(8)job; coutsetw(8)address; coutsetw(12)teleNumnext=NULL; cout请输入职工相关信息:endl; cin.ignore(); coutp-Ename; cin.ignore(); while( head-next !=NULL & CheckName(head,p-Ename) coutp-Ename; cin.ignore(); coutp-sex; cin.ignore(); while(!CheckSex(p-sex) coutp-sex; cin.ignore(); coutp-bornDate; cin.ignore(); coutp-workDate; cin.ignore(); coutp-degree; cin.ignore(); coutp-job; cin.ignore(); coutp-address; cin.ignore(); coutp-teleNum; cin.ignore(); p-next=head-next; head-next=p; cout信息插入成功!endl;int DeleteByName(Employee *&

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1