博客管理系统1_第1页
博客管理系统1_第2页
博客管理系统1_第3页
博客管理系统1_第4页
博客管理系统1_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 系统分析与总体设计博客信息系统包括:前台信息显示系统、后台信息管理系统。前者是面向公众的一个窗口,通过前台信息显示系统方便访问者浏览日志、评论和留言;发表评论和留言。后者是后台信息管理系统,方便博客管理员发表日志;回复评论和留言;管理日志、评论、留言及个人信息 12。1.1 系统需求分析1.1.1 用户需求分析用例图用来描述系统与参与者之间的相互作用,与用例图相关的几个概念:(1)角色:代表了某一事件发生的参与者,用一个小人表示。(2)用例:代表系统可以实现的功能,通常一个用例代表一组功能,实质上规定了系统实现功能的范围。(3)用例图:当角色和用例发生某种关系时,就可以用一个图将它们关联起

2、来,这就是用例图。博客信息管理系统用例图如图1.1所示。图1.1 博客信息管理系统用例图博客信息管理系统允许用户有三种身份:博客访问者、博客管理员及系统管理员。博客系统参与者中每种身份操作起来都很方便、快捷。博客访问者无需登陆就可以浏览信息、发表评论或留言;博客管理员注册后再登陆,就可以发布日志、管理个人主页;而博客管理员的基本信息都由系统管理员对其统一管理。1.2 数据分析本系统的用户主要是博客访问者和博客管理员,下面以博客前台展示系统中的用户查询日志为例进行说明。该过程的数据流程图如图1.2所示。图1.2 用户查询日志的数据流程图用户查询日志的数据流程:首先,用户输入需查找的关键字,然后提

3、交表单数据,服务器接收到关键字后,根据关键字对日志标题进行模糊查询,处理后将结果以日志标题链接的形式显示给该用户,用户点击相应的链接就可以浏览日志内容。1.3 系统流程根据博客信息管理系统的特点,将其分为两大模块:前台用户浏览模块和后台用户管理模块。前台用户浏览模块主要用于用户浏览日志信息;后台用户管理模块主要用于博客管理员对个人博客网站的管理,如日志管理、留言管理及评论管理等。博客系统平台的前台用户浏览模块流程图如图1.3所示。图1.3 前台用户浏览模块流程图前台用户浏览模块主要用于用户浏览日志信息,用户浏览日志有三种浏览方式可以选择:一是直接点击日志标题链接进入日志显示页面浏览日志;二是点

4、击博客主题链接进入该个人博客的首页,然后在该首页中选择所需的日志标题链接进入日志显示页面浏览日志;三是通过首页提供的搜索功能,搜索所需要的日志,然后在结果列表中选择所需的日志标题链接进入日志显示页面浏览日志。浏览日志的同时用户可以查看别人对该日志的评论,然后用户也可以对该日志发表自已的评论。博客系统平台的后台用户管理模块流程图如图1.4所示。图1.4 后台用户管理模块流程图用户进入后台管理平台,首先必需进行权限验证,防止未授权的用户非法登录。若未通过验证,则显示出错提示,并跳转到登录界面。若通过验证,则进入个人博客后台管理平台。用户可以浏览已发表的日志,并对其进行相应的操作如修改日志和删除日志

5、;可以查看日志的评论信息并对其进行回复或者删除操作;可以发表新的日志;可以新建日志分类;可以浏览个人博客的留言信息并对其进行相应的操作如回复留言和删除留言;还可以对个人信息进行修改。1.4 功能模块划分前台模块功能结构如图1.5所示。图1.5 博客信息系统前台功能结构图后台模块功能结构如图1.6所示。图1.6 博客信息系统后台功能结构图1.5 功能模块介绍博客信息管理系统分为面向网络用户的前台及面向个人博客维护管理的后台,依据博客网站中所要实现的基本功能的设定,将所有功能分解为如下四个主要的功能模块来加以实现。用户以合法的用户名及密码登录,系统即可按该登录用户的权限分配操作模块。1.5.1 博

6、客注册登录管理模块博客注册登录管理模块用于建立博客网站固定的客户群体,通过记录对应的博客档案,实现对博客信息的后台维护及管理,同时也便于通过博客档案库将网站最新动态及相关企业的信息方便地传达给每一位潜在的客户。该功能模块实现了以下几个子功能。(1)新博客在线注册。(2)博客登录管理。(3)跳转到博客主页。只有进行登录并通过身份验证的用户,才可以在个人博客页面发表日志,并借助个人设置实现对个人博客相关信息的管理维护。对于没有经过身份验证的网络用户不允许在博客页面中发表日志,更不允许对博客页面信息进行管理维护。该模块实现新博客的注册及登录验证功能。其中,注册新博客时会对用户输入的注册信息进行有效性

7、验证,包括基本数据格式的有效性以及逻辑有效性,例如,用户名被占用时将及时给出提示。注册成功的博客登录时,会随时根据博客输入的登录信息进行提示,如用户名错误或者密码错误。1.5.2 博客及文章检索查询模块博客及文章检索查询模块为网络用户提供便捷的搜索,以及日志阅读浏览等功能,同时对日志的评论信息、博客推荐也能够及时反馈给网络用户。该功能模块实现了以下几个子功能。(1)热门博客页面推荐。(2)最新博客日志推荐。(3)日志信息关键字搜索。该模块能够在网页中随时提供在线的最新日志信息。该信息需要定期更新,网络用户可以随时获得最新日志以及最热门的博客推荐。在客户选择了某个博客或者某个感兴趣的日志后,可以

8、方便地跳转到对应博客页面进行日志的阅读,并和博客进行交流互动。为了使网络用户尽快定位到所需的博客资料及日志信息,本模块提供了搜索功能,用户可以对所关注的日志信息按照标题进行关键字搜索,以避免用户浏览多个页面来寻找所需的日志信息。3.5.3 博客页面显示模块当网络用户进入某个人博客主页后,在该页面中将提供博客日志列表的显示,同时为了方便用户浏览,在该模块中提供根据分类名进行日志列表的显示,也提供日志评论的浏览,此外还允许用户在博客页面中发表评论及留言。该功能模块实现了如下几个子功能。(1)用户可以分页查看对应的日志内容及评论信息。(2)用户可以针对日志内容发表评论。(3)用户可以针对博客进行留言

9、。(4)用户可以分类查看日志内容。在该模块中还提供了博客页面统计信息,日志、评论及留言信息分页显示等方便用户的显示效果。1.5.4 博客个人维护管理模块博客个人维护管理模块用于实现用户对博客个人主页及相关信息的动态管理。该功能模块实现了如下几个子功能:(1)日志及日志分类管理。(2)评论及留言管理。(3)个人基本信息维护管理。借助该模块,用户可以随时对个人博客主页中的内容进行增加或修改,包括日志分类信息的更新、评论及留言管理等功能,也允许用户对博客的个人信息进行维护及其管理。2 系统详细设计2.1 数据库分析数据库是当前应用软件系统的重要组成部分,如何使基于数据库的应用系统安全、可靠、高效的运

10、行一直是软件开发技术研究的难题。所以本系统的数据库设计基于以下几点来考虑:(1)数据库规范化与非规范化的考虑。(2)数据查询优化与索引的建立。(3)存储过程与视图。2.1.1 数据库设计E-R图为了把用户的数据要求清晰明确地表达出来,通常要建立一个概念性的数据模型。概念性数据模型是一种面向问题的数据模型,是按照用户的观点来对数据和信息建模。描述了从用户角度看到的数据,反映了用户的现实环境。最常用的表示概念性数据模型的方法,是实体联系方法(EntityRelationship Approach)。这种方法用ER图描述现实世界中的实体,而不涉及这些实体在系统中的实现方法。用这种方法表示的概念性数据

11、模型又称为ER模型。ER模型中包含“实体”,“联系”和“属性”。博客信息管理系统涉及的实体包括:(1)用户:用户ID、用户名称、用户密码、博客主题、说明、E-mail、注册日期、发表日志数。 (2)类别:类别编号、类别名、类别描述、用户ID。(3)日志:日志编号、日志标题、日志内容、类别编号、发表日期、最后修改日期、用户ID、浏览次数、评论数。(4)评论:评论编号、评论标题、评论内容、发表日期、最后回复日期、评论人、日志编号。(5)留言:留言编号、留言标题、留言内容、发表日期、最后回复日期、留言人、用户ID。综合本系统各子模块要实现的功能,通过前面对博客信息系统数据的分析可以得到:用户表、类别

12、表、日志表、日志评论表、留言表的数据库概念模型(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用户编号Int4无否UserName用户名Varchar20无否Password用户密码Varchar20无否NickName博

13、客主题Varchar50无否Description博客描述Varchar100无是Email电子邮件Email50无否RegisterTime注册日期Datetime8无否ArticleNum发表的日志数Int40否(2)日志表,此表主要用于保存日志的基本信息。其结构如表2.2所示。表2.2 日志表列名含义类型长度缺省值允许空ArticleID日志编号Int4无否Title日志标题Varchar50无否Content日志内容text8无否CategoryID类别IDint4无否PublishTime日志发表时间Datetime8无否LastModifyTime日志最后修改时间Datetime8

14、无否BlogID用户IDInt4无否ReadTimes日志浏览次数Int40否FeedBackNum日志评论数Int40否(3)日志评论表,此表主要用于保存日志评论的基本信息。其结构如表2.3所示。表2.3 日志评论表列名含义类型长度缺省值允许空FeedBackID评论编号Int4无否Title评论标题Varchar20无否Content评论内容Text8无否PublishTime发表时间Datetime8无否UserName用户名Varchar20无否ArticleID日志IDInt4无否(4)留言表,此表主要用于保存留言的基本信息。其结构如表2.4所示。 表2.4 留言表列名含义类型长度缺

15、省值允许空MessageID留言编号Int4无否Title留言标题Varchar20无否Content留言内容text8无否PublishTime发表时间Datetime8无否LastModifyTime最后回复时间Datetime8无否UserName用户名Varchar20无否BlogID用户IDInt4无否(5)类别表,此表用于保存日志类别的基本信息。其结构如表2.5所示。表2.5 类别表列名含义类型长度缺省值允许空CategoryID类别编号Int4无否Name类别名Varchar20无否Description类别描述Varchar100无是BlogID用户编号Int4无否数据表在设计

16、完成后,指定好各数据表主键、外键,通过SQL Server 2000企业管理器中提供的新建数据库关系统图即可自动生成表与表之间的关系图。各个关联表之间通过设置好的外键连接在一起,本系统具体的数据表之间关系图如图4.6所示:图2.6 数据表之间关系图2.3 数据连接目前流行的数据库连接技术主要有:JDBC-ODBC桥、JDBC和数据连接池技术。该系统采用数据连接池技术,使用连接池的优点主要体现在两个方面:对数据库的连接统一进行配置、管理、监控,以及对数据库连接池的参数进行优化调整,同时对应用程序中没有关闭或其他原因造成没有关闭的数据库连接由连接池统一进行管理。便于程序的移植和后端数据库的切换,因

17、为在应用中通过统一的JNDI获得数据库的连接,而具体连接的是哪一台机器上的数据库与程序无关。数据库连接池技术的思想非常简单,将数据库连接作为对象存储在一个Vector对象中,一旦数据库连接建立后,不同的数据库访问请求就可以共享这些连接。这样,通过复用这些已经建立的数据库连接,可以克服上述缺点,极大地节省系统资源和时间。数据库连接池的主要操作如下:(1)建立数据库连接池对象(服务器启动)。(2)按照事先指定的参数创建初始数量的数据库连接(即:空闲连接数)。(3)对于一个数据库访问请求,直接从连接池中得到一个连接。如果数据库连接池对象中没有空闲的连接,且连接数没有达到最大(即:最大活跃连接数),创

18、建一个新的数据库连接。(4)存取数据库。(5)关闭数据库,释放所有数据库连接(此时的关闭数据库连接,并非真正关闭,而是将其放入空闲队列中。如实际空闲连接数大于初始空闲连接数则释放连接)。(6)释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连接)。3 系统功能的具体实现3.1 系统的主窗口系统的界面按照常规的WEB界面进行设计,设计的原则是界面友好,易于操作,容易上手,尽可能的贴切用户实际。博客信息管理系统首页图如图3.1所示。图3.1 博客信息管理系统首页图所有的网络用户都可以进入该首页进行登录、注册、浏览等相关的操作。在页面的上方是博客信息管理系统的导航列表,图

19、中显示的导航条包括登录、注册、博客列表、博文全览以及站务公告。在页面的左侧是热点博客,包括博客主题及其用户名;新入博客,包括博客主题;站内搜索条,用户可以根据日志标题进行搜索;最新评论列表,包括评论标题;最新留言列表,包括留言标题;站点的统计信息,包括博客总数,日志总数。在页面的中间则是精华日志和最新日志列表,包括用户名、日志标题、浏览次数和发表时间;页面的底部是版权说明信息。个人博客主页界面图如图3.2所示。图3.2 个人博客主页界面图所有的网络用户都可以进入某个人的博客主页进行浏览、留言等相关的操作。在页面的上方是个人博客日志的分类名列表,包括分类名及其该分类下的日志数量。在页面的左侧分别

20、是登录表单,提供博客管理员进入后台管理页面;个人博客精华日志列表,包括日志标题;最新评论,包括评论标题;最新留言,包括留言标题;站点信息,包括个人日志总数、评论总数和留言总数。在页面的中间则分别是最新日志的列表,包括日志标题、所属分类名、发表时间、作者、部分日志内容及其查看日志和发表评论链接;发表留言表单,包括昵称、留言标题和留言内容。3.2 公共核心类的设计3.2.1 数据库相关访问数据库相关类如下:(1)获取数据源,其代码如下:public static Connection getConnection()try Context ctx = (Context)new InitialCont

21、ext().lookup(Constants.ENV);DataSource ds=(DataSource)ctx.lookup(Constants.JDBC);getConnection()方法:该方法通过Context类提供的lookup()方法查找数据源,从而获得jdbc/blog数据源的引用,得到DataSource对象的引用后,就可以通过DataSource的getConnection()方法获得数据库连接对象。(2)连接数据库和操作数据库;代码如下: / 构造数据库的连接和访问类public DBConnect() throws Exception / 获得数据库连接对象conn=

22、DB.getConnection();/ 创建一个JDBC声明stmt = conn.createStatement();/ 预设SQL语句public void prepareStatement(String sql) throws SQLException prepstmt = conn.prepareStatement(sql);/ 设置索引值位置的对应值public void setString(int index, String value) throws SQLException prepstmt.setString(index, value);public void setInt

23、(int index, int value) throws SQLException prepstmt.setInt(index, value);/ 执行SQL语句并返回字段集public ResultSet executeQuery() throws SQLException if (prepstmt != null) return prepstmt.executeQuery(); elsereturn null;DBConnect()方法:该方法主要负责获得数据库连接对象。prepareStatement(String sql)方法:该方法主要完成预设SQL语句,只有一个用来接收SQL语句

24、的参数,如果SQL语句有误将抛出异常。setString(int index, String value)方法:该方法用于设置预设SQL语句中的相应字段值,index表示索引位置,value表示需设置字符串类型的值。setInt(int index, int value)方法:该方法用于预设SQL语句中的相应字段值,index表示索引位置,value表示需设置整型类型的值。executeQuery()方法:该方法用于执行预设的SQL语句。3.2.2 编写JavaBean类为每一个数据库表建一个JavaBean类,完成对该表字段的获取和设置。博客信息管理系统所用的JavaBean类列表如表3.1

25、所示。表3.1 JavaBean类列表管理类说明Blog类博客管理员表对应的JavaBean类Article类日志表对应的JavaBean类CateGory类类别表对应的JavaBean类FeedBack类评论表对应的JavaBean类Message类留言表对应的JavaBean类Feedback类的代码如下:public class Feedback / 属性,对应数据表中的字段名private int feedbackid;private String title; / 字段的访问和设置方法public int getFeedbackid() return feedbackid;publi

26、c void setFeedbackid (int feedbackid) this. feedbackid = feedbackid;Feedback类:通过getFeedbackid()方法获取feedbackid属性的值,通过setFeedbackid (int feedbackid)方法设置feedbackid属性的值。3.2.3 管理类设计上面每一个JavaBean类都有一个相对应的管理类,是在JavaBean类及数据库相关类的基础上完成对数据库表的访问、更新、统计操作。博客信息管理系统所用的管理类列表如表3.2所示。表3.2 管理类列表管理类说明 BlogMgr类完成对博

27、客管理员表的查询、更新及统计Article类完成对日志表的查询、更新及统计FeedBack类完成对评论表的查询、更新及统计Message类完成对留言表的查询、更新及统计FeedbackMgr类的部分代码如下:public class FeedbackMgr /* * 添加评论 */public void add(Feedback feedback)DBConnect dbc = null;ResultSet rs = null;try / 新建数据库连接和访问对象dbc = new DBConnect();/ 预设sql语句dbc.prepareStatement("INSERT I

28、NTO feedback (title,content,publishtime,lastmodifytime,username,articleid) VALUES ( ?,?,?,?,?,?)");/ 设置对应值dbc.setString(1, feedback.getTitle();dbc.setString(2, feedback.getContent();dbc.setDate(3, new java.sql.Date(new java.util.Date().getTime();dbc.setDate(4, new java.sql.Date(new java.util.Da

29、te().getTime();dbc.setString(5, feedback.getUsername();dbc.setInt(6, feedback.getArticleid();/ 执行该更新语句dbc.executeUpdate();/* * 查询所有评论(按最后修改时间) */public Collection getAllByLastModifyTime() DBConnect dbc = null;Collection c = new ArrayList();ResultSet rs = null;try / 新建数据库连接和访问对象dbc = new DBConnect();

30、/ 执行SQL语句,返回字段集rs=dbc.executeQuery("SELECT * FROM feedback order by lastmodifytime desc");Feedback feedback = null;while (rs.next() / 新建评论对象feedback = new Feedback();/ 设置评论对象相关的属性feedback.setFeedbackid(rs.getInt("feedbackid");feedback.setTitle(rs.getString("title");feed

31、back.setContent(rs.getString("content");feedback.setStrpublishtime(rs.getString("publishtime");feedback.setStrlastmodifytime(rs.getString("lastmodifytime");feedback.setUsername(rs.getString("username");feedback.setArticleid(rs.getInt("articleid");/ 将

32、该评论对象存入集合对象中c.add(feedback);/ 将该评论对象置为nullfeedback = null;/ 如果结果集不会空,则循环添加该评论对象FeedbackMgr类:封装了对评论表的所有操作,包括添加评论、回复评论、删除评论、查询某日志的所有评论(按最后修改时间排序)和查询某用户的所有评论(按最后修改时间排序)等。3.3 系统主要功能模块详述3.3.1 博客管理员登陆模块当用户需发表新日志或者是对博客进行管理时,就必须先进行登陆验证操作,然后进入博客信息管理系统后台。用户登陆界面图如图5.3所示。图3.3 用户登陆界面图登陆模块的客户端验证代码如下:<script la

33、nguage="JavaScript"><!- function validateLogin() var strUserName = document. frmLogin. txtUserName.value; var strPassword = document. frmLogin. txtPassword.value; if (strUserName ="") alert("请您输入用户名!"); return false; if (strPassword ="") alert("请输入密码!"); return false; -></script>validateLog

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论