|
|
发表于 2023-8-21 16:01:11
|
显示全部楼层
本帖最后由 张三ccccccc 于 2023-8-22 12:42 编辑
0.当同一个运算符,函数或对象在不同的场景下,具有不同的效果
1.能够见机行事,提高代码的灵活性
2.可以
3.When I see a bird that walks like a duck and swims like a duck and quacks like a duck,
I call that bird a duck.
4.降低耦合
5.是的,属于自定义层面的多态
0.
class Employee:
##员工属性
def __init__(self,name,job,grade,year,uid):
self.name = name
self.job = job
self.grade = grade
self.year = year
self.uid = uid
##员工方法
##获取工号
def get_uid(self):
return self.uid
##获取姓名
def get_name(self):
return self.name
##获取职位
def get_job(self):
return self.job
##获取级别
def get_grade(self):
return self.grade
##设置级别
def set_grade(self,grade):
self.grade = grade
##获取工龄
def get_year(self):
return self.year
##统计并返回工资
def salary(self):
return 3000+500*self.grade+50*self.year
class Teamleader(Employee):
def salary(self):
return 4000+800*self.grade+100*self.year
class Manager(Employee):
def salary(self):
return 5000+1000*(self.grade+self.year)
def main():
result = {}
jobs ={'E':[],'T':[],'M':[]}
uid = 10000
max_E_Grade = 10
max_T_Grade = 6
max_M_Grade = 3
##录入功能
def log_in():
name = input("姓名:")
job =input("职位(E:普通员工;T:组长;M:经理):")
year = int(input("工龄:"))
grade = int(input("级别:"))
nonlocal uid
if job == 'E':
while grade > max_E_Grade:
grade = int(input(f"该职位的最高级别为{max_E_Grade},请重新录入级别(1~10):"))
e = Employee(name,job,grade,year,uid)
result[uid] = e
jobs['E'].append(e)
if job == 'T':
while grade > max_T_Grade:
grade = int(input(f"该职位的最高级别为{max_T_Grade},请重新录入级别(1~6):"))
e = Teamleader(name,job,grade,year,uid)
result[uid] = e
jobs['T'].append(e)
if job == 'M':
while grade > max_M_Grade:
grade = int(input(f"该职位的最高级别为{max_M_Grade},请重新录入级别(1~3):"))
e = Manager(name,job,grade,year,uid)
result[uid] = e
jobs['M'].append(e)
print(f"录入成功!姓名:{name},工号:{uid},工龄{year}")
uid += 1
##查询功能
def Search():
##员工查询
def Employee_search():
uid1 = int(input("请输入工号:"))
if result.get(uid1):
e = result[uid1]##实例化Employee Teamleader Manager 这三个对象中的一个
print(f"姓名:{e.get_name()}\n 职位:{e.get_job()}\n 级别:{e.get_grade()}\n工龄:{e.get_year()} ")
##获取薪资
print(f"薪资:{e.salary()}")
else:
print("该工号不存在!")
##职位查询
def Grade_search():
job = input("职位(E:普通员工;T:组长;M:经理):")
if job =='E':
if jobs['E']:
print(f"目前普通员工共有{len(jobs['E'])}人")
for each in jobs['E']:
print(f"{each.get_uid()}-{each.get_name()}")
else:
print(f"目前公司没有普通员工!")
if job =='T':
if jobs['T']:
print(f"目前普通员工共有{len(jobs['T'])}人")
for each in jobs['T']:
print(f"{each.get_uid()}-{each.get_name()}")
else:
print(f"目前公司没有组长!")
if job =='M':
if jobs['M']:
print(f"目前普通员工共有{len(jobs['M'])}人")
for each in jobs['M']:
print(f"{each.get_uid()}-{each.get_name()}")
else:
print(f"目前公司没有经理!")
search_number = input("1.员工查询;2.职位查询:")
if search_number =="1":
Employee_search()
if search_number == "2":
Grade_search()
##升级功能
def UpGrade():
uid1 = int(input("请输入工号:"))
if result.get(uid1):
e = result[uid1]
print(f"姓名:{e.get_name()},工号:{e.get_uid()},当前职位:{e.get_job()}{e.get_grade()},当前薪资:{e.salary()}")
name = e.get_name()
job = e.get_job()
year = e.get_year()
grade = e.get_grade()
old_salary = e.salary()
uid = e.get_uid()
upgrade_num =int(input("请输入需要增加的级数:"))
if job == 'E':
if grade + upgrade_num > max_E_Grade:
job = 'T'
grade = 1
jobs['E'].remove(e)
e = Teamleader(name,job,grade,year,uid)
jobs['T'].append(e)
result[uid] = e
else:
e.set_grade(grade + upgrade_num)
elif job == 'T':
if grade + upgrade_num > max_T_Grade:
job = 'M'
grade = 1
jobs['T'].remove(e)
e = Manager(name,job,grade,year,uid)
jobs['M'].append(e)
result[uid] = e
else:
e.set_grade(grade + upgrade_num)
elif job == 'M':
if grade + upgrade_num > max_M_Grade:
print("已达到最高级别!")
grade = max_M_Grade
else:
e.set_grade(garde + upgrade_num)
new_salary = e.salary()
print("升级成功!")
print(f"姓名:{e.get_name()},工号:{e.get_uid()},当前职位:{e.get_job()}{e.get_grade()},当前薪资:{e.salary()},+({new_salary-old_salary})")
else:
print("该工号不存在")
##降级
def DownGrade():
uid1 = int(input("请输入工号:"))
if result.get(uid1):
e = result[uid1]
print(f"姓名:{e.get_name()},工号:{e.get_uid()},当前职位:{e.get_job()}{e.get_grade()},当前薪资:{e.salary()}")
name = e.get_name()
job = e.get_job()
year = e.get_year()
grade = e.get_grade()
old_salary = e.salary()
uid = e.get_uid()
upgrade_num =int(input("请输入需要减少的级数:"))
if job == 'E':
if grade - upgrade_num <= 0:
print("已经是最低职位")
grade =1
else:
e.set_grade(grade-upgrade_num)
elif job == 'T':
if grade - upgrade_num <= 0:
job = 'E'
grade = max_E_Grade
jobs['T'].remove(e)
e = Employee(name,job,grade,year,uid)
jobs['E'].append(e)
result[uid] = e
else:
e.set_grade(grade - upgrade_num)
elif job == 'M':
if grade-upgrade_num <1:
job = 'T'
grade = max_T_Grade
jobs['M'].remove(e)
e = Teamleader(name,job,grade,year,uid)
jobs['T'].append(e)
result[uid] = e
else:
e.set_grade(garde - upgrade_num)
new_salary = e.salary()
print("降级成功!")
print(f"姓名:{e.get_name()},工号:{e.get_uid()},当前职位:{e.get_job()}{e.get_grade()},当前薪资:{e.salary()},({new_salary-old_salary)}")
else:
print("该工号不存在")
##主程序
number = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
while number != "5":
if number == "1":
log_in()
if number == "2":
Search()
if number == "3":
UpGrade()
if number == "4":
DownGrade()
number = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
else:
print("欢迎使用本管理程序~") |
|