博客系统的设计与实现.docx

上传人:b****7 文档编号:10757441 上传时间:2023-02-22 格式:DOCX 页数:32 大小:780.83KB
下载 相关 举报
博客系统的设计与实现.docx_第1页
第1页 / 共32页
博客系统的设计与实现.docx_第2页
第2页 / 共32页
博客系统的设计与实现.docx_第3页
第3页 / 共32页
博客系统的设计与实现.docx_第4页
第4页 / 共32页
博客系统的设计与实现.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

博客系统的设计与实现.docx

《博客系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《博客系统的设计与实现.docx(32页珍藏版)》请在冰豆网上搜索。

博客系统的设计与实现.docx

博客系统的设计与实现

 

 

信息工程学院

博客系统的设计与实现

 

组长:

郭亚京

组员:

白园园梅蕊楚静静

付志强史金磊

指导老师:

陆廷荣

完成时期:

2011年12月26日

 

目录

1绪论3

1.1项目开发的背景3

1.2研究的目的和意义3

1.3研究的内容4

1.4目前博客的国内研究现状4

2数据库设计的关键理论和实现方法4

2.1数据库设计的理论4

2.2数据库设计的方法5

3需求分析5

3.1数据需求5

3.2完整性需求8

3.3功能需求9

3.4性能需求10

3.5接口需求10

3.6出错处理需求10

4概念结构设计11

4.1博客系统局部E—R图11

4.2博客系统整体E—R图13

5逻辑结构设计14

5.1关系模式14

5.2外模式14

5.3完整性约束15

6物理结构设计15

6.1访问方法选择15

6.2存储结构选择15

6.3物理结构评价15

7安全性设计16

7.1身份验证模式16

7.2权限管理16

8博客系统的实现与测试16

8.1博客系统的实现与测试16

9结论19

参考文献20

附录21

 

1绪论

1.1项目开发的背景

Blog博客网站致力于为广大博客提供优质博客页面服务的商业网站。

每个博客都希望借助自己的博客页面宣传自己,而博客数量越多,网站的点击率越高就越能够吸引广大的企业客户选择该商业网站作为媒介,将自己的产品展现给客户。

可以说,对这些博客网站而言:

为博客提供良好的服务就意味着为网站带来更多的商业客户。

因此,在具体设计实现该博客网站时,主要考虑了主流博客网站的几个主要功能。

1.博客的注册、登录验证功能

2.普通用户浏览文章和发表评论的管理

3.文章详细内容及相关评论显示

4.博客个人文章管理维护功能

5.博客个人文章分类管理维护功能

6.博客个人友情链接维护功能

7.博客个人基本信息管理维护功能

8.个人上传图片和相册管理的功能

9.管理员对博主的管理

10.管理员对个人信息的管理

11.管理员对网站在线人数的统计

1.2研究的目的和意义

博客(Blog)作为Web2.0的典型代表,已风靡网络世界。

那么,博客究竟是什么?

简单一点的Blog记载了日常发生的事情和自己的兴趣爱好,把自己的思想和知识与他人分享、交流,同时又通过个人博客结识更多志同道合的朋友,使大家在网上可以进行各种信息的交流,博客系统为大家提供了学习交流、工作交流、情感交流的平台,使人们的工作更加简单快捷,使人们的生活更加丰富多彩。

1.3研究的内容

按照规范设计的方法,考虑数据库及其应用系统开发全过程,将研究内容分为以下几个方面:

(1)需求分析

(2)概念结构设计

(3)逻辑结构设计

(4)物理结构设计

(5)数据库实施

(6)数据库的运行与维护

1.4目前博客的国内研究现状

2005年9月8日新浪开始为亿万网民提供博客产品BlogBeta2.0服务,由此中国博客门户网站拉开帷幕。

9月26日,新浪网发起了“中国首届博客大赛”。

与此同时,另一门户网站搜狐也宣布推出酝酿已久的博客服务,并随即启动了它自己的“首届全球中文博客大奖赛”。

由此中国博客行业得以迅猛发展,从2008年8月中国博客网站Alexa平均排名走势图可以看出,中国博客网站逐渐发展壮大,并日益被世界所关注。

由此可见,博客的发展是乐观的。

2数据库设计的关键理论和实现方法

2.1数据库设计的理论

数据库设计是指对于一个给定的应用环境,构造((设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求。

数据库设计的目标是为用户和各种应用系统提供一个信息基础设施和高效率的运行环境。

高效率的运行环境有:

数据库数据的存取效率、数据库存储空间的利用率、数据库系统运行管理的效率等都是高的。

数据库设计的特点:

(1)三分技术、七分管理、十二分基础设计

(2)结构设计和行为涉及相结合

2.2数据库设计的方法

数据库设计的方法有三种:

(1)新奥尔良方法

(2)基于E—R模型的数据库设计方法

(3)第三范式的设计方法

3需求分析

3.1数据需求

(1)数据表的设计

1.用户信息表

表1

UserInfo表

字段名

数据类型

字段含义

是否为空

注释

username

varchar(20)

用户名

主键

password

varchar(20)

用户密码

sex

varchar(8)

性别

email

varchar(20)

邮箱

favorite

varchar(50)

爱好

image

varchar(50)

头像

blogatitle

varchar(50)

博客标题

bulletin

varchar(100)

公告

2.文章信息表

表2

article表

字段名

数据类型

字段含义

是否为空

注释

aid

int(4)

文章编号

主键

atitle

varchar(80)

文章标题

cid

int(4)

类别编号

外键

adate

varchar(20)

发表日期

zhaiyao

varchar(300)

文章摘要

acontent

ntext(16)

文章内容

username

varchar(20)

用户名

外键

viewcount

bigint(8)

浏览次数

3.分类信息表

表3

category表

字段名

数据类型

字段含义

是否为空

注释

cid

int(4)

类别编号

主键

cname

varchar(20)

类别名称

username

varchar(20)

用户名

外键

4.评论信息表

表4

comment表

字段名

数据类型

字段含义

是否为空

注释

id

int(4)

评论编号

主键

author

varchar(20)

评论人名字

主键

ccontent

varchar(50)

评论内容

createdate

varchar(50)

评论日期

aid

int(4)

文章编号

外键

backcontent

varchar(50)

回复内容

backdate

varcgar(50)

回复日期

5.管理员信息表

表5

admin表

字段名

数据类型

字段含义

是否为空

注释

id

int(4)

管理员编号

主键

adminname

varchar(20)

管理员名称

adminpassword

varchar(20)

管理员密码

blogbulletin

varchar(80)

网站公告

6.特殊文章信息表

表6

spArticle表

字段名

数据类型

字段含义

是否为空

注释

spID

varchar(20)

特殊文章编号

主键

spcname

varchar(20)

特殊分类名称

aid

int(4)

文章ID

外键

title

varchar(20)

文章标题

7.相片信息表

表7

Photo表

字段名

数据类型

字段含义

是否为空

注释

id

int(4)

相片编号

主键

photoname

varchar(20)

相片名称

主键

username

varchar(8)

用户姓名

(2)博客系统数据项的描述

1.博主描述

数据项名:

博主

描述:

博客的注册用户,对博客具有最高管理权限

别名:

定义:

用户id+用户名+密码+性别+邮箱+头像+权限

数据量:

1

峰值:

其他说明:

凡是普通用户已完成注册的,都是博主

2.普通用户描述

数据项名:

普通用户

描述:

博客的非注册用户,对博内容有一定浏览、评论权限

别名:

定义:

用户id+用户名+密码+性别+邮箱+头像+权限

数据量:

10000

峰值:

随时

其他说明:

普通用户不具发表博文、上传照片等权利

3.博客管理员描述

数据项名:

博客管理员

描述:

实现对注册博主的管理和特殊文章的管理

别名:

定义:

用户名+密码

数据量:

1

峰值:

其他说明:

博客管理员,其账号是系统初始化的时候创建的

4.博文描述

数据项名:

博文

描述:

发表在博客中的博文

别名:

定义:

id+标题+摘要+内容+浏览数+回复数+发表时间

数据量:

10000

峰值:

随时

其他说明:

每篇博文不能超过1000个字符

5.评论描述

数据项名:

评论

描述:

博主或者普通用户对博文的评论

别名:

定义:

评论id+发表评论用户id+评论对象id+评论内容+评论时间

数据量:

10000

峰值:

随时

其他说明:

6.文章类别描述

数据项名:

文章类别

描述:

发表不同的博文可以属于不同的类别

别名:

定义:

类别id+发表评论用户id+类别名称

数据量:

10000

峰值:

随时

其他说明:

3.2完整性需求

由于系统的数据是共享的,要解决数据一致性问题,要有一定的人员维护数据,在数据录入处控制数据的去向,并且要求对数据库的数据完整性进行严格的约束。

对于输入的数据,要为其定义完整性规则,如果不能符合完整性约束,系统应该拒绝该数据。

3.3功能需求

本系统分为前台设计和后台设计,其中前台设计针对的用户身份是普通用户和博主,后台设计针对的用户身份是管理员。

(1)前台设计

前台设计主要实现的功能有:

对普通用户来说,主要有注册、登录、浏览文章和发表评论;对博主来说,主要有管理博文、管理评论、管理分类、相册管理、用户管理等功能。

前台功能模块图如图所示。

(2)后台设计

后台设计实现的功能主要功能有:

对博主的管理,网站公告的管理,和在线人数的统计。

后台功能模块图如图所示。

3.4性能需求

(1)精度

在精度需求上,根据使用需要,控制各项输入、输出数据的长度。

确保保证用户正常使用的同时节省系统空间。

(2)时间特性要求

用html语言写博客首页,做到响应时间在3秒内。

对附件上传做好文件大小限制,保证满足一般需求并且传输通畅,同时节约空间。

(3)灵活性

要求系统可以在各种主流浏览器上正常运行,对不同分辨率的显示器具有良好适应性。

针对用户的新需求可以做到系统灵活修改。

3.5接口需求

用户接口:

本系统采用图形用户接口,以鼠标和键盘为用户接口,方便用户对博客系统的有效操作。

更好地在博客里进行交流。

内部接口:

内部是页面和数据库连接,对应的页面输入框和显示框的内容在数据库得到显示。

3.6出错处理需求

列出可能的软件、硬件故障以及对各项性能而言所产生的后果和对故障处理的要求。

(1)软件故障:

系统异常,IIS不稳定,此系微软公司提供的产品,无法对其进行改进。

(2)硬件故障:

网络不应负载超荷:

大部分时间内应保证在线用户数量小于设定极限数量,通过编码或服务器功能实现。

(3)在系统中,数据的录入往往是大量的,因此系统要有一定的处理能力,以保证迅速的处理数据。

(4)数据的一致性与完整性

由于系统的数据是共享的,要解决数据一致性问题,要有一定的人员维护数据,在数据录入处控制数据的去向,并且要求对数据库的数据完整性进行严格的约束。

对于输入的数据,要为其定义完整性规则,如果不能符合完整性约束,系统应该拒绝该数据。

(5)数据的共享与独立性

整个博客系统的数据是共享的。

然而,从系统开发的角度上看,共享会给设计和调试带来困难。

因此,应该提供灵活的配置,使各个分系统能够独立运行,而通过人工干预的手段进行系统数据的交换。

这样,也能提供系统的强壮性。

4概念结构设计

4.1博客系统局部E—R图

根据以上各节对系统的需求分析和功能模块的分析,规划出本系统使用的数据库的关键实体是用户实体、文章实体、评论实体、分类实体。

下面将一一列出各个关键实体的E-R图。

(1)用户实体

在博客系统中,用户实体是管理员和普通用户。

用户实体主要包括用户名字、用户密码、邮箱等属性。

用户实体的E-R图如11所示。

管理员主要包括管理员名、管理员密码、管理员ID等属性。

管理员实体的E-R图如图12所示。

(2)文章实体

在博客系统中,用户文章实体是指博主发表的文章中所包含的属性。

文章实体主要包括文章的ID、文章标题、类别ID、发布日期、摘要、内容、作者、浏览次数。

文章实体的E-R图如所示。

(3)评论实体

在博客系统中,评论实体是指系统中的普通用户者和已经注册过的博主对博主发表过的文章进行评论。

评论实体主要包括评论ID、评论人的名字、评论内容、评论时间、文章ID。

评论实体的E-R图如所示。

(4)类别实体

在博客系统中,类别实体是对文章的分类。

类别实体主要包括类别ID、类别名字、博主名字。

类别实体的E-R图如所示。

4.2博客系统整体E—R图

系统总体E-R图说明了实体与实体之间的关系,实体用矩形表示,属性用椭圆表示,联系用菱形表示,如图所示。

5逻辑结构设计

5.1关系模式

根据概念结构设计的E-R图,将E—R图转换为关系模式,一个实体型转换成一个关系模式。

实体的属性就是关系的属性,实体的码就是关系的码。

根据转换原则,用横线将关系的码标出,如下:

(1)用户(ID,用户名,密码,性别,邮箱,爱好,头像,博客主题,公告)

(2)博文(文章编号,文章标题,类别编号,发表日期,文章摘要,文章内容,用户名,浏览次数)

(3)分类(类别编号,类别名称,用户名)

(4)评论(评论编号,评论人名字,评论内容,评论日期,文章编号,回复内容,回复日期)

(5)管理员(管理员编号,管理员名称,密码,网站公告)

(6)特殊文章分类(特殊文章编号,特殊分类名称,文章ID,文章标题)

(7)相片(相片ID,相片名称,发送相片的人的名称)

5.2外模式

外模式对应于视图:

5.3完整性约束

为保证实体完整性,也就是第2范式,表中主键或唯一键是一定要有的,否则就可能出现重复纪录。

当然外键也是不可缺少的。

通常矛盾在于:

参照完整性及实现参照完整性的性能问题。

(1)用外键实现参照完整性,保证数据的一致性;

(2)海量数据的情况下,参照完整性检查的成本很大;

6物理结构设计

6.1访问方法选择

访问方法有三种:

(1)索引存取方法

(2)聚簇存取方法

(3)HASH存取方法

6.2存储结构选择

确定数据的存放位置和存储结构要综合考虑存取时间、存储空间利用率和维护代价三个方面的因素。

这3个方面常常识相互矛盾的,因此需要权衡。

本系统中数据库是存放在F盘的数据库文件夹下,系统的源代码是存放在E盘的工程目录下。

6.3物理结构评价

(1)时间效率:

可以实现。

(2)空间效率:

可以实现。

(3)维护代价:

可以实现。

7安全性设计

7.1身份验证模式

使用用户名来标明身份,并输入用户密码。

数据库内部记录着所有合法用户的用户名,以登陆页面为入口,鉴别此用户是否为合法用户,并核实用户密码的匹配,若是,则可以进入到下一步的操作。

7.2权限管理

SQLServer提供了非常灵活的授权机制,拥有对数据库中所有对象的所有权限,并可以根据不同的权限角色授予不同的用户。

用户权限:

没有用户名的用户可以通过注册获得。

用户登陆后,能进行文章的查看和发表评论的功能。

管理权限:

管理者可以进行对文章和普通用户的管理。

8博客系统的实现与测试

8.1博客系统的实现与测试

1.管理员对用户管理的界面

2.普通用户的主界面

3.博主的主界面

4.发表文章的界面

5.分类的管理界面

6.相册管理的主界面

9结论

至此,博客项目系统的设计与开发已经顺利完成。

在几天的试运行的过程中,在连接数据库时一度出现过错误,经过调试改正后错误点全部清除,此系统可以按着设计思想和需求功能正常运行。

通过开发博客项目系统,不仅掌握了对数据库需求分析有了了解,而且懂得了对概念结构和逻辑结构的设计,而且熟练掌握了集成开发环境MYEclipse8.5的使用,还学会了Tomcat5.0服务器、SQLServer数据库及相关组件的应用,培养和锻炼了独立从事开发项目系统的能力,而且通过对博客项目系统管理的操作,加深了对管理信息系统的原理、技术、方法、工具、步骤和有关理论知识的理解和认识,为今后在工作岗位上更好的利用jsp技术开发网站打下了良好的基础。

但是还有更多更复杂的功能要求。

该博客系统在界面美化、权限控制、程序优化及自定义扩展功能方面还需进一步完善。

由于开发周期短等局限性,不能将本套系统尽善尽美。

希望在以后能够博客做更深一步的调研,在原有系统的基础上不断添加新功能

参考文献

1.徐进明、但正刚,JSP网站开发技术,清华大学出版社,2007年6月

2.贾素玲、王强,JSP应用开发技术,清华大学出版社,2009年4月

3.李宁,JavaWeb开发技术大全,清华大学出版社,2010年8月

4.吕凤顺,SQLServer数据库基础与实训教程,清华大学出版社,2009年4月

5.江文,软件建模技术,北京邮电大学出版社,2009年8月

6.邓振杰、何丽娟,网页制作技术,人民邮电出版社,2009年8月

7.张伟,JavaSE实践教程,电子工业出版社,2008年4月

8.张伟,Java语言程序设计,电子工业出版社,2008年4月

附录

1.连接数据库的代码实现

DBUtil类:

privatestaticConnectionconn=null;//能够返回数据库的连接

publicstaticConnectiongetConnection(){

try{Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

//获取数据库的JDBC驱动conn=DriverManager.getConnection("jdbc:

microsoft:

sqlserver:

//localhost:

1433;DatabaseName=BlogDB","sa","");

}catch(ClassNotFoundExceptione){

e.printStackTrace();

}catch(SQLExceptione){

e.printStackTrace();}

returnconn;}

//关闭连接的静态方法

publicstaticvoidclose(Connectioncon){

try{

if(con!

=null){

con.close();}}

catch(SQLExceptione){

e.printStackTrace();

}}

2.JavaBean的代码实现

由于本系统中涉及的JavaBean比较多,所以只以Category为例,说明JavaBean的代码实现。

packagecn.kfu.entity;

publicclassCategory{

privateStringusername;//博主的名字

privateintcid;//类别的ID

privateStringcname;//类别的名称

publicintgetCid(){

returncid;}

publicvoidsetCid(intcid){

this.cid=cid;}

publicStringgetCname(){

returncname;}

publicvoidsetCname(Stringcname){

ame=cname;}

publicStringgetUsername(){

returnusername;}

publicvoidsetUsername(Stringusername){

this.username=username;}}

3.Dao层的实现

Dao层是用于前台页面与后台数据库的交流,主要是用于查询数据用的,通常的方法有增,删,改,查。

由于代码比较多,所以在此也以Category为例,说明Dao层的实现。

由于篇幅的限制,只写了部分代码。

publicclassCategoryDao{

privateConnectionconn;

privateResultSetrs;

privatePreparedStatementpstm;

publicListfindAll(){

Listl=newLinkedList();

conn=DBUtil.getConnection();

Stringsql="select*fromcategory";

try{

pstm=conn.prepareStatement(sql);

rs=pstm.executeQuery();

while(rs.next()){

Categoryc=newCategory();

c.setCid(rs.getInt("cid"));

c.setCname(rs.getString("cname"));

c.setUsername(rs.getString("username"));

l.add(c);}

}catch(SQLExceptione){

e.printStackTrace();}

returnl;}

4.实现管理员对用户冻结的代码

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

response.setContentType("text

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1