《公司员工管理系统(共13页).doc》由会员分享,可在线阅读,更多相关《公司员工管理系统(共13页).doc(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上/公司员工管理系统-CEMS#include/文件操作头文件#include/包含system()等函数的头文件#include/字符串处理头文件#include/输入输出流重载需要的头文件#include/工资明细结构体typedefstructWAGEfloatBase_Wage;/基本工资floatMerit_Wage;/绩效工资floatSum_Wage;/总工资WAGE;/包括职工姓名、职工号的工资记录typedefstructEmplo_Wagecharid10;/职工编号charname10;/职工姓名WAGEdata;/工资Emplo_Wage;typ
2、edefstructNodecharE_id10;/职工号charE_name10;/姓名charE_sex3; /性别charE_dep20; /部门charE_job20; /职务floatE_wage; /工资structNode*prior;/前驱指针structNode*next;/后继指针Node,*DLink;/工资大于1000的员工,超过部门需要按税率交税floatTax_Rate1=0.05f;/3000以下floatTax_Rate2=0.1f;/3000-8000floatTax_Rate3=0.15f;/8000以上voidSetWage(DLinkp);/职工类cla
3、ssemployeeprivate:Nodedata;/结构体类型的数据成员public:friendostream&operator(istream&stream,DLinkp);/友元重载输入流运算符employee();/构造函数DLinkCreateLink();/创建链表DLinkInsertNode(DLinkHead);/插入一个结点;/全局常量,一个结点的大小constintNUM=sizeof(Node);/重载输出流运算符ostream&operator(ostream&stream,constDLinkp)streamsetiosflags(ios:left)setw(1
4、0)E_idsetiosflags(ios:left)setw(10)E_namesetiosflags(ios:left)setw(7)E_sexsetiosflags(ios:left)setw(15)E_depsetiosflags(ios:left)setw(15)E_jobsetiosflags(ios:left)setw(8)E_wage(istream&stream,DLinkp)coutp-E_name;coutp-E_sex;coutp-E_dep;coutp-E_job;SetWage(p);/输入工资coutprior=NULL;Head-next=NULL;return
5、Head;/插入结点DLinkemployee:InsertNode(DLinkHead)DLinkp;ofstreamfile(EmployeeInfo.txt,ios:app);/打开文件if(!file)coutCannotopenthefile!n;return0;p=newNode;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;f
6、ile.write(char*)p,NUM);p=newNode;cout请输入员工信息:n;coutp-E_id; file.close();/关闭文件printf(录入完毕.n);returnHead;/输出格式voidPrint_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(i
7、os:left)setw(8)工资endl;/设置工资税率voidSetTRate()docout请输入税率:;cinTax_Rate1;while(Tax_Rate11|Tax_Rate10);docout请输入税率:;cinTax_Rate2;while(Tax_Rate21|Tax_Rate20);docout请输入税率:;cinTax_Rate3;while(Tax_Rate31|Tax_Rate30);/设置一个员工的明细工资voidSetWage(DLinkp)/ intflag=0;floatsum;Emplo_Wage*s;s=newEmplo_Wage;/ q=newEmpl
8、o_Wage;fstreamfile;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;elseif(sumdata.Sum_Wage=(sum-1000)*(1-Tax_Rate1)+1000;elseif(sumdata.Sum_Wage=(sum-3
9、000)*(1-Tax_Rate2)+3000;elses-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();/输出voidPrint()intn,count=0;/n-输入的每屏显示的记录数,count-计数DLinkp;ifstreamfile(EmployeeInfo.txt);/打开文件if(!
10、file)coutCannotopenthefile!n;return;p=newNode;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+;/修改函数voidAmend()intn;/用于选择修改选项charid10;/存放输入的需要修改信息的职工
11、号DLinkp;p=newNode;fstreamfile;file.open(EmployeeInfo.txt,ios:in|ios:out);/以读写方式打开if(!file)coutCannotopenthefile!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)/修改所在
12、部门、职务、工资coutp-E_dep;coutp-E_job;SetWage(p);elseif(n=1)/修改所在部门coutp-E_dep;elseif(n=2)/修改职务coutp-E_job;elseif(n=3)/修改工资SetWage(p);elseprintf(输入错误!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();/关闭文件/查询函数voidQuery()char
13、Query_Value20;/存放输入的需要查询的姓名或部门名称intflag=0,n;/是否查询到的标志DLinkp;p=newNode;ifstreamfile(EmployeeInfo.txt);/打开文件if(!file)coutCannotopenthefile!n;return;cout通过哪种方式查询:endl;coutt1-姓名2-所在部门endl;coutn;if(n=1)coutQuery_Value;elseif(n=2)coutQuery_Value;elsecout输入错误!E_name,Query_Value)Print_Format();coutE_dep,Que
14、ry_Value)Print_Format();coutp;flag=1;if(flag=0)printf(查询失败,没有相应记录!n);file.close();/关闭文件/删除函数voidDelete()charid10;/存放输入的职工号charname10;/存放输入的职工姓名intcount1=0,count2=0;/count1-总的记录数,count2-删除记录以后的总记录数DLinkp;p=newNode;ifstreamfile(EmployeeInfo.txt);if(!file)coutCannotopenthefile!n;return;ofstreamnewfile(
15、NewEmployeeInfo.txt);if(!newfile)coutCannotopenthefile!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);/删除原来的Emplo
16、yeeInfo.txtrename(NewEmployeeInfo.txt,EmployeeInfo.txt);/重命名if(count1=count2)printf(没有这个记录!n);elseprintf(删除成功!n);/查看职工工资明细voidshowwage()intn;chartemp110;Emplo_Wagetemp2;ifstreamfile(Employee_Wage_Info.txt);if(!file)cout职工工资表文件不能打开!endl;return;cout请选择操作项:endl;cout1-查看某个职工工资明细2-查看全部职工工资明细endl;coutn;if
17、(n=1)/输出某一个职工的工资明细couttemp1;elseif(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.fa
18、il()break;if(n=1)/输出某一个职工的工资明细if(!strcmp(temp2.id,temp1)coutsetiosflags(ios:left)setw(10)temp2.idsetiosflags(ios:left)setw(10)temp2.namesetiosflags(ios:left)setw(10)temp2.data.Base_Wagesetiosflags(ios:left)setw(10)temp2.data.Merit_Wagesetiosflags(ios:left)setw(10)temp2.data.Sum_Wageendl;break;else/输
19、出全部职工的工资明细coutsetiosflags(ios:left)setw(10)temp2.idsetiosflags(ios:left)setw(10)temp2.namesetiosflags(ios:left)setw(10)temp2.data.Base_Wagesetiosflags(ios:left)setw(10)temp2.data.Merit_Wagesetiosflags(ios:left)setw(10)temp2.data.Sum_Wageendl;/欢迎界面voidstartface()system(color0A);/设置屏幕显示的前景色、背景色system(
20、cls);/清屏/ cout*endl;coutendlendlendlendlendl;cout*endl;cout*endl;cout*欢迎进入公司员工管理系统*endl;cout*endl;cout*endl;coutendlendlendlendlendlendlendlendlendlendl;system(pause);/暂停/主菜单voidmenu()system(cls);/清屏coutendlendl;cout|*主菜单*|endl;cout|endl;cout|1、设置工资税率|endl;cout|2、插入职工信息|endl;cout|3、显示职工信息|endl;cout|
21、4、删除职工信息|endl;cout|5、修改职工信息|endl;cout|6、查询职工信息|endl;cout|7、查看职工工资明细|endl;cout|8、退出系统|endl;cout|endl;/主函数voidmain()intn;employeeEM;/定义一个对象DLinkHead;/定义一个链表startface();/调用欢迎界面函数while(1)/菜单循环system(cls);menu();coutn;switch(n)case1:SetTRate();system(pause);break;case2:Head=EM.CreateLink();Head=EM.InsertNode(Head);system(pause);break;case3:Print();system(pause);break;case4:Delete();system(pause);break;case5:Amend();system(pause);break;case6:Query();system(pause);break;case7:showwage();system(pause);break;case8:exit(0);default:printf(输入错误!n);system(pause);专心-专注-专业
限制150内