Python基礎知識詳解(十)小結,用python實現教師信息管理系統
其他python學習筆記集合:
這個系統其實是本人之前完成的c語言課程設計的實驗報告,用了600多行c語言實現,有興趣可以看本人的另一篇拙作
現學python基礎知識後,爲檢驗學習效果,用python改寫這個教師信息管理系統(略有改動),共用了300多行代碼,排版有一些亂的地方未改正,但是本人測試功能基本沒問題,若有問題或者其他疑問歡迎評論
持續更新arduino 樹莓派 python Linux c語言等等
接到有幫助的話 求點贊👍 求關注❤️ 求分享👥
有問題可以評論
點關注,不迷路
如果有任何錯誤,如何建議,請批評指教,不勝感激 !
源代碼
源代碼如下,說明請看本人的c語言版本
'''
學習python結束了基礎知識的學習
現在用python改寫之前用c語言設計的教師信息管理系統
檢驗學習成果
'''
import math
import pickle
import os
xinxi = [] # 存放每個教師的信息,一個元素爲一個教師
xinxi1 = {'教師號':'0','姓名':'0','性別':'0','年齡':0,'電話':0,'工資':0,'職稱':'0','課程名稱':'0','班級數':0}
#存放單個教師的全部信息{'姓名':'林白','性別':'男''年齡':23,'電話':12345678,'工資':3456,'職稱2':'教授','課程名稱':'物聯網工程','班級數':6}
anquanxuanxian = [0,0,0,0,0,0,0,0,0]
mima = 88888888
def hello():
os.system("cls") #h歡迎界面
print ("\t ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆\n\n\n")
print ('''\t ┃ ┃
\t ┃ ┃
\t ┃ ┃
\t ┃ 歡迎訪問教師信息管理系統! ┃
\t ┃ ┃
\t ┃ --------------- ┃
\t ┃ ┃
\n\t 請按回車鍵進入系統……\n''')
input()
os.system("cls")
def bye():
os.system("cls") #結束界面
print('''\n\n\n\n\t
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★\n\n
\t ┃ ┃
\t ┃ ┃
\t ┃ 感謝訪問教師信息管理系統!歡迎下次再來! ┃
\t ┃ ┃
\t ┃ ┃
\t ┃ ┃
\t ┃ ┃
\n\n\n ''')
def zhucaidan(): #主菜單
print('''\n\n\n ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
☆********************************************************************★
★ 教師信息管理系統 ☆
☆ ★
★ 1.錄入教師信息 5.統計信息 ☆
☆ ★
★ 2.瀏覽所有教師信息 6. 按條件排序 ☆
☆ ★
★ 3.按條件查詢信息 7.信息安全及權限管理 ☆
☆ ★
★ 4.修改教師信息 8.文件保存與讀取 ☆
☆ ★
★********************************************************************☆
☆ 輸入9退出系統 ★
★ ---------------------------------------------- ☆
''')
def luru ():
print('*****************************錄入教師信息***************************************') #錄入信息函數
i = int (input('請輸入需要輸入的人數:'))
for i in range(i) :
print('-------------------------------------------------------------------------------')
print('\n開始錄入第%d位教師信息\n\n'%(int(len(xinxi))+1))
xinxi1['教師號'] = input('請輸入教師號:')
xinxi1['姓名'] = input('請輸入姓名:')
xinxi1['性別'] = input('請輸入性別:')
xinxi1['年齡'] = input('請輸入年齡:')
xinxi1['電話'] = input('請輸入電話:')
xinxi1['工資'] = input('請輸入工資:')
xinxi1['職稱'] = input('請輸入職稱:')
xinxi1['課程名稱'] = input('請輸入課程名稱:')
xinxi1['班級數'] = input('請輸入班級數:')
xinxi.append(dict(xinxi1))
else :
print ('********************************輸入結束***************************************')
def cakan(): #查看信息函數
print("\n所有信息如下")
for i in range(len(xinxi)):
print("第%d位教師信息"%(i+1),xinxi[i],'\n')
def xiugai(): # 修改信息函數
while True :
t = input('請輸入需要修改的教師的教師號(輸入000結束脩改):')
if int(t) == 000 :
break
for i in range(len(xinxi)):
if t == xinxi[i]['教師號'] :
xinxi1.update(xinxi[i])
while True :
j = int(input('請選擇需要修改的信息編號(1:姓名,2:性別,3:年齡,4:電話,5:工資,6:職稱,7:課程名稱,8:班級數,輸入9結束脩改):'))
if j== 1 :
xinxi1['姓名'] = input('請輸入姓名:')
elif j ==2 :
xinxi1['性別'] = input('請輸入性別:')
elif j ==3 :
xinxi1['年齡'] = input('請輸入年齡:')
elif j ==4 :
xinxi1['電話'] = input('請輸入電話:')
elif j ==5 :
xinxi1['工資'] = input('請輸入工資:')
elif j ==6 :
xinxi1['職稱'] = input('請輸入職稱:')
elif j ==7 :
xinxi1['課程名稱'] = input('請輸入課程名稱:')
elif j ==8 :
xinxi1['班級數'] = input('請輸入班級數:')
else :
break
xinxi[i] = dict(xinxi1)
else :
print('教師號不存在')
def chaxuncaidan() :
os.system("cls") #查詢菜單
print('''\n\n ★按條件查詢選項★ \n
★ ------------------------------------------- ☆
☆ ★
★ 1.按教師號查詢 ☆
☆ 2.按姓名查詢 ★
★ 3.按職稱查詢 ☆
☆ 4.返回主菜單 ★
★ ☆
☆ ★
★ ------------------------------------------- ☆
''')
def chaxungongnen():
chaxuncaidan()
while True :
x = int (input('請選擇查詢方式:'))
if x == 4 :
break
else :
y = input('\n請輸入用於查詢的信息:')
for i in range(len(xinxi)):
if x == 1 :
if y == xinxi[i]['教師號'] :
print ('查找的教師信息如下',xinxi[i],sep = '\n')
elif x == 2 :
if y == xinxi[i]['姓名'] :
print ('查找的教師信息如下',xinxi[i],sep = '\n')
elif x ==3 :
if y == xinxi[i]['職稱'] :
print ('查找的教師信息如下',xinxi[i],sep = '\n')
print('\n查找結束\n')
def tongjicaidan():
os.system("cls") #統計函數菜單
print('''\n\n\n ★統計信息選項★ \n
★ ------------------------------------------- ☆
☆ ★
★ 1.統計工資的平均值、最大最小值 ☆
☆ ★
★ 2.統計年齡的平均值、最大最小值 ☆
☆ ★
★ 3.返回主菜單 ☆
☆ ★
★ ------------------------------------------- ☆
''')
def tongji(): #統計功能函數
tongjicaidan()
linshi = []
he = 0
while True :
t = int (input(' 請選擇功能:'))
if t == 1 :
for i in range (len(xinxi)):
linshi.append(xinxi[i]['工資'])
he += int (xinxi[i]['工資'])
print("教師的工資的平均值:%7.1f 最大值:%d 最小值:%d\n\n"%(he/len(xinxi),int(max(linshi)),int(min(linshi))))
elif t == 2 :
for i in range (len(xinxi)):
linshi.append(xinxi[i]['年齡'])
he += int (xinxi[i]['年齡'])
print("教師的年齡的平均值:%7.1f 最大值:%d 最小值:%d\n\n"%(he/len(xinxi),int(max(linshi)),int(min(linshi))))
else :
break
def paixucaidan ():
os.system("cls") #排序功能菜單
print('''\n\n\n ★按條件排序選項★ \n
★ ------------------------------------------- ☆
☆ ★
★ 1.按教師號排序 ☆
☆ 2.按年齡排序 ★
★ 3.按工資排序 ☆
☆ 4.返回主菜單 ★
★ ☆
☆ ★
★ ------------------------------------------- ☆
''')
def paixu(): #排序功能函數
paixucaidan ()
while True :
t = int (input(' 請選擇功能:'))
if t == 1 :
def mysort1(x) :
return int (x['教師號'])
xinxi.sort(key = mysort1)
print('排序成功')
elif t == 2 :
def mysort2(x) :
return int (x['年齡'])
xinxi.sort(key = mysort2)
print('排序成功')
elif t == 3 :
def mysort3(x) :
return int (x['工資'])
xinxi.sort(key = mysort3)
print('排序成功')
else :
break
def wenjiancaidan():
os.system("cls") #文件功能菜單
print('''\n\n\b ★文件保存與讀取★
★ ------------------------------------------- ☆
☆ ★
★ 1.文件保存到磁盤 ☆
☆ ★
★ 2.從磁盤讀取文件 ☆
☆ ★
★ 3.返回主菜單 ☆
☆ ★
★ ------------------------------------------- ☆
''')
def wenjian(): #文件功能
wenjiancaidan()
global xinxi
while True :
t = int (input(' 請選擇功能:'))
if t == 1 :
try :
f = open('jiaoshixinxi.txt','wb')
pickle.dump(xinxi,f)
except :
print ('文件保存失敗')
else :
print ('保存成功')
elif t == 2 :
try :
f = open('jiaoshixinxi.txt','rb')
xinxi = pickle.load(f)
except :
print ('文件讀取失敗')
else :
print ('讀取成功')
else :
break
def anquancaidan():
os.system("cls") #信息安全菜單
print('''\n\n\b ★信息安全及權限管理★
★ ------------------------------------------- ☆
☆ ★
★ 1.功能權限設置 ☆
☆ ★
★ 2.修改密碼(初始密碼爲88888888) ☆
☆ ★
★ 3.說明 ☆
☆ ★
☆ 4.返回主菜單 ★
★ ------------------------------------------- ☆
''')
def anquan_1_caidan(): #功能權限菜單
print('''"\n\n
| 1.錄入教師信息 5.統計信息 |
| 2.瀏覽所有教師信息 6. 按條件排序 |
| 3.按條件查詢信息 7.信息安全及權限管理 |
| 4.修改教師信息 8.文件保存與讀取 |
☆ 輸入9返回上一級 ☆
''')
def anquan(): #信息安全
anquancaidan()
global anquanxuanxian
while True :
print('*******************************************************************************')
t = int (input(' 請選擇功能:'))
if t == 1 :
anquan_1_caidan()
tt = int (input(' 請選擇需要修改權限的功能編號:'))
anquanxuanxian[tt] = int(input(' 請選擇權限,輸入0爲普通權限,輸入1爲管理員權限:'))
elif t == 2 :
global mima
while True :
yinshi = int (input('請輸入新密碼'))
yinshi2= int (input('再次輸入密碼'))
if yinshi == yinshi2 :
mima = yinshi
print('修改成功')
break
else :
print ('密碼不一致,重新輸入')
elif t == 3 :
print('普通用戶不需要密碼可以使用功能,管理員用戶需要密碼才能使用該功能,\
可以自行選擇需要管理員權限的功能')
else :
break
def mimagongnen(x) : #實現密碼操作
if anquanxuanxian[x] == 0 :
if x == 1 :
luru()
elif x == 2 :
cakan()
elif x == 3 :
chaxungongnen()
elif x == 4 :
xiugai()
elif x == 5 :
tongji()
elif x == 6 :
paixu()
elif x == 7 :
anquan()
elif x ==8 :
wenjian()
else :
pass
else :
t = int (input('請輸入密碼:'))
if t == mima :
if x == 1 :
luru()
elif x == 2 :
cakan()
elif x == 3 :
chaxungongnen()
elif x == 4 :
xiugai()
elif x == 5 :
tongji()
elif x == 6 :
paixu()
elif x == 7 :
anquan()
elif x ==8 :
wenjian()
else :
pass
else :
print ('密碼錯誤')
def main(): #主函數
hello()
zhucaidan()
while True :
xuanze = int (input(' 請選擇功能:'))
if xuanze == 9 :
break
else :
mimagongnen(xuanze)
zhucaidan()
bye()
main() #開始