博客园
Posted shiguanggege
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了博客园相关的知识,希望对你有一定的参考价值。
用软件开发规范编写模拟博客园系统
项目分析:
一.首先程序启动,显示下面内容供用户选择:
1.请登录
2.请注册
3.进入文章页面
4.进入评论页面
5.进入日记页面
6.进入收藏页面
7.注销账号
8.退出整个程序
二.实现的功能:
1.注册功能要求:
a.用户名、密码要记录在文件中。
b.用户名要求:只能含有字母中文或者数字不能含有特殊字符并且确保用户名唯一。
c.密码要求:长度要在6~14个字符之间。
2.登录功能要求:
a.用户输入用户名、密码进行登录验证。
b.登录成功之后,才可以访问3 - 7选项,如果没有登录或者登录不成功时访问3 - 7选项,不允许访问,跳转到登录。(装饰器)
c.超过三次登录还未成功,锁定用户且提示联系管理员并退出整个程序。
3.进入文章页面要求:
提示欢迎xx进入文章页面。(xx是当前登录的用户名)
4.进入评论页面要求:
a.展示所有用户的评论 (xx是当前登录的用户名)
1楼 - xx:这周作业真难啊
2楼 - xx:这是要死的节奏啊
3楼 - xx:真是一个大烧饼,留这么多作业
b.让用户选择是否要评论
c.如果评论写入到评论的文件中(使用json模块)
5.进入日记页面要求:(提示每个用户创建一个文件)
a.展示当前用户的日记内容
b.让用户选择是否要记录日记
c.如果要记录日记,将日记写入到文件中,日记内容如下:(使用json模块和time模块)
{"time":"xxxx-xx-xx xx:xx:xx","content":"xxxxxx"}
6.进入收藏页面要求:
提示欢迎xx进入收藏页面。
7.注销账号要求:
不是退出整个程序,而是将已经登录的状态变成未登录状态(访问3~7选项时需要重新登录)。
8.退出整个程序要求:
就是结束整个程序。
starts:
import sys
sys.path.append(r‘C:\\Users\\zhoujinghua\\PycharmProjects\\project-nlp‘)
from qiche.boke.core.src import start
start()
setting:
SUODING=r‘C:\\Users\\zhoujinghua\\PycharmProjects\\project-nlp\\qiche\\boke\\db\\suoding.txt‘
REGISTER=r‘C:\\Users\\zhoujinghua\\PycharmProjects\\project-nlp\\qiche\\boke\\db\\register.txt‘
PINGLUN=r‘C:\\Users\\zhoujinghua\\PycharmProjects\\project-nlp\\qiche\\boke\\db\\pinglun.txt‘
NAME=r"C:\\Users\\zhoujinghua\\PycharmProjects\\project-nlp\\qiche\\boke\\db"
src:
import json
import time
import os
from qiche.boke.lib.common import warpper
from qiche.boke.conf import setting
def login():
while 1:
with open(setting.REGISTER, ‘r‘, encoding=‘utf-8‘) as f,open(setting.SUODING, ‘a+‘, encoding=‘utf-8‘) as f2:
user1=input(‘请输入用户名:‘).strip(‘ ‘)
pwd= input(‘请输入密码:‘).strip(‘ ‘)
for i in f:
a,b=i.strip().split(‘:‘)
if a==user1 and b==pwd:
dic1[‘sta‘]=True
dic1[‘user‘]=user1
print(‘登录成功‘)
return
else:
f2.write(f‘{user1}\\n‘)
f2.seek(0)
if f2.read().count(user1)>2:
print('用户被锁定请联系管理员')
break
else:
print('用户名或密码错误,请重新输入')
def resginter():
with open(setting.REGISTER, ‘a+‘, encoding=‘utf-8‘) as f:
user=input(‘请输入注册用户名:‘).strip(‘ ‘)
if user.isalnum():
if user in f.read():
print(‘用户已存在‘)
else:
paw=input(‘请输入注册密码:‘).strip(‘ ‘)
if 14>len(paw)>6:
f.write(f‘{user}:{paw}\\n‘)
print(‘注册成功‘)
else:
print(‘密码长度不符,请输入6-14个字符‘)
else:
print('输入有误,请重新输入')
print('注意!用户名要求:只能含有字母中文或者数字不能含有特殊字符')
@warpper
def wen():
print(f"欢迎{dic1[‘user‘]}访问文章页面")
@warpper
def ping():
with open(setting.PINGLUN, 'a', encoding='utf-8') as f3,open(setting.PINGLUN, 'r', encoding='utf-8') as f4:
dic2={}
print(f"欢迎{dic1['user']}访问评论页面")
f3.write(f"""1楼 - {dic1['user']}:这周作业真难啊\\n2楼 - {dic1['user']}:这是要死的节奏啊\\n3楼 - {dic1['user']}:真是一个大烧饼,留这么多作业\\n""")
f4.seek(0)
print(f4.read())
while 1:
f4.seek(0)
wr = input('是否要评论(是 或 否):')
if wr == '是':
wt = input('请输入要评论的内容:')
dic2[dic1['user']] = wt
new_wt=json.dumps(dic2, ensure_ascii=False).replace('{', '').replace('}', '').replace('"','')
f3.write(f"{len(f4.readlines())+1}楼 - {new_wt}\\n")
print('评论成功!')
elif wr == '否':
break
else:
print('请输入是或否')
@warpper
def riji():
print(f"欢迎{dic1[‘user‘]}访问日记页面")
with open(os.path.join(setting.NAME,f"{dic1[‘user‘]}.txt"), ‘a‘, encoding=‘utf-8‘) as f5,open(os.path.join(setting.NAME,f"{dic1[‘user‘]}.txt"), ‘r‘, encoding=‘utf-8‘) as f6:
f6.seek(0)
print(f6.read())
di={}
msg= input(‘是否要记录日记(是/否):‘)
if msg == ‘是‘:
maa=input(‘日记的内容:‘)
di[‘time‘]=time.strftime(‘%Y-%m-%d %H:%M:%S‘,time.localtime(time.time()))
di[‘content‘]=maa
nwe_di =json.dumps(di,ensure_ascii=False).replace(‘{‘,‘‘).replace(‘}‘,‘‘).replace(‘"‘,‘‘)
f5.write(nwe_di)
print(‘记录日记成功!‘)
elif msg == ‘否‘:
return
else:
print(‘输入有误,请重新输入‘)
@warpper
def shou():
print(f"欢迎{dic1[‘user‘]}访问收藏页面")
@warpper
def out():
dic1[‘sta‘]=False
def start():
while 1:
msg = """
1.请登录
2.请注册
3.进入文章页面
4.进入评论页面
5.进入日记页面
6.进入收藏页面
7.注销账号
8.退出整个程序
"""
print(msg)
write = input('请选择序号:')
if write in dic:
dic[write]()
else:
print('输入有误')
dic1 = {‘user‘: ‘none‘, ‘sta‘: False}
dic = {‘1‘: login, ‘2‘: resginter, ‘3‘: wen, ‘4‘: ping, ‘5‘: riji, ‘6‘: shou, ‘7‘: out, ‘8‘: exit}
common:
from qiche.boke.core import src
def warpper(f):
def inner():
if src.dic1[‘sta‘]==False:
print(‘请先登录‘)
src.login()
else:
f()
return inner
以上是关于博客园的主要内容,如果未能解决你的问题,请参考以下文章