美文网首页
基于面向对象的人力资源管理系统

基于面向对象的人力资源管理系统

作者: 她即我命 | 来源:发表于2018-08-02 19:53 被阅读67次

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

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

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

class Staff:
    '''员工类'''
    def __init__(self,name,age,salary,job,department):
         self.name =name
         self.age = age
         self.id = ''
         self.salary = salary
         self.job = job
         self.department = department

    def show_info(self):
        print('姓名:%s 工号:%s 部门:%s 职位:%s'%(self.name,self.id,self.department,self.job))


class HrManager:
    """人力资源管理系统"""
    #整个公司的所有员工
    all_starff = []

    #目前公司已经入职的人数
    __numers = 0

    __all_department = ['财务部','行政部','研发部','总经办','后勤部']

    # 添加员工
    @classmethod
    def add_staff(cls):
        name = input('名字')
        age = int(input('年龄'))
        salary = int(input('薪资'))
        while True:
            print('公司部门:', *cls.__all_department)
            department = input('部门')
            if department in cls.__all_department:
                break
            else:
                print('部门有误')
        job = input('职位')

        #生成工号
        cls.__numers += 1
        id = str(cls.__numers).rjust(4,'0')

        #创建员工对象
        staff = Staff(name,age,salary,job,department)
        staff.id = id

        #添加员工
        cls.all_starff.append(staff)

    #删除员工
    @classmethod
    def del_staff(cls):
        """删除员工"""
        name = input("请输入要删除员工姓名:")
        flag = False
        for staff in cls.all_starff[:]:
            if staff.name ==name:
                flag = True
                staff.show_info()
                value = input('是否删除(Y/N):')
                if value == 'Y':
                    cls.all_starff.remove(staff)
                    print('删除成功')

        if not flag:
            print('公司没有该员工!')

    #查看员工
    @classmethod
    def find_staff(cls):
        name = input('请输入姓名:')
        flog = False
        for staff in cls.all_starff:
            if staff.name == name:
                flog = True
                staff.show_info()
        if not flog:
            print('没有该员工')

    #最高工资的员工
    @classmethod
    def get_most_rich(cls):
        if len(cls.all_starff) == 0:
            print('公司还没有工资')
            return

        max_staff = cls.all_starff[0]
        for staff in cls.all_starff:
            if staff.salary > max_staff.salary:
                max_staff.salary = staff.salary
        print('最高的工资为%s'%max_staff.salary)

    #求整个公司的员工的年龄的平均值
    @classmethod
    def average_age(cls):
        if len(cls.all_starff) == 0:
            print('公司还没有员工')
            return

        sum1 = 0
        for staff in cls.all_starff:
            sum1 = sum1 + staff.age
        print('平均年龄为%s' % (sum1 / len(cls.all_starff)))
        return sum1/len(cls.all_starff)


if __name__ == '__main__':
    HrManager.add_staff()
    HrManager.add_staff()
    HrManager.add_staff()
    HrManager.find_staff()
    HrManager.del_staff()
    HrManager.find_staff()
    HrManager.average_age()
    HrManager.get_most_rich()
名字陈鹏
年龄23
薪资10000
公司部门: 财务部 行政部 研发部 总经办 后勤部
部门研发部
职位python开发
名字罗志祥
年龄40
薪资100000
公司部门: 财务部 行政部 研发部 总经办 后勤部
部门后勤部
职位音乐人
名字uzi
年龄23
薪资50000
公司部门: 财务部 行政部 研发部 总经办 后勤部
部门后勤部
职位游戏人
请输入姓名:陈鹏
姓名:陈鹏 工号:0001 部门:研发部 职位:python开发
请输入要删除员工姓名:uzi
姓名:uzi 工号:0003 部门:后勤部 职位:游戏人
是否删除(Y/N):Y
删除成功
请输入姓名:uzi
没有该员工
平均年龄为31.5
最高的工资为100000

相关文章

网友评论

      本文标题:基于面向对象的人力资源管理系统

      本文链接:https://www.haomeiwen.com/subject/tpldvftx.html