《某小型公司的工资管理系统实训报告.docx》由会员分享,可在线阅读,更多相关《某小型公司的工资管理系统实训报告.docx(29页珍藏版)》请在三一办公上搜索。
1、面向对象实训报告 -题目:小型公司的工资管理系统指导老师: xxx 学生姓名: xxx 班 级: 计Yxxx 学 号: xxxxxxxxxxx 时 间: xxxx年x月x日 目录一、实训内容与目的-2二、设计分析-3三、执行结果和结果分析-23四、实训总结- 27一、 实训内容: 小型公司的工资管理设计任务编写一个小型公司的工资管理程序。该公司主要有4类人员:经理、兼职技术人员、销售员和销售经理。其中月薪计算方法为:经理固定月薪8000元,兼职技术如愿100元/小时,销售员为当月销售额的4%,销售经理保底工资5000元另加所管部门销售额的5。设计要求(1) 职工编号自动产生(从1000起编号)
2、。(2) 将公司人员的编号、姓名和月薪等信息保存在文件中,然后从文件中读入这些信息并显示。如果访问文件失败,采用异常处理机制解决。(3) 设计输入,输出的界面。(成绩为优良,需采用MFC方式。若设计困难可以使用DOS方式)二、 设计分析:(1) 类的定义:1、 “employee.h”#include#include#include#include#include#includeclass employeepublic:employee();double gerno();char *getname();char *gerpost();double getsalary();virtualdoub
3、le pay()=0; employee(double n,char mingzi20,double s) number=n;strcpy(name,mingzi);income=s; employee();protected: double number; char name20; char post20; double income;class Technician: public employeeprotected: double hour; double per;public:double Set_hour();double pay(); ;class Saleman:virtual
4、public employeeprotected: double salary;/销售额public: void sale(); double pay(); ;class Manager:virtual public employee protected:public: double pay(); ;class Salesmanager:virtual public Manager,virtual public Salemanpublic: double pay();struct personint gonghao;char xingming20;char zhiwei20;float sho
5、uru;float xiaoshi;void saverenshu();int readrenshu();void deletgon(int x);void deletname(int x);void read(int x);void xiugai_all(int x);void savetech(int x,char *y,char *z,float e,float ho);void save(int x,char *y,char *z,float e);(2)”change.cpp”#includeemployee.hint k;void save(int x,char *y,char *
6、z,float e)/保存文件struct person a;a.gonghao=x;strcpy(a.xingming,y);strcpy(a.zhiwei,z);a.shouru=e;cout工号:a.gonghao 姓名:a.xingming 职位:a.zhiwei 工资:a.shouru endl;fstream cun;cun.open(保存人员.txt,ios:app|ios:out);if(!cun)cout cannot open fileendl;cuna.gonghaoendl;cuna.zhiweiendl;cuna.xingmingendl;cuna.shouruend
7、l;cun.close();void savetech(int x,char *y,char *z,float e,float ho)/专用于技术员的保存struct person a;a.gonghao=x;strcpy(a.xingming,y);strcpy(a.zhiwei,z);a.shouru=e;a.xiaoshi=ho;cout工号:a.gonghao 姓名:a.xingming 职位:a.zhiwei 工作小时:a.xiaoshi 工资:a.shouru endl;fstream cun;cun.open(保存人员.txt,ios:app|ios:out);if(!cun)c
8、out cannot open fileendl;cuna.gonghaoendl;cuna.zhiweiendl;cuna.xingmingendl;cuna.xiaoshiendl;cuna.shouruendl;cun.close();void saverenshu()/保存在职总人数,以便读取数据fstream cun;cun.open(个数.txt,ios:trunc|ios:in);if(!cun)cout cannot open fileendl;cunkendl;cun.close();int readrenshu()/读取在职总人数fstream cun;cun.open(个
9、数.txt,ios:in|ios:out);if(!cun)cout cannot open filek;return k;void read(int x)/读取在职人员信息,参数x为总人数if(x=0)cout还没有任何人员的信息,请先添加人员的信息!endl;struct person a30;fstream cun;int i=0;cun.open(保存人员.txt,ios:in|ios:out);if(!cun)cout cannot open fileendl;while(iai.gonghao;cunai.zhiwei;cunai.xingming;if(strcmp(ai.zhi
10、wei,技术员)=0)cunai.xiaoshi;cunai.shouru;if(strcmp(ai.zhiwei,技术员)=0)cout工号:ai.gonghao 姓名:ai.xingming 职位:ai.zhiwei 工作小时 ai.xiaoshi 工资:ai.shouru endl; elsecout工号:ai.gonghao 姓名:ai.xingming 职位:ai.zhiwei 工资:ai.shouru endl;i+;cun.close();void deletgon(int x)/按工号删除函数,参数x为总人数if(x=0)cout没有任何员工的信息,请先增加员工的信息endl;
11、struct person a130;struct person a230;fstream cun;int i=0;cun.open(保存人员.txt,ios:in|ios:out);if(!cun)cout cannot open fileendl;while(ia1i.gonghao;cuna1i.zhiwei;cuna1i.xingming;if(strcmp(a1i.zhiwei,技术员)=0)cuna1i.xiaoshi;cuna1i.shouru;if(strcmp(a1i.zhiwei,技术员)=0)cout工号:a1i.gonghao 姓名:a1i.xingming 职位:a1
12、i.zhiwei 工作小时 a1i.xiaoshi 工资:a1i.shouru endl; elsecout工号:a1i.gonghao 姓名:a1i.xingming 职位:a1i.zhiwei 工资:a1i.shouru endl;i+;cun.close();/cout请输入要删除人员的工号:g;i=0;while(g!=a1i.gonghao)i+;if(g!=a1i.gonghao)cout没找到!endl;elseg=i;for(i=0;i!=g;i+)a2i.gonghao=a1i.gonghao;strcpy(a2i.zhiwei,a1i.zhiwei);strcpy(a2i.
13、xingming,a1i.xingming);if(strcmp(a1i.zhiwei,技术员)=0)a2i.xiaoshi=a1i.xiaoshi;a2i.shouru=a1i.shouru;for(i;ix;i+)a2i.gonghao=a1i+1.gonghao;strcpy(a2i.zhiwei,a1i+1.zhiwei);strcpy(a2i.xingming,a1i+1.xingming);if(strcmp(a1i+1.zhiwei,技术员)=0)a2i.xiaoshi=a1i+1.xiaoshi;a2i.shouru=a1i+1.shouru;for(int l=0;l(x-1
14、);l+)if(strcmp(a2l.zhiwei,技术员)=0)cout工号:a2l.gonghao 姓名:a2l.xingming 职位:a2l.zhiwei 工作小时 a2l.xiaoshi 工资:a2l.shouru endl;elsecout工号:a2l.gonghao 姓名:a2l.xingming 职位:a2l.zhiwei 工资:a2l.shouru endl;fstream cun1;i=0;cun1.open(保存人员.txt,ios:trunc);if(!cun1)cout cannot open fileendl;while(i(x-1)cun1a2i.gonghaoe
15、ndl;cun1a2i.zhiweiendl;cun1a2i.xingmingendl;if(strcmp(a2i.zhiwei,技术员)=0)cun1a2i.xiaoshiendl;cun1a2i.shouruendl;i+;cun1.close();fstream cun2;cun2.open(个数.txt,ios:trunc|ios:in);if(!cun2)cout cannot open fileendl;cun2(x-1)endl;cout成功删除一个员工的数据endl;cun2.close();void deletname(int x)/按姓名删除函数,参数x为总人数if(x=0
16、)cout没有任何员工的信息,请先增加员工的信息endl;struct person a130;struct person a230;fstream cun;int i=0;cun.open(保存人员.txt,ios:in|ios:out);if(!cun)cout cannot open fileendl;while(ia1i.gonghao;cuna1i.zhiwei;cuna1i.xingming;if(strcmp(a1i.zhiwei,技术员)=0)cuna1i.xiaoshi;cuna1i.shouru;if(strcmp(a1i.zhiwei,技术员)=0)cout工号:a1i.
17、gonghao 姓名:a1i.xingming 职位:a1i.zhiwei 工作小时 a1i.xiaoshi 工资:a1i.shouru endl; elsecout工号:a1i.gonghao 姓名:a1i.xingming 职位:a1i.zhiwei 工资:a1i.shouru endl;i+;cun.close();/cout请输入要删除人员的姓名:xing;int g;i=0;while(strcmp(xing,a1i.xingming)i+;g=i;for(i=0;i!=g;i+)a2i.gonghao=a1i.gonghao;strcpy(a2i.zhiwei,a1i.zhiwei
18、);strcpy(a2i.xingming,a1i.xingming);if(strcmp(a1i.zhiwei,技术员)=0)a2i.xiaoshi=a1i.xiaoshi;a2i.shouru=a1i.shouru;for(i;ix;i+)a2i.gonghao=a1i+1.gonghao;strcpy(a2i.zhiwei,a1i+1.zhiwei);strcpy(a2i.xingming,a1i+1.xingming);if(strcmp(a1i+1.zhiwei,技术员)=0)a2i.xiaoshi=a1i+1.xiaoshi;a2i.shouru=a1i+1.shouru;for(
19、int l=0;l(x-1);l+)if(strcmp(a2l.zhiwei,技术员)=0)cout工号:a2l.gonghao 姓名:a2l.xingming 职位:a2l.zhiwei 工作小时 a2l.xiaoshi 工资:a2l.shouru endl;elsecout工号:a2l.gonghao 姓名:a2l.xingming 职位:a2l.zhiwei 工资:a2l.shouru endl;fstream cun1;i=0;cun1.open(保存人员.txt,ios:trunc);if(!cun1)cout cannot open fileendl;while(i(x-1)cun
20、1a2i.gonghaoendl;cun1a2i.zhiweiendl;cun1a2i.xingmingendl;if(strcmp(a2i.zhiwei,技术员)=0)cun1a2i.xiaoshiendl;cun1a2i.shouruendl;i+;cun1.close();fstream cun2;cun2.open(个数.txt,ios:trunc|ios:in);if(!cun2)cout cannot open fileendl;cun2(x-1)endl;cout成功删除一个员工的数据endl;cun2.close();void xiugai_all(int x)/修改一条记录的
21、内容,参数x为总人数struct person a130;struct person a230;fstream cun;int i=0;cun.open(保存人员.txt,ios:in|ios:out);if(!cun)cout cannot open fileendl;while(ia1i.gonghao;cuna1i.zhiwei;cuna1i.xingming;if(strcmp(a1i.zhiwei,技术员)=0)cuna1i.xiaoshi;cuna1i.shouru;if(strcmp(a1i.zhiwei,技术员)=0)cout工号:a1i.gonghao 姓名:a1i.xing
22、ming 职位:a1i.zhiwei 工作小时 a1i.xiaoshi 工资:a1i.shouru endl;elsecout工号:a1i.gonghao 姓名:a1i.xingming 职位:a1i.zhiwei 工资:a1i.shouru endl;i+;int g,gonghao1;char xingming120,zhiwei120;float shouru1,xiaoshi1;cout请输入要修改员工的工号:g;i=0;while(g!=a1i.gonghao)i+;g=i;for(i=0;i!=g;i+)a2i.gonghao=a1i.gonghao;strcpy(a2i.zhiw
23、ei,a1i.zhiwei);strcpy(a2i.xingming,a1i.xingming);if(strcmp(a1i.zhiwei,技术员)=0)a2i.xiaoshi=a1i.xiaoshi;a2i.shouru=a1i.shouru;cout请重新输入工号:gonghao1;a2i.gonghao=gonghao1;cout请重新输入姓名:xingming1;strcpy(a2i.xingming,xingming1);cout请重新输入职位:zhiwei1;strcpy(a2i.zhiwei,zhiwei1);if(strcmp(zhiwei1,技术员)=0)cout请重新输入工
24、作小时数:xiaoshi1;a2i.xiaoshi=xiaoshi1;cout请重新输入月收入:shouru1;a2i.shouru=shouru1;if(strcmp(a2i.zhiwei,技术员)=0)cout工号:a2i.gonghao 姓名:a2i.xingming 职位:a2i.zhiwei 工作小时: a2i.xiaoshi 工资:a2i.shouru endl;elsecout工号:a2i.gonghao 姓名:a2i.xingming 职位:a2i.zhiwei 工资:a2i.shouru endl;i=i+1;for(i;ix;i+)a2i.gonghao=a1i.gongh
25、ao;strcpy(a2i.zhiwei,a1i.zhiwei);strcpy(a2i.xingming,a1i.xingming);if(strcmp(a2i.zhiwei,技术员)=0)a2i.xiaoshi=a1i.xiaoshi;a2i.shouru=a1i.shouru;fstream cun1;i=0;cun1.open(保存人员.txt,ios:trunc);if(!cun1)cout cannot open fileendl;while(ix)cun1a2i.gonghaoendl;cun1a2i.xingmingendl;cun1a2i.zhiweiendl;if(strcm
26、p(a2i.zhiwei,技术员)=0)cun1a2i.xiaoshiendl;cun1a2i.shouruendl;i+;cun.close();(3) “employee.cpp”#includeemployee.h#include#include#include#include#include#includedouble employee:gerno()cout请输入工号number;return number;char *employee:getname()cout请输入姓名name;return name;char *employee:gerpost()cout请输入职位post;r
27、eturn post;/double Technician:pay()income=30*100*hour;return income;double Technician:Set_hour() couthour;return hour;/void Saleman:sale()/当月销售额cout请输入当月销售额salary;double Saleman:pay()income=salary*0.04;return income;/double Manager:pay() income=8000; return income;/double Salesmanager:pay()income=50
28、00+salary*0.05; return income;(3)” employee.cpp”#includeemployee.h#include#include#include#include#include#includedouble employee:gerno()cout请输入工号number;return number;char *employee:getname()cout请输入姓名name;return name;char *employee:gerpost()cout请输入职位post;return post;/double Technician:pay()income=30
29、*100*hour;return income;double Technician:Set_hour() couthour;return hour;/void Saleman:sale()/当月销售额cout请输入当月销售额salary;double Saleman:pay()income=salary*0.04;return income;/double Manager:pay() income=8000; return income;/double Salesmanager:pay()income=5000+salary*0.05; return income;(4)”gzgl.cpp”#
30、includeemployee.h#include#include#include#include#include#include #include int IntputMenu();void readmenu();int deletmenu();int xiugaimenu();int Showmenu();int ai;extern int k;void main()Showmenu();int Showmenu()int nu;nu=readrenshu();while(1) coutendl; cout 小型公司工资管理系统 endl;cout endl;cout 请选择您所需要的操作: endl;cout 数据录入: 1,并按回车键endl;cout 删除数据: 2,并按回车键endl;cout 修改数据: 3,并按回车键endl;cout 读入数据: 4,并按回车键endl;cout 退出系统: 5,并按回车键endl;cout endl;coutendlendlendl;coutai;switch(ai) case 1:IntputMenu();break;case 2:deletmenu();break;case 3:xiugaimenu();break;case 4:readmenu();break;case 5:retu