登录注册:(分析)

进入程序:登录、注册、退出(使用while循环)

登录:输入账号,输入密码,读取用户文件,判断账 号密码是否匹配

注册:输入账号,输入密码,将数据保存到用户文件中。

优化1:已经注册的账号,不能再次注册

优化2:登录失败,密码输入三次后,账号锁定,不能再次登录

import json
# 程序是否运行
isRun = True
# 文件路径
filePath = r'C:\Users\Administrator\Desktop\XXXX\08K\Day01-20\users.json'#r'/Users/xxxx/Documents/python/登录注册.json'
'''
文件格式
{
lock_users:['name1','name2'],
users:[#注册的账户和密码
{
'name':'nameA',
'password:'pwdA'
},
{
'name':'nameB',
'password:'pwdB'
},
{
'name':'nameC',
'password:'pwdC'
}
]
}
'''
#读取文件信息
def readFileDatas():
try:
f = open(filePath,'r')
except IOError:
f = open(filePath,'w')
result={'lock_users':[],'users':[]}
json.dump(result,f)
else:
result = json.load(f)
f.close()
return result
# 读取用户信息
def readUsers(datas):
return datas['users']
# 读取锁定账户信息
def readLockUsers(datas):
return datas['lock_users']
# 注册账户密码
def registUser(userDic , usersDatas):
f = open(filePath,'w')
users = usersDatas['users']
l = list(users)
# 判断是否存在user
isOK = True
for saveUser in l:
if saveUser['name'] == userDic['name']:
isOk = False
break
if isOK:
l.append(userDic)
usersDatas['users'] = l
json.dump(usersDatas, f)
else:
pass#注册失败
f.close()
return isOK
# 添加锁定账户
def addLockUser(user,usersDatas):
f = open(filePath, 'w')
lock_users = usersDatas['lock_users']
l = list(lock_users)
l.append(user)
usersDatas['lock_users'] = l
json.dump(usersDatas, f)
f.close()
# 提示文字
strTipRun = '请选择注册或者登录,(R\L);退出程序,请输入\'out\':'
strTipUser = '请输入账户:'
strTipPwd = '请输入密码:'
strTipSucess = '登录成功;'
strTipRegisterSucess = '注册成功;'
strTipRegisterFaile = '注册失败;'
strTipFaile = '登录失败;'
strTipLock = '您的账户已经锁定,请重新输入:'
strTipError = '输入错误,请重新输入--'
isLogin = True
starStr = input(strTipRun)
while isRun:
if starStr == 'R':
# 注册
user = input(strTipUser)
pwd = input(strTipPwd)
userDic = {'name':user,'password':pwd}
usersDatas = readFileDatas()
isOK = registUser(userDic,usersDatas)
if isOK:
starStr = input(strTipRegisterSucess + strTipRun)
else:
starStr = input(strTipRegisterFaile + strTipRun)
elif starStr == 'L':
# 登录
user = input(strTipUser)
# 读取文件中的信息
usersDatas = readFileDatas()
# 读取登录账户锁定的账户
lock_users = readLockUsers(usersDatas)
print(lock_users)
count = 0
for lock in lock_users:
print(lock)
if lock == user:
count+=1
print(count)
if count > 3:
print('f')
starStr = input(strTipLock+strTipRun)
else:
print('a')
pwd = input(strTipPwd)
users = readUsers(usersDatas)
isOk = False
for userDic in users:
if user == userDic['name'] and pwd == userDic['password']:
isOk = True
break
if isOk: # 登录成功
starStr = input(strTipSucess+strTipRun)
else: # 登录失败
usersDatas = readFileDatas()
addLockUser(user, usersDatas)
starStr = input(strTipFaile+strTipRun)
elif starStr == "out":
isRun = False
else:
starStr = input(strTipError)