在学习文件操作以及json字符串的使用后在各类资料的搜集下完成了利用文件操作的学生管理系统:
首先完成的是菜单模块:
def menu():
while True:
home_page_show.home_show()
choice = input('请输入你的选择(输入数字1-3):')
if choice == '1':
login()
elif choice == '2':
register()
elif choice == '3':
sys.exit()
else:
print('输入错误!!')
其中为了练习文件的操作,增加了home_page_show.home_show()
其中home_page_show模块如下:
import user_data
def home_show():
file = open('welcom.txt', 'r', encoding='utf8')
print(file.read())
在上述模块中使用了文件操作将欢迎页面通过txt文件来展示
txt中的文件如下所示:
首页完成后,首要完成的是注册模块,我们的注册模块使用文件存储,其中对密码使用hashlib进行加密,保存在文件中,代码如下:
def register(): # 注册函数
# print('这是注册页面')
usdata = user_data.readalldata('user_pwd.json', {})
while True:
user_name = input('请输入用户名:(长度为3~6)')
if 3 <= len(user_name) <= 6:
break
else:
print('输入错误!!')
while True:
password = input('请输入密码:(长度为6~16)')
if 6 <= len(password) <= 16:
break
else:
print('输入错误!!')
# print(str(has256.en_hash(password)))
usdata[user_name] = str(has256.en_hash(password))
user_data.add_user(usdata)
加密模块has256:
import hashlib
def en_hash(x):
h = hashlib.sha256()
h.update(x.encode('utf8'))
return h.hexdigest()
在写代码的过程中我要进行强调的是,在文件中添加账号元素首先是通过对user_pwd.json进行处理,取出json文件中的数据,其中没有数据是默认返回空字典。在输入用户名和密码时
usdata[user_name] = str(has256.en_hash(password))
是调用了加密模块将用户和密码加入了usdata字典中(这里可以防止将之前的用户数据覆盖),user_data.add_user(usdata)
这里将新的字典数据添加进入json文件中,user_data模块代码如下:
import json
def add_user(user_data,file_name= 'user_pwd'):
with open(file_name+'.json', 'w') as file:
json.dump(user_data, file)
def readalldata(file_name, defulte):
try:
with open(file_name, 'r', encoding='utf8')as file:
return json.load(file)
except FileNotFoundError:
print('文件没找到')
return defulte
其中add_user通过将数据写入json文件中达到存储数据的目的,而readalldata是与之相反的通过将json文件转化为字典数据。在登录模块判断密码时是通过对登录时输入的密码进行相同的加密与在文件中的密码相比较,由此来判断是否是同样的密码。登录模块如下:
def login(): # 登录函数
usdata = user_data.readalldata('user_pwd.json',{}) #如果文件夹存在但是无数据是会出现错误
# print(usdata)
# user_dict = json.load(data)
while True:
user = input('请输入用户名:')
if user not in usdata:
print('用户名不存在,请重新输入!')
else:
break
while True:
pwd = input('请输入密码:')
if str(has256.en_hash(pwd)) == usdata[user]:
print('❀❀欢迎{}老师进入管理系统❀❀'.format(user))
home_page_show.second_show(user)
break
elif pwd =='3':
break
else:
print('密码错误,请重新输入!!(输入3退出当前)')