《面向对象程序设计》课程设计企业人事管理系统.doc
-
资源ID:2385769
资源大小:237.50KB
全文页数:31页
- 资源格式: DOC
下载积分:8金币
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
《面向对象程序设计》课程设计企业人事管理系统.doc
河南城建学院面向对象程序设计课程设计设计说明书课程名称: 面向对象程序设计课程设计 设计题目: 企业人事管理系统 指导教师: 班 级: 学 号: 学生姓名: 同组人员: 计算机科学与工程系2011年6月23日目 录第1章 选 题21.1 题目背景21.2系统实现的具体分工21.2.1 选题21.2.2团队分工21.3开发环境3第2章 设计内容32.1实现功能32.2 概要设计(涉及类的框图)42.3 界面设计4第3章 系统实现43.1 涉及知识点43.2 系统运行123.3 源程序清单(关键代码)15第4章 测试与实验结果29第5章 结束语30参考文献30第1章 选 题1.1 题目背景随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对人事信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高人事理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。因此,开发这样一套管理软件成为很有必要的事情。目前,无论是机关、事业单位、还是企业单位,人事管理对于组织生存与长远发展所具备的重要性都已经有了明确的认识,而人事管理水平的提升不仅需要高素质的管理人员,而且也需要信息化工具进行辅助在现代化的企业管理中,人事管理系统有着十分重要的作用,然而,用大型软件系统来于小型的企事业单位,不啻于“杀鸡用牛刀”,因此小型的的软件对于这种单位自然有十分重要作用。1.2系统实现的具体分工1.2.1 选题此项目是为了适应现代化企业的发展潮流,从而实现用计算机进行企业人事管理,达到检索迅速、查找方便、可靠性高、存储量大、保密性好等功能。一下是项目的功能:1、添加功能:添加一个职员的基本信息,包括姓名,工作证号,身份证号码,生日,家庭住址,家庭电话号码,部门,薪水,性别,职务。2、删除功能:能够对一个职员的信息进行删除按姓名进行删除。3、删除全部职员信息:能够对于全部职员的信息进行删除!4、显示功能:显示所有职员的主要信息包括姓名,身份证号码,工作证号,生日等。5、查找功能:根据你键入的职员姓名,显示其详细信息!6、修改功能:对职员的信息进行修改。7、保存信息对全部信息进行保存。8、退出程序 能够退出程序。1.2.2 团队分工表1.1 项目分工一览表角色姓名承担的具体任务组长于嘉构架整个程序的模块,负责部门类于全体职工类的构造。组员赵鑫磊已生成文件的方式保存录入的信息,组织交互界面,调试程序以及优化程序。组员千利稳编写增删改查的模块程序,构造base类。1.3开发环境编程工具:Visual C+ 6.0机型:方正电脑处理器名称:Intel(R)Core(TM)2 Duo CPU E7200 2.53GHz硬盘驱动器:WDC WD1600AAJS-22WAAO系统内存:金士顿内存2GB显示卡:NVIDIA GeFORCE 9400 GT显示器:方正科技FG981-W9操作系统:Microsoft Windows XP Professional第2章 设计内容2.1实现功能1、添加功能:添加一个职员的基本信息,包括姓名,工作证号,身份证号码,生日,家庭住址,家庭电话号码,部门,薪水,性别,职务。2、删除功能:能够对一个职员的信息进行删除按姓名进行删除。3、删除全部职员信息:能够对于全部职员的信息进行删除!4、显示功能:显示所有职员的主要信息包括姓名,身份证号码,工作证号,生日等。5、查找功能:根据你键入的职员姓名,显示其详细信息!6、修改功能:对职员的信息进行修改。7、保存信息对全部信息进行保存。8、退出程序 能够退出程序。2.2 概要设计(涉及类的框图)系统base类personnel类 maintain类员工工作号员工姓名员工身份证号员工性别员工生日员工家庭住址员工电话员工职务员工薪水员工职务员工薪水员工工作号员工姓名员工身份证号员工性别员工生日员工家庭住址员工电话2.3 界面设计界面设计在工作流程上分为结构设计、交互设计、视觉设计三个部分。结构设计也称概念设计 (Conceptual Design),是界面设计的骨架。该企业人事管理系统运行时界面上的目录体系和词语定义易于用户理解和操作,例如主界面的目录体系包括1 录入员工信息、2显示员工信息、3、查找员工信息4、删除员工信息、5 、修改员工信息、6、清空员工信息、7、保存员工信息、8、退出。其中录入信息会出现1、人事部、2、维修部、3、销售部。第3章 系统实现3.1 涉及知识点类的设计与分析为了界面简洁些,用了几个类。一个类包含员工的基本信息,一个类包含部门的信息,一个类继承了基本信息和部门信息。1Base类class Basepublic:int No;int ID;string Name;string Sex;int Birthday;string Address;int Phone;void input()cout<<"输入员工的工作号:"<<endl;cin>>No;cout<<"输入员工的姓名:"<<endl;cin>>Name;cout<<"输入员工的性别:"<<endl;cin>>Sex;cout<<"输入员工的身分证:"<<endl;cin>>ID;cout<<"输入员工的生日:"<<endl;cin>>Birthday;cout<<"输入员工的家庭住址:"<<endl;cin>>Address;cout<<"输入员工的家庭电话号码:"<<endl;cin>>Phone;void output()cout<<setiosflags(ios:left)<<setw(8)<<No<<setw(8)<<Name<<setw(6)<<Sex<<setw(8)<<ID<<setw(10)<<Birthday <<setw(8)<<Address<<setw(10)<<Phone;Base类说明表名称属性说明NO数据成员记录员工对象的工作号Name数据成员记录员工对象的姓名ID数据成员记录员工对象的身分证Sex数据成员记录员工对象的性别Birthday数据成员记录员工对象的生日Address数据成员记录员工对象的家庭住址Phone数据成员记录员工对象的电话void input()成员方法成员函数,输入数据void output()成员方法成员函数,输出数据2Personnel类class Personnel /人事部public:virtual void show()cout<<"人事部"<<endl;string Job;int Pay;void input() cout<<"请输入该员工的职务"<<endl; cin>>Job; cout<<"请输入该员工的薪水"<<endl; cin>>Pay; void output() cout<<setiosflags(ios:left)<<"职务:"<<setw(6)<<Job <<"薪水:"<<setw(6)<<Pay<<endl;Personnel类说明表名称属性说明Job数据成员记录员工对象的职务Pay数据成员记录员工对象的薪水virtual void show()成员方法虚函数,显示所在的部门void input()成员方法成员函数,输入数据void output()成员方法成员函数,输出数据3继承类class Maintain:public Personnel /维修部public:virtual void show()cout<<"维修部"<<endl;Maintain类说明表名称属性说明Job数据成员记录员工对象的职务Pay数据成员记录员工对象的薪水virtual void show()成员方法虚函数,显示所在的部门void input()成员方法成员函数,输入数据void output()成员方法成员函数,输出数据class Staff : public Base, public Branch<Type> ;Staff类说明表名称属性说明NO数据成员记录员工对象的工作号Name数据成员记录员工对象的姓名ID数据成员记录员工对象的身分证Sex数据成员记录员工对象的性别Birthday数据成员记录员工对象的生日Address数据成员记录员工对象的家庭住址Phone数据成员记录员工对象的电话void input()成员方法成员函数,输入数据void output()成员方法成员函数,输出数据Job数据成员记录员工对象的职务Pay数据成员记录员工对象的薪水virtual void show()成员方法虚函数,显示所在的部门void input()成员方法成员函数,输入数据void output()成员方法成员函数,输出数据模块设计与分析1录入员工信息void insert()/录入数据int n; while(1) cout<<"请输入部门的代码: 1-人事部 2-维修部 3销售部"<<endl; cin>>n;if(n=1|n=2|n=3) if(n=1) do Staff<Personnel> *p;p=new Staff<Personnel>p->bumen.show();p->input();p->bumen.input();int q;dofor(int i=0;i<N;i+) q=0;if(Pi=NULL) break;else if(Pi->No=p->No)cout<<"此工作号已存在!请修改!"<<endl;p->input();p->bumen.input();q+;break;while(q!=0);for(int j=0;j<N;j+) if(Pj=NULL) Pj=p;cout<<"输入成功!"<<endl;break; cout<<"你还要继续执行其操作吗?是'1', 否'0':"cin>>n;while(n=1);P申请新的Staff<Personnel>空间,输入数据,检查所输入的信息是否已经存在,存在显示数据已经存在,重新输入新的数据,再检查,直到输入没有错误。进入保存该正确的数据,空间要有足够的空间才能保存数据,不足就保存失败。2显示员工信息void show()/显示数据Staff<Personnel> *p;cout<<out<<endl;for(int j=0;j<N;j+)if(Pj!=NULL)p=Pj;p->output();p->bumen.output();只要P的空间内不为空就输出数据。3查找员工信息 void find()/查找数据 string n; cout<<"输入你要查找姓名"<<endl; cin>>n; for(int j=0;j<N;j+) if(Pj!=NULL&&(Pj->Name)=n) Pj->bumen.show(); cout<<out<<endl; Pj->output();Pj->bumen.output(); break; 输入要查找的名字,循环空间,空间不为空,而且空间里的名字与输入的名字对比,符合就输出该数据,不符合下一条数据,直到符合为止。如果全部空间扫描完都没有找到该信息,就输出不存在该信息。4删除员工信息 void Delete()/删除数据string n;int m; cout<<"输入你要查找姓名"<<endl; cin>>n; cout<<"请输入该员工所在的部门的代码: 1-人事部 2-维修部 3销售部"<<endl; cin>>m;if(m=1) for(int j=0;j<N;j+) if(Pj!=NULL&&(Pj->Name)=n)cout<<out<<endl;Pj->output();Pj->bumen.output(); Pj=NULL;cout<<"该员工已被删除!"<<endl;break; 输入要查找的名字,循环空间,空间不为空,而且空间里的名字与输入的名字对比,符合就把该项的数据赋为空值,不符合下一条数据,直到符合为止。如果全部空间扫描完都没有找到该信息,没有信息输出。5修改员工信息 void revise()/修改数据string n;int m; cout<<"输入你要查找姓名"<<endl; cin>>n; cout<<"请输入该员工所在的部门的代码: 1-人事部 2-维修部 3销售部"<<endl; cin>>m; if(m=1) for(int j=0;j<N;j+) if(Pj!=NULL&&(Pj->Name)=n)cout<<out<<endl; Pj->output();Pj->bumen.output();Pj->input();Pj->bumen.input();cout<<"该员工修改成功!"break; 输入要查找的名字,循环空间,空间不为空,而且空间里的名字与输入的名字对比,符合就重新输入数据,不符合下一条数据,直到符合为止。如果全部空间扫描完都没有找到该信息,就没有信息输出。6清空员工信息void clear()/清空数据 int n,a=1; do cout<<"请输入密码"<<" '0'返回界面"<<endl;cin>>n; if(n=a) for(int i=0;i<N;i+) Pi=NULL; Mi=NULL; Si=NULL; cout<<"所有员工的资料已被删除!"<<endl;break; else cout<<"输入密码失败!"<<endl; while(n!=0);首先清空全部员工数据是要慎重考虑的,所以要设置密码,且密码定义为1,没有密码不能清空全部员工。密码正确,然后把所有的空间都赋为空值。7保存员工信息void save()/保存数据ofstream output_file;ofstream output_file1;ofstream output_file2;ofstream output_file3;cout<<"正在保存中."<<endl;output_file.open("Personnel.txt"); if(!output_file) cout<<"保存Personnel文件失败!"<<endl; for(int i=0;i<N;i+) if(Pi!=NULL) output_file<<Pi->No<<" "<<Pi->Sex<<" "<<Pi->Name<<" "<<Pi->ID<<" "<<Pi->Birthday<<" "<<Pi->Address<<" "<<Pi->Phone<<" "<<Pi->bumen.Job<<" "<<Pi->bumen.Pay<<endl; b1+; output_file2.open("Maintain.txt");if(!output_file2) cout<<"保存Maintain文件失败!"<<endl; for( i=0;i<N;i+) if(Mi!=NULL) output_file2<<Mi->No<<" "<<Mi->Sex<<" "<<Mi->Name<<" "<<Mi->ID<<" "<<Mi->Birthday<<" "<<Mi->Address<<" "<<Mi->Phone<<" "<<Mi->bumen.Job<<" "<<Mi->bumen.Pay<<endl; b2+; output_file3.open("Sell.txt");if(!output_file3) cout<<"保存Sell文件失败!"<<endl; for( i=0;i<N;i+) if(Si!=NULL) output_file3<<Si->No<<" "<<Si->Sex<<" "<<Si->Name<<" "<<Si->ID<<" "<<Si->Birthday<<" "<<Si->Address<<" "<<Si->Phone<<" "<<Si->bumen.Job<<" "<<Si->bumen.Pay<<endl; b3+; 因为我用了3个数组来保存3个不同的部门信息,所以就用了3个不同的文件来保存。然后再用一个文件来保存各个部门的数据的条数,这样是用来控制读出文件的条数,防止读出错误的信息。8退出程序3.2 系统运行图3.1 系统主界面3.3 源程序清单(关键代码)/basic.h#include"string"#include"iostream"#include "iomanip"using namespace std;class Basepublic:int No;int ID;string Name;string Sex;int Birthday;string Address;int Phone;void input()cout<<"输入员工的工作号:"<<endl;cin>>No;cout<<"输入员工的姓名:"<<endl;cin>>Name;cout<<"输入员工的性别:"<<endl;cin>>Sex;cout<<"输入员工的身分证:"<<endl;cin>>ID;cout<<"输入员工的生日:"<<endl;cin>>Birthday;cout<<"输入员工的家庭住址:"<<endl;cin>>Address;cout<<"输入员工的家庭电话号码:"<<endl;cin>>Phone;void output()cout<<setiosflags(ios:left)<<setw(8)<<No<<setw(8)<<Name<<setw(6)<<Sex<<setw(8)<<ID<<setw(10)<<Birthday <<setw(8)<<Address<<setw(10)<<Phone;/branch.h#include"iostream"#include"string"#include "iomanip"using namespace std; class Personnel /人事部public:virtual void show()cout<<"人事部"<<endl;string Job;int Pay;void input() cout<<"请输入该员工的职务"<<endl; cin>>Job; cout<<"请输入该员工的薪水"<<endl; cin>>Pay; void output() cout<<setiosflags(ios:left)<<"职务:"<<setw(6)<<Job <<"薪水:"<<setw(6)<<Pay<<endl;class Maintain:public Personnel /维修部public:virtual void show()cout<<"维修部"<<endl;class Sell:public Personnel /销售部public:virtual void show()cout<<"销售部"<<endl;template <class Type>class Branch public:Type bumen;/staff.h#include"basic.h"#include"branch.h"#include"iostream"using namespace std;template <class Type>class Staff : public Base, public Branch<Type> ;/头文件#include"string"#include<string>#include"staff.h"#include"cstdio"#include"conio.h"#include"fstream"#include"iostream"#include"stdlib.h"#define N 100using namespace std;Staff<Personnel> *PN; Staff<Maintain> *MN;Staff<Sell> *SN;const int SIZE_CHAR = 5; const char CCH = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"int b1=0,b2=0,b3=0;/导入数据条数string m()/随机生字母 char chSIZE_CHAR + 1 = 0; for (int i = 0; i < SIZE_CHAR; +i) int x = rand() % (sizeof(CCH) - 1); chi = CCHx; return ch;ostream& out(ostream& stream)/操纵符return stream <<setiosflags(ios:left)<<setw(8)<<"工作号"<<setw(8)<<"姓名"<<setw(6)<<"性别"<<setw(8)<<"身分证"<<setw(12)<<"生日"<<setw(8)<<"地址" <<setw(10)<<"电话"<<" 部门 "void insert()/录入数据int n; while(1) cout<<"请输入部门的代码: 1-人事部 2-维修部 3销售部"<<endl; cin>>n;if(n=1|n=2|n=3) if(n=1) do Staff<Personnel> *p;p=new Staff<Personnel>p->bumen.show();p->input();p->bumen.input();int q;do for(int i=0;i<N;i+) q=0;if(Pi=NULL) break; else if(Pi->No=p->No)cout<<"此工作号已存在!请修改!"<<endl; p->input(); p->bumen.input(); q+; break; while(q!=0);for(int j=0;j<N;j+) if(Pj=NULL) Pj=p;cout<<"输入成功!"<<endl; break; cout<<"你还要继续执行其操作吗?是'1', 否'0':"cin>>n; while(n=1);else if(n=2) do Staff<Maintain> *a;a=new Staff<Maintain>a->bumen.show(); a->input();a->bumen.input();int q;dofor(int i=0;i<N;i+) q=0;if(Mi=NULL) break; else if(Mi->No=a->No)cout<<"此工作号已存在!请修改!"<<endl; a->input(); a->bumen.input(); q+; break; while(q!=0);for(int j=0;j<N;j+) if(Mj=NULL) Mj=a; cout<<"输入成功!"<<endl; break; cout<<"你还要继续执行其操作吗?是'2', 否'0':"cin>>n; while(n=2);else if(n=3) do Staff<Sell> *s;s=new Staff<Sell>s->bumen.show(); s->input();s->bumen.input();int q;dofor(int i=0;i<N;i+) q=0;if(Si=NULL) break; else if(Si->No=s->No)cout<<"此工作号已存在!请修改!"<<endl; s->input(); s->bumen.input(); q+; break; while(q!=0);for(int j=0;j<N;j+) if(Sj=NULL) Sj=s; cout<<"输入成功!"<<endl; break; cout<<"你还要继续执行其操作吗?是'3', 否'0':"cin>>n; while(n=3);break;void show()/显示数据 int n; while(1) cout<<"请输入部门的代码: 1-人事部 2-维修部 3销售部 "<<endl; cin>>n; if(n=1|n=2|n=3) if(n=1) Staff<Personnel> *p;cout<<out<<endl;for(int j=0;j<N;j+)if(Pj!=NULL)p=Pj;p->output();p->bumen.output();break;else if(n=2)Staff<Maintain> *a;cout<<out<<endl;for(int i=0;i<N;i+) if(Mi!=NULL) a=Mi; a->output();a->bumen.output(); break;else if(n=3)Staff<Sell> *s;cout<<out<<endl;for(int i=0;i<N;i+) if(Si!=NULL) s=Si; s->output();s->bumen.output(); break; else if(n=0) break; void find()/查找数据 string n; cout<<"输入你要查找姓名"<<endl; cin>>n; for(int j=0;j<N;j+) if(Pj!=NULL&&(Pj->Name)=n) Pj->bumen.show(); cout<<out<<endl; Pj->output();Pj->bumen.output();break; for(j=0;j<N;j+) if(Mj!=NULL&&(Mj->Name)=n) Mj->bumen.show(); cout<<out<<endl; Mj->output();Mj->bumen.output(); break; for(j=0;j<N;j+) if(Sj!=NULL&&(Sj->Name)=n) Sj->bumen.show();cout<<out<<endl; Sj->output();Sj->bumen.output(); break; void Delete()/删除数据 string n;int m; cout<<"输入你要查找姓名"<<endl; cin>>n; cout