博客系统的设计与实现.docx
- 文档编号:24332896
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:28
- 大小:1,022.82KB
博客系统的设计与实现.docx
《博客系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《博客系统的设计与实现.docx(28页珍藏版)》请在冰豆网上搜索。
博客系统的设计与实现
大连民族学院
计算机科学与工程学院
博客系统的设计与实现
学院(系):
计算机科学与工程
专业:
计算机科学与技术
学生姓名:
XXX
学号:
2007081321
完成日期:
2011年11月24日
1系统分析与总体设计
博客信息系统包括:
前台信息显示系统、后台信息管理系统。
前者是面向公众的一
个窗口,通过前台信息显示系统方便访问者浏览日志、评论和留言;发表评论和留言。
后者是后台信息管理系统,方便博客管理员发表日志;回复评论和留言;管理日志、评论、留言及个人信息[12]。
1.1系统需求分析
1.1.1用户需求分析
用例图用来描述系统与参与者之间的相互作用,与用例图相关的几个概念:
(1)角色:
代表了某一事件发生的参与者,用一个小人表示。
(2)用例:
代表系统可以实现的功能,通常一个用例代表一组功能,实质上规定了系统实现功能的范围。
(3)用例图:
当角色和用例发生某种关系时,就可以用一个图将它们关联起来,这就是用例图。
博客信息管理系统用例图如图1.1所示。
图1.1博客信息管理系统用例图
博客信息管理系统允许用户有三种身份:
博客访问者、博客管理员及系统管理员。
博客系统参与者中每种身份操作起来都很方便、快捷。
博客访问者无需登陆就可以浏览信息、发表评论或留言;博客管理员注册后再登陆,就可以发布日志、管理个人主页;而博客管理员的基本信息都由系统管理员对其统一管理。
1.2数据分析
本系统的用户主要是博客访问者和博客管理员,下面以博客前台展示系统中的用户查询日志为例进行说明。
该过程的数据流程图如图1.2所示。
图1.2用户查询日志的数据流程图
用户查询日志的数据流程:
首先,用户输入需查找的关键字,然后提交表单数据,服务器接收到关键字后,根据关键字对日志标题进行模糊查询,处理后将结果以日志标题链接的形式显示给该用户,用户点击相应的链接就可以浏览日志内容。
1.3系统流程
根据博客信息管理系统的特点,将其分为两大模块:
前台用户浏览模块和后台用户管理模块。
前台用户浏览模块主要用于用户浏览日志信息;后台用户管理模块主要用于博客管理员对个人博客网站的管理,如日志管理、留言管理及评论管理等。
博客系统平台的前台用户浏览模块流程图如图1.3所示。
图1.3前台用户浏览模块流程图
前台用户浏览模块主要用于用户浏览日志信息,用户浏览日志有三种浏览方式可以选择:
一是直接点击日志标题链接进入日志显示页面浏览日志;二是点击博客主题链接进入该个人博客的首页,然后在该首页中选择所需的日志标题链接进入日志显示页面浏览日志;三是通过首页提供的搜索功能,搜索所需要的日志,然后在结果列表中选择所需的日志标题链接进入日志显示页面浏览日志。
浏览日志的同时用户可以查看别人对该日志的评论,然后用户也可以对该日志发表自已的评论。
博客系统平台的后台用户管理模块流程图如图1.4所示。
图1.4后台用户管理模块流程图
用户进入后台管理平台,首先必需进行权限验证,防止未授权的用户非法登录。
若未通过验证,则显示出错提示,并跳转到登录界面。
若通过验证,则进入个人博客后台管理平台。
用户可以浏览已发表的日志,并对其进行相应的操作如修改日志和删除日志;可以查看日志的评论信息并对其进行回复或者删除操作;可以发表新的日志;可以新建日志分类;可以浏览个人博客的留言信息并对其进行相应的操作如回复留言和删除留言;还可以对个人信息进行修改。
1.4功能模块划分
前台模块功能结构如图1.5所示。
图1.5博客信息系统前台功能结构图
后台模块功能结构如图1.6所示。
图1.6博客信息系统后台功能结构图
1.5功能模块介绍
博客信息管理系统分为面向网络用户的前台及面向个人博客维护管理的后台,依据博客网站中所要实现的基本功能的设定,将所有功能分解为如下四个主要的功能模块来加以实现。
用户以合法的用户名及密码登录,系统即可按该登录用户的权限分配操作模块。
1.5.1博客注册登录管理模块
博客注册登录管理模块用于建立博客网站固定的客户群体,通过记录对应的博客档案,实现对博客信息的后台维护及管理,同时也便于通过博客档案库将网站最新动态及相关企业的信息方便地传达给每一位潜在的客户。
该功能模块实现了以下几个子功能。
(1)新博客在线注册。
(2)博客登录管理。
(3)跳转到博客主页。
只有进行登录并通过身份验证的用户,才可以在个人博客页面发表日志,并借助个人设置实现对个人博客相关信息的管理维护。
对于没有经过身份验证的网络用户不允许在博客页面中发表日志,更不允许对博客页面信息进行管理维护。
该模块实现新博客的注册及登录验证功能。
其中,注册新博客时会对用户输入的注册信息进行有效性验证,包括基本数据格式的有效性以及逻辑有效性,例如,用户名被占用时将及时给出提示。
注册成功的博客登录时,会随时根据博客输入的登录信息进行提示,如用户名错误或者密码错误。
1.5.2博客及文章检索查询模块
博客及文章检索查询模块为网络用户提供便捷的搜索,以及日志阅读浏览等功能,同时对日志的评论信息、博客推荐也能够及时反馈给网络用户。
该功能模块实现了以下几个子功能。
(1)热门博客页面推荐。
(2)最新博客日志推荐。
(3)日志信息关键字搜索。
该模块能够在网页中随时提供在线的最新日志信息。
该信息需要定期更新,网络用户可以随时获得最新日志以及最热门的博客推荐。
在客户选择了某个博客或者某个感兴趣的日志后,可以方便地跳转到对应博客页面进行日志的阅读,并和博客进行交流互动。
为了使网络用户尽快定位到所需的博客资料及日志信息,本模块提供了搜索功能,用户可以对所关注的日志信息按照标题进行关键字搜索,以避免用户浏览多个页面来寻找所需的日志信息。
3.5.3博客页面显示模块
当网络用户进入某个人博客主页后,在该页面中将提供博客日志列表的显示,同时为了方便用户浏览,在该模块中提供根据分类名进行日志列表的显示,也提供日志评论的浏览,此外还允许用户在博客页面中发表评论及留言。
该功能模块实现了如下几个子功能。
(1)用户可以分页查看对应的日志内容及评论信息。
(2)用户可以针对日志内容发表评论。
(3)用户可以针对博客进行留言。
(4)用户可以分类查看日志内容。
在该模块中还提供了博客页面统计信息,日志、评论及留言信息分页显示等方便用户的显示效果。
1.5.4博客个人维护管理模块
博客个人维护管理模块用于实现用户对博客个人主页及相关信息的动态管理。
该功能模块实现了如下几个子功能:
(1)日志及日志分类管理。
(2)评论及留言管理。
(3)个人基本信息维护管理。
借助该模块,用户可以随时对个人博客主页中的内容进行增加或修改,包括日志分类信息的更新、评论及留言管理等功能,也允许用户对博客的个人信息进行维护及其管理。
2系统详细设计
2.1数据库分析
数据库是当前应用软件系统的重要组成部分,如何使基于数据库的应用系统安全、可靠、高效的运行一直是软件开发技术研究的难题。
所以本系统的数据库设计基于以下几点来考虑:
(1)数据库规范化与非规范化的考虑。
(2)数据查询优化与索引的建立。
(3)存储过程与视图。
2.1.1数据库设计E-R图
为了把用户的数据要求清晰明确地表达出来,通常要建立一个概念性的数据模型。
概念性数据模型是一种面向问题的数据模型,是按照用户的观点来对数据和信息建模。
描述了从用户角度看到的数据,反映了用户的现实环境。
最常用的表示概念性数据模型的方法,是实体—联系方法(Entity—RelationshipApproach)。
这种方法用ER图描述现实世界中的实体,而不涉及这些实体在系统中的实现方法。
用这种方法表示的概念性数据模型又称为ER模型。
ER模型中包含“实体”,“联系”和“属性”。
博客信息管理系统涉及的实体包括:
(1)用户:
用户ID、用户名称、用户密码、博客主题、说明、E-mail、注册日期、发表日志数。
(2)类别:
类别编号、类别名、类别描述、用户ID。
(3)日志:
日志编号、日志标题、日志内容、类别编号、发表日期、最后修改日期、用户ID、浏览次数、评论数。
(4)评论:
评论编号、评论标题、评论内容、发表日期、最后回复日期、评论人、日志编号。
(5)留言:
留言编号、留言标题、留言内容、发表日期、最后回复日期、留言人、用户ID。
综合本系统各子模块要实现的功能,通过前面对博客信息系统数据的分析可以得到:
用户表、类别表、日志表、日志评论表、留言表的数据库概念模型(E-R图)。
用户E-R图如图2.1所示。
图2.1用户E-R图
日志类别E-R图如图2.2所示。
图2.2日志类别E-R图
日志E-R图如图2.3所示。
图2.3日志E-R图
日志评论E-R图如图2.4所示。
图2.4日志评论E-R图
留言E-R图如图2.5所示。
图2.5留言E-R图
2.2系统数据表设计
(1)用户表,此表主要用于保存用户的基本信息。
其结构如表2.1所示。
表2.1用户表
列名
含义
类型
长度
缺省值
允许空
BlogID
用户编号
Int
4
无
否
UserName
用户名
Varchar
20
无
否
Password
用户密码
Varchar
20
无
否
NickName
博客主题
Varchar
50
无
否
Description
博客描述
Varchar
100
无
是
电子邮件
50
无
否
RegisterTime
注册日期
Datetime
8
无
否
ArticleNum
发表的日志数
Int
4
0
否
(2)日志表,此表主要用于保存日志的基本信息。
其结构如表2.2所示。
表2.2日志表
列名
含义
类型
长度
缺省值
允许空
ArticleID
日志编号
Int
4
无
否
Title
日志标题
Varchar
50
无
否
Content
日志内容
text
8
无
否
CategoryID
类别ID
int
4
无
否
PublishTime
日志发表时间
Datetime
8
无
否
LastModifyTime
日志最后修改时间
Datetime
8
无
否
BlogID
用户ID
Int
4
无
否
ReadTimes
日志浏览次数
Int
4
0
否
FeedBackNum
日志评论数
Int
4
0
否
(3)日志评论表,此表主要用于保存日志评论的基本信息。
其结构如表2.3所示。
表2.3日志评论表
列名
含义
类型
长度
缺省值
允许空
FeedBackID
评论编号
Int
4
无
否
Title
评论标题
Varchar
20
无
否
Content
评论内容
Text
8
无
否
PublishTime
发表时间
Datetime
8
无
否
UserName
用户名
Varchar
20
无
否
ArticleID
日志ID
Int
4
无
否
(4)留言表,此表主要用于保存留言的基本信息。
其结构如表2.4所示。
表2.4留言表
列名
含义
类型
长度
缺省值
允许空
MessageID
留言编号
Int
4
无
否
Title
留言标题
Varchar
20
无
否
Content
留言内容
text
8
无
否
PublishTime
发表时间
Datetime
8
无
否
LastModifyTime
最后回复时间
Datetime
8
无
否
UserName
用户名
Varchar
20
无
否
BlogID
用户ID
Int
4
无
否
(5)类别表,此表用于保存日志类别的基本信息。
其结构如表2.5所示。
表2.5类别表
列名
含义
类型
长度
缺省值
允许空
CategoryID
类别编号
Int
4
无
否
Name
类别名
Varchar
20
无
否
Description
类别描述
Varchar
100
无
是
BlogID
用户编号
Int
4
无
否
数据表在设计完成后,指定好各数据表主键、外键,通过SQLServer2000企业管理器中提供的新建数据库关系统图即可自动生成表与表之间的关系图。
各个关联表之间通过设置好的外键连接在一起,本系统具体的数据表之间关系图如图4.6所示:
图2.6数据表之间关系图
2.3数据连接
目前流行的数据库连接技术主要有:
JDBC-ODBC桥、JDBC和数据连接池技术。
该系统采用数据连接池技术,使用连接池的优点主要体现在两个方面:
对数据库的连接统一进行配置、管理、监控,以及对数据库连接池的参数进行优化调整,同时对应用程序中没有关闭或其他原因造成没有关闭的数据库连接由连接池统一进行管理。
便于程序的移植和后端数据库的切换,因为在应用中通过统一的JNDI获得数据库的连接,而具体连接的是哪一台机器上的数据库与程序无关。
数据库连接池技术的思想非常简单,将数据库连接作为对象存储在一个Vector对象中,一旦数据库连接建立后,不同的数据库访问请求就可以共享这些连接。
这样,通过复用这些已经建立的数据库连接,可以克服上述缺点,极大地节省系统资源和时间。
数据库连接池的主要操作如下:
(1)建立数据库连接池对象(服务器启动)。
(2)按照事先指定的参数创建初始数量的数据库连接(即:
空闲连接数)。
(3)对于一个数据库访问请求,直接从连接池中得到一个连接。
如果数据库连接池对象中没有空闲的连接,且连接数没有达到最大(即:
最大活跃连接数),创建一个新的数据库连接。
(4)存取数据库。
(5)关闭数据库,释放所有数据库连接(此时的关闭数据库连接,并非真正关闭,而是将其放入空闲队列中。
如实际空闲连接数大于初始空闲连接数则释放连接)。
(6)释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连接)。
3系统功能的具体实现
3.1系统的主窗口
系统的界面按照常规的WEB界面进行设计,设计的原则是界面友好,易于操作,容易上手,尽可能的贴切用户实际。
博客信息管理系统首页图如图3.1所示。
图3.1博客信息管理系统首页图
所有的网络用户都可以进入该首页进行登录、注册、浏览等相关的操作。
在页面的上方是博客信息管理系统的导航列表,图中显示的导航条包括登录、注册、博客列表、博文全览以及站务公告。
在页面的左侧是热点博客,包括博客主题及其用户名;新入博客,包括博客主题;站内搜索条,用户可以根据日志标题进行搜索;最新评论列表,包括评论标题;最新留言列表,包括留言标题;站点的统计信息,包括博客总数,日志总数。
在页面的中间则是精华日志和最新日志列表,包括用户名、日志标题、浏览次数和发表时间;页面的底部是版权说明信息。
个人博客主页界面图如图3.2所示。
图3.2个人博客主页界面图
所有的网络用户都可以进入某个人的博客主页进行浏览、留言等相关的操作。
在页面的上方是个人博客日志的分类名列表,包括分类名及其该分类下的日志数量。
在页面的左侧分别是登录表单,提供博客管理员进入后台管理页面;个人博客精华日志列表,包括日志标题;最新评论,包括评论标题;最新留言,包括留言标题;站点信息,包括个人日志总数、评论总数和留言总数。
在页面的中间则分别是最新日志的列表,包括日志标题、所属分类名、发表时间、作者、部分日志内容及其查看日志和发表评论链接;发表留言表单,包括昵称、留言标题和留言内容。
3.2公共核心类的设计
3.2.1数据库相关
访问数据库相关类如下:
(1)获取数据源,其代码如下:
publicstaticConnectiongetConnection(){
try{
Contextctx=(Context)newInitialContext().lookup(Constants.ENV);
DataSourceds=(DataSource)ctx.lookup(Constants.JDBC);
getConnection()方法:
该方法通过Context类提供的lookup()方法查找数据源,从而获得jdbc/blog数据源的引用,得到DataSource对象的引用后,就可以通过DataSource的getConnection()方法获得数据库连接对象。
(2)连接数据库和操作数据库;代码如下:
//构造数据库的连接和访问类
publicDBConnect()throwsException{
//获得数据库连接对象
conn=DB.getConnection();
//创建一个JDBC声明
stmt=conn.createStatement();
//预设SQL语句
publicvoidprepareStatement(Stringsql)throwsSQLException{
prepstmt=conn.prepareStatement(sql);
}
//设置索引值位置的对应值
publicvoidsetString(intindex,Stringvalue)throwsSQLException{
prepstmt.setString(index,value);
}
publicvoidsetInt(intindex,intvalue)throwsSQLException{
prepstmt.setInt(index,value);
}
//执行SQL语句并返回字段集
publicResultSetexecuteQuery()throwsSQLException{
if(prepstmt!
=null){
returnprepstmt.executeQuery();
}else
returnnull;
}
DBConnect()方法:
该方法主要负责获得数据库连接对象。
prepareStatement(Stringsql)方法:
该方法主要完成预设SQL语句,只有一个用来接收SQL语句的参数,如果SQL语句有误将抛出异常。
setString(intindex,Stringvalue)方法:
该方法用于设置预设SQL语句中的相应字段值,index表示索引位置,value表示需设置字符串类型的值。
setInt(intindex,intvalue)方法:
该方法用于预设SQL语句中的相应字段值,index表示索引位置,value表示需设置整型类型的值。
executeQuery()方法:
该方法用于执行预设的SQL语句。
3.2.2编写JavaBean类
为每一个数据库表建一个JavaBean类,完成对该表字段的获取和设置。
博客信息管理系统所用的JavaBean类列表如表3.1所示。
表3.1JavaBean类列表
管理类
说明
Blog类
博客管理员表对应的JavaBean类
Article类
日志表对应的JavaBean类
CateGory类
类别表对应的JavaBean类
FeedBack类
评论表对应的JavaBean类
Message类
留言表对应的JavaBean类
Feedback类的代码如下:
publicclassFeedback{
//属性,对应数据表中的字段名
privateintfeedbackid;
privateStringtitle;
//字段的访问和设置方法
publicintgetFeedbackid(){
returnfeedbackid;
}
publicvoidsetFeedbackid(intfeedbackid){
this.feedbackid=feedbackid;
}
Feedback类:
通过getFeedbackid()方法获取feedbackid属性的值,通过setFeedbackid(intfeedbackid)方法设置feedbackid属性的值。
3.2.3管理类设计
上面每一个JavaBean类都有一个相对应的管理类,是在JavaBean类及数据库相关类的基础上完成对数据库表的访问、更新、统计操作。
博客信息管理系统所用的管理类列表如表3.2所示。
表3.2管理类列表
管理类
说明
BlogMgr类
完成对博客管理员表的查询、更新及统计
Article类
完成对日志表的查询、更新及统计
FeedBack类
完成对评论表的查询、更新及统计
Message类
完成对留言表的查询、更新及统计
FeedbackMgr类的部分代码如下:
publicclassFeedbackMgr{
/*
*添加评论
*/
publicvoidadd(Feedbackfeedback){
DBConnectdbc=null;
ResultSetrs=null;
try{
//新建数据库连接和访问对象
dbc=newDBConnect();
//预设sql语句
dbc.prepareStatement("INSERTINTO
feedback(title,content,publishtime,lastmodifytime,username,articleid)
VALUES(?
?
?
?
?
?
)");
//设置对应值
dbc.setString(1,feedback.getTitle());
dbc.setString(2,feedback.getContent());
dbc.setDate(3,newjava.sql.Date(newjava.util.Date().getTime()));
dbc.setDate(4,newjava.sql.Date(newjava.util.Date().getTime()));
dbc.setString(5,feedback.getUsername());
dbc.setInt(6,feedback.getArticleid());
//执行该更新语句
dbc.executeUpdate();
/*
*查询所有评论(按最后修改时间)
*/
publicCollectiongetAllByLastModifyTime(){
DBConnectdbc=null;
Collectionc=newArrayList();
ResultSetrs=null;
try{
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 博客 系统 设计 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)