代码:
# 注册登录系统
import hashlib
import json
import os.path
# 读取本地的所有账户数据
def load_account():
# 如果保存用户账户的文件存在,则读取文件中的用户信息,反之说明之前从未有用户注册过,返回空字典即可
if os.path.exists("account.txt"):
return json.load(open("account.txt"))
else:
return {}
# 保存本地苏有的账户数据
def save_account(user_info):
# 如果account已经存在于字典中,那么get方法会返回account对应的密码,此时if的结果就是真
json.dump(user_info, open("account.txt", "wt", encoding="utf-8"))
UI = """
1.注册
2.登陆
0.退出
"""
print(UI)
no = int(input("请输入你的选择"))
if no == 1:
# 读取本地账户数据
dc = load_account()
# 让用户输入账户密码
account = input("请输入账户:")
# 判断用户输入的账户是否存在,如果存在则提示用户重新注册。如果不存在进行注册
if dc.get(account):
print("账户已存在请重新注册")
else:
password = input("请输入密码:")
confirm = input("请再次输入密码")
# 让用户输入两边密码,如果密码一致则登录成功
if password == confirm:
# 将用户输入的密码进行加密
ho = hashlib.md5(password.encode())
encrypt = ho.hexdigest()
# 将用户的账号密码加密后保存到文件中
dc[account] = encrypt
save_account(dc)
print("注册成功")
else:
print("前后两次密码不一致,请重新注册")
elif no == 2:
print("进入登录")
account = input("请输入账户:")
passwd = input("请输入密码:")
if os.path.exists("account.txt"):
dc = load_account()
else:
print("没有找到用户数据文件,可能是首次运行程序。")
exit()
# 检查用户的账户是否存在
if account in dc:
# 检查输入的密码是否与存储的加密密码匹配
stored_passwd = dc[account]
md5 = hashlib.md5(passwd.encode())
entered_passwd = md5.hexdigest()
if entered_passwd == dc[account]:
print("登录成功")
else:
print("密码错误,登录失败")
else:
print("账户不存在")
elif no == "0":
print("退出用户登录系统")
exit()
else:
print("输出有误,请重新输入")
登录系统:
检验实验:
登录账户:
登录失败情况:
登录账户不存在情况:
pass