首页 > 其他 > 详细

管理信息系统 课程设计

时间:2018-06-15 23:56:21      阅读:470      评论:0      收藏:0      [点我收藏+]

影评论坛的设计与实现

 

一、 系统概要说明

1.1绪论

随着网络时代的发展,论坛已经备受广大网友所喜爱,论坛作为一个信息交流平台,在人们获取信息,发表言论的过程中起到一个很大的作业。因此建立一个系统论坛是很有必要的。我建立的是影评论坛,在论坛里,所有用户都可以浏览广大网友发表的言论,也可以发表言论,对一部电影提出自己独到的见解,也可以对别的用户发表的影评进行评论。整个系统包含了七个模块:论坛用户的登录注册注销模块;后台数据管理模块;论坛帖子发表模块;受欢迎影评排名模块;个人中心模块;高级搜索模块;热文推荐模块。用python语言做前台页面,MYSQL作为后台数据库,pycharm工具,开发出一个完整的影评论坛系统。

1.2 开发背景

论坛全称为Bulletin Board System(电子公告板)或者Bulletin Board Service(公告板服务),www.shexiangji007.com是Internet上的一种电子信息服务系统。它提供一块公共电子白板,每个用户都可以在上面书写,可发布信息或提出看法。它是一种交互性强,内容丰富而及时的Internet电子信息服务系统,用户在BBS站点上可以获得各种信息服务、发布信息、进行讨论、聊天等等。

设计BBS论坛系统是网络开发的重要工作,在建设BBS网站,建立论坛交流平台,主要服务是用来帮助浏览者互相沟通、吸引用户、服务用户的。随着计算机技术的发展与网络的普及功能越来越强大,把BBS论坛作为与用户交流的平台和在线技术支持与服务平台,备受广大网友欢迎。

二、 网站结构设计

2.1 Flask应用框架

Flask是一个使用 Python 编写的轻量级 Web 应用框架。它的设计目的是提供Web开发所需的最小功能子集。Flask与别的框架(尤其是采用其他编程语言的框架)的不同之处在于:它没有绑定诸如数据库查询或者表单处理等功能库,以及它们所组成的整个生态系统。它倾向于对这些功能的实现方式不做任何限定。

这种系统带来的主要好处是:开发者能够使用他们想用的任何方式和工具,去设计他们的应用架构。另外,对于一些常见的通用功能,Flask没有以某种特定方式去实现,这意味着在Flask中,对标准库的使用会比其他框架里多,这保证了通用功能的稳定性及针对其他Python程序员的可读性。由于Flask社区十分庞大,所以该社区提供的添加通用功能的方式非常多。所以通过本系列教程,了解它们如何帮助我们避免重复造轮子。这些扩展的妙处在于,如果不需要那些额外的功能,就不用引入它们,这样我们的应用才会保持简洁、轻量。

这种系统的最大弊端是,大部分新的Flask用户不知道如何正确地规划大型应用的结构,最后弄出一大堆让人难以理解和维护的代码。所以本教程另一个重点是如何为Flask应用创建模型/视图/控制器(MVC)架构。

2.2 Python语言

Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。

Python的设计目标之一是让代码具备高度的可阅读性。它设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观。它不像其他的静态语言如C、Pascal那样需要重复书写声明语句,也不像它们的语法那样经常有特殊情况和意外。

2.3 MYSQL数据库

MySQL是一个精巧的sql数据库管理系统,虽然它不是开放源代码的产品,但在某些情况下你可以自由使用。由于它的强大功能、灵活性、丰富的编程接口以及精巧的系统结构,受到了广大自由软件爱好者甚至是商业软件用户的青睐,为建立数据库的动态网页提供强大动力。

Sql是一种标准化的语言,它使存储、更新和存取信息更容易。例如:你能用SQL语言为一个网站检索产品信息以及存储顾客信息,同时MySQL也足够快和灵活允许你存储记录文件和图像。

三、 模块详细设计

3.1系统功能模块划分

本系统分为用户的注册、登录模块;浏览影评模块;发表影评模块;热文推荐模块;最受欢迎影评模块;个人中心模块。

 技术分享图片

 3.2 系统功能结构设计

在用户登录界面,用户通过注册,成为本系统的用户,自动登录到本系统。在登录后,用户可以浏览整个论坛的所有帖子。也可以在论坛发表自己的帖子,也可以回复别人发表的帖子。如果用户想要退出本系统,则可以点击注销,用户就退出了登录论坛系统。用户登录后能实现的功能模块主要分为:

(1)  用户登录模块

用户输入用户名和密码进行登录,登录完去到首页页面,可浏览其他用户发表的帖子及评论。

(2)  用户注册模块

用户填写注册信息,点击注册完成用户注册功能,并跳转到登录页面。

(3)  修改用户信息模块

在这个模块,用户填写要修改的信息,对以前的用户信息进行修改。

(4)  发表帖子模块

在这个模块,用户发表自己的帖子,完成后帖子列表就会出现该帖子。

(5)  浏览、回复帖子模块

在这个模块,用户点击帖子名称进入浏览帖子回复内容以及回复帖子。并可对帖子进行点赞、收藏的功能。

(6)  热文推荐模块

论坛会根据热度给你近日来热度最高的文章供用户阅读。

(7)  最受欢迎影评模块

论坛会根据点赞数和评论数评出最受欢迎的影评,供用户阅读感受。

(8)  个人中心模块

用户登录后可去到个人中心,查看个人信息,自己发表的全部帖子,以及别人对用户帖子的评价。

(9)  高级搜索模块

用户可打入关键字,就会搜索出与这个关键字相关的帖子。

四、 数据库设计

4.1 数据库分析

数据库设计,在程序开发中起到至关重要的作用,它往往决定了在后面开发进行怎么样的程序编码,一个合理,有限的数据库设计可降低程序的负责性,使得程序开发过程更为容易。

本系统是一个小型的论坛系统,考虑到用户量,开发经济性,决定用MySQL作为数据库系统。

4.2 数据库概念设计

概念数据模型独立于具体的数据处理的细节和书籍库管理系统。这次设计采用传统的实体联系图作为概念设计的工作。再进行优化后,尽量满足结构清晰、关联简洁、实体个数适中、属性分配合理,没有低级冗余。

E-R模型是对现实世界的一种抽象,主要分为实体、联系和属性。

(1)  用户属性图

用户属性表有用户名、密码等属性。下图是用户实体与属性图:

 技术分享图片

(2)  帖子属性图

帖子实体有用户ID,发表作者,发表时间,帖子题目,发表内容等属性。下图是帖子实体和属性图:

 技术分享图片                                                            

(3)  评论帖子属性图

评论帖子的实体有用户ID,作者ID,评论者ID,评论时间,内容等

属性。下图为评论实体和属性值:

 技术分享图片

4.3数据库表设计

本系统的数据库主要有三张数据库表,这三张表分别是:user用户表,question帖子表,comment评论表。这三张表的主要内容如下:

(1)  user用户表主要字段信息表如下:

 

字段名

类型(值)

说明

id(主键)

Int(11)

用户ID

Username

Varchar(20)

用户名

_password

Varchar(200)

用户密码

 

(2)question帖子表主要字段信息如下:

 

字段名

类型(值)

说明

Id(主键)

Int(11)

用户ID

Title

Varchar(100)

标题

Detail

Text

内容

Create_time

datetime

发表时间

Author_id

Int(11)

作者ID

 

(3)comment评论表主要字段信息如下:

 

字段名

类型(值)

说明

Id(主键)

Int(11)

用户ID

Author_id

Int(11)

作者ID

Detail

Text

内容

Create_time

datetime

发表时间

question_id

Int(11)

评论ID

 

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

5.1 用户注册

用户通过注册成为论坛用户,可以浏览帖子,发表帖子以及回复评论帖子等功能。注册后用户直接进入登录页面。

用户注册代码实现:

@app.route(‘/zhuce/‘, methods=[‘GET‘, ‘POST‘])
def zhuce():
    if request.method == ‘GET‘:
        return render_template(‘zhuce.html‘)
    else:
        username = request.form.get(‘username‘)
        password = request.form.get(‘password‘)
        user = User.query.filter(User.username == username).first()
        if user:
            return ‘username existed‘
       
else:
            user = User(username=username, password=password)
            db.session.add(user)
            db.session.commit()
            return redirect(url_for(‘denglu‘)) # 跳转到登录页面

5.2 用户登录

已经注册的会员用户,通过登录,进入论坛首页。用户输入用户名和密码点击登录,然后系统根据用户输入的用户名和密码在后台数据库找到用户名和密码是否匹配,如果匹配成功,则进入论坛首页,如果匹配不成功,则进入失败页面。

用户登录代码实现:

@app.route(‘/denglu/‘, methods=[‘GET‘, ‘POST‘])
def denglu():
    if request.method == ‘GET‘:
        return render_template(‘denglu.html‘)
    else:
        username = request.form.get(‘username‘)
        password = request.form.get(‘password‘)
        user = User.query.filter(User.username == username).first()
        if user:
            if user.check_password(password) :
                session[‘user‘] = username
                session[‘id‘]=user.id
                session.permanent = True
                return
redirect(url_for(‘shouye‘))
            else:
                return u‘password error.‘
       
else:
            return u‘username is not existed.‘

5.3 用户发表帖子

用户点击发布帖子后可进入论坛专区里发表自己的帖子,在这个页面,用户输入要发表帖子的题目和内容,完成后点击发布。

@app.route(‘/wenjuan/‘,methods=[‘GET‘,‘POST‘])
@loginFirst
def wenjuan():
    if request.method==‘GET‘:
        return render_template(‘wenjuan.html‘)
    else:
        title=request.form.get(‘title‘)
        detail = request.form.get(‘detail‘)
        author_id = User.query.filter(User.username == session.get(‘user‘)).first().id
        question=Question(title=title,detail=detail,author_id=author_id)
        db.session.add(question)
        db.session.commit()
        return redirect(url_for(‘shouye‘))

5.4 用户评论帖子

用户在一个论坛模块里看到了自己感兴趣的帖子,可以对该帖子进行评论,系统就将自己评论的内容传上去,并且显示这个帖子的评论数。代码实现如下:

@app.route(‘/xiangqing/<question_id>‘)
def xiangqing(question_id):
    quest=Question.query.filter(Question.id==question_id).first()
    return render_template(‘xiangqing.html‘,ques=quest)
@app.route(‘/comment/‘,methods=[‘POST‘])
@loginFirst
def comment():
    comment=request.form.get(‘new_comment‘)
    ques_id=request.form.get(‘question_id‘)
    auth_id=User.query.filter(User.username==session.get(‘user‘)).first().id
    comm=Comment(author_id=auth_id,question_id=ques_id,detail=comment)
    db.session.add(comm)
    db.session.commit()
    return redirect(url_for("xiangqing",question_id=ques_id))

5.5 个人中心页面

个人中心页面主要包括:全部帖子,全部评论,个人资料。全部帖子是指用户发表过的全部帖子,全部评论是用户发表的帖子所收到的全部评论,个人资料包含了用户名,编码,头像等。主要实现代码如下:

@app.route(‘/usercenter/<user_id>/<tag>‘)
@loginFirst
def usercenter(user_id,tag):
    user=User.query.filter(User.id==user_id).first()
    context={
       ‘user‘:user,
        ‘question‘:user.question,
        ‘comment‘:user.comments
    }
    if tag==‘1‘:
        return render_template(‘usercenter1.html‘, **context)
    if tag==‘2‘:
        return render_template(‘usercenter2.html‘, **context)
    if tag == ‘3‘:
        return render_template(‘usercenter3.html‘,**context)

个人资料:

<div class="page-header">
        <h3>
        <small>个人信息<span class="badge"></span></small>
    </h3>
    <ul class="list-group" style="width: 800px">
        <li class="list-group-item">用户:{{ username }}</li>
        <li class="list-group-item">编号:{{ number }}</li>
        <li class="list-group-item">昵称:{{ warning }}</li>
        <li class="list-group-item">帖子:{{ question|length }}条</li>
        <li class="list-group-item">评论:{{ comments|length }}条</li>
    </ul>
</div>

全部帖子:

<div class="page-header">
        <h3>
        <small>全部帖子<span class="badge"></span></small>
    </h3>
    <ul class="list-group" style="padding-left: 0px; padding-right: 10px; box-shadow: rgba(0, 0, 0, 0.498039) 0px 0px 0px 0px;width: 800px">
        {% for foo in user.question %}
            <li class="list-group-item">
                <span class="glyphicon glyphicon-heart-empty" aria-hidden="true"></span>
                <a href="#">{{ foo.author.username }}</a>
                <span class="badge">{{ foo.creat_time }}</span>
                <p style="">{{ foo.detail }}</p>
            </li>
        {% endfor %}
    </ul>
</div>

全部评论:

<div class="page-header">
        <h3>
        <small><span class="badge"></span>全部评论</small></h3>
    <ul class="list-group" style="padding-left: 0px; padding-right: 10px; box-shadow: rgba(0, 0, 0, 0.498039) 0px 0px 0px 0px;width: 800px">
        {% for foo in user.comments %}
            <li class="list-group-item">
                <span class="glyphicon glyphicon-heart-empty" aria-hidden="true"></span>
                <a href="#">{{ foo.author.username }}</a>
                <span class="badge">{{ foo.creat_time }}</span>
                <p style="">{{ foo.detail }}</p>
            </li>
        {% endfor %}
    </ul>
</div>

5.6 热文推荐

论坛定期为用户推荐一些热评文章供用户阅读,代码实现如下:
<div class="content_mid">
                <h4>热文排行</h4>
                <ul>
                    <li><a href="#">
                        <div class="icon icon1"></div>
                        <p>新京报:"伺候老师应不应当"是冷血无聊的伪问题</p>
                    </a></li>
                    <li><a href="#">
                        <div class="icon icon2"></div>
                        <p>重庆官媒再批"孙政才的问题" 这次点出具体事情</p>
                    </a></li>
                    <li><a href="#">
                        <div class="icon icon3"></div>
                        <p>新京报:"伺候老师应不应当"是冷血无聊的伪问题</p>
                    </a></li>
                    <li><a href="#">
                        <div class="icon icon4"></div>
                        <p>新京报:"伺候老师应不应当"是冷血无聊的伪问题</p>
                    </a></li>
                    <li><a href="#">
                        <div class="icon icon5"></div>
                        <p>新京报:"伺候老师应不应当"是冷血无聊的伪问题</p>
                    </a></li>
                </ul>
</div>

技术分享图片

 


 

5.7 最受欢迎的影评

论坛根据热度,点赞数和评论数评出最受欢迎的影评。具体界面如下:

技术分享图片

 



六、 成品展示
1、主界面

技术分享图片

 


2、登录界面

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

 

 



3、注册页面

技术分享图片

 


4、登录进入首页

技术分享图片

 


5、浏览帖子

技术分享图片

 


6、热文排行

技术分享图片

 


7、发布帖子页面

技术分享图片

 


8、评论页面

技术分享图片

技术分享图片

 

 


9、个人中心

技术分享图片

 




七、 总结
这次的论坛系统,我开始对所搜集的资料进行整理、分析研究,并制作了课题研究的方案及网站设计规划,随即进入紧张而有序的写作及网站创作之中。根据取其精华,去其糟粕的原则,并加入了自己新颖的见解,特别是在制作网站的过程中,吸取其它外文网站的优点,并加入自己的创新点。认真对网站进行规划和一个月来辛勤的创作,终于完成了论坛的开发。开发此BBS论坛的目的是提供一个供用户交流的平台,为广大用户提供交流经验、探讨问题的社区。
当然,由于本人的专业知识水平有限以及时间的限制,在系统设计过程中没有全面做好切合实际的需求分析,所以在开发过程中遇到了一些棘手的问题。现在开发出来的系统还存在部分不足的地方。系统版面设计不够人性化,系统对数据库的操作还不够稳定,程序代码中还存在一些Bug,这些问题在以后的开发过程中还需要逐步完善。

管理信息系统 课程设计

原文:https://www.cnblogs.com/chenyanxi123/p/9189337.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!