這是一個簡易的員工管理系統,實現最簡單的功能:
1.登錄用戶密碼驗證(錯誤三次自動退出)
2.支持文本員工的搜索、添加、刪除、修改
3.一級層級多個選項、二級層級多個選項,都支持判空、退出、返回上一層級
4.針對刪除和修改有員工當前自動搜索到的結果進行參照修改和特殊提醒是否刪除
用到的基礎知識點比較多:
1.計數器
2.while True 以及給while做退出層級標記
3.if…elif…else 的嵌套使用
4.continue 和 break 以及簡單函數定義def
5.鍵盤抓取 raw_input 以及通過 os.system(‘clear')來調用linux中shell下的命令。
6.文本的讀取寫入原理(單讀的不能實際寫入,只能通過轉存文本覆蓋寫入。)
如果是‘a+'則只為讀取并可通過'writelines()'來寫入,是追加寫入
如果是‘w+'則為寫入,可通過‘writelines()'來寫入,是覆蓋寫入
7.列表的構成原理,列表的轉換,列表的定位以及下標獲取 listname.index(line)
8.特別需要注意程序執行前后順序以及嚴格的縮進格式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
|
#!/usr/bin/env python # _*_ coding:utf-8 _*_ import sys import os #系統的用戶登錄 #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() #系統的選擇界面 #os.system('clear') print ( '\n' ) def display(): #進行登陸后界面的函數定義,方便在下面的選用層級后,返回上一層時,依然可以看到選擇大屏。 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層級標記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 () #選項1進行模糊搜索 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 #返回上一層級選擇項 #選項2進行員工信息添加(其實是添加了一行列表) 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 () #文本使用完畢后需要關閉,以免占用內存。 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' ] #將上面的單項錄入寫入列表list_add content_write.writelines (list_add) #將列表追加寫入文本 print ( "It's already insert the list!" ) continue #選項3進行員工刪除 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 () #按行讀入文本并轉換為列表data data = list (bebe) for i in data: if delete_input in i: w = data.index (i) #獲取輸入的員工在整個文本列表的位置 del data[w] #刪除單行 data_in = data #轉存刪除后的文本列表(這個時候被讀取的經過刪除后的內容還在內存中。) inside.close () #轉存后在關閉文本,否則導致轉存因提前關閉而無效。 inside_w = file (path, 'w+' ) #再次以覆蓋寫入方式讀取文本 inside_w.writelines (data_in) #將剛才轉存的文本寫入 inside_w.close () #關閉文本后會自動保存寫入 break elif sure = = 'no' : break continue #選項4進行員工信息更改(整條員工信息的更改) 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 #此處賦空值,為了防止中途退出,而出現個別寫入 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] #當整個輸入完成以后再進行刪除,防止中途退出未完成狀體的刪除。 modata_one = modata content_modify.close () #這里還是使用了刪除、轉存、重新寫入的原理 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:
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。