第2页目录1系统需求分析.............................................................................................................................................32总体设计.....................................................................................................................................................43详细设计及实现.........................................................................................................................................74系统调试...................................................................................................................................................695结论..........................................................................................................................................................736心得体会...................................................................................................................................................747参考书目....................................................................................................................................................75知行合一行胜于言第3页1系统需求分析1.1系统设计的目的与意义:现在的公司人员数量及职位种类较多,各样的人事管理活动也比较频繁,因此需要设计一个公司人员信息管理系统来对公司员工信息进行管理。1.2系统功能需求:本系统有五个类:基类:employee、派生类:manager、technician、salesman、salesmanager,储存经理、技术人员、销售人员、销售经理信息。(1)添加功能程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求人员的编号要唯一,如果添加了重复编号的记录时,则提示用户数据添加重复并取消添加。(2)查询功能可根据编号、姓名等信息对已添加的记录进行查询。如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。(3)显示功能可显示当前系统中所有记录。(4)修改功能可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。(5)删除功能对已添加的人员记录进行删除。如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作;否则输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存在。(6)统计功能能根据多种参数进行人员的统计。例如:统计四类人员数量以及总数,统计男、女员工的数量,统计平均工资、最高工资、最低工资等。(7)保存功能将当前系统中各类人员记录存入文件中。(8)读取功能将保存在文件中的人员信息读入到当前系统中,以供用户使用。知行合一行胜于言第4页2总体设计2.1系统功能分析:系统通过调用函数来实现信息添加、信息查询、信息显示、信息修改、信息删除、以及数据读取保存文件等功能。add()函数用于录入信息;search()函数用来查询信息;show()函数用来显示信息;alter()函数用来修改信息;del()函数用来删除信息;stat()函数用来统计信息read()函数用于将文件中的数据读取到内存中;save()函数用于将内存中的信息存入文件内;主函数main()用于调用这些函数。2.2系统功能模块划分与设计:系统定义了manger类、technician类、salesman类、salesmanger类这四个类,定义了add()、search()、show()、alter()、del()、stat()、read()、save()、input()、output()等函数来实现系统所需功能。2.3系统功能模块图:公司人员信息管理系统经理信息管理技术人员信息管理销售人员信息管理销售经理信息管理经理信息添加经理信息查询经理信息显示经理信息修改经理信息删除经理信息统计技术人员信息添加技术人员信息查询技术人员信息显示技术人员信息修改技术人员信息删除技术人员信息统计销售人员信息添加销售人员信息查询销售人员信息显示销售人员信息修改销售人员信息删除销售人员信息统计销售经理信息添加销售经理信息查询销售经理信息显示销售经理信息修改销售经理信息删除销售经理信息统计知行合一行胜于言第5页2.4类的设计(1)employee类(抽象类)的设计图3.1employee类(2)经理类的设计图3.2经理类managervoidadd();voidsearch();voidshow();voidalter();voiddel();voidstat();voidsave();voidread();voidinput();voidoutput();employeevirtualvoidadd()=0;virtualvoidsearch()=0;virtualvoidshow()=0;virtualvoidalter()=0;virtualvoiddel()=0;virtualvoidstat()=0;virtualvoidsave()=0;virtualvoidread()=0;virtualvoidinput()=0;virtualvoidoutput()=0;stringnumber;stringname;stringsex;stringdepartment;stringrank;floatsalary;知行合一行胜于言第6页(3)技术人员类的设计图3.3技术人员类(4)销售人员类的设计图3.4销售人员类salesmanvoidadd();voidsearch();voidshow();voidalter();voiddel();voidstat();voidsave();voidread();voidinput();voidoutput();floatsale;floatrate;technicianvoidadd();voidsearch();voidshow();voidalter();voiddel();voidstat();voidsave();voidread();voidinput();voidoutput();floatwork_time;floattime_salary;知行合一行胜于言第7页(5)成绩类的设计图3.5销售经理类(6)各个类的关系描述3详细设计及实现3.1employee类(抽象类)的实现#includestringusingnamespacestd;classemployee{public:employee(void);salesmanagervoidadd();voidsearch();voidshow();voidalter();voiddel();voidstat();voidsave();voidread();voidinput();voidoutput();floatsala;employeemanagersalesmantechniciansalesmanager知行合一行胜于言第8页~employee(void);virtualvoidadd()=0;virtualvoidsearch()=0;virtualvoidshow()=0;virtualvoidalter()=0;virtualvoiddel()=0;virtualvoidstat()=0;virtualvoidsave()=0;virtualvoidread()=0;virtualvoidinput()=0;virtualvoidoutput()=0;protected:stringnumber;stringname;stringsex;stringdepartment;stringrank;floatsalary;};3.2经理类的实现manager.h#includeemployee.hclassmanager:virtualpublicemployee{public:manager(void);~manager(void);voidadd();voidsearch();voidshow();voidalter();voiddel();voidstat();voidsave();知行合一行胜于言第9页voidread();voidinput();voidoutput();};manager.cpp#includeStdAfx.h#includemanager.h#includeiostream#includefstream#includestring#includeiomanipusingnamespacestd;constintMAX=100;managerM[MAX];intstatictop1=0;manager::manager(void){}manager::~manager(void){}voidmanager::input(){cout输入编号:endl;cinnumber;cout输入姓名:endl;cinname;cout输入性别:endl;cinsex;cout输入部门:endl;cindepartment;cout输入级别:endl;cinrank;cout输入固定月薪:endl;cinsalary;}voidmanager::output(){coutnumber\tname\tsex\tdepartment\trank\tsalaryendl;}voidmanager::read()知行合一行胜于言第10页{top1=0;system(cls);ifstreaminflie(经理.txt,ios::in);if(!inflie){cout打开失败!endl;return;}inti=0;while(inflieM[i].numberM[i].nameM[i].sexM[i].departmentM[i].rankM[i].salary){i++;top1=i;}inflie.close();}voidmanager::save(){ofstreamoutflie(经理.txt,ios::out);if(!outflie){cout打开失败!endl;return;}inti;for(i=0;itop1;i++){outflieM[i].number\tM[i].name\tM[i].sex\tM[i].department\tM[i].rank\