HR人力资源管理.
1. 菜单: ("查看员工信息","添加员工信息", "修改员工信息", "删除员工信息", "退出")
2. 添加员工信息: 用户输入员工的基本信息(id, name, birthday, salary, input_time),将员工信息写入到文件emp.db文件内
3. 修改员工信息: 显示所有员工信息. 然后让用户选择要修改的员工的id. 然后让用户输入员工的工资, 将员工的工资修改为用户输入的工资. 其余内容不做改动
4. 删除员工信息: 显示所有员工信息. 然后用户选择要删除的员工id, 根据用户输入的id删除该员工的全部信息
5. 查看员工信息: 显示出所有员工的基本信息.
以上操作都需要围绕着emp.db来完成.
关于时间的处理: 自己搜索time模块. 主要是针对input_time. birthday不用处理. 用户输入什么就是什么.
扩展(升级题):
用户的每一次操作成功都要将用户执行的操作记录在emp.log文件中(查看员工信息除外).
例如:
用户选择"添加员工信息". 当添加动作执行完毕, 在emp.log中记录一句话: 管理员在xxxx-xx-xx hh:mm:ss时间执行了添加员工信息操作. 添加的员工信息为: xxx
以此类推. 每次操作成功后都要记录信息. (查看员工信息除外)
emp.db 文件中的内容格式自己定义. 这个没有要求. 但是要符合你自己的设计需求.

import os
import time

def add():  # 新增员工信息
    print('请输入员工的基本信息')
    with open('emp.db', mode='a+', encoding='utf-8') as f, \
            open('emp.log', mode='a', encoding='utf-8') as f2:
        f.seek(0)
        first= f.readline().strip()
        if first =='':
            f.write('编号 姓名 生日 薪水 创建日期 修改日期\n')
        f.seek(0)
        a = 0
        f.readline().strip()  # 先读取第一行
        for line in f:       # 从第二行开始循环
            line= line.strip().split(' ')
            # print(line)
            a = int(line[0])
        id = str(a + 1)  # 取出最大的编号加1
        name = input('姓名:')  # 姓名
        while 1:   # 生日
            birthday = input('生日(例:20180101):')
            if len(birthday) != 8 or int(birthday[4:6]) > 12 or int(birthday[6:]) > 31 or not birthday.isdigit():
                print('生日格式不正确,请重新输入')
            else:
                break
        while 1:  # 薪水
            salary = input('薪水:')
            if not salary.isdigit():
                print('薪水格式不正确,请重新输入')
            else:
                break
        input_time = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))  # 创建时间
        f.write(input_time + ' ')
        change_time = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))   # 修改时间
        f.write(id + ' ')
        f.write(name + ' ')
        f.write(birthday + ' ')
        f.write(salary + ' ')
        f.write(change_time + '\n')
        times = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))  # 产生日志时间
        f2.write(f"管理员在 {times} 时间执行了添加员工信息操作,添加的员工信息为:编号:{id},姓名:{name},生日:{birthday},薪水:{salary}\n")
# add()


def look():
    with open('emp.db',mode='r',encoding='utf-8') as f:
        for line in f:
            print(line, end='')
        print('\n如上是所有员工信息')
# look()

def change():  # 修改员工信息
    with open('emp.db',mode='r',encoding='utf-8') as f,\
            open('emp_tmp.db', mode='a', encoding='utf-8') as f1, \
             open('emp.log', mode='a', encoding='utf-8') as f2:
        for line in f:
            print(line, end='')
        f.seek(0)
        num = input('\n请输入你想修改员工的编号:')
        sala = input('请输入你想修改的员工薪水:')
        for line in f:
            lines = line.strip().split(' ')
            if num == lines[0]:
                f1.write(num + ' ')
                nam = lines[1]
                f1.write(nam + ' ')
                f1.write(lines[2] + ' ')
                f1.write(sala + ' ')
                f1.write(lines[4] + ' ')
                shijian = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))  # 修改时间
                f1.write(shijian + '\n')
                time1 = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
                f2.write(f"管理员在 {time1} 时间执行了修改员工操作,将员工编号为{num},姓名为{nam}的薪水修改为{sala}\n")
            else:
                f1.write(line)

    os.remove('emp.db')
    os.rename('emp_tmp.db','emp.db')

# change()


def delete():  # 删除员工信息
    with open('emp.db', mode='r', encoding='utf-8') as f,\
        open('emp_tmp.db', mode='a', encoding='utf-8') as f1,\
        open('emp.log', mode='a', encoding='utf-8') as f2:
        for line in f:
            print(line, end='')
        f.seek(0)
        num = input('\n请输入你想要删除的员工的id:')
        for line in f:
            lines = line.strip().split(' ')
            if num == lines[0]:
                time1 = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
                f2.write(f"管理员在 {time1} 执行了删除员工操作,删除编号为{num},姓名为{lines[1]}的员工 \n")
                continue
            else:
                f1.write(line)
    os.remove('emp.db')
    os.rename('emp_tmp.db','emp.db')

# delete()

print("欢迎来到HR人力资源管理系统")
print('请输入括号内的字母,执行相关操作')
while 1:
    menu = input("查看员工信息(k), 添加员工信息(a), 修改员工信息(c), 删除员工信息(d), 退出(q):")
    if menu.upper() == 'K':   # 查看员工信息
        look()
    elif menu.upper() == 'A':  # 新增员工信息
        while 1:
            add()
            isadd = input('是否继续添加(Y/N):')
            if isadd.upper() == 'Y':
                continue
            print('退出添加操作')
            break
    elif menu.upper() == 'D':  #  删除员工信息
        while 1:
            delete()
            isdelete = input('是否继续删除(Y/N):')
            if isdelete.upper() == 'Y':
                continue
            print('退出删除操作')
            break
    elif menu.upper() == 'C':   #  修改员工信息
        while 1:
            change()
            ischange = input('是否继续修改(Y/N):')
            if ischange.upper() == 'Y':
                continue
            print('退出修改操作')
            break
    elif menu.upper() == 'Q':   # 退出
        print('操作完成,退出HR人力资源管理系统')
        break
    else:
        print('请输入正确的操作编码')

 

posted on 2018-12-11 19:43  古鲁月  阅读(271)  评论(0编辑  收藏  举报