定义职工工资类类型,其所包含的属性有:工号(num)、姓名(name)、基本工资(base_salary)、岗位工资(post_salary)、医疗住房基金(fund)、税金(tax)与实发工资(fact_salary)。其包含如下四个成员函数,分别用于: ①输入全车间职工的工号、姓名、基本工资、岗位工资、医疗住房基金与税金。 ②计算每一个职工实发工资,计算公式: 实发工资=基本工资+岗位工资-医疗住房基金-税金。 ③按实发工资降序排序(提示:应使用static成员函数)。 ④输出全车间职工的工号、姓名、基本工资、岗位工资、医疗住房基金、税金与实发工资。 在主函数中定义职工工资数组Salary1,调用四个函数完成输入、计算实发工资、排序、输出工作。
时间: 2023-06-09 09:03:49 浏览: 236
好的,我理解了您的问题。以下是我给您提供的代码实现:
```cpp
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
class WorkerSalary{
public:
int num; //工号
string name; //姓名
double base_salary; //基本工资
double post_salary; //岗位工资
double fund; //医疗住房基金
double tax; //税金
double fact_salary; //实发工资
WorkerSalary();
void input();
void calculate();
static bool cmp(const WorkerSalary&, const WorkerSalary&);
void output();
};
WorkerSalary::WorkerSalary(){
num = 0;
name = "";
base_salary = 0.0;
post_salary = 0.0;
fund = 0.0;
tax = 0.0;
fact_salary = 0.0;
}
void WorkerSalary::input(){
cout<<"请输入职工的工号,姓名,基本工资,岗位工资,医疗住房基金和税金:"<<endl;
cin>>num>>name>>base_salary>>post_salary>>fund>>tax;
}
void WorkerSalary::calculate(){
fact_salary = base_salary + post_salary - fund - tax;
}
bool WorkerSalary::cmp(const WorkerSalary& a, const WorkerSalary& b){
return a.fact_salary > b.fact_salary;
}
void WorkerSalary::output(){
cout<<num<<"\t"<<name<<"\t"<<base_salary<<"\t"<<post_salary<<"\t"<<fund<<"\t"<<tax<<"\t"<<fact_salary<<endl;
}
int main(){
const int N = 5;
WorkerSalary Salary1[N];
//输入全车间职工的工号、姓名、基本工资、岗位工资、医疗住房基金与税金。
for(int i=0;i<N;i++){
Salary1[i].input();
}
//计算每一个职工实发工资
for(int i=0;i<N;i++){
Salary1[i].calculate();
}
//按实发工资降序排序
sort(Salary1, Salary1+N, WorkerSalary::cmp);
//输出全车间职工的工号、姓名、基本工资、岗位工资、医疗住房基金、税金与实发工资
cout<<"工号"<<"\t"<<"姓名"<<"\t"<<"基本工资"<<"\t"<<"岗位工资"<<"\t"<<"医疗住房基金"<<"\t"<<"税金"<<"\t"<<"实发工资"<<endl;
for(int i=0;i<N;i++){
Salary1[i].output();
}
return 0;
}
```
希望能帮到您!
阅读全文