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

项目二:模拟博客园登录

声明:

项目代码纯粹本人自己编写,无任何抄袭、转载等情况,所以写的很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"\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()
点赞