登录注册系统模拟
模拟了用户的登录与注册功能(数据已经持久化处理了)
顺便一提因为太咸鱼了就进行了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()