週末小練習

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 文件中的內容格式本身定義. 這個沒有要求. 可是要符合你本身的設計需求.git

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('請輸入正確的操做編碼')
相關文章
相關標籤/搜索