题目:
创建一个表示雇员信息的employee类,其中包含数据成员name、empNo和salary,分别表示雇员的姓名、编号和月薪。
再从employee类派生出3个类worker、technician和salesman,分别代表普通工人、科研人员、销售人员。三个类中分别包含
数据成员productNum、workHours和monthlysales,分别代表工人每月生产产品的数量、科研人员每月工作的时数和销售人员每月
的销售额。要求在employee类中声明虚成员函数pay,并在各个派生类中覆盖pay函数,用来计算雇员的月薪,并假定:
普通工人的月薪=每月生产的产品数×每件产品的赢利×20%
科研人员的月薪=每月的工作时数×每小时工作的酬金
销售人员的月薪=月销售额×销售额提成。
创建一个通用函数CalculateSalary,用来计算并返回各种不同类型雇员的月薪。函数
CalculateSalary的原型如下:
float CalculateSalary(employee *emptr);
在main函数中分别声明worker类、technician类和salesman类的对象代表各种类型的
雇员,并调用函数CalculateSalary来计算他们的月薪
代码实现:
#include<iostream>
#include<string>
using namespace std;
//以下是雇员类的实现
class employee
{
protected:
string name;
int empNo;
float salary;
public:
employee()
{
name=\"noname\";empNo=0;salary=0.0;
}
employee(string name,int empNo,float salary)
{
this->name=name;
this->empNo=empNo;
this->salary=salary;
}
~employee(){}
virtual float pay(){return 0.0;}
};
class worker:public employee
{
protected:
int productNum;
public:
worker(string name,int empNo,float salary,int productNum):employee(name,empNo,salary)
{
this->productNum=productNum;
}
~worker(){}
float pay()
{
return salary+productNum*80*0.2;
}
};
class technician:public employee
{
protected:
int workHours;
public:
technician(string name,int empNo,float salary,int workHours):employee(name,empNo,salary)
{
this->workHours=workHours;
}
~technician(){}
float pay()
{
return salary+workHours*200;
}
};
class salesman:public employee
{
protected:
float monthlysales;
public:
salesman(string name,int empNo,float salary,float monthlysales):employee(name,empNo,salary)
{
this->monthlysales=monthlysales;
}
~salesman(){}
float pay()
{
return salary+monthlysales*1.8;
}
};
float CalculateSalary(employee *emptr)
{
return emptr->pay();
}
void main()
{
employee *emp1=new worker(\"s1\",001,1000.0,180);
employee *emp2=new technician(\"s2\",002,1000.0,35);
employee *emp3=new salesman(\"s3\",003,1000.0,2400);
cout<<\"工人的月薪为\"<<CalculateSalary(emp1)<<endl;
cout<<\"科研人员的月薪为\"<<CalculateSalary(emp2)<<endl;
cout<<\"销售人员的月薪为\"<<CalculateSalary(emp3)<<endl;
}
继续阅读与本文标签相同的文章
上一篇 :
设计模式的学习(六):装饰器模式
下一篇 :
微信读书尝试商业化 开始接入微信广告
-
云上一指禅:大数据产品DataWorks每日问答
2026-05-18栏目: 教程
-
云数据库RDS是什么?
2026-05-18栏目: 教程
-
2019智能安防工程师大会在杭州成功召开
2026-05-18栏目: 教程
-
2018年中国专利申请154万件 超过日美 占全球近半
2026-05-18栏目: 教程
-
关于表变动而导致的实体变动问题
2026-05-18栏目: 教程
