class SalariedEmployee :public Employee { private: float salary; //固定周薪 public: SalariedEmployee(string _id, string _name) :Employee(_id, _name) { } SalariedEmployee(string _id, string _name, float _salary) :Employee(_id, _name) { salary = _salary; } void setSalary(float s) { salary = s; } float getSalary() { return salary; } float caculateSalary()//实现纯虚函数,计算工资 { return salary; //周薪员工为固定薪资 } void show() //实现纯虚函数,显示雇员信息 { cout << "工号:" << id << ",姓名:" << name << ",员工类型:周薪雇员,薪资:" << fixed << setprecision(2) << caculateSalary() << ",生日福利:"; if (birthday.getMonth() == CURRENTMONTH) cout << "100,总计:" << fixed << setprecision(2) << (caculateSalary()+100) << endl; else cout << "0,总计:" << fixed << setprecision(2) << (caculateSalary() + 0) << endl; } };

时间: 2023-06-19 19:05:50 浏览: 38
这段代码是一个派生类 SalariedEmployee,继承于基类 Employee。SalariedEmployee 是一种固定周薪的员工。它有一个私有变量 salary 表示固定周薪,有两个构造函数,一个是只有工号和姓名的构造函数,一个是有工号、姓名和周薪的构造函数。它实现了基类中的纯虚函数 calculateSalary() 和 show()。 calculateSalary() 函数返回固定的周薪 salary。 show() 函数用于显示 SalariedEmployee 的信息,包括工号、姓名、员工类型、薪资、生日福利和总计工资。如果员工的生日月份与当前月份相同,则生日福利为 100 元,否则为 0 元。总计工资是周薪加上生日福利。
相关问题

class SalariedEmployee : public Employee { public: SalariedEmployee(string name, int id, Date birthDate, double salary) : Employee(name, id, birthDate), salary(salary) {} double calculatePay() override { return salary; }

这是一个C++的类定义,定义了一个名为SalariedEmployee的类,继承自Employee类。该类有四个成员变量:name,id,birthDate和salary。其中name、id和birthDate从Employee类中继承而来,而salary是该类自己定义的。构造函数中初始化了这四个成员变量,其中调用了Employee类的构造函数来初始化name、id和birthDate。该类还重写了Employee类中的calculatePay()函数,用于计算薪水,返回值为salary。

抽象类Employee:这是所有员工总的父类; 数据成员:员工的姓名,员工的生日月份。 成员函数:string getname(),获取员工姓名;float getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公 司会额外奖励100元。 SalariedEmployee:Employee的子类,拿固定工资的员工。 数据成员:月薪 写一个程序,把若干各种类型的员工放在一个 Employee 数组里,写一个函数,打印 出某月每个员工的工资数额。

好的,根据您提供的信息,可以按照以下方式实现这个问题: ```python #include <iostream> #include <string> using namespace std; // 定义员工类 class Employee { public: // 构造函数 Employee(string name, int birthMonth) { this->name = name; this->birthMonth = birthMonth; } // 纯虚函数,获取员工工资 virtual float getSalary(int month) = 0; // 成员函数,获取员工姓名 string getName() { return name; } protected: // 数据成员,员工姓名、员工生日月份 string name; int birthMonth; }; // 定义拿固定工资的员工类 class SalariedEmployee : public Employee { public: // 构造函数 SalariedEmployee(string name, int birthMonth, float salary) : Employee(name, birthMonth) { this->salary = salary; } // 实现纯虚函数,获取员工工资 float getSalary(int month) { float bonus = (month == birthMonth) ? 100.0 : 0.0; return salary + bonus; } private: // 数据成员,员工月薪 float salary; }; // 打印某月每个员工的工资数额 void printSalary(Employee** employees, int numEmployees, int month) { for (int i = 0; i < numEmployees; i++) { cout << employees[i]->getName() << ": " << employees[i]->getSalary(month) << endl; } } int main() { // 测试代码 Employee* employees[3]; employees[0] = new SalariedEmployee("张三", 1, 5000); employees[1] = new SalariedEmployee("李四", 2, 6000); employees[2] = new SalariedEmployee("王五", 3, 7000); printSalary(employees, 3, 2); return 0; } ``` 这个程序定义了一个抽象的员工类和一个拿固定工资的员工类,使用纯虚函数来实现抽象类的功能。然后通过一个数组来存储所有的员工,以及一个函数来打印某月每个员工的工资数额。程序可以根据需要进行扩展,增加新类型的员工等。

相关推荐

优化这段代码class Employee { private String name; private int birthMonth; public Employee(String name, int birthMonth) { this.name = name; this.birthMonth = birthMonth; } public double getSalary(int month) { double salary = 0; return salary; } } class SalariedEmployee extends Employee { private double monthlySalary; public SalariedEmployee(String name, int birthMonth, double monthlySalary) { super(name, birthMonth); this.monthlySalary = monthlySalary; } @Override public double getSalary(int month) { double salary = monthlySalary; if (month == getBirthMonth()) { salary += 100; } return salary; } } class HourlyEmployee extends Employee { private double hourlyWage; private int hoursWorked; public HourlyEmployee(String name, int birthMonth, double hourlyWage, int hoursWorked) { super(name, birthMonth); this.hourlyWage = hourlyWage; this.hoursWorked = hoursWorked; } @Override public double getSalary(int month) { double salary = 0; if (hoursWorked <= 160) { salary = hoursWorked * hourlyWage; } else { salary = 160 * hourlyWage + (hoursWorked - 160) * hourlyWage * 1.5; } if (month == getBirthMonth()) { salary += 100; } return salary; } } class SalesEmployee extends Employee { private double monthlySales; private double commissionRate; public SalesEmployee(String name, int birthMonth, double monthlySales, double commissionRate) { super(name, birthMonth); this.monthlySales = monthlySales; this.commissionRate = commissionRate; } @Override public double getSalary(int month) { double salary = monthlySales * commissionRate; if (month == getBirthMonth()) { salary += 100; } return salary; } } class BasePlusSalesEmployee extends SalesEmployee { private double baseSalary; public BasePlusSalesEmployee(String name, int birthMonth, double monthlySales, double commissionRate, double baseSalary) { super(name, birthMonth, monthlySales, commissionRate); this.baseSalary = baseSalary; } @Override public double getSalary(int month) { double salary = super.getSalary(month) + baseSalary; if (month == getBirthMonth()) { salary += 100; } return salary; } } public class P5 { public static void main(String[] args) { Employee[] employees = new Employee[5]; employees[0] = new SalariedEmployee("Tom", 5, 5000); employees[1] = new HourlyEmployee("Jerry", 12, 20, 180); employees[2] = new SalesEmployee("Mike", 8, 10000, 0.1); employees[3] = new BasePlusSalesEmployee("Lucy", 4, 8000, 0.2, 3000); employees[4] = new Employee("Jack", 9); int month = 5; for (Employee employee : employees) { System.out.println(employee.getSalary(month)); } } }

最新推荐

recommend-type

操作系统实验二进程同步与互斥.docx

操作系统实验二进程同步与互斥
recommend-type

pyzmq-25.1.1-cp39-cp39-macosx_10_15_universal2.whl

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
recommend-type

gnn-citationS

gnn-citationS
recommend-type

redis命令实践详细版

redis命令实践
recommend-type

grpcio-1.24.3-cp36-cp36m-macosx_10_9_x86_64.whl

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB结构体与对象编程:构建面向对象的应用程序,提升代码可维护性和可扩展性

![MATLAB结构体与对象编程:构建面向对象的应用程序,提升代码可维护性和可扩展性](https://picx.zhimg.com/80/v2-8132d9acfebe1c248865e24dc5445720_1440w.webp?source=1def8aca) # 1. MATLAB结构体基础** MATLAB结构体是一种数据结构,用于存储和组织相关数据。它由一系列域组成,每个域都有一个名称和一个值。结构体提供了对数据的灵活访问和管理,使其成为组织和处理复杂数据集的理想选择。 MATLAB中创建结构体非常简单,使用struct函数即可。例如: ```matlab myStruct
recommend-type

详细描述一下STM32F103C8T6怎么与DHT11连接

STM32F103C8T6可以通过单总线协议与DHT11连接。连接步骤如下: 1. 将DHT11的VCC引脚连接到STM32F103C8T6的5V电源引脚; 2. 将DHT11的GND引脚连接到STM32F103C8T6的GND引脚; 3. 将DHT11的DATA引脚连接到STM32F103C8T6的GPIO引脚,可以选择任一GPIO引脚,需要在程序中配置; 4. 在程序中初始化GPIO引脚,将其设为输出模式,并输出高电平,持续至少18ms,以激活DHT11; 5. 将GPIO引脚设为输入模式,等待DHT11响应,DHT11会先输出一个80us的低电平,然后输出一个80us的高电平,
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。