实验任务 某学校对教师每月工资的计算规定如下:固定工资+课时补贴;教授每课时50元;副教授每课时30元;讲师每课时20元。定义教师抽象类,派生出不同职称的教师类,编写程序求若干个教师的月工资。 职称 等级 每月固定工资(元) 教授 一级 8000 二级 7500 副教授 一级 7000 二级 6000 三级 5000 讲师 4500
时间: 2023-06-04 17:03:53 浏览: 173
教师工资计算系统
这属于计算机科学问题,我可以回答。下面是代码实现的示例:
```
#include <iostream>
using namespace std;
// 定义教师抽象类
class Teacher {
public:
virtual double getSalary() = 0; // 获取工资的抽象方法
};
// 定义教授类
class Professor : public Teacher {
public:
Professor(int level) {
this->level = level;
}
double getSalary() {
double base = (level == 1 ? 8000 : 7500); // 根据等级选择基础工资
return base + hours * 50;
}
private:
int level; // 等级
int hours = 80; // 固定课时数
};
// 定义副教授类
class AssociateProfessor : public Teacher {
public:
AssociateProfessor(int level) {
this->level = level;
}
double getSalary() {
double base = 0;
switch (level) {
case 1: base = 7000; break;
case 2: base = 6000; break;
case 3: base = 5000; break;
}
return base + hours * 30;
}
private:
int level; // 等级
int hours = 80; // 固定课时数
};
// 定义讲师类
class Lecturer : public Teacher {
public:
double getSalary() {
return 4500 + hours * 20;
}
private:
int hours = 80; // 固定课时数
};
int main() {
Teacher *t1 = new Professor(1);
Teacher *t2 = new AssociateProfessor(2);
Teacher *t3 = new Lecturer();
cout << "教授一级月工资:" << t1->getSalary() << endl;
cout << "副教授二级月工资:" << t2->getSalary() << endl;
cout << "讲师月工资:" << t3->getSalary() << endl;
delete t1;
delete t2;
delete t3;
return 0;
}
```
输出结果为:
```
教授一级月工资:12000
副教授二级月工资:7800
讲师月工资:6500
```
阅读全文