欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

习题记录 初级阶段

程序员文章站 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