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


    项目二:模拟博客园登录

    声明:

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

    项目要求:

    1. 首先程序启动,显示下面内容供用户选择:

      1. 请登录
      2. 请注册
      3. 进入文章页面
      4. 进入评论页面
      5. 进入日记页面
      6. 进入收藏页面
      7. 注销账号
      8. 退出整个程序
    2. 必须实现的功能:

      1. 注册功能要求:

        • 首先判断用户名在userinfo.txt表中存在不在,存在就不能进行注册

        • 当注册的用户名不存在的时候将用户名、密码要记录在文件中。

        • 用户名要求:不能有特殊字符并且确保用户名唯一。

        • 密码要求:长度要在6~14个字符之间。

      2. 登录功能要求:

        • 用户输入用户名、密码进行登录验证。
        • 登录成功之后,才可以访问3 - 7选项,如果没有登录或者登录不成功时访问3 - 7选项,不允许访问,提示用户进行登录!
        • 用户名和密码不一致,只有三次登录机会,三次过后提示用户名被锁定,请联系管理员!并终止循环
        • 当用户名错误三次,再次运行程序.登录锁定的账号继续提示用户名被锁定,请联系管理员!
      3. 进入文章页面要求:

        • 提示欢迎xx进入文章页面。(xx是当前登录的用户名)
      4. 进入评论页面要求:

        • 提示欢迎xx进入评论页面
      5. 进入日记页面要求:

        • 提示欢迎xx进入日记页面。
      6. 进入收藏页面要求:

        • 提示欢迎xx进入收藏页面。
      7. 注销账号要求:

        • 不是退出整个程序,而是将已经登录的状态变成未登录状态(在次访问3~7选项时需要重新登录)
      8. 退出整个程序要求:

        • 就是结束整个程序

    源码:

    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"
    {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()
    
  • 相关阅读:
    HTML颜色表
    SQL 语法参考手册
    色环[微软MSDN]
    网页配色方案及方法[网上配色文章集合
    驰骋工作流程引擎公文流程引擎图片演示VSTO技术
    工作流程引擎手机应用方寸之间尽在掌握。
    关于流程的退回与撤消
    驰骋.net工作流程引擎设计开发讲座: 工作流程类型模式
    驰骋工作流程引擎,工作流程管理系统,工作流程中间件, 支持日历面板,采用vsto技术处理公文类的流程流转。
    驰骋.net工作流程引擎,工作流程管理系统定时启动约定
  • 原文地址:https://www.cnblogs.com/tianlangdada/p/11573534.html
Copyright © 2020-2023  润新知