·3.某学校对教师每月工资的计算公式如下:固定工资+课时补贴。 ·教授的固定工资5000元,每个课时补贴50元; ·副教授的固定工资3000元,每个课时补贴30元; ·讲师的固定工资2000元,每个课时补贴20元。 ·设计程序,创建教师的抽象类,派生出各类教师,类中有私有数据课 时数,公有有参构造函数、无参构造函数、计算工资、显示教师信息 函数,主函数中创建各类教师对象及基类指针,计算各类教师的月工 资并显示输出。
时间: 2024-03-01 17:54:21 浏览: 88
好的,这是一个关于计算教师工资的问题。以下是一个参考实现:
```c++
#include <iostream>
using namespace std;
// 教师类的抽象基类
class Teacher {
protected:
int hour; // 课时数
public:
Teacher() { hour = 0; }
Teacher(int h) { hour = h; }
virtual ~Teacher() {}
virtual int getSalary() = 0;
virtual void display() = 0;
};
// 教授类
class Professor : public Teacher {
public:
Professor() { }
Professor(int h) : Teacher(h) { }
int getSalary() {
return 5000 + hour * 50;
}
void display() {
cout << "Professor: " << hour << " hours, salary: " << getSalary() << endl;
}
};
// 副教授类
class AssociateProfessor : public Teacher {
public:
AssociateProfessor() { }
AssociateProfessor(int h) : Teacher(h) { }
int getSalary() {
return 3000 + hour * 30;
}
void display() {
cout << "Associate Professor: " << hour << " hours, salary: " << getSalary() << endl;
}
};
// 讲师类
class Lecturer : public Teacher {
public:
Lecturer() { }
Lecturer(int h) : Teacher(h) { }
int getSalary() {
return 2000 + hour * 20;
}
void display() {
cout << "Lecturer: " << hour << " hours, salary: " << getSalary() << endl;
}
};
int main() {
// 创建各类教师对象
Professor prof(100);
AssociateProfessor ap(80);
Lecturer lec(60);
// 创建基类指针,指向各类教师对象
Teacher* ptr1 = &prof;
Teacher* ptr2 = ≈
Teacher* ptr3 = &lec;
// 计算各类教师的月工资并输出
ptr1->display();
ptr2->display();
ptr3->display();
return 0;
}
```
程序中定义了一个`Teacher`类作为抽象基类,其中包含了每个教师都需要的课时数和计算工资的接口函数。然后,`Professor`、`AssociateProfessor`和`Lecturer`三种教师类型分别继承了`Teacher`类,并重写了`getSalary`和`display`接口函数。最后,在主函数中分别创建各类教师对象,并用基类指针指向它们,计算和输出各类教师的月工资。
阅读全文