实现电费管理与工资计算的Salary类设计
版权申诉
110 浏览量
更新于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-19 上传
2022-09-14 上传
2022-09-24 上传
2022-09-23 上传
2022-09-14 上传
2022-09-19 上传
2022-07-13 上传
局外狗
- 粉丝: 80
- 资源: 1万+
最新资源
- vim-zhongwei-snippets
- java-tomcat-v1
- CalculadoraImcApk:单纯性计算法IMC
- paperclip-av-qtfaststart:修复 FFmpeg MP4 视频文件
- Getting-and-Cleaning-Data-Course-Project:获取和清理数据课程项目
- 这里是关于MySql的学习记录.zip
- Java SSM基于BS的高校教师考勤系统【优质毕业设计、课程设计项目分享】
- Assignment-problem
- drawPanel:允许绘图的 Scala Swing 面板
- optikos-client:使用工作流程的可视化项目管理工具
- example-project-api-tests
- 在学习安卓时,随手写的一个简单的微信固定聊天界面。需要数据库(好像是mysql)和服务器(tomcat)支持。.zip
- 设计模式
- chromatic-todo
- Java SSM机票实时比价系统【优质毕业设计、课程设计项目分享】
- jwt:Flask JWT示例