C++公司人员信息管理系统-课程设计报告_第1页
C++公司人员信息管理系统-课程设计报告_第2页
C++公司人员信息管理系统-课程设计报告_第3页
C++公司人员信息管理系统-课程设计报告_第4页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录1 系统需求分析32 总体设计43 详细设计及实现74 系统调试695 结论736 心得体会747 参考书目75第 2 页知行合一行胜于言1 系统需求分析1.1 系统设计的目的与意义:现在的公司人员数量及职位种类较多,各样的人事管理活动也比较频繁,因此需要设计一个公司人员信息管理系统来对公司员工信息进行管理。1.2 系统功能需求:本系统有五个类:基类 :employee 、派生类:manager、technician、salesman、salesmanager, 储存经理、技术人员、销售人员、销售经理信息。(1) 添加功能程序能够任意添加上述四类人员的记录, 可提供选择界面供用户选择所要添

2、加的人员类别,要求人员的编号要唯一, 如果添加了重复编号的记录时, 则提示用户数据添加重复并取消添加。(2) 查询功能可根据编号、 姓名等信息对已添加的记录进行查询。如果未找到, 给出相应的提示信息,如果找到,则显示相应的记录信息。(3) 显示功能可显示当前系统中所有记录。(4) 修改功能可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。(5) 删除功能对已添加的人员记录进行删除。 如果当前系统中没有相应的人员记录, 则提示“记录为空!”并返回操作;否则输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录, 如果没有找到该人员信息, 则提示相应的记录不存在。(6) 统计功能能

3、根据多种参数进行人员的统计。 例如:统计四类人员数量以及总数,统计男、女员工的数量,统计平均工资、最高工资、最低工资等。(7) 保存功能将当前系统中各类人员记录存入文件中。(8) 读取功能将保存在文件中的人员信息读入到当前系统中,以供用户使用。第 3 页知行合一行胜于言2 总体设计2.1系统功能分析:系统通过调用函数来实现信息添加、信息查询、信息显示、信息修改、信息删除、以及数据读取保存文件等功能。add()函数用于录入信息;search ()函数用来查询信息; show()函数用来显示信息; alter ()函数用来修改信息;del ()函数用来删除信息;stat ()函数用来统计信息rea

4、d ()函数用于将文件中的数据读取到内存中;save()函数用于将内存中的信息存入文件内;主函数 main()用于调用这些函数。2.2 系统功能模块划分与设计:系统定义了 manger 类、 technician类、 salesman 类、salesmanger 类这四个类,定义了 add()、search ()、show()、alter ()、del ()、stat ()、read ()、 save()、 input ()、 output()等函数来实现系统所需功能。2.3系统功能模块图:公司人员信息管理系经技销销理术售售信人人经息员员理管信信信理息息息管管管理理理经经经经经经技技技技技技销

5、销销销销销销销销销销销理理理理理理术术术术术术售售售售售售售售售售售售信信信信信信人人人人人人人人人人人人经经经经经经息息息息息息员员员员员员员员员员员员理理理理理理添查显修删统信信信信信信信信信信信信信信信信信信加询示改除计息息息息息息息息息息息息息息息息息息添查显修删统添查显修删统添查显修删统加询示改除计加询示改除计加询示改除计第 4 页知行合一行胜于言2.4类的设计(1)employee 类(抽象类)的设计employeevirtualvoidadd()=0;virtualvoidsearch()=0;virtualvoidshow()=0;virtualvoidalter()=0;vi

6、rtualvoiddel()=0;virtualvoidstat()=0;virtualvoidsave()=0;virtualvoidread()=0;virtualvoidinput()=0;virtualvoidoutput()=0;string number;string name;string sex;图 3.1 employee 类(2)经理类的设计managervoidadd();void search();void show();void alter();void del();void stat();void save();void read();void input();图

7、3.2 经理类第 5 页知行合一行胜于言(3)技术人员类的设计technicianvoid add();void search();void show();void alter();void del();void stat();void save();void read();void input();void output();float work_time;float time_salary;图 3.3 技术人员类(4)销售人员类的设计salesmanvoid add();void search();void show();void alter();void del();void stat(

8、);void save();void read();void input();void output();float sale;float rate;图 3.4 销售人员类第 6 页知行合一行胜于言( 5)成绩类的设计salesmanagervoid add();void search();void show();void alter();void del();void stat();void save();void read();void input();void output();float sala;图 3.5 销售经理类( 6)各个类的关系描述employeemanagersalesm

9、antechniciansalesmanager3 详细设计及实现3.1 employee 类( 抽象类 ) 的实现#include<string>using namespace std;class employeepublic:employee(void);第 7 页知行合一行胜于言employee(void);virtual void add()=0;virtual void search()=0;virtual void show()=0;virtual void alter()=0;virtual void del()=0;virtual void stat()=0;vir

10、tual void save()=0;virtual void read()=0;virtual void input()=0;virtual void output()=0;protected:string number;string name;string sex;string department;string rank;float salary;3.2 经理类的实现manager.h#include "employee.h"class manager :virtual public employeepublic:manager(void);manager(void)

11、;void add();void search();void show();void alter();void del();void stat();void save();第 8 页知行合一行胜于言void read();void input();void output();manager.cpp#include "StdAfx.h"#include "manager.h"#include<iostream>#include<fstream>#include<string>#include<iomanip>

12、using namespace std;const int MAX=100;manager MMAX;int static top1=0;manager:manager(void)manager:manager(void)void manager:input()cout<<"输入编号: "<<endl;cin>>number;cout<<"输入姓名: "<<endl;cin>>name;cout<<"输入性别: "<<endl;cin>

13、;>sex;cout<<"输入部门: "<<endl;cin>>department;cout<<"输入级别: "<<endl;cin>>rank;cout<<"输入固定月薪: "<<endl;cin>>salary;void manager:output() cout<<number<<"t"<<name<<"t"<<se

14、x<<"t"<<department<<"t"<<rank<<"t "<<salary<<endl;void manager:read()第 9 页知行合一行胜于言top1=0;system("cls");ifstream inflie(" 经理 .txt",ios:in);if(!inflie)cout<<"打开失败! "<<endl;return;int i=0;w

15、hile(inflie>>Mi.number>>M>>Mi.sex>>Mi.department>>Mi.rank>>Mi.salary)i+;top1=i;inflie.close();void manager:save()ofstream outflie("经理 .txt",ios:out);if(!outflie)cout<<"打开失败! "<<endl;return;int i;for(i=0;i<top1;i+)outflie<

16、;<Mi.number<<"t"<<M<<"t"<<Mi.sex<<"t"<<Mi.department<<"t"<<Mi.rank<<"t"<<Mi.salary<<endl;cout<<"保存成功! "<<endl;outflie.close();void manager:add()system(&q

17、uot;cls");read();if(top1>=MAX)第10页知行合一行胜于言cout<<"人员已满 "<<endl;return;cout<<"输入要添加的编号: "<<endl;string n;cin>>n;for(int i=0;i<top1;i+)if(n=Mi.number)cout<<"该编号的人员已存在 "<<endl;return;manager m;cout<<"请再次输入新添加人员

18、的信息"<<endl;m.input();cout<<"是否确认添加?1、是2、否 "<<endl;int a;cin>>a;if(a=1)Mtop1=m;top1=top1+1;save();elsecout<<"放弃添加 "<<endl;return;void manager:search()system("cls");read();if(top1=0)cout<<"当前系统没有储存记录!"<<endl;r

19、eturn;int choice;cout<<"请选择查找方式: 1、按编号查找 2、按姓名查找 0、退出 "<<endl; cin>>choice;第 11页知行合一行胜于言switch(choice)case 1:cout<<"请输入要查找的编号:"<<endl;string num;cin>>num;for(int i=0;i<top1;i+)if(Mi.number=num)cout<<" 编号 "<<"t"

20、;<<" 姓名 "<<"t"<<" 性别 "<<"t"<<" 部门 "<<"t"<<" 级别 "<<"t"<<" 月薪 "<<endl;Mi.output();return;cout<<"查无此人! "<<endl;break;case 2:cout<

21、;<"请输入要查找的姓名 "<<endl;string name;cin>>name;for(int i=0;i<top1;i+)if(M=name)cout<<" 编号 "<<"t"<<" 姓名 "<<"t"<<" 性别 "<<"t"<<" 部门 "<<"t"<<

22、;" 级别 "<<"t"<<" 月薪 "<<endl;Mi.output();cout<<"查无此人! "<<endl;break;case 0:break;default:cout<<" 输 入 错 误 ! 请 输 入 03 的 数 字 "<<endl;system("pause");search();break;void manager:show()第12页知行合一行胜于言system(&

23、quot;cls");read();if(top1=0)cout<<"无数据! "<<endl;return;cout<<" 编号 "<<"t"<<" 姓名 "<<"t"<<" 性别 "<<"t"<<" 部门 "<<"t"<<" 级别 "<<&q

24、uot;t"<<" 月薪 "<<endl;for(int i=0;i<top1;i+)Mi.output();void manager:alter()system("cls");read();if(top1=0)cout<<"当前系统没有储存记录 "<<endl;return;string num;cout<<"请输入要修改的经理编号:"<<endl;cin>>num;for(int i=0;i<top1;i+

25、)if(Mi.number=num)cout<<"编号 "<<"t"<<" 姓名 "<<"t"<<" 性别 "<<"t"<<" 部门 "<<"t"<<" 级别 "<<"t"<<" 月薪 "<<endl;Mi.output();cout&

26、lt;<"请选择修改范围: 1、全部修改2、修改编号3、修改姓名4、修改性别 "<<endl;cout<<"5、修改部门6、修改级别7、修改月薪"<<endl;cout<<"0、退出修改 "<<endl;int choice;cin>>choice;switch(choice)case 1:第13页知行合一行胜于言cout<<"输入修改后的编号: "<<endl;string n;cin>>n;for(

27、int j=0;j<top1;j+)if(n=Mj.number)cout<<"该编号的人员已存在 "<<endl;return;cout<<"输入修改后的姓名: "<<endl;string na;cin>>na;cout<<"输入修改后的性别: "<<endl;string s;cin>>s;cout<<"输入修改后的部门: "<<endl;string d;cin>>d;c

28、out<<"输入修改后的级别: "<<endl;string r;cin>>r;cout<<"输入修改后的月薪: "<<endl;float sa;cin>>sa;cout<<"是否确认修改?1、是2、否 "<<endl;int a;cin>>a;if(a=1)Mi.number=n;M=na;Mi.sex=s;Mi.department=d;Mi.rank=r;Mi.salary=sa;elsecout<&l

29、t;"放弃修改 "<<endl;return;save();break;第14页知行合一行胜于言case 2:cout<<"请输入修改后的编号 "<<endl;string n;cin>>n;for(int i=0;i<top1;i+)if(n=Mi.number)cout<<"该编号的人员已存在 "<<endl;return;cout<<"是否确认修改?1、是2、否 "<<endl;int a;cin>&g

30、t;a;if(a=1)Mi.number=n;elsecout<<"放弃修改 "<<endl;return;save();break;case 3:cout<<"请输入修改后的姓名 "<<endl;string na;cin>>na;M=na;cout<<"是否确认修改?1、是2、否 "<<endl;int a;cin>>a;if(a=1)M=na;elsecout<<"放弃修改 "&

31、lt;<endl;return;save();break;case 4:第15页知行合一行胜于言cout<<"请输入修改后的性别 "<<endl;string s;cin>>s;Mi.sex=s;cout<<"是否确认修改?1、是2、否 "<<endl;int a;cin>>a;if(a=1)Mi.sex=s;elsecout<<"放弃修改 "<<endl;return;save();break;case 5:cout<<

32、"请输入修改后的部门 "<<endl;string d;cin>>d;Mi.department=d;cout<<"是否确认修改?1、是2、否 "<<endl;int a;cin>>a;if(a=1)Mi.department=d;elsecout<<"放弃修改 "<<endl;return;save();break;case 6:cout<<"请输入修改后级别 "<<endl;string r;cin>

33、;>r;Mi.rank=r;cout<<"是否确认修改?1、是2、否 "<<endl;int a;cin>>a;if(a=1)第16页知行合一行胜于言Mi.rank=r;elsecout<<"放弃修改 "<<endl;return;save();break;case 7:cout<<"请输入修改后的月薪 "<<endl;float sa;cin>>sa;Mi.salary=sa;cout<<"是否确认修改?1、是

34、2、否 "<<endl;int a;cin>>a;if(a=1)Mi.salary=sa;elsecout<<"放弃修改 "<<endl;return;save();break;case 0:cout<<"退出修改 "<<endl;return;break;default:cout<<" 无 此 选 项 ! 请 输 入 07 的 数 字 "<<endl;system("pause");break;cout<

35、;<"修改完成 "<<endl;return;cout<<"查无此人 "<<endl;void manager:del()system("cls");read();if(top1=0)cout<<"当前系统没有储存记录 "<<endl;第17页知行合一行胜于言return;int choice;cout<<"请删除查找方式: 1、按编号删除2、按姓名删除0、退出 "<<endl;cin>>cho

36、ice;switch(choice)case 1:cout<<"请输入所要删除人员的编号:"<<endl;string num;cin>>num;for(int i=0;i<top1;i+)if(Mi.number=num)cout<<" 编号 "<<"t"<<" 姓名 "<<"t"<<" 性别 "<<"t"<<" 部门

37、"<<"t"<<" 级别 "<<"t"<<" 月薪 "<<endl;Mi.output();cout<<"是否确认删除?1、是2、否 "<<endl;int choice;cin>>choice;switch(choice)case 1:for(int j=i;j<top1;j+)Mj=Mj+1;cout<<"删除成功! "<<endl;to

38、p1=top1-1;save();break;case 2:return;default:cout<<"没有此选项! "<<endl;return;cout<<"无此人 !"<<endl;system("pause");del();break;case 2:cout<<"请输入所要删除人员的姓名:"<<endl;string name;cin>>name;for(int i=0;i<top1;i+)第18页知行合一行胜于言if

39、(M=name)cout<<" 编号 "<<"t"<<" 姓名 "<<"t"<<" 性别 "<<"t"<<" 部门 "<<"t"<<" 级别 "<<"t"<<" 月薪 "<<endl;Mi.output();cout<

40、<"是否确认删除?1、是2、否 "<<endl;int choice;cin>>choice;switch(choice)case 1:for(int j=i;j<top1;j+)Mj=Mj+1;cout<<"删除成功! "<<endl;top1=top1-1;save();break;case 2:return;default:cout<<"没有此选项! "<<endl;return;cout<<"无此人 !"<

41、<endl;break;case 0:break;default:cout<<" 输 入 错 误 ! 请 输 入 03 的 数 字 "<<endl;system("pause");del();break;save();void manager:stat()system("cls");read();int choice;cout<<"1、人数统计 2、性别统计 3、平均工资 4、最高工资 5、最低工资 0、退出 "<<endl;cout<<"

42、 请输入所要执行的编号:"<<endl;cin>>choice;switch(choice)case 1:cout<<"经理的人数为: "<<top1<<endl;system("pause");stat();break;第19页知行合一行胜于言case 2:int a=0,b=0;string Y=" 男"string X=" 女"for(int i=0;i<top1;i+)if(Mi.sex=Y)a+;if(Mi.sex=X)b+;co

43、ut<<" 男性人数: "<<a<<endl;cout<<"女性人数: "<<b<<endl;system("pause");stat();break;case 3:float ave_salary=0;float all_salary=0;for(int i=0;i<top1;i+)all_salary=Mi.salary+all_salary;ave_salary=all_salary/top1;cout<<"平均工资: "

44、;<<ave_salary;system("pause");stat();break;case 4:float max_salary=0;for(int i=0;i<top1-1;i+)if(Mi.salary>Mi+1.salary)max_salary=Mi.salary;Mi+1.salary=max_salary;elsemax_salary=Mi+1.salary;cout<<"最高工资: "<<max_salary;system("pause");stat();break;c

45、ase 5:第20页知行合一行胜于言float min_salary=0;for(int i=0;i<top1-1;i+)if(Mi.salary<Mi+1.salary)min_salary=Mi.salary;Mi+1.salary=min_salary;elsemin_salary=Mi+1.salary;cout<<"最低工资: "<<min_salary;system("pause");stat();break;case 0:break;default: cout<<" 无 此 选 项

46、! 请 输 入 05 的 数 字 "<<endl;system("pause");stat();break;3.3 技术人员类的实现technician.h#include "employee.h"class technician :public employeepublic:technician(void);technician(void);void add();void search();void show();void alter();void del();void stat();void save();void read()

47、;void input();void output();protected:float work_time;float time_salary;第21页知行合一行胜于言technician.cpp#include "StdAfx.h"#include "technician.h"#include<iostream>#include<fstream>#include<string>#include<iomanip>using namespace std;const int MAX=100;technician

48、 TMAX;int static top2=0;technician:technician(void)technician:technician(void)void technician:input()cout<<"请输入输入编号: "<<endl;cin>>number;cout<<"请输入输入姓名: "<<endl;cin>>name;cout<<"请输入输入性别: "<<endl;cin>>sex;cout<<

49、"请输入输入部门: "<<endl;cin>>department;cout<<"请输入输入级别: "<<endl;cin>>rank;cout<<"请输入输入工时: "<<endl;cin>>work_time;cout<<"请输入输入时薪: "<<endl;cin>>time_salary;salary=time_salary*work_time;void technician:o

50、utput() cout<<number<<"t"<<name<<"t"<<sex<<"t"<<department<<"t"<<rank<<"t" <<work_time<<"t"<<time_salary<<"t"<<salary<<endl;void techn

51、ician:read()第22页知行合一行胜于言top2=0;system("cls");ifstream inflie(" 技术人员 .txt",ios:in);if(!inflie)cout<<"打开失败! "<<endl;return;int i=0;while(inflie>>Ti.number>>T>>Ti.sex>>Ti.department>>Ti.rank>>Ti.work_time>>Ti.time

52、_salary>>Ti.salary)i+;top2=i;inflie.close();void technician:save()ofstream outflie("技术人员 .txt",ios:out);if(!outflie)cout<<"打开失败! "<<endl;return;int i;for(i=0;i<top2;i+)outflie<<Ti.number<<"t"<<T<<"t"<<Ti

53、.sex<<"t"<<Ti.departmen t<<"t"<<Ti.rank<<"t"<<Ti.work_time<<"t"<<Ti.time_salary<<"t"<<Ti.sala ry<<endl;cout<<"保存成功! "<<endl;outflie.close();void technician:add()s

54、ystem("cls");read();if(top2>=MAX)第23页知行合一行胜于言cout<<"人员已满 "<<endl;return;cout<<"输入要添加的编号: "<<endl;string n;cin>>n;for(int i=0;i<top2;i+)if(n=Ti.number)cout<<"该编号的人员已存在 "<<endl;return;technician t;cout<<"

55、;请再次输入新添加人员的信息"<<endl;t.input();cout<<"是否确认添加?1、是2、否 "<<endl;int a;cin>>a;if(a=1)Ttop2=t;top2=top2+1;save();elsecout<<"放弃添加 "<<endl;return;void technician:search()system("cls");read();if(top2=0)cout<<"当前系统没有储存记录!"

56、<<endl;return;int choice;cout<<"请选择查找方式: 1、按编号查找2、按姓名查找0、退出 "<<endl;cin>>choice;switch(choice)第24页知行合一行胜于言case 1:cout<<"请输入要查找的编号:"<<endl;string num;cin>>num;for(int i=0;i<top2;i+)if(Ti.number=num)cout<<" 编号 "<<&q

57、uot;t"<<" 姓名 "<<"t"<<" 性别 "<<"t"<<" 部门 "<<"t"<<" 级别 "<<"t"<<" 工时 "<<"t"<<" 时薪 "<<"t"<<" 月薪 &

58、quot;<<endl;Ti.output();return;cout<<"查无此人! "<<endl;break;case 2:cout<<"请输入要查找的姓名 "<<endl;string name;cin>>name;for(int i=0;i<top2;i+)if(T=name)cout<<" 编号 "<<"t"<<" 姓名 "<<"t&qu

59、ot;<<" 性别 "<<"t"<<" 部门 "<<"t"<<" 级别 "<<"t"<<" 工时 "<<"t"<<" 时薪 "<<"t"<<" 月薪 "<<endl;Ti.output();return;cout<<&quo

60、t;查无此人! "<<endl;break;case 0:break;default:cout<<" 输 入 错 误 ! 请 输 入 03 的 数 字 "<<endl;system("pause");search();break;void technician:show()第25页知行合一行胜于言system("cls");read();if(top2=0)cout<<"无数据! "<<endl;return;cout<<"

61、 编号 "<<"t"<<" 姓名 "<<"t"<<" 性别 "<<"t"<<" 部门 "<<"t"<<" 级别 "<<"t"<<" 工时 "<<"t"<<" 时薪 "<<"t"<<" 月薪 "<<endl;for(int i=0;i<top2;i+)Ti.output();void technician:alter()system("cls");read();if(top2=0)cout<<"当前系统没有储存记录 "<<endl;return;string num;cout<<"请输入要修改的技术人员编号:"<<endl;c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论