Python 員工信息管理系統

来源:https://www.cnblogs.com/mygzhh/archive/2018/05/22/9070125.html
-Advertisement-
Play Games

學Python將近一個月了,第一次寫了兩百多行代碼,一個很簡單的腳本。 員工信息管理系統: 需求: 1.管理員賬戶能夠增加,刪除,修改,查詢員工信息,並且設置管理員賬戶。 2.普通賬戶可以查看所有員工信息,但不能增加,修改,刪除員工信息。 3.可以針對員工信息類型進行模糊查詢,並能記錄搜索出多少條結 ...


學Python將近一個月了,第一次寫了兩百多行代碼,一個很簡單的腳本。

員工信息管理系統:

需求:

1.管理員賬戶能夠增加,刪除,修改,查詢員工信息,並且設置管理員賬戶。

2.普通賬戶可以查看所有員工信息,但不能增加,修改,刪除員工信息。

3.可以針對員工信息類型進行模糊查詢,並能記錄搜索出多少條結果。

4.三次密碼輸入錯誤退出程式。

5.員工工號自增。

思路:

時間太晚了,明天再寫。

具體實現代碼

  1 #coding=utf-8
  2 #__author:Administrator
  3 #__time:2018/5/21 12:43
  4 #__file_name:staff_list
  5 
  6 import io
  7 import time
  8 import os
  9 
 10 FileRead = io.open('Staff_list','r',encoding='utf8')
 11 Staff_list = eval(FileRead.read())
 12 username = 0
 13 
 14 '''
 15 員工信息管理系統
 16 需求:
 17 1.增
 18 2.刪
 19 3.改
 20 4.查
 21 5.管理員登陸
 22 6.模糊搜索
 23 '''
 24 
 25 string = '''
 26         工號:%s
 27         姓名:%s
 28         年齡:%s
 29         部門:%s
 30         地址:%s
 31         電話:%s
 32          Q Q:%s
 33         微信:%s
 34         入職時間:%s
 35 '''
 36 
 37 Project = ['姓名','年齡','部門','地址','電話','qq','微信','入職時間']
 38 
 39 def login():#登陸模塊
 40     global username
 41     print '='*43,'員工信息管理系統','='*43
 42     num = 1
 43     while num <= 3 :
 44         username = int(raw_input('請輸入你的工號:\n'))
 45         pwd = raw_input('請輸入密碼:\n')
 46         if username not in Staff_list:
 47             print '沒有你的信息,請聯繫管理員添加或重新輸入,還有 %d 次機會'%(3-num)
 48             num += 1
 49         elif Staff_list[username]['許可權'] == 1 and pwd == Staff_list[username]['密碼']:
 50             print '歡迎 %s 進入員工信息管理系統'%Staff_list[username]['姓名']
 51             AdminMenuShow()
 52         elif Staff_list[username]['許可權'] != 1 and pwd == Staff_list[username]['密碼']:
 53             print '歡迎 %s 進入員工信息系統'%Staff_list[username]['姓名']
 54             StaffMenuShow()
 55         else :
 56             print '密碼輸入錯誤,還有 %d 次機會'%(3-num)
 57             num += 1
 58     else :
 59         print '輸入次數過多,已退出程式'
 60         time.sleep(3)
 61         exit()
 62 
 63 def OptionJudge(chioce):#對用戶輸入進行判斷
 64     if   chioce == 'A' or chioce == 'a': Increase()
 65     elif chioce == 'B' or chioce == 'b': Delete()
 66     elif chioce == 'C' or chioce == 'c': Amend()
 67     elif chioce == 'D' or chioce == 'd': Query()
 68     elif chioce == 'E' or chioce == 'e': AllStaff()
 69     elif chioce == 'F' or chioce == 'f': Search()
 70     elif chioce == 'G' or chioce == 'g': IncreaseAdmin()
 71     elif chioce == 'H' or chioce == 'h': exit()
 72     else :
 73         chioce = raw_input('你的輸入有誤 請重新輸入:\n')
 74         OptionJudge(chioce)
 75 
 76 def AdminMenuShow():#管理員菜單展示
 77     print '=' * 43, '員工信息管理系統', '=' * 43
 78     print '【A】增加一個成員  【B】刪除一個成員'
 79     print '【C】修改一個成員  【D】查詢一個成員'
 80     print '【E】查看所有成員  【F】關鍵詞搜索  '
 81     print '【G】增加一個管理員【H】退出系統'
 82     print
 83     chioce = raw_input('請輸入你的選擇:\n')
 84     OptionJudge(chioce)
 85 
 86 def StaffMenuShow():#普通用戶菜單展示
 87     print '=' * 43, '員工信息管理系統', '=' * 43
 88     print '【E】查看所有成員  【D】查詢一個成員'
 89     print '【F】關鍵詞搜索    【H】退出系統                '
 90     chioce = raw_input('請輸入你的選擇:\n')
 91     OptionJudge(chioce)
 92 
 93 def Increase():#增加一個用戶
 94     print '=' * 44, '增加新的員工', '=' * 44
 95     staff_num = Staff_list['num']
 96     Staff_list[staff_num] = {}
 97     Staff_list[staff_num]['姓名'] = raw_input('請輸入員工姓名\n')
 98     Staff_list[staff_num]['年齡'] = raw_input('請輸入員工年齡\n')
 99     Staff_list[staff_num]['部門'] = raw_input('請輸入員工部門\n')
100     Staff_list[staff_num]['住址']  = raw_input('請輸入員工地址\n')
101     Staff_list[staff_num]['電話']  = raw_input('請輸入員工電話號碼\n')
102     Staff_list[staff_num]['qq'] = raw_input('請輸入員工QQ號碼\n')
103     Staff_list[staff_num]['微信'] = raw_input('請輸入員工微信號碼\n')
104     Staff_list[staff_num]['入職時間'] = raw_input('請輸入員工入職日期\n')
105     Staff_list[staff_num]['密碼'] = raw_input('請設置員工登陸密碼\n')
106     Staff_list[staff_num]['許可權'] = raw_input('請設置員工許可權\n')
107     Staff_list['num'] = Staff_list['num'] + 1
108     print '%s已錄入成功,工號為%d' % (Staff_list[staff_num]['姓名'],staff_num)
109     Staff_list_UpDate()
110 
111 def IncreaseAdmin():#創建管理員賬戶
112     print '=' * 43, '正在增加管理員', '=' * 43
113     staff_num = int(raw_input('請輸入員工工號\n'))
114     if  Staff_list[staff_num] == {}:
115         print '工號為%d的員工已離職,請重新輸入' % staff_num
116         IncreaseAdmin()
117     elif staff_num in Staff_list and Staff_list[staff_num] != {}:
118         Flag = raw_input('確認是否將 %s 設置為管理員用戶?Y/N' % Staff_list[staff_num]['姓名'])
119         if Flag == 'Y':
120             print '%s 已成功設置為管理員' % Staff_list[staff_num]['姓名']
121             Staff_list[staff_num]['許可權'] = 1
122             time.sleep(3)
123             Staff_list_UpDate()
124         elif Flag == 'N':
125             print '正在返回主菜單'
126             AdminMenuShow()
127         else:
128             print '你的輸入錯誤,正在為你返回主菜單'
129             AdminMenuShow()
130     else :
131         print '沒有工號為%d的員工,請重新輸入' % staff_num
132         IncreaseAdmin()
133 
134 def Delete():#刪除一個用戶
135     print '=' * 46, '刪除員工', '=' * 46
136     Staff_num = int(raw_input('請輸入你要刪除的員工工號\n'))
137     if Staff_num in Staff_list and Staff_list[Staff_num] != {}:
138         Flag = raw_input('確認是否刪除 %s?Y/N ' % Staff_list[Staff_num]['姓名'])
139         if Flag == 'Y' or Flag == 'y' :
140             temp = Staff_list[Staff_num]['姓名']
141             Staff_list[Staff_num] = {}
142             time.sleep(3)
143             print '已經為您刪除 %s'%temp
144             Staff_list_UpDate()
145         elif Flag == 'N' or Flag == 'n':
146             print '請重新輸入'
147             Delete()
148         else:
149             print '你的輸入錯誤,正在為你返回主菜單'
150             AdminMenuShow()
151     elif Staff_num in Staff_list and Staff_list[Staff_num] == {}:
152         print '%s已被刪除,請重新輸入'%Staff_list[Staff_num]['姓名']
153         Delete()
154     else:
155         print '沒有工號為%d的用戶,請重新輸入'%Staff_num
156         Delete()
157     print '操作完畢,正在返回主菜單'
158     AdminMenuShow()
159 
160 def Amend():#修改一個用戶
161     print '=' * 44, '修改員工信息', '=' * 44
162     staff_num = int(raw_input('請輸入你要修改的員工編號\n'))
163     if staff_num not in Staff_list:
164         print '你輸入的員工編號不存在,請重新輸入'
165         Amend()
166     elif staff_num == 0 :
167         print '你無權修改,請重新輸入'
168         Amend()
169     elif Staff_list[staff_num] == {}:
170         print '你所要修改的員工已被刪除,無法進行修改'
171         Amend()
172     else :
173         while True :
174             project = raw_input('請輸入你要修改的項目(姓名/年齡/部門/地址/電話/qq/微信/入職時間)\n')
175             if project in Staff_list[staff_num] and project in Project :
176                 content = raw_input('請輸入你要修改的內容:\n')
177                 Staff_list[staff_num][project] = content
178                 print '已為您修改完畢,正在為您返回主菜單'
179                 Staff_list_UpDate()
180             else :
181                 print '你輸入的項目不正確,請重新輸入'
182 
183 def Permissions():
184     if Staff_list[username]['許可權'] == 1:
185         print '操作完畢,正在返回主菜單'
186         AdminMenuShow()
187     else:
188         print '操作完畢,正在返回主菜單'
189         StaffMenuShow()
190 
191 def Query():#查詢一個用戶
192     print '=' * 44, '員工信息查詢', '=' * 44
193     staff_num = int(raw_input('請輸入員工工號\n'))
194     if Staff_list[staff_num] == {}:
195         print '該員工已被刪除,請重新搜索你要查詢的員工'
196         Query()
197     elif staff_num in Staff_list:
198         print '=' * 43, 'Info of %s' % Staff_list[staff_num]['姓名'], '=' * 43
199         print string % (
200         staff_num, Staff_list[staff_num]['姓名'], Staff_list[staff_num]['年齡'], Staff_list[staff_num]['部門'],
201         Staff_list[staff_num]['住址'], Staff_list[staff_num]['電話'], Staff_list[staff_num]['qq'],
202         Staff_list[staff_num]['微信'], Staff_list[staff_num]['入職時間'])
203     else :
204         print '沒有工號為%d的員工,請重新輸入'
205         Query()
206     Flag = raw_input('員工%s 信息已查詢完畢,是否返回主菜單?Y/N ' % Staff_list[staff_num]['姓名'])
207     if Flag == 'Y' or Flag == 'y' :
208         Permissions()
209     else :
210         print '重新查詢一個用戶'
211         Query()
212 
213 def AllStaff():#查看所有用戶
214     for i in range(1, Staff_list['num']) :
215         if Staff_list[i] == {}:
216             print '=' * 45, '第%d 號員工'%i, '=' * 45
217             print '第%d 號員工已離職'%i
218         else :
219             print '=' * 44, '%s的信息' % Staff_list[i]['姓名'], '=' * 44,
220             print string % (
221                 i, Staff_list[i]['姓名'], Staff_list[i]['年齡'], Staff_list[i]['部門'],
222                 Staff_list[i]['住址'], Staff_list[i]['電話'], Staff_list[i]['qq'],
223                 Staff_list[i]['微信'], Staff_list[i]['入職時間'])
224     Flag = raw_input('用戶信息已查詢完畢,是否返回主菜單?Y/N ')
225     if Flag == 'Y' or Flag == 'y':
226         Permissions()
227     else:
228         print '不允許操作'
229 
230 def Search():#關鍵詞搜索
231     print '=' * 44, '員工信息搜索', '=' * 44
232     project = raw_input('請輸入你要查找的項目(姓名/年齡/部門/地址/電話/qq/微信/入職時間)\n')
233     num = 0
234     while True:
235         key = raw_input('請輸入你要查找的關鍵字\n')
236         if project in Project:
237             for i in range(1, Staff_list['num']):
238                 if Staff_list[i] == {}:
239                     pass
240                 elif key in Staff_list[i][project]:
241                     print '=' * 44, '%s的信息' % Staff_list[i]['姓名'], '=' * 44,
242                     print string % (
243                         i, Staff_list[i]['姓名'], Staff_list[i]['年齡'], Staff_list[i]['部門'],
244                         Staff_list[i]['住址'], Staff_list[i]['電話'], Staff_list[i]['qq'],
245                         Staff_list[i]['微信'], Staff_list[i]['入職時間'])
246                     num += 1
247             if num == 0:
248                 print '沒有搜索到結果,請重新搜索'
249             else:
250                 print '共搜索到 %d 名 %s 為 %s 的員工' % (num, project, key)
251                 Flag = raw_input('用戶信息已查詢完畢,任意鍵繼續搜索,選擇Y返回主菜單 ')
252                 if Flag == 'Y' or Flag == 'y':
253                     Permissions()
254                 else :
255                     Search()
256         else:
257             print '你要查找的項目不存在'
258 
259 def Staff_list_UpDate():
260     global FileRead
261     FileRead.close()
262     with open('Staff_list_copy', 'w') as FileWrite :
263         Write_Staff_list = str(Staff_list)
264         FileWrite.write(Write_Staff_list)
265     os.remove('Staff_list')
266     os.renames('Staff_list_copy','Staff_list')
267     FileRead = io.open('Staff_list', 'r', encoding='utf8')
268     time.sleep(3)
269     AdminMenuShow()
270 
271 login()

文本內容:

初始帳號:0

初始密碼:123456

1 {0: {'\xe5\xaf\x86\xe7\xa0\x81': '123456', '\xe6\x9d\x83\xe9\x99\x90': 1, '\xe5\xa7\x93\xe5\x90\x8d': 'admin'}}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 經實驗,$.serializeArray()獲取不到disabled的值,如果想要讓input元素變為不可用,可以把input設為readonly,而不是disabled; 還有一種情況獲取不到值,當頁面中有兩個一樣name值的標簽的時候,即使其中一個name值的input的樣式為 display: ...
  • 前段時間有朋友私信我 Vue + TypeScript 的問題,然後就打算寫一篇 Vue + TypeScript 封裝組件的文章 正好公司項目中需要封裝一個表頭查詢組件,就拿出來分享一下~ 組件的整體思路是通過一個 config 數組生成列表的頭部表單: PS:配合《Vue 爬坑之路(九)—— 用 ...
  • 相關文章: "ELK 架構之 Elasticsearch 和 Kibana 安裝配置" "ELK 架構之 Logstash 和 Filebeat 安裝配置" ELK 使用步驟:Spring Boot 日誌輸出到指定目錄,Filebeat 進行採集,Logstash 進行過濾,Elasticsearc ...
  • 一、什麼是享元模式 說到享元模式,第一個想到的應該就是池技術了,String常量池、資料庫連接池、緩衝池等等都是享元模式的應用,所以說享元模式是池技術的重要實現方式。 比如我們每次創建字元串對象時,都需要創建一個新的字元串對象的話,記憶體開銷會很大,所以如果第一次創建了字元串對象“adam“,下次再創 ...
  • 前言 在給定上下文的軟體體繫結構中,為瞭解決某些經常出現的問題而形成的通用且可重用的解決方案稱之為架構模式,而常見的體系架構模式主要有以下十種 分層模式 客戶端 伺服器模式 主從設備模式 管道 過濾器模式 代理模式 點對點模式 事件匯流排模式 模型 視圖 控制器模式 黑板模式 解釋器模式 而下麵我將詳 ...
  • 前言 從0到1構建分散式秒殺系統案例的代碼已經全部上傳至碼雲,文章也被分發到各個平臺。其中也收到了不少小伙伴喜歡和反饋,有網友如是說: 說實話,能用上的不多,中小企業都不可能用到,大型企業也不是一個人就能搞起的,大部分人一輩子都用不上,等有這個需要再搞吧。 我的觀點是贊同但不支持,基本上任何事物都是 ...
  • 先來看段代碼 先看一下 String.valueOf() 裡面是怎麼寫的 String.valueOf() 在遇到 null 和 空串的情況下 ,都能正常輸出,所以不拋錯 再來看下 包裝類型 Integer裡面又是如何處理的 這兩個方法裡面都需要先 parseInt( s,10),就是將字元串s先轉 ...
  • 上一篇文章說了 CAS 原理,其中說到了 Atomic 類,他們實現原子操作的機制就依靠了 volatile 的記憶體可見性特性。如果還不瞭解 CAS 和 Atomic ,建議看一下 "我們說的 CAS 自旋鎖是什麼" 併發的三個特性 首先說我們如果要使用 volatile 了,那肯定是在多線程併發的 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...