【报告】实验三_多态性实验报告_第1页
【报告】实验三_多态性实验报告_第2页
【报告】实验三_多态性实验报告_第3页
【报告】实验三_多态性实验报告_第4页
【报告】实验三_多态性实验报告_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、浙江理工高校信息学院试验指导书试验名称: 类的多态性的实现学时支配: 3试验类别: 设计性试验试验要求: 1 人 1 组学号:姓名:一、试验目的1. 懂得重载运算符的意义;2. 把握使用成员函数、友员函数重载运算符的特点;3. 把握重载运算符函数的调用方法;4. 把握动态联编的概念;5. 把握虚函数和纯虚函数的使用方法;二、试验原理介绍设计性试验详细原理请见试验内容和步骤实现对抽象类的继承,通过 operator函数调用的形式 , 实现运算符的重载三、试验设备介绍软件需求 : windows或 linux下的 c+编译器硬件需求 :对于硬件方面的要求,建议配置是pentium iii450 以

2、上的 cpu 处理器, 64mb以上的内存, 200mb的自由硬盘空间、 cd-rom驱动器、能支持 24位真彩色的显示卡、彩色显示器、打印机;四、试验内容某公司的员工有经理 manager、技术人员 technicist 和营销人员 salseperso,n他们的薪金运算方法如下:经理按月计酬,方法是:基本工资 +奖金;技术人员按月计酬,方法是:基本工资;营销人员按月计酬,方法是:基本工资+销售利润 *5% ;每类人员都有职工编号、姓名、性别、入职时间、职位、基本工资等数据; 各类人员使用统一接口get_pay运算各类人员的月薪,重载 运算符实现员工信息的输出;其次,设计一个统计并输出该公司

3、员工当月薪金情形的报表类report,该类供应 insert 接口向 report 类的容器中添加员工信息,并供应print 接口用于展现以职位为单位的每个员工的职工编号、姓名、性别、入职时间以及当月该员工的薪酬, 并统计出该职位员工薪酬的最高值和最低值; 为了供应更便利的查找功能,请为 report 类重载 运算符,下标值为职位,能依据职位信息查找出全部符合该职位的员工; 在主函数中对实现的类进行测试,第一,创建各类人员对象,通过 report 类的 insert 接口向报表中添加这些人员信息,然后通过report 类的 print 接口输出当月员工薪酬情形报表;储备员工对象的容器请选用合适

4、的 stl 容器;五 程序清单/main.cpp #include class.h #include int maincout请输入指定月份 month;report re;re.insertnew technicist0001,王华, 男,cdate2,4,2021,技术,9000;re.insertnewtechnicist0002,李明, 女,cdate4,10,2021,技术,10000;map bonus; bonus1 = 1000;bonus2 = 2000;bonus3 = 3000;re.insertnew manager0003,朱清晨 , 男,cdate11,8,2001

5、,经理,12000,bonus; bonus1 = 500;bonus2 = 1500;bonus3 = 2000;re.insertnew manager0004,刘改云 ,男,cdate8,7,2003,经理,10000,bonus; map sales; sales1 = 200000;sales2 = 100000;sales3 = 500000;re.insertnewsalesperson0005,李志武, 男,cdate10,11,2007, 销售,5000,sales;re.printmonth; return 0;/class.h#ifndef class_h_include

6、d #define class_h_included#include #include #include #include #include #include #includedate.h using namespace std; class employeeprotected: string name; string id; string sex; string job; cdate date;double basicmoney; public:employeestringid,stringname,stringsex,cdatedate,string job,double basicmon

7、ey;string getjobreturn job; string getnamereturn name; string getidreturn id;string getsexreturn sex;double getbasicmoneyreturn basicmoney; cdate getdatereturn date;virtual double getpayint m=0;class reportprivate:list members;list operatorstring job;double min_paylist emp_list ,int month; double ma

8、x_paylist emp_list ,int month; void printlist emp_list ,int month;public:report;void insertemployee* p; void printint n;class manager:public employeeprivate:map price; public:managerstringid,stringname,stringsex,cdatedate,stringjob,doublebasicmoney,mapprice:employee id,name,sex,date,job,basicmoneyth

9、is-price=price; double getpayint m;class technicist:public employeepublic:techniciststringid,stringname,stringsex,cdatedate,string job,double basicmoney:employeeid,name,sex,date,job,basicmoneydouble getpayint m;class salesperson:public employeeprivate:map sales; public:salespersonstringid,stringname

10、,stringsex,cdatedate,stringjob,doublebasicmoney,mapsales:employeeid,name,sex,date,job,basicmoney this-sales=sales; double getpayint m;#endif/fuctions.cpp #include class.h #include #include using namespace std;employee:employeestring id,string name,string sex,cdate date,string job,double basicmoneyth

11、is-id= id;this-name = name; this-sex = sex;this-date = date;this-basicmoney = basicmoney; this-job = job;double manager:getpayint mreturn pricem+basicmoney;list report:operatorstring joblist cp;list:iterator it; forit=members.begin;it.=members.end;it+if*it-getjob=job cp.push_back*it;return cp;void r

12、eport:printint monthcout 第 month 月职工收入报表 endl; cout -endl;cout 职位:经理 endl;cout 工号t 姓名t 性别t 入职时间 t 基本工资t 薪酬 endl;list emp_ls; emp_ls = *this经理;printemp_ls,month;cout 最低薪酬: min_payemp_ls, month endl; cout 最高薪酬: max_payemp_ls, month endl;cout -endl;cout 职位:销售 endl;cout 工号t 姓名t 性别t 入职时间 t 基本工资t 薪酬 endl;

13、emp_ls = *this销售;printemp_ls,month;cout 最低薪酬: min_payemp_ls, month endl; cout 最高薪酬: max_payemp_ls, month endl;cout -endl;cout 职位:技术 endl;cout 工号t 姓名t 性别t 入职时间 t 基本工资t 薪酬 endl;emp_ls = *this技术; printemp_ls,month;cout 最低薪酬: min_payemp_ls, month endl; cout 最高薪酬: max_payemp_ls, month endl;double report:

14、min_paylist emp_list, int monthvector pay; list:iterator it;forit = emp_list.begin; it .= emp_list.end; it +pay.push_back*it-getpaymonth;return *min_elementpay.begin, pay.end ;double report:max_paylist emp_list, int monthvector pay; list:iterator it;forit = emp_list.begin; it .= emp_list.end; it +pa

15、y.push_back*it-getpaymonth;return *max_elementpay.begin, pay.end ;void report:printlist emp_list,int month list:iterator it;forit = emp_list.begin;it .= emp_list.end;it +coutgetidtgetnamet; coutgetsext;coutgetdate.formatdddt;coutgetbasicmoneytt; coutgetpaymonth endl;void report:insertemployee* pmembers.push_backp;report:report list:iterator it;forit = members.begin; it .= members.end; it +delete *it;double technicist:getpayint m return basicmoney;double salesperson:getpayint m return basicmoney + salesm * 0.05;/date.h/ 增加友元函数 , 重载friend ostream &ope

温馨提示

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

评论

0/150

提交评论