1. 程式人生 > >python第二次週末大作業

python第二次週末大作業

題目

 

'''
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 time import os print("歡迎來到HR⼈⼒資源管理系統") menu = ("檢視員⼯資訊", "新增員⼯資訊", "修改員⼯資訊", "刪除員⼯資訊", "退出")
#  ("檢視員⼯資訊","新增員⼯資訊", "修改員⼯資訊", "刪除員⼯資訊", "退出")
import time
import os

def log(content):
    f = open("emp.log", mode="a", encoding="utf-8")
    f.write(content+"\n")
    f.flush()
    f.close()

def chakan(): # 第二個 print("編號\t\t名字\t\t生日\t\t收入\t\t錄入時間") f = open("emp.db", mode="r", encoding="utf-8") for line in f: lst = line.strip().split("_") print(lst[0]+"\t"+lst[1]+"\t"+lst[2]+"\t"+lst[3]+"\t"+lst[4]) print("檢視完畢!!!!") def tianjia(): # 第一個 flag = True
while flag: id = input("請輸入員工的id:") # 判定id是否可用 f = open("emp.db", mode="r", encoding="utf-8") for line in f: if id == line.strip().split("_")[0]: print("對不起. id已經重複了. 不可用. 請重新輸入") break else: print("id不重複,可以使用") flag = False name = input("請輸入員工的name:") birthday = input("請輸入員工的birthday:") salary = input("請輸入員工的salary:") input_time = time.strftime("%Y-%m-%d %H:%M:%S") # 獲取系統時間 f = open("emp.db", mode="a", encoding="utf-8") f.write(id+"_"+name+"_"+birthday+"_"+salary+"_"+input_time+"\n") f.flush() f.close() print("新增成功!!!") log(f"管理員xxx在{input_time}添加了一個員工, 該員工資訊為: {id}_{name}_{birthday}_{salary}_{input_time}") def xiugai(): # 第四個 flag = True while flag: id = input("請輸入你要修改的員工的id:") f = open("emp.db", mode="r", encoding="utf-8") for line in f: lst = line.strip().split("_") if id == lst[0]: print("當前員工的資訊是: %s\t%s\t%s\t%s\t%s" % (lst[0], lst[1], lst[2],lst[3],lst[4]) ) flag = False break else: print("id不存在,請重新輸入") f.flush() f.close() salary = input("請輸入該員工的最新工資") with open("emp.db", mode="r", encoding="utf-8") as f1, \ open("emp.db_副本", mode="w", encoding="utf-8") as f2: for line in f1: lst = line.strip().split("_") if id == lst[0]: line = f"{id}_{lst[1]}_{lst[2]}_{salary}_{time.strftime('%Y-%m-%d %H:%M:%S')}" f2.write(line) # 修改 os.remove("emp.db") os.rename("emp.db_副本", "emp.db") print("修改員工資訊完畢!!!") def shanchu(): # 第三個 id = input("請輸入你要刪除的員工的id") with open("emp.db", mode="r", encoding="utf-8") as f1, \ open("emp.db_副本", mode="w", encoding="utf-8") as f2: for line in f1: if id == line.strip().split("_")[0]: continue f2.write(line) # 不要刪除的資料 os.remove("emp.db") os.rename("emp.db_副本", "emp.db") print("刪除完畢!!!!") menu = ("檢視員工資訊","新增員工資訊", "修改員工資訊", "刪除員工資訊", "退出") while 1: for i in range(len(menu)): print(i + 1, menu[i]) n = input("請輸入你要執行的選單:") if n == '1': chakan() elif n == '2': tianjia() elif n == "3": xiugai() elif n == "4": shanchu() elif n == "5": print("程式退出") exit() else: print("對不起. 您輸入的選單不存在. 請重新輸入")