模拟博客园系统

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)+"\n")
    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)+"\n")
    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)+"\n")
    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("您输入的菜单不存在. 请重新输入")

原文地址:https://www.cnblogs.com/bpbl/p/10208796.html

时间: 2024-10-10 09:40:26

模拟博客园系统的相关文章

python简单模拟博客园系统

# 用代码模拟博客园系统## 项目分析:# 1.首先程序启动,显示下面内容供用户选择:## 1.请登录# 2.请注册# 3.进入文章页面# 4.进入评论页面# 5.进入日记页面# 6.进入收藏页面# 7.注销账号# 8.退出整个程序# 2.必须实现的功能:## 1.注册功能要求:# a.用户名.密码要记录在文件中.# b.用户名要求:不能有特殊字符并且确保用户名唯一.# c.密码要求:长度要在6~14个字符之间.## 2.登录功能要求:# a.用户输入用户名.密码进行登录验证.# b.登录成功之

百万年薪python之路 -- 第二周 --模拟博客园系统

项目分析: 一.首先程序启动,显示下面内容供用户选择: 1.请登录 2.请注册 3.进入文章页面 4.进入评论页面 5.进入日记页面 6.进入收藏页面 7.注销账号 8.退出整个程序 二.必须实现的功能: 1.注册功能要求: a.用户名.密码要记录在文件中. b.用户名要求:只能含有字母或者数字不能含有特殊字符并且确保用户名唯一. c.密码要求:长度要在6~14个字符之间. 2.登录功能要求: a.用户输入用户名.密码进行登录验证. b.登录成功之后,才可以访问3 - 7选项,如果没有登录或者登

使用python selenium-webdriver模拟博客园登录

初学python,最近在抱着虫师的python+selenium自动化的书看,也尝试写个登录功能的验证2333 code:########################## #使用python selenium-webdriver #模拟博客园的登录流程 #首页--登录页面--跳转回首页--检查--退出登录恢复环境 ########################### from selenium import webdriver import time import sys url_cnbl

python模拟博客园登录-基础版

mport timeimport inspectfrom functools import wrapsuser_status = {'username': None,'status': False} dic1 = { 1: '登录', 2: '注册', 3: '文章', 4: '日记', 5: '评论', 6: '收藏', 7: '注销', 8: '退出程序'} dic2 = { 3: 'artecle', 4: 'diary', 5: 'comment', 6: 'collection', 7

BBS(仿博客园系统)项目05(后台管理功能实现:文章添加、富文本编辑器使用、xss攻击、BeautifulSoup4模块、富文本编辑器上传图片、修改头像)

摘要 布局框架搭建 随笔添加 后台管理富文本编辑器KindEditor xss攻击 文章简介的截取,BeautifulSoup4模块 富文本编辑器上传图片 头像修改 一.后台管理框架布局搭建 后台管理布局框架分析:导航条.左侧功能区.右侧主要功能显示和实现区 实现: 导航条:使用bootstrap模板:JavaScript>>导航条 左侧:使用bootstrap模板:组件>>列表组 右侧:使用bootstrap模板:JavaScript>>标签页 新建后台管理路由(注意

利用装饰器模拟博客园登陆

import os # 登录状态 status_dic = { 'username': None, 'status': False } flag = True # 用户名,密码 以字典形式打开 def user_pwd(): with open("user", encoding="utf-8") as f: dic = {} for i in f: li = i.strip().split("|") dic[li[0].strip()] = li

前端练习 模拟博客园页面搭建

完成效果 blog.css /*这是一个博客园首页的样式表*/ /*通用样式*/ body{ margin: 0; background-color: #eeeeee; } a{ text-decoration: none; /*取消下划线*/ } ul{ list-style-type:none; padding-left: 0; } .clearfix:after{ /*防止父标签塌陷*/ content:''; display: block; clear:both; } .blog-lef

博客园路在何方?

我在博客园落户已经有19个月了,而博客园从开放至今也经历了2年半的时间.在这段时间内,博客园从无发展到全国最知名也是最优秀的.Net社区,这个成绩可以说是惊人的. 为了博客园打个广告 转载: http://www.cnblogs.com/idior/archive/2006/07/02/440947.html 博客园为我个人的技术成长提供了一个良好的环境,通过阅读灵感,sumtec, ccboy,吕震宇,wayfarer等人的blog,我从中了解到了很多知识,也产生了很多想法,并且也加入到了书写

PHp + socket编程练习——博客园回复

因为也是学习的路上,先画出思路,代码和看别人的学习的,最后是根据的思路完成的,可能比较简单,后期在去完善和更改 <?php /** * php+socket 编程 发送HTTP请求 * @version c.php * 模拟博客园评论 */ interface Proto{ // 连接url public function conn($url); // 发送get请求 public function get(); // 发送post请求 public function post($body);