未泯 发表于 2023-3-26 23:14:55

问答题:
0.根据调用对象的不同,返回的结果也不同来体现
1.降低耦合度
2.可以
3.我曾经跨过山河人海
4降低耦合度
5.是的

jzm1232 发表于 2023-3-25 17:03:25

1

拉面好好编程 发表于 2023-3-25 14:44:43

woodwendtee 发表于 2023-3-24 18:29:47

0.类的继承
1.灵活
2.可以
3.不造
4.只要会嘎嘎叫的就是鸭子
5.不是

ddsernjg 发表于 2023-3-24 10:47:32

1

centao 发表于 2023-3-23 09:58:45

6

青山元不动 发表于 2023-3-22 00:50:13

好难啊

13685305364 发表于 2023-3-21 16:29:32

1

dfhfjglk 发表于 2023-3-20 21:29:52

在

15945632454 发表于 2023-3-20 18:32:01

wubodi55521 发表于 2023-3-20 18:03:49

1

954753177 发表于 2023-3-20 16:28:45

查看

梦难醒 发表于 2023-3-19 20:02:42

问答题:
0.接收不同的对象作为参数,并在不检查参数类型的情况下执行他的方法
1.可以适应不同的使用情况
2.可以
3.按图索骥
4.低耦合
5.属于



class Worker:
    def __init__(self, name, job, garde, year, uid):
      self.name = name
      self.job = job
      self.garde = garde
      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_garde(self):
      return self.garde

    def get_year(self):
      return self.year

    def salary(self):
      pass


class Employee(Worker):
    def salary(self):
      return 3000 + 500 * self.garde + 50 * self.year


class Teamleader(Worker):
    def salary(self):
      return 4000 + 800 * self.garde + 100 * self.year


class Manager(Worker):
    def salary(self):
      return 5000 + 1000 * (self.garde + self.year)


class Manage:
    def __init__(self):
      self.num = 10000
      self.member = []

    # 录入
    def key_in(self):
      name = input('姓名:')
      while 1:
            job = input('职位(E.普通员工;T.组长;M.经理):')
            if job not in ('E', 'T', 'M'):
                print('输入错误,请重新输入')
            else:
                break
      while 1:
            grade = int(input('等级:'))
            if job == 'E' and grade > 10:
                print('该职位最高级别为10级别,请重新录入')
            elif job == 'T' and grade > 6:
                print('该职位最高级别为6级别,请重新录入')
            elif job == 'M' and grade > 3:
                print('该职位最高级别为3级别,请重新录入')
            else:
                break
      year = int(input('工龄:'))
      number = self.num
      self.num += 1
      if job == 'E':
            n = Employee(name, job, grade, year, number)
      elif job == 'T':
            n = Teamleader(name, job, grade, year, number)
      elif job == 'M':
            n = Manager(name, job, grade, year, number)
      self.member.append()
      print(f'录入成功!姓名:{name},工号:{number},薪资:{n.salary()}')

    def find(self):
      while 1:
            order = input('1.员工查询2.职位查询')
            if order not in ('1', '2'):
                print('输入错误,请重新输入')
            else:
                break
      if order == '1':
            num = input('请输入工号:')
            for i in self.member:
                if str(i) == num:
                  print(f'姓名:{i}')
                  print(f'职位:{i}')
                  print(f'级别:{i}')
                  print(f'工龄:{i}')
                  print(f'薪资:{i}')
                  break
            else:
                print('该工号不存在')
      elif order == '2':
            while 1:
                garde = input('职位(E.普通员工;T.组长;M.经理)')
                if garde not in ('E', 'T', 'M'):
                  print('输入错误,请重新输入')
                else:
                  break
            ss = == garde]
            q = {'E': '普通员工', 'T': '组长', 'M': '经理'}
            if ss:
                print(f'目前{q}共有{len(ss)}人')
                for i in ss:
                  print(f'{i} - {i}')
            else:
                print(f'目前公司没有{q}')

    def change_up(self):
      aa = 0
      num = input('请输入工号:')
      for i in self.member:
            if str(i) == num:
                print(f'{i},工号:{i},当前职位:{i+str(i)},当前薪资:{i[-1]}')
                up = int(input('请输入需要增加的级数'))
                i += up
                qq = i[-1]
                if i == 'E':
                  if 1 <= i <= 10:
                        self.member = i
                        self.member[-1] = 3000 + 500 * i + 50 * i
                  elif 11 <= i <= 16:
                        self.member = 1
                        self.member = 'T'
                        self.member[-1] = 4000 + 800 + 100 * i
                  elif 19 >= i >= 17:
                        self.member = 1
                        self.member = 'M'
                        self.member[-1] = 5000 + 1000 * (1 + i)
                  else:
                        aa = '输入错误'
                elif i == 'T':
                  if 1 <= i <= 6:
                        self.member = i
                        self.member[-1] = 4000 + 800 * i + 100 * i
                  elif 7 <= i <= 9:
                        self.member = 1
                        self.member = 'M'
                        self.member[-1] = 5000 + 1000 * (1 + i)
                  else:
                        aa = '输入错误'
                elif i == 'M':
                  if 1 <= i <= 3:
                        self.member = i
                        self.member[-1] = 5000 + 1000 * (i + i)
                  else:
                        aa = '输入错误'
                if aa == '输入错误':
                  print(aa)
                  break
                else:
                  print('升级成功!')
                  print(
                        f'姓名:{i},工号:{i[-2]},升级后职位:{self.member+str(self.member)},薪资:{self.member[-1]}(+{self.member[-1] - qq})')
                break
      else:
            print('该工号不存在')

    def change_down(self):
      bb = 0
      num = input('请输入工号:')
      for i in self.member:
            if str(i) == num:
                print(f'{i},工号:{i},当前职位:{i+str(i)},当前薪资:{i[-1]}')
                down = int(input('请输入需要减少的级数'))
                i -= down
                qq = i[-1]
                if i == 'E':
                  if 0 < i <= 10:
                        self.member = i
                        self.member[-1] = 3000 + 500 * i + 50 * i
                  else:
                        bb = '输入错误'
                elif i == 'T':
                  if 0 < i <= 6:
                        self.member = i
                        self.member[-1] = 4000 + 800 * i + 100 * i
                  elif -10 <= i <= -1:
                        self.member = 10
                        self.member = 'E'
                        self.member[-1] = 3000 + 500 * 10 + 50 * i
                  else:
                        bb = '输入错误'
                elif i == 'M':
                  if 0 < i <= 3:
                        self.member = i
                        self.member[-1] = 5000 + 1000 * (i + i)
                  elif -3 <= i <= -1:
                        self.member = 6
                        self.member = 'T'
                        self.member[-1] = 4000 + 800 * 6 + 100 * i
                  elif -13 <= i <= -4:
                        self.member = 10
                        self.member = 'E'
                        self.member[-1] = 3000 + 500 * 10 + 50 * i
                  else:
                        bb = '输入错误'
                if bb == '输入错误':
                  print(bb)
                  break
                else:
                  print('降级成功!')
                  print(
                        f'姓名:{i},工号:{i[-2]},升级后职位:{self.member + str(self.member)},薪资:{self.member[-1]}({self.member[-1] - qq})')
                break
      else:
            print('该工号不存在')

    def welcome(self):
      print('欢迎使用老白企业员工管理系统')
      while 1:
            order = input('请输入指令:1.录入2.查询3.升级4.降级5.退出')
            if order not in ('1', '2', '3', '4', '5'):
                print('输入错误,请重新输入')
            elif order == '1':
                self.key_in()
            elif order == '2':
                self.find()
            elif order == '3':
                self.change_up()
            elif order == '4':
                self.change_down()
            elif order == '5':
                print('感谢您使用老白企业员工管理系统')
                break


def main():
    ff = Manage()
    ff.welcome()


main()

CorrineLL 发表于 2023-3-19 17:10:15

一道代码题耗费了整个下午时间,呜呜

CorrineLL 发表于 2023-3-19 16:59:48

class Employee():
    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):
      salary = 3000 + 500 * self.grade + 50 * self.year
      return salary   

class Teamleader(Employee):
    def salary(self):
      salary = 4000 + 800 * self.grade + 100 * self.year
      return salary

class Manager(Employee):
    def salary(self):
      salary = 5000 + 1000 * (self.grade + self.year)
      return salary


#正文
def main():
    uid = 10000
    employee_list = {}
    jobs = {'E':[],'T':[],'M':[]}

    e_max_grade = 10
    t_max_grade = 6
    m_max_grade = 3

    while True:
      select = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
      if select == '1':
            name = input("姓名:")
            job = input("职位(E.普通员工;T.组长;M.经理):")
            year = int(input("工龄:"))
            grade = int(input("级别:"))

            if job == 'E':
                if grade > e_max_grade:
                  grade = int(input(("该职位最高级别职位为%d,请重新录入级别:" % e_max_grade)))
                  
                e = Employee(name, job, grade, year, uid)
                employee_list = e
                jobs['E'].append(e.get_uid())
                print("录入成功!姓名:%s,工号:%d,薪资:%d" % (e.get_name(), e.get_uid(), e.salary()) )
                uid = uid + 1

            if job == 'T':
                if grade > t_max_grade:
                  grade = int(input(("该职位最高级别职位为%d,请重新录入级别:" % t_max_grade)))
                  
                t = Teamleader(name, job, grade, year, uid)
                employee_list = t
                jobs['T'].append(t.get_uid())
                print("录入成功!姓名:%s,工号:%d,薪资:%d" % (t.get_name(), t.get_uid(), t.salary()) )
                uid = uid + 1
   
            if job == 'M':
                if grade > m_max_grade:
                  grade = int(input(("该职位最高级别职位为%d,请重新录入级别:" % m_max_grade)))
                  
                m = Manager(name, job, grade, year, uid)
                employee_list = m
                jobs['M'].append(m.get_uid())
                print("录入成功!姓名:%s,工号:%d,薪资:%d" % (m.get_name(), m.get_uid(), m.salary()) )
                uid = uid + 1

      if select == '2':
            stype = int(input("1.员工查询;2.职位查询:"))
            if stype == 1:
                suid = int(input("请输入工号:"))
               
                try:
                  result = employee_list
                except KeyError:
                  print("该工号不存在!")
                  continue
                  
                print("姓名:%s" % result.get_name())
                print("职位:%s" % result.get_job())
                print("级别:%d" % result.get_grade())
                print("工龄:%d" % result.get_year())
                print("薪资:%d" % result.salary())

            if stype == 2:
                sjob = input("职位(E.普通员工;T.组长;M.经理):")
                scnt = len(jobs)
               
                if sjob == 'E':
                  print("目前普通员工共有%d人:" % scnt)
                if sjob == 'T':
                  print("目前组长共有%d人:" % scnt)
                if sjob == 'M':
                  print("目前经理共有%d人:" % scnt)

                for iuid in jobs:
                  #print(iuid)
                  #print(jobs)
                  ie = employee_list
                  print("%d - %s" % (ie.get_uid(), ie.get_name()))
                  
      if select == '3':
            suid = int(input("请输入工号:"))
            e = employee_list
            print("%s ,工号:%d ,当前职位:%s,当前薪资:%d" % (e.get_name(), e.get_uid(),e.get_job() + str(e.get_grade()), e.salary() ))
            sgrade = int(input("请输入需要增加的级数:"))
            n_salsry = e.salary()#目前的薪资
            
            if e.get_job() == 'E':
                if e.get_grade() + sgrade > e_max_grade :                  
                  e.grade = 1
                  e.job = 'T'

                  #更新数据库
                  #移出E类别,加入T类别
                  jobs['E'].remove(suid)
                  jobs['T'].append(suid)
                  #原来存的是Emloyee类,升级后变成Teamleader类
                  ne =Teamleader(e.name, e.job, e.grade, e.year, e.uid)
                  employee_list = ne
               
                else:
                  e.grade = e.get_grade() + sgrade
                  
            if e.get_job() == 'T':
                if e.get_grade() + sgrade > t_max_grade :
                  e.grade = 1
                  e.job = 'M'

                  #更新数据库
                  #移出T类别,加入M类别
                  jobs['T'].remove(suid)
                  jobs['M'].append(suid)
                  #原来存的是Teamleader类,升级后变成Manager类
                  ne =Manager(e.name, e.job, e.grade, e.year, e.uid)
                  employee_list = ne
                  
                else:
                  e.grade = e.get_grade() + sgrade

            if e.get_job() == 'M':
                if e.get_grade() + sgrade > m_max_grade :
                  print("已超经理最高级别,按最高级处理%d级" % m_max_grade)
                  e.grade = m_max_grade
                else:
                  e.grade = e.get_grade() + sgrade

            s_salary = ne.salary() #升级后的薪资
            gap_salary = s_salary - n_salsry

            #更新数据库(字典表)
            #上面直接修改了实例对象的属性值,不用在更新字典表了

            print("升级成功!")
            print("%s ,工号:%d ,当前职位:%s,升级后薪资:%d (+ %d )" % (ne.get_name(), ne.get_uid(),ne.get_job() + str(ne.get_grade()), ne.salary(), gap_salary))
      

                  
      if select == '4':
            suid = int(input("请输入工号:"))
            e = employee_list
            print("%s ,工号:%d ,当前职位:%s,当前薪资:%d" % (e.get_name(), e.get_uid(),e.get_job() + str(e.get_grade()), e.salary() ))
            sgrade = int(input("请输入需要减少的级数:"))
            n_salsry = e.salary()#目前的薪资
            
            if e.get_job() == 'E':
                if e.get_grade() - sgrade<=0:
                  print("已超普通员工最低级别,按最低级处理1级")
                  e.grade = 1
               
                else:
                  e.grade = e.get_grade() - sgrade
                  
            if e.get_job() == 'T':
                if e.get_grade()- sgrade<=0:
                  e.grade = e_max_grade
                  e.job = 'E'

                  #更新数据库
                  #移出T类别,加入E类别
                  jobs['T'].remove(suid)
                  jobs['E'].append(suid)
                  #原来存的是Teamleader类,降级后变成Employee类
                  ne =Employee(e.name, e.job, e.grade, e.year, e.uid)
                  employee_list = ne
                  
                else:
                  e.grade = e.get_grade() - sgrade

            if e.get_job() == 'M':
                if e.get_grade()- sgrade<=0:
                  e.grade = t_max_grade
                  e.job = 'T'

                  #更新数据库
                  #移出M类别,加入T类别
                  jobs['M'].remove(suid)
                  jobs['T'].append(suid)
                  #原来存的是Manager类,降级后变成Teamleader类
                  ne =Teamleader(e.name, e.job, e.grade, e.year, e.uid)
                  employee_list = ne
                else:
                  e.grade = e.get_grade() - sgrade

            s_salary = ne.salary() #升级后的薪资
            gap_salary = n_salsry -s_salary

            #更新数据库(字典表)
            #上面直接修改了实例对象的属性值,不用在更新字典表了

            print("升级成功!")
            print("%s ,工号:%d ,当前职位:%s,升级后薪资:%d (- %d )" % (ne.get_name(), ne.get_uid(),ne.get_job() + str(ne.get_grade()), ne.salary(), gap_salary))

            
      if select == '5':
            break
main()      

CorrineLL 发表于 2023-3-19 11:43:14

0.同一个函数或符号在不同的情况下,有不同的功能。
1.能够在继承父类的方法的同时,重写父类的方法,实现个性化
2.可以
3.When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.
4.低耦合
5.不属于

一纸水与青 发表于 2023-3-19 10:44:20

0.通过类的继承,在子类中重写父类的方法,不同的子类的实例化对象调用同名的方法时就会呈现不一样的作用效果。
1.可以很好的应对各种不同的输入对象,扩展了运算符、函数和对象的功能丰富性
2可以,这里体现的就是运算符的多样性
3.你看起来像鸭子,那么你就是鸭子
4.降低了耦合度
5.不是,两次运算都是对数据类型求和,没有体现不同场景这个条件

0.
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
   
class Employee(Staff):
    def salary(self):
      grade=self.get_grade()
      age=self.get_year()
      return 3000+500*grade+50*age
   
class Teamleader(Staff):
    def salary(self):
      grade=self.get_grade()
      age=self.get_year()
      return 4000+800*grade+100*age
   
class Manager(Staff):
    def salary(self):
      grade=self.get_grade()
      age=self.get_year()
      return 5000+1000*(grade+age)
   
class Main:
    message={}
    uid=10000
   
    #录入功能
    def entering(self):
      name=input("请输入员工姓名:")
      job=input("请输入职位(E:普通员工;T:组长;M:经理):")
      while True:
            try:
                year=int(input("请输入工龄:"))
                break
            except ValueError:
                print("必须输入整数!")
               
      while True:
            try:
                grade=int(input("请输入级别:"))
                if job=='E' and grade>10:
                  raise TypeError("该职位最高级别为10\n请重新输入!")
                if job=='T' and grade>6:
                  raise TypeError("该职位最高级别为6\n请重新输入!")
                if job=='M' and grade>3:
                  raise TypeError("该职位最高级别为3\n请重新输入!")
                  
                break
            except ValueError:
                print("必须输入整数!")
            
            except TypeError as e:
                print(e)
      
      if job=='E':
            staff=Employee(name,job,grade,year,self.uid)
            
      elif job=='T':
            staff=Teamleader(name,job,grade,year,self.uid)
      
      elif job=='M':
            staff=Manager(name,job,grade,year,self.uid)
            
      self.message=staff
      salary=staff.salary()
      self.uid+=1
      print("录入成功!")
      print(f"姓名:{staff.get_name()} 工号:{staff.get_uid()} 薪资{salary}")
         
    #验证输入工号是否存在
    def uid_verify(self,uid):
      if not self.message.get(uid):
            print("工号不存在!")
      else:
            return uid
      
    #统计员工人数(与查询功能的find()方法结合使用)
    def people_num(self,ty):
      count=0
      ls=[]
      for each in self.message.values():
            if each.job==ty:
                ls.append(each)
                count+=1
      if ty=='E':
            job="普通员工"
      elif ty=='T':
            job="组长"
      elif ty=='M':
            job="经理"
      
      return job,count,ls
   
    #查询功能         
    def find(self):
      way=input("1.员工查询;2.职位查询:")
      
      if way=='1':
            uid=int(input("请输入工号:"))
            uid=self.uid_verify(uid)
            if uid:
                staff=self.message
                salary=staff.salary()
                print(f"姓名:{staff.get_name()}\n职位:{staff.get_job()}")
                print(f"级别:{staff.get_grade()}\n薪资:{salary}")
      if way=='2':
            job=input("职位(E:普通员工;T:组长;M:经理:)")
            re=self.people_num(job)
            if re==0:
                print(f"目前公司没有{re}位置")
            else:
                print(f"目前{re}共有{re}人")
                for each in re:
                  print(f"{each.uid}-{each.name}")
               
            
    #升级功能
    def up_grade(self):
      uid=int(input("请输入工号:"))
      uid=self.uid_verify(uid)
      if uid:
            staff=self.message
            salary1=staff.salary()
            print(f"姓名:{staff.get_name()} 工号:{uid} 职位:{staff.get_job()}\
                  当前薪资:{salary1}")
            
            add_grade=int(input("请输入要增加的级数:"))
            
            job=staff.job
            grade=staff.grade
            if job=='E' and grade+add_grade>10:
                self.message=Teamleader(staff.name,'T',1,staff.year,uid)
            
            else:
                staff.grade+=add_grade
               
            if job=='T' and grade+add_grade>6:
                self.message=Manager(staff.name,'M',1,staff.year,uid)
            
            else:
                staff.grade+=add_grade
               
            if job=='M' and grade+add_grade>3:
                staff.grade==3
            
            else:
                staff.grade+=add_grade
            
            new_staff=self.message
            salary2=new_staff.salary()
            print("升级成功!")
            print(f"姓名:{new_staff.get_name()}\n工号:{uid}\n职位:{new_staff.get_job()}")
            print(f"升级后薪资:{salary2}+({salary2-salary1})")
   
    #降级功能
    def down_grade(self):
      uid=int(input("请输入工号:"))
      uid=self.uid_verify(uid)
      if uid:
            staff=self.message
            salary1=staff.salary()
            print(f"姓名:{staff.get_name()} 工号:{uid} 职位:{staff.get_job()}\
                  当前薪资:{salary1}")
            
            add_grade=int(input("请输入要减少的级数:"))
            
            job=staff.job
            grade=staff.grade
            if job=='E' and grade-add_grade<=0:
                staff.grade==1
            
            else:
                staff.grade-=add_grade
               
            if job=='T' and grade-add_grade<=0:
                self.message=Teamleader(staff.name,'E',10,staff.year,uid)
            
            else:
                staff.grade-=add_grade
               
            if job=='M' and grade-add_grade<=0:
                self.message=Teamleader(staff.name,'T',6,staff.year,uid)
            
            else:
                staff.grade-=add_grade
               
            new_staff=self.message
            salary2=new_staff.salary()
            print("降级成功!")
            print(f"姓名:{new_staff.get_name()}\n工号:{uid}\n职位:{new_staff.get_job()}")
            print(f"降级后薪资:{salary2}-({salary1-salary2})")
   
    #程序功能接口
    def main(self):
      while True:
            order=input("1.录入;2.查询;3.升级;4.降级;5.退出:")
            
            if order=='1':
                self.entering()
            
            elif order=='2':
                self.find()
            
            elif order=='3':
                self.up_grade()
            
            elif order=='4':
                self.down_grade()
               
            elif order=='5':
                break
            
            else:
                print("输入命令有误!")
               
m=Main()
m.main()
               
               
            
            
               
            
            
               
            
      
      
      
      
      
      
      
               
      
            

   
   

PackageFlow 发表于 2023-3-18 23:39:35

打卡

zhangyh0622 发表于 2023-3-18 15:43:17

1

boyi-y 发表于 2023-3-18 10:06:27

0.
面向对象的多态是通过继承的重写和不同对象调用同名方法实现的。
1.
一类代码可以实现多种功能,让代码更简洁。
2.
可以,这就是多态
多态是指运算符,函数,对象在不同的状态下具有不同的作用。
3.
美国印第安纳州的诗人詹姆斯·惠特科姆·莱利(James Whitcomb Riley, 1849 ~ 1916)的诗句
“如果有个东西看起来像鸭子,游的像鸭子,叫的像鸭子,把它应该就是个鸭子。”
4.
提高了内聚,因为只要实质一样,形式不一样也可以实现某这功能,提高了内聚。
5.
不是多态
多态是指不同的场景下产生不同的作用。这里是将z参数提前赋值,场景本身没有变化,所以不算多态。

动动手
0.

class Employee:
    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,job):
      if job == 'E':
            mon = 3000 + 500 * self.grade + 50 * self.year
      elif job == 'T':
            mon = 4000 + 800 * self.grade + 100 * self.year
      elif job == 'M':
            mon = 5000 + 1000 * (self.grade + self.year)
      return mon


def main():
    worker = []
    uid = 10000
    while True:
      print(uid)
      s = input('1.录入;2.查询;3.升级;4.降级;5.退出:')
      if s == '1':
            name = input('姓名:')
            job = input('职位(E.普通员工;T.组长;M.经理):')
            while job not in ('E','T','M'):
                job = input('只能输入E.T.M,请重新输入:')
            year = int(input('工龄:'))
            grade = int(input('级别:'))
            if job == 'E' :
                while grade <= 0 or grade > 10:
                  grade = int(input('该职位最高级别为10z最小为1,请重新输入:'))
            elif job == 'T':
                while grade <= 0 or grade > 6:
                  grade = int(input('该职位最高级别为6最小为1,请重新输入:'))
            else:
                while grade <= 0 or grade > 3:
                  grade = int(input('该职位最高级别为3最小为1,请重新输入:'))
            worker.append(Employee(name,job,grade,year,uid))
            print(f'录入成功,姓名:{name},工号:{uid},薪资:{worker[-1].salary(job)}')
            uid += 1
      elif s == '2':
            print(uid)
            find = input('1.员工查询;2.职位查询:')
            if find == '1':
                yuid = int(input('请输入工号:'))
                for i in worker:
                  if i.uid == yuid:
                        print(f'姓名:{i.name}',f'职位:{i.job}',f'级别:{i.grade}',f'工龄:{i.year}',f'薪资:{i.salary(i.job)}',sep = '\n')
                        break
                else:
                  print('该工号不存在')
            elif find == '2':
                w = []
                job = input('职位(E.普通员工;T.组长;M.经理):')
                while job != 'E' and job != 'T' and job != 'M':
                  job = input('输入错误,请重新输入:')
                for j in worker:
                  if j.job == job:
                        w.append(str(j.uid)+'-'+j.name)
                if len(w) == 0:
                  if job == 'E':
                        print('目前公司么有普通员工!')
                  elif job == 'T':
                        print('目前公司没有组长!')
                  elif job == 'M':
                        print('目前公司没有经理!')
                else:
                  if job == 'E':
                        a = '普通员工'
                  elif job == 'T':
                        a = '组长'
                  elif job == 'M':
                        a = '经理'
                print(f'目前{a}共有{len(w)}人:')
                for k in w:
                  print(k)
                w.clear()
      elif s == '3':
            yuid = int(input('请输入工号:'))
            worker.append(' ')
            for l in worker:
                if l.uid == yuid:
                  print(f'{l.name},工号:{l.uid},当前职位:{l.job + str(l.grade)},当前薪资:{l.salary(l.job)}')
                  break
            else:
                print('该工号不存在')
            gra = int(input('请输入需要增加的级数:'))
            if gra < 0:
                print('只能输入正整数或0')
            l.grade += gra         
            if l.job == "E" and l.grade > 10:
                l.job = "T"
                l.grade = 1
            elif l.job == "T" and l.grade > 6:
                l.job = "M"
                l.grade = 1
            elif l.job == "M" and l.grade > 3:
                l.job = "M"
                l.grade = 3
            print('升级成功')
            print(f'{l.name} 工号:{l.uid},升级后的职位{l.job + str(l.grade)},升级后的薪资:{l.salary(l.job)}')
            worker.pop()
      elif s == '4':
            yuid = int(input('请输入工号:'))
            worker.append(' ')
            for l in worker:
                if l.uid == yuid:
                  print(f'{l.name},工号:{l.uid},当前职位:{l.job + str(l.grade)},当前薪资:{l.salary(l.job)}')
                  break
            else:
                print('该工号不存在')
            gra = int(input('请输入需要减少的级数:'))
            if gra < 0:
                print('只能输入正整数或0')
            l.grade -= gra         
            if l.job == "M" and l.grade < 1:
                l.job = "T"
                l.grade = 6
            elif l.job == "T" and l.grade < 1:
                l.job = "E"
                l.grade = 10
            elif l.job == "E" and l.grade < 1:
                l.job = "E"
                l.grade = 1
            print('降级成功')
            print(f'{l.name} 工号:{l.uid},升级后的职位{l.job + str(l.grade)},升级后的薪资:{l.salary(l.job)}')         
            worker.pop()
            
      elif s == "5":
            break

main()         
            
页: 30 31 32 33 34 35 36 37 38 39 [40] 41 42 43 44
查看完整版本: 第063讲:类和对象(VI)| 课后测试题及答案