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('請輸入正確的操做編碼')