作业
面向对象人力资源管理系统:
- 能存多个员工信息
(每个员工的信息有:姓名、年龄、工号、薪资、职位、部门) - 新员工入职(添加员工)
- 员工离职(删除员工)
- 查看某个员工的信息
- 查询薪资最高的员工
- 查询指定部门中所有员工的平均薪资
- 求整个公司的员工的平均年龄
class Staff:
"""职工类"""
def __init__(self,name='', age=0, id=0,salary=0,post='',section=''):
self.name = name
self.age = age
self.id = id
self.salary = salary
self.post = post
self.section = section
# 打卡上班
def clock_in(self):
print('%s打卡成功!'%self.name)
# 打卡下班
def off_duty(self):
print('%s下班了'%self.name)
# 员工职位
def post_staff(self):
print('%s的职位是%s'%(self.name, self.post))
# 员工所在部门
def section_staff(self):
print('%s所在部门是%s'%(self.name, self.section))
class Company:
"""公司类"""
def __init__(self,name=''):
self.name = name
self.staffs = []
# 新职员入职(添加职员)
def add_staff(self,staff=None):
self.staffs.append(staff)
print('入职成功!')
# 办理离职手续
def del_staff(self,name):
for staff in self.staffs[:]:
if staff.name == name :
self.staffs.remove(staff)
print('%s已经办好离职手续!'%name)
return
print('查无此人,请重新输入!')
# 查看员工的信息
def find_staff(self,name):
for staff in self.staffs[:]:
if staff.name == name :
print('姓名:%s,年龄:%d,工号:%d,薪资:%d,职位:%s,部门:%s'\
%(staff.name, staff.age, staff.id, staff.salary, staff.post, staff.section))
return
print('查无此人!')
#查询薪资最高的员工
def max_salary(self):
all_salary = {}
for staff in self.staffs[:]:
all_salary[staff.name] = staff.salary
name1 = max(all_salary,key=all_salary.get)
print('目前%s员工的工资最高,工资为%d'%(name1,all_salary[name1]))
# 求指定部门平均工资
def ave_section_salary(self,section):
all_salary = {}
number = 0
sum1 = 0
for staff in self.staffs[:]:
if staff.section == section:
all_salary[staff.section] = staff.salary
for key, value in all_salary.items():
sum1 += value
number +=1
section_name = key
ave1 = sum1/number
print('%s员工的平均工资为%.2f' % (section_name,ave1))
# 求平均工资
def ave_salary(self):
number = 0
sum1 = 0
for staff in self.staffs[:]:
sum1 += staff.salary
number+=1
ave1 = sum1/number
print('所有员工的平均工资为%.2f'%ave1)
# 求平均年龄
def ave_age(self):
number = 0
sum1 = 0
for staff in self.staffs[:]:
sum1 += staff.age
number += 1
ave1 = sum1 / number
print('所有员工的平均年龄为%.1f岁' % ave1)
if __name__ == '__main__':
# 声明员工对象
sta1 = Staff(name='老王', age=30, id=1805001,salary=2000,post='软件测试',section='技术部')
sta2 = Staff(name='小二', age=23, id=1805002,salary=3000,post='销售工程师',section='人事部')
sta3 = Staff(name='胖哥', age=44, id=1805003, salary=6500, post='python工程师', section='技术部')
sta4 = Staff(name='小美', age=20, id=1805004, salary=2500, post='产品经理', section='人事部')
# 声明公司对象
com1 = Company('想都想不到公司')
# 添加职员
com1.add_staff(sta1)
com1.add_staff(sta2)
com1.add_staff(sta3)
com1.add_staff(sta4)
# 查找
com1.find_staff('老王')
com1.find_staff('小二')
com1.find_staff('胖哥')
# 删除职员
com1.del_staff('小二')
com1.del_staff('小三')
com1.find_staff('小二')
# 查看平均年龄
com1.ave_age()
# 查看平均工资
com1.ave_salary()
# 查看最高工资的员工
com1.max_salary()
# 查看指定部门的员工工资
com1.ave_section_salary('技术部')
com1.ave_section_salary('人事部')
结果:
入职成功!
入职成功!
入职成功!
入职成功!
姓名:老王,年龄:30,工号:1805001,薪资:2000,职位:软件测试,部门:技术部
姓名:小二,年龄:23,工号:1805002,薪资:3000,职位:销售工程师,部门:人事部
姓名:胖哥,年龄:44,工号:1805003,薪资:6500,职位:python工程师,部门:技术部
小二已经办好离职手续!
查无此人,请重新输入!
查无此人!
所有员工的平均年龄为31.3岁
所有员工的平均工资为3666.67
目前胖哥员工的工资最高,工资为6500
技术部员工的平均工资为4250.00
人事部员工的平均工资为2500.00
网友评论