项目分享:模拟博客园登录,博客园登录


项目二:模拟博客园登录

声明:

项目代码纯粹本人自己编写,无任何抄袭、转载等情况,所以写的很low,仅供大家参考,有不懂的随时评论留言

项目要求:

  • 必须实现的功能:

  • 源码:

    def register():
        """
        功能:账号密码注册
        实现:判断用户输入内容符合注册要求后循环查看文件中有无输入信息,若没有将信息加入文件
        :return: None
        """
        flag1 = True
        while flag1:
            username = input("请输入账号(不能含有特殊字符):")
            password = input("请输入密码(6~14字符):")
            if not username.isalnum():
                print("账号不能含有特殊字符,请重新输入!")
            elif not 6 <= len(password) <= 14:
                print("密码长度不符,请重新输入!")
            else:
                f1.seek(0)
                for el in f1:
                    if username in el.split(":")[1]:
                        print("该账号已存在")
                        break
                else:
                    print("注册成功!")
                    f1.write(f"\n{0}:{username}:{password}")
                    flag1 = False
    
    
    def login():
        """
        功能:账号密码登录
        实现:输入三次错误锁定账号
        :return: str ——> None
        """
        global flag,username,visit
        count = 3
        while count:
            username = input("请输入账号:")
            password = input("请输入密码:")
            f1.seek(0)
            for el in f1:
                num, user, pwd = el.strip().split(":")
                if num == "1":
                    print("账号已被锁定!请联系管理员!")
                    return
                elif username == user:
                    if password == pwd:
                        print("登陆成功!")
                        visit = True
                        return
                    else:
                        count -= 1
                        print(f"账号密码错误,请重新输入(剩余次数:{count})")
                        break
            else:
                print("账号不存在,请先注册!")
        else:
            print("账号已被锁定!请联系管理员!")
            f1.seek(0)
            for el in f1:
                if el.strip().split(":")[1] == username:
                    f2.write(el.replace("0", "1", 1))
                else:
                    f2.write(el)
            flag = True
    
    def article():
        """
        功能:进入文章页面
        实现:格式化输出
        :return: None
        """
        print(f"欢迎{username}进入文章页面")
    
    def comment():
        """
        功能:进入文章评论页面
        实现:格式化输出
        :return: None
        """
        print(f"欢迎{username}进入评论页面")
    
    def diary():
        """
        功能:进入文章日记页面
        实现:格式化输出
        :return: None
        """
        print(f"欢迎{username}进入日记页面")
    
    def collect():
        """
        功能:进入文章收藏页面
        实现:格式化输出
        :return: None
        """
        print(f"欢迎{username}进入收藏页面")
    
    def logout():
        """
        功能:注销登录
        实现:将全局访问权变标志变为False
        :return: None
        """
        global visit
        print("注销成功")
        visit = False
    
    def drop_out():
        """
        功能:退出
        实现:利用exit()函数
        :return:None
        """
        print("欢迎您下次访问!")
        exit()
    
    
    function = {
        "1": register,
        "2": login,
        "3": article,
        "4": comment,
        "5": diary,
        "6": collect,
        "7": logout,
        "8": drop_out,
    }
    msg = f"""{'博客园'.center(15, "*")}
    1.注册
    2.登录
    3.进入文章页面
    4.进入评论页面
    5.进入日记页面
    6.进入收藏页面
    7.注销账号
    8.退出
    请输入序号:"""
    import os
    
    flag = False
    visit = False  # 访问权限标志
    while True:
        with open("userinfo.txt", "r+", encoding="utf-8") as f1, \
                open("userinfo_副本.txt", "w", encoding="utf-8") as f2:
            choose = input(msg)
            if choose in function:  # 先判断choose是否在字典中
                if visit:  # 判断访问权限标志位是否开启,若不开启不能访问3~7
                    if choose in ["1", "2"]:  # 若已登录不能再注册登录
                        print("您已登录,请先注销!")
                    else:
                        function[choose]()  # 执行对应函数
                elif choose in ["1", "2", "8"]:  # 只能执行"1"、"2"、"8"功能
                    function[choose]()
                else:
                    print("请先登录")
            else:
                print("您的输入有误,请重新输入!")
        if flag:  # 修改文件
            os.remove("userinfo.txt")
            os.rename("userinfo_副本.txt", "userinfo.txt")
            flag = False
            exit()

    相关内容

      暂无相关文章

    评论关闭