百万年薪python之路 -- 第二周 --模拟博客园系统
程序员文章站
2024-02-01 18:10:04
项目分析: 一.首先程序启动,显示下面内容供用户选择: 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("请输入正确的序号!")