项目分析:
一.首先程序启动,显示下面内容供用户选择:
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("请输入正确的序号!")