当前位置: 首页 > article >正文

基于web的 BBS论坛管理系统设计与实现

博主介绍:专注于Java .net  php phython  小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作

☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了1000+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人

系统需求规划

用户使用论坛,有一定的流程:用户注册登陆进入论坛,就某个话题(主题帖)展开讨论,通过发帖功能发布新的话题,通过回帖的功能回复已有的话题,通过搜索功能查找已有的话题;管理员通过管理功能创建、编辑、删除论坛的板块,管理注册用户,管理帖子,设置论坛基本参数。这样的流程就决定了论坛的需求,如图所示:


                             论坛流程图

(一)需求分析

   从流程图上可以看到论坛完成的走向,其实每一个流程的节点处都有许多功能,如下表:

论坛功能列表

论坛板块列表

浏览帖子

发帖回帖

搜索帖子

编辑帖子

删除帖子

精华帖

置顶帖子

转移帖子

用户注册

用户登陆

控制用户权限

修改注册信息

设置论坛参数

管理板块

管理用户

    在这十六个凌乱无序的需求进行整理、归纳、再构建系统的整体框架,设计处数据实体、接口、用户界面,最终将所有功能需求装化为可以编码实现的程序框架。首先,通过观察论坛所有功能需求,可以发现在这十六个功能需求中,如果按照不同事务分类,可以分为四类对象:板块、帖子、用户和论坛。这四类对象,可以设计为四个数据实体,如果用数据库存储它们,即可以设计四个基本数据表。如图:  

板块类有浏览列表和管理两个方法,管理方法又可以分为创建、修改和删除3个子方法,如图:

              板块对象的相关用例图

帖子类有浏览、发帖、回帖、搜索和管理5个方法,浏览方法又可以分为列表和查看2个子方法,管理方法又可以分为编辑、删除、置顶、转移、指定精华5个子方法,如图:


                     帖子对象的相关用例图

用户类有注册、登陆和管理3个子方法,管理方法又分为添加、删除和设置权限3个子方法,如图:

              用户对象的相关用例图

论坛一般存在两种用户,分别为注册用户和管理员。用户的权限是向下覆盖的,即上级权限包含下级权限,在本论坛中,管理员的权限是上级权限。与注册用户相关的功能,其实就是论坛前台的主要功能。论坛系统的前台,是用户讨论问题的平台,发帖、回帖一直贯穿用户整个的前台活动。同时,由于论坛系统的帖子管理是管理员在帖子浏览时进行的,所以编辑帖子、删除帖子、转移帖子、置顶帖子和指定精华帖等功能也安排在前台实现。其他与管理员相关的功能,包括板块管理、用户管理和论坛设置等都是管理员在后台进行的操作。

(二)功能设计

1.基本功能设计

通过需求分析,论坛的基本功能可以从众多的需求中筛选出来。顾名思义,基本功能就是构成论坛系统的必要功能,具备这些功能的Web系统即是论坛。

基本功能:

发帖。论坛最初是为了相互讨论话题而诞生的,发表帖子就是表达自己的看法,与他人进行讨论,因此发帖是论坛首要的功能。

浏览帖子。发表了帖子,就要供他人浏览查看,与他人分享自己的想法和经验。

回帖。浏览了他人发表的帖子,想要发表自己的想法,参与讨论,就可以回复这个帖子。

         

2.扩展功能设计

除了基本功能之外,其他的论坛功能都是扩展功能。

注册登陆。原先的论坛在发帖回帖时,需要填写自己的笔名。这样,经常发帖的人总是要重复填写笔名,比较麻烦。因此,论坛扩展了用户注册登陆功能,参与论坛的注册自己的笔名以及个人信息,拥有论坛中的身份,发言时就不需要重复填写个人信息了。

分板块浏览帖子。随着论坛帖子数量的增多,讨论相同话题的帖子聚集在一起,引出了论坛新的扩展功能,即分板块浏览帖子,属于同一板块的帖子讨论同样的话题。这样,就使得对某一话题感兴趣的用户不会被其他帖子干扰,也有利于相同兴趣的用户相互间讨论,不易跑题。

编辑帖子。发帖回帖的用户,如果需要修改更新自己发表的帖子内容,就引出了编辑帖子内容这个扩展功能,提供给用户更新自己发言的选择。对于论坛管理员,可以编辑任何帖子的内容,也算是提供给管理员进行管理的选择。

删除帖子。如果用户发表了不符合论坛规则的帖子,则需要管理员删除这些帖子,这就引出了删除帖子的扩展功能。

转移帖子。论坛划分了板块,如果帖子内容不属于所在板块的关注话题,那么管理员可以选择将此帖移动到所属话题的板块中去,这就引出了移动帖子的扩展功能。这个功能是随着板块功能的出现而出现的,板块将帖子进行了分组,从而提出了随板块移动帖子的要求。

置顶帖子。帖子一般是根据发表以及回复时间到序排列的,这样先发的帖子就慢慢排到后面,管理员如果需要强调某些帖子重要,又必看性,就要打乱默认的排列顺序,将这些帖子放在列表的最前端,不再按照时间进行顺序的变化,但是还要保证其他帖子按照时间变化顺序进行排列,这就引出了置顶帖子的扩展功能。

指定精华帖。如果管理员认为某个帖子的内容非常好,可以打上标记,推荐给看帖的用户,这就引出了指定精华帖的扩展功能。用户可以选择只看打上标记的精华帖。

搜索帖子。论坛中的帖子越来越多,用户需要从大量的帖子中找到自己需要的内容,这就引出了搜索帖子的扩展功能。

管理板块。论坛板需要先创建,才能被使用,管理员还可以删除修改板块的相关信息,因此管理板块是管理员使用的扩展功能。

设置参数。论坛一般有一些初始化信息,比如论坛名称,每页显示帖子数量等参数信息,管理员也可以在后台界面自行设置,这页属于扩展功能。

管理用户。管理员可以对论坛的注册用户进行管理,直接添加用户,赋予相关权限,也可以修改已注册用户权限,对违规用户可以删除,这个扩展功能便于管理员对论坛用户的管理。

论坛的扩展功能如图:

(三)设计可扩充功能的接口

列出了所有基本的和扩展功能之后,在设计时需要考虑以后扩充的余地,即在给论坛添加新的功能的时候,原有的功能正常可用,不受影响。或者丰富扩展某个功能时,能够方便衔接。

这就要求在设计程序时,每个功能保留开放的接口,通过接口可以对功能进行扩充,也可以与新功能进行挂接。其实现的原理及思路如图:


                         功能的可扩充接口实现原理

四、功能模块与数据库设计

(一)设计框架

在确定了论坛系统的设计思路之后,还需要归纳成系统的相关模块,每个模块实际上就是功能的合理组合。由于已经将功能做了前台与后台的分类,因此模块也应该分为两大类:前台模块和后台模块。用户在前台的注册、登陆,以及修改个人的注册信息组合成注册信息组合成注册登陆模块。用户浏览板块、浏览主题帖列表、查看帖子组合成浏览模块。用户发帖、回帖、编辑自己发布的帖子组合成发帖回帖模块。管理员编辑帖子、删除帖子、转移帖子、置顶帖子和精华帖子组合成管理帖子模块。以上4个模块是前台模块。后台模块都是与管理员相关的,设置论坛参数单独为论坛设置模块;创建、修改和删除板块为管理板块模块;添加、删除和设置权限为管理用户模块。

BBS的模块体系图:


从用户角度分析问题,首先区分系统中有几种用户,目前的论坛系统,为了使其清楚易懂,简化了用户体系,论坛中只有两种用户:注册用户和管理员。一般论坛中的版主权限,划分为管理员,这也是为了使读者容易分清论坛的使用者和管理者。对于注册用户,在论坛中的行为可归纳如下:

  1. 注册个人身份,登陆论坛,登陆成功后可以修改自己的注册信息。这些行为只与用户自身相关,功能独立,设计成注册登陆模块。
  2. 浏览板块列表,选择某板块,浏览其下的主题帖列表,查看帖子内容,搜索需要的帖子。这些行为是用户读取论坛的板块及其帖子的相关信息,设计成浏览模块。

可以发表新帖子,也可以回复已有的帖子,同时可以编辑自己写的帖子内容。这些行为是用户参与论坛讨论,发表自己见解的行为,设计为发帖回帖模块。

管理员需要负责整个论坛的正常运转,因此他需要更多的管理功能,可以归纳为如下行为:

  1. 具备注册用户的所有功能。因为管理员也是论坛用户,可以参与论坛中的讨论。
  2. 管理帖子。管理员对论坛的帖子有监督的权利,好的帖子要奖励,捣乱的帖子要删除,标识精华帖,置顶帖子,转移发错板块的帖子,这些行为都是针对帖子的操作,设计成管理帖子模块。
  3. 管理板块。论坛中的板块,需要管理员进行创建、管理板块信息,这些针对板块的操作,设计成管理板块模块。
  4. 管理用户。用户注册成功后,需要管理员赋予权限,才能使用论坛的相关功能。同时,管理员可以自主添加、删除用户,这些针对用户信息的操作,设计成管理用户模块。

(二)模块的划分及设计

每个模块的功能都真实反映需求,通过对需求的认真分析,可以设计出符合要求的单独模块。但是,对于一个论坛系统来说,要很好地把握系统地构架,把零散地功能模块用一条主线串连起来,构建完整的系统。

对论坛系统来说,联系各个模块的主线是使用者的权限,用户能够使用论坛的哪些功能是由用户的权限决定的。论坛的每个功能都与相应的权限对应。例如,注册用户具有浏览帖子、发帖、回帖的权限,那么他就能使用论坛中的浏览、发帖、回帖功能。同一类用户使用的功能模块,是以使用者为中心连接起来的。另外,操作同类事务的功能模块,也是有相互关系的。


    因此,浏览模块与发帖回帖模块、管理帖子模块关联,是由论坛的系统流程决定的,如图:

               帖子相关模块关系图


管理板块模块与浏览模块关联,是由帖子与板块的父子关系决定的。帖子依附于板块,先有板块,后有帖子,帖子必须发表在某个板块中,如图:


管理用户模块与注册登陆模块关联,是由同一类对象——用户决定的。注册后获得论坛的身份,成为用户,所有的用户需要接受管理员的管理,用户登陆证明自己在论坛中的身份,如图: 

           管理用户模块与注册登陆模块关系图

弄清楚模块间的相互关系,就可以设计出论坛系统的整体架构了,如图:

系统整体架构图

系统因入口的不同而分为前台系统与后台系统。前台系统包括注册登陆模块、浏览模块、发帖回帖模块、管理帖子模块;后台包括管理用户模块、管理板块模块。之所以要把属于管理员权限的管理帖子模块归属于前台,是因为,对于一个论坛系统,帖子是最主要的,为了方便管理,管理员需要一边浏览查看一边进行管理,管理时需要了解帖子的详细内容,以及相关回帖信息,因此将帖子的管理界面融合在前台的浏览界面中。至于其他的模块则比较清楚,是根据用户的权限划分的。

(三)设计数据库

本系统所使用的数据库服务器为ACCESS 2000,它在ACCESS 2000 的基础上, 扩展了ACCESS的总体功能与性能、工具界面更加方便合理、全面的数据完整性保护、系统安全性更高。ACCESS 2000的数据库空间不会受限于Device空间大小, 方便了数据空间的扩展, 使ACCESS 2000作为一个网络数据库管理系统,其扩展已超出了单个物理计算机的限制,并且多服务器“分布式”事物的内在支持更加充分。本系统主要使用了存储过程Stored Procedure, 所谓Stored Procedure实际上就是一段保存在数据库中的程序, 通过一个名称的命名,其中包含有处理数据库存取与运算的SQL语句, 并且将这样的程序文件紧密结合在数据库中,这样我们的前台应用系统在执行过程中,可以直接执行数据库中设置好的Stored Procedure,甚至可以传递参数。

(四)创建数据库

ACCESS 2000 的Manager管理工具是一个非常好用的可视化管理工具, ACCESS 2000中提供的datetime和text两种字段类型,其中datetime是用来保存日期和时间数据的,text 是用来保存不定长度的备注说明内容的, 有了这两个数据类型, 应用系统中就不用再为输出格式和限制字符串长度而增加额外代码了。

数据表间关系:

序 号

数据表名称

说  明

1

T_Operator

操作员(用户)表

2

T_Forum

论坛回帖表

3

T_Topic

论坛主题表

4

T_UserPara

系统参数表

5

T_Mark

积分头衔表

6

T_OperatorFunction

用户功能权限关联表

7

T_Function

功能表

之所以这样设计数据表间关系,主要是考虑论坛中各个对象得相互关系,帖子属于板块,回复帖从属于主题帖,帖子的作者属于用户,因此板块、主题帖、回复帖是一层层的从属依赖关系,帖子的作者必须是论坛的用户,帖子不能脱离板块、用户而单独存在。


五、系统实现与测试

本论坛系统完成之后,就必须设计许多的测试用例来验证本系统的正确性,容错能力/恢复能力,信息安全性,可靠性等,尽可能多地找出系统的错误所在。

(一) 验证性测试

在登录论坛之前,论坛首页上显示 “您的当前状态是:未登录!”(如图1)此时,该用户除了能够进行用户注册之外,没有任何权限访问论坛的任何一个模块。当点击任何一个功能按钮时,页面将会显示:“您没有登录,请返回!”

当用户点击“注册”按钮,页面便跳转到用户注册界面(如图 2),若注册成功,则显示“注册成功”(如图3),否则显示“发生错误···返回”。

图 1

               图 2                                     图 3

    

当点击登录按钮,则页面跳转到登录界面(如图 4)用户成功登陆之后,页面即显示您的当前状态为“已登录”(如图 5)。只有当用户登录之后才能够修改该用户的信息,否则,当用户点击“修改注册信息”按钮时,页面会显示“没有登录,取不到用户信息。请返回”。

   

         图 4                                      图 5

    

(二) 添加、编辑和删除功能测试

当管理员点击“新建论坛”按钮,页面即跳转到图 9,管理员可以根据需要添加某些论坛,若添加成功则显示“添加成功”,否则显示错误信息。

                          图 9

有了论坛的添加当然也少不了论坛的编辑和删除(如图 10),点击编辑按钮,则论坛信息全部变为编辑状态,当编辑完成,则点击更新,否则点取消。若要删除某个论坛,在点击删除按钮时会有确认信息提示,以防错误操作(如图 11)。若这些操作成功,则页面显示更新过的数据,否则提示错误信息。

图 10

图 11


大家点赞、收藏、关注、评论啦  其他的定制服务  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者
 


http://www.kler.cn/a/308776.html

相关文章:

  • AI时代的研发生产关系,是否有新的可能?
  • C#程序开发,检测当前电脑已经安装的软件目录
  • 欧国联的规则,你都了解吗?
  • JavaScript Cookie 与 服务器生成的 Cookie 的区别与应用
  • [项目代码] YOLOv5 铁路工人安全帽安全背心识别 [目标检测]
  • Android Profiler 内存分析
  • 【AI学习笔记】初学机器学习西瓜书概要记录(一)机器学习基础知识篇
  • 苍穹外卖Day01-2
  • 机器人的静力分析与动力学
  • vue中解决上个路由的el-dialog遮罩层未关闭问题
  • mqtt整体了解
  • python实现多个pdf文件合并
  • 二十三种设计模式之适配器模式
  • 单调队列,LeetCode 2398. 预算内的最多机器人数目
  • ai 回答HFS是什么 HTTP的文件服务器是什么
  • 数据结构之排序算法的分析和应用
  • 【数据结构篇】~链表算法题3(环形链表)
  • C# net跨平台上位机开发(avalonia)附demo源码
  • 牛客背包问题练习 xinjun与阴阳师
  • 苍穹外卖学习笔记(八)
  • 【案例71】配置https之后 IE打不开登陆页面 Uclient没有问题
  • 《微信小程序实战(2) · 组件封装》
  • 【重学 MySQL】二十七、七种 join 连接
  • 宝塔Linux部署 Vue + Spring Boot + MySQL + Redis
  • Parallels Desktop 20 for Mac 正式发布,更新了哪些新功能(附下载链接)!
  • 深度学习驱动超材料设计领域发展