day14作业

面向对象人力资源管理系统:

  • 能存多个员工信息
    (每个员工的信息有:姓名、年龄、工号、薪资、职位、部门)
  • 新员工入职(添加员工)
  • 员工离职(删除员工)
  • 查看某个员工的信息
  • 查询薪资最高的员工
  • 查询指定部门中所有员工的平均薪资
  • 求整个公司的员工的平均年龄

(可以根据能力改善和添加功能,做到尽量贴近生活)

# Filename  : 面向对象作业.py
# Date  : 2018/8/1
import json

try:
    with open('./new_staff.json', 'r', encoding='utf-8') as g:
        old_data = json.load(g)

except FileNotFoundError:
    with open('./new_staff.json', 'w', encoding='utf-8') as g:
        old_data = []
        json.dump(old_data, g)

def write():
    with open('./new_staff.json', 'w', encoding='utf-8') as g:
        json.dump(old_data, g)

class Staff:
    def __init__(self, name, age, id_num, money, job, department):
        self.name = name
        self._age = age
        self.id_num = id_num
        self._money = money
        self.job = job
        self.department = department

    def info(self):

        staff_info = {}
        staff_info['name'] = self.name
        staff_info['age'] = self._age
        staff_info['id_num'] = self.id_num
        staff_info['money'] = self._money
        staff_info['job'] = self.job
        staff_info['department'] = self.department
        old_data.append(staff_info)
        return old_data


class HR_manager:

    def add_staff(self):
        name = input('请输入员工的姓名:')
        while True:
            try:
                age = int(input('请输入员工年龄:'))
                break
            except ValueError:
                print('请输入大于0且小于150的纯数字')
        id_num = input('请输入员工工号:')
        while True:
            try:
                money = int(input('请输入员工薪资:'))
                break
            except ValueError:
                print('请输入大于0纯数字:')

        job = input('请输入员工职位:')
        department = input('请输入员工所在部门:')
        new_staff = Staff(name, age, id_num, money, job, department)
        a = new_staff.info()
        write()

    def del_staff(self, ):
        name = input('请输入要删除员工的姓名:')
        for x in old_data:
            if x['name'] == name:
                del x
                print('删除成功')
        else:
            print('没有该员工信息')
        write()

    def watch_staff(self):
        name = input('请输入员工姓名')
        for x in old_data:
            if x['name'] == name:
                print(x)
        else:
            print('没有该员工信息')

    def heighest_money(self):
        a = old_data[0]
        for x in old_data:
            if x['money'] > a['money']:
                a = x
        print('工资最高的员工信息:', a)

    def avg_money(self):
        depart = input('请输入指定的部门')
        for x in old_data:
            if x['department'] == depart:
                avg1 =[]
                avg1.append(x['money'])
        print('%s部门平均工资为%d' % (depart, sum(avg1)/int(len(avg1))))

    def avg_age(self):
        age1 = []
        for x in old_data:
            age1.append(x['age'])
        print('所有员工平均年龄为%d' % (sum(age1)/int(len(age1))))




if __name__ == '__main__':

    hr = HR_manager()
    hr.add_staff()

待调试

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 今天,陌路知音小伙伴们朝夕相处了整整两周,两周时间在人生也许就是一瞬间,而就是这短暂的一瞬间,将注定成为我生命中美...
    lilycat阅读 1,449评论 0 0
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,149评论 2 89
  • 苏州 1941年 ①观前街②全景③水门④坠理图⑤平江图⑥双塔 苏州古城区依旧保留着这些老房子古建筑,有时间就去转转...
    这才酷啊阅读 1,729评论 0 0
  • 人怎样才能够对事物有很大的热情,不用提醒自己该做什么了,而它就是你的一部分。茫茫碌碌的生活总给人无法喘息的机会,当...
    蓝色孤枫阅读 761评论 0 0
  • 至今仍然记得11月19日做刨腹产手术取出宝宝的情形,一切记忆犹新,历历在目。 我是一个特别怕疼的人...
    踮起脚尖触摸幸福阅读 1,742评论 0 1