pengkunstone 2019-12-14
# 用代码模拟博客园系统## 项目分析:# 1.首先程序启动,显示下面内容供用户选择:## 1.请登录# 2.请注册# 3.进入文章页面# 4.进入评论页面# 5.进入日记页面# 6.进入收藏页面# 7.注销账号# 8.退出整个程序# 2.必须实现的功能:## 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.退出整个程序要求:# 就是结束整个程序import hashliblogin_dic = { ‘status‘: False}s1 =" " #全局变量def wrapper(func): def inner(*args, **kwargs): if login_dic[‘status‘] == True: ret = func(*args, **kwargs) return ret else: login(*args, **kwargs) func(*args, **kwargs) return innerdef yonghuming(): #用户名验证函数 while True: username = input("username:") for i in username: if not i.isalnum(): print("No") break else: return usernamedef mima(): # 密码验证函数 while True: pwd = input("pwd:") for i in pwd: if 6 <= len(pwd) <= 14: print("ok") return pwd else: print("重新输入密码")def zhuce(*args, **kwargs): s2 = yonghuming() #调用用户名验证 s3 =mima() #调用密码验证 md5 = hashlib.md5() # 初始加密模板 md5.update(s3.encode(‘utf-8‘)) m = md5.hexdigest() with open(‘flag‘, ‘a+‘, encoding="utf-8") as f: f.seek(0) f.write(f"{s2}:{m}\n") print("注册成功")def login(*args, **kwargs): for i in range(3): username1 = input("username:") pwd1 = input("pwd:") md5 = hashlib.md5() # 初始化加密模板 md5.update(pwd1.encode(‘utf-8‘)) m1 = md5.hexdigest() with open(‘flag‘, ‘r‘, encoding=‘utf-8‘) as f1: for i in f1: username, pwd = i.strip().split(":") if username == username1 and m1 == pwd: login_dic[‘status‘] = True print("登录成功") global s1 s1 =username #修改全局变量 return s1 else: print("用户名密码错误") else: print("输错3次咯!!")@wrapperdef blog_wz(s1): if login_dic[‘status‘]: print(f"欢迎{s1}进入文章页面")@wrapperdef blog_pl(s1): if login_dic[‘status‘]: print(f"欢迎{s1}进入评论页面")@wrapperdef blog_rz(s1): if login_dic[‘status‘]: print(f"欢迎{s1}进入日志页面")@wrapperdef blog_sc(s1): if login_dic[‘status‘]: print(f"欢迎{s1}进入收藏页面")@wrapperdef blog_zx(s1): if login_dic[‘status‘]: login_dic[‘status‘] = False print("注销账号")msg = """1, 注册2,登录3,进入文章页面4,进入评论页面5,进入日志页面6,进入收藏页面7,注销账号8.退出"""dic1 = { ‘1‘: zhuce, ‘2‘: login, ‘3‘: blog_wz, ‘4‘: blog_pl, ‘5‘: blog_rz, ‘6‘: blog_sc, ‘7‘: blog_zx, ‘8‘: exit}def run(): while True: my_str = input(msg) if my_str in dic1: if my_str ==‘8‘: return dic1[my_str](s1) else: print("输入错误序号")if __name__ == ‘__main__‘: run()