• 习题记录 初级阶段


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

    写程序完成下列功能:(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("	")
                    if name==lst[0]:
                        print("用户名已存在,请重新输入.")
                        break
                else:
                    f.write(name+"	"+pwd+"
    ")
                    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("	")
                    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("	")
                        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__ +"函数"+ "
    ")
            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
  • 相关阅读:
    洛谷P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib
    洛谷 P1062 数列
    洛谷 P2822 组合数问题
    HDU 6112 今夕何夕
    poj 2115 C Looooops
    HDU 6092 Rikka with Subset
    poj 2720 Last Digits
    poj 1254 Hansel and Grethel
    poj 1222 EXTENDED LIGHTS OUT
    poj 2459 Sumsets
  • 原文地址:https://www.cnblogs.com/dalaoban/p/9225397.html
Copyright © 2020-2023  润新知