|
|
发表于 2025-3-26 18:14:41
|
显示全部楼层
请回复您的答案^_^
-------- 问答题 --------
第 0 题的答案是:
同一个函数或运算符或方法,面对不同的对象输出的结果也不同
第 1 题的答案是:
同一个方法可以满足不同场景下的不同对象的需求
第 2 题的答案是:
可以
第 3 题的答案是:
如果一只鸟走路像鸭子,叫声也像鸭子,那它就是一只鸭子
第 4 题的答案是:
增强了内聚
第 5 题的答案是:
不属于
-------- 动动手 --------
请将第 0 题的代码写在下方:
listStaff = []
uno = 10000
class Staff:
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 get_year(self):
return self.year
def salary(self):
pass
def addgrade(self,job,grade,currgrade,topgrade,salary):
print("升级成功!")
flag = 0
if currgrade + grade <= topgrade:
self.grade = currgrade + grade
salarys = self.salary() - salary
print(f"{self.name},工号:{self.uid},当前职位:{self.job}{self.grade},升级后薪资:{self.salary()}(+{salarys})")
else:
if job == 'M':
self.grade = topgrade
salarys = self.salary() - salary
print(f"{self.name},工号:{self.uid},当前职位:{self.job}{self.grade},升级后薪资:{self.salary()}(+{salarys})")
else:
flag = 1
return flag
def dscgrade(self,job,grade,currgrade,salary):
print("降级成功!")
flag = 0
if self.grade - grade >= 1:
self.grade = self.grade - grade
salarys = salary - self.salary()
print(f"{each.name},工号:{each.uid},当前职位:{each.job}{each.grade},降级后薪资:{each.salary()}(-{salarys})")
else:
if jobs == 'E':
self.grade = 1
salarys = salary - self.salary()
print(f"{each.name},工号:{each.uid},当前职位:{each.job}{each.grade},降级后薪资:{each.salary()}(-{salarys})")
else:
flag = 1
return flag
class Employee(Staff):
def __init__(self,name,job,grade,year,uid):
super().__init__(name,job,grade,year,uid)
def salary(self):
return 3000 + 500 * self.grade + 50 * self.year
class Teamleader(Staff):
def __init__(self,name,job,grade,year,uid):
super().__init__(name,job,grade,year,uid)
def salary(self):
return 4000 + 800 * self.grade + 100 * self.year
class Manager(Staff):
def __init__(self,name,job,grade,year,uid):
super().__init__(name,job,grade,year,uid)
def salary(self):
return 5000 + 1000 * (self.grade + self.year)
while(True):
choose = int(input("\n1.录入;2.查询;3.升级;4.降级;5.退出:"))
if choose == 1:
name = input("姓名:")
job = input("职位(E.普通员工;T.组长;M.经理):")
year = int(input("工龄:"))
grade = int(input("级别:"))
if job =='E' and grade > 10:
grade = int(input("该职位最高级别为10,请重新录入级别:"))
if job =='T' and grade > 6:
grade = int(input("该职位最高级别为6,请重新录入级别:"))
if job =='M' and grade > 3:
grade = int(input("该职位最高级别为3,请重新录入级别:"))
salary = 0
if job == 'E':
e = Employee(name,job,grade,year,uno)
salary = e.salary()
listStaff.append(e)
if job == 'T':
t = Teamleader(name,job,grade,year,uno)
salary = t.salary()
listStaff.append(t)
if job == 'M':
m = Manager(name,job,grade,year,uno)
salary = m.salary()
listStaff.append(m)
print(f"录入成功!姓名:{name},工号:{uno},薪资:{salary}")
uno += 1
if choose == 2:
j = int(input("1.员工查询;2.职位查询:"))
if j == 1:
sno = int(input("请输入工号:"))
flag = 0
for each in listStaff:
if each.get_uid() == sno:
flag = 1
print(f"姓名:{each.get_name()}")
print(f"职位:{each.get_job()}")
print(f"级别:{each.get_grade()}")
print(f"工龄:{each.get_year()}")
print(f"薪资:{each.salary()}")
if flag == 0:
print("该工号不存在!")
if j == 2:
jobs = input("职位(E.普通员工;T.组长;M.经理):")
listuid = []
listname = []
for each in listStaff:
if each.get_job() == jobs:
listuid.append(each.get_uid())
listname.append(each.get_name())
if len(listuid) == 0:
if jobs == 'E':
print("目前公司没有员工!")
if jobs == 'T':
print("目前公司没有组长!")
if jobs == 'M':
print("目前公司没有经理!")
else:
if jobs == 'E':
print(f"目前普通员工共有{len(listuid)}人")
if jobs == 'T':
print(f"目前组长共有{len(listuid)}人")
if jobs == 'M':
print(f"目前经理共有{len(listuid)}人")
for i in range(len(listuid)):
print(f"{listuid[i]} - {listname[i]}")
if choose == 3:
sno = int(input("请输入工号:"))
for each in listStaff:
if each.get_uid() == sno:
print(f"{each.get_name()},工号:{each.get_uid()},当前职位:{each.get_job()}{each.get_grade()},当前薪资:{each.salary()}")
up = int(input("请输入需要增加的级数:"))
if each.get_job() == 'E':
flag = each.addgrade('E',up,each.get_grade(),10,each.salary())
if flag == 1:
index = listStaff.index(each)
t = Teamleader(each.get_name(),'T',1,each.get_year(),each.get_uid())
salary = t.salary() - each.salary()
print(f"{t.get_name()},工号:{t.get_uid()},当前职位:{t.get_job()}{t.get_grade()},升级后薪资:{t.salary()}(+{salary})")
listStaff[index] = t
if each.get_job() == 'T':
flag = each.addgrade('T',up,each.get_grade(),6,each.salary())
if flag == 1:
index = listStaff.index(each)
m = Manager(each.get_name(),'M',1,each.get_year(),each.get_uid())
salary = m.salary() - each.salary()
print(f"{m.get_name()},工号:{m.get_uid()},当前职位:{m.get_job()}{m.get_grade()},升级后薪资:{m.salary()}(+{salary})")
listStaff[index] = m
if each.get_job() == 'M':
flag = each.addgrade('M',up,each.get_grade(),3,each.salary())
if choose == 4:
sno = int(input("请输入工号:"))
for each in listStaff:
if each.get_uid() == sno:
print(f"{each.get_name()},工号:{each.get_uid()},当前职位:{each.get_job()}{each.get_grade()},当前薪资:{each.salary()}")
dec = int(input("请输入需要减少的级数:"))
if each.get_job() == 'E':
flag = each.dscgrade('E',dec,each.get_grade(),each.salary())
if each.get_job() == 'T':
flag = each.dscgrade('T',dec,each.get_grade(),each.salary())
if flag == 1:
index = listStaff.index(each)
e = Employee(each.get_name(),'E',10,each.get_year(),each.get_uid())
salary = each.salary() - e.salary()
print(f"{e.get_name()},工号:{e.get_uid()},当前职位:{e.get_job()}{e.get_grade()},降级后薪资:{e.salary()}(-{salary})")
listStaff[index] = e
if each.get_job() == 'M':
flag = each.dscgrade('M',dec,each.get_grade(),each.salary())
if flag == 1:
index = listStaff.index(each)
t = Teamleader(each.get_name(),'T',6,each.get_year(),each.get_uid())
salary = each.salary() - t.salary()
print(f"{t.get_name()},工号:{t.get_uid()},当前职位:{t.get_job()}{t.get_grade()},降级后薪资:{t.salary()}(-{salary})")
listStaff[index] = t
if choose == 5:
break
|
|