版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件学院课程设计报告设计名称: C+课程设计选题名称: 人事管理系统姓名:学号: 1515 专业班级: 系(院): 设计时间: 设计地点:1 需求分析需求概述设计一个公司人事管理系统, 该系统主要实现了对老板和普通员工(游客) 不同的操作。【1】 老板身份的功能:(1) 增加职员信息(2) 显示职员信息(3) 删除职员信息(4) 保存职员信息(5) 读取职员信息(6) 修改职员信息(7) 排序职员信息(8) 统计员工信息(9) 查找员工信息(10) 退出系统【2】 普通员工的功能(1) )显示职员信息(2) 公司职员状况(3) 查找职员信息(4) 退出系统需求说明( 1 随着现代社会的发展,
2、公司的人员信息资料变化较大。在这个信息爆炸的时代再像曾经用笔那样记录人员信息效率较低,工作量较大。与此相对应的 信息登记电子化则很好的解决此问题。故推出本人事管理系统令你摆脱往 日与笔墨为伴的岁月。( 2 本系统能记录常见的姓名,性别,编号,职务,月薪等基本工资。对于录入的人员的信息都能用文件保存起来,并且可以任意对其进行删除, 浏览, 修改,增加等常见操作。( 3 显示所有人员信息有一定规范的格式,以便老板以及其他员工的查看,分析等应用。( 4 该管理系统是以大菜单下细分小菜单的方式进行工作,为不同用户提供清晰且不同菜单功能的使用提示,依据不同用户的不同选择进行不同操作任意切换2 总体设计功
3、能模块图该系统按功能模块划分如下:公司人事管理系统老板普通员工增显删保读修排统查公统查加示除存取改序计找退司计找职职职职职职职员员出职员职员员员员员员员工工系员工员信信信信信信信信信统状信信息息息息息息息息息况息息按按照照修修修改改改姓职工名务资员员工工的的编编号号功能描述(1) )身份选择模块是公司人事管理系统的入口,是用来完成用户操作命令的接口, 用户可以根据提示进入不同的身份的功能界面,进而实现不同用户的不同需求(2) )进入公司人员管理界面开始选择功能,如果系统读取到之前的保存的信息可以增删查改等常见功能,如没有则可初始化人员, 然后进行相应操作。(3) )对人员信息的查询可以运用独一
4、无二的编号快速查找职工。(4) )在删除商品信息模块中仅允许老板身份人员对职员信息进行删除操作(5) )修改职员信息中老板可以根据需要对某些职员进行提拔,调整工资等功能。(6) )在统计职员信息功能中,统计出当前所有职员的一些信息。如男女职员的数目,某一职务的人数,所有职员数目等等功能。(7) )在普通职员身份仅仅能查看公司特定信息,任何具有修改信息的功能模块,考虑到安全性均不能实现。数据结构在公司人事管理系统中主要的数据结构是职员的信息,包含职员姓名, 职员性别,职员编号,职员工资,职员职务,等在处理过程中可以作为一个员工的不同类别进行处理, 其中员工类别包括文书类, 技术人员类, 技术经理
5、类, 业务员类, 业务员经理类等等。 用户可以根据菜单提示对信息进行不同处理系统流程图老板功能流程图开始功能选择增加职工否否删除职工否否查询职工否否修改职工否否是结束退出老板身份否员工功能流程图执行完毕开始功能选择显示所有职工信息是否查看公司信息是否查询员工信息是否退出员工身份否是退出3 详细设计类的设计在;人事管理系统中共设计了六个类, 分别是 : 文书( employee )类,销售员( salesman ) 类,销售经理 ( SalesManager )类,技术员( Technical )类,技术经理 (TechnicalManager ) 类,老板( boss)类, employee
6、类作为基类,其他类均由 employee 类派生。(1) ) 文书( employee )类class employee/普通职工protected:char name20;/姓名int number;/编号char level20;/职务char sex;/ 性别float salary;/ 工资int flage;/ 标记public:employee(char nam20,char lev20,int nu,char se,int fla); employee()void show();float Salary();char * GetName();/提取姓名函数int GetEmpNo
7、();/提 取 编 号 char * Level();/ 提取级别char Sex();/ 提取性别int GetFla(); friend class boss; employee *next;(2) )经理 ( Manager )类class Manager:public employee/经理public:Manager(char nam20,char lev20,int nu,char se,int fla); void pay();void show();Manager:Manager(char nam20,char lev20,int nu,char se,int fla): em
8、ployee(nam,lev,nu,se,fla)salary=5000; flage=fla;(3) )销售员( salesman )类class salesman: public employee/销售员protected:float sale_num;/销售额float sale_object;/项目额float sale_numRate;/销售额提成率float sale_objectRate;/项目额提成率public:salesman()salesman(char nam20,char lev20,int nu,char se,int fla,float s_n,float s_o
9、b); void show();salesman:salesman(charnam20,charlev20,intnu,charse,intfla,floats_n,float s_ob):employee(nam,lev,nu,se,fla)flage=fla;/标记sale_num=s_n; sale_object=s_ob; sale_numRate=; sale_objectRate=;salary=sale_objectRate*sale_object+sale_num*sale_numRate;(4) )销售经理(SalesManage )类class SalesManager:
10、public Managerpublic:SalesManager(charnam20,charlev20,intnu,charse,intfla,float s_n,float s_ob);void show(); protected:float sale_num;/销售额float sale_object;/项目额;SalesManager:SalesManager(charnam20,charlev20,intnu,charse,intfla,float s_n,float s_ob):Manager(nam,lev,nu,se,fla)strcpy(name,nam);/姓名strcp
11、y(level,lev);/等级number=nu;/编号sex=se;/性别flage=fla; sale_num=s_n; sale_object=s_ob;salary=salary+(sale_object+sale_num)*;(5) )技术人员( Technical )类class Technical: public employeeprotected:float code_num;C_n);float code_price; public:Technical(char nam20,char lev20,int nu,char se,int fla,floatTechnical:T
12、echnical(charnam20,charlev20,intnu,charse,int fla,float C_n)strcpy(name,nam);/姓名strcpy(level,lev);/等级number=nu;/编号sex=se;/性别flage=fla; code_price=1000;salary=C_n*code_price;(6) )技术经理( TechnicalManager)类class TechnicalManager: public Technicalpublic:TechnicalManager(charnam20,charlev20,intnu,char se,
13、int fla,float bon);protected:float bonus;TechnicalManager:TechnicalManager(charnam20,charlev20,int nu,char se,int fla,float bon):Technical(nam,lev,nu,se,fla,1)strcpy(name,nam);/姓名strcpy(level,lev);/等级number=nu;/编号sex=se;/性别flage=fla; salary=5000; bonus=bon; salary=salary+bonus;(7) )老板( boss )类class
14、bosspublic:void creat_head();/增void creat();void delete_inf();/删void seach(); void show(); void sort();void read_file();/读文件int write_file();/写入文件 */ void modify();void count(); protected:employee *head;画出类图SalesmanSalesManager4 编 码头文件#include #include #include #include #include #includeint n=151590
15、0;using namespace std;/姓名,编号,级别,低薪,工资总额void Register(); void Login(); void Correct(); 光标位置函数extern void gotoxy(int x, int y)COORD pos = x,y; HANDLE hOut =GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hOut, pos);class employee/普通职工protected:char name20;/姓名int number;/编号char level20;/*如果用
16、string类型文件读到职位这个数据时会出现错误或者乱码, 若是改成char level20,文件的读写能实现但是会有警告。*/ char sex;/性别float salary;/工资int flage;/标记public:employee(char nam20,char lev20,int nu,char se,int fla); employee()void show(); float Salary();char * GetName();/提取姓名函数int GetEmpNo();/ 提取编号char * Level();/ 提 取 级 别char Sex();/ 提取性别int Get
17、Fla(); friend class boss; employee *next;void employee:show()coutnamettnumberttlevelttsexttsalarynext; if(p1!=NULL)min_salary = p1-Salary(); while(p1!=NULL)ALL_Salary=p1-Salary()+ALL_Salary; all_num+;if(p1-Sex()=119)SEX_W_num+;elseSEX_M_num+; if(p1-Salary() max_salary)max_salary = p1-Salary(); if(p1
18、-Salary() Salary(); if(p1-GetFla()=1)employee_num+; else if(p1-GetFla()=2) salesman_num+;else if(p1-GetFla()=3) SalesManager_num+; else if(p1-GetFla()=4) Technical_num+;else if(p1-GetFla()=5) TechnicalManager_num+;p=p1;p1=p1-next;p1=head-next; if(p1!=NULL)coutttt公司职员信息endl; coutendl;coutttt职员一共 :all
19、_num人!endl;coutttt其 中 男 生 人 数 :SEX_M_num女 生 人数:SEX_W_numendl;coutttt公司文书人数为:employee_numendl;coutttt销售人员人数为:salesman_numendl;coutttt销售经理人数为:SalesManager_numendl;coutttt技术人员人数为:Technical_numendl;coutttt技术经理人数为:TechnicalManager_numendl;coutttt公司的人均月薪为:ALL_Salary/all_numendl; coutttt最高工资 :max_salaryend
20、l;coutttt最低工资 :min_salaryendlendl;elsecoutttt员工信息暂时未统计endl;coutttt是否离开本界面?y/nchoice;if(choice=y) break;修改函数void boss:modify()/修改作用system(cls); while(true)int i=0;employee *p=head; employee *p1=head-next; char No;char name220,name120;/姓名int number;/编号char leve20;/等级char sex;/性 别 float salary;/工资syste
21、m(cls);coutttt请输入修改的类型endl; coutttt1姓名endl;coutttt2等级endl;coutttt3工资No;switch(No)case1:coutttt请输入编号:number;coutttt输入修改后的姓名:name1;while(p1!=NULL)if(p1-GetEmpNo()=number)strcpy(p1-name,name1); i=1;p1=p1-next;break;case2:endl;coutttt输入调整人员编号:number;coutleve;while(p1!=NULL)if(p1-GetEmpNo()=number)i=1;st
22、rcpy(p1-level,leve);case3:break;p1=p1-next;coutttt输入调整编号:number;coutttt修改后的薪水: salary;while(p1!=NULL)if(p1-GetEmpNo()=number)i=1;p1-salary=salary;p1=p1-next;break;default:cout无此选项 endl; break;if(i=0)coutttt无此人员 , 请核对后再调整信息!endl; if(i=1)coutttt修改成功! endl;coutttt是否退出y/nchoice; if(choice=y)break;排序函数vo
23、id boss:sort()system(cls);employee *p,*min,*p_min,*first=NULL,*tail; employee *p1=head-next;while(p1!=NULL)for(min=p1,p=p1;p-next!=NULL;p=p-next)if(p-next-Salary() Salary()p_min=p; min=p-next;if(first=NULL)elsefirst=min; tail=min;tail-next=min; tail=min;if(p1=min)elsep1=p1-next;p_min-next=min-next;i
24、f (first != NULL)tail-next = NULL;head-next = first; show();保存函数int boss:write_file()if(head-next=NULL)cout 空信息 , 请添加后保存next; ofstream myfile(); ofstream number();if(!myfile|!number )int l; docout 文件打开失败!GetFla(); switch(l)case 1:size=sizeof(employee);break; case 2:size=sizeof(salesman);break; case
25、3:size=sizeof(SalesManager);break; case 4:size=sizeof(Technical);break;case 5:size=sizeof(TechnicalManager);break;(char *)&l,sizeof(int);(char *)p,size); p=p-next;while(p!=NULL) ; ();();coutttt员工信息更新成功!next;coutttt请输入要删除员工的编号:num;while(p1!=NULL)if(p1-GetEmpNo()=num)p-next=p1-next; delete p1;coutttt该
26、员工已删除next;if(p1=NULL)coutttt无编号为 num的员工 !next;coutttt请输入要查找员工的编号number;system(cls); while(p1!=NULL)if(p1-GetEmpNo()=number)endl;coutshow(); p1=head-next; break;p=p1;p1=p1-next;读取函数if(p1=NULL)coutttt查无此人 endl; system(PAUSE);void boss:read_file()employee *p1,*p2;char name20;/姓名int number;/编 号 char lev
27、el20;/等级char sex;/性别float salary;/工资int flage; float x,y;ifstream infile(); ifstream in();if(!infile|!in)cout 尚未存入信息,请创建后再进行操作。 endl;p1=new employee(name,level,number,sex,flage); head=p1;int size; int i=0;docout*0)p1-next=p2;p1=p2;int flage;(char *)(&flage),sizeof(int); switch(flage)case 1:size=size
28、of(employee(name,level,number,sex,flage); p2=new employee(name,level,number,sex,1);break;case 2:size=sizeof(salesman(name,level,number,sex,flage,x,y); p2=new salesman(name,level,number,sex,2,x,y);break;case 3:size=sizeof(SalesManager(name,level,number,sex,flage,x,y); p2=new SalesManager(name,level,n
29、umber,sex,3,y,x);break;case 4:size=sizeof(Technical(name,level,number,sex,flage,x);p2=new Technical(name,level,number,sex,4,y); break;case 5:size=sizeof(TechnicalManager(name,level,number,sex,flage,x); p2=new TechnicalManager(name,level,number,sex,5,y);break;+i;while(char *)p2,size); ();();创建空头函数voi
30、d boss:creat_head()head=new employee; head-next=NULL;添加职员函数void boss:creat()while(true)system(cls);ifstream w(,ios:binary);(char *)&n,sizeof(int); ();employee *p1,*p2; p1=head;int i=0;while(p1-next!=NULL)char type;p1=p1-next;理endl;char name20; char lev20; char sex;coutttt请输入你所建立的信息:endl;couttype; sy
31、stem(cls);float sale_num,sale_object;switch(type)case 1:coutttt输入姓名 :name;coutttt输入性别 :sex;strcpy(lev,公司文书 );p2=new employee(name,lev,n+,sex,1); break;case 2:coutttt输入姓名 :name;coutttt输入性别 :sex;coutttt请输入销售额:sale_num;coutttt请输入项目额:sale_object;strcpy(lev,销售人员 );p2=new salesman(name,lev,n+,sex,2,sale_n
32、um,sale_object); break;case 3:coutttt输入姓名 :name;coutttt输入性别 :sex;coutttt请输入销售提成:sale_object;strcpy(lev,销售经理 ); p2=newSalesManager(name,lev,n+,sex,3,sale_num,sale_object);break;case 4:coutttt输入姓名 :name;coutttt输入性别 :sex;coutttt请输入代码数( 千行 ) : sale_num;strcpy(lev,技术人员 );p2=new Technical(name,lev,n+,sex,
33、4,sale_num); break;case 5:coutttt输入姓名 :name;coutttt输入性别 :sex;coutttt输入提成 :sale_num;strcpy(lev,技术经理 );p2=new TechnicalManager(name,lev,n+,sex,5,sale_num); break;/default :coutttt无此选项 !next=NULL; p1-next=p2;ofstream q(,ios:binary); if(q=NULL)cout errorendl;(char*)&n,sizeof(int) ); ();write_file();cout
34、ttt是否继续添加信息y/n?type;system(cls); if(type=110) break;void fun(employee *ptr)ptr-show();显示函数void boss:show()char type; system(cls);while(1)employee *pp=head-next; if(pp=NULL)coutttt信息为空,请创建信息endl;elsecout姓名 tt编号tt职务 ttt性别 tt工资next;coutttt 是 否 退 出 ?y/ntype;system(cls); if(type=121) break;老板菜单函数void MEU1()char choice; boss ba; ifstream infile(); ifstream in();();if(infile&in)coutttt检测到有保存的信息,是否加载N/Ychoice; if(choice=Y|choice=y)else();();ofstream q(,ios:binary);coutttt是否重新建立人员信息:choice;if(choice=Y|choice=y)n=1515900;(char*)&n,sizeof(int) );();system(cls); while(1)coutttt请选择功能 tttendl;coutttt1增加职员
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电子房屋买卖合同格式范本编写示例
- 投标安全承诺函
- 八年级生物下册 7.1.1 植物的生殖教案 (新版)新人教版
- 河北省安平县八年级地理上册 1.1 辽阔的疆域教学设计 新人教版
- 八年级物理上册 第二章 声现象 第2节 声音的特性第2课时声音的特性综合应用教案 (新版)新人教版
- 2023六年级英语上册 Review Module Unit 2教案 外研版(三起)
- 2024-2025学年新教材高中化学 第1章 原子结构 元素周期表 第2节 元素周期律和元素周期表 微专题二 元素“位-构-性”之间的关系教案 鲁科版必修第二册
- 2024-2025年高中语文 第3单元 单元导读教案 粤教版必修1
- 2024-2025学年高中历史 第四单元 工业文明冲击下的改革 第15课 戊戌变法(2)教学教案 岳麓版选修1
- 雨污管道劳务包工细分合同(2篇)
- 小学语文课堂教学评价量表 (2)
- 智能交通控制的课程设计
- 城市初期雨水污染治理
- 在护林员培训班上的讲话护林员会议讲话稿.doc
- 材料科学基础-第7章-三元相图
- (完整word版)高频变压器的设计
- 公路工程2018各项费用的计算程序及计算方式
- 户外急救知识(必备)
- 新浙摄版(2020)五年级下册信息技术全册教案
- 中国中国鲜红的太阳永不落-合唱简谱-歌词
- 房地产实现场勘查记录表(4张表格)
评论
0/150
提交评论