員工信息管理系統
README
一、作業
現要求你寫一個簡單的員工信息增刪改查程序,需求如下:
當然此表你在文件存儲時可以這樣表示
1,Alex Li,22,13651054608,IT,2013-04-01 2,Jack Wang,28,13451024608,HR,2015-01-07 3,Rain Wang,21,13451054608,IT,2017-04-01 4,Mack Qiao,44,15653354208,Sales,2016-02-01 5,Rachel Chen,23,13351024606,IT,2013-03-16 6,Eric Liu,19,18531054602,Marketing,2012-12-01 7,Chao Zhang,21,13235324334,Administration,2011-08-08 8,Kevin Chen,22,13151054603,Sales,2013-04-01 9,Shit Wen,20,13351024602,IT,2017-07-03 10,Shanshan Du,26,13698424612,Operation,2017-07-02
1.可進行模糊查詢,語法至少支持下面3種查詢語法:
find name,age from staff_table where age > 22
find * from staff_table where dept = "IT"
find * from staff_table where enroll_date like "2013"
2.可創建新員工紀錄,以phone做唯一鍵(即不允許表裏有手機號重復的情況),staff_id需自增
語法: add staff_table Alex Li,25,134435344,IT,2015-10-29
3.可刪除指定員工信息紀錄,輸入員工id,即可刪除
語法: del from staff where id=3
4.可修改員工信息,語法如下:
UPDATE staff_table SET dept="Market" WHERE dept = "IT" 把所有dept=IT的紀錄的dept改成Market
UPDATE staff_table SET age=25 WHERE name = "Alex Li" 把name=Alex Li的紀錄的年齡改成25
5.以上每條語名執行完畢後,要顯示這條語句影響了多少條紀錄。 比如查詢語句 就顯示 查詢出了多少條、修改語句就顯示修改了多少條等。
註意:以上需求,要充分使用函數,請盡你的最大限度來減少重復代碼!
二、程序目錄結構
├──員工管信息管理系統
│
├—— README
│
├── staff_table # 員工信息表數據
│
├—— staff.py # 主程序
三、程序效果圖
四、功能驗證
1、用戶登錄驗證 (用戶名:admin 密碼:123456)
驗證目的:當用戶未登錄時,調用增刪改查功能時,都需要身份驗證
2、增加員工信息
增加員工時,staff_id 自增,phone 不可重復
3、刪除員工信息
現在刪除剛才增加的員工信息,staff_id 為刪除條件,刪除後,staff_id 自動排序
4、修改員工信息
修改方式:
只有age和dept能被修改,修改語句如下(請任選以下修改語句):
a、UPDATE staff_table SET dept="Market" WHERE dept = "IT"
b、UPDATE staff_table SET age=25 WHERE name = "Alex Li"
5、查詢員工信息
本系統支持以下三種查詢方法(查詢條件分別為:age、dept、enroll_date):
a、find name,age from staff_table where age > 22
b、find * from staff_table where dept = "IT"
c、find * from staff_table where enroll_date like "2013"
六、程序代碼:
import sys status_flag = False # 標記用戶登錄狀態 0代表為登錄,1代表已登錄 # 打印菜單 def menu(): info = ‘‘‘ ==========員工信息表========== 1、增加員工信息 2、刪除員工信息 3、修改員工信息 4、查詢員工信息 5、退出 ============================= ‘‘‘ print(info) # 用戶登錄驗證器 def login(func): def inner(): global status_flag # 聲明全局變量 if status_flag: func() else: user = ‘admin‘ passwd = ‘123456‘ print("請先登錄管理員賬戶!") username = input("用戶名: ") password = input("密碼:") if username == user and password == passwd: print("Welcome!", username) status_flag = True func() else: print("Logon failure!") sys.exit(1) return inner #將文件信息轉換成[[],[]...]形式的列表 def change(): staff_list = [] with open(‘staff_table‘,‘r‘,encoding=‘utf-8‘) as staff_f: for i in staff_f: i = i.strip(‘\n‘).split(‘,‘) staff_list.append(i) return staff_list #更新文件信息 def update_file(staff_list): with open(‘staff_table‘, ‘w‘,encoding=‘utf-8‘) as staff_f: for i in staff_list: i = ‘,‘.join(i)+‘\n‘ staff_f.write(i) #增加函數 @login def add(): print(‘=*=‘*20) print("添加的內容格式請按照: Alex Li,25,13651054608,IT,2015-10-29") print(‘=*=‘*20) staff_list = change() addInfo = input("add staff_table ").strip() addInfo_list = addInfo.split(‘,‘) if len(addInfo_list) == 5: phone_list = [] for i in staff_list: phone_list.append(i[3]) if addInfo_list[2] in phone_list: print("phone 號碼已存在,此次添加無效!") else: max_id = int(staff_list[-1][0]) add_id = max_id + 1 addInfo_list.insert(0,add_id) addInfo_list[0] = str(addInfo_list[0]) staff_list.append(addInfo_list) update_file(staff_list) print("以下員工信息已添加成功!") print(‘,‘.join(addInfo_list)) else: print("%s為無效的輸入!"%addInfo) #刪除函數 @login def delete(): print(‘=*=‘ * 20) print("請輸入您想要刪除員工的staff_id") staff_list = change() ID = input("del from staff where id = ").strip() if ID.isdigit(): ID = int(ID) del_list = [] max_id = int(staff_list[-1][0]) # 獲取最後一行數據的序號 if ID <= max_id: for i,k in enumerate(staff_list): if int(k[0]) == ID: del_list.append(k) del staff_list[i] if len(del_list) == 0: print("staff_ID為%d的員工不存在..."%ID) else: print("以下員工已被刪除成功!") for i in del_list: i[0] = str(i[0]) print(‘,‘.join(i)) update_file(staff_list) else: print("staff_id:%d 不存在!"%ID) else: print("%s為無效的輸入..."%ID) #修改函數 @login def update(): update_info = ‘‘‘ =*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*= 只有age和dept能被修改,修改語句如下(請任選以下修改語句): 1、UPDATE staff_table SET dept="Market" WHERE dept = "IT" 2、UPDATE staff_table SET age=25 WHERE name = "Alex Li" ‘‘‘ print(update_info) staff_list = change() update_choice = input("您想根據什麽修改信息?(name or dept):").strip() if update_choice == ‘dept‘: old_dept = input("請輸入修改條件dept:").strip() new_dept = input("請輸入修改之後dept的值:").strip() updateDept_list = [] for i in staff_list: if i[4] == old_dept: i[4] = new_dept updateDept_list.append(i) if len(updateDept_list) > 0: print("以下信息已經修改成功!") for i in updateDept_list: print(‘,‘.join(i)) update_file(staff_list) else: print("%s不存在!"%old_dept) elif update_choice == ‘name‘: Name = input("請輸入修改條件name的值:").strip() new_age = input("請輸入修改後的age:").strip() updateAge_list = [] for i,k in enumerate(staff_list): if k[1] == Name: staff_list[i][2] = new_age updateAge_list.append(k) if len(updateAge_list) > 0: print("以下信息已經修改成功!") for i in updateAge_list: print(‘,‘.join(i)) update_file(staff_list) else: print("%s不存在!"%Name) else: print("%s為無效的輸入..."%update_choice) #查詢函數 @login def find(): find_info = ‘‘‘ =*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*= 本系統支持以下三種查詢方法(查詢條件分別為:age、dept、enroll_date): 1、find name,age from staff_table where age > 22 2、find * from staff_table where dept = "IT" 3、find * from staff_table where enroll_date like "2013" ‘‘‘ print(find_info) staff_list = change() find_choice = input("您想使用哪種方法查詢員工信息(請填寫查詢條件):").strip() if find_choice == ‘age‘: find_age = input("find name,age from staff_table where age > ").strip() if find_age.isdigit(): find_age = int(find_age) findAge_list = [] for i in staff_list: i[2] = int(i[2]) if i[2] > find_age: findAge_list.append(i) if len(findAge_list) > 0: print("符合條件的信息如下:") for i in findAge_list: print("%s,%s"%(i[1],i[2])) else: print("無age大於%s的員工信息!"%find_age) else: print("%s非數字,輸入無效!"%find_age) elif find_choice == ‘dept‘: find_dept = input("find * from staff_table where dept = ") findDept_list = [] for i in staff_list: if i[4] == find_dept: findDept_list.append(i) if len(findDept_list) > 0: print("符合條件的信息如下:") for i in findDept_list: print(‘,‘.join(i)) else: print("無dept為%s的員工信息!" % find_dept) elif find_choice == ‘enroll_date‘: findEnroll_date = input("find * from staff_table where enroll_date like ") findEnroll_date_list = [] for i in staff_list: i_date = i[5] i_date = i_date.split(‘-‘)[0] if i_date == findEnroll_date: findEnroll_date_list.append(i) if len(findEnroll_date_list) > 0: print("符合條件的信息如下:") for i in findEnroll_date_list: print(‘,‘.join(i)) else: print("Enroll_date為%s 的信息不存在!"%findEnroll_date) else: print("%s為無效的輸入!"%find_choice) def main(): while True: menu() choice = input("請選擇:").strip() if choice == ‘1‘: add() elif choice == ‘2‘: delete() elif choice == ‘3‘: update() elif choice == ‘4‘: find() elif choice == ‘5‘: sys.exit("logout......") else: print("無效的輸入!") main()
員工信息管理系統