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


    1. 启动程序, 显⽰菜单列表
    菜单:
    1. 登录
    2. 注册
    3. ⽂章
    4. ⽇记
    5. 退出
    2. ⽤户输入选项, ⽂章和⽇记必须在登录后才可以进⾏操作.(装饰器)

    3. ⽤户注册, 将⽤户名和密码写入到register⽂件中. 同时⽣成"article_⽤户名"⽂件⽤于
    存储⽤户⽂章. 同时⽣成"diary_⽤户名" 来存储⽤户的⽇记内容.

    4. ⽤户登录成功后, ⽤户名和密码从register⽂件中读取内容. 并记录好当前登录的⽤户
    名和登录状态.

    5. 在⽤户进入⽂章菜单后. 提⽰⽤户选择: 写⽂章, 读⽂章, 如果⽤户选择读⽂章. 把⽤户
    所有的⽂章标题显⽰出来. 让⽤户选择要显⽰的⽂章标题. 显⽰出⽂章内容. 如果选择
    写⽂章. 则让⽤户输入要写的⽂章标题和⽂章内容. 并存入该⽤户的⽂章⽂件中.
    例如,
    alex登录成功后.
    他可以选择读⽂章和写⽂章.
    读⽂章:
    您的⽂章有:
    1. 中东之⾏
    2. wusir是怎样炼成的
    请选择您要读的⽂章序号: 2
    标题: wusir是怎样炼成的
    内容: wusir这个⼤烧饼, 我们曾经在xxx地⽅的时候xxxxxxxx....
    写⽂章:
    请输入您要编写的⽂章标题: 太⽩在哪⾥
    请输入您这篇⽂章的内容: 太⽩⾦星昨⽇⼜去找王⺟娘娘做头发了.
    ⽂章保存成功

    此时系统读写的⽂件为article_alex⽂件. 如果是peiqi登录. 则操作的是
    article_peiqi⽂件. 每个⽤户都会单独分配⼀个 "article_⽤户名" ⽂件.


    5. 进入⽇记菜单后. 操作和⽂章类似. 差别是. ⽇记的标题就是当天的⽇期. 不需要⽤户
    输入. 直接⽣成系统时间. 当然. 对于⽇记每个⽤户也会有⾃⼰的单独的⽂件产⽣. 统
    ⼀命名为"diary_⽤户名"
    '''
    import time

    login_name = ""
    flag = False

    def login_verify(fn):
    def inner(*args, **kwargs):
    while 1:
    if flag == True:
    ret = fn(*args, **kwargs)
    return ret
    else:
    print("您还没有登录. 请登录!")
    login()
    return inner

    def login():
    print("=============欢迎进入登录环节================")
    while 1:
    uname = input('请输入你的用户名:')
    upwd = input('请输入你的密码:')

    f = open('register', mode="r", encoding="utf-8")
    for line in f:
    d = eval(line.strip())
    if uname == d['username'] and upwd == d["password"]:
    global login_name
    global flag
    login_name = uname # 保存登录的用户名
    flag = True
    print("=============登录成功!!!!!================")
    f.close()
    return
    else:
    f.close() # 关文件
    y = input("=============用户名或密码错误,是否重新登录(Y/N)!!!!!================")
    if y.upper() != "Y":
    return

    def regist():
    print('===========进入注册环节==============')
    ff = True
    while ff:
    uname = input("请输入你的用户名:")
    # 判断用户名是否重复
    f = open("register", mode="r", encoding="utf-8")
    for line in f:
    # 字符串转化回字典
    dd = eval(line.strip())
    if uname == dd['username']:
    print('用户名重复!!!!')
    f.flush()
    f.close()
    break
    else: # 用户名不存在. 可用
    print("用户名可用. ")
    ff = False
    f.flush()
    f.close()

    upwd = input("请输入你的密码:")

    d = {"username":uname, "password":upwd}
    f = open("register", mode="a", encoding="utf-8")
    f.write(str(d)+" ")
    f.flush()
    f.close()
    # 创建存放文件和文章的文件
    f1 = open("article_"+uname, mode="w", encoding="utf-8")
    f2 = open("diary_"+uname, mode="w", encoding="utf-8")
    f1.close()
    f2.close()
    print('===========注册成功!!!==============')

    def read_article():
    print("========读文章环节==============")
    with open("article_"+login_name, mode="r", encoding="utf-8") as f:
    count = 1
    for line in f:
    print(count, eval(line.strip())['title'])
    count += 1
    while 1:
    cc = input("请输入你要读的文章, 输入Q返回上一单元:") # 3
    if cc.upper()=='Q':
    return

    id = int(cc)

    if id < 1 or id > count:
    print('该文章不存在')
    continue
    else:
    with open("article_" + login_name, mode="r", encoding="utf-8") as f:
    for i in range(id):
    line = f.readline()

    # 此时读取的line就是第id行的数据
    dd = eval(line.strip())
    print('您选择的文章标题是: %s' % dd['title'])
    print("您选择的文章内容是:")
    print(dd['content'])

    def write_article():
    print("========写文章环节==============")
    title = input('请输入你要写入的文章标题:')
    content = input("请输入你要写入的文章的内容:")
    d = {"title":title, "content": content}
    with open("article_"+login_name, mode="a", encoding="utf-8") as f:
    f.write(str(d)+" ")
    print("========文章写入成功!!!!!==========")

    def read_diary():
    print("========读日记环节==============")
    with open("diary_"+login_name, mode="r", encoding="utf-8") as f:
    count = 1
    for line in f:
    print(count, eval(line.strip())['title'])
    count += 1
    while 1:
    cc = input("请输入你要读的日记, 输入Q返回上一单元:") # 3
    if cc.upper()=='Q':
    return

    id = int(cc)

    if id < 1 or id > count:
    print('该日记不存在')
    continue
    else:
    with open("diary_" + login_name, mode="r", encoding="utf-8") as f:
    for i in range(id):
    line = f.readline()

    # 此时读取的line就是第id行的数据
    dd = eval(line.strip())
    print('您选择的日记标题是: %s' % dd['title'])
    print("您选择的日记内容是:")
    print(dd['content'])

    def write_diary():
    print("========写日记环节==============")
    title = time.strftime("%Y-%m-%d")
    content = input("请输入你要写入的日记的内容:")
    d = {"title":title, "content": content}
    with open("diary_"+login_name, mode="a", encoding="utf-8") as f:
    f.write(str(d)+" ")
    print("========日记写入成功!!!!!==========")

    @login_verify
    def article():
    while 1:
    print("========欢迎来到文章环节=============")
    print("1. 读文章")
    print("2. 写文章")
    print("3. 返回")
    num = input("请输入你要执行的菜单:")
    if num == "1":
    read_article()
    elif num == "2":
    write_article()
    elif num == "3":
    print("========结束文章环节=========")
    return

    @login_verify
    def diary():
    while 1:
    print("========欢迎来到日记环节=============")
    print("1. 读日记")
    print("2. 写日记")
    print("3. 返回")
    num = input("请输入你要执行的菜单:")
    if num == "1":
    read_diary()
    elif num == "2":
    write_diary()
    elif num == "3":
    print("========结束日记环节=========")
    return


    print("欢迎来到博客园系统")
    menu = ("登录", "注册", "文章", "日记", "退出")

    while 1:
    for i in range(len(menu)):
    print(i+1, menu[i])

    m = input('请输入你要执行的菜单:')
    if m == "1":
    login()
    elif m == "2":
    regist()
    elif m == "3":
    article()
    elif m == "4":
    diary()
    elif m == "5":
    exit()
    else:
    print("您输入的菜单不存在. 请重新输入")
  • 相关阅读:
    Embeded Linux 之 PHY
    Embeded Linux之网络子系统
    语言之内联函数
    Embeded Linux之海思UART
    Windows 之samba问题
    Embeded linux 之 CIFS 文件操作源码分析
    zookeeper 都有哪些使用场景?
    如何保证分布式系统中接口调用的顺序性?
    分布式系统中接口的幂等性该如何保证?比如不能重复扣款?
    Redis 的并发竞争问题是什么?如何解决这个问题?了解 redis 事务的 CAS 方案吗?
  • 原文地址:https://www.cnblogs.com/bpbl/p/10208796.html
Copyright © 2011-2022 走看看