人员管理系统.docx
- 文档编号:25332953
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:65
- 大小:133.51KB
人员管理系统.docx
《人员管理系统.docx》由会员分享,可在线阅读,更多相关《人员管理系统.docx(65页珍藏版)》请在冰豆网上搜索。
人员管理系统
C++面向对象程序设计
课程设计报告
课程名称C++面向对象程序设计
课题名称公司人员信息管理系统
专业
班级
学号
姓名
指导教师
2013年12月25日
(一)、课程设计题目
公司人员信息管理系统
(2)、目的与要求:
1、目的:
(1)要求学生达到熟练掌握C++语言的基本知识和技能;
(2)基本掌握面向对象程序设计的基本思路和方法;
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
2、基本要求:
(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;
(2)要求在设计的过程中,建立清晰的类层次;
(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;
(4)在系统的设计中,至少要用到面向对象的一种机制。
3、创新要求:
在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。
(三)、设计方法和基本原理:
1.功能要求
(1)添加功能
程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求人员的编号要唯一,如果添加了重复编号的记录时,则提示用户数据添加重复并取消添加。
(2)查询功能
可根据编号、姓名等信息对已添加的记录进行查询。
如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。
(3)显示功能
可显示当前系统中所有记录。
(4)修改功能
可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。
(5)删除功能
对已添加的人员记录进行删除。
如果当前系统中没有相应的人员记录,则提示“记录为空!
”并返回操作;否则输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存在。
(6)统计功能
能根据多种参数进行人员的统计。
例如:
统计四类人员数量以及总数,统计男、女员工的数量,统计平均工资、最高工资、最低工资等。
(7)保存功能
将当前系统中各类人员记录存入文件中。
(8)读取功能
将保存在文件中的人员信息读入到当前系统中,以供用户使用。
在完成以上基本功能的基础上,可自行进行扩展或完善。
2、问题的解决方案:
根据系统功能要求,可以将问题解决分为以下步骤:
1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
2)分析系统中的各个实体以及它们之间的关系;
3)根据问题描述,设计系统的类层次;
4)完成类层次中各个类的描述;
5)完成类中各个成员函数的定义;
6)完成系统的应用模块;
7)功能调试;
8)完成系统总结报告。
1.系统需求分析
系统设计的目的与意义:
现在的公司越做越大,公司的人员数量越来越多,因此需要一个公司人员管理系统来对公司的人员进行管理。
系统功能需求:
本系统有五个类:
Stuff类、Manager类、Salesman类、SalesManager类、Technicist类,存储基本信息、经理信息、销售人员信息、销售经理信息及技术人员信息。
1.基础信息的添加功能
程序能够任意添加经理信息、销售信息、销售经理信息和技术人员信息。
2.修改功能
对已添加的记录(经理信息、销售信息、销售经理信息和技术人员信息)进行修改。
3.删除功能
对已添加的记录(经理信息、销售信息、销售经理信息和技术人员信息)进行删除。
如果当前系统中没有相应的记录,则提示“记录为空!
”并返回操作;否则输入要删除的编号对该记录进行删除,如果没有找到,则提示相应的记录不存在。
4.查询功能
①可根据职位的编号查询某职位的所有职员信息。
②可根据职员的编号查询某职员的所有信息。
如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。
5.保存功能
将当前系统中各类记录存入文件中。
6.读取功能
将保存在文件中的信息读入到当前系统中,以供用户使用。
2.总体设计
系统功能分析:
系统通过调用函数来实现信息录入、信息修改、信息删除、信息查询以及数据保存文件等功能。
add()函数用于录入信息;modify()函数用来修改信息;del()函数用来修改信息;look()函数用来搜索职员信息;read()函数用于将文件中的数据读取到内存中;save()函数用于将内存中的信息存入文件内;count用于统计职员总数;show()显示职员信息;主函数main()用于调用这些函数。
系统功能模块划分与设计:
系统定义了Stuff类、Manager类、Salesman类、SalseManager类这五个类,定义了add()、modify()、del()、read()、save()、look()、count()、show()、等函数来实现系统所需功能。
系统功能模块图:
类的设计
(1)Stuff类(抽象类)的设计:
(2)经理类的设计:
(3)销售人员类的设计:
(4)销售经理类的设计:
(5)技术人员类的设计:
(6)各个类的关系描述:
3.详细设计及实现
类(抽象类)的实现
classStuff
{public:
virtualvoidread()=0;
virtualvoidadd()=0;
virtualvoidlook()=0;
virtualvoidshow()=0;
virtualvoidmodify(int)=0;
virtualvoiddel(int)=0;
virtualvoidcount()=0;
virtualvoidsave()=0;
virtualvoidInput()=0;
virtualvoidOutput()=0;
intnumber;
charname[100];
charsex[10];
chardepartment[10];
charrank[10];
floatmonpay;};
经理类的实现
#include""
classManager:
publicStuff
{public:
voidread();
voidadd();
voidlook();
voidshow();
voidmodify(int);
voiddel(int);
voidcount();
voidsave();
voidInput()
{cout<<"请输入经理的编号:
\n";
cin>>number;
cout<<"姓名:
\n";
cin>>name;
cout<<"性别:
\n";
cin>>sex;
cout<<"所在部门:
\n";
cin>>department;
cout<<"级别:
\n";
cin>>rank;
cout<<"固定工资:
\n";
cin>>pay;
monpay=pay;}
voidOutput()
{cout< cout< protected: floatpay;}; voidManager: : read() {fstreammanagerfile("经理信息管理.dat",ios: : in|ios: : out);managerfile>>m1[count_Manager].number>>m1[count_Manager].name>>m1[count_Manager].sex>>m1[count_Manager].department>>m1[count_Manager].rank>>m1[count_Manager].monpay; while(! ()) {managerfile>>m1[count_Manager].number>>m1[count_Manager].name>>m1[count_Manager].sex>>m1[count_Manager].department>>m1[count_Manager].rank>>m1[count_Manager].monpay; count_Manager++;} ();} voidManager: : add() { m1[count_Manager].number=number; strcpy(m1[count_Manager].name,name); strcpy(m1[count_Manager].sex,sex); strcpy(m1[count_Manager].department,department); strcpy(m1[count_Manager].rank,rank); m1[count_Manager].monpay=monpay; m1[count_Manager].number=number; count_Manager++; } voidManager: : look() { if(count_Manager==0) { cout<<"对不起,没有相关记录! "< return; } intchoice; cout<<"请选择查找方式: 1、编号查找2、姓名查找"< cin>>choice; while(choice! =1&&choice! =2) {cout<<"请输入正确的选择: ";cin>>choice;} switch(choice) { case1: { cout<<"请输入要查找经理的编号: "; intnumber; cin>>number; for(inti=0;i {if(m1[i].number==number) { m1[i].Output(); return; } } cout<<"没有相关人员! "< break; } case2: { cout<<"请输入要查找经理的姓名: "; charname[100]; cin>>name; for(inti=0;i { if(strcmp(m1[i].name,name)==0) { m1[i].Output(); return; } } cout<<"没有相关人员! "< break; } default: cout<<"无此选项,请重试! "< } } voidManager: : show() { for(inti=0;i<=count_Manager-1;i++) m1[i].Output(); } voidManager: : modify(intindex) { m1[index-1].number=number; strcpy(m1[index-1].name,name); strcpy(m1[index-1].sex,sex); strcpy(m1[index-1].department,department); strcpy(m1[index-1].rank,rank); m1[index-1].monpay=monpay; } voidManager: : del(intindex) { for(inti=index;i<=count_Manager-1;i++) { m1[i-1].number=m1[i].number; strcpy(m1[i-1].name,m1[i].name); strcpy(m1[i-1].sex,m1[i].sex); strcpy(m1[i-1].department,m1[i].department); strcpy(m1[i-1].rank,m1[i].rank); m1[i-1].monpay=m1[i].monpay; } count_Manager--; } voidManager: : count() { intsum=0; intmale=0,female=0; for(inti=0;i { if(! strcmp(m1[i].sex,"男")) male++; if(! strcmp(m1[i].sex,"女")) female++; sum++; } cout<<"总的人数是: "< cout<<"男的人数是: "< cout<<"女的人数是: "< } voidManager: : save() { ofstreammanagerfile; ("经理信息管理.dat"); for(inti=0;i<=count_Manager-1;i++) managerfile< (); } 销售人员类的实现 #include"" classSalesman: publicStuff { public: voidread(); voidadd(); voidlook(); voidshow(); voidmodify(int); voiddel(int); voidcount(); voidsave(); voidInput() { cout<<"请输入销售人员的编号: \n"; cin>>number; cout<<"姓名: \n"; cin>>name; cout<<"性别: \n"; cin>>sex; cout<<"所在部门: \n"; cin>>department; cout<<"级别: \n"; cin>>rank; cout<<"销售额和提成百分比: \n"; cin>>market>>rate; monpay=market*rate; } voidOutput() { cout< cout< } protected: floatmarket; floatrate; }; voidSalesman: : read() { fstreamSalesmanfile("销售人员信息管理.dat",ios: : in|ios: : out); Salesmanfile>>s1[count_Salesman].number>>s1[count_Salesman].name>>s1[count_Salesman].sex>>s1[count_Salesman].department>>s1[count_Salesman].rank>>s1[count_Salesman].monpay; while(! ()) {Salesmanfile>>s1[count_Salesman].number>>s1[count_Salesman].name>>s1[count_Salesman].sex>>s1[count_Salesman].department>>s1[count_Salesman].rank>>s1[count_Salesman].monpay; count_Salesman++; } (); } voidSalesman: : add() { s1[count_Salesman].number=number; strcpy(s1[count_Salesman].name,name); strcpy(s1[count_Salesman].sex,sex); strcpy(s1[count_Salesman].department,department); strcpy(s1[count_Salesman].rank,rank); s1[count_Salesman].monpay=monpay; count_Salesman++; } voidSalesman: : look() { if(count_Salesman==0) { cout<<"对不起,没有相关记录! "< return; } intchoice; cout<<"请选择查找方式: 1、编号查找2、姓名查找"< cin>>choice; while(choice! =1&&choice! =2) {cout<<"请输入正确的选择: ";cin>>choice;} switch(choice) { case1: { cout<<"请输入要查找销售人员的编号: "; intnumber; cin>>number; for(inti=0;i {if(s1[i].number==number) { s1[i].Output(); return; } } cout<<"没有相关人员! "< break; } case2: { cout<<"请输入要查找销售人员的姓名: "; charname[100]; cin>>name; for(inti=0;i { if(strcmp(s1[i].name,name)==0) { s1[i].Output(); return; } } cout<<"没有相关人员! "< break; } default: cout<<"无此选项,请重试! "< } } voidSalesman: : show() { for(inti=0;i<=count_Salesman-1;i++) s1[i].Output(); } voidSalesman: : modify(intindex) { s1[index-1].number=number; strcpy(s1[index-1].name,name); strcpy(s1[index-1].sex,sex); strcpy(s1[index-1].department,department); strcpy(s1[index-1].rank,rank); s1[index-1].monpay=monpay; } voidSalesman: : del(intindex) { for(inti=index;i<=count_Salesman-1;i++) { s1[i-1].number=s1[i].number; strcpy(s1[i-1].name,s1[i].name); strcpy(s1[i-1].sex,s1[i].sex); strcpy(s1[i-1].department,s1[i].department); strcpy(s1[i-1].rank,s1[i].rank); s1[i-1].monpay=s1[i].monpay; } count_Salesman--; } voidSalesman: : count() { intsum2=0; intmale2=0,female2=0; for(inti=0;i { if(! strcmp(s1[i].sex,"男")) male2++; if(! strcmp(s1[i].sex,"女")) female2++; sum2++; } cout<<"总的人数是: "< cout<<"男的人数是: "< cout<<"女的人数是: "< } voidSalesman: : save() { ofstreamSalesmanfile; ("销售人员信息管理.dat"); for(inti=0;i<=count_Salesman-1;i++) Salesmanfile< (); } 销售经理类的实现 classSalesmanager: publicStuff { public: floatpay1,market1,rate1; voidread(); voidadd(); voidlook(); voidshow(); voidmodify(int); voiddel(int); voidcount(); voidsave(); voidInput() { cout<<"请输入销售经理的编号: \n"; cin>>number; cout<<"姓名: \n"; cin>>name; cout<<"性别: \n"; cin>>
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 人员 管理 系统