首先這個(gè)學(xué)生管理系統(tǒng)具有數(shù)據(jù)存儲(chǔ)功能,考察了文件的存儲(chǔ)和內(nèi)容的提取,實(shí)現(xiàn)了多頁面之間利用函數(shù)進(jìn)行跳轉(zhuǎn),用戶密碼的加密,但是因?yàn)檫€沒有涉及到存儲(chǔ)到數(shù)據(jù)庫,實(shí)現(xiàn)的僅是較少數(shù)量的學(xué)生信息的增刪改查功能,非常適合學(xué)完python基礎(chǔ)的朋友進(jìn)行練手,很考驗(yàn)邏輯性。寫這個(gè)頁面的要注意的是:并不是一個(gè)頁面一個(gè)頁面寫的,而是需要來回切換。
第一部分:
以下先用思維導(dǎo)圖展示代碼的思考過程。

第二部分
接下來是每個(gè)頁面的代碼:
首先:第一個(gè)頁面:
在index.py頁面。也就是首頁:
要實(shí)現(xiàn)主頁面:

import sys
import file_manager
name =''
import model
import student_manager
def register():
data = file_manager.read_json('data.json.txt',{})
while True:
teacher_name =input('請輸入賬號(hào):(3-6位)')
if not 3 <=len(teacher_name) <=6:
print('賬號(hào)不符合要求,請重新輸入')
else:
break
? ? if teacher_namein data:
print('注冊失??!該用戶已存在')
return
? ? while True:
password =input('請輸入密碼:(6-12位)')
if not 6 <=len(password) <=12:
print('密碼不符合要求,請重新輸入')
else:
break
? ? t = model.Teacher(teacher_name,password)
data[t.name] = t.password
#data[teacher_name] =password
? ? file_manager.write_json('data.json.txt', data)
def login():
data = data = file_manager.read_json('data.json.txt',{})
teacher_name? =input('請輸入老師賬號(hào):')
if teacher_namenot in data:
print('登錄失??!該賬號(hào)沒有注冊')
return
? ? password =input('請輸入密碼')
import tools
if data[teacher_name] == tools.encrypt_password(password):
student_manager.name = teacher_name
student_manager.show_manager()
else:
print('密碼錯(cuò)誤,登錄失敗')
def start():
file_manager.base_dir ='./files/'
? ? content = file_manager.read_file('welcome')
while True:
operator=input(content +'\n 請選擇1-3:')
if operator =='1':
login()
elif operator =='2':
register()
elif operator =='3':
sys.exit(0)
else:
print('輸入有誤!')
if __name__ =='__main__':
start()
第二個(gè)頁面
第二個(gè)頁面:我命名為file_manager.py
功能主要為存儲(chǔ)和讀取內(nèi)容的頁面:
base_dir ='./files/'
def read_file(file_name):
try:
with open( base_dir + file_name,'r',encoding ='utf8')as file:
content = file.read()
return content
except FileNotFoundError:
print('文件不存在')
def write_json(file_name,data):
with open( base_dir + file_name,'w',encoding ='utf8')as file:
import json
json.dump(data,file)
def read_json(file_name,default_data):
try:
with open(base_dir + file_name,'r',encoding ='utf8')as file:
import json
return json.load(file)
except FileNotFoundError:
print('文件不存在')
print(default_data)
第三個(gè)頁面:我命名為students_manager.py
import file_manager
import model
name =''
def add_student():
x = file_manager.read_json(name +'.json',{})
if not x:
students? = []
else:
students = x['all_students']
while True:
s_name =input('請輸入學(xué)生名字')
s_age =input('請輸入年齡')
s_gender =input('請輸入學(xué)生性別')
s_tel =input('請輸入電話號(hào)碼')
#創(chuàng)建student對(duì)象
? ? ? ? s = model.Student(s_name,s_age,s_gender,s_tel)
students.append(s.__dict__)
data = {'all_students':students,'num':len(students)}
print(data)
file_manager.write_json(name+'.json',data)
choice =input('添加成功!\n1.繼續(xù)\n2返回\n請選擇(1-2)')
if choice ==2:
break
def show_student():
x =input('1.查看所有學(xué)生\n2.根據(jù)姓名查找\n3.根據(jù)學(xué)號(hào)查找\n其他:返回\n請選擇:')
y = file_manager.read_json(name +'.json',{})
students = y.get('all_students',[])
if not students:
print('該老師還沒有學(xué)員,請?zhí)砑訉W(xué)員')
return
? ? key = value =''
? ? if x =='1':
pass
? ? elif x =='2':
value =input('請輸入學(xué)員姓名:')
key ='name'
? ? elif x =='3':
value =input('請輸入學(xué)員的id:')
key ='s_id'
? ? else:
return
? ? students =filter(lambda s:s.get(key,'') == value,students)
if not students:
print('未找到學(xué)員')
for studentin students:
print('學(xué)號(hào):{s_id},姓名:{name},性別:{gender},年齡:{age},電話{tel}'.format(**student))
def modify_student():
pass
def del_student():
y = file_manager.read_json(name +'.json', {})
all_students = y.get('all_students',[])
key = value =''
? ? if not all_students:
print('該老師還沒有學(xué)員,請?zhí)砑訉W(xué)員')
return
? ? num =input('1.按姓名刪\n2.按學(xué)號(hào)刪\n其他:返回\n請選擇:')
if num =='1':
key =='name'
? ? ? ? value =input('請輸入要?jiǎng)h除的學(xué)生名字:')
elif num =='2':
key ='s_id'
? ? ? ? value =input('請輸入要?jiǎng)h除的學(xué)生名字:')
else:
return
? ? students =list(filter(lambda s:s.get(key,'') == value,all_students))
if not students:
print('沒有找到對(duì)應(yīng)的學(xué)生')
return
? ? for i,sin enumerate(students):
print('{x} 學(xué)號(hào):{s_id}, 姓名:{name},性別:{gender},年齡{age},電話{tel}'.format(x=i,**s))
n =input('請輸入需要?jiǎng)h除的學(xué)生的標(biāo)號(hào)(0-{}),q-返回:'.format(i))
if not n.isdigit()or not 0 <=int(n) <= i:
print('輸入的內(nèi)容不合法')
return
? ? all_students.remove(students[int(n)])
y['all_students'] = all_students
file_manager.write_json(name +'.json',y)
def show_manager():
# print('顯示管理頁面')
? ? content = file_manager.read_file('students_page.txt')%name
print(content)
while True:
operator =input('請選擇(1-5):')
if operator =='1':
add_student()
elif operator =='2':
show_student()
elif operator =='3':
modify_student()
elif operator =='4':
del_student()
elif operator =='5':
break
? ? ? ? else:
print('輸入有誤')
?第四個(gè)頁面
我命名為tools.py
import hashlib
def encrypt_password(passwd,x='hfgber'):
h = hashlib.sha256 ()
h.update(passwd.encode('utf8'))
h.update(x.encode('utf8'))
return h.hexdigest()
第五個(gè)頁面
命名為 model.py
import model
class Teacher(object):
def __init__(self,name,password):
import tools
self.name = name
self.password = tools.encrypt_password(password)
class Student(object):
def __init__(self,name,age,gender,tel):
self.name = name
self.age = age
self.gender = gender
self.tel =tel
#student 對(duì)象
還有用到的兩個(gè)txt文件內(nèi)容:
文件1.students_pages.py
????歡迎%s老師進(jìn)入學(xué)生管理系統(tǒng):
??1.添加學(xué)生
??2.查看學(xué)生
??3.修改學(xué)生信息
??4.刪除學(xué)生
??5.返回
文件2.welcome

版權(quán)聲明:本文為CSDN博主「BraveYangerer」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/BraveYangerer/article/details/104623904