C++ 员工类、销售员类和经理类继承关系及工资计算
#define _CRT_SECURE_NO_WARNINGS
#include
class Employee//员工类 { private: string name;//姓名 int beginYear;//参加工作年份 public: Employee(string value1, int value2) :name(value1), beginYear(value2) {}//构造函数 int getBeginYear(void) { return beginYear; }//返回员工的参加工作年份 string getName(void) { return name; }//返回员工的姓名 double getBasicWage(int currentYear)//返回员工的基本工资 { int workyear = currentYear - beginYear + 1;//工龄 double baseWage = 60000 + workyear * 1000;//基本工资 return baseWage; } virtual double getPrize(void) = 0;//返回员工的奖金 };
class Saleman :public Employee//销售员类 { private: double deductRate;//提成比例 double personAmount;//个人销售额 public: Saleman(string value1 = "CPP", int value2 = 2022, double value3 = 0.1, double value4 = 0.0, double value5 = 0.15, double value6 = 100000) :Employee(value1, value2), deductRate(value5), personAmount(value6)//构造函数 { deductRate = value3; personAmount = value4; } double getDeductRate(void) { return deductRate; }//返回销售员的提成比例 double getPersonAmount(void) { return personAmount; }//返回销售员的个人销售额 double getPrize(void) { return deductRate * personAmount; }//返回销售员的奖金 };
class Manager :public Employee//经理类 { private: double totalDeductRate;//经理提成比例 double totalAmount;//总销售额 public: Manager(string value1 = "CPP", int value2 = 2022, double value5 = 0.02, double value6 = 0.0, double value7 = 0.05, double value8 = 1000000) :Employee(value1, value2), totalDeductRate(value7), totalAmount(value8)//构造函数 { totalDeductRate = value5; totalAmount = value6; } double getTotalDeductRate(void) { return totalDeductRate; }//返回经理的提成比例 double getTotalAmount(void) { return totalAmount; }//返回经理的总销售额 double getPrize(void) { return totalDeductRate * totalAmount; }//返回经理的奖金 };
int main(void) { string value1; int value2; double value3, value4; cin >> value1 >> value2 >> value3 >> value4; Saleman s(value1, value2, value3, value4);//Saleman对象 cin >> value1 >> value2 >> value3 >> value4; Manager m(value1, value2, value3, value4);//Manager对象 Employee* e = &s; cout << e->getName() << "2022年的实发工资为" << e->getPrize() + e->getBasicWage(2022) << endl;//输出Saleman对象的实发工资 e = &m; cout << e->getName() << "2022年的实发工资为" << e->getPrize() + e->getBasicWage(2022) << endl;//输出Manager对象的实发工资 return 0; }
原文地址: https://www.cveoy.top/t/topic/osJz 著作权归作者所有。请勿转载和采集!