1
下
查看参考答案
0.o
图一时之快
1
是
洋洋洋洋
动动手:
0、'''企业员工'''
class Person:
name = ''
job = ''
grade = 0
year = 0
uid = 0
def get_uid(self,inname):
c = U.index(inname)
print(f'工号:{U}')
def get_name(self,inuid):
c = U.index(inuid)
print(f'姓名:{N}')
def get_job(self,inuid):
c = U.index(inuid)
print(f'职位:{J}')
def get_grade(self,inuid):
c = U.index(inuid)
print(f'级别:{G}')
def get_year(self,inuid):
c = U.index(inuid)
print(f'工龄:{A}')
def salary(self):
pass
class Employee(Person):
def __init__(self,name,job,age,grade):
self.name = name
self.job = job
self.age = age
self.grade = grade
def salary(self):
return 3000 + 500 * self.grade + 50 * self.age
class Teamleader(Person):
def __init__(self,name,job,age,grade):
self.name = name
self.job = job
self.age = age
self.grade = grade
def salary(self):
return 4000 + 800 * self.grade + 100 * self.age
class Manager(Person):
def __init__(self,name,job,age,grade):
self.name = name
self.job = job
self.age = age
self.grade = grade
def salary(self):
return 5000 + 1000 * (self.grade + self.age)
N = []
J = []
G = []
A = []
U = []
S = []
def main():
i = 10000
j = 0
while True:
num = int(input('1.录入;2.查询;3.升级;4.降级;5.退出:'))
if num == 1:
name = input('姓名:')
job = input('职位(E.普通员工;T.组长;M.经理):')
age = int(input('工龄:'))
grade = int(input('级别:'))
if job == 'E':
while grade > 10:
grade = int(input('该职位最高级别为10,请重新输入:'))
z = Employee(name,job,age,grade)
elif job == 'T':
while grade > 6:
grade = int(input('该职位最高级别为6,请重新输入:'))
z = Teamleader(name,job,age,grade)
elif job == 'M':
while grade > 3:
grade = int(input('该职位最高级别为3,请重新输入:'))
z = Manager(name,job,age,grade)
S.append(z.salary())
N.append(z.name)
A.append(z.age)
J.append(z.job)
G.append(z.grade)
U.append(i)
i += 1
print(S,N,A,J,G,U)
print(f'录入成功!姓名:{N},工号:{U},薪资:{S}')
j += 1
elif num == 2:
num2 = int(input('1.员工查询;2.职位查询:'))
if num2 == 1:
uid = int(input('请输入工号:'))
if U.count(uid) == 0:
print('该工号不存在!')
continue
Person().get_name(uid)
Person().get_job(uid)
Person().get_grade(uid)
Person().get_year(uid)
if G == 'E':
print('薪资:',Employee().salary())
elif G == 'T':
print('薪资:',Teamleader().salary())
elif G == 'M':
print('薪资:',Manager().salary())
elif num2 == 2:
jobin = input('职位(E.普通员工;T.组长;M.经理):')
if J.count(jobin) == 0:
print('输入错误!')
continue
if jobin == 'M':
c = J.count(jobin)
q = 0
print(f'目前经理共有{c}人')
while q < len(J):
if J == 'M':
print(U,end = ' ')
print('-',end = ' ')
print(N)
q += 1
elif jobin == 'T':
c = J.count(jobin)
q = 0
print(f'目前组长共有{c}人')
while q < len(J):
if J == 'T':
print(U,end = ' ')
print('-',end = ' ')
print(N)
q += 1
elif jobin == 'E':
c = J.count(jobin)
q = 0
print(f'目前普通员工共有{c}人')
while q < len(J):
if J == 'E':
print(U,end = ' ')
print('-',end = ' ')
print(N)
q += 1
elif num == 3:
pass
elif num == 4:
pass
elif num == 5:
break
问答题:
0、对某些运算符或函数传入不同类型的参数,输出结果经过的操作也不同
1、根据实际情况调整输出
2、可以
3、一只鸟走起来像鸭子、游起来像鸭子、叫起来像鸭子,那么它就是鸭子
4、高内聚
5、不属于
继续加油
抄抄抄
63
1
aaaa
1
动手:
class Staff:
uid_ori = 10000
def __init__(self,name,job,grade,year,uid,salary):
self.name=name
self.job=job
self.grade=grade
self.year=year
self.uid=uid
self.salary=salary
class Enter:#录入
# def __init__(self):
# self.uid_ori = 10000
def get_name(self):
self.name=input('姓名 :')
def get_job(self):
while True:
self.job=input('职位(E.普通员工 T.组长 M.经理) :')
if self.job!='E' and self.job!='T' and self.job!='M':
print ('重新输入!')
continue
break
def get_grade(self):
while True:
self.grade=input('级别 :')
if self.grade.isalpha() or int(self.grade)<=0:
print('重新输入!')
continue
if self.job=='E':
if int(self.grade) >10:
print('该职位最高级别为10,重新输入!')
continue
else:
break
elif self.job=='T':
if int(self.grade) > 6:
print('该职位最高级别为6,重新输入!')
continue
else:
break
elif self.job=='M':
if int(self.grade) > 3:
print('该职位最高级别为3,重新输入!')
continue
else:
break
def get_year(self):
while True:
self.year=input('工龄 :')
if self.year.isdecimal():
break
else:
print('重新输入!')
def get_uid(self):
self.uid=Staff.uid_ori
Staff.uid_ori+=1
def salary(self):
if self.job=='E':
self.salary = 3000+500*int(self.grade)+50*int(self.year)
if self.job=='T':
self.salary = 4000+800*int(self.grade)+100*int(self.year)
if self.job=='M':
self.salary = 5000+1000*(int(self.grade)+int(self.year))
class Query:#查询
def query(self):
while True:
query_judge = False
query=input('1.员工查询 2.职位查询 3.返回 :')
if query=='1':
order_que = input('请输入工号 :')
for item in staff_info:
if int(order_que) == item.uid:
print(f'姓名:{item.name}\n职位:{item.job}\n级别:{item.grade}\n'
f'工龄:{item.year}\n工资:{item.salary}')
query_judge = True
break
if not query_judge:
print('该工号不存在!')
elif query=='2':
job_count = []
order_que = input('请输入职位(E.普通员工 T.组长 M.经理) :')
for item in staff_info:
if order_que == item.job:
job_count.append(item)
print(f'目前该职位共 {len(job_count)} 人')
for item in job_count:
print(f'{item.uid}--{item.name}')
elif query == '3':
break
else:
print('请重输')
class Promotion:#升职
def promotion(self):
while True:
p_uid=input('请输入工号 :')
if p_uid.isdecimal():
for item in staff_info:
if int(p_uid) == item.uid:
print(f'{item.name},工号:{item.uid},'
f'当前职位{item.job}{item.grade},当前薪资:{item.salary}')
while True:
p_grade = input('请输入提升的级数 :')
if p_grade.isdecimal():
new_grade=int(p_grade) + int(item.grade) #暂时这样后期看是否需要转str
if item.job == 'E':
if new_grade>10:
item.job = 'T'
item.grade = '1'
else:
item.grade=new_grade #这里也没转str
elif item.job == 'T':
if new_grade > 6:
item.job = 'M'
item.grade = '1'
else:
item.grade = new_grade
else:
if new_grade>3:
print('升到顶了,再升就功高盖主了!')
item.grade='3'
else:
item.grade=new_grade
if item.job == 'E':
item.salary = 3000 + 500 * int(item.grade) + 50 * int(item.year)
if item.job == 'T':
item.salary = 4000 + 800 * int(item.grade) + 100 * int(item.year)
if item.job == 'M':
item.salary = 5000 + 1000 * (int(item.grade) + int(item.year))
print(f'{item.name},工号:{item.uid},'
f'升级后的职位:{item.job}{item.grade},升级后的薪资:{item.salary}')
break
else:
print('重新输入提升的级数!')
break
else:
print('重新输入工号!')
class Demoted: #降职
def demoted(self):
while True:
d_uid=input('请输入工号 :')
if d_uid.isdecimal():
for item in staff_info:
if int(d_uid) == item.uid:
print(f'{item.name},工号:{item.uid},'
f'当前职位{item.job}{item.grade},当前薪资:{item.salary}')
while True:
p_grade = input('请输入降低的级数 :')
if p_grade.isdecimal():
new_grade=int(item.grade) - int(p_grade) #暂时这样后期看是否需要转str
if item.job == 'M':
if new_grade <= 0:
item.job = 'T'
item.grade = '6'
else:
item.grade=new_grade #这里也没转str
elif item.job == 'T':
if new_grade <= 0:
item.job = 'E'
item.grade = '10'
else:
item.grade = new_grade
else:
if new_grade <= 0:
print('降到底了,可以滚蛋了!')
item.grade='1'
else:
item.grade=new_grade
if item.job == 'E':
item.salary = 3000 + 500 * int(item.grade) + 50 * int(item.year)
if item.job == 'T':
item.salary = 4000 + 800 * int(item.grade) + 100 * int(item.year)
if item.job == 'M':
item.salary = 5000 + 1000 * (int(item.grade) + int(item.year))
print(f'{item.name},工号:{item.uid},'
f'降级后的职位:{item.job}{item.grade},降级后的薪资:{item.salary}')
break
else:
print('重新输入降低的级数!')
break
else:
print('重新输入工号!')
staff_info=[] #员工信息列表
def main():
while True:
order = input('1.录入 2.查询 3.升级 4.降级 5.退出 :')
if order == '1':
enter = Enter()
enter.get_name()
enter.get_job()
enter.get_grade()
enter.get_year()
enter.get_uid()
print(enter.uid)
enter.salary()
staff = Staff(enter.name, enter.job, enter.grade, enter.year, enter.uid, enter.salary)
staff_info.append(staff)
print(f'录入成功 ! 姓名:{staff.name},工号:{staff.uid},薪资:{staff.salary}')
pass
elif order == '2':
query=Query()
query.query()
elif order == '3':
promotion=Promotion()
promotion.promotion()
elif order == '4':
demoted=Demoted()
demoted.demoted()
elif order == '5':
break
else:
print('请重输!')
main()
1
本帖最后由 FoolZenYin_甫寸 于 2023-10-30 15:53 编辑
0.只要符合调用的方法名,不管类长啥样都给调用运行多态在编程是一个非常重要的概念,它是指同一个运算符、函数或者对象在不同的场景下,具有不同的作用效果
1.只要符合调用的方法名,不管类长啥样都给调用运行提高代码的灵活性
2.可以的 √
3.有一只鸟他长得想鸭子,跟鸭子一样的翅膀和鸭子一样游泳,那么我们称之为鸭子√
4.降低了耦合,因为只要方法属性名相同即可调用,那么更方便引用调用√
5.不属于,如果是增加了字符串类型还能说明是的,属于函数层面的多态现象。
动动手
#甫寸版权所有嘻嘻#
class Base_info:
def __init__(self, name, job, grade, year, salary):
self.name = name
self.job = job
self.grade = grade
self.year = year
self.salary = salary
class Employee(Base_info):
def __init__(self, name, grade, year):
super().__init__(name, "E", grade, year, 3000 + 500 * int(grade) + 50 * int(year))
class Teamleader(Base_info):
def __init__(self, name, grade, year):
super().__init__(name, "T", grade, year, 4000 + 800 * int(grade) + 100 * int(year))
class Manager(Base_info):
def __init__(self, name, grade, year):
super().__init__(name, "M", grade, year, 5000 + 1000 * (int(grade) + int(year)))
class Grade_checkMixin:
def grade_check(self, job, grade):
if job == "E":
if int(grade) > 10:
print("超出等级!")
else:
return "pass"
if job == "T":
if int(grade) > 6:
print("超出等级!")
else:
return "pass"
if job == "M":
if int(grade) > 3:
print("超出等级!")
else:
return "pass"
class Program_funtion(Grade_checkMixin):
def __init__(self) :
self.uid = 10000
self.member_data = {}
def intrance(self):
while True:
op = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
if op == "1":
self.check_in()
if op == "2":
self.check_msg()
if op == "3":
self.promotion()
if op == "4":
self.degration()
if op == "5":
break
def check_in(self):
name = input("姓名:")
job = input("职位(E.普通员工;T:组长;M:经理):")
year = input("工龄:")
grade = input("级别:")
while self.grade_check(job, grade) != "pass":
grade = input("请重新输入级别:")
if job == "E":
member = Employee(name, grade, year)
elif job == "T":
member = Teamleader(name, grade, year)
elif job == "M":
member = Manager(name, grade, year)
self.member_data = member
print(f"录入成功!姓名:{name},工号:{self.uid},薪资:{self.member_data.salary}")
self.uid += 1
def get_uid(self):
while True:
uid = int(input("请输入工号:"))
if uid not in self.member_data:
print("该工号不存在!")
else:
break
return uid
def get_name(self, uid):
print(f"姓名:{self.member_data.name}")
def get_job(self, uid):
print(f"职位:{self.member_data.job}")
def get_grade(self, uid):
print(f"级别:{self.member_data.grade}")
def get_year(self, uid):
print(f"工龄:{self.member_data.year}")
def get_salary(self, uid):
print(f"薪资:{self.member_data.salary}")
def check_msg(self):
op_2 = input("1.员工查询;2.职位查询:")
if op_2 == "1":
uid = self.get_uid()
self.get_name(uid)
self.get_job(uid)
self.get_year(uid)
self.get_salary(uid)
if op_2 == "2":
op_3 = input("职位(E.普通员工;T:组长;M:经理):")
if op_3 == "E":
count = 0
for each in self.member_data:
if self.member_data.job == "E":
count += 1
print(f"目前普通员工共有{count}人")
for each in self.member_data:
if self.member_data.job == "E":
print(f"{each} - {self.member_data.name}")
elif op_3 == "T":
count = 0
for each in self.member_data:
if self.member_data.job == "T":
count += 1
print(f"目前普通员工共有{count}人")
for each in self.member_data:
if self.member_data.job == "T":
print(f"{each} - {self.member_data.name}")
if op_3 == "M":
count = 0
for each in self.member_data:
if self.member_data.job == "M":
count += 1
print(f"目前普通员工共有{count}人")
for each in self.member_data:
if self.member_data.job == "M":
print(f"{each} - {self.member_data.name}")
def promotion(self):
pro_uid = int(input("请输入工号:"))
print(f"{self.member_data.name},工号:{pro_uid},当前职位:{self.member_data.job}{self.member_data.grade},当前薪资:{self.member_data.salary}")
rank_up = input("请输入需要增加的级数:")
if self.member_data.job == "E":
if int(self.member_data.grade) + int(rank_up) > 10:
self.member_data.job = "T"
self.member_data.grade = "1"
old_salary = int(self.member_data.salary)
self.member_data.salary = 4000 + 800 * int(self.member_data.grade) + 100 * int(self.member_data.year)
print("升级成功!")
print(f"{self.member_data.name},工号:{pro_uid},升级后职位:{self.member_data.job}{self.member_data.grade},升级后薪资:{self.member_data.salary}(+{self.member_data.salary - old_salary})")
else:
self.member_data.grade = int(self.member_data.grade) + int(rank_up)
old_salary = int(self.member_data.salary)
self.member_data.salary = 3000 + 500 * int(self.member_data.grade) + 50 * int(self.member_data.year)
print("升级成功!")
print(f"{self.member_data.name},工号:{pro_uid},升级后职位:{self.member_data.job}{self.member_data.grade},升级后薪资:{self.member_data.salary}(+{self.member_data.salary - old_salary})")
elif self.member_data.job == "T":
if int(self.member_data.grade) + int(rank_up) > 6:
self.member_data.job = "M"
self.member_data.grade = "1"
old_salary = int(self.member_data.salary)
self.member_data.salary = 5000 + 1000 * (int(self.member_data.grade) + int(self.member_data.year))
print("升级成功!")
print(f"{self.member_data.name},工号:{pro_uid},升级后职位:{self.member_data.job}{self.member_data.grade},升级后薪资:{self.member_data.salary}(+{self.member_data.salary - old_salary})")
else:
self.member_data.grade = int(self.member_data.grade) + int(rank_up)
old_salary = int(self.member_data.salary)
self.member_data.salary = 4000 + 800 * int(self.member_data.grade) + 100 * int(self.member_data.year)
print("升级成功!")
print(f"{self.member_data.name},工号:{pro_uid},升级后职位:{self.member_data.job}{self.member_data.grade},升级后薪资:{self.member_data.salary}(+{self.member_data.salary - old_salary})")
elif self.member_data.job == "M":
if int(self.member_data.grade) + int(rank_up) > 3:
print("没得再升啦,再升你来当老板!")
else:
self.member_data.grade = int(self.member_data.grade) + int(rank_up)
old_salary = int(self.member_data.salary)
self.member_data.salary = 5000 + 1000 * (int(self.member_data.grade) + int(self.member_data.year))
print("升级成功!")
print(f"{self.member_data.name},工号:{pro_uid},升级后职位:{self.member_data.job}{self.member_data.grade},升级后薪资:{self.member_data.salary}(+{self.member_data.salary - old_salary})")
def degration(self):
deg_uid = int(input("请输入工号:"))
print(f"{self.member_data.name},工号:{deg_uid},当前职位:{self.member_data.job}{self.member_data.grade},当前薪资:{self.member_data.salary}")
rank_down = input("请输入需要降级的级数:")
if self.member_data.job == "E":
if int(self.member_data.grade) - int(rank_down) <= 0:
print("没得再降啦,再降只能炒掉啦!")
else:
self.member_data.grade = int(self.member_data.grade) - int(rank_down)
old_salary = int(self.member_data.salary)
self.member_data.salary = 3000 + 500 * int(self.member_data.grade) + 50 * int(self.member_data.year)
print("降级成功!")
print(f"{self.member_data.name},工号:{deg_uid},降级后职位:{self.member_data.job}{self.member_data.grade},降级后薪资:{self.member_data.salary}(-{old_salary - self.member_data.salary})")
elif self.member_data.job == "T":
if int(self.member_data.grade) - int(rank_down) <= 0:
self.member_data.job = "E"
self.member_data.grade = "10"
old_salary = int(self.member_data.salary)
self.member_data.salary = 3000 + 500 * 10 + 50 * int(self.member_data.year)
print("降级成功!")
print(f"{self.member_data.name},工号:{deg_uid},降级后职位:{self.member_data.job}{self.member_data.grade},降级后薪资:{self.member_data.salary}(-{old_salary - self.member_data.salary})")
else:
self.member_data.grade = int(self.member_data.grade) - int(rank_down)
old_salary = int(self.member_data.salary)
self.member_data.salary = 4000 + 800 * int(self.member_data.grade) + 100 * int(self.member_data.year)
print("降级成功!")
print(f"{self.member_data.name},工号:{deg_uid},降级后职位:{self.member_data.job}{self.member_data.grade},降级后薪资:{self.member_data.salary}(-{old_salary - self.member_data.salary})")
elif self.member_data.job == "M":
if int(self.member_data.grade) - int(rank_down) < 0:
self.member_data.job = "T"
self.member_data.grade = "6"
old_salary = int(self.member_data.salary)
self.member_data.salary = 4000 + 800 * 6 + 100 * int(self.member_data.year)
print("降级成功!")
print(f"{self.member_data.name},工号:{deg_uid},降级后职位:{self.member_data.job}{self.member_data.grade},降级后薪资:{self.member_data.salary}(-{old_salary - self.member_data.salary})")
else:
self.member_data.grade = int(self.member_data.grade) - int(rank_down)
old_salary = int(self.member_data.salary)
self.member_data.salary = 5000 + 1000 * (int(self.member_data.grade) + int(self.member_data.year))
print("降级成功!")
print(f"{self.member_data.name},工号:{deg_uid},降级后职位:{self.member_data.job}{self.member_data.grade},降级后薪资:{self.member_data.salary}(-{old_salary - self.member_data.salary})")
def main():
p = Program_funtion()
p.intrance()
main()√