实现电费管理与工资计算的Salary类设计
版权申诉
128 浏览量
更新于2024-11-13
1
收藏 765B RAR 举报
资源摘要信息:"daima.rar_return_wage_电费管理"
在给定的文件信息中,涉及的知识点主要集中在面向对象编程的类设计与实现、成员函数的定义以及构造函数的使用。下面将详细解读这些知识点,并解释如何在C++编程语言中实现它们。
**1. 类Salary的设计**
首先,Salary类的设计中包含四个数据成员,分别代表基本工资(Wage)、岗位津贴(Subsidy)、房租(Rent)、水费(WaterFee)和电费(ElecFee)。所有这些成员都被声明为double类型,以便存储工资和费用的数值。
**构造函数**:Salary类包含两个构造函数。一个是带有参数的构造函数,用于初始化工资数据的各个分项;另一个是默认构造函数,用于将工资数据的所有分项初始化为0。构造函数是类的一种特殊成员函数,在创建类的对象时自动调用。
**成员函数setXX**:这个函数用于设置工资的各分项数据。函数名中的XX表示对应的成员变量(如Wage, Subsidy等)。这里的setXX函数是虚函数,即在 Salary 类中只声明不定义,具体的定义会在类的实现部分给出。
**成员函数getXX**:这个函数用于获取工资的各分项数据。与setXX函数类似,getXX也是虚函数,具体的定义会在类的实现部分给出。
**实发工资的计算**:实发工资(RealSalary)由基本工资和岗位津贴之和,减去房租、水费和电费得到。这个计算过程是在RealSalary成员函数中实现的。
**2. 类Worker的设计**
Worker类包含姓名(name)、年龄(age)、工作部门(Dept)以及工资(salary)等数据成员。工资(salary)是一个Salary类型的成员,这表明一个Worker对象中嵌套着一个Salary对象。在Worker类中,可以通过Salary类的接口来管理工资信息。
**工人人数的统计**:文档中提到需要统计工人的人数,这通常需要在Worker类中包含一个静态成员变量来跟踪已创建的Worker对象数量。
**测试程序**:文档要求编写一个main函数来测试Salary类和Worker类的成员函数。在main函数中,将创建一些Worker对象,并通过这些对象来调用Salary类和Worker类的方法,以此来验证这些方法的正确性和功能。
**编程实现示例(C++)**:
```cpp
#include <iostream>
#include <string>
using namespace std;
class Salary {
private:
double Wage, Subsidy, Rent, WaterFee, ElecFee;
public:
Salary(double wage, double subsidy, double rent, double waterFee, double elecFee)
: Wage(wage), Subsidy(subsidy), Rent(rent), WaterFee(waterFee), ElecFee(elecFee) {}
Salary() : Wage(0), Subsidy(0), Rent(0), WaterFee(0), ElecFee(0) {}
void setWage(double w) { Wage = w; }
void setSubsidy(double s) { Subsidy = s; }
void setRent(double r) { Rent = r; }
void setWaterFee(double wf) { WaterFee = wf; }
void setElecFee(double ef) { ElecFee = ef; }
double getWage() const { return Wage; }
double getSubsidy() const { return Subsidy; }
double getRent() const { return Rent; }
double getWaterFee() const { return WaterFee; }
double getElecFee() const { return ElecFee; }
double RealSalary() const {
return Wage + Subsidy - Rent - WaterFee - ElecFee;
}
};
class Worker {
private:
string name;
int age;
string Dept;
Salary salary;
public:
static int count;
Worker(string n, int a, string d, double w, double s, double r, double wf, double ef)
: name(n), age(a), Dept(d), salary(w, s, r, wf, ef) {
count++;
}
string getName() const { return name; }
int getAge() const { return age; }
string getDept() const { return Dept; }
Salary getSalary() const { return salary; }
static int getCount() { return count; }
};
int Worker::count = 0;
int main() {
// 创建Worker对象并测试Salary和Worker类
Worker worker1("张三", 30, "财务部", 5000, 500, 500, 200, 300);
Worker worker2("李四", 28, "市场部", 6000, 600, 600, 300, 400);
cout << "工人人数: " << Worker::getCount() << endl;
cout << worker1.getName() << " 实发工资: " << worker1.getSalary().RealSalary() << endl;
cout << worker2.getName() << " 实发工资: " << worker2.getSalary().RealSalary() << endl;
return 0;
}
```
以上代码展示了如何根据给定的要求实现Salary类和Worker类,以及如何在main函数中创建和使用这两个类的实例。在实际的开发中,可能还需要考虑数据验证、异常处理等其他编程实践来提高代码的健壮性和可用性。
2022-09-20 上传
2022-09-21 上传
1292 浏览量
2022-09-20 上传
2022-09-14 上传
2022-07-14 上传
2021-08-12 上传
局外狗
- 粉丝: 78
- 资源: 1万+
最新资源
- 黑板风格计算机毕业答辩PPT模板下载
- CodeSandbox实现ListView快速创建指南
- Node.js脚本实现WXR文件到Postgres数据库帖子导入
- 清新简约创意三角毕业论文答辩PPT模板
- DISCORD-JS-CRUD:提升 Discord 机器人开发体验
- Node.js v4.3.2版本Linux ARM64平台运行时环境发布
- SQLight:C++11编写的轻量级MySQL客户端
- 计算机专业毕业论文答辩PPT模板
- Wireshark网络抓包工具的使用与数据包解析
- Wild Match Map: JavaScript中实现通配符映射与事件绑定
- 毕业答辩利器:蝶恋花毕业设计PPT模板
- Node.js深度解析:高性能Web服务器与实时应用构建
- 掌握深度图技术:游戏开发中的绚丽应用案例
- Dart语言的HTTP扩展包功能详解
- MoonMaker: 投资组合加固神器,助力$GME投资者登月
- 计算机毕业设计答辩PPT模板下载