微信公众号:Java随笔录
关注可了解更多Java相关的技术分享。问题或建议,欢迎公众号留言!
一、系统需求分析
1. 系统描述
作为一个计算机专业的学生,本人深切感受到编程技术的交流学习对自身技能提升的重要性。而随着Web的发展,网上出现了很多论坛社区,但它们的话题范围并不限于编程,针对性不强,而且提供的服务也较为单一。因此,一个针对编程技术交流、完整统一、功能多样化的编程论坛社区是所有编程新手、老手所渴求的。
编程论坛社区IBBS的主体功能包括发布帖子、在已发布的帖子下进行评论、引用评论进行回复。除此之外,还有两个功能模块:动态推送功能,向用户推送最新的技术热点、编程方面的最新动态,包括简要的内容说明以及链接跳转;资源下载功能,向注册用户提供编程资源下载服务。本系统前台面对的用户分为普通用户和注册用户,普通用户只具有浏览网站的权限,浏览内容包括帖子、评论、注册用户的个人主页以及动态推送页面,不能使用内容发布、资源下载等功能;而注册用户则能使用本系统前台提供的所有功能,包括发布帖子、评论、下载资源、维护自己的个人主页和个人信息等。当然,本系统提供了注册、登录功能,并通过随机验证码的方式提高了认证能力。每个注册用户都拥有自己的个人主页,在个人主页中可以看到自己发布的帖子,能够对它们进行二次编辑,还能够设置、更换头像,修改密码等。
本系统的后台由管理员进行管理和维护,其中管理员分为两个等级,普通管理员拥有前台信息管理的权限,包括版块信息管理、用户信息管理、帖子管理等权限,而超级管理员则在此基础上拥有更多权限,包括系统设置、管理员设置等。管理员在后台能够动态地管理大部分前台信息,包括父、子版块的增删改,删除不符合规范要求的帖子,动态信息的增删改,编程资源的增删改等。十分便利,很大地提高了后台管理的效率。
编程论坛社区IBBS给编程者们提供了一个专业的交流平台,在这里,你可以分享自己的编程经验,交流学习编程技术,获取最新的技术动态,下载编程学习资源。给编程者们提供了一个便捷、内容丰富、高效率的学习平台。
2. 需求分析和应用程序功能
编程论坛社区IBBS数据库需要存储如下信息:
-
有关父版块的信息主要包括了父版块id,父版块的名称,以及父版块的简介;
-
而子版块的信息则包括子版块id、子版块名称、子版块简介、该子版块的版主,即某个注册用户的id,以及该子版块下的帖子数量,还有就是该子版块所属于的父版块,即某个父版块的id;
-
有关帖子的信息涉及帖子的id、帖子的标题、帖子的内容、帖子的发布时间、帖子所属子版块的id、帖子的浏览次数以及发布该帖子的用户id;
-
有关评论的信息,首先评论分为两种,一种是评论用户发布的帖子,另一种是引用已有的评论进行二次评论(即可以回复评论)。上述需求在数据库表中体现为一个字段,该字段为0表示该条记录是评论某个帖子的,若不为零,则该字段为所回复评论的id。其他信息还包括了该条评论的id、该条评论所属帖子的id、评论的内容、评论发布的时间,以及发布该条评论的用户id;
-
有关注册用户的信息包括用户id、用户名、账号密码、用户头像的存储路径、账号的注册时间以及账号最近一次登录的时间。其中,注册用户拥有修改自己的账户密码,以及更换头像的权限;
-
有关最新动态的信息包括动态的id、动态的标题、动态的简介、动态的相关链接,以及动态的添加时间;
-
有关资源的信息包括资源的id、资源的标题(例如图书资源的书名)、资源的简介、资源的存储路径、资源对应图片的存储路径,以及资源的添加时间;
-
另外,还需要存储管理员的信息,其中管理员分为两个等级,普通管理员拥有前台信息管理的权限,包括版块信息管理、用户信息管理、帖子管理等权限,而超级管理员则在此基础上拥有更多权限,包括系统设置、管理员设置等。上述等级的区分使用一个字段来完成,而其他信息还包括管理员的账户id、账户名、账户密码,以及账户的创建时间。
3. 系统常做的查询与更新
经常做的查询,或许对创建索引有影响的:
-
由父版块的id查找属于该父版块的子版块、帖子
-
由子版块的id查找属于该子版块的帖子
-
由帖子的id查找该帖子的详细内容以及该帖子下的评论内容
-
由用户的id查找用户发布的帖子
根据经常做的查询,需要创建有关视图的:
-
父版块列表
-
子版块列表
关于更新:
-
父版块和子版块信息录入后,更新较少,相对稳定,主要是记录的添加和删除,管理员具有添加、修改和删除父版块、子版块的权限
-
技术动态和资源这两个部分的信息同样更新很少,相对稳定,主要是记录的添加和删除,管理员同样具有添加、修改和删除的权限
-
帖子发布后,相应的用户具有二次编辑和删除的权限,而考虑到某个帖子的内容可能不符合论坛社区的规范,因此管理员拥有删除任何用户发布的帖子的权限,以维持论坛社区的健康
-
用户信息录入后,向注册用户开放更换头像以及修改密码的权限
4. 应用程序功能
前台的主要功能如下:
-
1、 对网站游客开放:
-
a. 查看父版块以及相应子版块的信息简介
-
b. 浏览注册用户发布的帖子以及帖子下的评论
-
c. 浏览注册用户的个人中心
-
d. 可以使用搜索功能,通过关键字搜索对应的帖子
-
e. 可以浏览技术动态模块中的信息
-
f. 可以浏览资源模块中的资源信息,但是不能下载
-
-
2、对注册用户开放:
-
a. 包括了网站游客能够使用的功能
-
b. 能够在相应的子版块下发布帖子
-
c. 能够在相应的帖子下面发布评论,回复评论
-
d. 可以下载资源模块中的资源
-
e. 可以管理自己的个人中心,包括修改密码、更换头像等
-
f. 可以二次编辑或删除自己发布的帖子
-
后台的主要功能如下(管理员对网站数据的管理基本全部包括查询,修改,增添,删除操作):
-
1、系统信息总览:
-
a. 当前登录管理员账号的基本信息
-
b. 系统所用服务器的配置信息
-
c. MySQL版本信息以及PHP配置信息
-
d. 网站当前的数据汇总,包括父版块、子版块数量,帖子总数以及注册用户数等
-
-
2、父版块管理:
-
a. 分页展示当前的父版块列表
-
b. 添加新的父版块
-
c. 编辑某个父版块的信息
-
d. 删除某个父版块
-
-
3、 帖子管理:
- a. 以管理员账号跳转到前台页面,浏览每个版块下的帖子,且拥有删除任何一篇帖子的权限
-
4、用户管理:
-
a. 分页展示当前的注册用户
-
b. 通过关键字来搜索某些用户
-
c. 访问用户的个人中心
-
d. 删除用户账号
-
-
5、动态管理:
-
a. 分页展示当前的动态列表
-
b. 添加新的动态
-
c. 编辑某个动态的信息
-
d. 删除某个动态
-
-
6、资源管理:
-
a. 分页展示当前的资源列表
-
b. 添加新的资源,包括文字简介、图片介绍以及资源文件等
-
c. 编辑某个资源的信息
-
d. 删除某个资源
-
二、数据库概念设计
1. 确定实体和属性
分析编程论坛系统的系统需求,将系统中设计的人、物进行抽象,得到了系统的实体如下:
-
1.父版块信息实体集。属性包括:父版块名称、父版块简介
-
2.子版块信息实体集。属性包括:所属父版块的id、子版块名称、子版块简介、子版块版主的用户id、子版块下帖子的数量
-
3.帖子信息实体集。属性包括:帖子所属子版块的id、帖子的标题、帖子的内容、帖子的发布时间、发布该帖子的用户id、帖子的浏览次数
-
4.帖子评论实体集。属性包括:评论所属帖子的id、用于区分该评论是普通评论还是引用评论的id、评论的内容、评论的发布时间、发布该评论的用户id
-
5.动态信息实体集。属性包括:动态的标题、动态的简介、动态的链接、动态的添加时间
-
6.资源信息实体集。属性包括:资源的标题、资源的简介、资源文件的存储路径、资源介绍图片的存储路径、资源的添加时间
-
7.用户信息实体集。属性包括:用户id、用户名、经过加密的用户密码、用户头像的存储路径、用户的注册时间、用户上次登录的时间
-
8.管理员信息实体集。属性包括:账户名、经过加密的账户密码、创建时间、管理员等级
2. E-R图
系统E-R图如图2-1所示:
三、数据库逻辑结构设计
1. 关系模式设计
根据概念结构设计得到的E-R图和转换规则,得到如下关系模式(主键加粗标出,外键予以说明):
父版块信息表(父版块id,版块名,版块简介)
子版块信息表(子版块id,所属父版块的id,版块名,版块简介,版主的用户id)
帖子信息表(帖子id,帖子所属子版块的id,帖子标题,帖子内容,帖子的发布时间,发布该帖子的用户id,帖子的浏览次数)
评论信息表(评论id,评论所属帖子的id,区分普通评论/引用评论的id,评论内容,评论发布的时间,发布该评论的用户id)
动态信息表(动态id,动态标题,动态简介,动态链接,动态的添加时间)
资源信息表(资源id,资源标题,资源简介,资源文件的存储路径,资源介绍图片的存储路径,资源的上传时间)
用户信息表(用户id,用户名,加密后的账户密码,用户头像的存储路径,用户注册时间,用户上次登录的时间)
管理员信息表(管理员id,账户名,加密后的账户密码,账户的创建时间,区分普通管理员/超级管理员的id)
2. 基本表设计
四、数据库物理设计和实施
1. 创建基本表
基本表的创建详见SQL文件ibbs.sql,这里不再赘述。
2. 其他数据库对象的设计
实际的生产环境中,以明文的方式在数据库中存放密码是十分危险的行为,一旦遇到脱库等其他情况,所有的用户信息都将毫无保留地呈现在攻击者面前。因此,我的做法是将用户设置的密码经过加密后再存入数据库中,同时,在用户登录、密码修改等涉及密码的场景中,都是将密码进行了二次加密再进行比较,以保障用户的信息安全。
五、应用程序设计
1. 开发及运行环境介绍
使用的技术栈为PHP + MySQL + Bootstrap + jQuery,使用到的开发工具有PhpStorm、WebStorm、XAMPP等,且该应用已经部署到服务器上并能够正常运行。
2. 主要功能设计
用户:用户主要有浏览父版块、子版块、用户发布的帖子和评论等信息、注册登录、发布帖子、发布评论、浏览技术动态、浏览资源页面、下载资源、搜索帖子、查看自己以及其他用户的个人中心、修改账户密码、更换头像等功能。
管理员主要有添加、修改以及删除父版块、子版块、技术动态、资源的功能,还能根据用户名搜索用户、管理用户、跳转到前台针对一些不符合规范的帖子进行删除等处理。
下图是用户的主要功能流程:
3. 主要界面
首页界面如图5-1所示。
登录界面如图5-2所示。
注册界面如图5-3所示。
个人中心界面如图5-4所示。
修改头像界面如图5-5所示。
修改密码界面如图5-6所示。
父版块界面如图5-7所示。
子版块界面如图5-8所示。
帖子详情界面如图5-9所示。
普通评论以及引用评论如图5-10所示。
发帖界面如图5-11所示。
普通评论界面如图5-12所示。
引用评论界面如图5-13所示。
搜索界面如图5-14所示。
技术动态界面如图5-15所示。
资源界面如图5-16所示。
管理员登录界面如图5-17所示。
后台管理主界面如图5-18所示。
管理人员列表界面如图5-19所示。
管理员添加界面如图5-20所示。
父版块列表界面如图5-21所示。
子版块列表界面如图5-22所示。
注册用户列表界面如图5-23所示。
用户搜索界面如图5-24所示。
动态列表界面如图5-25所示。
动态添加界面如图5-26所示。
资源列表界面如图5-27所示。
资源添加界面如图5-28所示。
六、源码下载
完整项目的源码以及SQL文件已经上传,详见下载地址
公众号
- 关注公众号,即时接收关于Java的技术分享!
转载:https://blog.csdn.net/J__Max/article/details/115862661