1、中国石油大学(华东)信息与控制工程学院程序设计实习报告小型公司工资管理系统的设计姓名:Yuppies Liu时 间:2011.7.142011。7。172011年7月目录一、 实习内容1二、 设计思路2三、 程序代码清单3四、 运行结果10五、 程序使用说明16六、 总结及心得体会17程序设计实习报告一、实习内容1 题目:小型公司管理系统的设计设计2。设计说明与基本要求(1) 公司主要有4类人员:经理、技术员、销售员、销售经理。 要求存储这些人的职工号、姓名、月工资、年龄、性别等信息。(2) 工资的计算方法A 经理:固定月薪为8000元;B技术员:工作时间小时工资(100元/小时);C销售员:
2、销售额4提成; D销售经理:底薪(5000元)+所辖部门销售额总额0。5.(3) 员工基本数据的输入 要求每类人员不能少于4人,其中销售员需要8名,每名销 售经理手下有名销售员。(4) 各类的数据成员访问权限设置为:protected3.实现基本功能 (1) 数据输入:输入各种数据 (2) 数据的输入 :统计各销售经理下属销售员的销售额及销售额之和;销售经理按工资进行的帽泡排序;(3) 数据打印:打印各类员工的数据信息;(4) 数据备份(5) 退出:退出本系统 备注:可适当扩充程序功能,功能扩充得当可加分4菜单说明(1)数据录入指通过键盘输入各类员工的各项数据(2)数据统计指统计各销售经理下属
3、销售员的销售额及销售额之和;销售经理按工资进行的冒泡排序 (3) 数据的打印指按照表格的格式在屏幕上输出各员工的数据信息(4) 数据的备份指把各类员工的数据信息写入文件中保存(5)退出:结束程序的运行二、设计思路在这个公司中有四类人员:经理、兼职技术人员、销售员要存储的信息有姓名、编号、性别、年龄、工资、销售额、所属经理编号由于所有职员有相同的成员如编号(num)、姓名(name)、性别(sex)、年龄(age)、工资(wage).所以可将所有信息归纳为一个职员类(Guyuan),将其作为一个基类,然后派生出子类,实现各类人员不同的信息(如工资计算), 由于销售经理具有销售员和经理的特性,所以
4、销售经理采用多重继承的关系,继承销售员和经理的两个类,为避免二义性将employee定义为虚基类,可用下图表示:题目中假设公司有2名技术员、4名销售员、经理和销售经理各2名,所以用对象数组的方式,利用循环语句来实现人员的输入和输出,整个程序设计如下:基类雇员类:数据成员有职工号、姓名、年龄、性别、月工资;成员函数只有姓名、年龄、性别的设置函数。技术员类:继承基类数据成员增加了工作时间;成员函数有设置函数、构造函数、输出函数下属函数、备份函数下属函数。经理类:继承基类数据成员未增加;成员函数有设置函数、构造函数、输出函数下属函数、备份函数下属函数。销售员类:继承基类数据成员多了销售额、所属经理编
5、号;成员函数有设置函数、构造函数、输出函数下属函数、备份函数下属函数、销售额返回函数、所属经理编号输出函数.销售经理类:继承基类数据成员未增加;成员函数有设置函数、构造函数、输出函数下属函数、备份函数下属函数、统计函数所属函数.三、程序代码清单includeiostreamincludeincludefstreamusing namespace std;ofstream outfile(f1.txt,ios:out);class Guyuanpublic:int num,age;string name;char sex;int wage;class Jishuyuan: protected G
6、uyuanpublic:int time; void set_jishuyuan()cout”技术员编号:; cinnum; coutname; coutendl; coutsex; coutendl; cout”年龄:; cinage; coutendl; cout工作时间:; cintime; coutendl; wage=time*100; void show_jishuyuan() cout”setw(12)num”setw(12)namesetw(12)sex”setw(12)age”setw(12)wage”endl; void show_jishuyuan4() outfile”
7、setw(12)num”setw(12)namesetw(12)sex”setw(12)age”setw(12)wage”endl;;class Jingli:protected Guyuanpublic: void set_jingli() coutnum; coutendl; cout”其姓名:; cinname; coutsex; coutage; coutendl;wage=8000; void show_jingli() cout”setw(12)num”setw(12)namesetw(12)sex”setw(12)age”setw(12)wage”endl; void show_
8、jingli4() outfile”setw(12)num”setw(12)name”setw(12)sex”setw(12)agesetw(12)wage”endl; ; class Xiaoshouyuan:protected Guyuanpublic: void set_xiaoshouyuan() cout”销售员的编号:”; cinnum; coutendl; coutname; coutendl; coutsex; coutendl;cout”年龄:”; cinage; coutendl; cout销售额:; cinsell; coutendl; cout所属销售经理的编号:”;
9、cinbelong; coutendl; wage=sell*4/100; void show_xiaoshouyuan() cout”setw(14)num”setw(14)name”setw(14)sell”endl; void show_xiaoshouyuan2() cout”setw(8)num”setw(8)name”setw(8)sexsetw(8)age”setw(8)wage”setw(18)belong”endl; void show_xiaoshouyuan4() outfile”setw(8)num”setw(8)name”setw(8)sex”setw(8)age”s
10、etw(8)wage”setw(18)belong”endl;int sell,belong;;class Xiaoshoujingli:protected Guyuanpublic: int shu_jingli() return num; void set_xiaoshoujingli() cout销售经理的编号:;cinnum;coutname;coutendl; cout”性别(m/w):”;cinsex;coutage; coutendl; void show_num()coutnum; void show_name()coutname; void show_xiaoshoujing
11、li() coutsetw(12)numsetw(12)namesetw(12)sexsetw(12)age”setw(12)wageendl; void show_xiaoshoujingli4() outfile”setw(12)num”setw(12)name”setw(12)sex”setw(12)age”setw(12)wage”endl; void show_wage() coutwage; void wage_sum(int sum) wage=5000+sum*0。5/100; void disp() cout” 小型公司工资管理系统 ”endl; cout endl; cou
12、t” 请选择您所需要的操作 ”endl; cout 数据输入: 1,并按回车键 ”endl; cout 数据统计: 2,并按回车键 ”endl; cout” 数据打印: 3,并按回车键 endl; cout” 数据备份: 4,并按回车键 ”endl; cout 退出系统: 5,并按回车键 endl; cout” endl; coutw;switch(w)case 1: for(i=0;in;i+) ai。set_jishuyuan();cout”*”endl;for(i=0;in;i+) bi.set_jingli();cout”*endl;for(i=0;i(2*n);i+) ci。set_
13、xiaoshouyuan();cout”*”endl;for(i=0;in;i+) di。set_xiaoshoujingli();cout*”endl;disp(); ;break;case 2: int sumn; int i,j; for(j=0;jn;j+) sumj=0;cout职工号为;dj.show_num();cout”销售经理”;dj。show_name();cout”下属销售员的业绩为:”endl; cout”endl; cout” 职工号 姓名 销售额 ”endl;for(i=0;i2*n;i+) if(ci.belong=dj.shu_jingli() cout”end
14、l;ci。show_xiaoshouyuan(); sumj=sumj+ci。sell; cout”endl; cout”销售额总计 ”setw(28)sumj” endl; coutendl;cout销售经理按工资排序为:”endl;cout”endl; cout” 职工号 姓名 性别 年龄 工资 ”endl; Xiaoshoujingli x; double y;for(i=0;in;i+)for(j=0;jn;j+)if(sumisumi+1)x=di;di=dj;dj=x;y=sumi;sumi=sumj;sumj=y; for(i=0;in;i+) cout”endl;di.wage
15、_sum(sumi);di.show_xiaoshoujingli(); cout”endl; disp(); ; break;case 3: int i;cout请等待。.。.endl;cout职工基本情况一览表如下”endl;cout技术员”endl;cout”endl; cout” 职工号 姓名 性别 年龄 工资 ”endl; for(i=0;in;i+) coutendl;ai。show_jishuyuan(); cout”endl;cout”*endl;cout”经理”endl; cout”endl; cout” 职工号 姓名 性别 年龄 工资 ”endl; for(i=0;in;i
16、+) cout”endl;bi.show_jingli(); cout”endl; cout*endl; cout”销售经理”endl; cout”endl; cout” 职工号 姓名 性别 年龄 工资 endl; for(i=0;in;i+) coutendl;di。show_xiaoshoujingli(); cout”endl;cout*”endl;cout”销售员”endl; cout”endl; cout” 职工号 姓名 性别 年龄 工资 所属部门经理编号 endl; for(i=0;in2;i+) coutendl;ci。show_xiaoshouyuan2(); cout”end
17、l;cout”*”endl; disp(); ;break;case 4: int i;outfile职工基本情况一览表如下endl;outfile”技术员”endl;outfile”endl; outfile” 职工号 姓名 性别 年龄 工资 endl; for(i=0;in;i+) outfile”endl;ai。show_jishuyuan4(); outfile”endl;outfile*endl;outfile”经理endl; outfile”endl;outfile 职工号 姓名 性别 年龄 工资 ”endl; for(i=0;in;i+) outfileendl;bi.show_
18、jingli4(); outfile”endl; outfile”*endl; outfile”销售经理”endl; outfile”endl; outfile” 职工号 姓名 性别 年龄 工资 ”endl; for(i=0;in;i+) outfileendl;di.show_xiaoshoujingli4(); outfile”endl; outfile”*”endl; outfile”销售员”endl; outfile”endl; outfile” 职工号 姓名 性别 年龄 工资 所属部门经理编号 endl; for(i=0;in*2;i+) outfile”endl;ci.show_x
19、iaoshouyuan4(); outfileendl; outfile”*”endl; outfile.close(); disp();break;case 5: exit(0); ;break;default:cout 选择错误,请重新选择!”endl; disp();break; return 0;四、运行结果小型公司工资管理系统 请选择您所需要的操作 数据输入: 1,并按回车键 数据统计: 2,并按回车键 数据打印: 3,并按回车键 数据备份: 4,并按回车键 退出系统: 5,并按回车键 请选择一个操作: 1技术员编号:101其姓名:zhang1性别(m/w):w年龄:27工作时间:5
20、6技术员编号:102其姓名:wang1性别(m/w):m年龄:27工作时间:58*经理的编号:201其姓名:wang2其性别(m/w):w年龄:34经理的编号:202其姓名:36其性别(m/w):m年龄:36*销售员的编号:301其姓名:zhang3性别(m/w):m年龄:28销售额:50000所属销售经理的编号:401销售员的编号:302其姓名:wang3性别(m/w):w年龄:32销售额:54000所属销售经理的编号:401销售员的编号:303其姓名:wan1性别(m/w):w年龄:35销售额:60000所属销售经理的编号:402销售员的编号:304其姓名:wan2性别(m/w):m年龄:
21、26销售额:80000所属销售经理的编号:402*销售经理的编号:401其姓名:sun性别(m/w):w年龄:36销售经理的编号:402其姓名:liu性别(m/w):w年龄:29*小型公司工资管理系统 请选择您所需要的操作 数据输入: 1,并按回车键 数据统计: 2,并按回车键 数据打印: 3,并按回车键 数据备份: 4,并按回车键 退出系统: 5,并按回车键 请选择一个操作: 2职工号为401销售经理sun下属销售员的业绩为: 职工号 姓名 销售额 301 zhang3 50000 302 wang3 54000销售额总计 104000 职工号为402销售经理liu下属销售员的业绩为: 职工
22、号 姓名 销售额 303 wan1 60000 304 wan2 80000销售额总计 140000 销售经理按工资排序为: 职工号 姓名 性别 年龄 工资 402 liu w 29 5700 401 sun w 36 5520小型公司工资管理系统 请选择您所需要的操作 数据输入: 1,并按回车键 数据统计: 2,并按回车键 数据打印: 3,并按回车键 数据备份: 4,并按回车键 退出系统: 5,并按回车键 请选择一个操作: 3请等待.。.职工基本情况一览表如下技术员 职工号 姓名 性别 年龄 工资 101 zhang1 w 27 5600 102 wang1 m 27 5800*经理 职工号
23、 姓名 性别 年龄 工资 201 wang2 w 34 8000 202 36 m 36 8000*销售经理 职工号 姓名 性别 年龄 工资 402 liu w 29 5700 401 sun w 36 5520*销售员 职工号 姓名 性别 年龄 工资 所属部门经理编号 301 zhang3 m 28 2000 401 302 wang3 w 32 2160 401 303 wan1 w 35 2400 402 304 wan2 m 26 3200 402*小型公司工资管理系统 请选择您所需要的操作 数据输入: 1,并按回车键 数据统计: 2,并按回车键 数据打印: 3,并按回车键 数据备份: 4,并按回车键 退出系统: 5,并按回车键 请选择一个操作: 4小型公司工资管理系统 请选择您所需要的操