北华大学吕磊课程设计公司员工管理系统.doc_第1页
北华大学吕磊课程设计公司员工管理系统.doc_第2页
北华大学吕磊课程设计公司员工管理系统.doc_第3页
北华大学吕磊课程设计公司员工管理系统.doc_第4页
北华大学吕磊课程设计公司员工管理系统.doc_第5页
免费预览已结束,剩余20页可下载查看

下载本文档

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

文档简介

北华大学计算机科学技术学院网络工程11-1课程设计课程名称:面向对象程序设计课程设计题目:公司员工管理系统年级/专业/班级:2012网络11-1姓名:学号:完成时间:2012年7月6日一 设计题目公司员工管理系统二 主要内容设计公司员工管理系统,具有插入,删除,显示,修改和查询员工信息功能。三 具体要求(1) 采用双链表结构,用类和链表完成系统设计,设计员工employee类,包括职工的职工号,姓名,性别,部门,职务,工资明细,具有员工信息的插入,删除,显示,修改和查询员工信息功能。(2) 可通过员工姓名和所在部门进行查询。(3) 显示功能中:对链表提供逐屏显示选择而且可以由用户确定没屏显示的数目。(4) 课程设计说明:采用运算符重载的方式进行文件存取,这样保存,查询,修改都很方便。四 主要技术路线指示首先根据要解决的问题分析设计类图,抽象出各个累的数据成员和函数成员,然后进行详细编码,在主函数中创建类的对象,调用适当的成员函数或全局函数实现相应的功能,最后对软件进行测试。目录1. 引言1.1问题的提出1.2国内外研究的现状1.3任务与分析2需求分析2.1功能分析2.1.1插入功能2.1.2删除功能2.1.3显示功能2.1.4修改功能2.1.5查询功能2.2需求分析规格说明书3程序运行平台4总体设计4.1结构框图4.2程序中类的说明4.3抽象类定义4.4功能模块划分5详细设计5.1数据类型定义5.2主要模块设计5.2.1模块1插入模块设计5.2.2模块2删除模块设计5.2.3模块3显示模块设计5.2.4模块4修改模块设计5.2.5模块5查询模块设计6系统测试6.1测试用例6.2测试结果7总结参考文献 /* 参考文献1.李强,贾云霞编著.Viasual C+项目开发实践 北京:中国铁道部出版社 20032.Islamabad. Software tools for forgery detectionJ.Business line.2001.(5).3.郑莉等编著.C+程序设计语言(第三版).北京:清华大学出版社.4.陈清华,朱红主编.Visual C+课程设计案例精选与编程指导.南京,东南大学出版社,2003 5.刘振安等编著C+程序设计课程设计.北京:机械工业出版社20046.朱立华等编著.面向对象程序设计及C+.北京,人民邮电出版社2008 */ 摘要在当今社会,互联网空间的发展,给人们的工作和生活带来了极大的便利和高效,信息化,电子化已经成为节约运营成本,提高工作效率的首选。当前大量企业的员工管理尚处于手工作业阶段,不但效率低下,还常常因为管理的不慎出现纰漏。因为部分企业需求,设计员工信息管理系统,以帮助企业达到员工管理办公自动化,节约管理成本,提高企业工作效率的目的。员工信息管理系统主要对员工的信息以及跟人事相关的工作流程进行集中管理。使用C+编写管理程序,完成数据的输入,修改,存储,调用查询等功能。员工信息管理系统是事业单位科学,全面,高效进行人事管理的系统,参考大量中国人力资源管理理论,根植于国内管理的实际情况,使用而科学。内容包括机构的建设和维护,人员信息的录入和输出,工资的调整和输出功能。在操作上集输入,维护,查询,统计,输出等处理为一体,简洁灵活,自动化功能强大。分析了当前的形势,利用C+面向对象程序设计语言采用双链的数据结构编程实现了改公司员工管理系统,该系统具有人员信息的添加,删除,查找,修改,显示等功能。关键词:公司员工管理系统;计算机;输入;修改;查询;管理;双链1引言1.1问题的提出在现代化的企业管理中,人事管理系统有着十分重要的作用,然而,用大型软件系统来管理小型的企业事业单位,就成了“杀鸡用牛刀”,因此小型的软件对于这种单位自然有着十分重要作用。1.2国内外研究现状目前,在国内,人事信息管理系统从科学的人事信息管理角度出发,从企业的人事信息的规划开始,一般包括了员工基础信息,培养信息,技能信息,绩效评定,调动信息,往往经历,工资管理等,并以一种共享的,兼容的,相通的,便于访问和查询的方式存储到共通的数据库中,从而形成一个统一管理企业的人事信息平台,及时且全面的收集员工的调动信息科加强信息分析系统的灵活性,减少人事信息的管理系统的复杂性和重复性,使人事管理人员的工作负担大大减少,将更多的精力投入到企业人事的规划,统筹,及一些更具战略意义的工作中,提高了整个人事管理及企业营运的效率。从全局来看,人事信息管理系统会将每个企业员工从招聘到离职期间的所有历史信息全部记录下来,其中包括了员工在职期间的调动信息,绩效评定和工资信息等。当今计算机的高速发展,使人事信息管理模式在软硬件的先进技术下不断发展,促使了人事信息管理系统的诞生,将其与自身管理模式相结合,通过共享的数据库共享,员工可自主的处理数据,达到共享服务的目的,有效降低企业的管理成本,提高其运营效率,简化操作管理工序。整个人事信息管理系统着重于组织结构和企业员工信息两大部分,能够让企业管理的部门快速了解和操作信息,便于及时规划及运作,形成了一个有效的运作系统,其中包括了企业组织到员工,再到劳动和酬薪等等各个部门,能迅速反映人事信息情况,为企业的人事管理的决策层提供有效及时的技术支持。1.3任务分析采用双链的数据结构设计公司员工管理系统,该系统实现对公司人员按姓名或编号显示,查找,增加,删除和保存各类人员信息的操作。使用高效的,快捷的,方便的职工信息管理。能按姓名或编号显示,查找,增加,删除和保存各类人员信息。2. 需求分析2.1功能分析插入功能:DLink InsertNode(DLink Head)显示功能:void Print()删除功能:void Amend()修改功能:void Query()2.11插入功能函数原型:DLink InsertNode(DLink Head)说明:添加一个职工的基本信息,包括职工号,姓名,性别,所在部门,职务,薪水。2.12删除功能函数原型:void Delete()说明:能够对一个职工的信息进行删除,按职工号+姓名进行删除。213显示功能函数原型:void Print()说明:输出显示满足条件的或者全部的职工信息,包括职工号,姓名,性别,所在部门,职务,工资明细等。2.14修改功能函数原型:void Amend()说明:对满足条件的职工信息进行修改,可以修改职工所在部门,职务,工资。2.1.5查询功能函数原型:void Query()说明:根据你键入的职工姓名,显示详细信息!2.2需要分析规格说明书这是一个简单的,小型的公司员工管理系统,它可以实现职工信息的录入,删除,查询,以及对已有信息的修改等功能;该系统使用了文件操作来保存数据,可以将数据永久的保存在计算机中。3程序运行平台程序运行平台是基于Windows操作系统的VC+6.0,该程序在该平台上测试通过,能正常运行。3. 总体设计4.1结构框图员工工资管理系统插入工资查询工资修改工资删除工资显示工资函数实现登陆界面菜单界面函数模块主函数函数的实现4.2程序中类的说明职工类说明:class employee private:Node data; /构造体类型的数据成员 public:friend ostream&operator(istream&stream,DLink p);/友元重载输入 流运算符 employee(); /构造函数 DLink CreateLink();/创建链表 DLink InsertNode(DLink Head);/插入一个结点 ;4.3抽象数据定义ADT CEMS数据对象:职工信息;基本操作:DLink InsertNode(DLink Head);插入职工信息Void Print()显示职工信息Void Delete()删除职工信息Void Amend()修改职工信息Void Query()查询职工信息Void SetWage(DLink p)设置明细工资ADT;#include #include#include#include#include#include#include#include#includeusing namespace std; /工资明细结构体 typedef struct WAGE float Base_Wage;/基本工资 float Merit_Wage;/绩效工资 float Sum_Wage;/总工资 WAGE;/包括职姓名,职工号的工资记录 typedef struct Emplo_Wage char id10; /职工编号 char name10;/职工姓名 WAGE data; /工资 Emplo_Wage;typedef struct Node char E_id10; /职工号 char E_name10;/姓名 char E_sex3; /性别 char E_dep20; /部门 char E_job20; /职务 float E_wage; /工资 struct Node*prior; /前驱指针 struct Node*next;/后继指针 Node,*DLink;/工资超过1000的员工,超过部门校园按税率交税 float Tax_Rate1=0.05f;/3000以下 float Tax_Rate2=0.1f;/3000-80000 float Tax_Rate3=0.15f;/8000以上 void SetWage(DLink p); / /职工类 class employee private:Node data; /构造体类型的数据成员 public:friend ostream&operator(istream&stream,DLink p);/友元重载输入 流运算符 employee(); /构造函数 DLink CreateLink();/创建链表 DLink InsertNode(DLink Head);/插入一个结点 ; / /全局常量,一个结点的大小 const int NUM=sizeof(Node); / /重载输出流运算符 ostream&operator(ostream&stream,const DLink p) streamsetiosflags(ios:left)setw(10)E_id setiosflags(ios:left)setw(10)E_name setiosflags(ios:left) setw(7)E_sexsetiosflags(ios:left)setw(15) E_depsetiosflags(ios:left)setw(15)E_job setiosflags(ios:left)setw(8)E_wage(istream & stream,DLink p) coutp-E_name;coutp-E_sex;coutp-E_dep;coutp-E_job;SetWage(p); coutprior=NULL; Head-next=NULL; return Head; /插入结点DLink employee:InsertNode(DLink Head) DLink p; ofstream file(EmployeeInfo.txt,ios:app);/打开文件 if(!file) coutCannot open the file!n;return 0; p=new Node; cout请输入员工信息:n; coutp-E_id; while(strcmp(p-E_id,00)/循环输入,以00结束输入 cinp;p-prior=Head;p-next=Head-next;if(Head-next!=NULL)/如果不是空链 Head-next-prior=p;Head-next=p;file.write(char*)p,NUM);p=new Node;cout请输入员工信息:n; coutp-E_id; file.close();/关闭文件 printf(录入完毕.n); return Head; /输出格式void Print_Format() coutsetiosflags(ios:left)setw(10)职工号 setiosflags(ios:left)setw(10)姓名 setiosflags(ios:left)setw(7) 性别setiosflags(ios:left)setw(15)所在部门 setiosflags(ios:left)setw(15)职务 setiosflags(ios:left)setw(8)工资endl; /设置工资税率void SetTRate() do cout请输入税率:;cinTax_Rate1; while(Tax_Rate11|Tax_Rate10); do cout请输入税率:;cinTax_Rate2; while(Tax_Rate21|Tax_Rate20); do cout请输入税率:; cinTax_Rate3; while(Tax_Rate31|Tax_Rate30); /设置一个员工的明细工资void SetWage(DLink p)/ int flag=0; float sum;Emplo_Wage*s;s=new Emplo_Wage;/ q=new Emplo_Wage; fstream file;file.open(Employee_Wage_Info.txt,ios:app); if(!file)cout打开工资文件失败!endl;return; couts-data.Base_Wage;/设置绩效工资 couts-data.Merit_Wage;/设置基本工资 sum=s-data.Base_Wage+s-data.Merit_Wage; if(sumdata.Sum_Wage=sum; else if(sumdata.Sum_Wage=(sum-1000)*(1-Tax_Rate1)+1000; else if(sumdata.Sum_Wage=(sum-3000)*(1-Tax_Rate2)+3000; else s-data.Sum_Wage=(sum-8000)*(1-Tax_Rate3)+8000; p-E_wage=s-data.Sum_Wage;/总工资 strcpy(s-id,p-E_id); strcpy(s-name,p-E_name); file.write(char*)s,sizeof(Emplo_Wage);/写入文件 file.close(); /输出void Print() int n,count=0; DLink p; ifstream file(EmployeeInfo.txt); /打开文件 if(!file) coutCannot open the file!n;return; p=new Node; coutn; system(cls);/清屏 Print_Format();/输出字段名 while(!file.eof() file.read(char*)p,NUM); if(file.fail() break; if(n=count) /控制每一屏显示的记录条数 system(pause);/暂停 system(cls); /清屏 count=0; /计数器清零 Print_Format(); coutp; count+; /修改函数 void Amend() int n; char id10;/存放输入的需要修改信息的职工号 DLink p; p=new Node; fstream file; file.open(EmployeeInfo.txt,ios:in|ios:out);/以读写方式打开 if(!file) coutCannot open the file!n;return; coutid; while(!file.eof() file.read(char*)p,NUM); if(file.fail() break; if(!strcmp(p-E_id,id) break; if(file.eof() printf(没有这个职工号!n);return; cout可以修改的项目有:1-部门 2-职务 3-工资n; coutn; if(n=0) /修改所在部门职务工资 coutp-E_dep; coutp-E_job; SetWage(p); else if(n=1) /修改所在部门 coutp-E_dep; else if(n=2) /修改职务 coutp-E_job; else if(n=3) /修改工资 SetWage(p); else printf(输入错误!n); file.seekp(-1*NUM,ios:cur);/写指针回跳一条记录,以便更新记录 file.write(char*)p,NUM); /写入更新后的记录 if(n=0|n=1|n=2|n=3) printf(修改成功!n); /操作提示 file.close(); /关闭文件 /查询函数void Query() char Query_Value20; /存放输入的需要查询的姓名或部门名称 int flag=0,n; /是否查询到的标志 DLink p;p=new Node;ifstream file(EmployeeInfo.txt);/打开文件 if(!file)coutCannot open the file!n;return;cout通过哪种方式查询:endl;coutt1-姓名 2-所在部门endl;coutn;if(n=1) coutQuery_Value;else if(n=2) coutQuery_Value;elsecout输入错误!E_name,Query_Value) Print_Format();coutE_dep,Query_Value) Print_Format(); coutp;flag=1; if(flag=0) printf(查询失败,没有相应记录!n);file.close();/关闭文件 /删除函数void Delete() char id10; /存放输入的职工号 char name10; /存放输入的职工姓名 int count1=0,count2=0;/count1-总的记录数,count2-删除记录以后的总记录数 DLink p;p=new Node;ifstream file(EmployeeInfo.txt);if(!file)coutCannot open the file!n;return;ofstream newfile(NewEmployeeInfo.txt);if(!newfile)coutCannot open the file!n;return;coutid;coutname;while(!file.eof() file.read(char*)p,NUM);count1+;if(file.fail() break;if(strcmp(p-E_name,name)|strcmp(p-E_id,id) newfile.write(char*)p,NUM); count2+; file.close(); /关闭文件 newfile.close();/关闭文件 remove(EmployeeInfo.txt);/删除原来的EmployeeInfo.txt rename(NewEmployeeInfo.txt,EmployeeInfo.txt);/重命名 if(count1=count2) printf(没有这个记录!n);else printf(删除成功!n); /查看职工工资明细void showwage()int n;char temp110;Emplo_Wage temp2;ifstream file(Employee_Wage_Info.txt);if(!file)cout职工工资表文件不能打开!endl;return;cout请选择操作项:endl;cout1-查看某个职工工资明细 2-查看全部职工工资明细endl;coutn;if(n=1) couttemp1; else if(n!=2)cout输入错误!endl;return;coutsetiosflags(ios:left)setw(10)职工号setiosflags(ios:left)setw(10)姓名 setiosflags(ios:left)setw(10)基本工资setiosflags(ios:left)setw(10)绩效工资 setiosflags(ios:left)setw(10)总工资endl; while(!file.eof() file.read(char*)&temp2,sizeof(Emplo_Wage);if(file.fail() break;if(n=1) /输出某个职工的工资明细 if(!strcmp(temp2.id,temp1)coutsetiosflags(ios:left)setw(10)temp2.id setiosflags(ios:left)setw(10)setiosflags(ios:left)setw(10)temp2.data.Base_Wage setiosflags(ios:left)setw(10)temp2.data.Merit_Wagesetiosflags(ios:left)setw(10)temp2.data.Sum_Wageendl; break; else coutsetiosflags(ios:left)setw(10)temp2.id setiosflags(ios:left)setw(10) setiosflags(ios:left)setw(10)temp2.data.Base_Wage setiosflags(ios:left)setw(10)temp2.data.Merit_Wage setiosflags(ios:left)setw(10)temp2.data.Sum_Wageendl; /欢迎界面void startface() while(!kbhit() system(color 3C);

温馨提示

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

评论

0/150

提交评论