python第二次週末大作業
阿新 • • 發佈:2018-12-26
題目
''' 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 = Truewhile 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("對不起. 您輸入的選單不存在. 請重新輸入")