|
|
发表于 2023-3-12 12:19:11
|
显示全部楼层
0.不同场景下采取不同的作用
1.方便理解和运算,一切都是那么的理所应当
2.可以称为多态
3.龙生龙,凤生凤,老鼠生的会打洞
4.降低了耦合度
5.不属于
动动手:
0.
class Attribute:
def __init__(self, name, job, grade, year, salary):
self.name = name
self.job = job
self.grade = grade
self.year = year
self.salary = salary
class gradecheckMixin:
def gradecheck(self, job, grade):
if job == "E" and int(grade) > 10:
self.grade = input("该职位最高级别为10,请重新录入级别:")
gradecheckMixin.gradecheck(self, job, self.grade)
elif job == "T" and int(grade) > 6:
self.grade = input("该职位最高级别为6,请重新录入级别:")
gradecheckMixin.gradecheck(self, job, self.grade)
elif job == "M" and int(grade) > 3:
self.grade = input("该职位最高级别为3,请重新录入级别:")
gradecheckMixin.gradecheck(self, job, self.grade)
else:
return self.grade
class salaryMixin:
def salarycompute(self, job, grade, year):
if job == "E":
self.salary = 3000 + 500 * int(grade) + 50 * int(year)
elif job == "T":
self.salary = 4000 + 800 * int(grade) + 100 * int(year)
elif job == "M":
self.salary = 5000 + 1000 * (int(grade) + int(year))
return self.salary
class RegradeMixin:
def up_job_grade(self, job, grade):
self.level = int(input("请输入需要增加的级数:"))
#self.totallevel = 0
if job == "E":
self.totallevel = int(grade) + self.level
elif job == "T":
self.totallevel = int(grade) + self.level + 10
elif job == "M":
self.totallevel = int(grade) + self.level + 16
#print(self.totallevel, "--1")
while self.totallevel > 19:
self.level = int(input("增加级数超出范围,请重新输入需要增加的级数:"))
if job == "E":
self.totallevel = int(grade) + self.level
elif job == "T":
self.totallevel = int(grade) + self.level + 10
elif job == "M":
self.totallevel = int(grade) + self.level + 16
else:
if job == "E" and self.totallevel <= 10:
self.grade = self.totallevel
elif job == "E" and 10 < self.totallevel <= 16:
self.job = "T"
self.grade = 1
elif job == "E" and 16 < self.totallevel <= 19:
self.job = "M"
self.grade = 1
elif job == "T" and 10 < self.totallevel <= 16:
self.grade = self.totallevel - 10
elif job == "T" and 16 < self.totallevel <= 19:
self.job = "M"
self.grade = 1
elif job == "M" and 16 < self.totallevel <= 19:
self.grade = self.totallevel - 10 - 6
return self.job, self.grade
def down_job_grade(self, job, grade):
self.level = -int(input("请输入需要减少的级数:"))
if job == "E":
self.totallevel = int(grade) + self.level
elif job == "T":
self.totallevel = int(grade) + self.level + 10
elif job == "M":
self.totallevel = int(grade) + self.level + 16
while self.totallevel < 1:
self.level = -int(input("增加级数超出范围,请重新输入需要减少的级数:"))
if job == "E":
self.totallevel = int(grade) + self.level
elif job == "T":
self.totallevel = int(grade) + self.level + 10
elif job == "M":
self.totallevel = int(grade) + self.level + 16
else:
if job == "E" and self.totallevel <= 10:
self.grade = self.totallevel
elif job == "T" and 10 < self.totallevel <= 16:
self.grade = self.totallevel - 10
elif job == "T" and self.totallevel <= 10:
self.job = "E"
self.grade = 10
elif job == "M" and self.totallevel <= 10:
self.job = "E"
self.grade = 10
elif job == "M" and 10 < self.totallevel <= 16:
self.job = "T"
self.grade = 6
elif job == "M" and 16 < self.totallevel <= 19:
self.grade = self.totallevel - 10 - 6
return self.job, self.grade
class Manager(gradecheckMixin, salaryMixin, RegradeMixin):
Managerdict = {"E":{}, "T":{}, "M":{}}
uid = 10000
def get_name(self):
self.name = input("姓名:")
return self.name
def get_job(self):
self.job = input("职位(E.普通员工;T.组长;M.经理):")
return self.job
def get_year(self):
self.year = input("工龄:")
return self.year
def get_grade(self):
self.grade = input("级别:")
super().gradecheck(self.job, self.grade)
return self.grade
def get_salary(self):
super().salarycompute(self.job, self.grade, self.year)
return self.salary
def record(self):
self.Managerdict[self.job][self.uid] = Attribute(self.name, self.job, self.grade, self.year, self.salary)
print(f"录入成功!姓名:{self.name}, 工号:{self.uid}, 薪资:{self.salary}", "\n")
self.uid += 1
def inquire_uid(self):
self.__uid = int(input("请输入工号:"))
for i in self.Managerdict.values():
if i.get(self.__uid) == None:
continue
else:
print("姓名:", i.get(self.__uid).name)
print("职位:", i.get(self.__uid).job)
print("级别:", i.get(self.__uid).grade)
print("工龄:", i.get(self.__uid).year)
print("薪资:", i.get(self.__uid).salary, "\n")
if self.Managerdict["E"].get(self.__uid) == self.Managerdict["T"].get(self.__uid) == self.Managerdict["M"].get(self.__uid) == None:
print("该工号不存在!", "\n")
def inquire_job(self):
self.__job = input("职位(E.普通员工;T.组长;M.经理):")
if len(self.Managerdict[self.__job]) != 0:
print(f"目前普通员工共有{len(self.Managerdict[self.__job])}人:")
for i in self.Managerdict[self.__job]:
print(f"{i} - {self.Managerdict[self.__job][i].name}", "\n")
else:
self.__dict = {"E":"普通员工", "T":"组长", "M":"经理"}
print(f"目前公司没有{self.__dict[self.__job]}!", "\n")
def upgrade(self):
self.__uid = int(input("请输入工号:"))
for i in self.Managerdict.values():
if i.get(self.__uid):
print(f"{i.get(self.__uid).name},工号:{self.__uid}, 当前职位:{i.get(self.__uid).job + str(i.get(self.__uid).grade)},当前薪资:{i.get(self.__uid).salary}")
self.fron_salary = i.get(self.__uid).salary
super().up_job_grade(i.get(self.__uid).job, i.get(self.__uid).grade)
i[self.__uid].job = self.job
i[self.__uid].grade = self.grade
super().salarycompute(i.get(self.__uid).job, i.get(self.__uid).grade, i.get(self.__uid).year)
i[self.__uid].salary = self.salary
self.now_salary = i.get(self.__uid).salary
self.__updatedict = i.pop(self.__uid)
self.Managerdict[self.job][self.__uid] = Attribute(self.__updatedict.name, self.__updatedict.job, self.__updatedict.grade, self.__updatedict.year, self.__updatedict.salary)
print("升级成功!")
for j in self.Managerdict.values():
if j.get(self.__uid):
print(f"{j.get(self.__uid).name},工号:{self.__uid}, 升级后职位:{j.get(self.__uid).job + str(j.get(self.__uid).grade)},升级后薪资:{j.get(self.__uid).salary}({(self.now_salary-self.fron_salary):+})", "\n")
break
def downgrade(self):
self.__uid = int(input("请输入工号:"))
for i in self.Managerdict.values():
if i.get(self.__uid) :
print(f"{i.get(self.__uid).name},工号:{self.__uid}, 当前职位:{i.get(self.__uid).job + str(i.get(self.__uid).grade)},当前薪资:{i.get(self.__uid).salary}")
self.fron_salary = i.get(self.__uid).salary
super().down_job_grade(i.get(self.__uid).job, i.get(self.__uid).grade)
i[self.__uid].job = self.job
i[self.__uid].grade = self.grade
super().salarycompute(i.get(self.__uid).job, i.get(self.__uid).grade, i.get(self.__uid).year)
i[self.__uid].salary = self.salary
self.now_salary = i.get(self.__uid).salary
self.__updatedict = i.pop(self.__uid)
self.Managerdict[self.job][self.__uid] = Attribute(self.__updatedict.name, self.__updatedict.job, self.__updatedict.grade, self.__updatedict.year, self.__updatedict.salary)
print("降级成功!")
for j in self.Managerdict.values():
if j.get(self.__uid):
print(f"{j.get(self.__uid).name},工号:{self.__uid}, 降级后职位:{j.get(self.__uid).job + str(j.get(self.__uid).grade)},降级后薪资:{j.get(self.__uid).salary}({(self.now_salary-self.fron_salary):+})", "\n")
break
def main():
m = Manager()
while True:
command = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
if command == "1":
m.get_name()
m.get_job()
m.get_year()
m.get_grade()
m.get_salary()
m.record()
elif command == "2":
comand_ = input("1.员工查询;2.职位查询:")
if comand_ == "1":
m.inquire_uid()
else:
m.inquire_job()
elif command == "3":
m.upgrade()
elif command == "4":
m.downgrade()
elif command == "5":
break
main()
|
|