鱼C论坛

 找回密码
 立即注册
楼主: 小甲鱼

[课后作业] 第063讲:类和对象(VI)| 课后测试题及答案

  [复制链接]
发表于 2024-8-17 16:06:33 | 显示全部楼层
零基础入门学习Python封面
《零基础入门学习Python》
(最新版)
小甲鱼 著
立即购买
请回复您的答案^_^
0,子类可以继承父类方法并重写

1,不同类型的对象,调用同一个方法得到不同的结果

2,是

3,

4,增强内聚

5,不算

class Employee:
    edict = {}
    elist = []
    def __init__(self,name,job,grade,year):
        self.name = name
        self.job = job
        self.grade = grade
        self.year = year
        self.uid = len(self.elist)+10000
        self.total = 0

    def salary_employee(self,job,grade):
        if job == 'E':
            self.total = 3000+500*int(grade)+50*int(year)
        elif self.job == 'T':
            self.total = 4000+800*int(grade)+100*int(year)
        elif self.job == 'M':
            self.total = 5000+1000*(int(grade)+int(year))
        else:
            print("输入有误~")
        return self.total

    def add_employee(self):
        self.salary_employee(self.job,self.grade)
        self.edict[self.uid] = {"姓名":self.name,"职位":self.job,"级别":self.grade,"工龄":self.year,"薪资":self.total}
        self.elist.append(self.edict)
        print(f'录入成功!姓名:{self.name},工号:{self.uid},薪资:{self.total}')
   
    def get_name(self,uid):
        return self.edict[uid]["姓名"]
            
    def get_job(self,uid):
        return self.edict[uid]["职位"]

    def get_grade(self,uid):
        return self.edict[uid]["级别"]

    def get_year(self,uid):
        return self.edict[uid]["工龄"]

    def get_salary(self,uid):
        return self.edict[uid]["薪资"]

    def count_job(self,job):
        count = 0
        select_dict = {}
        for key,value in self.edict.items():
            if value["职位"] == job:
                count +=1
                select_dict[key] = value['姓名']
            match job:
                case 'E':
                    print(f"目前普通员工共有{count}人:")
                case 'T':
                    print(f"目前组长共有{count}人:")  
                case 'M':
                    print(f"目前经理共有{count}人:")
                           
            for key,value in select_dict.items():
                print(f"{key} - {value}")


class LevelMixin(Employee):
     def check_level(self,job,grade,temp_level):
        
        while True:
            if job == 'E' and grade+temp_level >10:
                temp_level = int(input("该职位最高级为10,请输入新的级别:"))
            elif job == 'T' and grade+temp_level > 6:
                temp_level = int(input("该职位最高级为6,请输入新的级别:"))
            elif job == 'M' and grade+temp_level >3:
                temp_level = int(input("该职位最高级为3,请输入新的级别:"))
            elif job == 'E' and   0:
                return grade+temp_level
     def lower_level(self,uid):
          temp_level = int(input("请输入需要减少的级数:"))
          new_level = self.check_level(job,grade,0-temp_level)
          new_salary = self.salary_employee(self.get_job(uid),new_level)
          print("降级成功!")
          print(f"{emp.get_name(uid)},工号:{uid},降级后的职位:{emp.get_job(uid)}{new_level},升级后薪资:{new_salary}(-{emp.get_salary(uid)-new_salary})")
          self.edict[uid]["薪资"] = new_salary
          self.edict[uid]["级别"] = new_level

     def add_level(self,job,grade):
          temp_level = int(input("请输入需要增加的级数:"))
          new_level = self.check_level(job,grade,temp_level)
          new_salary = self.salary_employee(self.get_job(uid),new_level)
          print("升级成功!")
          print(f"{emp.get_name(uid)},工号:{uid},升级后的职位:{emp.get_job(uid)}{new_level},升级后薪资:{new_salary}(+{new_salary-emp.get_salary(uid)})")
          self.edict[uid]["薪资"] = new_salary
          self.edict[uid]["级别"] = new_level               

if __name__ == '__main__':
        while True:
            temp = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
            match temp:
                case '1':
                    name = input("姓名:")
                    job = input("职位:")
                    grade = int(input("级别:"))
                    l = LevelMixin(1,1,1,1)
                    grade = l.check_level(job,grade,0)
                    year = int(input("工龄:"))
                    emp = Employee(name,job,grade,year)
                    emp.add_employee()
                    continue
                case '2':
                    emp = Employee(1,1,1,1)
                    temp = input("1.员工查询;2.职位查询:")
                    match temp:
                        case '1':
                            temp_uid = int(input("请输入工号:"))
                           
                            if temp_uid in emp.edict.keys():
                                print(f"姓名:{emp.get_name(temp_uid)}\n职位:{emp.get_job(temp_uid)}\n级别:{emp.get_grade(temp_uid)}\n工龄:{emp.get_year(temp_uid)}\n薪资:{emp.get_salary(temp_uid)}")
                                continue
                            else:
                                print("该工号不存在!!")
                            continue
                        case '2':
                            job = input("请输入职位(E.普通员工;T.组长;M.经理):")

                            count_job = emp.count_job(job)
                            continue
                        case _:
                              print("输入有误!!!")
                    continue
                case '3':
                    lm = LevelMixin(1,1,1,1)
                    emp = Employee(1,1,1,1)
                    uid = int(input("请输入工号:"))
                    print(f"{emp.get_name(uid)},工号:{uid},当前职位:{emp.get_job(uid)}{emp.get_grade(uid)},当前薪资:{emp.get_salary(uid)}")
                    lm.add_level(emp.get_job(uid),emp.get_grade(uid))
                    continue
                    
                case '4':
                    uid = int(input("请输入工号:"))
                    continue
                    pass
                case '5':
                    break
                case _:
                    print("输入有误!!!")
                    break





-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-16 09:21:12 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:通过传入不同参数, 呈现不同的结果

第 1 题的答案是:代码的重复, 易于维护, 接口统一

第 2 题的答案是: 可以

第 3 题的答案是:

第 4 题的答案是:增强了内聚

第 5 题的答案是:不属于多态

-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-15 08:11:40 From FishC Mobile | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-14 14:34:47 | 显示全部楼层
各位大佬这么写有没有问题,运行起来是正常的
class attribute:
    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):
        if self.job == 'E':
            return 3000 + 500 * int(self.grade) + 50 * int(self.year)
        elif self.job == 'T':
            return 4000 + 800 * int(self.grade) + 100 * int(self.year)
        elif self.job == 'M':
            return 5000 + 1000 * (int(self.grade) + int(self.year))

class StaffMixin:
    def classification(self):
        post = input('职位(E.普通员工 T.组长 M.经理)')
        while post != 'E' and post != 'T' and post != 'M':
            post = input('输入错误,请输入职位代号(大写),E.普通员工 T.组长 M.经理')
        return post

    def up_rank(self,post,num):
        post = post[0] + str(int(post[1:])+int(num))
        if post[0] == 'E' and int(post[1:]) > 10:
            return 'T1'
        elif post[0] == 'T' and int(post[1:]) > 6:
            return 'M1'
        elif post[0] == 'M' and int(post[1:]) > 3:
            return 'M3'
        else:
            return post
    def down_rank(self,post,num):
        post = post[0] + str(int(post[1:])-int(num))
        if post[0] == 'E' and int(post[1:]) < 1:
            return 'E1'
        elif post[0] == 'T' and int(post[1:]) < 1:
            return 'E10'
        elif post[0] == 'M' and int(post[1:]) < 1:
            return 'T6'
        return post



class staff(StaffMixin):
    def __init__(self):
        self.staffs = {}
        self.uid = 10000

    def welcome(self):
        tag = ''
        while tag != '5':
            tag = input('1.录入;2.查询;3.升级;4.降级;5.退出:')
            if tag == '1':
                self.enter()
            elif tag == '2':
                self.inquire()
            elif tag == '3':
                self.up_grade()
            elif tag == '4':
                self.down_grade()

    def grade_dec(self,job):
        grade = input('级别:')
        while 1:
            if job == 'E' and int(grade) > 10:
                grade = input('该职位最高级别为10,请重新输入:')
            elif job == 'T' and int(grade) > 6:
                grade = input('该职位最高级别为6,请重新输入:')
            elif job == 'M' and int(grade) > 3:
                grade = input('该职位最高级别为3,请重新输入:')
            else:
                return grade
    def enter(self):
        name = input("姓名:")
        job = self.classification()
        year = input('工龄:')
        grade = self.grade_dec(job)
        temp = attribute(name, job, grade, year, self.uid)
        self.staffs[self.uid] = temp
        print(f'录入成功!姓名:{self.staffs[self.uid].name},工号:{self.uid},薪资:{self.staffs[self.uid].salary()}')
        self.uid += 1
    def inquire(self):
        tag = input('1.员工查询,2.职位查询:')
        if tag == '1':
            uid = int(input('请输入工号:'))
            if not (uid in self.staffs):
                print('该工号不存在')
                return 0
            print(f'姓名:{self.staffs[uid].get_name()}')
            print(f'职位:{self.staffs[uid].get_job()}')
            print(f'级别:{self.staffs[uid].get_grade()}')
            print(f'工龄:{self.staffs[uid].get_year()}')
            print(f'工资:{self.staffs[uid].salary()}')
        elif tag == '2':
            job = input('职位(E.普通员工,T.组长,M经理):')
            temp = 0
            for i in self.staffs.values():
                if i.get_job() == job:
                    print(f"{i.get_uid()}  -  {i.get_name()}")
                    temp = 1
            if temp == 0:
                if job == 'E':
                    print('目前没有普通员工!')
                elif job == 'T':
                    print('目前没有组长!')
                elif job == 'M':
                    print('目前没有经理!')
    def up_grade(self):
        uid = int(input('请输入工号:'))
        if not (uid in self.staffs):
            print('该工号不存在')
            return 0
        up_num = input('请输入需要增加的级数:')
        old_salary = self.staffs[uid].salary()
        temp = self.up_rank(self.staffs[uid].get_job()+self.staffs[uid].get_grade(),up_num)
        self.staffs[uid].job = temp[0]
        self.staffs[uid].grade = temp[1:]
        print('升级成功')
        print(f'{self.staffs[uid].get_name()},工号{self.staffs[uid].get_uid()},升级后职位{temp},升级后薪资:{self.staffs[uid].salary()}({self.staffs[uid].salary() - old_salary})')
    def down_grade(self):
        uid = int(input('请输入工号:'))
        if not (uid in self.staffs):
            print('该工号不存在')
            return 0
        down_num = input('请输入需要减少的级数:')
        old_salary = self.staffs[uid].salary()
        temp = self.down_rank(self.staffs[uid].get_job()+self.staffs[uid].get_grade(),down_num)
        self.staffs[uid].job = temp[0]
        self.staffs[uid].grade = temp[1:]
        print('降级成功')
        print(f'{self.staffs[uid].get_name()},工号{self.staffs[uid].get_uid()},降级后职位{temp},降级后薪资:{self.staffs[uid].salary()}({self.staffs[uid].salary() - old_salary})')
temp =staff()
temp.welcome()







小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-13 22:30:36 | 显示全部楼层
-------- 动动手 --------

请将第 0 题的代码写在下方:
import time
#记录员工的关键信息
class staff:
    def __init__(self,uid,name,year,grade,job):
        self.uid = uid
        self.name = name
        self.year = year
        self.grade = grade
        self.job = job

class LoggerMixin:
    def log(self,message,filename='log(1).txt'):
            with open(filename,'a') as f:
            f.write(message)

class Manage(LoggerMixin):
    def __init__(self):
        self.staffs = {}
        self.uid = 10000

    def welcome(self):
        ins = 0
        print('欢迎使用公司员工查询系统!')
        while ins!=5:
            ins = ('\n1、录入;2、查询;3、升级;4、降级;5、退出:')
            if ins == '1':
                self.log_in_staff()
            if ins == '2':
                self.look_up_staff()
            if ins == '3':
                self.upgrade_staff()
            if ins == '4':
                self.downgrade_staff()
            if ins == '5':
                print('退出系统!')

   
    def confirm_uid(self):
        uid = int(input('请输入工号:'))
        while not self,uid,get(uid):
            uid = int(input('该卡号不存在,请重新输入:'))
        return uid
    def log_in_staff(self):
        name = input('请输入员工姓名:')
        A = input('职位(E.普通员工;T.组长;M.经理)')
        if A == 'E':
            job = '普通员工'
        elif A == 'T':
            job = '组长'
        elif A == 'M':
            job = '经理'
        year = int(input('请输入工龄:'))
        grade = int(input('请输入级别'))
        regdate = time.localtime()
        staff = staff(self.uid,name,year,grade,job,regdate)
        self.staff[self.uid] = staff
        print(f'员工信息录入成功:{self.uid}->{name},时间是:{time.strftime('%Y-%m-%d %H:%M:%S', regdate)}\n")
        self.uid += 1

    def look_up_staff(self):
        def get_uid(self):
            print(self.uid)
        def get_name(self):
            print(self.name)
        def get_job(self):
            print(self.job)
        def get_year(self):
            print(self.year)
        def get_grade(self):
            print(self.grade)
        def get_salary(self):
            if self.job == '普通员工':
                salary = 3000 + 500 * self.grade + self.year * 50
            if self.job == '组长':
                salary = 4000 + 800 * self.grade + self.year * 100
            if self.job = '经理':
                salary = 5000 + 1000 * (self.grade + self.year)
            return salary

    def upgrade_staff(self):
        num_upgraded = int(input('请输入升级的级数:'))
        if self.job = '普通员工':
            while num_upgraded + self.grade > 10:
                num_upgraded = input('非法录入,请重新输入:')
        if self.job = '组长':
            while num_upgraded + self.grade > 6:
                num_upgraded = input('非法录入,请重新输入:')
        if self.job = '经理':
            while num_upgraded + self.grade > 3:
                num_upgraded = input('非法录入,请重新输入:')

    def downgrade_staff(self):
        if self.job = '普通员工':
            while num_upgraded + self.grade < 1:
                num_upgraded = input('非法录入,请重新输入:')
        if self.job = '组长':
            while num_upgraded + self.grade < 1:
                num_upgraded = input('非法录入,请重新输入:')
        if self.job = '经理':
            while num_upgraded + self.grade < 1:
                num_upgraded = input('非法录入,请重新输入:')


def main():
    s = staff()
    s.welcome()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-13 19:56:39 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:向同一个函数,传递不同参数后,可以实现不同功能.

第 1 题的答案是:
可以增加代码的外部调用灵活度,让代码更加通用,兼容性比较强;多态是调用方法的技巧,不会影响到类的内部设计。
第 2 题的答案是:可以

第 3 题的答案是:

第 4 题的答案是:增强了内聚

第 5 题的答案是:不是
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-13 14:36:22 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-13 09:56:56 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-11 12:22:03 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:
不同对象对应的特性不同
第 1 题的答案是:
可以单独处理各自的内容
第 2 题的答案是:
可以
第 3 题的答案是:
不会
第 4 题的答案是:
高内聚
第 5 题的答案是:
不属于
-------- 动动手 --------

请将第 0 题的代码写在下方:
"""企业员工管理"""

class Employ:
    Employees = []
    Teamleaders = []
    Managers = []

    def __init__(self,name,job):
        if job == "普通员工":
            self.Employees.append(name)
        elif job == "组长":
            self.Teamleaders.append(name)
        elif job == "经理":
            self.Managers.append(name)

    def dispaly(self):
        print(f"普通员工:{self.Employees}")
        print(f"组长:{self.Teamleaders}")
        print(f"经理:{self.Managers}")

class jobs():

    sums = []
    yuangong = []
    dollers = []

    def __init__(self,name,job,grade,year,uid):

        self.yuangong = [name,job,grade,year,uid]
        self.sums.append(self.yuangong)

    def salary(self):

        if self.yuangong[1] == "普通员工":
            doller = 3000 + 500 * int(self.yuangong[2]) + 50 * int(self.yuangong[3])

        elif self.yuangong[1] == "组长":
            doller = 4000 + 800 * int(self.yuangong[2]) + 100 * int(self.yuangong[3])

        else:
            doller = 5000 + 1000 * int(self.yuangong[2]) + 1000 * int(self.yuangong[3])

        self.dollers.append(doller)
        return doller

def main():

    uid = 10000

    while True:
        choose = int(input("1.录入;2.查询;3.升级;4.降级;5.退出:"))

        if choose == 1:
            name = input("姓名:")
            job1 = input("职位(E.普通员工;T.组长;M.经理):")
            if job1 == 'E':
                job = "普通员工"
            elif job1 == 'T':
                job = "组长"
            elif job1 == 'M':
                job = "经理"
            year = int(input("工龄:"))
            grade = int(input("级别:"))

            e = Employ(name,job)
            js = jobs(name,job,grade,year,uid)
            s = js.salary()

            print(f"录入成功!姓名:{name},工号:{uid},薪资:{s}")
            uid = uid + 1

        if choose == 2:
            choose2 = int(input("1.员工查询;2.职位查询:"))
            if choose2 == 1:
                n = -1
                uids = int(input("请输入工号:"))

                if uids <= uid:
                    for i in js.sums:
                        n = n + 1
                        if uids == int(i[4]):
                            print(f"姓名:{i[0]}")
                            print(f"职位:{i[1]}")
                            print(f"级别:{i[2]}")
                            print(f"工龄:{i[3]}")
                            print(f"薪资:{js.dollers[n]}")
                            break
                else:
                    print("该工号不存在!")

            else:
                jobss = input("职位(E.普通员工;T.组长;M.经理):")

                if jobss == 'E':
                    E = e.Employees
                    print(f"普通员工共有{len(E)}人;")
                    if len(E) > 0:
                        for i in E:
                            print(f"{i}")

                elif jobss == 'T':
                    T = e.Teamleaders
                    print(f"组长共有{len(T)}人;")
                    if len(T) > 0:
                        for i in T:
                            print(f"{i}")

                elif jobss == 'M':
                    M = e.Managers
                    print(f"经理共有{len(M)}人;")
                    if len(M) > 0:
                        for i in M:
                            print(f"{i}")

        if choose == 3:


        if choose == 5:
            break

main()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-11 10:17:22 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-7 16:41:58 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-7 16:21:08 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:
class Method:
    def employee(self,grade,year):
        self.pay1 = 3000 + 500 * grade + 50* year
    def teamleader(self,grade,year):
        self.pay2 = 4000 + 800 * grade + 100* year
    def manager(self,grade,year):
        self.pay3 = 5000 + 1000 * (grade + year)
class Get:
    count = 0
    def get_uid(self):
        self.uid = 10000 + self.count
        self.count += 1
    def get_name(self):
        self.name = input('姓名:')
    def get_job(self):
        self.job = input('职位(E.普通员工;T.组长;M.经理):')
    def get_year(self):
        self.year = int(input('工龄:'))
    def get_grade(self):
        self.grade = int(input('级别:'))
        if self.job == 'E':
            while self.grade < 0 or self.grade > 10:
                self.grade = int(input('该职位最低级别为1,最高级别为10,请重新录入级别:'))
        elif self.job == 'T':
            while self.grade < 0 or self.grade > 6:
                self.grade = int(input('该职位最低级别为1,最高级别为6,请重新录入级别:'))
        elif self.job == 'M':
            while self.grade < 0 or self.grade > 3:
                self.grade = int(input('该职位最低级别为1,最高级别为3,请重新录入级别:'))
    def get_salary(self,pay):
        self.salary = pay
class Function(Get,Method):
    player = {}
   
    def enroll(self):
        super().get_name()
        super().get_job()
        super().get_year()
        super().get_grade()
        super().get_uid()
        if self.job == 'E':
            super().employee(self.grade,self.year)
            super().get_salary(self.pay1)
        elif self.job == 'T':
            super().teamleader(self.grade,self.year)
            super().get_salary(self.pay2)
        elif self.job == 'M':
            super().manager(self.grade,self.year)
            super().get_salary(self.pay3)
        self.player[self.uid] = [self.name,self.job,self.year,self.grade,self.salary]
        print('录入成功!姓名:',self.name,'工号:',self.uid,'薪资:',self.salary)
    def inquiry(self):
        self.choice = int(input('1.员工查询;2.职位查询:'))
        if self.choice == 1:
            self.inquiry_uid = int(input('请输入工号:'))
            if self.inquiry_uid in self.player:
                print('姓名:',self.player[self.inquiry_uid][0])
                print('职位:',self.player[self.inquiry_uid][1])
                print('级别:',self.player[self.inquiry_uid][3])
                print('工龄:',self.player[self.inquiry_uid][2])
                print('薪资:',self.player[self.inquiry_uid][4])
            else:
                print('该工号不存在!')
        elif self.choice == 2:
            self.k = 0
            self.ku = []
            self.inquiry_job = input('职位(E.普通员工;T.组长;M.经理):')
            for i in self.player:
                if self.inquiry_job in self.player[i]:
                    self.ku.append(f'{i} - {self.player[i][0]}')
                    self.k += 1
            if self.inquiry_job == 'E':
                print('目前普通员工共有',self.k,'人')
            elif self.inquiry_job == 'T':
                print('目前组长共有',self.k,'人')
            elif self.inquiry_job == 'M':
                print('目前经理共有',self.k,'人')
            if self.k != 0:
                for z in self.ku:
                    print(z)
            else:
                self.cun = {'E':'普通员工','T':'组长','M':'经理'}
                print('目前公司没有',self.cun[self.inquiry_job],'!',sep = '')
    def upgrade(self):
        self.upgrade_uid = int(input('请输入工号:'))
        if self.upgrade_uid in self.player:
            print(self.player[self.upgrade_uid][0],'工号:',self.upgrade_uid,'当前职位:',self.player[self.upgrade_uid][1]+str(self.player[self.upgrade_uid][3]),'当前薪资:',self.player[self.upgrade_uid][4])
            self.up_grade = int(input('请输入需要增加的级数:'))
            if self.player[self.upgrade_uid][1] == 'E':
                if self.player[self.upgrade_uid][3] + self.up_grade > 10:
                    self.player[self.upgrade_uid][1] = 'T'
                    self.player[self.upgrade_uid][3] = 1
                    super().teamleader(1,self.player[self.upgrade_uid][2])
                    self.price_difference = self.pay2 - self.player[self.upgrade_uid][4]
                    self.player[self.upgrade_uid][4] = self.pay2
                    print('升级成功!')
                else:
                    self.player[self.upgrade_uid][3] = self.player[self.upgrade_uid][3] + self.up_grade
                    super().employee(self.player[self.upgrade_uid][3],self.player[self.upgrade_uid][2])
                    self.price_difference = self.pay1 - self.player[self.upgrade_uid][4]
                    self.player[self.upgrade_uid][4] = self.pay1
                    print('升级成功!')
            elif self.player[self.upgrade_uid][1] == 'T':
                if self.player[self.upgrade_uid][3] + self.up_grade > 6:
                    self.player[self.upgrade_uid][1] = 'M'
                    self.player[self.upgrade_uid][3] = 1
                    super().manager(1,self.player[self.upgrade_uid][2])
                    self.price_difference = self.pay3 - self.player[self.upgrade_uid][4]
                    self.player[self.upgrade_uid][4] = self.pay3
                    print('升级成功!')
                else:
                    self.player[self.upgrade_uid][3] = self.player[self.upgrade_uid][3] + self.up_grade
                    super().teamleader(self.player[self.upgrade_uid][3],self.player[self.upgrade_uid][2])
                    self.price_difference = self.pay2 - self.player[self.upgrade_uid][4]
                    self.player[self.upgrade_uid][4] = self.pay2
                    print('升级成功!')
            elif self.player[self.upgrade_uid][1] == 'M':
                if self.player[self.upgrade_uid][3] + self.up_grade <= 3:
                    self.player[self.upgrade_uid][3] = self.player[self.upgrade_uid][3] + self.up_grade
                    super().manager(self.player[self.upgrade_uid][3],self.player[self.upgrade_uid][2])
                    self.price_difference = self.pay3 - self.player[self.upgrade_uid][4]
                    self.player[self.upgrade_uid][4] = self.pay3
                    print('升级成功!')
                else:
                    print('当前已达最高级别,无法进行升级!')
                    super().manager(self.player[self.upgrade_uid][3],self.player[self.upgrade_uid][2])
                    self.price_difference = self.pay3 - self.player[self.upgrade_uid][4]
                    self.player[self.upgrade_uid][4] = self.pay3
            print(self.player[self.upgrade_uid][0],'工号:',self.upgrade_uid,'升级后职位:',self.player[self.upgrade_uid][1]+str(self.player[self.upgrade_uid][3]),'升级后薪资:',self.player[self.upgrade_uid][4],f'(+{self.price_difference})')
        else:
            print('该工号不存在!')
    def degrade(self):
        self.degrade_uid = int(input('请输入工号:'))
        if self.degrade_uid in self.player:
            print(self.player[self.degrade_uid][0],'工号:',self.degrade_uid,'当前职位:',self.player[self.degrade_uid][1]+str(self.player[self.degrade_uid][3]),'当前薪资:',self.player[self.degrade_uid][4])
            self.de_grade = int(input('请输入需要减少的级数:'))   
            if self.player[self.degrade_uid][1] == 'E':
                if self.de_grade < self.player[self.degrade_uid][3]:
                    self.player[self.degrade_uid][3] = self.player[self.degrade_uid][3] - self.de_grade
                    super().employee(self.player[self.degrade_uid][3],self.player[self.degrade_uid][2])
                    self.price_difference = self.player[self.degrade_uid][4] - self.pay1
                    self.player[self.degrade_uid][4] = self.pay1
                    print('降级成功!')  
                else:
                    print('降级失败,超出级别范围!')
            elif self.player[self.degrade_uid][1] == 'T':
                if self.de_grade < self.player[self.degrade_uid][3]:
                    self.player[self.degrade_uid][3] = self.player[self.degrade_uid][3] - self.de_grade
                    super().teamleader(self.player[self.degrade_uid][3],self.player[self.degrade_uid][2])
                    self.price_difference = self.player[self.degrade_uid][4] - self.pay2
                    self.player[self.degrade_uid][4] = self.pay2
                    print('降级成功!')
                else:
                    self.player[self.degrade_uid][1] = 'E'
                    self.player[self.degrade_uid][3] = 10
                    super().employee(self.player[self.degrade_uid][3],self.player[self.degrade_uid][2])
                    self.price_difference = self.player[self.degrade_uid][4] - self.pay1
                    self.player[self.degrade_uid][4] = self.pay1
                    print('降级成功!')
            elif self.player[self.degrade_uid][1] == 'M':
                if self.de_grade < self.player[self.degrade_uid][3]:
                    self.player[self.degrade_uid][3] = self.player[self.degrade_uid][3] - self.de_grade
                    super().manager(self.player[self.degrade_uid][3],self.player[self.degrade_uid][2])
                    self.price_difference = self.player[self.degrade_uid][4] - self.pay3
                    self.player[self.degrade_uid][4] = self.pay3
                    print('降级成功!')
                else:
                    self.player[self.degrade_uid][1] = 'T'
                    self.player[self.degrade_uid][3] = 6
                    super().teamleader(self.player[self.degrade_uid][3],self.player[self.degrade_uid][2])
                    self.price_difference = self.player[self.degrade_uid][4] - self.pay2
                    self.player[self.degrade_uid][4] = self.pay2
                    print('降级成功!')
            print(self.player[self.degrade_uid][0],'工号:',self.degrade_uid,'降级后职位:',self.player[self.degrade_uid][1]+str(self.player[self.degrade_uid][3]),'降级后薪资:',self.player[self.degrade_uid][4],f'(-{self.price_difference})')
        else:
            print('该工号不存在!')

def main():
    c = Function()
    while True:
        print()
        temp = input('1.录入;2.查询;3.升级;4.降级;5.退出:')
        if temp == '1':
            c.enroll()
        elif temp == '2':
            c.inquiry()
        elif temp == '3':
            c.upgrade()
        elif temp == '4':
            c.degrade()
        else:
            break

main()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-6 21:19:00 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-6 11:50:13 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-6 09:30:06 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-4 10:12:12 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-2 15:58:46 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-1 09:11:33 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:

第 1 题的答案是:

第 2 题的答案是:

第 3 题的答案是:

第 4 题的答案是:

第 5 题的答案是:

-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-30 19:46:19 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:同一个类,它可以通过继承表现出不同的属性,使用不同的方法

第 1 题的答案是:多态可以使用同样的类实现多种功能,方便编程的时候根据具体情况做变化

第 2 题的答案是:可以

第 3 题的答案是:不知道

第 4 题的答案是:低耦合

第 5 题的答案是:不是

-------- 动动手 --------

请将第 0 题的代码写在下方:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-30 17:08:16 | 显示全部楼层
请回复您的答案^_^

-------- 问答题 --------

第 0 题的答案是:同一个对象,在不同的场景下有不同的效果;重写就是实现类继承的多态

第 1 题的答案是:以较为直觉的方式处理不同对象之间的逻辑运算问题

第 2 题的答案是:可以

第 3 题的答案是:“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”

第 4 题的答案是:降低了耦合度

第 5 题的答案是:不属于

-------- 动动手 --------

请将第 0 题的代码写在下方:
# 员工类:记录员工的关键信息
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

    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(year):
        return self.uid

    def salary(self):
        if self.job == 'E':
            return 3000 + 500 * self.grade + 50 * self.year
        elif self.job == 'T':
            return 4000 + 800 * self.grade + 100 * self.year
        else:
            return 5000 + 1000 * self.grade + 1000 * self.year

# 管理类:所有功能的实现
##class Manage(PswMixin, LoggerMixin):
class Manage:
    # 程序功能:录入
    def Create(self, member):
        uid = 10000
        while uid in [each.uid for each in member]:
            uid += 1
        name = input('姓名:').strip()
        
        job = input('职位(E.普通员工; T.组长; M.经理):').strip()
        while job not in ['E', 'T', 'M']:
            job = input('请重新输入员工分类(E、T、M):').strip()
        
        year = int(input('工龄:').strip())
        while year > 50 or year < 0:
            year = int(input('请重新输入工龄:').strip())
      
        grade = int(input('级别:').strip())
        if job == 'E':
            while grade > 10 or grade < 0:
                grade = int(input('请重新输入级别:').strip())
        elif job == 'T':
            while grade > 6 or grade < 0:
                grade = int(input('请重新输入级别:').strip())
        else:
            while grade > 3 or grade < 0:
                grade = int(input('请重新输入级别:').strip())
               
        member.append(Member(name, job, grade, year, uid))
        print(f"录入成功!姓名: {member[-1].name},工号: {member[-1].uid},薪资:{member[-1].salary()}")

##        self.log(f"开卡成功:{num} -> {uid},时间:{rtime}\n")
   
    # 程序功能:查询
    def Lookup(self, member):
        jobs = {'E':'普通员工', 'T':'组长', 'M':'经理'}
        ins = input('1.员工查询;2.职位查询:').strip()
        if ins == '1':
            uid = int(input('请输入工号:').strip())
            if uid in [each.uid for each in member]:
                print(f'姓名:{member[uid-10000].name}')
                print(f'职位:{member[uid-10000].job}')
                print(f'级别:{member[uid-10000].grade}')
                print(f'工龄:{member[uid-10000].year}')
                print(f'薪资:{member[uid-10000].salary()}')
            else:
                print('该工号不存在!')
        elif ins == '2':
            job = input('职位(E.普通员工; T.组长; M.经理):').strip()
            job_reg = [each for each in member if each.job == job]
            print(f'目前{jobs[job]}共有{len(job_reg)}人:')
            for each in job_reg:
                print(f'{each.uid} - {each.name}')
        else:
            print('查询指令错误!')
        
        
    # 程序功能:升级
    def Upgrade(self, member):
        uid = int(input('请输入工号:').strip())
        while uid not in [each.uid for each in member]:
            uid = int(input('该工号不存在,请重新输入:').strip())
        member_reg = member[uid-10000]
        print(f"{member_reg.name},工号:{member_reg.uid},当前职位:{member_reg.job + str(member_reg.grade)},当前薪资:{member_reg.salary()}")
        suma = member_reg.grade + int(input('请输入需要增加的级数:').strip())
        if member_reg.job == 'E':
            if suma > 10:
                member_reg.job = 'T'
                member_reg.grade = 1
            else:
                member_reg.grade = suma
        elif member_reg.job == 'T':
            if suma > 5:
                member_reg.job = 'M'
                member_reg.grade = 1
            else:
                member_reg.grade = suma
        else:
            if suma > 3:
                member_reg.grade = 3
            else:
                member_reg.grade = suma
        print('升级成功!')
        print(f"{member_reg.name},工号:{member_reg.uid},升级后职位:{member_reg.job + str(member_reg.grade)},升级后薪资:{member_reg.salary()}{}")
        member[uid-10000] = member_reg
        
        
    # 程序功能:降级
    def Downgrade(self, member):
        uid = int(input('请输入工号:').strip())
        while uid not in [each.uid for each in member]:
            uid = int(input('该工号不存在,请重新输入:').strip())
        member_reg = member[uid-10000]
        print(f"{member_reg.name},工号:{member_reg.uid},当前职位:{member_reg.job + str(member_reg.grade)},当前薪资:{member_reg.salary()}")
        suma = member_reg.grade - int(input('请输入需要减少的级数:').strip())
        if member_reg.job == 'E':
            if suma < 1:
                member_reg.grade = 1
            else:
                member_reg.grade = suma
        elif member_reg.job == 'T':
            if suma < 1:
                member_reg.job = 'E'
                member_reg.grade = 10
            else:
                member_reg.grade = suma
        else:
            if suma < 1:
                member_reg.job = 'T'
                member_reg.grade = 6
            else:
                member_reg.grade = suma
        print('降级成功!')
        print(f"{member_reg.name},工号:{member_reg.uid},降级后职位:{member_reg.job + str(member_reg.grade)},降级后薪资:{member_reg.salary()}")
        member[uid-10000] = member_reg

        
###主程序
##def main():
##member = [Member(1, '1', '1', 0, '2024-03-16 15:44:42')]
##member = []
##manage = Manage()
member = []
manage = Manage()

def main():
##    member = []
##    manage = Manage()
    print('欢迎使用企业员工管理程序')
    while True:
        ins = input('\n1.录入;2.查询;3.升级;4.降级;5.退出:').strip()
        if ins == '1':
            manage.Create(member)
        elif ins == '2':
            manage.Lookup(member)
        elif ins == '3':
            manage.Upgrade(member)
        elif ins == '4':
            manage.Downgrade(member)
        elif ins == '5':
            print('感谢使用企业员工管理程序')
            break
        else:
            print('请输入正确指令!')
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-9-19 16:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表