zoukankan      html  css  js  c++  java
  • Python学习:8.小项目之登录注册验证

    简介 

      本次项目登录注册验证是对之前学习知识点的加深学习,这次项目的练习的知识点有函数、判断语句、循环语句、文件操作等。

    项目流程 

      运行代码之后,输出登录或者注册选项。

      当选择登录之后,输入用户名密码,如果该用户信息没有注册过,就输出登录失败,如果该用户信息已经注册过,就显示登录成功。

      当选择注册之后,输入用户名密码,如果该用户信息没有注册过,就输出注册成功,如果该用户信息已经注册过,就显示用户名已经存在,注册失败。

    代码流程 

      运行代之后首先执行main()函数,mian()函数中接收用户输入的用户名和密码,用户选择登录,就调用loing()函数,将用户输入的信息在和存放用户信息的文件中的信息进行比对,如果有该用户的信息就登录成功,否则失败,用户选择注册,在接收到用户输入的用户名密码之后,调用register()函数,在这里将调用 user_exist()函数进行对用户输入的信息进行判断,如用户输入的信息存在存放用户信息的文件里,输出注册失败,否则注册成功。

      在login()和user_exist()函数中调用了错误处理函数。

    错误处理函数介绍 

    try:
        .....
    except IOError:
        ......

    try中的代码执行没有出现错误,就不再执行except中的代码,如果try中的代码出现错误,就执行except中的代码。

    代码实现 

    def login(username, password):
        """
        用于用户名和密码的验证
        :param username:用户名
        :param paaword:密码
        :return:True,用户验证成功;False,用户验证失败
        """
        try:
            f = open("users", "r", encoding="utf-8")
            for line in f:
                line = line.strip()  # 清除换行符
                # 无参数时移除两侧空格,换行符
                # 有参数时移除两侧指定的字符
                line_list = line.split("$")
                if line_list[0] == username and line_list[1] == password:
                    # print("成功")
                    return True
            return False
        except IOError:
            return False
    
    
    def register(username, password):
        """
        注册用户
        1、打开文件
        2、用户名$密码
        :param username:用户名
        :param password:密码
        :return:True:注册成功;
        """
        with open("users", "a", encoding="utf-8") as f:
            temp = "
    " + username + "$" + password
            f.write(temp)
            return True
    
    
    def user_exist(username):
        """
        检测用户名是否存在
        :param username:要检测的用户名
        :return: True:用户名存在;False:用户名不存在
        """
        # 一行一行的去查找,如果用户名存在,return True:False
        try:
            with open("users", "r", encoding="utf-8") as f:
                for line in f:
                    line = line.strip()
                    line_new = line.split("$")
                    if line_new[0] == username:
                        return True
                return False
        except IOError:
            return False
    
    
    def main():
        while True:
            print("欢迎登录xxx系统")
            arg = input("1:登录,2:注册")
    
            if arg == "1":
                uer = input("请输入用户名:")
                pwd = input("请输入密码:")
                if login(uer, pwd):
                    print("成功")
                    break
                else:
                    print("失败")
            elif arg == "2":
                user = input("请输入用户名:")
                pwd = input("请输入密码:")
                is_exist = user_exist(user)
                if is_exist:
                    print("用户名已经存在,注册失败")
                else:
                    if register(user, pwd):
                        print("注册成功")
                        continue
                    else:
                        print("注册失败")
            else:
                print("输入错误,请重新输入")
    
    
    main()

     这次的项目仅仅使用了之前学习的部分知识,比较简单的一个项目,之后会继续加深学习。

      

      

  • 相关阅读:
    C#演练—Windows应用程序—在windows窗体上动态创建上下文菜单
    C#演练—Windows应用程序—可视化继承
    C#演练—Windows应用程序—创建主从windows窗体
    小胖IT大讲堂之三 Hook实战(二) SQL Monitor山寨版
    小胖的2011总结之回忆篇
    Oracle安装示例数据库
    《领域驱动设计》读书笔记(一) 分离领域
    小胖IT大讲堂之一 .NET Reflector工具介绍
    10年前我不是小胖,也是个“诗人”
    忘记
  • 原文地址:https://www.cnblogs.com/liudi2017/p/9190952.html
Copyright © 2011-2022 走看看