问题:
8-3 【Python0016】设计并实现计算不同职称的教师工资 分数 10 作者 doublebest 单位 石家庄铁道大学【题目描述】设计教师接口,该接口包含教师工资计算方法。应用(一)中的高校人员信息包,设计不同职称的教师类:教授,副教授,讲师,教师的基本信息包括姓名、性别、出生年月、职称、课时工作量等属性。注意学校对教师每月工资的计算规定如下:固定工资+课时补贴;教授的固定工资为5000元,每个课时补贴50元;副教授的固定工资为3000元,每个课时补贴30元;讲师的固定工资为2000元,每个课时补贴20元。
程序中定义各种教师类的对象,并编写程序求这些教师的月工资。
【练习要求】请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释。
代码:
from abc import ABC, abstractmethod标签:__,salary,4.14,日报,软工,hours,worked,self,name From: https://www.cnblogs.com/guozi6/p/18257638
class Teacher(ABC):
def __init__(self, name, gender, birth_date, title, hours_worked):
self.name = name
self.gender = gender
self.birth_date = birth_date
self.title = title
self.hours_worked = hours_worked
@abstractmethod
def calculate_monthly_salary(self):
pass
class Professor(Teacher):
def __init__(self, name, gender, birth_date, hours_worked):
super().__init__(name, gender, birth_date, '教授', hours_worked)
def calculate_monthly_salary(self):
base_salary = 5000
hourly_rate = 50
return base_salary + (self.hours_worked * hourly_rate)
class AssociateProfessor(Teacher):
def __init__(self, name, gender, birth_date, hours_worked):
super().__init__(name, gender, birth_date, '副教授', hours_worked)
def calculate_monthly_salary(self):
base_salary = 3000
hourly_rate = 30
return base_salary + (self.hours_worked * hourly_rate)
class Lecturer(Teacher):
def __init__(self, name, gender, birth_date, hours_worked):
super().__init__(name, gender, birth_date, '讲师', hours_worked)
def calculate_monthly_salary(self):
base_salary = 2000
hourly_rate = 20
return base_salary + (self.hours_worked * hourly_rate)
def main():
prof_li = Professor('詹姆斯—摩根—麦吉尔', '男', '1970-01-01', 120)
assoc_prof_wang = AssociateProfessor('杰西—平克曼', '女', '1975-05-10', 100)
lect_zhang = Lecturer('索尔—古德曼', '男', '1980-08-20', 150)
print(f"{prof_li.name} 的月工资为:{prof_li.calculate_monthly_salary()}元")
print(f"{assoc_prof_wang.name} 的月工资为:{assoc_prof_wang.calculate_monthly_salary()}元")
print(f"{lect_zhang.name} 的月工资为:{lect_zhang.calculate_monthly_salary()}元")
if __name__ == "__main__":
main()