首先这个学生管理系统具有数据存储功能,考察了文件的存储和内容的提取,实现了多页面之间利用函数进行跳转,用户密码的加密,但是因为还没有涉及到存储到数据库,实现的仅是较少数量的学生信息的增删改查功能,非常适合学完python基础的朋友进行练手,很考验逻辑性。写这个页面的要注意的是:并不是一个页面一个页面写的,而是需要来回切换。
第一部分:
以下先用思维导图展示代码的思考过程。
第二部分
接下来是每个页面的代码:
首先:第一个页面:
在index.py页面。也就是首页:
要实现主页面:
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('请输入账号:(3-6位)')
if not 3 <=len(teacher_name) <=6:
print('账号不符合要求,请重新输入')
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('请输入老师账号:')
if teacher_namenot in data:
print('登录失败!该账号没有注册')
return
password =input('请输入密码')
import tools
if data[teacher_name] == tools.encrypt_password(password):
student_manager.name = teacher_name
student_manager.show_manager()
else:
print('密码错误,登录失败')
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()
第二个页面
第二个页面:我命名为file_manager.py
功能主要为存储和读取内容的页面:
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)
第三个页面:我命名为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('请输入学生名字')
s_age =input('请输入年龄')
s_gender =input('请输入学生性别')
s_tel =input('请输入电话号码')
#创建student对象
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.继续\n2返回\n请选择(1-2)')
if choice ==2:
break
def show_student():
x =input('1.查看所有学生\n2.根据姓名查找\n3.根据学号查找\n其他:返回\n请选择:')
y = file_manager.read_json(name +'.json',{})
students = y.get('all_students',[])
if not students:
print('该老师还没有学员,请添加学员')
return
key = value =''
if x =='1':
pass
elif x =='2':
value =input('请输入学员姓名:')
key ='name'
elif x =='3':
value =input('请输入学员的id:')
key ='s_id'
else:
return
students =filter(lambda s:s.get(key,'') == value,students)
if not students:
print('未找到学员')
for studentin students:
print('学号:{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('该老师还没有学员,请添加学员')
return
num =input('1.按姓名删\n2.按学号删\n其他:返回\n请选择:')
if num =='1':
key =='name'
value =input('请输入要删除的学生名字:')
elif num =='2':
key ='s_id'
value =input('请输入要删除的学生名字:')
else:
return
students =list(filter(lambda s:s.get(key,'') == value,all_students))
if not students:
print('没有找到对应的学生')
return
for i,sin enumerate(students):
print('{x} 学号:{s_id}, 姓名:{name},性别:{gender},年龄{age},电话{tel}'.format(x=i,**s))
n =input('请输入需要删除的学生的标号(0-{}),q-返回:'.format(i))
if not n.isdigit()or not 0 <=int(n) <= i:
print('输入的内容不合法')
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('输入有误')
第四个页面
我命名为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()
第五个页面
命名为 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 对象
还有用到的两个txt文件内容:
文件1.students_pages.py
🌹🌹欢迎%s老师进入学生管理系统:
❤️1.添加学生
❤️2.查看学生
❤️3.修改学生信息
❤️4.删除学生
❤️5.返回
文件2.welcome
版权声明:本文为CSDN博主「BraveYangerer」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/BraveYangerer/article/details/104623904