某小型公司的工资管理系统实训报告.docx
某小型公司的工资管理系统实训报告题目:小型公司的工资管理系统>00X0指导老师:XXX班级:学号:时间:学生姓名:XXX计 YXXXXXXXXXXXXXXXXXX年X月X日目录一、实训内容与目的2二、设计分析3三、执行结果与结果分析23四、实训总结27实训内容:小型公司的工资管理设计任务编写一个小型公司的工资管理程序。该公司要紧有4类人员:经理、兼职技术人员、销售员与销售经理。其中月薪计算方法为:经理固定月薪8000元,兼职技术如愿100元/小时,销售员为当月销售额的4%,销售经理保底工资5000元另加所管部门销售额的5%。设计要求(1)职工编号自动产生(从IoOo起编号)。(2)将公司人员的编号、姓名与月薪等信息储存在文件中,然后从文件中读入这些信息并显示。假如访问文件失败,使用特殊处理机制解决。(3)设计输入,输出的界面。(成绩为优良,需使用MFC方式。若设计困难能够使用DOS方式)二、设计分析:(1)类的定义:1、“employee.il”#include<iostream.h>#iIIdUdeViOmanip.h>#include<stdio.h>#include<string.h>#include<fstream.h>#include<tchar.h>classemployee(public:employee();doublegerno();char*getname();char*gerpost();doublegetsalary();virtualdoublepay()=O;employee(doublen9charmingzi20,doubles)(number=n;strcpy(name,mingzi);iIicome=S;)-employee。;protected:doublenumber;charname20;charpost2l;doubleincome;);classTechnician:publicemployee(protected:doublehour;doubleper;public:doubleSet_hour();doublepay(););classSalemanzvirtualpublicemployee(protected:doubleSaIary;销售额public:voidsale();doublepay();classManager:virtualpublicemployee(protected:public:doublepay();classSalesmanagerzvirtualpublicManager9VirtualpublicSaleman(public:doublepay(););structperson(intgonghao;charXingming20;charzhiweif20;floatshouru;floatxiaoshi;);voidsaverenshu();intreadrenshu();voiddeletgon(intx);voiddeletname(intx);voidread(intx);voidxiugai-all(intx);voidsavetech(intx,char*y,char*z,floate,oatho);voidsave(intx,char*y,char*z,floate);(2) ,change.cppwncludeemployee.h',intk;voidsave(intx9char*y,char*z,floate)储存文件(structpersona;a.gonghao=x;strcpy(a.xingming,y);strcpy(a.zhiwei,z);a.shouru=e;cout<<*,工号:,<<a.gonghao<<n,<<n姓名:,'<<a.xingming<<,'<<''职位:,<<a.zhiwei<<,<<',IS:H«a.shouru«n,<<endl;fstreamcun;ClIn.open(''储存人员.txt”,ios:app|ios:oiit);if(!cun)(cout<<,cannotopenfile,<<endl;)cun<<a.gonghao<<endl;cun<<a.zhiwei<<endl;cun<<a.xingming<<endl;cun<<a.shouru<<endl;cun.close();)voidsavetech(intx,char*y,char*z,floate,floatho)专用于技术员的储存structpersona;a.gonghao=x;strcpy(a.xingming,y);strcpy(a.zhiwei9z);a.shouru=e;a.xiaoshi=ho;cout<<n工号:,<<a.gonghao<<n"<<,1姓名:,<<a.xingming<<,<<,'职位:,<<a.zhiwei<<,工作小时:,<<a.xiaoshi<<n,<<a,shouru<<,<<endl;fstreamcun;Clln.open("储存人员.txt'',ios=appios:OlIt);if(!cun)cout<<,cannotopenfile,<<endl;cun<<a.gonghao<<endl;cun<<a.zhiwei<<endl;cun<<a.xingming<<endl;cun<<a.xiaoshi<<endl;cun<<a.shouru<<endl;cun.close();)voidsaverenshu()储存在职总人数,以便读取数据(fstreamcun;Ciln.open(''个数.txt'',ios:trunc|ios:in);if(!cun)(cout<<cannotopenfile,<<endl;)cun<<k<<endl;cun.close();)intreadrenshu()读取在职总人数(fstreamcun;CIIlI.open(''个数.txt'ios:inios:Oilt);if(!cun)(cout<<,cannotopenfi)e,<<endl;)cun>>k;returnk;)voidread(intx)读取在职人员信息,参数X为总人数(jf(=O)(COUtVV”还没有任何人员的信息,请先添加人员的信息!”<vendl;)structpersona30;fstreamcun;inti=0;CIln.open("储存人员.txt”,ios:in|ios:OlIt);if(!cun)cout<<,cannotopenfile,<<endl;while(i<x)(cun>>ai.gonghao;cun>>afi.zhiwei;cun>>ai.xingming;1我§立5(2国.2加3d,"技术员'')=0)(cun>>ai.xiaoshi;cun>>ai.shouru;if(strcmp(ai.zhiwei,”技术员")=0)(CoIltVV”工号:,<<aij.gonghao<<,"v<”姓名:,<<ai.xingming<<,<<n职位:M«ai.zhiwei«H工作小时,<<ai.xiaoshi<<,<<n工资:"«ai.shouru«nt,<<endl;)else(COIltVV”工号:n<<ai.gonghao<<n"«aiJ.xingming«M,<<h职位:”<vai.zhiwei<v""<v"工资:n<<aiJ.shouru<<n<<endl;)i+;)cun.close();)voiddeletgon(intx)按工号删除函数,参数X为总人数(if(x=O)(Colltv<”没有任何员工的信息,请先增加员工的信息”<vendl;structpersonal301;structpersona2301;fstreamcun;inti=0;Ciln.open(''储存人员.txt'',ios:in|ios:out);if(!cun)(cout<<,cannotopenfile*'<<endl;)while(i<x)cun>>ali.gonghao;cun>>ali.zhiwei;cun>>ali.xingming;if(strcmp(alij.zhiwei,n技术员,)=0)(cun>>ali.xiaoshi;cun>>al11.shouru;£(§丘5(21国.2111、¥£入"技术员'')=0)(COiItVV”工号:H«aliJ.gonghao«H:,<<alij.xingming<<,'<<职位:,<<ali.zhiwei<<,工作小时,<<ali.xiaoshi<<,<<m工资:"«ali.shouru«n,<<endl;)else(COIltVV”工号:H«ali.gonghao«H,<<ali.xingming<<,<<职位:n<<aliJ.zhiwei<<,"<<,IS:,<<ali.shouru<<,<<endl;)i+;)cun.close();IiiiiiiiiiiiiiiiiiiiCOUtV<"请输入要删除人员的工号:"v<endl;intg;cin>>g;i=0;while(g!=alil.gonghao)(i+;)if(g!=ali.gonghao)(COUtVV"没找到!"<vendl;)else(g=i;for(i=0;i!=g;i+)(a2i.gonghao=ali.gonghao;strcpy(a2i.zhiwei,alizhiwei);strcpy(a2i.xingming9ali.xingming);if(strcmp(ali.zhiwei,“技术员”)=0)a2i.xiaoshi=ali.xiaoshi;a2i.shouru=ali.shouru;)for(i;i<x;i+)(a2il.gonghao=ali+l.gonghao;strcpy(a2i.zhiwei,ali+l.zhiwei);strcpy(a2i.xingming,a1i+1xingming);if(strcmp(ali+ILZhiWeiJ技术员")=0)(a2i.xiaoshi=ali+l.xiaoshi;)a2i.shouru=ali+l.shouru;)for(intl=0;l<(x-l);!+)(if(strcmp(a2l.zhiweij技术员'')=0)(COUtVV”工号:M«a2lJ.gonghao«M:,<<a2lj.xingming<<,<<,职位:,<<a2l.zhiwei<<工作小时,<<a2l.xiaoshi<<h<<m工资:H«a2fl.shouru«H<<endl;elseColItVV”工号:,<<a2l.gonghao<<n<<<,g:,<<a2l.xingming<<,'"<<”职位:M«a2l.zhiwei«Hn<<,lS:”vva2l.shouruvv"”<vendl;fstreamcunl;i=0;CiInLOPeI(''储存人员.txt",ios:tninc);if(!cunl)cout<<,cannotopenfile,<<endl;while(i<(x-l)cunl<<a2fi.gonghao<<endl;cunl<<a2il.zhiwei<<endl;cunl<<a2fi.xingming<<endl;if(strcmp(a2i.zhiwei9't技术员,)=0)cunl<<a2i.xiaoshi<<endl;cunl<<a2f11.shouru<<endl;i+;)cunl.close();fstreamcun2;CiIn2.open(''个数.txt”,ios:tmnc|ios:in);if(!cun2)(cout<<,cannotopenfile,'<<endl;)cun2<<(x-l)<<endl;CoUtV<"成功删除一个员工的数据"VVend1;cun2.close();)voiddeletname(intx)按姓名删除函数,参数X为总人数(if(x=O)(COIltVV”没有任何员工的信息,请先增加员工的信息”<vendl;)structpersonal30;structpersona230;fstreamcun;inti=0;CiIlI.open(''储存人员.txt”,ios:in|ios:Ollt);if(!cun)(cout<<,cannotopenfi)e,<<endl;)while(i<x)(cun>>alfil.gonghao;cun>>alfil.zhiwei;cun>>ali.xingming;if(strcmp(alizhiwei,”技术员")=0)(cun>>ali.xiaoshi;)cun>>al11.shouru;if(strcmp(ali.zhiweij技术员'')=0)COlltVV”工号:,<<ali.gonghao<<,<<ali.xingming<<n,<<职位:,<<ali.zhiwei<<,工作小时M«ali.xiaoshi«Hh<<m工资:,'<<ali.shouru<<n<<endl;)else(CoUtVV”工号:H«ali.gonghao«HM«aliJ.xingming«H,<<职位:M«ali.zhiwei«H,<<ali.shouru<<n,'<<endl;)i+;)cun.close();IiiiiiiiiiiiiiiiiiiiCOiItVV”请输入要删除人员的姓名:n<<endl;charxing20;cin>>xing;hitg;i=0;while(strcmp(xing,ali.xingmmg)(i+;)g=i;for(i=0;i!=g;i+)(a2i.gonghao=ali.gonghao;strcpy(a2i.zhiwei,ali.zhiwei);strcpy(a2i.xingming,ali.xingming);if(strcmp(alizhiweij技术员'')=0)(a2i.xiaoshi=ali.xiaoshi;)a2i.shouru=ali.shouru;)for(i;i<x;i+)(a2i.gonghao=ali+l.gonghao;strcpy(a2i.zhiwei9ali+l.zhiwei);strcpy(a2i.xingming9a1i+1xingming);if(strcmp(ali+lJ.zhiwei,Mn)=)(a2i.xiaoshi=ali+l.xiaoshi;)a2i.shouru=ali+l.shouru;£(§丘5(221.23、¥£1,"技术员'')=0)(COlItVV”工号:n<<a2l.gonghao<<n<<<,g:n«a2l.xingming«Mn<<,K位:H«a2l.zhiwei«H工作小时,<<a2lj.xiaoshi<<,n<<a2l.shouru<<,"<<endl;)else(COIltVV”工号:H«a2l.gonghao«H,<<a2lj.xingming<<,',<<t,职位:M«a2l.zhiwei«H,<<nlS:n<<a2l.shouru<<,<<endl;)fstreamcunl;i=0;CIInLOPen(''储存人员.txt'',ios:trunc);if(!cunl)(cout<<,cannotopenfile,<<endl;)while(i<(x-l)(cunl<<a2i.gonghao<<endl;cunl<<a2i.zhiwei<<endl;cunl<<a2fi.xingming<<endl;if(strcmp(a2izhiweiJ技术员'')=0)(cunl<<a2fi.xiaoshi<<endl;)cunl<<a2i.shouru<<endl;i+;)cunl.close();fstreamcun2;CIln2.open(''个数.txt'',ios:trunc|ios:iii);if(!cun2)(cout<<,cannotopenfile,<<endl;cun2<<(x-l)<<endl;COUtVV”成功删除一个员工的数据"v<endl;cun2.close();)voidxiugai_all(intx)修改一条记录的内容,参数X为总人数(structpersonal30;structpersona230;fstreamcun;inti=0;CiIiI.open(''储存人员.txt”,ios:iii|ios:out);if(!cun)(cout<<,cannotopenfi)e,<<endl;)while(i<x)(cun>>alfil.gonghao;cun>>alfil.zhiwei;cun>>ali.xingming;if(strcmp(ali.zhiwei,n技术员,)=0)(cun>>ali.xiaoshi;)cun>>al11.shouru;if(strcmp(ali.zhiweij技术员'')=0)(ColltVV”工号:H«ali.gonghao«H,«ali.xingming«M,<<职位:,<<ali.zhiwei<<,工作小时,<<alij.xiaoshi<<h<<m工资:,'<<ali.shouru<<n<<endl;)else(COUtVV”工号:n<<ali.gonghao<<,*,<<alij.xingming<<,',<<职位:M«ali.zhiwei«M"<<,'Is,<<alij.shouru<<n,'<<endl;)i+;)intg,gonghaol;charxingmingl20,zhiweil20;floatshourul,xiaoshil;COUtV<"请输入要修改员工的工号:"v<endl;cin>>g;i=0;while(g!=ali.gonghao)i+;)g=i;for(i=0;i!=g;i+)(a2i.gonghao=ali.gonghao;strcpy(a2i.zhiwei9ali.zhiwei);strcpy(a2i.xingming9ali.xingming);£(§丘5(21国.2111、¥£入"技术员")=0)(a2i.xiaoshi=ali.xiaoshi;)a2i.shouru=ali.shouru;CoIltVV”请重新输入工号:,<<endl;cin>>gonghaol;a2i.gonghao=gonghaol;COUtVV”请重新输入姓名:,<<endl;cin>>xingmingl;strcpy(a2i.xingming,xingmingl);COUtVV”请重新输入职位:,<<endl;cin>>zhiweil;strcpy(a2i.zhiwei,zhiweil);if(StrCmP(ZhiWeilj技术员")=0)(CoUtVV”请重新输入工作小时数:n<<endl;cin>>xiaoshil;a2i.xiaoshi=xiaoshil;COUtVV”请重新输入月收入:,v<endl;cin>>shourul;a2i.shouru=shourul;if(strcmp(a2i.zhiweit技术员,')=0)(CoUtVV”工号:H«a2i.gonghao«M:,«a2iJ.xingming«M,<<,MR<:,<<a2i.zhiwei<<工作小时:n<<a2i.xiaoshi<<n”v<”工资:M«a2iJ.shouru«H"<<endl;)else(COIltVV”工号:,<<a2i.gonghao<<,<<a2ij.xingming<<,',<<,职位:M«a2i.zhiwei«H,<<,IS:n<<a2i.shouru<<,<<endl;i=i+l;for(i;i<x;i+)(a2i.gonghao=ali.gonghao;strcpy(a2i.zhiwei,ali.zhiwei);strcpy(a2i.xingming,ali.xingming);if(strcmp(a2izhiweij技术员'')=0)(a2i.xiaoshi=ali.xiaoshi;)a2i.shouru=ali.shouru;)fstreamcunl;i=0;CIlIlLoPen(''储存人员txt'',iosktrmc);if(!cunl)(cout<<,cannotopenfile*'<<endl;)while(i<x)(cunl<<a2fil.gonghao<<endl;cunl<<a2fi.xingming<<endl;cunl<<a2il.zhiwei<<endl;if(strcmp(a2i.zhiweij技术员")=0)(cunl<<a2il.xiaoshi<<endl;cunl<<a2fi.shouru<<endl;i+;)cun.close();)(3) “employee.cpp”#include"employeeh”#include<iostream.h>#include<iomanip.h>#include<string.h>#include<stdio.h>#include<stdlib.h>#include<fstream.h>doubleemployee:gerno()(cout<<”请输入工号"VVendl;cin>>number;returnnumber;)char*employee:getname()(COUtV<"请输入姓名,<<endl;cin>>name;returnname;)char*employee:gerpost()COUtVV”请输入职位"vvendl;cin>>post;returnpost;)IiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiidoubleTechnician:pay()(income=30*100*hour;returnincome;)doubleTechnician:Set_hour()(CoUtVV”工作时间:n;cin>>hour;returnhour;)IiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiivoidSaleman:sale()当月销售额CoiItVV”请输入当月销售额“<vendl;cin>>salary;)doubleSaleman:pay()(income=salary*0.04;returnincome;)IiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiidoubleManager:pay()income=8000;returnincome;)IiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiidoubleSalesmanager:pay()(income=5000+salary*0.05;returnincome;)(3)“employee.cpp”ncludeemployee.h',#include<iostream.h>#include<iomanip.h>#include<string.h>#include<stdio.h>#include<stdlib.h>#include<fstream.h>doubleemployee:gerno()(COiItVV”请输入工号"<vendl;cin>>number;returnnumber;)char*employee:getname()COIltVV”请输入姓名”<vendl;cin>>name;returnname;)char*employee:gerpost()(COiItVV”请输入职位”<vendl;cin>>post;returnpost;)doubleTechnician:pay()(income=30*100*hour;returnincome;)doubleTechnician:Set_hour()CoUtVV”工作时间:”;cin>>hour;returnhour;)IiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiivoidSalemanusaleO当月销售额COUtVV”请输入当月销售额“<vendl;cin>>salary;)doubleSalemanupayO(income=salary*0.04;returnincome;)doubleManager:pay()(income=8000;returnincome;)IiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiidoubleSalesmanager:pay()(income=5000+salary*0.05;returnincome;)(4)wgzgl.cppwinclude,employee.h"#include<string.h>#include<stdio.h>#include<stdlib.h>#include<fstream.h>#include<iomanip.h>#include<iostream.h>#include<fstream.h>intIntputMenuQ;voidreadmenu();intdeletmenu();intxiugaimenu();intShowmenu();intai;externintk;voidmain()(Showmenu();)intShowmenu()intnu;nu=readrenshu();while(l)(cout<<endl;cout<<ncout<<cout<<小型公司工资管理系统',<<endl;IIWCiiui,请选择您所需要的操作:Iyvendl;cout<<nI数据录入:1,并按回车键I-<<endl;cout<<nI删除数据:2,并按回车键I,<<endl;cout<<I修改数据:,并按回车键I,<<endl;cout<<I读入数据:4,并按回车键I"<<endl;cout<<nI退出系统:5,并按回车键I<<endl;cout<<I1,<<endl;cout<<endl<<endl<<endl;cout<<”请选择一个操作:,;cin>>ai;switch(ai)(case 1: IntputMenu();break;case2:deletmenu();break;case3:XilIgaimenlI();break;case4:readmenu();break;case5:returnO;break;default:COUtVV"你的选择出错了!请重新输入吧!"vvendl;)intdeletmenu()while(l)intr;r=readrenshu();cout<<endl;CoIItVv”小型公司工资管理系统',<<endl;cout<<nI1,<<endl;coutvv”I请选择您所需要的操作:I'<<endl;cout<<tI按工号删除:1,并按回车键I<<endl;cout<<I按姓名删除:2,并按回车键I,<<endl;cout<<nI返回上一层:3,并按回车键I<<endl;cout<<n11,'<<endl;cout<<endl<<endl<<endl;cout<<”请选择一个操作:”;cin>>ai;switch(ai)(caseX:deletgon(r);break;case2:deletname(r);break;case3:returnO;break;default:COUtVV"你的选择出错了!请重新输入吧!"<vendl;)voidreadmenu()(intr;r=readrenshu();read(r);)intxiugaimenu()(while(l)(intr;r=readrenshu();cout<<endl;cout«M小型公司工资管理系统,<<endl;cout<<I1',<<endl;cout<<I请选择您所需要的操作:I,<<endl;cout<<nI修改工号:1,并按回车键I,<<endl;COIItVv”I修改姓名:2,并按回车键IkVelld1;cout<<,I修改职位:3,并按回车键i,<<endl;cout<<i修改全部:4,并按回车键i,<<endl;cout<<nI返回上一层:5,并按回车键I,<<endl;cout<<11"<<endl;cout<<endl<<endl<<endl;ColItVV”请选择一个操作:”;cin>>ai;switch(ai)(/casel:deletgon(r);break;/case2:deletname(r);break;case4:xiugai_all(r);break;case5:returnO;break;default:COUtVV"你的选择出错了!请重新输入吧!"vvendl;)intIntputMenuQcout<<l小型公司工资管理系统*7kven<11;cout<<ncout<<I请选择您所需要的操作I,<<endl;cout<<nI经理数据输入:1,并按回车键I,<<endl;cout<<I技术员数据输入:2,并按回车键I<<endl;cout<<nI销售员数据输入:3,并按回车键I,<<endl;cout<<I销售经理数据输入:4,并按回车键I,<<endl;cout<<nI返回上一层:5,并按回车键I,<<endl;cout<<1,<<endl;CoiIt<<”请选择一个操作:”;cin>>ai;switch(ai)case1:(Managerjingli;doublea;char*b,*c;doubled;a=jingli.gerno();b=jingli.gerpost();c=jinglLgetname();d=jingli.pay();save(a,c,b,d);CoUtv<”已经成功储存啦!,'vvendl;k÷+;saverenshu();break;case 2: Technicianjishu;doublea;char*b,*c;doubled,f;a=jishu.gerno();b=jishu.gerpost();c=jishu.getname();f=jishu.Set_hour();d=jishu.pay();savetech(a,c,b,d,f);COUtVV”已经成功储存啦!"vvendl;k+;saverenshu();break;)case3:Salemanxiaoshou;inta;char*b,*c;floatd,f;a=xiaoshou.gerno();b=xiaoshou.gerpost();c=xiaoshou.getname();xiaoshou.sale();d=xiaoshou.pay();save(a,c,b,d);ColltVV”已经成功储存啦!"vvendl;k+;saverenshu();break;)case 4:(