码迷,mamicode.com
首页 > 其他好文 > 详细

管理信息系统 课程设计

时间:2018-06-16 15:12:12      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:传递   内容   cot   post   保存数据   xxxx   转化   上传头像   错误   

管理信息系统

 

一、     系统概要说明

该网站是由Python+Flask+MysqL的web建设技术开发的。本系统是一个实用的个人博客网站,集博客、评论、于一身。未注册的用户只可以浏览文章,注册成为该系统的用户,可以发表文章、评论,上传头像,修改密码,点赞收藏。布局简单,样式简介。

 

二、     网站结构设计

网站统一布局:头部导航条、底部图片导航、中间主体内容区域

技术分享图片

用户未登录时,头部导航为首页、登录、注册、问答和组合搜索,用户登录后,头部导航为首页、更改信息、个人中心、退出、问答和组合搜索。

中间主体内容区域,是不同html的组合,点击导航上的各个功能,进入不同的html。首页通过文章的标题,可进入文章详情页,进行留言、点赞和收藏。

 

三、     模块详细设计

  1. 注册

js文件中,onclick函数return True时才提交表单,return False时不提交表单。在页面当中,<form>中设置 action和method="post",<input> 中设置 name

在主py文件中,设置方法,获取form中的数据,判断用户名是否存在,不存在则存到数据库中,再重新定向登录页;存在则提示错误信息。

技术分享图片技术分享图片 

  1. 登录

在登录页面,在form设置action和method=“post”,在input设置用户名密码

在主py文件:@app.route设置login methods,GET的方法得到页面,POST发回读取表单数据,查询数据库,用户名密码是否正确,正确则跳转到首页;不正确则提示错误。

技术分享图片技术分享图片 

  1. 上传头像及修改密码

在页面form表单中,需要指定`encotype=‘multipart/form-data‘`才能上传文件。后台代码中查询到该用户,获取文件所在目录的完整路径,其中 os.path.dirname(__file__)函数用于取出主文件的位置,在用os.path.join()函数将该位置和后面指定的‘static/uploads‘ 字符串连接一起,获取图像路径。 

技术分享图片 

定义修改密码的函数,查找该用户进行修改从而修改密码

技术分享图片 

  1. 发布

编写要求登录的装饰器,要求登录才能发布文章,未登录则跳转至登录页面。

在发布页面,在form设置action和method,在input设置用户id,分类id,文章标题及内容等等,通过主py文件session.add添加到数据库,保存数据库,重新定向到数据库。

 技术分享图片

  1. 评论

在主py文件,定义评论的视图函数,读取前端页面数据,保存到数据库中

技术分享图片 

  1. 首页文章列表页及问答详情页

首页列表显示全部问答:将数据库查询结果传递到前端页面 question.query.all(),前端页面循环显示整个列表,按照时间排序全部问答

技术分享图片

问答详情页:包含该问答全部信息,推荐文章,评论区,评论区列表,点赞收藏等

技术分享图片

四、     数据库设计

SQLAlchemy 是一个 Python 包,其最底层包装了对数据库进入操作的统一接口,然后在最上层提供了对象关系映射(ORM)的实现。Python的 ORM框架SQLAlchemy,可以让我们操作数据库跟操作对象一样方便。

该博客系统使用了Navicat for MySQL 的软件,在mysql创建数据库mis1515。

技术分享图片技术分享图片 

建立mysql和app的连接,在数据库配置信息config.py中加入以下配置。

在config.py中加入以下两项配置:

SQLALCHEMY_DATABASE_URI= = ‘mysql+pymysql://root:xxxxx@localhost:3306/mis1515?charset=utf8‘

SQLALCHEMY_TRACK_MODIFICATIONS = False

 技术分享图片 

在主py(mis1515.py)中加入

import config

app.config.from_object(‘config‘)

db = SQLAlchemy(app)

测试是否连接成功 db.create_all() 

 技术分享图片

各个表之间的关联

 技术分享图片

各个表的数据类型

分类表:文章的分类,便于查询,字段包括分类名称和内容

技术分享图片

收藏表:用户可以收藏喜欢的文章,字段包括该收藏的文章id,用户id

 技术分享图片

评论表:字段包括评论的用户id,问题的id及其评论内容

 技术分享图片

问答表:字段包括标题,内容,发表的用户,文章的分类名,浏览数,点赞数

 技术分享图片

用户表:字段为用户名,密码,评论次数,用户头像

 技术分享图片

五、     系统实现的关键算法与数据结构

查找对象时,通过Flask-SQLAlchemy提供的一个query属性,当你通过model类的query属性,你可以得到一个数据库表的查询结果集,再使用filter对结果进行过滤。这个查找大量运用在这个系统,包括搜索功能。

user = User.query.filter(User.id == user_id).first()

query = Question.query.filter( or_(
        Question.title.contains(qu),
        Question.detail.contains(qu),
    ) .order_by(‘-creat_time‘).all()

 

加密算法:将密码明文转化为hash码

from werkzeug.security import generate_password_hash, check_password_hash

    @property

    def password(self):  #外部使用

        return self._password

    @password.setter

    def password(self, row_password):

        self._password = generate_password_hash(row_password)

    def check_password(self, row_password):

        result = check_password_hash(self._password,row_password)

        return result

 

六、     成品展示

 技术分享图片

首页页面可以看到不同用户发表的简略问答,右边可以根据你选择的分类而显示该类别的文章

 技术分享图片

注册页面,输入账号和密码,符合条件即可注册跳转至登录页面

技术分享图片

登录页面,输入正确的账号和密码即可登录成功,并跳转至首页

技术分享图片

用户可以上传喜欢的头像和更改密码

 技术分享图片

个人中心页面可以看到个人的问答、评论、收藏及信息

技术分享图片

发布问答页面,用户可以发布自己问题或文字,显示在首页的文章列表中。

技术分享图片

评论页,用户点击文章进入详情页,即可点赞收藏及评论,也可以看到其他用户的评论内容。

管理信息系统 课程设计

标签:传递   内容   cot   post   保存数据   xxxx   转化   上传头像   错误   

原文地址:https://www.cnblogs.com/qianshu/p/9190482.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!