|
|
发表于 2024-2-26 17:35:17
|
显示全部楼层
《零基础入门学习Python》
(最新版)
小甲鱼 著
立即购买
import easygui as g
# 员工及其方法类定义
class Worker:
def __init__(self, uid, name, job, grade, year):
self.uid = uid # 工号
self.name = name # 姓名
self.job = job #岗位:普通员工(E)、组长(T)、经理(M)
self.grade = grade # 级别:1级、2级....
self.year = year # 工龄:1,2,3,4,5.....
self.salary = self.salary()
def get_uid(self):
return self.uid
def get_name(self):
return self.name
def get_grade(self):
return self.grade
def get_year(self):
return self.get_year
def salary(self):
if self.job =='E':
salary = 3000 + 500 * self.grade + 50 * self.year
elif self.job == 'T':
salary = 4000 + 800 * self.grade + 100 * self.year
else:
salary = 5000 + 1000 * (self.grade + self.year)
return salary
class Employee(Worker):
def __init__(self, uid, name, job, grade, year):
super().__init__(uid, name, job, grade, year)
self.max_grade = 10
class Teamleader(Worker):
def __init__(self, uid, name, job, grade, year):
super().__init__(uid, name, job, grade, year)
self.max_grade = 6
class Manager(Worker):
def __init__(self, uid, name, job, grade, year):
super().__init__(uid, name, job, grade, year)
self.max_grade = 3
# 管理类及方法定义
class Manage:
def __init__(self):
self.workers = {}
self.uid = 10000
def job_check(self, job):
if job not in 'ETM':
return False
else:
return True
def is_num_check(self, strNum):
try:
strTonum = int(strNum)
return True
except:
return False
def grade_check(self,job, grade):
if job == 'E' and (0 <= int(grade) <= 10):
return True
elif job == 'T' and (0 <= int(grade) <= 6):
return True
elif job == 'M' and (0 <= int(grade) <= 3):
return True
else:
return False
def worker_create(self, uid, name, job, grade, year):
if job == 'E':
return Employee(uid, name, job, grade, year)
elif job == 'T':
return Teamleader(uid, name, job, grade, year)
else:
return Manager(uid, name, job, grade, year)
def worker_regist(self):
msg = '请录入员工信息'
title = 'FishC员工管理系统'
fields = ['*姓名','*职位(E-普通员工,T-组长, M-经理)', '*请输入级别(数值):','*请输入工龄(数值):']
values = []
while True:
worker_msg = g.multenterbox(msg = msg
, title = title
, fields = fields
, values = values
, callback=None
, run=True)
err_msg = ''
for each in worker_msg:
if len(each) == 0:
err_msg += '信息填写不完整,请填写准确的员工信息'
break
if len(err_msg) == 0:
if self.job_check(worker_msg[1]):
if self.is_num_check(worker_msg[3]) and self.is_num_check(worker_msg[2]):
if self.grade_check(worker_msg[1],worker_msg[2]):
worker = self.worker_create(self.uid,worker_msg[0],worker_msg[1], int(worker_msg[2]), int(worker_msg[3]))
self.workers[self.uid] = worker
self.uid += 1
break
else:
err_msg += '级别超出职位范围:请填写准确的债职位范围内的信息\r\n'
else:
err_msg += '数值信息录入不合法:请填写整型数值\r\n'
else:
err_msg = '职位信息不合法:必须为英文大写字母E/T/M中的一个\r\n'
if len(err_msg) == 0:
right_msg = f'录入成功!姓名:{worker.name},工号:{worker.uid},薪资:{worker.salary}'
g.msgbox(msg = right_msg,
title = title)
else:
g.msgbox(msg = err_msg
, title = title)
values = worker_msg
def worker_search(self):
cnt = 0
search_msg = ''
search_result = False
choice = g.indexbox(msg = '请选择你的查询模式:'
,title = 'FishC员工管理系统'
, choices = ('员工查询','职位查询'))
if choice == 0:
search_uid = g.integerbox(msg='请输入你要查询的工号'
, title='FishC员工管理系统'
, lowerbound=10000
, upperbound=99999)
for key,each in self.workers.items():
if each.uid == search_uid:
search_msg = f'姓名:{each.name}\r\n职位:{each.job}\r\n级别:{each.grade}\r\n工龄:{each.year}\r\n薪资:{each.salary}'
search_result = True
break
if not search_result:
search_msg = '该工号不存在'
else:
search_job = g.choicebox(msg='请输入你要查询的岗位:E-普通员工;T-组长;M-经理'
, title='FishC员工管理系统'
,choices = ['E','T','M']
)
for key,each in self.workers.items():
if each.job == search_job:
search_msg += f'{each.uid} - {each.name}\r\n'
cnt += 1
search_result = True
if search_result:
search_msg = f'目前有{search_job}共{cnt}人:\r\n{search_msg}'
else:
search_msg = '该岗位暂无员工!'
g.msgbox(msg= search_msg
, title='FishC员工管理系统')
return[search_result,search_msg]
def grade_up(self):
uid_get = g.integerbox(msg='请输入员工工号'
, title='FishC员工管理系统'
, lowerbound=10000
, upperbound=99999)
worker = self.workers[uid_get]
worker_msg = f'{worker.name};工号:{worker.uid};当前职位:{worker.job}{worker.grade};当前薪资:{worker.salary}'
g.msgbox(msg = worker_msg
, title='FishC员工管理系统')
up_grade = g.integerbox(msg='请输入需要增加的级数'
, title='FishC员工管理系统'
, lowerbound=0
, upperbound=20)
if (worker.grade + up_grade) <= worker.max_grade:
worker.grade = worker.grade + up_grade
up_msg = f'升级成功!\r\n{worker.name};工号:{worker.uid};升职后职位:{worker.job}{worker.grade};升职后薪资:{worker.salary}'
elif worker.job == 'M':
worker.grade = worker.max_grade
up_msg = f'升级成功!\r\n{worker.name};工号:{worker.uid};升职后职位:{worker.job}{worker.grade};升职后薪资:{worker.salary}'
elif worker.job =='E':
new_worker = Teamleader(worker.uid, worker.name, 'T', 1, worker.year)
self.workers[uid_get] = new_worker
up_msg = f'升级成功!\r\n{new_worker.name};工号:{new_worker.uid};升职后职位:{new_worker.job}{new_worker.grade};升职后薪资:{new_worker.salary}'
else:
new_worker = Teamleader(worker.uid, worker.name, 'M', 1, worker.year)
self.workers[uid_get] = new_worker
up_msg = f'升级成功!\r\n{new_worker.name};工号:{new_worker.uid};升职后职位:{new_worker.job}{new_worker.grade};升职后薪资:{new_worker.salary}'
g.msgbox(msg = up_msg
, title='FishC员工管理系统')
def degrade(self):
uid_get = g.integerbox(msg='请输入员工工号'
, title='FishC员工管理系统'
, lowerbound=10000
, upperbound=99999)
worker = self.workers[uid_get]
worker_msg = f'{worker.name};工号:{worker.uid};当前职位:{worker.job}{worker.grade};当前薪资:{worker.salary}'
g.msgbox(msg = worker_msg
, title='FishC员工管理系统')
degrade = g.integerbox(msg='请输入需要降低的级数'
, title='FishC员工管理系统'
, lowerbound=0
, upperbound=20)
if (worker.grade - degrade) > 0:
worker.grade = worker.grade - degrade
demsg = f'降级成功!\r\n{worker.name};工号:{worker.uid};升职后职位:{worker.job}{worker.grade};升职后薪资:{worker.salary}'
elif worker.job == 'E':
worker.grade = 1
up_msg = f'降级成功!\r\n{worker.name};工号:{worker.uid};升职后职位:{worker.job}.{worker.grade};升职后薪资:{worker.salary}'
elif worker.job =='T':
new_worker = Teamleader(worker.uid, worker.name, 'E',10 , worker.year)
self.workers[uid_get] = new_worker
demsg = f'降级成功!\r\n{new_worker.name};工号:{new_worker.uid};升职后职位:{new_worker.job}{new_worker.grade};升职后薪资:{new_worker.salary}'
else:
new_worker = Teamleader(worker.uid, worker.name, 'T', 6 , worker.year)
self.workers[uid_get] = new_worker
demsg = f'降级成功!\r\n{new_worker.name};工号:{new_worker.uid};升职后职位:{new_worker.job}{new_worker.grade};升职后薪资:{new_worker.salary}'
g.msgbox(msg = demsg
, title='FishC员工管理系统')
# 主程序
def main():
manage = Manage()
while True:
choice = g.indexbox(msg = '请选择你要进行的操作',
title = '欢迎使用FishC员工管理系统',
choices = ('1. 员工录入','2. 信息查询','3. 员工升级','4. 员工降级','5. 退出程序'),
)
#调试使用
#for each in manage.members:
# print(f'{each.card_no};{each.user_name};{each.psw};{each.score}')
if choice == 0:
manage.worker_regist()
elif choice == 1:
manage.worker_search()
elif choice == 2:
manage.grade_up()
elif choice == 3:
manage.degrade()
else:
break
main() |
|