day17-人力资源管理系统(面向对象)无永久存储实现,有接口函数

思路型代码

"""new python"""


class Employee:
    """员工类"""
    def __init__(self, name, age, sex, staff_id, salary, position, department):
        self.name = name
        self.age = age
        self.staff_id = staff_id
        self.salary = salary
        self.position = position
        self.department = department
        self.sex = sex


class Management:
    """员工管理器"""
    employee_number = 0 # 用于实现自动生成的员工号,永久存储后将由读取文件替代

    def __init__(self):
        self.name = '人力资源管理器1.0' # 自定义名字
        self.employees = [] # 自定义初始员工数组,永久存储后将由读取文件替代

    @classmethod
    def __create_id(cls): # id自动生成 永久存储读+写
        cls.employee_number += 1
        return '2018' + str(cls.employee_number).rjust(4, '0')

    def add_employee(self): # 添加学生 永久存储读+写
        print('the place of adding employee:')
        name = input('new employee\'s name:')
        age = int(input('new employee\'s age:'))
        sex = input('new employee\'s sex:')
        salary = int(input('new employee\'s salary:'))
        position = input('new employee\'s position:')
        department = input('new employee\'s department:')
        employee = Employee(name, age, sex, Management.__create_id(), salary, position, department)
        self.employees.append(employee)
        print('添加成功')

    def del_employee(self): # 删除学生(按照id)永久存储读+写
        print('the place of deleting employee:')
        staff_id = input('input the deleted employee\'s staff_id:')
        for employee in self.employees[:]:
            if employee.staff_id == staff_id:
                self.employees.remove(employee)
                break
        print('删除成功')

    def info_employee(self): # 单个员工信息查看(按照姓名)永久存储读
        print('the place of looking up a employee:')
        name = input('input the looking employee\'s name:')
        for employee in self.employees:
            if employee.name == name:
                print('name:%s age:%d sex:%s staff_id:%s salary:%d position:%s department:%s' %
                      (employee.name, employee.age, employee.sex,
                       employee.staff_id, employee.salary,
                       employee.position, employee.department))

    def max_salary_employee(self): # 最高工资员工信息提取 永久存储读
        print('the employee of having max salary:')
        max_employee = Employee('', 0, '', '', 0, '', '')
        for employee in self.employees:
            if max_employee.salary <= employee.salary:
                max_employee = employee
        print('name:%s age:%d sex:%s staff_id:%s salary:%d position:%s department:%s' %
              (max_employee.name, max_employee.age, employee.sex,
               max_employee.staff_id, max_employee.salary,
               max_employee.position, max_employee.department))

    def avg_department_salary(self): # 指定部门平均工资提取 永久存储读
        print('the avg_salary of a department:')
        department = input('the department\'s name:')
        sum1 = 0
        count = 0
        for employee in self.employees:
            if employee.department == department:
                sum1 += employee.salary
                count += 1
        print(sum1/count)

    def avg_age_allemployee(self): # 所有员工平均年龄 永久存储读
        print('the avg_age of the company:')
        sum1 = 0
        for employee in self.employees:
            sum1 += employee.age
        print(sum1/len(self.employees))

    def all_employee_info(self): # 显示所有员工信息 永久存储读
        print('all information of employees:')
        for employee in self.employees:
            print('name:%s age:%d sex:%s staff_id:%s salary:%d position:%s department:%s' %
                  (employee.name, employee.age, employee.sex,
                   employee.staff_id, employee.salary,
                   employee.position, employee.department))

    # @staticmethod
    # def json_read() 永久存储方法入口(未写)
    # @staticmethod
    # def json_write() 永久存储方法入口 (未写)

if __name__ == '__main__':
    # 测试代码
    management = Management()
    while True:
        management.add_employee()
        order = input('contiue? y/n >>>>')
        if order == 'n':
            break
    management.all_employee_info()
    management.del_employee()
    management.info_employee()
    management.all_employee_info()
    management.max_salary_employee()
    management.avg_department_salary()
    management.avg_age_allemployee()

测试代码可以自己设计

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 测试现在被普遍认为“保证产品质量”这个笼统的说法下,而测试本身是什么呢?今天我们就测试本身跟大家一起讨论。 测试是...
    西边人阅读 4,718评论 2 52
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,242评论 25 708
  • 我站在一角 似是置身于 别人的勾画之间 从未如此舒心 仿若沧海一粟 内心无比开阔 开阔到 忘记了你我
    风明_风吹过的瞬间阅读 150评论 0 2
  • Ver.黄少天 为了赶上最后一辆末班车,你不免走的急了一些。 冲冲忙忙间便撞上了一个人。 当你抬头正想给人家道歉的...
    句号酱阅读 187评论 0 1
  • 刚进扬州,就发现,树林延绵千里,天透着淡淡的蓝。百转莺啼,驾着春风,唱着一支欢快的歌,不觉间,便到了瘦西湖...
    钱宇彤阅读 779评论 4 2