#将会用到的包import进来
import random
import string
import time

blacklist=[]#黑名单用于储存被锁定账户
dic={}#存放账号及密码
dic2={}#保存密保,用于用户找回密码

def op(dic, n):#根据用户输入的数字将进入相对应的页面
    if n == 1:#登录
        login()
    elif n == 2:#注册
        register()
    elif n == 3:#找回密码
        findpwd()
    elif n == 4:
        changepwd()
    elif n == 5:#退出
        print('欢迎下次使⽤ ')
        exit(0)
    else:
        print('您输入的数字不合法,感谢您的使用')

#生成一个6位验证码
def test():#验证码
    capta = ''
    words = ''.join((string.ascii_letters, string.digits))  ##生成大小写字母和数字串
    for i in range(6):
        capta += random.choice(words)  ##随机选择一个字母或数字
    print('验证码为:%s' % capta)
    while not (input('请输入验证码:') == capta):
        print('验证码错误,请重新输入:')
    print('登陆成功')

def login():#登录页面
    count = 1#记录用户输入密码次数
    name = input('请输入您的账号:')
    for i in blacklist:#遍历列表,判断账号是否被锁定
        if i==name:
            print('该账户已被锁定')
            returnq()
    pwd = input('请输入您的密码(您只有有三次机会!若三次输入都不正确,该账户将被锁定,但是您可以选择找回密码解锁您的账户):')
    if name in dic:#若账号已注册
        while count <3:
            if dic[name] == pwd:
                test()
                print('登入成功,祝您玩的愉快\n系统将于两秒后跳转')
                time.sleep(2)
                exit(0)  # 进行下一步,接入界面
            else:
                count+=1
                pwd=input('密码错误,请重新输入密码')

        if count == 3:
            blacklist.append(name)
            print('由于您三次输入密码错误,该账号已被锁定')
            returnq()
    if name not in dic:
        print('账号不存在,建议您回到首页后选择注册')
        returnq()

def returnq():#回到首页面
    respond = input('输⼊q回到⾸⻚重新选择功能:')
    if 'q' == respond:
        res()
    else:
        exit(0)

def register():#注册
    name = input('请输入您要注册的账号:')
    if name in dic:
        print('该账号已经被注册了哦,请输入q返回首页重新登入')
    else:
        pwd = input('请输入您的密码(为保证安全,至少为八位):')
        while len(pwd) < 8:
            pwd = input('请输入您的密码(为保证安全,至少为八位):')
        dic[name] = pwd
        dic2[name] = input('请输入您的密保(当您忘记密码时,可通过密保找回你的密码):')
        print('注册成功,请输入q返回首页重新登入')
    returnq()

def findpwd():#找回密码
    username = input('请输入您想找回密码的账户')
    if username in dic:
        secret = input('请输入密保')
        if secret == dic2[username]:
            print('您的密码是%s'%(dic[username]))
            if username in dic2:#若在黑名单中,解锁该账户
                del dic2[username]
            returnq()
        else:
            print('您输入的密保错误')
            returnq()
    elif username not in dic:
        print('该账号不存在,可能您还未注册此账号')
        returnq()



def changepwd():
    username = input('请输入您的账号:')
    if username not in dic:
        print('您输入的账号不存在')
    else:
        userpwd = input('请输入您修改前的密码:')
        if dic[username] == userpwd:
            pwd = input('请输入您的新密码(为保证安全,至少为八位):')
            while len(pwd) < 8:
                pwd = input('请输入您的新密码(为保证安全,至少为八位):')
            dic[username] = pwd
    returnq()


def res():#主页面
    print('''
=======登⼊系统======= 
1.登⼊ 
2.注册
3.找回密码
4.修改密码
5.退出

''')
    n = int(input('请选择操作:'))
    op(dic, n)
res()