zoukankan      html  css  js  c++  java
  • 周末小练习

    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('编号 姓名 生日 薪水 创建日期 修改日期
    ')
            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 + '
    ')
            times = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))  # 产生日志时间
            f2.write(f"管理员在 {times} 时间执行了添加员工信息操作,添加的员工信息为:编号:{id},姓名:{name},生日:{birthday},薪水:{salary}
    ")
    # add()
    
    
    def look():
        with open('emp.db',mode='r',encoding='utf-8') as f:
            for line in f:
                print(line, end='')
            print('
    如上是所有员工信息')
    # 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('
    请输入你想修改员工的编号:')
            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 + '
    ')
                    time1 = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
                    f2.write(f"管理员在 {time1} 时间执行了修改员工操作,将员工编号为{num},姓名为{nam}的薪水修改为{sala}
    ")
                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('
    请输入你想要删除的员工的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]}的员工 
    ")
                    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('请输入正确的操作编码')
  • 相关阅读:
    测光
    闪光灯
    快门
    光圈
    白加黑减
    曝光补偿
    取景雷区
    着眼点
    Web中的无状态含义
    图计算模型[转]
  • 原文地址:https://www.cnblogs.com/1915823-huxt/p/10104557.html
Copyright © 2011-2022 走看看