欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

百万年薪python之路 -- 第二周 --模拟博客园系统

程序员文章站 2022-05-18 21:12:40
项目分析: 一.首先程序启动,显示下面内容供用户选择: 1.请登录 2.请注册 3.进入文章页面 4.进入评论页面 5.进入日记页面 6.进入收藏页面 7.注销账号 8.退出整个程序 二.必须实现的功能: 1.注册功能要求: a.用户名、密码要记录在文件中。 b.用户名要求:只能含有字母或者数字不能 ......

项目分析:
一.首先程序启动,显示下面内容供用户选择:

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

二.必须实现的功能:
1.注册功能要求:
a.用户名、密码要记录在文件中。
b.用户名要求:只能含有字母或者数字不能含有特殊字符并且确保用户名唯一。
c.密码要求:长度要在6~14个字符之间。

2.登录功能要求:
a.用户输入用户名、密码进行登录验证。
b.登录成功之后,才可以访问3 - 7选项,如果没有登录或者登录不成功时访问3 - 7选项,不允许访问,跳转到登录。(修改全局变量)

c.超过三次登录还未成功,则退出整个程序。

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

4.进入评论页面要求:
提示欢迎xx进入评论页面。

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

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

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

8.退出整个程序要求:
就是结束整个程序。

第一版

s = """
1.请注册
2.请登录
3.进入文章页面
4.进入评论页面
5.进入日记页面
6.进入收藏页面
7.注销账号
8.退出整个程序
"""

print(s)
flag = false
def login():
    """
    登录功能
    :return:如果是登录三次未成功,返回3,如果在三次之内成功,则返回登录的用户名
    """
    count = 0
    while count < 3:
        with open("userinfo_blogs.txt", "r", encoding="utf-8") as f3:
            flage = false
            login_user = input("请输入登录用户名:").replace(" ", "")
            login_pwd = input("请输入登录密码:").replace(" ", "")
            for i in f3:
                if login_user.strip() == i.strip().split(":")[0] and login_pwd.strip() == i.strip().split(":")[1]:
                    # print(a,b)
                    flage = true
                    break
                # print(login_user,login_pwd)
                # print(i.split(":")[0],i.split(":")[1])
            if flage == false:
                # print(login_user)
                # print(login_pwd)
                print("登录失败!")
                count += 1
            else:
                print("登陆成功!")
                global flag
                flag = true
                return login_user
    return count

def register():
    """
    注册功能
    :return:注册用户名和密码
    """
    while 1:
        error_flag = true
        user = input("请输入注册用户名:")
        for i in user:
            if not (48 <= ord(i) <= 57 or 65 <= ord(i) <= 90 or 97 <= ord(i) <= 122):
                print("请输入正确的用户名!")
                error_flag = false
                break
        if error_flag:
            pwd = input("请输入注册密码:")
            if not(6 <= len(pwd) <= 14):
                print("密码要在6~14个字符之间")
            else:
                break
    return user,pwd
def article(ret_login):
    """
    文章页面
    :param ret_login: 登陆的用户名
    :return:
    """
    print(f"欢迎{ret_login}进入文章页面!")
def comment(ret_login):
    """
    评论页面
    :param ret_login: 登陆的用户名
    :return:
    """
    print(f"欢迎{ret_login}进入评论页面!")
def diary(ret_login):
    """
    日记页面
    :param ret_login: 登陆的用户名
    :return:
    """
    print(f"欢迎{ret_login}进入日记页面!")
def collection(ret_login):
    """
    收藏页面
    :param ret_login: 登陆的用户名
    :return:
    """
    print(f"欢迎{ret_login}进入收藏页面!")
def log_off():
    """
    注销登录功能,从登录状态变成未登录状态
    :return:
    """
    print("注销成功!")
    global flag
    flag = false
def exit():
    print("退出成功!")
    return "break"
while 1:
    num = input("请输入序号:")
    if num.isdecimal() and 1 <= int(num) <= 7:
        num = int(num)
        if num == 1:
            reg_user,reg_pwd = register()
            # print(a,b)
            with open("userinfo_blogs.txt", "r", encoding="utf-8") as f:
                reg_flag = true
                for i in f:
                    i = i.split(":")
                    if reg_user == i[0]:
                        print("用户名已存在!")
                        reg_flag = false
                if reg_flag == true:
                    with open("userinfo_blogs.txt", "a", encoding="utf-8") as f1:
                        f1.write(f"{reg_user}:{reg_pwd}\n")
                        print("注册成功!")
        elif num == 2:
            ret_login = login()
            if str(ret_login) == "3":
                print("您已经超过三次登录还未成功!")
                print("已退出程序!")
                break

        elif num == 3:
            if not flag:
                print("请先登录!")
                ret_login = login()
                if str(ret_login) == "3":
                    print("您已经超过三次登录还未成功!")
                    print("已退出程序!")
                    break
                article(ret_login)
            else:
                article(ret_login)
        elif num == 4:
            if not flag:
                print("请先登录!")
                ret_login = login()
                if str(ret_login) == "3":
                    print("您已经超过三次登录还未成功!")
                    print("已退出程序!")
                    break
                comment(ret_login)
            else:
                comment(ret_login)
        elif num == 5:
            if not flag:
                print("请先登录!")
                ret_login = login()
                if str(ret_login) == "3":
                    print("您已经超过三次登录还未成功!")
                    print("已退出程序!")
                    break
                diary(ret_login)
            else:
                diary(ret_login)
        elif num == 6:
            if not flag:
                print("请先登录!")
                ret_login = login()
                if str(ret_login) == "3":
                    print("您已经超过三次登录还未成功!")
                    print("已退出程序!")
                    break
                collection(ret_login)
            else:
                collection(ret_login)
        elif num == 7:
            if not flag:
                print("请先登录!")
                ret_login = login()
                if str(ret_login) == "3":
                    print("您已经超过三次登录还未成功!")
                    print("已退出程序!")
                    break
                log_off()
            else:
                log_off()
    elif num == '8':
        br_k = exit()
        try:
            eval(br_k)
        except syntaxerror:
            break
    else:
        print("请输入正确的序号!")