博客管理系统1_第1页
博客管理系统1_第2页
博客管理系统1_第3页
博客管理系统1_第4页
博客管理系统1_第5页
免费预览已结束,剩余32页可下载查看

下载本文档

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

文档简介

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

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

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

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

5、评论信息并对其进行回复或者删除操作;可以发表新的日志;可以新建日志分类;可以浏览个人博客的留言信息并对其进行相应的操作如回复留言和删除留言;还可以对个人信息进行修改。1.4 功能模块划分前台模块功能结构如图1.5所示土最新博客*博客列表最新日志卡精华日志日志列表,最新评论*发表评论最新留发表留用户登陆用户注册日志查询博客查询图1.5博客信息系统前台功能结构图-6-后台模块功能结构如图1.6所示图1.6博客信息系统后台功能结构图1.5 功能模块介绍博客信息管理系统分为面向网络用户的前台及面向个人博客维护管理的后台,依据博客网站中所要实现的基本功能的设定,将所有功能分解为如下四个主要的功能模块来加

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

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

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

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

10、析数据库是当前应用软件系统的重要组成部分,如何使基于数据库的应用系统安全、可靠、高效的运行一直是软件开发技术研究的难题。所以本系统的数据库设计基于以下几点来考虑:(1)数据库规范化与非规范化的考虑。(2)数据查询优化与索引的建立。10-(3)存储过程与视图。2.1.1数据库设计E-R图为了把用户的数据要求清晰明确地表达出来,通常要建立一个概念性的数据模型。概念性数据模型是一种面向问题的数据模型,是按照用户的观点来对数据和信息建模。描述了从用户角度看到的数据,反映了用户的现实环境。最常用的表示概念性数据模型的方法,是实体一联系方法(Entity一RelationshipApproach)。这种方

11、法用ER图描述现实世界中的实体,而不涉及这些实体在系统中的实现方法。用这种方法表示的概念性数据模型又称为ER模型。ER模型中包含“实体”,“联系”和“属性”。博客信息管理系统涉及的实体包括:(1)用户:用户ID、用户名称、用户密码、博客主题、说明、E-mail、注册日期、发表日志数。(2)类别:类别编号、类别名、类别描述、用户ID。(3)日志:日志编号、日志标题、日志内容、类别编号、发表日期、最后修改日期、用户ID、浏览次数、评论数。(4)评论:评论编号、评论标题、评论内容、发表日期、最后回复日期、评论人、日志编号。(5)留言:留言编号、留言标题、留言内容、发表日期、最后回复日期、留言人、用户

12、ID。综合本系统各子模块要实现的功能,通过前面对博客信息系统数据的分析可以得到:用户表、类别表、日志表、日志评论表、留言表的数据库概念模型(E-R图)。用户E-R图如图2.1所示。-11-图2.1用户E-R图日志类别E-R图如图2.2所示。图2.2日志类别E-R图日志E-R图如图2.3所示12-发表时间日志评论E-R图如图2.4所7K。(发表时间)(评论内容:一(评论标题)、/日志评论图2.4日志评论留言E-R图如图2.5所示。-13-最后回复时间乂评论者名字'一".-1评论日志D:,E-R图发表时间图2.5留言E-R图2.2 系统数据表设计(1)用户表,此表主要用于保存用户

13、的基本信息。其结构如表2.1所示表2.1用户表14-列名含义长度缺省值允许空BlogID用户编号Int4无否UserName用户名Varchar20无否Password用户帝他Varchar20无否NickName博客主题Varchar50无否Description博客描述Varchar100无是Email电子邮件Email50无否RegisterTime注册日期Datetime8无否ArticleNum发表的日忐数Int40否(2)日忐表,此表主要用于保存日志的基本信息。其结构如表2.2而。-15-表2.2日志表列名含义长度缺省值允许空ArticlelD日志编勺Int4无否Title日忐标题

14、Varcha50无否rContent日志内容text8无否CategorylD类别IDint4无否PublishTime日志发表时间Dateti8无否meLastModifyTi日志最后修改时Dateti8无否me间meBlogID用户IDInt4无否ReadTimes日志浏览次数Int40否FeedBackNum日志评论数Int40否(3)日志评论表,此表主要用于保存日志评论的基本信息。其结构如表2.3 所示。16-表2.3日志评论表列名含义长度缺省值允许空FeedBackID评论编号Int4无否Title评论标题Varchar20无否Content评论内容Text8无否PublishTim

15、e发表时间Datetime8无否UserName用户名Varchar20无否ArticleID日志IDInt4无否(4)留言去,此表主要用于保存留言的基本信息。其结构如表2.4所小。表2.4留言表列名含义类型长度缺省允许值空-17-MessagelD留言编号Int4无否Title留百标题Varchar20无否Content留百内容text8无否PublishTime发表时间Datetime8无否LastModifyTime最后回复时间Datetime8无否UserName用户名Varchar20无否BlogID用户IDInt4无否(5)类别表,此表用于保存日志类别的基本信息。其结构如表2.5而

16、。表2.5类别表列名含义类型长度缺省允许值空18-CategorylD类别编号Int4无否Name类别名VarcharVarcharInt20无否Description类别描述100无是BlogID用户编号4无否数据表在设计完成后,指定好各数据表主键、外键,通过SQLServer2000企业管理器中提供的新建数据库关系统图即可自动生成表与表之间的关系图。各个关联表之间通过设置好的外键连接在一起,本系统具体的数据表之间关系图如图4,6所示:-19-category列名cttt(«ryidfianteblogid说明类别名类别描述类别所属的博客blogarticle破说明blogid博客

17、工口useriiame博客登陆名(域名Jpassword登陆密明nickname博客主题函称d*£bipti*FL博春的描逑tatil呼客管理员的E-m£1register11me注册时间1articlenum发表的日志数被说明articleid日志title巳志标题content三志内容category!d日志所属类别publishtimt日志战表时间lotmodifytimt日志景后峰双时间blogid日志所属的博客readtimes日志浏览次数feedbacknuni日志评论数jQCmessagefeedback列名说明message!d留言IDtitie翟言标题co

18、ntent留言内容publishtinh电凿者发表时间l&itftodlLfyilim*鹫官最后回其时间useriiianiie凿若发表者名blogid富言所属博客列名说明feedback!d评论H)title评论标题canteiLt评论内容publishtime砰论发表时间府difytimt评论回复时间评点者的姓名articleid评论所属的日志图2.6数据表之间关系图2.3数据连接目前流行的数据库连接技术主要有:JDBC-ODB新、JDBC和数据连接池技术。该系统采用数据连接池技术,使用连接池的优点主要体现在两个方面:对数据库的连接统一进行配置、管理、监控,以及对数据库连接池的参数

19、进行优化调整,同时对应用程序中没有关闭或其他原因造成没有关闭的数据库连接由20-连接池统一进行管理。便于程序的移植和后端数据库的切换,因为在应用中通过统一的JNDI获得数据库的连接,而具体连接的是哪一台机器上的数据库与程序无关。数据库连接池技术的思想非常简单,将数据库连接作为对象存储在一个Vector对象中,一旦数据库连接建立后,不同的数据库访问请求就可以共享这些连接。这样,通过复用这些已经建立的数据库连接,可以克服上述缺点,极大地节省系统资源和时间。数据库连接池的主要操作如下:(1)建立数据库连接池对象(服务器启动)。(2)按照事先指定的参数创建初始数量的数据库连接(即:空闲连接数)(3)对

20、于一个数据库访问请求,直接从连接池中得到一个连接。如果数据库连接池对象中没有空闲的连接,且连接数没有达到最大(即:最大活跃连接数),创建一个新的数据库连接。(4)存取数据库。(5)关闭数据库,释放所有数据库连接(此时的关闭数据库连接,并非真正关闭,而是将其放入空闲队列中。如实际空闲连接数大于初始空闲连接数则释放连接)。(6)释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连接)。-21-3系统功能的具体实现3.1 系统的主窗口易于系统的界面按照常规的WE沸面进行设计,设计的原则是界面友好,操作,容易上手,尽可能的贴切用户实际。博客信息管理系统首页图如图3.1所示。2

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

22、enjurST*我的蹲落找的米酬发而博交添加相片用户中心修理资料破密码退出景录博克隈!I郎除钺古包修改删除图3.2个人博客主页界面图所有的网络用户都可以进入某个人的博客主页进行浏览、留言等相关的操作。在页面的上方是个人博客日志的分类名列表,包括分类名及其该分类下的日志数量。在页面的左侧分别是登录表单,提供博客管理员进入后台管理页面;个人博客精华日志列表,包括日志标题;最新评论,包括评论标题;最新留言,包括留言标题;站点信息,包括个人日志总数、评论总数和留言总数。在页面的中间则分别是最新日志的列表,包括日志标题、所属分类名、发表时间、作者、部分日志内容及其查看日志和发表评论链接;发表留言表单,包

23、括昵称、留言标题和留言内容。24-3.2 公共核心类的设计3.2.1 数据库相关访问数据库相关类如下:(1)获取数据源,其代码如下:publicstaticConnectiongetConnection()tryContextctx=(Context)newInitialContext().lookup(Constants.ENV);DataSourceds=(DataSource)ctx.lookup(Constants.JDBC);getConnection()方法:该方法通过Context类提供的lookup()方法查找数据源,从而获得jdbc/blog数据源的引用,得到DataSour

24、ce对象的引用后,就可以通过DataSource的getConnection()方法获得数据库连接对象。(2)连接数据库和操作数据库;代码如下:/构造数据库的连接和访问类publicDBConnect()throwsException/获得数据库连接对象conn=DB.getConnection();/创建一个1口8啖明stmt=conn.createStatement();/预设SQIM句publicvoidprepareStatement(Stringsql)throwsSQLExceptionprepstmt=conn.prepareStatement(sql);/设置索引值位置的对应值

25、publicvoidsetString(intindex,Stringvalue)throwsSQLException-25-prepstmt.setString(index,value);publicvoidsetInt(intindex,intvalue)throwsSQLExceptionprepstmt.setInt(index,value);/执行SQIM句并返回字段集publicResultSetexecuteQuery()throwsSQLExceptionif(prepstmt!=null)returnprepstmt.executeQuery();elsereturnnull

26、;DBConnect()方法:该方法主要负责获得数据库连接对象。prepareStatement(Stringsql)方法:该方法主要完成预设SQL语句,只有一个用来接收SQL语句的参数,如果SQL语句有误将抛出异常。setString(intindex,Stringvalue)方法:该方法用于设置预设SQL语句中的相应字段值,index表示索引位置,value表示需设置字符串类型的值。setInt(intindex,intvalue)方法:该方法用于预设SQL语句中的相应字段值,index表示索引位置,value表示需设置整型类型的值。executeQuery()方法:该方法用于执行预设的S

27、QL语句。为每一个数据库表建一个博客信息管理系统所用的3.2.2 编写JavaBean类JavaBean类,完成对该表字段的获取和设置。JavaBean类列表如表3.1所示。26-表3.1JavaBean类列表管理类说明Blog类博客管理员表对应的JavaBean类Article类日志表对应的JavaBean类CateGory类类别表对应的JavaBean类FeedBack类评论表对应的JavaBean类Message类留言表对应的JavaBean类Feedback类的代码如下:publicclassFeedback/属性,对应数据表中的字段名privateintfeedbackid;priv

28、ateStringtitle;/字段的访问和设置方法publicintgetFeedbackid()returnfeedbackid;publicvoidsetFeedbackid(intfeedbackid)this.feedbackid=feedbackid;Feedback类:通过getFeedbackid()方法获取feedbackid属性的值,通过setFeedbackid(intfeedbackid)方法设置feedbackid属性的值。-27-3.2.3 管理类设计上面每一个JavaBean类都有一个相对应的管理类,是在JavaBean类及数据库相关类的基础上完成对数据库表的访问

29、、更新、统计操作。博客信息管理系统所用的管理类列表如表3.2所示。表3.2管理类列表管理类说明BlogMgr类完成对博客管理员表的查询、更新及统计Article类完成对日志表的查询、更新及统计FeedBack类完成对评论表的查询、更新及统计Message类完成对留言表的查询、更新及统计/预设sql语句dbc.prepareStatement("INSERTINTOfeedback(title,content,publishtime,lastmodifytime,username,articleid)VALUES(?,?,?,?,?,?)");/设置对应值dbc.setStr

30、ing(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();/*查询所有评论(按

31、最后修改时间)*/publicCollectiongetAllByLastModifyTime()DBConnectdbc=null;Collectionc=newArrayList();ResultSetrs=null;try/新建数据库连接和访问对象dbc=newDBConnect();-29-/执行SQL语句,返回字段集rs=dbc.executeQuery("SELECT*FROMfeedbackorderbylastmodifytimedesc");Feedbackfeedback=null;while(rs.next()/新建评论对象feedback=newFe

32、edback();/设置评论对象相关的属性feedback.setFeedbackid(rs.getInt("feedbackid");feedback.setTitle(rs.getString("title");feedback.setContent(rs.getString("content");feedback.setStrpublishtime(rs.getString("publishtime");feedback.setStrlastmodifytime(rs.getString("last

33、modifytime");feedback.setUsername(rs.getString("username");feedback.setArticleid(rs.getInt("articleid");/将该评论对象存入集合对象中c.add(feedback);/将该评论对象置为nullfeedback=null;/如果结果集不会空,则循环添加该评论对象FeedbackMgr类:封装了对评论表的所有操作,包括添加评论、回复评论、删除评论、查询某日志的所有评论(按最后修改时间排序)和查询某用户的所有评论(按最后修改时间排序)等。30-3.3

34、系统主要功能模块详述3.3.1 博客管理员登陆模块当用户需发表新日志或者是对博客进行管理时,就必须先进行登陆验证操作,然后进入博客信息管理系统后台。用户登陆界面图如图5.3所示。系统后台登录用尸名:密码:I登录图3.3用户登陆界面图登陆模块的客户端验证代码如下:<scriptlanguage="JavaScript"><!-functionvalidateLogin()varstrUserName=document.frmLogin.txtUserName.value;varstrPassword=document.frmLogin.txtPassword

35、.value;if(strUserName="")alert("请您输入用户名!");returnfalse;if(strPassword="")alert("请输入密码!");returnfalse;-31-)-></script>validateLogin()方法,用来验证是否填写了用户名和密码。一般地,在将用户提交的数据提交到数据库进行数据库操作之前,需要对数据的有效性进行验证,确保这些数据是安全的,一般是不能为空或空格,这样系统不会产生错误。另外,对于有实际意义的数据,一般有特定的形式,也可以进行有效性验证。3.3,2日志管理显示模块日志管理显示界面图如图3,4所示用署文¥管理序号值文标发相博主发卷nt间点曲次救1胃鬼窑的由车3332011-05-2620:430划陶2baowenjunS011-05-202O:33划除3善源普追告好迪火夺箱三巨共压制安京无悬念2222011-05-202D:2DD册蟒4用科拉广元就鹿心为孩于旧上伟君谋2222011-05-263511i11120

温馨提示

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

评论

0/150

提交评论