python實(shí)現(xiàn)員工管理系統(tǒng)
這是一個(gè)簡易的員工管理系統(tǒng),實(shí)現(xiàn)最簡單的功能:
1.登錄用戶密碼驗(yàn)證(錯(cuò)誤三次自動(dòng)退出)
2.支持文本員工的搜索、添加、刪除、修改
3.一級(jí)層級(jí)多個(gè)選項(xiàng)、二級(jí)層級(jí)多個(gè)選項(xiàng),都支持判空、退出、返回上一層級(jí)
4.針對(duì)刪除和修改有員工當(dāng)前自動(dòng)搜索到的結(jié)果進(jìn)行參照修改和特殊提醒是否刪除
用到的基礎(chǔ)知識(shí)點(diǎn)比較多:
1.計(jì)數(shù)器
2.while True 以及給while做退出層級(jí)標(biāo)記
3.if…elif…else 的嵌套使用
4.continue 和 break 以及簡單函數(shù)定義def
5.鍵盤抓取 raw_input 以及通過 os.system(‘clear')來調(diào)用linux中shell下的命令。
6.文本的讀取寫入原理(單讀的不能實(shí)際寫入,只能通過轉(zhuǎn)存文本覆蓋寫入。)
如果是‘a(chǎn)+'則只為讀取并可通過'writelines()'來寫入,是追加寫入
如果是‘w+'則為寫入,可通過‘writelines()'來寫入,是覆蓋寫入
7.列表的構(gòu)成原理,列表的轉(zhuǎn)換,列表的定位以及下標(biāo)獲取 listname.index(line)
8.特別需要注意程序執(zhí)行前后順序以及嚴(yán)格的縮進(jìn)格式

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
import sys
import os
#系統(tǒng)的用戶登錄
#os.system('clear')
time = 0
while True: #this is login
if time < 3:
name = raw_input("\033[1mplease input your login account:").strip()
passwd = raw_input("\033[1mplease input your login password:").strip()
if len(name) == 0: #.strip()意為去除空格
print("\033[31mIt's not allow empty input!\n")
continue
elif name == 'zhangjun' and passwd == '123.com':
print("\033[32mYour account and password right!")
pass
else:
print("\033[31mYour account or password error!")
time += 1
continue
break
else:
print("\033[31mYou are wrong three times, has already quit from the system!")
sys.exit()
#系統(tǒng)的選擇界面
#os.system('clear')
print ('\n')
def display(): #進(jìn)行登陸后界面的函數(shù)定義,方便在下面的選用層級(jí)后,返回上一層時(shí),依然可以看到選擇大屏。
print("\033[34m########################################################################")
print("\033[34m\t######### \033[1;32mWelcome to this employee search system!\033[0;34m #########")
print("\033[34m\t\t#################################################")
print("\n")
print("\033[32m\033[1m\t\t\t1\033[33m\033[1m.Search.(you can search the infomation for employee!)\n")
print("\033[32m\033[1m\t\t\t2\033[33m\033[1m.Add.(Add a user into this employee system!)\n")
print("\033[32m\033[1m\t\t\t3\033[33m\033[1m.Delete.(Delete a user from this employee system!)\n")
print("\033[32m\033[1m\t\t\t4\033[33m\033[1m.Modify.(You can modify something infomation in this employee system!)\n")
print("\033[32m\033[1m\t\t\t5\033[33m\033[1m.Quit.(quit this employee system!)\n")
print("\n")
dict ()
#指定文件路徑
path = 'D:\Users\Franzhang\employee_list.txt'
#定義while層級(jí)標(biāo)記break_tag1 = 0 以及登陸初始提示
break_tag1 = 0
while break_tag1 == 0:
display()
select_input = raw_input ("\033[37m\033[1mplease input you want to select items:").strip ()
if len(select_input) == 0:
continue
elif select_input == 'quit':
sys.exit ()
#選項(xiàng)1進(jìn)行模糊搜索
elif int(select_input) == 1:
# os.system('clear')
break_tag2 = 0
while break_tag2 == 0:
content_open = open (path)
search_input = raw_input ("please input your need (SEARCH MODE):").strip ()
for line in content_open:
if len (search_input) == 0:
continue
elif search_input in line:
print line
else:
if search_input == 'all': #展示文本目前所有員工
print line
elif search_input == 'quit':
break_tag2 = 1 #返回上一層級(jí)選擇項(xiàng)
#選項(xiàng)2進(jìn)行員工信息添加(其實(shí)是添加了一行列表)
elif int(select_input) == 2:
# os.system('clear')
content_write = file (path, 'a+') #讀入文本
break_tag3 = 0
while break_tag3 == 0:
addid_input = raw_input ("please input your need (ADD_ID):").strip ()
if len (addid_input) == 0:
continue
elif addid_input == 'quit':
break_tag3 = 1
content_write.close () #文本使用完畢后需要關(guān)閉,以免占用內(nèi)存。
break
addname_input = raw_input ("please input your need (ADD_NAME):").strip ()
if len (addid_input) == 0:
continue
elif addname_input == 'quit':
break_tag3 = 1
content_write.close ()
break
addage_input = raw_input ("please input your need (ADD_AGE):").strip ()
if len (addid_input) == 0:
continue
elif addage_input == 'quit':
break_tag3 = 1
content_write.close ()
break
adddpt_input = raw_input ("please input your need (ADD_DPT):").strip ()
if len (addid_input) == 0:
continue
elif adddpt_input == 'quit':
break_tag3 = 1
content_write.close ()
break
addphone_input = raw_input ("please input your need (ADD_phone):").strip ()
if len (addid_input) == 0:
continue
elif addphone_input == 'quit':
break_tag3 = 1
content_write.close ()
break
list_add = [addid_input, '\t', addname_input, '\t', addage_input, '\t', adddpt_input, '\t', addphone_input,'\n'] #將上面的單項(xiàng)錄入寫入列表list_add
content_write.writelines (list_add) #將列表追加寫入文本
print("It's already insert the list!")
continue
#選項(xiàng)3進(jìn)行員工刪除
elif int(select_input) == 3:
# os.system('clear')
break_tag4 = 0
while break_tag4 == 0:
content_opend = open (path)
delete_input = raw_input ("please input your need (DELETE):").strip ()
if len (delete_input) == 0:
continue
elif delete_input == 'quit':
break_tag4 = 1
for line in content_opend:
if delete_input in line:
print line
sure = raw_input ("Are you sure delete this account line ? (yes/no):").strip ()
if len (sure) == 0:
continue
elif sure == 'yes':
inside = file (path, 'a+')
bebe = inside.readlines () #按行讀入文本并轉(zhuǎn)換為列表data
data = list (bebe)
for i in data:
if delete_input in i:
w = data.index (i) #獲取輸入的員工在整個(gè)文本列表的位置
del data[w] #刪除單行
data_in = data #轉(zhuǎn)存刪除后的文本列表(這個(gè)時(shí)候被讀取的經(jīng)過刪除后的內(nèi)容還在內(nèi)存中。)
inside.close () #轉(zhuǎn)存后在關(guān)閉文本,否則導(dǎo)致轉(zhuǎn)存因提前關(guān)閉而無效。
inside_w = file (path, 'w+') #再次以覆蓋寫入方式讀取文本
inside_w.writelines (data_in) #將剛才轉(zhuǎn)存的文本寫入
inside_w.close () #關(guān)閉文本后會(huì)自動(dòng)保存寫入
break
elif sure == 'no':
break
continue
#選項(xiàng)4進(jìn)行員工信息更改(整條員工信息的更改)
elif int(select_input) == 4:
break_tag5 = 0
while break_tag5 == 0:
modify_input = raw_input ("please input your modify item:").strip ()
if len (modify_input) == 0:
continue
elif modify_input == 'quit':
break
content_modify = file (path, 'a+')
modify_line = content_modify.readlines ()
modata = list (modify_line)
for i in modata:
if modify_input in i:
ms = modata.index (i)#獲取輸入變量的最終列表定位
print i
mosure = raw_input ("Are you sure to change this user ? (yes/no):").strip ()
if len (mosure) == 0:
continue
elif mosure == 'yes':
break_tag6 = 0
while break_tag6 == 0:
sureid_input = raw_input ("please input you will change this user id: ").strip ()
if len(sureid_input) == 0:
continue
elif sureid_input == 'quit':
break
surename_input = raw_input ("please input you will change this user name:").strip ()
if len(surename_input) == 0:
continue
elif surename_input == 'quit':
sureid_input = None #此處賦空值,為了防止中途退出,而出現(xiàn)個(gè)別寫入
surename_input = None
break
sureage_input = raw_input ("please input you will change this user age:").strip ()
if len(sureage_input) == 0:
continue
elif sureage_input == 'quit':
sureid_input = None
surename_input = None
sureage_input = None
break
suredep_input = raw_input ("please input you will change this user department:").strip ()
if len(suredep_input) == 0:
continue
elif suredep_input == 'quit':
sureid_input = None
surename_input = None
sureage_input = None
suredep_input = None
break
surephone_input = raw_input ("please input you will change this user phone:").strip ()
if len(surephone_input) == 0:
continue
elif surephone_input == 'quit':
sureid_input = None
surename_input = None
sureage_input = None
suredep_input = None
surephone_input = None
break
later_sure = [sureid_input, '\t', surename_input, '\t\t', sureage_input, '\t', suredep_input,'\t', surephone_input, '\n']#將上面的值放入列表
del modata[ms] #當(dāng)整個(gè)輸入完成以后再進(jìn)行刪除,防止中途退出未完成狀體的刪除。
modata_one = modata
content_modify.close () #這里還是使用了刪除、轉(zhuǎn)存、重新寫入的原理
content_modify_list = file (path, 'w+')
content_modify_list.writelines (modata_one)
content_modify_list.close ()
content_modify_list_one = file (path, 'a+')
content_modify_list_one.writelines (later_sure)
content_modify_list_one.close ()
break
elif mosure == 'quit' or 'no':
break
elif int (select_input) == 5:
print("Thank you for use this employee system, write by franzhang!")
sys.exit()
employee_list.txt:

更多學(xué)習(xí)資料請(qǐng)關(guān)注專題《管理系統(tǒng)開發(fā)》。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
在jupyter notebook 添加 conda 環(huán)境的操作詳解
這篇文章主要介紹了在jupyter notebook 添加 conda 環(huán)境的操作詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04
win32com操作word之Application&Documents接口學(xué)習(xí)
這篇文章主要為大家介紹了win32com操作word之Application&Documents接口學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
Python實(shí)現(xiàn)小數(shù)轉(zhuǎn)化為百分?jǐn)?shù)的格式化輸出方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)小數(shù)轉(zhuǎn)化為百分?jǐn)?shù)的格式化輸出方法,結(jié)合具體實(shí)例形式分析了Python實(shí)現(xiàn)小數(shù)轉(zhuǎn)換為百分?jǐn)?shù)輸出的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2017-09-09
python爬蟲實(shí)現(xiàn)教程轉(zhuǎn)換成 PDF 電子書
本文給大家分享的是使用python爬蟲實(shí)現(xiàn)把《廖雪峰的 Python 教程》轉(zhuǎn)換成PDF的方法和代碼,有需要的小伙伴可以參考下2017-02-02
關(guān)于Pandas的Series創(chuàng)建方式和常用屬性
這篇文章主要介紹了關(guān)于Pandas的Series創(chuàng)建方式和常用屬性,Series 數(shù)據(jù)結(jié)構(gòu)是用于儲(chǔ)存一個(gè)序列的一維數(shù)組,DataFrame 數(shù)據(jù)結(jié)構(gòu)是用于存儲(chǔ)復(fù)雜數(shù)據(jù)的二維數(shù)據(jù)結(jié)構(gòu),本文來詳細(xì)說明一下2023-07-07
玩轉(zhuǎn)python selenium鼠標(biāo)鍵盤操作(ActionChains)
這篇文章主要為大家詳細(xì)介紹了python selenium鼠標(biāo)鍵盤操作(ActionChains),教大家如何玩轉(zhuǎn)selenium鼠標(biāo)鍵盤,感興趣的小伙伴們可以參考一下2016-09-09
淺析Python中將單詞首字母大寫的capitalize()方法
這篇文章主要介紹了淺析Python中將單詞首字母大寫的capitalize()方法,是Python入門中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-05-05
python基礎(chǔ)教程項(xiàng)目三之萬能的XML
這篇文章主要為大家詳細(xì)介紹了python基礎(chǔ)教程項(xiàng)目三之萬能的XML,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04

