习题记录 初级阶段
程序员文章站
2022-03-17 09:48:13
有宝贵意见可提出,虚心学习 写程序完成下列功能:(20 分)1),启动程序,首页面应该显示成如下格式:欢迎来到博客园首页1:请登录2:请注册3:文章页面4:日记页面5:评论页面6:收藏页面7:注销8:退出程序2),用户输入选项,3~6 选项必须在用户登录成功之后,才能访问成功。3),用户选择登录,用 ......
有宝贵意见可提出,虚心学习
写程序完成下列功能:(20 分)
1),启动程序,首页面应该显示成如下格式:
欢迎来到博客园首页
1:请登录
2:请注册
3:文章页面
4:日记页面
5:评论页面
6:收藏页面
7:注销
8:退出程序
2),用户输入选项,3~6 选项必须在用户登录成功之后,才能访问成功。
3),用户选择登录,用户名密码从 register 文件中读取验证,三次机会,没成
功则结束整个程 序运行,成功之后,可以选择访问 3~6 项,访问页面之
前,必须要在 log 文件中打印日志, 日志格式为-->用户:xx 在 xx 年 xx 月
xx 日 执行了 %s 函数,访问页面时,页面内容为:欢 迎 xx 用户访问评论(文
章,日记,收藏)页面
4),如果用户没有注册,则可以选择注册,注册成功之后,可以自动完成登
录,然后进入首页选择。
5),注销用户是指注销用户的登录状态,使其在访问任何页面时,必须重新登
录。
6),退出程序为结束整个程序运行。
flag=True #注册功能 def regist(): global flag while 1: name=input("请输入用户名:") pwd=input("请输入密码:") with open("register.txt",mode="r+",encoding="utf-8")as f: for line in f.readlines(): lst=line.strip().split("\t") if name==lst[0]: print("用户名已存在,请重新输入.") break else: f.write(name+"\t"+pwd+"\n") print("注册成功") flag=False return #登录功能 def loggin(): a=0 global flag while a<3 and flag: name = input("请输入用户名:") pwd = input("请输入密码:") with open("register.txt", mode="r", encoding="utf-8")as f: for line in f.readlines(): lst = line.strip().split("\t") uname=lst[0] upwd=lst[1] if name==uname and pwd==upwd: print("登陆成功") flag=False break else: print("登录失败") a+=1 # from functools import wraps #登录装饰器 def wrapper(fn): # @wraps(fn) def inner(*args,**kwargs): global flag a=0 while a<3 and flag: name=input("用户名") pwd=input("密码") with open("register.txt", mode="r", encoding="utf-8")as f: for line in f.readlines(): lst = line.strip().split("\t") uname=lst[0] upwd=lst[1] if name==uname and pwd==upwd: print("登陆成功") flag=False with open("name.txt",mode="w",encoding="utf-8")as f1: f1.write(name) break else: print("用户名或密码错误") if a==2: return a+=1 ret=fn(*args,**kwargs) return ret return inner import time struct_time = time.localtime() #日志记录装饰器 from functools import wraps def log(fn): @wraps(fn) def inner(*args,**kwargs): with open("name.txt", mode="r", encoding="utf-8")as f1: name = f1.readline().strip() with open("log.txt", mode="a", encoding="utf-8")as f2: f2.write("-->>用户:"+name+"在" + time.strftime("%Y-%m-%d %H:%M:%S", struct_time) + "执行了"+fn.__name__ +"函数"+ "\n") ret=fn(*args,**kwargs) return ret return inner @wrapper @log def wenzhang(): with open("name.txt", mode="r", encoding="utf-8")as f1: name=f1.readline().strip() print("欢迎%s访问文章页面" % name) @wrapper @log def riji(): with open("name.txt", mode="r", encoding="utf-8")as f1: name=f1.readline().strip() print("欢迎%s访问日记页面" % name) @wrapper @log def pinglun(): with open("name.txt", mode="r", encoding="utf-8")as f1: name=f1.readline().strip() print("欢迎%s访问评论页面" % name) @wrapper @log def shoucang(): with open("name.txt", mode="r", encoding="utf-8")as f1: name=f1.readline().strip() print("欢迎%s访问收藏页面" % name) def zhuxiao(): global flag flag=True msg=""" 欢迎来到博客园首页 1:请登录 2:请注册 3:文章页面 4:日记页面 5:评论页面 6:收藏页面 7:注销 8:退出程序""" def start(): while 1: print(msg) choice=input("请输入选项") if choice=="1": print("请登录") loggin() elif choice=="2": regist() elif choice=="3": wenzhang() elif choice=="4": riji() elif choice=="5": pinglun() elif choice=="6": shoucang() elif choice=="7": print("注销成功") zhuxiao() elif choice=="8": print("退出程序") return