*******************实践教学******************江西理工大学软件学院2012年春季学期C++语言程序设计课程设计(第四组)题目:职工信息管理系统专业班级:_______姓名:________学号:112121指导教师:吉宝玉成绩:____2012年6月25日目录摘要·················································0前言·················································0正文·················································01.系统功能分析······································02.系统总体设计····································03.详细设计············································04.系统测试············································05.软件使用说明书···································0设计总结·····················································0参考文献·····················································0致谢························································0附录:原程序代码·········································0摘要随着经济的高速发展,一个好的职工信息管理程序在企业及用人单位扮演着重要的角色,为了设计一个功能强大的职工信息管理系统,在设计中我们做出了明细分工,目的是要让本组成员都从这次课程设计中学到编程经验与团队精神。“职工信息管理系统”,系统以菜单方式工作,编写存放有职工基本信息,包含职工工号,姓名,性别,出生年月,学历,职务,工资,住址,电话等,并且要求录入职工号不重复;录入的职工号信息要求用文件形式保存,并可以对其进行浏览、查询、修改、删除等基本操作,建立职工信息管理的文件。关键词:职工信息管理;文件;浏览;查询;修改。前言随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展要高效率的把内部活动有机的组织起来,就必须建立自身特点相适应的管理信息系统。本组设计的是一个关于职工信息管理的数据库系统,通过这个系统,管理员可以简捷方便的对职工信息进行增加、删除、修改等功能,而用户也可以通过这个系统对职工信息进行查询等功能。在日益发展的现代社会,一个高效实用的职工信息管理系统已经是企业必不可少的一个管理工具,它可以使企业在管理方面减少很多时间,本课程设计针对现代社会企业对员工信息的管理而设计,使员工的管理更加的简捷,更加的方便,界面友好,易于操作。采用的的开发环境是visualstdio2008.在设计中,我们放弃的传统的面对过程的结构化设计思想,因为面向过程的结构体的或链表的方法存储每个员工的静态属性:编号、姓名、性别、年龄、电话、工资等数据有很多的不方便也有很多的不安全,所以我们采用C++的对象的编程思想来把每个员工的数据封装成一个人员的对象。使得操作的方式更加的合理,安全。也使本组课程设计的成员更加的了解面向对象程序设计的解决问题的思维方式。正文一.系统功能分析该职工管理系统针对员工信息数据的处理设计了以下功能:1.添加职工信息添加员工信息,提供员工信息的添加,在该模块中设计了安全检查机制,即确认是否添加员工的信息,若对员工信息的添加不满意,则可以选择重新输入。还设置有返回主菜单的选项以方便用户。2.修改职工信息修改员工信息设置了员工人数检查,果员工人数NUM的值为0,则返回主菜单。如果员工人数NUM不为0,则进入删除员工信息的界面。修改员工信息板块功能强大,界面友好,用循环控制修改某员工属性,这样使得操作极为方便。3.删除职工信息删除员工信息中设计了对员工人数的检查,如果员工人数NUM的值为0,则返回到主菜单。如果员工人数NUM不为0,则进入删除员工信息的界面。界面包括员工信息列表,和删除选项,方便用户的操作。4.员工职工查找通过find()函数进行查找。该函数比较简单,通过循环一次比较Per[n].num是否与你输入的num是否相等,如果相等,则输入到屏幕上,如果未找到任何匹配的员工,则显示“未找该员工”。5.保存职工信息保存员工的信息,即为将当前所有的员工的信息存入到workerlist.txt中。这里我们采用的是C++的ofstream的写入文件的对象进行控制。6.职工信息的排序对员工信息进行排序,包括按员工编号排序(从小到大),按员工工资进行排序(从高到低)。其中也设置了员工人数检查机制,即:如果员工的人数为0,则直接返回主菜单。7.职工信息的显示对职工信息进行显示,包括职工的工号,姓名,年龄,学历,工资地址,电话等信息。方便对员工了解。二.系统总体设计1,编写要求:1)先声明职工人员结构,该结构中包含编号、姓名、出生年月、性别,职称,部门,基本工资等成员变量,并定义人员结构数组;2)编写主函数,要求提供一界面,允许工作人员输入、修改和删除员工信息;3)将员工信息分别按编号由小到大、基本工资由大到小的顺序进行显示,要求采用不同的排序算法;4)给出某员工编号,可对该员工信息进行查找,若找到,显示相应信息,否则显示“该员工不存在”,要求用顺序查找和二分查找法进行查找;5)将所有职工信息保存在磁盘上。界面:***********************************************员工管理系统**-------------------------------**1.职工信息输入**2.职工信息修改**3.职工信息删除**4.职工信息查找**5.职工信息保存**6.职工工资排行**7.职工信息显示**0.退出***********************************************2,编写目的:完成题目所要求的全部功能,并加入本组自己的设计风格,在界面友好的基础上,增加一些附加功能,使得功能更为强大,最终得到一个可靠性高,易于操作的职工信息管理的系统。3,功能划分该系统可以按功能进行模块划分,如图系统模块图其中:(1)主菜单模块完成用户命令的接受,此模块也是职工信息管理的入口,用户所要进行的各种操作均需在此模块中进行选择,并进而调用其他模块实现相应的功能。(2)信息添加模块完成职工信息的输入功能,输入信息包括职工号、姓名、性别,出生年月、学历、职务、工资、住址、电话等。(3)信息显示模块完成已录入职工信息的显示。(4)信息查询模块完成职工信息的查询,查询时对应有按编号查询和按姓名查询两种方式。(5)信息修改模块完成职工信息的修改功能。(6)信息删除功能模块完成职工信息的删除功能。(7)信息排序模块完成对职工信息的排序,排序内容包括工号,工资等。(8)信息保存模块完成对职工信息的保存。主菜单添加职工信息修改职工信息职工删除信息职工信息查询职工信息排序保存员工信息Switch()退出While()开始main()读取数据4.数据结构本系统中主要的数据结构就是职工的信息,包含职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等,在处理过程中各项可以作为一个职工的不同属性来进行处理。5.程序流程系统的执行应从功能菜单选择开始,依据用户的选择来进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。系统的流程图如图所示:开始菜单选择输入?浏览?查询?修改?否否删除?信息输入信息浏览信息查询信息修改信息删除是是是是是结束否否否UML图Class_cout:string_num:string_workerlist:string+add:void+dele:void+modify:void+save:void+search:void+showworker:void+sort:void+workerlist:void三.详细设计(编码实现)小组模块分工(本人负责:职工信息修改模块与保存模块)voidWorkerList::modify()//职工信息修改函数实现{if(NUM=0){cout没有职工信息存入,系统将返回主菜单endl;menu();}else{cout职工信息如下:endl;cout工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话endl;for(inti=0;icount;i++)coutw[i].num'\t'w[i].name'\t'w[i].sex'\t'w[i].edu'\t'w[i].age'\t'w[i].salary'\t'w[i].address'\t'w[i].telendl;}cout请输入需要修改信息职工的工号:endl;stringnum1;cinnum1;intj=0,k;intflag=1;while(flag){for(;jcount;j++){if(num1==w[j].num){flag=0;k=j;break;}}if(flag){cout不存在此员工,请重新输入:endl;j=0;cinnum1;}}cout你选择的职工的信息为:endl;cout工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话endl;coutw[k].num'\t'w[k].name'\t'w[k].sex'\t'w[k].edu'\t'w[k].age'\t'w[k].salary'\t'w[k].address'\t'w[k].telendl;coutendl;cout***********************************************endl;cout**1.修改工号**endl;cout**2.修改姓名**endl;cout**3.修改性别**endl;cout**4.修改学历**endl;cout**5.修改年龄**endl;cout**6.修改工资**endl;cout**7.修改地址**endl;cout**8.修改电话**endl;cout**0.返回主菜单**endl;cout***********************************************endl;coutendl;cout请选择数字编号~8endl;inti3;cini3;while(i30||i38){cout输入有误,请重新输入:endl;cini3;}switch(i3){case1:cout请输入新的职工工号:;cinw[k].num;cout修改信息已保存,现返回主菜单:endl;menu();break;case2:cout请输入新的职工姓名:;cinw[k].name;cout修改信息已保存,现返回主菜单:endl;menu();break;case3:cout请输入新的职工性别:;cinw[k].sex;cout修改信息已保存,现返回主菜单:endl;menu();break;case4:cout请输入新的职工学历:;cinw[k].edu;cout修改信息已保存,现返回主菜单:endl;menu