python学生管理系统之老师登录注册模块(文件操作)

在学习文件操作以及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退出当前)')

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值