zoukankan      html  css  js  c++  java
  • python简单模拟博客园系统


    # 用代码模拟博客园系统
    #
    # 项目分析:
    # 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 hashlib

    login_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 inner

    def yonghuming(): #用户名验证函数
    while True:
    username = input("username:")
    for i in username:
    if not i.isalnum():
    print("No")
    break
    else:
    return username

    def 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} ")
    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次咯!!")

    @wrapper
    def blog_wz(s1):
    if login_dic['status']:
    print(f"欢迎{s1}进入文章页面")
    @wrapper
    def blog_pl(s1):
    if login_dic['status']:
    print(f"欢迎{s1}进入评论页面")


    @wrapper
    def blog_rz(s1):
    if login_dic['status']:
    print(f"欢迎{s1}进入日志页面")


    @wrapper
    def blog_sc(s1):
    if login_dic['status']:
    print(f"欢迎{s1}进入收藏页面")


    @wrapper
    def 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()
    人生苦短,我用python
  • 相关阅读:
    梯度提升树算法GBDT
    优先队列 priority_queue
    谭平 Vision Course Note 1~2 Recommended Textbook and Camera Basics
    侯捷老师C++基础课程笔记7-栈、堆和内存管理
    侯捷老师C++基础课程笔记6-三大特殊函数
    侯捷老师C++基础课程笔记5-操作符重载与临时对象
    侯捷老师C++基础课程笔记4-参数传递与返回值
    侯捷老师C++基础课程笔记3-构造函数(不含指针变量的class)
    侯捷老师C++基础课程笔记1-2
    C文件处理之24/32位bmp图像的旋转
  • 原文地址:https://www.cnblogs.com/niucunguo/p/12040619.html
Copyright © 2011-2022 走看看