习题记录 初级阶段

有宝贵意见可提出,虚心学习

写程序完成下列功能:(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

猜你喜欢

转载自www.cnblogs.com/dalaoban/p/9225397.html
今日推荐