某使用c++对教师每月工资的计算公式如下:固定工资+额外补贴。教授的固定工资为5000元,每个课时补贴50元;副教授的固定工资为3000元,每个课时补贴为30元;讲师的固定工资为2000元,每个课时补20元。定义教师抽象类,派生不同职称的教师类,编写程序求若干教师的月工资
时间: 2024-02-22 16:57:57 浏览: 101
C++课设教师工资管理系统.doc
5星 · 资源好评率100%
好的,这是一个比较典型的面向对象程序设计问题。我们可以通过定义教师抽象类,派生不同职称的教师类来实现。
首先,我们定义教师抽象类,包含两个纯虚函数:getSalary() 和 getType()。
```c++
class Teacher {
public:
virtual int getSalary() = 0; // 获取工资
virtual std::string getType() = 0; // 获取职称
};
```
接下来,我们派生出教授、副教授、讲师三个类,并分别实现 getSalary() 和 getType() 函数。
```c++
class Professor : public Teacher {
public:
Professor(int hours) : _hours(hours) {} // 构造函数,初始化课时数
virtual int getSalary() { return 5000 + _hours * 50; } // 计算工资
virtual std::string getType() { return "Professor"; } // 返回职称
private:
int _hours; // 课时数
};
class AssociateProfessor : public Teacher {
public:
AssociateProfessor(int hours) : _hours(hours) {} // 构造函数,初始化课时数
virtual int getSalary() { return 3000 + _hours * 30; } // 计算工资
virtual std::string getType() { return "AssociateProfessor"; } // 返回职称
private:
int _hours; // 课时数
};
class Lecturer : public Teacher {
public:
Lecturer(int hours) : _hours(hours) {} // 构造函数,初始化课时数
virtual int getSalary() { return 2000 + _hours * 20; } // 计算工资
virtual std::string getType() { return "Lecturer"; } // 返回职称
private:
int _hours; // 课时数
};
```
最后,我们可以在 main 函数中创建若干个教师对象,调用 getSalary() 和 getType() 函数,输出他们的月工资和职称。
```c++
int main() {
Teacher* t1 = new Professor(80);
Teacher* t2 = new AssociateProfessor(60);
Teacher* t3 = new Lecturer(40);
std::cout << t1->getType() << " Salary: " << t1->getSalary() << std::endl;
std::cout << t2->getType() << " Salary: " << t2->getSalary() << std::endl;
std::cout << t3->getType() << " Salary: " << t3->getSalary() << std::endl;
delete t1;
delete t2;
delete t3;
return 0;
}
```
输出结果如下:
```
Professor Salary: 9000
AssociateProfessor Salary: 4800
Lecturer Salary: 2800
```
这样,我们就完成了使用 C++ 对教师每月工资的计算问题的设计和实现。
阅读全文