2020-03-03學(xué)生管理系統(tǒng)-python語言,由思路到代碼

首先這個(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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容