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

下载本文档

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

文档简介

1、大连民族学院计算机科学与工程学院博客系统的设计与实现(系):计算机科学与工程业:计算机科学与技术名:XXX号:2007081321完成日期:2011 年11月24日1系统分析与总体设计博客信息系统包括:前台信息显示系统、后台信息管理系统。前者是面向公众的一 个窗口,通过前台信息显示系统方便访问者浏览日志、评论和留言;发表评论和留言。后 者是后台信息管理系统,方便博客管理员发表日志;回复评论和留言;管理日志、评论、留言及个人信息12。1.1系统需求分析1.1.1用户需求分析用例图用来描述系统与参与者之间的相互作用,与用例图相关的几个概念:(1)角色:代表了某一事件发生的参与者,用一个小人表示。(

2、2)用例:代表系统可以实现的功能,通常一个用例代表一组功能,实质上规定了 系统实现功能的范围。(3)用例图:当角色和用例发生某种关系时,就可以用一个图将它们关联起来,这 就是用例图。博客信息管理系统用例图如图1.1所示。图1.1博客信息管理系统用例图博客信息管理系统允许用户有三种身份:博客访问者、博客管理员及系统管理员。 博客系统参与者中每种身份操作起来都很方便、快捷。博客访问者无需登陆就可以浏览信息、发表评论或留言;博客管理员注册后再登陆,就可以发布日志、管理个人主页; 而博客管理员的基本信息都由系统管理员对其统一管理。1.2数据分析本系统的用户主要是博客访问者和博客管理员,下面以博客前台展

3、示系统中的用户查 询日志为例进行说明。该过程的数据流程图如图1.2所示。提交事物</事物处理程序件文储存 一 . 、图1.2用户查询日志的数据流程图用户查询日志的数据流程:首先,用户输入需查找的关键字,然后提交表单数据,服 务器接收到关键字后,根据关键字对日志标题进行模糊查询,处理后将结果以日志标题链 接的形式显示给该用户,用户点击相应的链接就可以浏览日志内容。1.3系统流程根据博客信息管理系统的特点,将其分为两大模块:前台用户浏览模块和后台用户管理模块。前台用户浏览模块主要用于用户浏览日志信息;后台用户管理模块主要用于博客 管理员对个人博客网站的管理,如日志管理、留言管理及评论管理等。

4、博客系统平台的前台用户浏览模块流程图如图1.3所示。前台用户浏览模块主要用于用户浏览日志信息,用户浏览日志有三种浏览方式可以选择:一是直接点击日志标题链接进入日志显示页面浏览日志;二是点击博客主题链接进入 该个人博客的首页,然后在该首页中选择所需的日志标题链接进入日志显示页面浏览日 志;三是通过首页提供的搜索功能,搜索所需要的日志,然后在结果列表中选择所需的日 志标题链接进入日志显示页面浏览日志。浏览日志的同时用户可以查看别人对该日志的评论,然后用户也可以对该日志发表自已的评论。1.4所示。博客系统平台的后台用户管理模块流程图如图用户进入管理未通过通过权限验证管理中心日志管理评论管理留言管理V

5、V出错提示图1.4后台用户管理模块流程图用户进入后台管理平台,首先必需进行权限验证,防止未授权的用户非法登录。若未 通过验证,则显示出错提示,并跳转到登录界面。若通过验证,则进入个人博客后台管理 平台。用户可以浏览已发表的日志,并对其进行相应的操作如修改日志和删除日志;可以 查看日志的评论信息并对其进行回复或者删除操作;可以发表新的日志;可以新建日志分 类;可以浏览个人博客的留言信息并对其进行相应的操作如回复留言和删除留言;还可以 对个人信息进行修改。1.4功能模块划分前台模块功能结构如图1.5所示。王 博客列 丄 热点丄 最新博客工发表评论 丄最新评论 王日志列 丄精华日志 丄最新日i发表留

6、亠一曰用户登陆用户注册日志查询王博客查询后台模块功能结构如图1.6所示。图1.5博客信息系统前台功能结构图修改个人信息修改日志删除日志回复评论回复留一口工 删除留一口上 添加分类修改分类工 删除分类图1.6博客信息系统后台功能结构图1.5功能模块介绍博客信息管理系统分为面向网络用户的前台及面向个人博客维护管理的后台,依据博 客网站中所要实现的基本功能的设定,将所有功能分解为如下四个主要的功能模块来加以实现。用户以合法的用户名及密码登录,系统即可按该登录用户的权限分配操作模块。1.5.1 博客注册登录管理模块博客注册登录管理模块用于建立博客网站固定的客户群体,通过记录对应的博客档 案,实现对博客

7、信息的后台维护及管理,同时也便于通过博客档案库将网站最新动态及相 关企业的信息方便地传达给每一位潜在的客户。该功能模块实现了以下几个子功能。(1)新博客在线注册。(2)博客登录管理。(3)跳转到博客主页。只有进行登录并通过身份验证的用户,才可以在个人博客页面发表日志,并借助个人设置实现对个人博客相关信息的管理维护。对于没有经过身份验证的网络用户不允许在博客页面中发表日志,更不允许对博客页面信息进行管理维护。该模块实现新博客的注册及登录验证功能。其中,注册新博客时会对用户输入的注册信息进行有效性验证,包括基本数据格式的有效性以及逻辑有效性,例如,用户名被占用 时将及时给出提示。注册成功的博客登录

8、时,会随时根据博客输入的登录信息进行提示, 如用户名错误或者密码错误。1.5.2 博客及文章检索查询模块 博客及文章检索查询模块为网络用户提供便捷的搜索,以及日志阅读浏览等功能,同 时对日志的评论信息、博客推荐也能够及时反馈给网络用户。该功能模块实现了以下几个子功能。( 1)热门博客页面推荐。( 2)最新博客日志推荐。( 3)日志信息关键字搜索。 该模块能够在网页中随时提供在线的最新日志信息。该信息需要定期更新,网络用户 可以随时获得最新日志以及最热门的博客推荐。 在客户选择了某个博客或者某个感兴趣的 日志后,可以方便地跳转到对应博客页面进行日志的阅读,并和博客进行交流互动。为了使网络用户尽快

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

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

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

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

13、评论表、留言表的数据库概念模型(E-R 图)。用户 E-R 图如图 2.1 所示。日志E-R图如图2.3所示。图2.3留言E-R图如图2.5所示。图2.5留言E-R图2.2系统数据表设计2.1所示。(1)用户表,此表主要用于保存用户的基本信息。其结构如表表2. 1用户表列名含义类型长度缺省值允许空BlogID用户编号Int4无否UserName用户名Varchar20无否P assword用户密码Varchar20无否NickName博客主题Varchar50无否Descri pti on博客描述Varchar100无是Email电子邮件Email50无否RegisterTime注册日期Dat

14、etime8无否ArticleNum发表的日志数Int40否2)日志表,此表主要用于保存日志的基本信息。其结构如表2.2所示。表2. 2日志表列名含义类型长度缺省值允许空ArticleID日志编号Int4无否Title日志标题Varchar50无否Content日志内容text8无否CategoryID类别IDint4无否P ublishTime日志发表时间Datetime8无否LastModifyTime日志最后修改时间Datetime8无否BlogID用户IDInt4无否ReadTimes日志浏览次数Int40否FeedBackNum日志评论数Int40否2.3所示。(3)日志评论表,此表

15、主要用于保存日志评论的基本信息。其结构如表表2. 3日志评论表列名含义类型长度缺省值允许空FeedBackID评论编号Int4无否Title评论标题Varchar20无否Content评论内容Text8无否P ublishTime发表时间Datetime8无否UserName用户名Varchar20无否ArticleID日志IDInt4无否4)留言表,此表主要用于保存留言的基本信息。其结构如表2.4所示。表2. 4留言表列名含义类型长度缺省值允许空MessageID留言编号Int4无否Title留言标题Varchar20无否Content留言内容text8无否P ublishTime发表时间D

16、atetime8无否LastModifyTime最后回复时间Datetime8无否UserName用户名Varchar20无否BlogID用户IDInt4无否2.5所示。(5)类别表,此表用于保存日志类别的基本信息。其结构如表表2. 5类别表列名含义类型长度缺省值允许空CategorylD类别编号Int4无否Name类别名Varchar20无否Descri pti on类别描述Varchar100无是BlogID用户编号Int4无否SQL Server 2000 企业管理各个关联表之间通过4.6所示:数据表在设计完成后,指定好各数据表主键、外键,通过 器中提供的新建数据库关系统图即可自动生成表

17、与表之间的关系图。设置好的外键连接在一起,本系统具体的数据表之间关系图如图category列名1EC itagoryid裘别Hitune娄别名dscr ipti on奏别描ji一bLcfid裘别所属的博容u”图2.6数据表之间关系图2.3数blogarticleblogj ApaSTor J.zii 匚knai土di三匚ripti 0X1am-biXurti说明登陆密6傳客生题姚称)博客管理员的E-m 411注册时间宗表曲日志数列名or ti clfti Atttlt匚c itcgoryi J. piBli ahtimc1 Lstmodi fytima BLflgi i rtadtir* 口

18、=£*4dtaclnujnI说明I日击功日总标题日老内容 日芒廝届类刖 日志发表时间曰吉最后故时何 日吉所属的卿客 日古词数 日吉评论数据连接前流行的数据库连接技术主message1PTnessageL i留言口:title留言标题coritent留言内容pubXishtine留言境表时间laitrBodifytifne留言摄后回疑时洞54ritUM留言发表者名:blogid留肓所雇傅客feedback列名说朋JDBC-ODfHdbackidtLtlflcuittnli istmodi tytimearti ciei d评 ttID_评就;标题 评佗内容评佗岌表尉间 评论回夏时闻 评

19、论若的姓若评论所扈的日志 ”BC桥、JDBC 和数据连接池技建立数据库连接池对象(服务器启动) 。 按照事先指定的参数创建初始数量的数据库连接(即:空闲连接数) 。 对于一个数据库访问请求,直接从连接池中得到一个连接。如果数据库连接池 对象中没有空闲的连接,且连接数没有达到最大(即:最大活跃连接数) ,创建 一个新的数据库连接。存取数据库。 关闭数据库,释放所有数据库连接(此时的关闭数据库连接,并非真正关闭, 而是将其放入空闲队列中。如实际空闲连接数大于初始空闲连接数则释放连 接)。6)释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连4)5)术。该系统采用数据连接

20、池技术,使用连接池的优点主要体现在两个方面:对数据库的连 接统一进行配置、管理、监控,以及对数据库连接池的参数进行优化调整,同时对应用程 序中没有关闭或其他原因造成没有关闭的数据库连接由连接池统一进行管理。 便于程序的 移植和后端数据库的切换,因为在应用中通过统一的 JNDI 获得数据库的连接,而具体连 接的是哪一台机器上的数据库与程序无关。数据库连接池技术的思想非常简单,将数据库连接作为对象存储在一个 Vector 对象 中,一旦数据库连接建立后,不同的数据库访问请求就可以共享这些连接。这样,通过复 用这些已经建立的数据库连接,可以克服上述缺点,极大地节省系统资源和时间。数据库连接池的主要操

21、作如下:(1)(2)(3)接)。3系统功能的具体实现3.1系统的主窗口系统的界面按照常规的 WEB界面进行设计,设计的原则是界面友好,易于操作,容易 上手,尽可能的贴切用户实际。博客信息管理系统首页图如图3.1所示。MS.犀户£芳王皇:J鮎1茸0朝曲日4热点博文斷社£广元戢愛Lr为区了'fUB荷谏州1芋揺普强葦块:和二歹氐乐貳1緒无马也f前比圭I博主73】n甬:d 1 jfe表詬5:心0 43"卿 傅主:bsowerur. I 国: I 強寒河泪:201 bO5-2S 20:15妾墀誉屉香班賊砸二巨豊压制0顷无-J博H : 222$已砂0 '疑赢时

22、I目:ZQM 05 2G 20:20 脈世厂元钛更匕为E子qi上任R点I NS工:2臨I已阀:釦发视個:20节06 2$ 211肪 111 Wi: n ei51: T |: 205 2X18enffi文弓头耳的B来蒙誓美担昔®S好煞人点冠三自头压刊S克无骑34拦厂SE知蓋匕A按孑吐占辛漠111iH便IT> <应:林;图3.1博客信息管理系统首页图所有的网络用户都可以进入该首页进行登录、注册、浏览等相关的操作。在页面的上 方是博客信息管理系统的导航列表,图中显示的导航条包括登录、注册、博客列表、博文 全览以及站务公告。在页面的左侧是热点博客,包括博客主题及其用户名;新入博客

23、,包括博客主题;站内搜索条,用尸可以根据日志标题进行搜索;最新评论列表,包括评论标 题;最新留言列表,包括留言标题;站点的统计信息,包括博客总数,日志总数。在页面 的中间则是精华日志和最新日志列表,包括用户名、日志标题、浏览次数和发表时间;页 面的底部是版权说明信息。3.2所示。个人博客主页界面图如图矢r二忧与天是/lit)和年g刖汨uacfi/rsnjunJSnf! 诜的'困S 我的梱(B集稗遇宣审加翊片闿PpbI諏辭出熠囉胆岀矍站葫古包翻I輙图3.2个人博客主页界面图所有的网络用户都可以进入某个人的博客主页进行浏览、留言等相关的操作。在页面 的上方是个人博客日志的分类名列表,包括分

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

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

26、据库的连接和访问类public DBConnect() throws Exception / 获得数据库连接对象conn=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

27、 SQLException prepstmt.setString(index, value);public void setInt(int index, int value) throws SQLException prepstmt.setInt(index, value);/执行SQL语句并返回字段集public ResultSet executeQuery() throws SQLException if (prepstmt != null) return prep stmt.executeQuery(); elsereturn n ull;DBConnect()方法:该方法主要负责获得数

28、据库连接对象。prepareStatement(String sql)方法:该方法主要完成预设SQL语句,只有一个用来接收SQL语句的参数,如果 SQL语句有误将抛出异常。setString(int index, String value)方法:该方法用于设置预设SQL语句中的相应字段值,index表示索引位置,value表示需设置字符串类型的值。setInt(int index, int value)方法:该方法用于预设SQL语句中的相应字段值,index表示索引位置,value表示需设置整型类型的值。executeQuery()方法:该方法用于执行预设的SQL语句。322 编写 JavaB

29、ean 类JavaBean类,完成对该表字段的获取和设置。JavaBean类列表如表3.1所示。为每一个数据库表建一个博客信息管理系统所用的表 3.1 JavaBean类列表管理类说明Blog 类博客管理员表对应的JavaBean 类Article 类日志表对应的JavaBean 类CateGory 类类别表对应的JavaBean 类FeedBack 类评论表对应的JavaBean 类Message 类留言表对应的JavaBean 类Feedback类的代码如下:p ublic class Feedback /属性,对应数据表中的字段名P rivate int feedbackid;p riv

30、ate String title;/字段的访问和设置方法p ublic int getFeedbackid() retur n feedbackid;p ublic void setFeedbackid (int feedbackid) this. feedbackid = feedbackid;Feedback 类:通过 getFeedbackid()方法获取 feedbackid 属性的值,通过 setFeedbackid (int feedbackid)方法设置 feedbackid 属性的值。3.2.3管理类设计上面每一个JavaBean类都有一个相对应的管理类,是在JavaBean类

31、及数据库相关类的基础上完成对数据库表的访问、更新、统计操作。博客信息管理系统所用的管理类列表如表3.2所示。表3. 2 管理类列表管理类说明BlogMgr 类完成对博客管理员表的查询、更新及统计Article 类完成对日志表的查询、更新及统计FeedBack 类完成对评论表的查询、更新及统计Message 类完成对留言表的查询、更新及统计FeedbackMgr类的部分代码如下:P ublic class FeedbackMgr /*添加评论*/P ublic void add(Feedback feedback" DBCo nn ect dbc = null; ResultSet r

32、s = null;try / 新建数据库连接和访问对象dbc = new DBConnect();/ 预设 sql 语句dbc.prepareStatement("INSERT INTOfeedback (title,content,publishtime,lastmodifytime,username,articleid)VALUES ( ?,?,?,?,?,?)");/ 设置对应值dbc.setString(1, feedback.getTitle();dbc.setString(2, feedback.getContent();dbc.setDate(3, new j

33、ava.sql.Date(new java.util.Date().getTime();dbc.setDate(4, new java.sql.Date(new java.util.Date().getTime();dbc.setString(5, feedback.getUsername();dbc.setInt(6, feedback.getArticleid();/ 执行该更新语句dbc.executeUpdate();/* 查询所有评论 ( 按最后修改时间 )*/public Collection getAllByLastModifyTime() DBConnect dbc = nul

34、l;Collection c = new ArrayList();ResultSet rs = null;try / 新建数据库连接和访问对象dbc = new DBConnect();/ 执行 SQL 语句,返回字段集 rs=dbc.executeQuery("SELECT * FROM feedback order by lastmodifytime desc");Feedback feedback = null;while (rs.next() / 新建评论对象feedback = new Feedback();/ 设置评论对象相关的属性 feedback.setFe

35、edbackid(rs.get In t("feedbackid"); feedback.setTitle(rs.getStri ng("title");feedback.setC onten t(rs.getStri ng("c on te nt"); feedback.setStr publishtime(rs.getStn ng(" publishtime"); feedback.setStrlastmodifytime(rs.getStri ng("lastmodifytime"); f

36、eedback.setUsername(rs.getStri ng("username"); feedback.setArticleid(rs.getI nt("articleid");/将该评论对象存入集合对象中c.add(feedback);/将该评论对象置为nullfeedback = n ull;/如果结果集不会空,则循环添加该评论对象FeedbackMgr类:封装了对评论表的所有操作,包括添加评论、回复评论、删除评论、 查询某日志的所有评论(按最后修改时间排序)和查询某用户的所有评论(按最后修改时 间排序)等。3.3系统主要功能模块详述3.3.

37、1博客管理员登陆模块当用户需发表新日志或者是对博客进行管理时,就必须先进行登陆验证操作,然后进 入博客信息管理系统后台。用户登陆界面图如图5.3所示。系统后台登录图3.3用户登陆界面图登陆模块的客户端验证代码如下:<scri pt Ian guage="JavaScn pt"><!-fun cti on validateLog in()var strUserName = docume nt. frmLogi n. txtUserName.value; var str Password = docume nt. frmLogi n. txtP assword.value; if (strUserName ="")alert("请您输入用户名!");return false;if (str Password ="")alert("请输入密码!");return false;->v/scri pt>validateLog in() 方法,用来验证是否填写了用户名和密码。一般地,在将用户提交 的数据提交到数据库进行数据库操作之前,需要对

温馨提示

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

评论

0/150

提交评论