老男孩Day3作業:工資管理系統
阿新 • • 發佈:2017-08-25
當前 chan 輸入 github ref 函數 txt文件 nes 第三周
作業需求:
1、從info.txt文件中讀取員工及其工資信息,最後將修改或增加的員工工資信息也寫入原info.txt文件。
2、能增查改員工工資
3、增、改員工工資用空格分隔
4、實現退出功能
1)編寫思路
編寫思路參考下面GitHub鏈接中的流程圖
https://github.com/KongChan1988/51CTO-Treasure/blob/master/Python_Study/%E7%AC%AC%E4%B8%80%E6%A8%A1%E5%9D%97%E5%AD%A6%E4%B9%A0/Day03/HomeWork/OB%2423%259IE%24XR8D59IN0%7B%24SJ.jpg
2)具體實現
#-*- Coding:utf-8 -*- # Author: D.Gray ‘‘‘ 作業需求 1、從info.txt文件中讀取員工及其工資信息,最後將修改或增加的員工工資信息也寫入原info.txt文件。 2、能增查改員工工資 3、增、改員工工資用空格分隔 4、實現退出功能 ‘‘‘ import sys,os,re operation_lists = ‘‘‘1.查詢工資 2.修改工資 3.增加新員工記錄 4.刪除員工信息 5.退出‘‘‘ user_dict = {} #定義一個存儲員工姓名及工資的空字典 def user_information():‘‘‘定義一個員工信息函數‘‘‘ with open(‘info‘,‘r‘) as f: for i in f: i = i.strip() #剔除字符串中的前後空格和換行 user_dict[i.split()[0]] = i.split()[1] #將員工姓名及工資存儲到user_dict字典中,i.split()[0]=員工姓名 作為鍵 #i.split()[1]=員工工資 作為值 print(‘當前員工姓名:‘,i.split()[0]) def user_operations(): ‘‘‘定義一個用戶操作的函數‘‘‘ while True: print(operation_lists) user_operation = input(‘請選擇操作編號>>>:‘) if user_operation.isdigit(): user_operation = int(user_operation) if user_operation > 5: print(‘\033[31;1m請輸入有效操作編號\033[0m‘) if user_operation == 1: user_enquiries() if user_operation == 2: salary_change() if user_operation == 3: add_users() if user_operation == 4: del_users() if user_operation == 5: sys.exit(‘程序退出‘) else: print(‘\033[31;1m請輸入有效操作編號\033[0m‘) def user_enquiries(): ‘‘‘定義一個用戶查詢的函數‘‘‘ while True: user_information() enquirie_name = input(‘請輸入要查詢的員工姓名(例如:Alex):‘) if enquirie_name.capitalize() in user_dict: #將輸入的員工姓名首字母變大寫,方便用戶輸入 print(‘\033[32;1m%s\033[0m 工資為: \033[32;1m%s\033[0m元‘ %(enquirie_name.capitalize(),user_dict[enquirie_name.capitalize()])) break else: print(‘\033[31;1m請輸入有效用戶名\033[0m‘) def salary_change(): ‘‘‘定義一個修改工資函數‘‘‘ while True: user_information() change_salary = input(‘請輸入要修改的員工姓名和工資,用空格分隔(例如:Alex 10):‘) salary_lists = change_salary.split() #將用戶輸入的姓名和工資以列表形式打印 if len(salary_lists) < 2: #判斷輸入內容格式是否正確 姓名 工資 print(‘\033[31;1m請輸入正確格式內容\033[0m‘) elif not salary_lists[1].isdigit(): #判斷輸入的工資是否是數字 print(‘\033[31;1m請輸入有效工資金額\033[0m‘) else: _name = salary_lists[0].capitalize() #定義_name變量存儲 用戶輸入的姓名 _salary = salary_lists[1] #定義_salary變量存儲 用戶輸入的工資 if _name in user_dict: with open(‘info‘,‘r‘) as f: lines = f.readlines() with open(‘info‘,‘w‘) as f_w: for line in lines: if _name in line: line = line.replace(user_dict[_name],_salary) #將源文件中的工資金額替換為修改後的工資金額 f_w.write(line) print(‘已將 \033[32;1m%s\033[0m 的工資修改為 \033[32;1m%s\033[0m元‘%(_name,_salary)) break else: print(‘\033[31;1m該用戶不存在\033[0m‘) def add_users(): ‘‘‘定義一個增加員工函數‘‘‘ while True: user_information() add_user = input(‘請輸入要增加員工姓名和工資,用空格分隔(例如:Eric 100000):‘) add_lists = add_user.split() if len(add_lists) < 2: #判斷輸入內容格式是否正確 姓名 工資 print(‘\033[31;1m請輸入正確格式內容\033[0m‘) elif not add_lists[1].isdigit(): #判斷輸入的工資是否是數字 print(‘\033[31;1m請輸入有效工資金額\033[0m‘) else: _name = add_lists[0].capitalize() # 定義_name變量存儲 用戶輸入的姓名 _salary = add_lists[1] # 定義_salary變量存儲 用戶輸入的工資 if _name in user_dict: #判斷輸入的姓名是否已存在 print(‘\033[31;1m該用戶已存在\033[0m‘) elif not _name.isalpha(): #判斷輸入的姓名是否是純英文 print(‘\033[31;1m請輸入正確姓名\033[0m‘) else: with open(‘info‘,‘a‘) as f: f.write(_name+‘ ‘) f.write(_salary+‘\n‘) print(‘已將 \033[32;1m%s\033[0m 的信息添加成功‘ % _name) break def del_users(): ‘‘‘定義一個刪除員工函數‘‘‘ while True: user_information() del_user = input(‘請輸入要刪除的員工姓名(例如:Alex):‘) del_name = del_user.capitalize() if del_name in user_dict: #將輸入的員工姓名首字母變大寫,方便用戶輸入 confirm_del = input(‘是否確認刪除\033[32;1m%s\033[0m員工信息>>>任意鍵確認刪除、按N不刪除:‘ %del_user.capitalize()) if confirm_del.capitalize() != ‘N‘: #判斷用戶選擇確認刪除 list = [] #定義一個空列表存儲不需要刪除員工信息 with open(‘info‘,‘r‘) as f: lines = f.readlines() for line in lines: if not re.search(del_name,line): #判斷哪些員工不需要刪除 del_name為確認刪除的員工 list.append(line) with open(‘info‘,‘w‘) as f: f.writelines(list) #將不需要刪除員工的信息列表重新寫入 info文本中 print(‘\033[32;1m%s\033[0m的員工信息已刪除‘%del_user.capitalize()) break else: print(‘\033[31;1m已取消刪除\033[0m‘) else: print(‘\033[31;1m該用戶不存在\033[0m‘) user_operations()
3)Github筆記
第三周的筆記的地址是:
https://github.com/KongChan1988/51CTO-Treasure/tree/master/Python_Study/%E7%AC%AC%E4%B8%80%E6%A8%A1%E5%9D%97%E5%AD%A6%E4%B9%A0/Day03/Practice%20Notes
4)Readme.md文檔
https://github.com/KongChan1988/51CTO-Treasure/blob/master/Python_Study/%E7%AC%AC%E4%B8%80%E6%A8%A1%E5%9D%97%E5%AD%A6%E4%B9%A0/Day03/HomeWork/readme_%E5%B7%A5%E8%B5%84%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F.md
老男孩Day3作業:工資管理系統