你的代码有多个问题,比如未初始化的变量、逻辑错误等。下面是主要问题和修正建议:
1. 在类 `Manage` 的构造函数中,`self.joblist` 没有正确初始化。
2. `self.members` 的赋值过程中,会覆盖之前存储的成员信息。
3. 在方法 `get_member` 中,存在 `self.joblist ==` 这样的语法错误。
4. `upgrade_member` 和 `downgrade_member` 中对级别和职位的更新没有同步薪资。
5. `get_member` 中无法正确访问 `self.members` 的成员信息。
这里是一个修正后的版本:
class Member:
def __init__(self, name, job, grade, year, uid, asalary):
self.name = name
self.job = job
self.grade = grade
self.year = year
self.uid = uid
self.asalary = asalary
class Mixin:
def confirm_grade(self, job, grade):
max_grade = {"E": 10, "T": 6, "M": 3}
while int(grade) > max_grade.get(job, 10):
grade = input(f"该职位最高级别为{max_grade[job]},请重新录入级别:")
return grade
def salary(self, job, grade, year):
if job == 'E':
return 3000 + 500 * int(grade) + 50 * int(year)
elif job == 'T':
return 4000 + 800 * int(grade) + 100 * int(year)
elif job == 'M':
return 5000 + 1000 * (int(grade) + int(year))
return 0
class Manage(Mixin):
def __init__(self):
self.members = {}
self.uid = 10000
def welcome(self):
while True:
ins = input("\n1.录入;2.查询;3.升级;4.降级;5.退出:")
if ins == '1':
self.add_member()
elif ins == '2':
self.get_member()
elif ins == '3':
self.upgrade_member()
elif ins == '4':
self.downgrade_member()
elif ins == '5':
break
def add_member(self):
name = input("姓名:")
job = input("职位(E.普通员工;T.组长;M.经理):")
year = input("工龄:")
grade = input("级别:")
grade = self.confirm_grade(job, grade)
uid = self.uid
self.uid += 1
asalary = self.salary(job, grade, year)
self.members[uid] = Member(name, job, grade, year, uid, asalary)
print(f"录入成功!姓名:{name},工号:{uid},薪资:{asalary}")
def get_member(self):
type_ = int(input("1.员工查询;2.职位查询:"))
if type_ == 1:
uid = int(input("请输入员工号:"))
member = self.members.get(uid)
if not member:
print("该工号不存在!")
else:
print(f"姓名:{member.name}")
print(f"职位:{member.job}")
print(f"级别:{member.grade}")
print(f"工龄:{member.year}")
print(f"薪资:{member.asalary}")
elif type_ == 2:
jobins = input("职位(E.普通员工;T.组长;M.经理):")
joblist = [member for member in self.members.values() if member.job == jobins]
if not joblist:
print(f"目前公司没有{jobins}职位的人!")
else:
print(f"{jobins}职位共有{len(joblist)}人:")
for member in joblist:
print(f"{member.uid}-{member.name}")
def upgrade_member(self):
uid = int(input("请输入工号:"))
member = self.members.get(uid)
if not member:
print("该工号不存在!")
return
up = int(input("请输入需要增加的级数:"))
member.grade += up
if member.job == 'E' and member.grade > 10:
member.job, member.grade = 'T', 1
elif member.job == 'T' and member.grade > 6:
member.job, member.grade = 'M', 1
member.asalary = self.salary(member.job, member.grade, member.year)
print("升级成功!")
print(f"{member.name}, 工号:{member.uid},升级后职位{member.job}{member.grade},升级后薪资:{member.asalary}")
def downgrade_member(self):
uid = int(input("请输入工号:"))
member = self.members.get(uid)
if not member:
print("该工号不存在!")
return
down = int(input("请输入需要减少的级数:"))
member.grade -= down
if member.job == 'M' and member.grade <= 0:
member.job, member.grade = 'T', 6
elif member.job == 'T' and member.grade <= 0:
member.job, member.grade = 'E', 10
member.asalary = self.salary(member.job, member.grade, member.year)
print("降级成功!")
print(f"{member.name}, 工号:{member.uid},降级后职位{member.job}{member.grade},降级后薪资:{member.asalary}")
manage = Manage()
manage.welcome()
修复后的代码更安全,并解决了逻辑问题,你可以测试看看是否符合预期需求!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |