大家好,给大家分享一下python简单案例代码,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!
'''s18第三周周末⼤作业
模拟博客园系统:
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_⽤户名"'''
importtime
login_name= ""flag=Falsedeflogin_verify(fn):def inner(*args, **kwargs):while 1:if flag ==True:
ret= fn(*args, **kwargs)returnretelse:print("您还没有登录. 请登录!")
login()returninnerdeflogin():print("=============欢迎进入登录环节================")while 1:
uname= input('请输入你的用户名:')
upwd= input('请输入你的密码:')
f= open('register', mode="r", encoding="utf-8")for line inf:
d=eval(line.strip())if uname == d['username'] and upwd == d["password"]:globallogin_nameglobalflag
login_name= uname #保存登录的用户名
flag =Trueprint("=============登录成功!!!!!================")
f.close()return
else:
f.close()#关文件
y = input("=============用户名或密码错误,是否重新登录(Y/N)!!!!!================")if y.upper() != "Y":return
defregist():print('===========进入注册环节==============')
ff=Truewhileff:
uname= input("请输入你的用户名:")#判断用户名是否重复
f = open("register", mode="r", encoding="utf-8")for line inf:#字符串转化回字典
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('===========注册成功!!!==============')defread_article():print("========读文章环节==============")
with open("article_"+login_name, mode="r", encoding="utf-8") as f:
count= 1
for line inf:print(count, eval(line.strip())['title'])
count+= 1
while 1:
cc= input("请输入你要读的文章, 输入Q返回上一单元:") #3
if cc.upper()=='Q':returnid=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 inrange(id):
line=f.readline()#此时读取的line就是第id行的数据
dd =eval(line.strip())print('您选择的文章标题是: %s' % dd['title'])print("您选择的文章内容是:")print(dd['content'])defwrite_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("========文章写入成功!!!!!==========")defread_diary():print("========读日记环节==============")
with open("diary_"+login_name, mode="r", encoding="utf-8") as f:
count= 1
for line inf:print(count, eval(line.strip())['title'])
count+= 1
while 1:
cc= input("请输入你要读的日记, 输入Q返回上一单元:") #3
if cc.upper()=='Q':returnid=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 inrange(id):
line=f.readline()#此时读取的line就是第id行的数据
dd =eval(line.strip())print('您选择的日记标题是: %s' % dd['title'])print("您选择的日记内容是:")print(dd['content'])defwrite_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_verifydefarticle():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_verifydefdiary():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 inrange(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("您输入的菜单不存在. 请重新输入")