HR人力资源管理系统
  • 菜单:
("查找员工信息","添加员工信息", "修改员⼯信息", "删除员⼯信息", "打印员工信息","退出")
  • 添加员⼯工信息:
⽤户输入员工的基本信息(id, name, birthday, salary, input_time),
  将员⼯信息写入到⽂文件employees.db⽂文件内
  • 修改员⼯信息:
显示所有员工信息. 然后让⽤户选择要修改的员⼯工的id. 然后让⽤户输⼊员工的工资,
  将员工的工资修改为⽤户输入的⼯工资. 其余内容不做改动
  • 删除员⼯信息:
显示所有员工信息. 然后用户选择要删除的员工id, 根据用户输入的id删除该员工的全部信息。
  • 查找员工信息:
打印出指定员工的基本信息.
  • 查看员工信息:
打印出所有员工的基本信息.

文件读写管理员工信息增删改查,采用注册ID确保唯一性。

import os

menu = \
"""
********************************** Welcome to hr managermanet system ****************************************
                                       
                                        1、查找员工信息
                                        2、添加员工信息
                                        3、修改员工信息
                                        4、删除员工信息
                                        5、打印员工信息
                                        6、退出

"""
def show_info():
    f = open('employees.db',mode='r',encoding='utf-8')
    print("{0:^2}\t{1:^4}\t{2:^4}\t{3:^4}\t{4:^4}".format('id','name','birthday','salary','input_time',chr(12288)))
    # print("id\tdname\tbirthday\tsalary\tinput_time")

    for line in f:
        line_lst = line.strip().split('|')
        # print(line_lst[0], line_lst[1], line_lst[2], line_lst[3], line_lst[4])
        print('\t'.join(line_lst))
    f.close()

def check_info():

    user_id = input("请输入查找员工ID:")
    f = open('employees.db',mode='r',encoding='utf-8')
    for line in f:
        line_lst = line.strip().split("|")
        if user_id == line_lst[0]:
            print("{0:^2}\t{1:^4}\t{2:^4}\t{3:^4}\t{4:^4}".format('id', 'name', 'birthday', 'salary', 'input_time',chr(12288)))
            print('\t'.join(line_lst))
            break
    else:   # 执行到这里,说明未执行 break
        print("该员工信息不存在!")
        return

def get_id():

    """
    获取db文件中最后一个员工id
    :return:
    """
    
    if os.path.getsize('employees.db') != 0:                       # 判断文件内容不为空

        with open('employees.db',mode='r',encoding='utf-8') as f:

            lines = f.readlines()
            last_line = lines[-1]
            last_id = int(last_line.strip().split("|")[0])

    else:

        last_id = 0

    return "{:0>3d}".format(last_id)                               # 返回 三位数的id整型

def add_employees():

    id = get_id()

    name = input("请输入员工姓名:")
    birthday = input("请输入员工生日:")
    salary = input("请输入员工的工资:")
    input_time = input("请输入录入时间:")

    f = open('employees.db',mode='a',encoding='utf-8')
    id = int(id) + 1
    f.write(str(id) +'|'+name+'|'+birthday+'|'+salary+'|'+input_time+'\n')
    f.flush()
    f.close()
    
    print("{0}员工添加成功!".format(id))

def upd_employees():

    user_id = input("请输入修改员工的ID:")
    f = open('employees.db',mode='r',encoding='utf-8')
    
    for line in f:
        lst = line.strip().split("|")
        if user_id == lst[0]:
            break
    else:
        print('未找到此员工信息!')
        return  # 停止程序
        
    f.close()

    changed_money = input("请输入修改工资大小为:")

    with open('employees.db',mode='r',encoding='utf-8') as f1,\
         open('employees.db_copy',mode='a',encoding='utf-8') as f2:

        for line in f1:
            line_lst = line.strip().split('|')
            if line_lst[0] == user_id:
                line_lst[3] = changed_money
                f2.write("|".join(line_lst)+'\n')
            else:
                f2.write(line)

    os.remove('employees.db')
    os.rename('employees.db_copy','employees.db')

    print("完成修改{0}员工信息!".format(user_id))

def del_employees():  # 删除文件内的某些内容实际上就是对文件进行修改

    user_id = input("请输入修改员工的ID:")
    f = open('employees.db',mode='r',encoding='utf-8')
    for line in f:
        lst = line.strip().split("|")
        if user_id == lst[0]:
            break
    else:
        print('未找到此员工信息!')
        return  # 停止程序

    f.close()

    with open('employees.db',mode='r',encoding='utf-8') as f1,\
         open('employees.db_copy',mode='a',encoding='utf-8') as f2:      # with 打开的文件不用管 close

         for line in f1:
             line_lst = line.strip().split('|')
             if line_lst[0] == user_id:
                 continue   # 找到该行,不处理
             f2.write(line)

    os.remove('employees.db')
    os.rename('employees.db_copy','employees.db')

    print("成功删除{0}员工信息!".format(user_id))

def main():
    while 1:
        print(menu)
        menu_select = input("请输入你要选的菜单: ").strip()       # .strip() 去除 空格 \t \n

        if menu_select == '1':      # input 获取的是 字符 1
            # 1、查看员工信息
            check_info()

        elif menu_select == '2':
            # 2、添加员工信息
            add_employees()

        elif menu_select == '3':
            # 3、修改员工信息
            upd_employees()

        elif menu_select == '4':
            # 4、删除员工信息
            del_employees()

        elif menu_select == '5':
            # 5、打印员工信息
            show_info()

        elif menu_select == '6':
            # 退出
            print("已退出程序,欢迎下次使用~ ")
            # exit()
            break
        else:
            print("您输入的内容有误,请重新输入!")

main()