C++ 继承Employee类

时间:2025-04-23 08:46:48
#include<iostream> #include<cstring> using namespace std; //员工类 class Employee { public: Employee(int new_num, char* new_name, double new_basicSal, double new_prize); //员工类构造函数声明 void Show(); //输出员工类基本信息 double OutputWage1(); //返回员工薪水 void ShowSalary(); // 打印员工薪水 private: int num; //编号 char name[18]; //姓名 double basicSal; //基本工资 double prize; //奖金 }; //员工类构造函数初始化 Employee::Employee(int new_num, char* new_name, double new_basicSal, double new_prize){ num = new_num; strcpy(name, new_name); basicSal = new_basicSal; prize = new_prize; } // 输出员工类基本信息 void Employee::Show() { cout << "编号:" << num << endl; cout << "姓名:" << name << endl; cout << "基本工资:" << basicSal << "元" << endl; cout << "奖金:" << prize << "元" << endl; } //返回员工实发工资 double Employee::OutputWage1(){ double salary; //员工实发工资 = 基本工资 + 奖金 salary = basicSal + prize; return salary; } void Employee::ShowSalary(){ cout << "实发工资:" << OutputWage1() << "元" << endl; } //销售员类 class Saleman :virtual public Employee { public: Saleman(int a, char* b, double d, double e, double f, double g); void Output2();//输出 Employee+Saleman 基本信息 void output2(); // 只输出 Saleman 基本信息 double OutputWage2(); void ShowSalary(); private: double daductRatr; //成员销售额提成比例 double personAmount;//个人销售额 }; Saleman::Saleman(int new_num, char* new_name, double new_basicSal, double new_prize, double new_daductRatr, double new_personAmount) :Employee(new_num, new_name, new_basicSal, new_prize){ daductRatr = new_daductRatr; personAmount = new_personAmount; } //输出 Employee+Saleman 基本信息 void Saleman::Output2() { Show(); cout << "销售员提成比例:" << daductRatr << endl; cout << "个人销售额:" << personAmount << "元" << endl; } // 只输出 Saleman 基本信息 void Saleman::output2() { cout << "销售员提成比例:" << daductRatr << endl; cout << "个人销售额:" << personAmount << "元" << endl; } //返回销售员实发工资 double Saleman::OutputWage2() { double salary; //销售员实发工资 = 基本工资 + 奖金 * 出勤率 + 个人销售额 * 销售员提成比例 salary = Employee::OutputWage1() + personAmount * daductRatr; return salary; } void Saleman::ShowSalary(){ cout << "实发工资:" << OutputWage2() << "元" << endl; } //经理类 class Manager :virtual public Employee { public: Manager(int new_num, char* new_name, double new_basicSal, double new_prize, double new_totalDeductRate, double new_totalAmount); void Output3();//输出 Employee+Manager 基本信息 void output3();//只输出 Manager 基本信息 double OutputWage3();//返回经理实发工资 void ShowSalary(); private: double totalDeductRate; double totalAmount; }; Manager::Manager(int new_num, char* new_name, double new_basicSal, double new_prize, double new_totalDeductRate, double new_totalAmount) :Employee(new_num, new_name, new_basicSal, new_prize){ totalDeductRate = new_totalDeductRate; //经理提成比例 totalAmount = new_totalAmount;//总销售额 } //输出 Employee+Manager 基本信息 void Manager::Output3() { Show(); cout << "经理提成比例:" << totalDeductRate << endl; cout << "总销售额:" << totalAmount << "元" << endl; } //只输出 Manager 基本信息 void Manager::output3() { cout << "经理提成比例:" << totalDeductRate << endl; cout << "总销售额:" << totalAmount << "元" << endl; } //返回经理实发工资 double Manager::OutputWage3() { double salary; //经理实发工资 = 基本工资 + 奖金 + 总销售额 * 经理提成比例 salary = Employee::OutputWage1() + totalAmount * totalDeductRate; return salary; } void Manager::ShowSalary(){ cout << "实发工资:" << OutputWage3() << "元" << endl; } //销售经理类 class SaleManager :public Saleman, public Manager { public: SaleManager(int new_num, char* new_name, int new_basicSal, int new_prize, double f, double g, double h, double i); void Output4();//输出销售经理基本信息 double OutputWage4();//返回销售经理实发工资 void ShowSalary(); }; SaleManager::SaleManager(int new_num, char* new_name, int new_basicSal, int new_prize, double new_daductRatr, double new_personAmount, double new_totalDeductRate, double new_totalAmount) : Saleman(new_num, new_name, new_basicSal, new_prize, new_daductRatr, new_personAmount), Manager(new_num, new_name, new_basicSal, new_prize, new_totalDeductRate, new_totalAmount), Employee(new_num, new_name, new_basicSal, new_prize) { } void SaleManager::Output4() { Employee::Show(); Saleman::output2(); Manager::output3(); } //返回销售经理实发工资 double SaleManager::OutputWage4() { double salary; //销售经理实发工资 = 基本工资 + 奖金 + 个人销售额 * 销售员提成比例 + 总销售额 * 经理提成比例 salary = Saleman::OutputWage2() + Manager::OutputWage3() - Employee::OutputWage1(); return salary; } void SaleManager::ShowSalary(){ cout << "实发工资:" << OutputWage4() << "元" << endl; } int main() { //员工 Employee e(106, "李明", 1680, 1080); // 定义对象 cout << "员工信息:" << endl; // 输出提示 e.Show(); // 输出基本信息 e.ShowSalary(); // 输出实发工资 cout << "" << endl; //销售员 Saleman s(108, "李杰明", 2680, 1680, 0.15, 23000); // 定义对象 cout << "销售员信息:" << endl; // 输出提示 s.Output2(); // 输出基本信息 s.ShowSalary(); // 输出实发工资 cout << "" << endl; //经理 Manager m(116, "吴倩", 3680, 2680, 0.1, 83000); // 定义对象 cout << "经理信息:" << endl; // 输出提示 m.Output3(); // 输出基本信息 m.ShowSalary(); // 输出实发工资 cout << "" << endl; //销售经理s4 SaleManager sm(118, "吴杰", 3680, 2680, 0.15, 28000, 0.1, 88000); // 定义对象 cout << "销售经理信息:" << endl; // 输出提示 sm.Output4(); // 输出基本信息 sm.ShowSalary(); // 输出实发工资 return 0; // 返回值, 返回操作系统 }