|
|
发表于 2024-1-25 16:40:14
|
显示全部楼层
0.通过类的定义区分作用
1.可以根据参数执行不同的方法
2.是多态
3.丑小鸭装白天鹅?
4.降低耦合?
5.不是
动动手:
class Members:
def __init__(self,name,job,grade,year,uid,salary,jobname):
self.name=name
self.job=job
self.grade=grade
self.year=year
self.uid=uid
self.salary=self.get_salary()
self.jobname=self.get_jobname()
def get_salary(self):
if self.job=='E':
self.salary=3000+500*self.grade+50*self.year
elif self.job=='T':
self.salary=4000+800*self.grade+100*self.year
self.jobname="组长"
elif self.job=='M':
self.salary=5000+1000*self.grade+1000*self.year
return self.salary
def get_jobname(self):
if self.job=='E':
self.jobname="普通员工"
elif self.job=='T':
self.jobname="组长"
elif self.job=='M':
self.jobname="经理"
return self.jobname
class Employee(Members):
def __init__(self,name,job,grade,year,uid,salary=None):
super().__init__(name,job,grade,year,uid,salary=None)
self.job="E"
self.jobname="普通员工"
def salary(self):
super().salary()
class Manage():
def __init__(self):
self.memebers={}
self.uid=10000
self.Job=['E','T','M']
def manage(self):
a='0'
while a!="5":
print()
a=input("1.录入;2.查询;3.升级;4.降级;5.退出:")
if a=="1":
self.getin()
elif a=="2":
self.find()
elif a=="3":
self.up()
elif a=='4':
self.down()
def creategrade(self,job,grade):
if job=='E':
if grade>10:
return [False,10]
elif grade<1:
return [False,0]
else:
return [True,10]
elif job=='T':
if grade>6:
return [False,6]
elif grade<1:
return [False,10]
else:
return [True,6]
elif job=='M':
if grade>3:
return [False,3]
elif grade<1:
return [False,6]
else:
return [True,3]
def getin(self):
name=input("姓名:")
job=input("职位(E.普通员工;T.组长;M.经理)")
while job!="E" and job!="T" and job!="M":
job=input("请按照对应字母录入职位(E.普通员工;T.组长;M.经理)")
year=int(input("工龄:"))
grade=int(input("级别:"))
gg=self.creategrade(job,grade)
while not gg[0]:
grade=int(input(f"该职位最高级别为{gg[1]},请重新录入级别:"))
gg=self.creategrade(job,grade)
self.memebers[self.uid]=Members(name,job,grade,year,self.uid,0,"无")
print(f"录入成功!姓名:{name},工号:{self.uid},薪资:{self.memebers[self.uid].salary}")
self.uid+=1
def find(self):
tt=input("1.员工查询;2.职位查询:")
if tt=='1':
uid=int(input("请输入工号:"))
if uid>self.uid:
print("该工号不存在")
else:
print(f"姓名:{self.memebers[uid].name}")
print(f"职位:{self.memebers[uid].job}")
print(f"级别:{self.memebers[uid].grade}")
print(f"工龄:{self.memebers[uid].year}")
print(f"薪资:{self.memebers[uid].salary}")
elif tt=="2":
job=input("职位(E.普通员工;T.组长;M.经理)")
count=0
x=[]
for i in range(10000,10000+len(self.memebers)):
if self.memebers[i].job==job:
jobname=self.memebers[i].jobname
count+=1
x.append(i)
print(x)
if count==0:
print("公司目前没有")
else:
print(f"目前{jobname}有{count}人:")
for each in x:
print(f"{each}-{self.memebers[each].name}")
else:
print("输入错误!")
def up(self):
uid=int(input("请输入工号:"))
sign=0
if uid>self.uid:
print("该工号不存在")
else:
print(f"{self.memebers[uid].name},工号:{uid},当前职位:{self.memebers[uid].job}{self.memebers[uid].grade},当前薪资:{self.memebers[uid].salary}")
salarybef=self.memebers[uid].salary
change=int(input("请输入需要增加的级数:"))
grade=self.memebers[uid].grade+change
job=self.memebers[uid].job
while not self.creategrade(job,grade)[0]:
if self.Job.index(job)+1<len(self.Job):
grade=grade-self.creategrade(job,grade)[1]
job=self.Job[self.Job.index(job)+1]
sign=1
else:
print("超出职级上限!")
break
else:
if sign==1:
grade=1
self.memebers[uid]=Members(self.memebers[uid].name,job,grade,self.memebers[uid].year,uid,0,"无")
salaryafter=self.memebers[uid].salary
print("升级成功!")
print(f"{self.memebers[uid].name},工号:{uid},升级后职位:{self.memebers[uid].job}{self.memebers[uid].grade},升级后薪资:{salaryafter}({salaryafter-salarybef:+})")
def down(self):
uid=int(input("请输入工号:"))
sign=0
if uid>self.uid:
print("该工号不存在")
else:
print(f"{self.memebers[uid].name},工号:{uid},当前职位:{self.memebers[uid].job}{self.memebers[uid].grade},当前薪资:{self.memebers[uid].salary}")
salarybef=self.memebers[uid].salary
change=int(input("请输入需要降低的级数:"))
grade=self.memebers[uid].grade-change
job=self.memebers[uid].job
while not self.creategrade(job,grade)[0]:
if self.Job.index(job)>0:
grade=grade+self.creategrade(job,grade)[1]-change
job=self.Job[self.Job.index(job)-1]
sign=1
else:
print("超出职级下限!")
break
else:
if sign==1:
grade=self.creategrade(job,100)[1]
self.memebers[uid]=Members(self.memebers[uid].name,job,grade,self.memebers[uid].year,uid,0,"无")
salaryafter=self.memebers[uid].salary
print("降级成功!")
print(f"{self.memebers[uid].name},工号:{uid},升级后职位:{self.memebers[uid].job}{self.memebers[uid].grade},降级后薪资:{salaryafter}({salaryafter-salarybef:+})")
def main():
mm=Manage()
mm.manage()
|
|