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

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

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("请输入正确的序号!")
    原文作者:影印
    原文地址: https://www.cnblogs.com/zhangchaoyin/p/11221188.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞