课后作业
0.不同的类的方法相同
1.减少代码量的同时,增加代码的功能
2.可以
3.看他的方法是鸭子,他就是鸭子
4.增加了内聚
5.不是
动动手
0.没有做出来,太多不想写了
My_namelist = []
def get_name():
My_name = input('姓名:')
while My_name in My_namelist:
My_name = input('姓名已存在, 请从新输入姓名: ')
My_namelist.append(My_name)
return My_name
def get_job():
returninput('职位 (E.普通员工;T.组长;M.经理) :')
Job_dict = {'E':['普通员工', 10],'T':['组长', 6],'M':['经理', 3]}
def get_grade():
return int(input('级别: '))
def get_year():
return input('工龄:')
def get_uid():
return My_namelist.index() + 1000
def salary(self):
if self.My_job == 'E':
self.My_salary = 3000 + 500 * self.My_grade + 50 * self.My_year
elif self.My_job == 'T':
self.My_salary = 4000 + 800 * self.My_grade + 100 * self.My_year
elif self.My_job == 'M':
self.My_salary = 5000 + 1000 * (self.My_grade + self.My_year)
print(f'录入成功! 姓名: {self.My_name}, 工号:{self.My_uid}, 薪资:{self.My_salary} ')
class Company:#类字典
def __init__(self):
self.My_job = get_job()
self.My_grade = get_grade()
self.My_year = get_year()
self.My_uid = get_uid()
def main():
while True:
My_choose = input('1.录入;2.查询;3.升级;4.降级;5.退出:')
if My_choose == '1':
My_name = get_name()
globals() = Company()
elif My_choose == '2':
My_choose2 = input('1.员工查询;2.职位查询: ')
if My_choose2 == '1':
My_uid = int(input('请输入工号:'))
if (My_uid -1000 ) >= len(My_namelist):
print('该工号不存在!')
else:
My_name = My_namelist
print(f'姓名: {My_name}')
print(f'职位:{globals().My_job}')
print(f'级别:{globals().My_grade}')
print(f'工龄:{globals().My_year}')
print(f'薪资: {salary(globals())}')
else:
My_job = get_job()
counts = 0
dict1 = {}
for each in My_namelist:
ifglobals().My_job == My_job:
counts += 1
dict1.My_uid] = each
if counts == 0:
print('目前公司没有组长')
print(f'目前{Job_dict}共有 {counts} 人:')
for each in dict1:
print(f'{each} - {dict1}')
elif My_choose == '3':
My_uid = int(input('请输入工号:'))
if (My_uid -1000 ) >= len(My_namelist):
print('该工号不存在!')
else:
x = globals()]
print(f'{My_namelist}, 工号: {My_uid}, 当前职位:{x.My_job}{x.My_grade}, 当前薪资{salary(x)}')
Up_grade = int(input('请输入需要增加的级数: '))
if x.My_grade + Up_grade
elif My_choose == '4':
Downgrade()
elif My_choose == '5':
break
main()
1
1
1
答案
问答题
0. 面对不同的对象,同样的方法接口可以实现不同的功能
1. 增加程序的灵活性和可扩展性
2. 可以
3. 如果它走起来像鸭子,叫起来像鸭子,那么它就是鸭子
4. 低耦合
5. 不是
动动手
class Member:
def __init__(self, name, job, grade, year, uid):
self.name = name
self.job = job
self.grade = grade
self.year = year
self.uid = uid
self.wage = 0
def wages(self):
if self.job == 'E':
self.wage = 3000 + 500*int(self.grade) + 50*int(self.year)
if self.job == 'T':
self.wage = 4000 + 800*int(self.grade) + 100*int(self.year)
if self.job =='M':
self.wage = 5000 + 1000*(int(self.grade )+ int(self.year))
return self.wage
class EIM(Member):
def __init__(self):
self.members = {}
self.uid = 10000
# 程序功能入口
def welcome(self):
ins = 0
#print("欢迎使用员工管理系统")
while ins != '5':
ins = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
if ins == '1':
self.enter()
if ins == '2':
self.query()
if ins == '3':
self.upgradation()
if ins == '4':
self.downgrading()
if ins == '5':
pass
#print("感谢使用,再见!")
# 程序功能:创建新卡
def enter(self):
name = input("姓名:")
job = input("职位(E.普通员工;T.组长;M.经理):")
year = int(input('工龄:'))
grade = int(input('级别:'))
member = Member(name, job, grade, year,self.uid)
wage = member.wages()
print(wage)
self.members = member
print(f"录入成功!姓名:{name},工号:{self.uid},薪资:{wage}")
self.uid += 1
#查询
def query(self):
n = int(input('1.员工查询;2.职位查询:'))
if n == 1:
uid = int(input('请输入工号:'))
a = uid in self.members.keys()
if a == False:
print('该工号不存在!')
else:
name = self.members.get(uid).name
job = self.members.get(uid).job
grade = self.members.get(uid).grade
year = self.members.get(uid).year
wage = self.members.get(uid).wage
print(f"姓名:{name} \n 职位:{job} \n 级别:{grade} \n 工龄:{year} \n薪资:{wage}")
if n == 2:
job = input("职位(E.普通员工;T.组长;M.经理):")
number = 0
people = {}
for h in range(10000,self.uid,1):
jobb = self.members.get(h).job
if jobb == job:
people = self.members.get(h).name
number += 1
print(f'目前{job}共有{number}人:')
for key in people:
print(f'{key}-{people}\n')
def upgradation(self):
pass
def downgrading(self):
pass
n=EIM()
n.welcome()
*
1
{:5_109:}
1
0.不同参数不同对待
1.简洁
2.可以
3.不知道
4.降低了炸耦合
5.不属于
.
问答题:
0.什么参数都可以传入,根据传入的不同做出不同的反应
1.好使
2.可以
3.不知道
4.增强内聚
5.应该不算吧
看看
1
1
查看解析
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
elif grade<1:
return
else:
return
elif job=='T':
if grade>6:
return
elif grade<1:
return
else:
return
elif job=='M':
if grade>3:
return
elif grade<1:
return
else:
return
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:
grade=int(input(f"该职位最高级别为{gg},请重新录入级别:"))
gg=self.creategrade(job,grade)
self.memebers=Members(name,job,grade,year,self.uid,0,"无")
print(f"录入成功!姓名:{name},工号:{self.uid},薪资:{self.memebers.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.name}")
print(f"职位:{self.memebers.job}")
print(f"级别:{self.memebers.grade}")
print(f"工龄:{self.memebers.year}")
print(f"薪资:{self.memebers.salary}")
elif tt=="2":
job=input("职位(E.普通员工;T.组长;M.经理)")
count=0
x=[]
for i in range(10000,10000+len(self.memebers)):
if self.memebers.job==job:
jobname=self.memebers.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.name}")
else:
print("输入错误!")
def up(self):
uid=int(input("请输入工号:"))
sign=0
if uid>self.uid:
print("该工号不存在")
else:
print(f"{self.memebers.name},工号:{uid},当前职位:{self.memebers.job}{self.memebers.grade},当前薪资:{self.memebers.salary}")
salarybef=self.memebers.salary
change=int(input("请输入需要增加的级数:"))
grade=self.memebers.grade+change
job=self.memebers.job
while not self.creategrade(job,grade):
if self.Job.index(job)+1<len(self.Job):
grade=grade-self.creategrade(job,grade)
job=self.Job
sign=1
else:
print("超出职级上限!")
break
else:
if sign==1:
grade=1
self.memebers=Members(self.memebers.name,job,grade,self.memebers.year,uid,0,"无")
salaryafter=self.memebers.salary
print("升级成功!")
print(f"{self.memebers.name},工号:{uid},升级后职位:{self.memebers.job}{self.memebers.grade},升级后薪资:{salaryafter}({salaryafter-salarybef:+})")
def down(self):
uid=int(input("请输入工号:"))
sign=0
if uid>self.uid:
print("该工号不存在")
else:
print(f"{self.memebers.name},工号:{uid},当前职位:{self.memebers.job}{self.memebers.grade},当前薪资:{self.memebers.salary}")
salarybef=self.memebers.salary
change=int(input("请输入需要降低的级数:"))
grade=self.memebers.grade-change
job=self.memebers.job
while not self.creategrade(job,grade):
if self.Job.index(job)>0:
grade=grade+self.creategrade(job,grade)-change
job=self.Job
sign=1
else:
print("超出职级下限!")
break
else:
if sign==1:
grade=self.creategrade(job,100)
self.memebers=Members(self.memebers.name,job,grade,self.memebers.year,uid,0,"无")
salaryafter=self.memebers.salary
print("降级成功!")
print(f"{self.memebers.name},工号:{uid},升级后职位:{self.memebers.job}{self.memebers.grade},降级后薪资:{salaryafter}({salaryafter-salarybef:+})")
def main():
mm=Manage()
mm.manage()
1
1