|
|
发表于 2023-12-5 22:05:41
|
显示全部楼层
0.python中的+和*遇到不同的类型会执行不同的运算
1.通过改变不同的场景,用同一种方法、函数、对象来实现不同的效果,可以显著减少代码的复杂程度
2.可以
3.“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”
4.降低了耦合?
5.不是
0.
class Staff:
def __init__(self,name,grade,year,uid):
self.name = name
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 get_year(self):
return self.year
class Employee(Staff):
member = []
def __init__(self,name,grade,year,uid):
self.job = "Employee"
grade = "E" + str(grade)
super().__init__(name,grade,year,uid)
Employee.member += [self.uid]
def salary(self):
return 3000 + 500 * int(self.grade[1:]) + 50 * self.year
class Teamleader(Staff):
member = []
def __init__(self,name,grade,year,uid):
self.job = "Teamleader"
grade = "T" + str(grade)
super().__init__(name,grade,year,uid)
Teamleader.member += [self.uid]
def salary(self):
return 4000 + 800 * int(self.grade[1:]) + 100 * self.year
class Manager(Staff):
member = []
def __init__(self,name,grade,year,uid):
self.job = "Manager"
grade = "M" + str(grade)
super().__init__(name,grade,year,uid)
Manager.member += [self.uid]
def salary(self):
return 5000 + 1000 * (int(self.grade[1:]) + self.year)
class Manage:
def __init__(self):
self.staff = dict()
self.uid = 10000
def program(self):
ins = 0
while ins != '5':
ins = input("\n1.录入;2.查询;3.升级;4.降级;5.退出:")
if ins == '1':
self.enter()
elif ins == '2':
self.search()
elif ins == '3':
self.upgrade()
elif ins == '4':
self.downgrade()
elif ins != "5":
print("请输入正确的指令")
def confirm_uid(self):
uid = int(input("请输入工号:"))
if not self.staff.get(uid):
print("该工号不存在!")
return 0
else:
return uid
def confirm_job(self):
job = input("职位(E.普通员工;T.组长;M.经理):")
while job not in('E','T','M'):
print("请输入正确的指令")
job = input("职位(E.普通员工;T.组长;M.经理):")
return job
def enter(self):
name = input("姓名:")
job = self.confirm_job()
year = int(input("工龄:"))
if job == "E":
grade = int(input("级别:"))
while grade > 10:
grade = int(input("该职位最高级别为10,请重新录入级别:"))
self.staff[self.uid] = Employee(name,grade,year,self.uid)
elif job == "T":
grade = int(input("级别:"))
while grade > 6:
grade = int(input("该职位最高级别为6,请重新录入级别:"))
self.staff[self.uid] = Teamleader(name,grade,year,self.uid)
else:
grade = int(input("级别:"))
while grade > 3:
grade = int(input("该职位最高级别为3,请重新录入级别:"))
self.staff[self.uid] = Manager(name,grade,year,self.uid)
print(f"录入成功!姓名:{name},工号:{self.uid},薪资:{self.staff[self.uid].salary()}")
self.uid += 1
def search(self):
ins = input("1.员工查询;2.职位查询:")
if ins == '1':
uid = self.confirm_uid()
if uid:
print(f"姓名:{self.staff[uid].name}\n职位:{self.staff[uid].job}\n级别:{self.staff[uid].grade}\n工龄:{self.staff[uid].year}\n薪资:{self.staff[uid].salary()}")
elif ins == '2':
job = self.confirm_job()
if job == "E":
job = "普通员工"
member = Employee.member
elif job == "T":
job = "组长"
member = Teamleader.member
else:
job = "经理"
member = Manager.member
if len(member) != 0:
print(f"目前{job}共有{len(member)}人")
for each in member:
print(f"{each} - {self.staff[each].name}")
else:
print(f"目前公司没有{job}!")
def upgrade(self):
uid = self.confirm_uid()
if uid:
grade = self.staff[uid].grade
salary = self.staff[uid].salary()
print(f"{self.staff[uid].name},工号:{uid},当前职位:{grade},当前薪资:{self.staff[uid].salary()}")
num = int(input("请输入需要增加的级数:"))
if grade[0] == "E":
if int(grade[1:]) + num <= 10:
self.staff[uid].grade = "E" + str(int(grade[1:])+num)
else:
grade = 1
self.staff[uid] = Teamleader(self.staff[uid].name,grade,self.staff[uid].year,uid)
Employee.member.remove(uid)
elif grade[0] == 'T':
if int(grade[1:]) + num <= 6:
self.staff[uid].grade = "T" + str(int(grade[1:])+num)
else:
grade = 1
self.staff[uid] = Manager(self.staff[uid].name,grade,self.staff[uid].year,uid)
Teamleader.member.remove(uid)
else:
if int(grade[1:]) + num <= 3:
self.staff[uid].grade = "M" + str(int(grade[1:])+num)
else:
print("请输入正确的级数!")
return
print("升级成功!")
print(f"{self.staff[uid].name},工号:{uid},升级后职位:{self.staff[uid].grade},升级后薪资:{self.staff[uid].salary()}(+{self.staff[uid].salary()-salary})")
def downgrade(self):
uid = self.confirm_uid()
if uid:
grade = self.staff[uid].grade
salary = self.staff[uid].salary()
print(f"{self.staff[uid].name},工号:{uid},当前职位:{grade},当前薪资:{self.staff[uid].salary()}")
num = int(input("请输入需要增加的级数:"))
if grade[0] == "E":
if int(grade[1:]) - num > 0:
self.staff[uid].grade = "E" + str(int(grade[1:])-num)
else:
print("请输入正确的级数!")
return
elif grade[0] == 'T':
if int(grade[1:]) - num > 0:
self.staff[uid].grade = "T" + str(int(grade[1:])-num)
else:
grade = 6
self.staff[uid] = Employee(self.staff[uid].name,grade,self.staff[uid].year,uid)
Teamleader.member.remove(uid)
else:
if int(grade[1:]) - num > 0:
self.staff[uid].grade = "E" + str(int(grade[1:])-num)
else:
grade = 6
self.staff[uid] = Teamleader(self.staff[uid].name,grade,self.staff[uid].year,uid)
Manager.member.remove(uid)
print("降级成功!")
print(f"{self.staff[uid].name},工号:{uid},降级后职位:{self.staff[uid].grade},降级后薪资:{self.staff[uid].salary()}(-{salary-self.staff[uid].salary()})")
def main():
manage = Manage()
manage.program() |
|