实验三-多态性实验报告

上传人:我*** 文档编号:136123356 上传时间:2020-06-24 格式:DOC 页数:11 大小:72.50KB
返回 下载 相关 举报
实验三-多态性实验报告_第1页
第1页 / 共11页
实验三-多态性实验报告_第2页
第2页 / 共11页
实验三-多态性实验报告_第3页
第3页 / 共11页
实验三-多态性实验报告_第4页
第4页 / 共11页
实验三-多态性实验报告_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《实验三-多态性实验报告》由会员分享,可在线阅读,更多相关《实验三-多态性实验报告(11页珍藏版)》请在金锄头文库上搜索。

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

2、ium III 450 以上的 CPU 处理器,64MB 以上的内存,200MB 的自由硬盘空间、CD-ROM 驱动器、能支 持 24 位真彩色的显示卡、彩色显示器、打印机。 四、实验内容 某公司的员工有经理 Manager、技术人员 Technicist 和营销人员 SalsePerson,他们的薪金计算方法如下: 经理按月计酬,方法是:基本工资+奖金;技术人员按月计酬,方法是:基 本工资;营销人员按月计酬,方法是:基本工资+销售利润*5%。 每类人员都有职工编号、姓名、性别、入职时间、职位、基本工资等数据; 各类人员使用统一接口 get_pay()计算各类人员的月薪,重载运算符实现员工 信

3、息的输出。其次,设计一个统计并输出该公司员工当月薪金情况的报表类 Report,该类提供 insert 接口向 Report 类的容器中添加员工信息,并提供 print 接口用于展示以职位为单位的每个员工的职工编号、姓名、性别、入职时间以 及当月该员工的薪酬,并统计出该职位员工薪酬的最高值和最低值。为了提供 更方便的查找功能,请为 Report 类重载运算符,下标值为职位,能根据职位 信息查找出所有符合该职位的员工。在主函数中对实现的类进行测试,首先, 创建各类人员对象,通过 Report 类的 insert 接口向报表中添加这些人员信息, 然后通过 Report 类的 print 接口输出当

4、月员工薪酬情况报表。存储员工对象的 容器请选用合适的 STL 容器。 五 程序清单 /main.cpp #include class.h #include int main() cout请输入指定月份month; Report re; re.insert(new Technicist(0001,王华,男,CDate(2,4,2011),技术 ,9000); re.insert(new Technicist(0002,李明,女,CDate(4,10,2009),技 术,10000); map bonus; bonus1 = 1000; bonus2 = 2000; bonus3 = 3000;

5、re.insert(new Manager(0003,朱黎明,男,CDate(11,8,2001),经理 ,12000,bonus); bonus1 = 500; bonus2 = 1500; bonus3 = 2000; re.insert(new Manager(0004,刘改云,男,CDate(8,7,2003),经理 ,10000,bonus); map sales; sales1 = ; sales2 = ; sales3 = ; re.insert(new SalesPerson(0005,李志武,男,CDate(10,11,2007), 销售,5000,sales); re.pr

6、int(month); return 0; /class.h #ifndef CLASS_H_INCLUDED #define CLASS_H_INCLUDED #include #include #include #include #include #include #includedate.h using namespace std; class Employee protected: string name; string ID; string sex; string job; CDate date; double basicmoney; public: Employee(string

7、ID,string name,string sex,CDate date,string job,double basicmoney); string getjob()return job; string getname()return name; string getID()return ID; string getsex()return sex; double getbasicmoney()return basicmoney; CDate getdate()return date; virtual double getpay(int m)=0; ; class Report private:

8、 list members; list operator(string job); double min_pay(list emp_list ,int month); double max_pay(list emp_list ,int month); void print(list emp_list ,int month); public: Report(); void insert(Employee* p); void print(int n); ; class Manager:public Employee private: map price; public: Manager(strin

9、g ID,string name,string sex,CDate date,string job,double basicmoney,map price):Employee( ID,name,sex,date,job,basicmoney) this-price=price; double getpay(int m); ; class Technicist:public Employee public: Technicist(string ID,string name,string sex,CDate date,string job,double basicmoney):Employee(I

10、D,name,sex,date,job,basicmoney) double getpay(int m); ; class SalesPerson:public Employee private: map sales; public: SalesPerson(string ID,string name,string sex,CDate date,string job,double basicmoney,map sales):Employee(ID,name,sex,date,job,basicmoney) this-sales=sales; double getpay(int m); ; #e

11、ndif /fuctions.cpp #include class.h #include #include using namespace std; Employee:Employee(string ID,string name,string sex,CDate date,string job,double basicmoney) this-ID= ID; this-name = name; this-sex = sex; this-date = date; this-basicmoney = basicmoney; this-job = job; double Manager:getpay(

12、int m) return pricem+basicmoney; list Report:operator(string job) list cp; list:iterator it; for(it=members.begin();it!=members.end();it+) if(*it)-getjob()=job) cp.push_back(*it); return cp; void Report:print(int month) cout 第 month 月职工收入报表 endl; cout - endl; cout 职位:经理 endl; cout 工号t 姓名t 性别t 入职时间t

13、基本工 资t 薪酬 endl; list emp_ls; emp_ls = (*this)经理; print(emp_ls,month); cout 最低薪酬: min_pay(emp_ls, month) endl; cout 最高薪酬: max_pay(emp_ls, month) endl; cout - endl; cout 职位:销售 endl; cout 工号t 姓名t 性别t 入职时间t 基本工 资t 薪酬 endl; emp_ls = (*this)销售; print(emp_ls,month); cout 最低薪酬: min_pay(emp_ls, month) endl; cout 最高薪酬: max_pay(emp_ls, month) endl; cout - endl; cout 职位:技术 endl; cout 工号t 姓名t 性别t 入职时间t 基本工 资t 薪酬 endl; emp_ls = (*this)技术; print(emp_ls,month); cout 最低薪酬: min_pay(emp_ls, month) endl; cout 最高薪酬: max_pay(emp_ls, month) endl; double Report:min_pay(list emp_list, int month) vector pay; list

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 事务文书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号