## 前后端分离的个人博客管理系统

### 第一章 需求分析


- 近年来随着信息技术的进步,B1og 也快速扩张,它已经满足不了用户的软件文档写作课程设计需求。目前用户在网络上发表文章、张贴内容的目的有很大的差异,但是, 由于沟通方式比电子邮件、讨论群组以及BBS和论坛更简单和容易,博客系统已经成为广大各界用户进行沟通的主流工具,本系统是针对博客用户的需求设计的,可以完成博客用户注册、登入、发表、浏览、修改博文、上传、浏览照片、留言等主要功能。

1. 课程设计题目
Blog就是以网络作为载体,简易迅速便捷地发布自己的心得,及时有效轻松地与他人进行交流,再集丰富多彩的个性化展示于一体的综合性平台。 不同的博客可能使用不同的编码,所以相互之间也不一定兼容。这使得不同的博客各具特色。 Blog是继Email、BBS、ICQ之后出现的第四种网络交流方式,是网络时代的个人“读者文摘”,是以超级链接为武器的网络日记,是代表着新的生活方式和新的工作方式,更代表着新的学习方式。具体说来,博客(Blogger)这个概念解释为使用特定的软件,在网络上出版、发表和张贴个人文章的人。

2. 课程设计任务及要求
在当下这个发展快速的信息化时代,越来越多的博客网站开始建立或者已经使用博客管理系统,利用计算机和网络对信息进行管理已是大势所趋。博客系统必将代替之前繁琐的人工操作模式,实现由复杂、冗余性手工操作向人机简便操作的转化,运用计算机完成数据增加、修改、查询、删除以及统计等工作,提高了管理人员工作效率,避免繁重的业务量造成的人为错误,还可运用信息共享加快数据传递。通过对博客管理系统的操作,既节省大量的人力与物力,又不用保存与整理数据文件,将一切信息转化为数字化,提高了工作效率。

3. 系统开发技术和环境
软件体系:采用B/S模式。B/S结构(Browser/Server结构)即浏览器服务器结构。采用B/S结构是因为该结构在功能拓展和维护方面简单、方便,只需要增加或更改网页,并且B/S结构是以浏览为主,录入简单。而个人博客管理系统网站就是通过web浏览器访问,选用B/S模式最为合适。

  1. MyEclipse与Tomcat简介
在JSP的web程序设计中,常使用MyEclipse做编辑工具,在J2EE和数据库开发领域里,十分通用。通过对应用程序服务器进行整合,可以大大的增强运算速度。
Tomcat是一种小型web程序服务器,由于它是免费开源的,并且支持访问量较少,所以常常被用来私人使用,J2EE程序设计中成为最好的选择。

  2. JSP简介
JSP是一种开发动态系统的编程语言,它能嵌入在html中使用,也能单独使用,同时具有多种有优点,可以说,JSP已经成为Web脚本技术的先驱。它融合了现代编程语言(如C,JSP)的一些最佳特性。Linux、JSP、Tomcat和MySQL的组合已经成为Web服务器的一种配置标准。JSP可以用来:收集表单数据、生成动态网页、字符串处理、动态输出图片、处理服务器端文件系统、编写数据库支持的网页、会话跟踪控制、处理XML文件、支持利用大量的网络协议、服务器端的其他相关操作。
  
  3. 性能需求
该系统在性能功能上达到如下需求:
操作简单、界面友好:完全控件式的页面布局,使得博客的管理更简便,许多选项包括添加博客、删除博客等通过选择数字项就可以完成;另外,查询所有博客信息功能也让管理员随时清楚每一个博客的具体情况。对常见的博客管理的各个方面:博客添加、删除、修改、查询等方面都大体实现,实现了管理员对博客信息的管理要求;
即时可见:对博客的处理(包括添加、删除、修改)将立即在后台数据库中进行更新,达到“即时操作、即时生效”的功能;
系统运行应该快速、稳定、高效和可靠;
在结构上应具有很好的可扩展性,便于将来的功能扩展和维护。
管理员根据对博客管理系统的需求分析的上述要求及博客系统模型结构,博客管理的功能模块分为四个大的部分,博客的添加,博客的删除,博客信息的修改,博客的查询。

### 第二章 系统设计


1. 系统设计方法三原则
 - 人类在复杂的工程技术系统如能源、交通等建设方面,积累了丰富的经验,为研究复杂系统如管理系统提供了科学的指导性方法论,其主要原则如下:
 1. 整体性原则。系统是相互联系,相互作用的诸要素组成的综合体。我们必须从整体和各组成部分的相互关系来考察事物,从整体目标和功能出发,正确处理系统各组成部分之间的相互关系和相互作用。
 2. 分解—协调原则。就是把复杂问题化成若干相对简单的子问题以方便求解。若子系统的问题比较复杂,还可以再分。但在处理各类子问题时,必须根据系统的整体功能和目标,协调各子系统的行为、功能与目标,以保证整体功能目标的实现。
 3. 目标优化原则。所谓目标优化原则对简单的系统来说,是求最优解,对复杂系统来说,求的是满意解。一定要注意,目标优化原则并不简单是求最优解的问题。
 - 这里最需要指出的是:以上三原则是系统方法中处理复杂系统问题的三个主要原则,并非是全部原则。在处理实际问题时,还需要在这些原则的指导下,根据问题的特点,确定求解的具体方法和策略。

2. 系统的功能模块
个人博客管理系统分分为前台和后台。前台主要的功能分为博客的浏览,查询和评论。后台主要的功能分为三个大的部分,博客管理,标签管理,评论管理。博客管理分为添加博客,查询所有博客信息,修改博客信息,删除博客。添加博客是指通过添加博客的名称、作者等信息来加入该博客;查询所有博客信息是对所有博客的内容进行查询;修改博客信息是通过博客的ID找到该博客并修改其信息,删除博客是通过其ID找到该博客并删除。标签管理分为添加标签,查询所有标签信息,修改标签信息,删除标签。添加标签是指通过添加标签的名称、内容等信息来加入该标签;查询所有标签信息是对所有标签的内容进行查询;修改标签信息是通过标签的ID找到该标签并修改其信息,删除标签是通过其名称找到该标签并删除。评论管理中可以通过其名称找到该评论并删除。系统的功能模块图如图2-1所示。
![图2-1个人博客管理系统功能模块图](https://img-blog.csdnimg.cn/img_convert/e83e98c9cb22c5817235a5832d94bc87.png)


3. 系统实体类设计
  1. 博客实体类 Blog.java
此类里面存储博客类的成员变量、构造方法,用来创建blog对象;
  2. 用户实体类 User.java
此类里面存储管理员类的成员变量、构造方法,用来创建user对象。
  3. 标签实体类 Category.java
此类里面存储标签类的成员变量、构造方法,用来创建category对象。
  4. 评论实体类 Comment.java
此类里面评论类的成员变量、构造方法,用来创建comment对象。

4. 系统接口设计
  1. 数据库中数据操作
    1. “博客数据库操作”接口:BlogDao.java,该接口具有的方法如下:
       - add()方法用于向数据库中添加博客;
       - list()方法用于查询数据库中的博客;
       - delete()方法用于删除数据库中的博客;
       - update()方法用于修改数据库中博客的信息;
       - addReadCount()方法用于修改指定博客的阅读量。
       - getBlogById()方法用于通过博客ID获取博客。
       - getBlogFenYe()方法用于获取博客列表。
    2. “用户数据库操作”接口:UserDao.java,该接口具有的方法如下:
       - login()方法进行登录验证;
       - register()方法用于向数据库中添加用户;
       - update()方法用于更新用户信息;
       - getUserById()方法用于通过用户ID获取用户信息;
       - getUserFenYe()方法用于获取用户列表;
       - updPassword()方法用于修改密码。
	3.  “标签数据库操作”接口:CategoryDao.java
       - add()方法用于向数据库中添加标签;
       - delete()方法用于删除数据库中的标签;
       - update()方法用于修改数据库中标签的信息;
       - getCategoryrFenYe ()方法用于查询数据库中的标签;
    4. “博客评论数据库操作”接口:CommentDao.java
       - add()方法用于向数据库中添加博客评论;
       - delete()方法用于删除数据库中的博客评论;
       - update()方法用于修改数据库中博客评论的信息;
       - getCommentFenYe ()方法用于查询数据库中的博客评论。
  2. 程序中的数据操作
    1. “博客的功能操作”接口:DataBase.java,该接口具有的方法如下:
       - getConn()方法获取数据库连接;
       - closeAll()方法关闭数据库连接;
       - executeQuery()方法执行查询操作;
       - executeUpdate()方法执行增删改操作。
    2.  “加密的功能操作”接口:Sha256.java
       - getSHA256()方法实现加密功能。

5. 系统接口实现类设计
  1. 用户Dao层接口:UserDao.java,管理员Dao层接口类的实现类是UserDaoImpl.java。
  2. 博客Dao.java层接口:BlogDao.java,博客Dao层接口类的实现类是BlogDaoImpl.java。
  3. 评论Dao.java层接口:CommentDao.java,评论Dao层接口类的实现类是CommentDaoImpl.java。
  4. 标签Dao.java层接口:CategoryDao.java,标签Dao层接口类的实现类是CategoryDaoImal.java。

6. 系统数据库设计
数据库是由多个相互关联的数据表组成,本数据库利用MySQL实现并完成数据库的设计,在本系统中包括如下:确定数据库内所有数据表的名称及表内所含字段的名称、评论、长度、主键及是否为空;确定数据库文件是否需要建立索引、是否具有外键,数据表等等。

  1. 数据库表设计
    1. 用户表(USER)用于存储管理员的相关内容

|序号|	字段名称|	字段说明|	数据类型|	位数|	属性|
|---|---|---|---|---|---|
|1|	userid|	用户编号|	int|	11| 	必填,非空,主键|
|2|	username|	用户名|	varchar|	30|	必填,非空|
|3|	password|	密码	|varchar|	100|	必填,非空|
|4|	email|	邮箱	| Varchar|	50|	必填,非空|
|5|	admin|	管理员|	int|	11|	必填,非空|

    2. 博客表(BLOG)用于存储博客的相关信息
|序号|	字段名称|	字段说明|	数据类型|	位数|	属性|
|---|---|---|---|---|---|
|1|	blogid|	博客编号|	int|	11|	必填,非空,主键|
|2|	blogtitle|	博客标题	|varchar|	50|	必填,非空,唯一|
|3|	blogimgurl|	博客封面	|varchar|	100|	必填,非空|
|4|	blogdatetime|	日期	|datetime|		|必填,非空|
|5|	blogsummary|	摘要	|varchar|	500|	必填,非空|
|6|	blogcontent|	博客内容|	longtext|	|	必填,非空|
|7|	blogreadcount|	阅读量|	int|	11|	必填,非空|
|8|	commentnum|	评论量|	int|	11|	必填,非空|
|9|	categoryid|	分类ID|	int|	11|	必填,非空,外键|
    3. 博客评论表(COMMENT)用于存储博客评论
|序号|	字段名称|	字段说明|	数据类型|	位数|	属性|
|---|---|---|---|---|---|
|1|	commentid|	评论编号|	int|	11|	必填,非空,主键|
|2|	blogid|	博客ID|	int|	11	|必填,非空,外键
|3|	commentcontent	|评论内容|	varchar	|300	|必填,非空
|4|	commentname|	评论者名称|	varchar|	11	|必填,非空
|5|	commenttime|	评论时间	|datetime|		|必填,非空
|6|	commentLike|	点赞量	|int|	11	|必填,非空
    4. 标签表(CATEGORY)用于存储标签  如表2-4示:
表2-4标签表
|序号|	字段名称|	字段说明|	数据类型|	位数|	属性|
|---|---|---|---|---|---|
|1	|categoryid|	标签编号|	int|	11	|必填,非空,主键|
|2	|categoryname|	标签名称	|varchar	|20	|必填,非空|
|3	|categorycontent|	标签描述|	varchar|	20|	必填,非空|
|4	|blognum|博客数量	|int	|11	|必填,非空|

   2. 数据库触发器设计
    1. 当添加博客的时候触发标签中博客数量增加。
    2. 当删除博客的时候触发标签中博客数量减少。
	3. 当添加评论的时候触发博客中评论数量增加。
    4. 当删除评论的时候触发博客中评论数量减少。

### 第三章 详细设计


1. 个人博客管理系统前台的界面
  1. 访问者浏览的主界面。页面如图3-1所示:
    ![](https://img-blog.csdnimg.cn/img_convert/6b727013c12b0ac5e5a7e6499b776ecc.png)
    图3-1 图管理系统的主界面
  2. 访问者可以在博客页面查看博客内容。页面如图 3-2所示:
    ![](https://img-blog.csdnimg.cn/img_convert/4903708ac601a140bf76591478bb8de4.png)
    图3-2 博客界面
  3. 访问者可以在博客页面文章下面发表评论,交流观点。如图3-3所示:
    ![](https://img-blog.csdnimg.cn/img_convert/4860f1f85a007edd6fd8a8316ddd93a7.png)
    图3-3 评论界面
  4. 访问者可以通过搜索,博客标签,博客日期来查找博客。如图3-4,3-5和3-6所示:
    ![](https://img-blog.csdnimg.cn/img_convert/a959f48f50bf1cd9c246a2a614def7d0.png)
    图3-4 搜索内容界面
    ![](https://img-blog.csdnimg.cn/img_convert/f2a5425b5573182062efa513ce7cdbe3.png)
    图3-5 标签查询界面
    ![](https://img-blog.csdnimg.cn/img_convert/f9ed5fc0cc77311cb7f039184a27d3c3.png)
    图3-6 日期查询界面

2. 用户登录注册界面
  1. 用户可以再注册登录页面注册账号并登录。页面如图 3-7所示:
    ![](https://img-blog.csdnimg.cn/img_convert/8f9245cd5ffe35bbcb20db64f17389c4.png)
    图3-7 用户登录注册界面
3. 个人博客管理系统后台的界面
	用户分为普通用户和管理员,只有管理员可以进入后台。
  1. 管理员可以在添加页面进行添加博客、标签的操作的页面。添加博客界面如图3-8所示:
    ![](https://img-blog.csdnimg.cn/img_convert/86411b0f33abad83a885ba427669f02b.png)
    图3-8 添加博客界面
  2. 管理员可以在列表页进行查询、删除博客、标签和用户的操作。博客管理界面如图3-9所示:
    ![](https://img-blog.csdnimg.cn/img_convert/ac3419986e316024aaa1365cc4505e28.png)
    图3-9 博客管理界面
  3. 管理员可以在编辑页进行博客内容、用户信息和标签内容的修改操作。用户更新界面如图3-10所示:
    ![](https://img-blog.csdnimg.cn/img_convert/71cc3e420cbf9c86e5ea4e13c6955482.png)
    图3-10 用户更新界面

### 第四章 系统测试
 
- 为了更好的完成每个模块的功能测试,运用到了单元测试等一系列的方法。本系统的测试主要采用黑盒测试中的功能测试,测试用例设计采用等价类划分进行设计。

1. 功能测试结果
  1. 用户登录,用户登录功能测试如表4-1、表4-2、表4-3所示:
    1. 表4-1 登录描述
|用例编号|	101|
|---|---|
|功能名称|	用户登录|
|功能描述|	用于判断、用户登录信息}|
|测试方法|	黑盒测试|

    2. 表4-2登录等价类划分
|输入条件	|有效等价类	|编号|	无效等价类|	编号|
|---|---|---|---|---|
|用户名|	用户名正确	|1	|用户名有误|	3|
|密码|	密码输入正确	|2	|密码输入有误|	4|

    3. 表4-3测试用例设计
|用例编号|	测试数据|	预期结果	|覆盖范围|	是否通过|
|---|---|---|---|---|
|1.1|	 admin ,123456	|登录成功	|1、2	|是
|1.2	|admin ,12345	|系统提示输入错误|	1、4	|是
|1.3	|admi ,123456	|系统提示输入错误	|2、3	|是
|1.4	|admi ,12345	|系统提示输入错误	|3、4	|是

  2. 管理员功能界面,管理员功能界面测试如表4-4所示:
    1. 表4-4管理员功能界面测试

|用例编号	 | 102	| 功能名称 |	查看各个功能 | 
|---|---|---|---| 
 |功能描述	| 是否能查看到各个功能 |
|测试步骤	|登录主页面|	输入用户名、密码进行登录|
|	浏览	|是否能查看到各个功能| 
|测试结果	|通过	|发现问题|	无|

  3. 添加博客,添加博客功能测试如表4-5所示:
    1. 表4-5添加博客功能测试
    
|用例编号|	103	|功能名称	|添加博客|
|---|---|---|---|
|功能描述|	管理员在添加界面添加博客|
|测试步骤|	登录主页面|	输入用户名、密码进行登录|
|	添加博客|	能否在数据库里查询到该博客|
|测试结果|	通过|	发现问题	|无|

  4. 查询博客信息,查询博客信息界面测试如表4-6所示:
    1. 表4-6查询所有博客功能测试

|用例编号|	104	|功能名称|	查询所有博客信息|
|---|---|---|---|
|功能描述|	管理员查询数据库中的所有博客信息|
|测试步骤	|登录主页面|	输入用户名、密码进行登录|
|	输出	|界面显示所有数据库中存储博客的信息|
|测试结果	|通过|	发现问题|	无|


   5. 修改博客,修改博客功能界面测试如表4-7、表4-8、表4-9所示:
     1. 表4-7修改博客信息功能测试

|用例编号|	105|	功能名称|	管理员修改博客|
|---|---|---|---|
|功能描述|	管理员修改数据库中的博客|	测试方法|	黑盒测试|
      2. 表4-8等价类划分

|输入条件	有效等价类|	编号|	无效等价类|	编号|
|---|---|---|---|
|要修改的博客标题|	输入要修改的博客编号	|1|	编号输入错误|	3|
|修改后的博客内容|	输入修改后的博客内容|	2|		
|修改后的博客标签|	输入修改后的博客标签|	3|		
     3. 表4-9测试用例设计
|用例编号	|测试数据	|预期结果|	覆盖范围	|是否通过|
|---|---|---|---|---|
|1.1	|完全图树的计数|	查找到该博客|	1、3|	是
|1.2	|测试博客内容|	修改成功|	2	|是

   6. 删除博客,删除博客功能界面测试如表4-10、表4-11、表4-12所示:
     1. 表4-10删除博客功能测试

|用例编号|	106|	功能名称|	管理员删除博客|
|---|---|---|---|
|功能描述|	管理员删除表中的博客|
|测试步骤|	输入	|要删除的博客名称|
|	输出|	删除成功|
|测试结果	|通过|	发现问题	|无|
     2. 表4-11等价类划分
|输入条件	|有效等价类	|编号	无效等价类|	编号|
|---|---|---|---|
|要删除的博客名称	|输入博客题名称|	1	|主题名称为空	3|
     3. 表4-12测试用例设计
|用例编号	|输入	预期输出|	覆盖范围	|是否通过|
|---|---|---|---|
|博客标题	|id	|1	|是|	
|1.1	|ajax post跨域请求解决|	26|	博客删除成功|	1|	√|



### 第五章 课程设计总结与体会


- 随着互联网技术的大力发展,人们的日常生活已经离不开网络。未来时代我们的生活和工作一定会更加借助于信息技术的发展,越来越方便、快捷、安全、高效,在线网络的发展过程以及当下的应用情况和发展趋势,我们可以充分地相信网络技术将极大的改变我们的生活和工作方式,使我们的生活变得更加美好、舒适。

1. 课程设计总结
本文按照软件工程开发设计方法,实现了一个博客管理系统,本系统采用JDBC技术[14],数据库MySQL,开发工具Eclipse,实现了博客管理员对博客的添加、查询、修改、删除等具体功能的操作。所有功能全部都了通过测试。博客管理系统的主要目的是促进博客管理的信息化发展。不同于以往的人工管理、纸质记录等方式,博客管理系统能够更加快捷、高效地对博客进行增删改查的操作,能及时有效地掌握博客信息,具有极强的实用价值。
2. 心得体会
在这次课程设计中,我用所学网页设计、Java与数据库的相关知识实现博客管理员增加博客、删除博客、修改博客以及查询博客等功能,其中也运用到了到程序代码分层的思想。经过设计,加强了自己之前所学的HTML知识,也让自己懂得了程序设计思想的关键所在。同时,经过本学期的JSP课程设计,我认识到了自己学习和上机中的缺陷,还要主动了解和掌握更多的知识。本次课程设计,不仅提高了我的逻辑思考、实践操作的能力, 而且也增强了我的团队合作意识。更重要的是,我还学会了很多程序学习的好方法,这是一笔宝贵的财富。此外也使我了解到做好一个完整的系统,首先要先对系统的整体框架进行建立,然后分步进行各个系统的实现。面对日益激烈的社会工作岗位竞争,我们要不断地学习、上机,反复扩充自己的专业课知识。最重要的是要有一个清晰的架构,最后进行一系列的分析,最后在进行整个系统的实现。

### 参考文献


- [1] 陈庆荣.基于B/S模式应用的研究与设计[J].福建电脑,2018,34(02):125-126+67.
- [2] 崔兰超,韩晓丹.基于B/S结构的学校综合管理系统的开发[J].电脑编程技巧与维护,2018(02):87-89.
- [3] 王高亮.基于Eclipse的实验室设备管理系统设计[J].现代计算机(专业版),2012(10):57-60.
- [4] 秦园园关于Tomcat的一些问题探讨[J].山西科技,2011,26(04):40-41.
- [5] 吴小青.JSP+TOMCAT+MYSQL开源软件整合配置初探——以揭阳职业技术学院博客馆网站服务器配置为例[J].齐齐哈尔大学学报(自然科学版),2012,28(04):66-69.
- [6] 魏强.JSP技术简介及发展前景[J].装备制造技术,2008(07):118-119+124.
- [7] 常大俊.基于MySQL数据库结构设计[J].信息安全与技术,2015,6(09):55-57.
- [8] 张彤,赵丽.移动医疗App功能模块的比较分析与发展建议[J].廊坊师范学院学报(自然科学版),2016,16(02):28-31.
- [9] 王绵金,郑海涛,范耀明.黑盒测试用例设计方法探究[J].信息与电脑(理论版),2016(06):127-128.
- [10] 黄玉春.浅谈下一代Web开发标准的核心技术—HTML5[J].计算机时代,2015(04):3-5.

### 致谢


在这篇课程设计的完成中,我最尊敬的指导教师给了我很大的帮助,他不断地支持和鼓励一直伴随着我本阶段的学习工作和生活。课程设计选题、构思、查阅文献、修改、定稿,每一步都凝聚着导师的心血。他以他严谨的治学态度广博的学识宽广的视野敏锐的观察力给我在学习研究上的指导,使我的学习研究工作受益匪浅。同时老师还经常教导我们怎样为人处世,他勤奋的工作作风,遇事勤于思考的学习和工作态度,积极进取的勇气和魄力给我的人生带来了宝贵的精神财富。在此,我深切和怀着十分感激的心情,向老师表达我最真挚的感谢。在同时我也要感谢我的同事和朋友,在我课程设计过程中对我的鼓励和支持!在漫长的学习生涯中,感谢我的父母在精神上的理解与支持和在生活上的照顾。我的课程设计凝聚着他们的长期支持,我对他们在我成长道路上所付出的艰辛和汗水致以真诚的感谢!
值此课程设计完成之际,再次向所有关心、支持、帮助我的老师、同学和朋友们表示我衷心的感谢。