功能:
用户注册、登录、密码修改
LoginSystem.py
源码:
from Ueser import *
from time import sleep
from random import randint
class UserLongin(object):
def __init__(self):
# 创建存储用户信息列表
self.user_list = []
# 一 程序入口函数
def run(self):
# 1 加载文件中的用户数据
self.load_users()
while True:
# 2 显示功能菜单
self.show_menu()
# 3 用户输入功能选项
menu = int(input('请输入选项:'))
# 4 根据选项执行对应功能
if menu == 1:
self.login()
elif menu == 2:
self.register()
elif menu ==3:
self.change_pwd()
elif menu == 0:
print('谢谢使用!')
break
else:
print('无该功能!!!')
# 二 系统功能函数
# 2.1显示菜单函数
@ staticmethod # 申明静态方法
def show_menu():
print('\t\t欢迎使用XXX用户登录系统')
print('\t1-->登录')
print('\t2-->没有账号?去注册')
print('\t3-->忘记密码?去找回')
print('\t0-->退出系统')
# 2.2 登录函数
def login(self):
print('\t欢迎来到登录界面')
name = input('用户名(账号):')
password = input('密 码:')
for u in self.user_list:
if u.name == name:
if u.password == password:
print('登录成功!')
print('1秒后退出系统……')
sleep(1)
return # 登录成功直接退出
else:
print('账号或密码错误!')
return
else:
print('账号或密码错误')
return
sleep(1)
# 2.3 注册函数
def register(self):
print('欢迎来到注册界面')
i = 0
name = input('请设置用户名:')
while True:
for u in self.user_list:
if i == 3:
print('多次设置不符合要求__1秒后返回主界面……')
sleep(1)
return
elif u.name == name:
print('此用户名已被占用!换一个吧!')
name = input('请设置用户名:')
i += 1
break
else:
break
i = 0
while True:
# 两次校验密码
password = input('请设置您用户密码:')
password_time2 = input('请再确认一次密码:')
if password == password_time2:
break
elif i == 3 :
print('多次设置不符合要求__2秒后返回主界面……')
sleep(1)
return
else:
i += 1
print('两次输入密码不一致哦!请重新设置!')
tel = input('输入手机号以绑定您的手机:')
ver_code = self.verification_code(6) # 生成6位验证码用于用户身份验证
print(f'已向尾号为{tel[7:]}的手机用户发送了验证码!……')
sleep(0.5)
print(ver_code)
i = 0
while i < 3:
ver_code_userinput = input('请输入验证码:')
if ver_code_userinput == ver_code:
break
if i == 3:
print('多次设置不符合要求__1秒后返回主界面……')
sleep(1)
return
else:
print('验证码错误,重新输入!')
i += 1
new_user = User(name,password,tel) # 创建用户对象并赋值属性
self.user_list.append(new_user) # 向用户列表添加该用户
self.save_info() # 保存用户信息到文件
sleep(1)
print('恭喜您注册成功')
# 2.4 修改密码函数
def change_pwd(self):
"""
通过用户名寻找要修改密码的用户
然后通过手机验证码获取改密码权限
"""
user_name = input('请输入用户名:')
for u in self.user_list:
if u.name == user_name:
user_tel = u.tel
break
else:
print('无该用户!')
return
print(f'已向尾号为{user_tel[7:]}的手机用户发送了验证码!……')
ver_code = self.verification_code(6)
sleep(0.5)
print(ver_code)
i = 0
while i < 3:
ver_code_userinput = input('请输入验证码:')
if ver_code_userinput != ver_code:
print('验证码错误,重新输入!')
i += 1
else:
break
else:
return
i = 0
while True:
password = input('请设置您新密码:')
password_time2 = input('请再确认一次密码:')
if password == password_time2:
break
elif i == 3:
print('多次设置不符合要求__2秒后返回主界面……')
sleep(2)
return
else:
i += 1
print('两次输入密码不一致哦!请重新设置!')
u.password = password
self.save_info()
sleep(1)
print('修改成功!')
# 2.5 保存用户信息
def save_info(self):
f = open('Users.data','w')
new_user_list = [i.__dict__ for i in self.user_list] # 将列表元素转化为字典(推导式写法)
f.write(str(new_user_list))
f.close()
# 2.6 加载用户信息
def load_users(self):
try:
f = open('Users.data','r')
except:
f = open('Users.data','w')
else:
data = f.read()
new_list = eval(data) # 读取到的数据中字符串列表转化为列表
self.user_list = [User(i['name'],i['password'],i['tel'])for i in new_list] # 将列表中的字典转化为对象
finally:
f.close()
# 生成随机验证码
@staticmethod
def verification_code(n):
"""
通过传人的参数生成指定位数的随机数
通过每次生成一个0~9的数字
然后把它们转化为字符并拼接起来
:param n:要求生成随机数的位数
:return: 生成的随机数
"""
code = '' # 创建空字符串一会存储验证码
for i in range(n):
num = randint(0,9)
code += str(num)
return code
main.py
from LoginSystem import UserLongin
if __name__ == '__main__':
user_system = UserLongin()
user_system.run()
User.py
class User():
def __init__(self,name,password,tel):
# 用户名
self.name = name
# 密码
self.password = password
# 手机号
self.tel = tel
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/82647.html