怎样利用C++编写定义描述职工工资的类Laborage,其数据成员为职工号,姓名,因发工资社保金和实发工资.定义成员类Input,在中输入职工号和姓名和应发工资和社保金,实发工资用应发工资减去社保金来计算。定义输出职工工资类show,在函数show中,职工号,姓名的输出区宽度为8、左对齐,其余数据输出的输出域宽为10,右对齐,保留小数点后两位,输出式用预定意格式控制函数来控制,在主函数中,类Laborage定义职工对象组。用Input函数输入职工工资用Show函数来显示每位职工工资(提示:在用getline函数输入职工号喝姓名以后,必须使用Enter键结束职工号和姓名的输入)
时间: 2024-03-26 18:41:29 浏览: 31
好的,以下是符合要求的代码实现:
```c++
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
class Input {
public:
void input() {
cout << "请输入职工号:" << endl;
cin >> id;
cin.get(); // 读取并忽略回车符
cout << "请输入姓名:" << endl;
getline(cin, name);
cout << "请输入应发工资:" << endl;
cin >> wage;
cout << "请输入社保金:" << endl;
cin >> social_security;
real_wage = wage - social_security;
}
protected:
int id; // 职工号
string name; // 姓名
double wage; // 应发工资
double social_security; // 社保金
double real_wage; // 实发工资
};
class Laborage : public Input {
public:
void show() {
cout << left << setw(8) << id // 左对齐,宽度为8
<< setw(10) << name // 右对齐,宽度为10
<< setw(10) << fixed << setprecision(2) << wage // 右对齐,保留小数点后两位,宽度为10
<< setw(10) << fixed << setprecision(2) << social_security // 右对齐,保留小数点后两位,宽度为10
<< setw(10) << fixed << setprecision(2) << real_wage << endl; // 右对齐,保留小数点后两位,宽度为10
}
};
int main() {
const int n = 3; // 职工个数
Laborage workers[n];
for (int i = 0; i < n; i++) {
cout << "请输入第" << i + 1 << "位职工的信息:" << endl;
workers[i].input();
}
cout << left << setw(8) << "职工号" // 左对齐,宽度为8
<< setw(10) << "姓名" // 右对齐,宽度为10
<< setw(10) << "应发工资" // 右对齐,宽度为10
<< setw(10) << "社保金" // 右对齐,宽度为10
<< setw(10) << "实发工资" << endl; // 右对齐,宽度为10
for (int i = 0; i < n; i++) {
workers[i].show();
}
return 0;
}
```
运行程序,输入职工信息后,即可看到输出的职工工资表格。
阅读全文