770686119 发表于 2019-3-14 17:34:36

Python 登录/注册 简单封装函数

# 定义指令主菜单
MenuNote = '''
=====================欢迎使用用户登录/注册小程序=================

                        |--- 新建用户:N/n ---|
                        |--- 登录账号:E/e ---|
                        |--- 退出程序:Q/q ---|

'''
# 存放用户名密码的字典
userInfo = {}
# 判断用户名唯一
def userNameIsUnique(userName):
    if userName in userInfo:
      return False
    else:
      return True
# 判断密码与确认密码是否一致
def userPassCheck(userPass,userPassSecond):
    if userPass == userPassSecond:
      print("密码设置成功")
      print(MenuNote)
      return True
    else:
      print("两次密码输入不一致,请重新设置")
      return False
#用户密码匹配校验
def passwordMatching(userName,userPass):
    if userInfo == userPass:
      print("密码验证通过,登录成功")
      return True
    else:
      print("用户名与密码不匹配")
      return False
#空字符串或空字符校验
def isEmpty(dataString):
    flag = 1 ifdataString.strip() is '' else 0
    returnflag
#设置密码
def setUserPass(userName):
    while True:
      userpassFirst = input("请为" + userName + "设置密码(第1次)")
      if isEmpty(userpassFirst):
            print("密码不能为空,请重设")
            continue
      userPassSecond = input("请为" + userName + "设置密码(第2次)")
      isSamePassFlag = userPassCheck(userpassFirst, userPassSecond)
      if isSamePassFlag:
            userInfo = userpassFirst
            print(userInfo)
            break

# 新建用户模块
def newUser(userName1):
    while True :
      userName = input("请输入注册用户名: ") if isEmpty(userName1)else userName1
      while True :
            if isEmpty(userName):
                userName = input("用户名不能为空,请重新输入")
            else:
                break
      isUniqueFlag = userNameIsUnique(userName)
      #用户名是否唯一
      if isUniqueFlag:
            while True:
                userpassFirst = input("请为"+userName+"设置密码(第1次):")
                if isEmpty(userpassFirst):
                  print("密码不能为空,请重设")
                  continue
                userPassSecond = input("请为"+userName+"设置密码(第2次):")
                isSamePassFlag = userPassCheck(userpassFirst,userPassSecond)
                if isSamePassFlag :
                  userInfo = userpassFirst
                  print(userInfo)
                  break


            break
      else:
            print("用户名重复")
# 登录模块
def userLogin():
    while True:
      userName = input("请输入登录账号: ")
      if isEmpty(userName) == 0:
            if userNameIsUnique(userName) == False:
                userPass = input("请输入密码: ")
                isMatch =passwordMatching(userName, userPass)
                if isMatch == True:
                  print(MenuNote)
                else:
                  resetPasswordCode = input('是否重设密码?(Y/N)')
                  while True:
                        if resetPasswordCode == 'Y' or resetPasswordCode == 'y':
                            setUserPass(userName)
                            break
                        elif resetPasswordCode == 'N' or resetPasswordCode == 'n':
                            print('您选择了不重设密码,将回到主页面')
                            print(MenuNote)
                            break
                        else:
                            resetPasswordCode = input('指令不存在,请重新选择是否重设密码?(Y/N)')
            elif userNameIsUnique(userName) == True:
                isNewUserCode = input("用户不存在,是否新建?(Y/N)")
                while True:
                  if isNewUserCode == 'Y' or isNewUserCode == 'y':
                        newUser(userName)
                        break
                  elif isNewUserCode == 'N' or isNewUserCode == 'n':
                        print("你选择了否,将退回主菜单")
                        print(MenuNote)
                        break
                  else:
                        isNewUserCode = input('你输入的指令错误,请重新输入是否新建(Y:是 N:否)')
            break
      else:
            print("用户不能为空")

# 主函数部分
print(MenuNote)
username = ''
while True:
    code = input("请输入指令代码: ")
    if(code == 'N' or code == 'n'):
      newUser(username)
    elif(code == 'E' or code == 'e'):
      userLogin()
    elif(code == 'Q' or code == 'q'):
      print("感谢使用,再见!")
      break
    else:
      print("指令不存在,请重新输入")



业务规则:
①新建用户,用户登录,退出的功能
②用户名,密码不能为空
③登录时用户不存在可直接新建
④用户密码匹配校验
⑤指令不存在的提示
⑥设置密码输2遍

----------------------测试场景--------
序号        场景覆盖测试
1        新建用户,输入唯一用户名,设置2次相同的密码,
2        新建用户,输入唯一用户名,设置2次不相同的密码,
3        新建用户,输入已存在的用户名
4        用户登录,输入不存在的用户名,是否新建选择‘是’,设置2次相同密码
5        用户登录,输入不存在的用户名,是否新建选择‘是’,设置2次不相同密码
6        用户登录,输入不唯一用户名,是否新建选择‘否’
7        用户登录,输入不唯一用户名,是否新建输入不存在的指令
8        用户登录,输入已存在的用户名,密码输入正确
9        用户登录,输入已存在的用户名,密码输入不正确
10        输入不存在的菜单指令
11        退出
12        新建用户,设置密码为空
13        新建用户,设置用户名为空
14        登录,输入密码不对,重设置密码选择‘是’
15        登录,输入密码不对,重设置密码选择‘否’
16        登录,重设用户名为空
17        登录,重设密码为空

页: [1]
查看完整版本: Python 登录/注册 简单封装函数