登录注册系统模拟

登录注册系统模拟

模拟了用户的登录与注册功能(数据已经持久化处理了)
顺便一提因为太咸鱼了就进行了hash加密,所以你发现保存出来是乱码不要慌张。

效果

1.登录

失败1 - 没有注册

对用户的账号和密码格式进行检测,如果错误要求用户重新输入

都输入正确后进行检测,若该用户没有注册过则给出相应提示。

在这里插入图片描述

失败2 - 密码错误

对输入的用户名和密码进行检测,如果合法则判断用户名是否已经注册,如果注册对比该用户的密码和注册信息是否一致,不一致则给出相应的错误提示
在这里插入图片描述

成功

用户输入的账号和密码符合规范。

用户注册过,且输入的密码与注册信息一致,给出登录成功的提示

在这里插入图片描述

2.注册

失败 - 用户已存在

对输入的账号和密码进行检测,若符合规范,则检测用户是否曾经注册过,若已经注册,则给出相应的错误提示信息。

在这里插入图片描述

成功

对输入的账号和密码进行检测,若符合规范,且用户不存在,则记录该信息

在这里插入图片描述

3.退出

在这里插入图片描述

相关代码

"""
Time: 2021/7/30 17:38
Author: 我的画风不正常
累了,慢慢来吧……
"""
import hashlib


def main_interface():
    '''
    打印这个控制台程序的主界面
    :return: None
    '''
    while True:
        print('======================================')
        print('       ** 欢迎来到XX管理系统 **\n')
        print('          ☺1. 登     录')
        print('          ☺2. 注     册')
        print('          ☺3. 退     出\n')
        print('--------------------------------------')
        select1 = input('请选择相关操作(1-3):')
        if select1 == '3':
            break
        elif select1 == '1':
            sign_in()
        elif select1 == '2':
            register()
        else:
            print('操作有误,请重新输入')


def hash_str(old_str: str):
    '''
    对输入的信息进行hash加密
    :param old_str: 原本的字符串内容
    :return: new_str也就是加密后的字符串内容
    '''
    hash = hashlib.md5()
    hash.update(old_str.encode())
    new_str = hash.hexdigest()
    return new_str


def sign_in():
    '''
    登录功能的实现
    :return: None
    '''
    name = judge_name()
    password = judge_password()
    pword = find_name(name)
    if pword:
        if pword == password:
            print('登录成功!!')
        else:
            print('登录失败!密码输入错误!')
    else:
        print('登录失败!该账号没有注册!')


def read_users(path: str):
    '''
    通过给与的文件路径,读取用户文件,返回用户信息列表
    :param path: 文件路径
    :return: uses_list存储用户信息的列表
    '''
    read = open(path, 'r', encoding='utf-8')
    uses_list = eval(read.read())
    read.close()
    return uses_list


def find_name(str_name: str):
    '''
    根据用户的姓名查找相关信息
    :param str_name: 用户的姓名
    :return: 若用户存在则返回该用户的密码,否则返回空字符串
    '''
    uses_list = read_users('files/User.txt')
    for use in uses_list:
        if use['name'] == str_name:
            return use['password']
    return ''


def judge_name():
    '''
    判断命名是否合法
    :return: 合法的名字
    '''
    while True:
        name = input('请输入账号(2~8位):')
        if not 2 <= len(name) <= 8:
            print('姓名格式有误,请重新输入')
            continue
        else:
            return hash_str(name)


def judge_password():
    '''
    判断密码是否合法
    :return: 合法的密码
    '''
    while True:
        password = input('请输入密码(6~12位):')
        if not 6 <= len(password) <= 12:
            print('密码格式有误,请重新输入')
            continue
        else:
            return hash_str(password)


def register():
    '''
    注册功能的实现
    :return: None
    '''
    name = judge_name()
    password = judge_password()
    if not find_name(name):
        write_user(name, password,'files/User.txt')
        print('恭喜啦~注册成功!!')
    else:
        print('用户已存在,注册失败!!')


def write_user(str_name: str, str_password: str,path:str):
    '''
    将合法的注册信息存入相应的文件
    :param str_name: 用户姓名
    :param str_password: 用户密码
    :param path: 存储文件的相关路径
    :return: None
    '''
    users_list = read_users(path)
    write = open(path, 'w', encoding='utf-8')
    users_list.append({'name': str_name, 'password': str_password})
    write.write(str(users_list))
    write.close()

if __name__ == '__main__':
    main_interface()
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值