网络论坛设计

更新时间:2024-07-01 01:19:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

中国石油大学胜利学院本科毕业设计(论文)

基于B/S架构的网络论坛设计与实现

第一章 论坛系统开发背景及意义

1. 系统开发背景

论坛又名网络论坛BBS,全称为Bulletin Board System(电子公告板)或者Bulletin Board Service(公告板服务)。是Internet上的一种电子信息服务系统。它提供一块公共电子白板,每个用户都可以在上面书写,可发布信息或提出看法。它是一种交互性强,内容丰富而即使的Internet电子信息服务系统。用户在专题论坛上可以获得各种信息服务,发布信息,进行讨论,聊天等等。

论坛的发展也如同网络,雨后春笋般的出现,并迅速的发展壮大。现在的论坛几乎涵盖了我们生活的各个方面,几乎每一个人都可以找到自己感兴趣或者需要了解的专题性论坛,而各类网站,综合性门户网站或者功能性专题网站也都青睐于开设自己的论坛,以促进网友之间的交流,增加互动性和丰富网站的内容。而专题论坛只是其中的一类。

此类论坛是相对于综合类论坛而言,专题类的论坛,能够吸引真正志同道合的人一起来交流探讨,有利于信息的分类整合和搜集,专题性论坛对学术科研教学都起到重要的作用,例如军事类论坛,情感倾诉类论坛,电脑爱好者论坛,动漫论坛,这样的专题性论坛能够在单独的一个领域里进行版块的划分设置。

在本文中,主要介绍使用JSP和Servlet技术来实现论坛建设。通过基于Internet互联网的动态WEB数据库技术,可以解决远程的数据传输与读取,远程的客户终端(Client)可以通过WEB页面提交请求,查询远端的数据服务器上的信息,同时还可以向远端数据服务器的数据库中存储信息,以实现信息的共享,同时利用Internet技术可以降低软件的开发和部署成本,只要在服务器端安装WEB应用就可以使每个客户端都能浏览使用。

1

中国石油大学胜利学院本科毕业设计(论文)

目前,通过专题论坛系统可随时取得各种自己需要最新的信息;也可以通过专题论坛系统来和别人讨论计算机软件、硬件、Internet、多媒体、程序设计以及人文、地理等等各种有趣的话题;还可以利用本系统来发布一些“问题”、“廉价转让”、“招聘人才”及“求职应聘”等启事;更可以召集亲朋好友到聊天室 内高谈阔论??这个精彩的天地就在你我的身旁,只要您拥有一台可以访问互联网的计算机,就可以通过这个交流平台,来享用它的种种服务。

2. 系统开发意义

当今网络技术逐渐渗入社会生活各个层面,以前网站上的专题论坛管理系统要用户登陆以后才能进行相关访问及互动。而随着网络互联技术的进步,现在网站投票只需打开网页就可进行论坛留言。专题论坛对象是很多的,各个层次都可进行论坛访问,大至国家领导,小至一个普通干部,访问和留言从到指定用户进行表格到现在通过网络直接点击相应就可进行。专题论坛管理系统可解决游客访问及留言,致使现在几乎各个网站都有各种类型的专题论坛管理系统,用户可选择自己的看法。同时为分散于五湖四海的人们提供一个共同交流、学习、倾吐心声的平台,实现来自不同地方的用户极强的信息互动性,用户在获得自己所需要的信息的同时也可以广交朋友,拓宽自己的视野和社交面[2]。

通过网友的发帖中,能得到有益的教诲和启发。网友通过发出关于国家,社会的有益的观点,能被有关部门采纳,而不是网友空自评论,自艾自叹,自喜自悲。一些论点能做到各方观点正确公平的显示,具有参考价值。专题论坛应具有知识性,趣味性,公平性,和谐性等优点。专题论坛给天下的网民都提供了交流的平台,为网络的互动性作出了巨大的贡献,通过专题论坛,网民们得以更方便的交流,更便捷的发表自己的观点,而且发布信息都是通过有记录的文字来进行,所以这样也避免了精华内容的流失。通过专题论坛来征得自己想要的信息,有更高的效率和时效性。也最节约成本和资源,在专题论坛的交流过程中,无论喜怒哀乐都是在虚拟的环境中进行,也避免的正面的尴尬和冲突等,在专题论坛中,可以演变成任何角色,变换多种身份,因为网络的特征,使得人民更加依赖于论坛中的交流。

2

中国石油大学胜利学院本科毕业设计(论文)

第二章 系统分析

1. 技术可行性分析

1.1 开发语言综述

本系统是基于面向对象思想的JAVA语言中J2EE平台进行编写,J2EE平台具有以下优点:

(1)简化结构:J2EE平台支持简化的、基于组件开发模型,由于J2EE基于Java编程语言和J2SE平台,它提供了编写一次,随处运行的可移植性,遵循J2EE标准的所有服务器都支持该模型。EJB组件使编写应用程序更为简单。尽管EJB体系结构复杂,但应用程序开发人员一般都必再编写访问系统服务的代码,EJB容器会实现系统级的服务,例如,事务、安全性等。另外,J2EE还支持异构环境。基于J2EE的应用程序不依赖任何特定操作系统、中间件或硬件,因此,设计合理的基于J2EE的程序只需开发一次就可以部署到各种平台,这在典型的异构企业算环境中是十分关键的。J2EE标准还允许客户订购与J2EE兼容的第三方的现成组件,把其部署到异构环境中,节省了由自己制订整个方案所需的费用[1]。

(2)提高开发效率:由于组件技术的使用,可以按照开发人员的技能对应用程序开发进行分工,并行开发,提供整体开发效率。例如:图形设计师创建JSP模板,商业逻辑由该领域的专家完成,JSP页面和EJB由Java工程师完成,应用程序的装配和部署由团队中其他的成员完成,其中许多工作可以同时进行,有助于加速应用程序的开发。

(3)可移植性强:除了Java语言固有的可移植性外,EJB体系结构在Bean和支持该Bean的容器之间提供了一套标准化的应用程序编程接口,这使开发人员能够将Bean从一种操作环境移植到另一种操作环境,而无需重新编写其源代码。

(4)重用性好:由于在EJB模型中,各个软件组件都是严格分离的,因此,可以从现有的软件组件装配出服务器端应用程序,这与从现有的JavaBean可以装配出客户端应用程序一样,使软件能够重用。

(5)易于维护:基于组件的设计简化了应用程序的维护。由于组件可以被独立地更新和替代,通过更新应用程序中特定的组件,新的功能可以被很容易地增加。

3

中国石油大学胜利学院本科毕业设计(论文)

(6)可伸缩性:企业必须要选择一种服务器端平台,以便满足那些在它们系统上进行商业动作大批新客户。基于J2EE平台的应用程序可被部署到各种操作系统上,例如,可被部署到高端UNIX或其他的大型机系统上。J2EE领域的供应商提供了更为广泛的负载平衡策略,能消除系统中的瓶颈,允许多台服务器集成部署,实现可高度伸缩的系统,满足未来商业应用的需要。

(7)被广泛接受:主要的IT供应用商都采纳EJB体系结构,不同供应商的产品只要符合EJB体系结构,就都是可互操作的。

1.2 MySQL数据库的选用

MySQL是现在流行的关系数据库中其中的一种,相比其它的数据库管理系统(DBMS)来说,MySQL具有小巧、功能齐全、查询迅捷等优点,关键的是它是免费的,可以在Internet上免费下载到,并可免费使用,对于一般中小型,甚至大型应用都能够胜任

MySQL具有以下优点:

(1)首先是速度。对于MySQL来说,速度是他们追求的主要目标之一,基于这个原因,MySQL在以前的文档中也曾经说过并不准备支持事务和触发器。但是在最新的文档中,我们看到MySQL 4.0.2-alpha已经开始支持事务,而且在MySQL的TODO中,对触发器、约束这样的注定会降低速度的功能也列入了日程。但是,仍然有理由相信,MySQL将有可能一直保持速度的优势。

(2)MySQL更流行,流行对于一个商业软件来说,也是一个很重要的指标,流行意味着更多的用户,意味着经受了更多的考验,意味着更好的商业支持、意味着更多、更完善的文档资料。

(3)MySQL更适宜在Windows环境下运行。MySQL作为一个本地的Windows应用程序运行(在NT/Win2000/WinXP下,是一个服务), 在Windows运行中,MySQL更加的稳定。

(4)MySQL使用了线程,在不同线程之间的环境转换和访问公用的存储区域显然要比在不同的进程之间要快得多。

(5)MySQL可以适应24/7运行。在绝大多数情况下,你不需要为MySQL运行任何清除程序。

(6)MySQL在权限系统上更为完善。MySQL允许你定义一整套的不同的数据级、表级和列级的权限。对于列级的权限。MySQL还允许你指定基于主机的权限。

4

中国石油大学胜利学院本科毕业设计(论文)

(7)由于MySQL 4.0.2-alpha开始支持事务的概念,因此事务对于MySQL不再仅仅成为劣势。相反,因为MySQL保留无事务的表类型。这就为用户提供了更多的选择。

(8)MySQL的MERGE表提供了一个独特管理多个表的方法。

(9)MySQL的myisampack可以对只读表进行压缩,此后仍然可以直接访问该表中的行。

1.3 S.S.H框架的优点

S.S.H框架是J2EE应用中struts+spring+hibernate三大免费开源框架的结合使用,它可以看成工具,也是中间件。他是用来提高我们的开发效率,提高我们软件产品的可维护性、可扩展性乃至敏捷性的。他们里面有很多优秀的设计理念及模式应用。比如,struts属于MVC框架,关键是要了解MVC的概念及大致原理;而hibernate属于ORM系统,属于持久层的解决方案,同样需要对ORM的概念及原理有一个总体的了解。而spring属于应用程序框架,其核心是IOC容器以及AOP,Spring中还集成了很多适用东西,比如对JDBC的封装、自己的MVC、对动态语言的简洁访问等。

它由以下3个框架构成: (1)Struts框架

Struts是Apache组织的一个开放源码项目。Struts是一个比较好的MVC框架,提供了对开发MVC系统的底层支持,它采用的主要技术是Servlet,JSP和Custom tag library。其基本构成如图2-1所示。

图2-1 Struts框架工作流程

5

中国石油大学胜利学院本科毕业设计(论文)

(2)Spring框架

Spring 的核心是个轻量级(Lightweight)的容器(Container),它是实现IoC(Inversion of Control)容器、非侵入性(No intrusive)的框架,并提供AOP(Aspect-oriented programming)概念的实现方式,提供对持久层(Persistence)、事务(Transaction)的支持,提供MVC Web 框架的实现,并对一些常用的企业服务API(Application Interface)提供一致的模型封装,是一个全方位的应用程序框架(Application framework),除此之外,对于现存的各种框架(Struts、JSF、Hibernate 等),Spring 也提供了与它们相整合的方案。

Spring框架由以下7个部分组成,如图2-2所示。

图2-2 Spring框架构成

(3)Hibernate框架

Hibernate 是一个开放源码的 ORM 持久层框架。作为优秀的持久层框架实现,Hibernate 框架提供了强大、高性能的对象到关系型数据库的持久化服务,开发人员可以使用面向对象的设计进行持久层开发。简单的说,Hibernate 只是一个将持久化类与数据库表相映射的工具,每个持久化类实例均对应于数据库表中的一个数据行而已。用户只需直接使用面向对象的方法操作此持久化类实例,即可完成对数据库表数据的插入、删除、修改、读取等操作。

Hibernate框架结构如图2-3所示。

6

中国石油大学胜利学院本科毕业设计(论文)

图2-3 Hibernate框架

1.4 系统层次设计

系统很据S.S.H框架的特点,决定使用四层结构,这样做的优点是 (1)可以分层开发,访问数据库与业务逻辑实现能够分开。 (2)提高代码的复用。 系统层次如图2-4所示。

图2-4 系统的分层结构

1.5 技术可行性综述

综上所述,这些成熟的框架和优秀的设计思想,为系统建设提供了技术条件。计算机等基础设施的更新换代也紧跟潮流的发展,这就为开发系统提供了坚实基础。

7

中国石油大学胜利学院本科毕业设计(论文)

2. 系统需求分析

2.1 系统开发运行环境

鉴于系统的开发语言和数据库,采用如下的开发环境: 开发环境:Windows 2000NT TomCat6.0 JDK1.5 硬件实现:PentiumⅣ2.4G 1G内存 80G硬盘 开发语言:Java 数 据 库:MySQL 开发工具:MyEclipse5.1

预期成果:一个可扩展的基于MVC模式的 BBS论坛。 2.2 业务描述

对于访问论坛的用户,可分为注册会员和为注册的临时用户,这两种用户有着不同的权限,比如临时用户只能对帖子进行查看,而注册会员除了查看帖子之外,还可以发帖,回复,查找用户,并且可以对自己的注册资料进行修改等等[3]。

系统的用例图如图2-5所示。

图2-5 系统用例图

8

中国石油大学胜利学院本科毕业设计(论文)

2.3 系统功能概述

本系统是一套网上交流的BBS软件,根据用户的需要和实际的管理条件,应由用户功能实现,帖子功能实现和后台管理等几个模块所构成,用户可以对一些数据进行查找和修改,并且注册的用户可以对帖子进行特定的操作,而管理员可以对用户和帖子进行相关的管理。

鉴于本系统的性质,系统应该实现以下功能。 (1)用户的登录 (2)用户的注册 (3)用户的查找 (4)用户资料的修改 (5)帖子的发表 (6)帖子的回复 (7)帖子的查找 (8)用户的管理 (8)帖子的管理 (9)论坛信息的管理 (10)图片的管理 2.4 数据流程

本系统是为了提供给广大用户一个网上交流的平台,所以论坛的流程是以用户为中心进行的。

数据流图是一种能全面地描述信息系统逻辑模型的主要工具,它可以用少数几种符号综合地反映出信息在系统中的流动、处理和存储情况。数据流图具有以下两个特性:

(1)抽象性:表现在它完全舍去了具体的物质,只剩下数据的流动、加工处理与存储。

(2)概括性:表现在它可以把信息中的各种不同业务处理过程联系起来,形成一个整体。

论坛系统的数据流程图如图2-6所示。

9

中国石油大学胜利学院本科毕业设计(论文)

图2-6 数据流程图

10

中国石油大学胜利学院本科毕业设计(论文)

第三章 专题论坛系统设计

1. 数据库设计

在对系统数据库进行设计的过程中,通过对系统功能进行需求分析得到系统的基本信息表,绘制系统业务流程图和系统数据流程图,分析得到数据字典;在概率结构设计阶段通过对需求阶段得到的用户需求抽象得到数据库关系模型的E-R图;在逻辑结构设计阶段得到数据库的关系模式并绘制信息表。

1.1 数据库需求分析

需求分析是设计数据库的起点,需求分析的结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用。

综合以上分析,要实现上面的所有功能模块,数据库共要设计八个表,它们分别是:

(1)用户表(user):用户ID、用户名、密码、性别、Email、QQ、类型、发帖数、头像地址、注册日期、积分。

(2)版主(master):版主ID、板块ID。

(3)管理员表(admin):管理员ID、管理员姓名、管理员密码。

(4)板块表(plate):板块ID、板块名称、帖子数、板块简介、创建日期。 (5)帖子表(posts):帖子ID、帖子标题、帖子内容、发表日期、发表者、所在版块ID、回复数、点击数。

(6)回复内容表(reply):回复ID、回复者、回复帖子ID、回复时间、回复内容。

(7)公告表(notice):公告ID、公告标题、公告内容、发布时间。 (8)留言信息表(message):留言ID、留言标题、留言内容、留言时间。 通过参考网上比较出名的论坛和查询相应的资料,大体了解了论坛系统的基本流程,因此设计了前台和后台两个模块的层次流程图。

前台层次图如图3-1所示。

11

中国石油大学胜利学院本科毕业设计(论文)

图3-1 前台层次图

后台层次图如图3-2所示。

图3-2 后台层次图

12

中国石油大学胜利学院本科毕业设计(论文)

1.2 数据库概念结构设计

概念设计阶段主要是将需求分析阶段得到的用户需求抽象为信息结构(概念模型)的过程,它是整个数据库设计的关键,包括概念模型设计和新系统流程两个阶段。在需求分析阶段所得到的应用需求应该首先抽象为信息世界的结构,才能更好地、更准确地用某一DBMS实现这些需求。

概念数据模型独立于具体的数据处理的细节和数据库管理系统。这次设计仍采用传统的实体联系图作为概念设计的工具。再进行优化后,尽量满足结构清晰、关联简洁、实体个数适中、属性分配合理、没有低级冗余。

系统E-R图如图3-3所示。

图3-3 系统E-R图

1.3数据库逻辑结构设计

对于关系型数据库,数据库的概念结构设计完毕后,要把E-R图描述的概念数据模型转换为等价的关系模式极其约束。逻辑设计的基本工作主要包括如下的3个步骤。

该设计以概念结构设计中的E-R图为主要依据,这几出相关的整体逻辑结构。

13

中国石油大学胜利学院本科毕业设计(论文)

系统数据流设计如图3-4所示。

图3-4 系统数据流设计图

完整性要求用于描述各种信息之间的制约关系,以及关联关系,各个数据项的取值范围以及各个数据项是否可以取值。根据实际需要,采取一定的手段来满足用户的完整性需求。域完整性约束要求属性值必须在域中。实体完整性约束要求主键必须唯一且不能为空。如用户信息表中的用户名设置为主键,并且要求唯一且不能为空。

14

中国石油大学胜利学院本科毕业设计(论文)

1.4 数据库表设计 用户表如表3-1所示:

表3-1 用户信息表(user)

字段名 UserID(主键) UserName UserPassword UserSex Email Regdate Privilege

QQ ImageAddr UserPostsCount Integral

类型(值) Int(10) Varchar(20) Varchar(20) Varchar(4) Varchar(50)

date Int(10) Varchar(10) Varchar(20) Int(255) Int(255)

说明 用户ID 用户名 用户密码 用户性别 用户Email 注册日期 0:普通用户;1:版主

QQ 头像地址 用户发帖数 积分

板块表如表3-2所示:

表3-2 板块信息表(plate)

字段名

PlateID(主键) PlateName PlateDescribe PlateDate PostsCount

类型(值) Int(10) Varchar(20) Varchar(128) date Int(255)

说明 板块ID 板块名字 板块简介 创建日期 帖子条数

15

中国石油大学胜利学院本科毕业设计(论文)

帖子信息表如表3-3所示:

表3-3 帖子信息表(posts)

字段名

postsID(主键) Title Content PostsDate UserName PlateID Click ReplyCount

类型(值) Int(10) Varchar(128) Varchar(10000) datetime Varchar(20) Int(10) Int(255) Int(255)

说明 帖子ID 帖子标题 帖子内容 发表日期 发表者 所在板块ID 点击次数 回复次数

回复信息表如表3-4所示:

表3-4 回复信息表(reply)

字段名

ReplyID(主键) ReplyContent PostsID UserName ReplyTime

类型(值) Int(10) Varchar(5000) Int(10) Varchar(20) Datetime

说明 ID 回复内容 回复帖子ID 回复人 回复时间

版主表如表3-5所示:

表3-5 版主表(master)

字段名 userID PlateID

类型(值) Int(10) Int(10)

说明

版主ID(用户ID) 板块ID

公告信息表如表3-6所示:

16

中国石油大学胜利学院本科毕业设计(论文)

表3-6 公告信息表(notice)

字段名

NoticeID(主键) NoticeContent NoticeTime NoticeTitle

类型(值) Int(10) Varchar(5000) datetime Varchar(128)

说明 公告ID 公告内容 发表日期 公告标题

管理员信息表如表3-7所示:

表3-7 管理员信息表(admin)

字段名 ID(主键) AdminName AdminPassword

类型(值) Int(10) Varchar(20) Varchar(20)

说明 管理员ID 管理员名字 管理员密码

留言信息表如表3-8所示:

表3-8 留言信息表(message)

字段名

MessageID(主键) MessageTitle MessageContent MessageTime

类型(值) Int(10) Varchar(128) Varchar(5000) Datetime

说明 留言ID 留言标题 留言内容 发布时间

2. 系统结构设计

2.1 页面模块化设计

模块化设计的要求不仅是为了提高代码的重用性,更重要的是为了提高代码的可维护性和稳定性。一个模块化程度高、结构清晰的应用程序,在程序维护时的便利性是可想而知的。最初设计方案时,就要规划好哪些模块是可以提出来多次使用,哪些模块虽只使用一次,但提出来之后能使代码更清晰等。

所以把页面中一些常用代码编写为独立的单元,例如页面的头部和尾部、首页各

17

中国石油大学胜利学院本科毕业设计(论文)

个显示区,这样设计新的页面时如果有重复出现的部分,只需要将编写好的模块用INCLUDE语句来组装就可以了。

专题论坛系统功能模块有以下几部分组成: (1)用户注册

新用户注册,填写用户信息,检验用户信息的有效性,并将用户信息持久化。 (2)用户登陆

提供用户凭证,验证用户信息是否合法,根据用户角色授权。 (3)用户管理

管理员由系统初始化分配一个,管理员可以对用户信息进行部分更改,主要包括用户角色调整,版主调整,删除用户等。

(4)论坛版块管理

管理员可以添加、删除、修改论坛版块。 (5)帖子管理

管理员可以对所有帖子进行修改、删除等操作,版主可以对本版块帖子进行修改、删除等操作。

(6)帖子发表

注册用户可以在感兴趣的版块中发表新帖。 (7)帖子回复

用户可以对自己感兴趣的主题发表回复。 (8)帖子浏览

用户可以浏览所有帖子。 (9)意见建议

用户可以与我们联系,并欢迎提出各种意见和建议。 2.2 MVC模式设计(Jsp+Servlet+JavaBean)

MVC(Model View Controller)是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。

视图是用户看到并与之交互的界面。如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。JSP页面处于表现

18

中国石油大学胜利学院本科毕业设计(论文)

层,也就是视力(View即V)的角色。

模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。JavaBean则负责数据的处理,也就是模型(Model即M)的角色。

控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。Servlet用来处理请求的事务,充当控制器(Controller即C)的角色,Servlet负责响应用户对业务逻辑的请求并根据用户的请求行为,决定将哪个JSP页面发送给客户。

初始的请求由Servlet来处理,Servlet调用商业逻辑和数据处理代码,并创建Bean来表示相应的结果(模型)。然后Servlet确定哪个页面适合于表达这些特定的结果,并将请求转发到相应的页面(JSP页面即为视图),由Servlet确定哪个业务逻辑适用,应该用哪个JSP页面相应结果(Servlet就是控制器)。

19

中国石油大学胜利学院本科毕业设计(论文)

第四章 系统的详细设计

网络论坛系统采用JSP编写,利用SQL Server 2005数据库存储信息。网页按实际需求及功能模块编写,按如下顺序详细介绍,包括前台显示设计,发表帖子模块设计,根帖操作设计和后台版面管理模块设计。

1. 代码标识设计

代码设计问题是一个科学管理的问题。设计出一个好的代码方案对于系统的开发工作是一件极为有利的事情。在信息系统中,代码是人和机器的共同语言,是便于进行分类、核对、统计和检索的关键。代码设计是实现管理信息系统的关键,其目的是设计出一套为本系统各部分所共用的、优化的代码系统。代码设计的好坏,不仅直接影响到计算机进行数据处理时是否方便,是否能节省存储空间,是否能提高处理速度、效率和精度,而且还关系到系统能否实际运行起来。因此,在进行此设计之前,要设计出适合新系统的代码体系。代码设计可以使很多机器处理(如某些统计、校对查询等)变得十分方便。

2. 代码设计原则

(1)唯一性:每个代码仅代表唯一的实体或属性。

(2)标准化:尽可能用国际、国家或行业标准,以便交换与维护。

(3)合理性:代码结构要合理,尽量反映编码对象的特征,并与事物分类体系相适应,以以便代码具有分类的标识作用。

(4)易识别性:代码既要便于管理人员使用时的识别与记忆又要便于计算机的识别和分类。

(5)可扩展性与灵活性:代码系统要考虑系统的发展变化。当增加新的实体或属性时,直接利用源代码加以扩充,而不需要变动代码系统。

(6)实用性:尽量使用业务上已经使用的且行之有效的代码,方便使用。 (7)可扩充性:代码设计时要留有余地,在将来系统发展与变化时可直接利用原代码体系加以追加,而不需要变动原代码体系。

3. 系统主要功能流程及模块

20

中国石油大学胜利学院本科毕业设计(论文)

论坛的前台显示主要包括:首页面的论坛类别显示、某版面下根帖的列表显示、我的帖子的列表显示、精华帖子的列表显示、搜索后根帖的列表显示和根帖与回复帖内容的详细显示。

3.1 跟帖模块设计 String

sql2=\

bbsAnswer_sender,

bbsAnswer_sendTime

from

tb_bbsAnswer where bbsAnswer_rootID = ? order by bbsAnswer_sendTime\

回复贴界面如图4-1所示。

图4-1 回复贴显示

根帖与回复帖内容的详细显示,可通过根帖的ID查询数据表获取根帖的信息后封装到ActionForm中,然后存储到session对象中,在返回JSP页面后通过bean标签库中的write标签输出。实现显示根帖的回复帖,同样可通过根帖的ID值查询回复帖数据来获取,最后获取的是一个List集合对象,集合中的灭一个元素封装了回复帖信息的ActionForm,将该List集合对象存储在session对象内,在返回到JSP页面后,通过logic标签库中的iterator标签遍历输出。实现此过程主要代码如下[5]:

21

中国石油大学胜利学院本科毕业设计(论文)

【主题】

href=\pe.bbsRootSingle.bbsSender}\

id=\

name=\

id=\

name=\

property=\

3.2 发表帖子模块设计 发表帖子界面如图4-2所示。

图4-2 用户发表帖子显示

22

中国石油大学胜利学院本科毕业设计(论文)

用户进行发表帖子,首先进行登录成功后,进行输入内容,才可完成发表帖子的功能。发表帖子模块使用了Validator框架验证表单,由开发人员自行设置验证规则。发表帖子时需要用户输入的信息有根帖标题、根帖表情和根帖内容,最后执行SQL语句完成发表帖子的操作,其主要代码有[4]:

property=\

size=\

maxlength=\

styleId=\

<%@ include file=\<%@ include file=\

Validation.xml文件中的验证发表帖子表单的验证主要代码:

name=\

key=\

resource=\

position=\

maxlength

23

中国石油大学胜利学院本科毕业设计(论文)

35

name=\

key=\

resource=\

position=\

maxlength 1000

在BbsAction类中使用方法AddBbs(),获取表单数据,然后向数据表中插入记录的SQL语句,最后执行该语句完成发表帖子的操作。

String sql=\生成SQL语句

Object[]params={boardId,bbsTitle,bbsContent,bbsSender,bbsSendTime,bbsFace,bbsOpTime,bbsIsTop,bbsToTopTime,bbsIsGood,bbsToGoodTime};

OpDB myOp=new OpDB();

int i=myOp.OpUpdate(sql,params);//执行SQL语句 3.3 根帖操作设计

将帖子提前的操作,首先判断当前操作用户的身份,若当前用户是管理员或当前版主或当前帖子的发表者,则实现提前帖子的功能,否则生成无权操作的提示信息。实现该操作的主要代码如下:

/* 如果当前登录的用户是帖子的发表者、帖子所属版面的版主、管理员 */

if(lognerAble.equals(\s(bbsSender)){

if(bbsId!=null&&!bbsId.equals(\

24

中国石油大学胜利学院本科毕业设计(论文)

Object[] params={time,bbsId};

String sql=\生成SQL语句

OpDB myOp=new OpDB();

int i=myOp.OpUpdate(sql,params);//执行SQL语句,实现提前帖子 } else{

System.out.println(\您没有权限提前该帖子!\

messages.add(\生成无权操作提示信息

}

置顶帖子如图4-3所示。

图4-3 置顶帖子显示

将帖子置顶的操作,首先编写一个过滤器,当用户触发超链接时,执行该过滤器,验证用户身份是否为管理员,首先从session中获取当前用户,然后判断其用户身份。

String able=logoner.getUserAble();//longer为在session中存储的登录用户 if(able.equals(\如果身份是管理员 Sresponse);

chain.doFilter(Srequest,

25

中国石油大学胜利学院本科毕业设计(论文)

} else{

//生成无权操作的提示信息

request.setAttribute(\您没有权限进行该操作!\

RequestDispatcher

rd=request.getRequestDispatcher(\

rd.forward(Srequest,Sresponse);//返回无权操作的提示页面 }

实现帖子置顶的操作,首先获取请求中传递的帖子的ID值,然后获取当前时间,最后生成SQL语句,并执行该SQL语句实现置顶帖子的操作。

String bbsId=request.getParameter(\获取帖子的ID值 if(bbsId!=nul&&!bbsId.equals(\Date date=new Date();//获取当前时间 String today=Change.dateTimeChange(date);

String sql=\tb_bbs set bbs_isTop='1', bbs_toTopTime=? where bbs_id=?\生成SQL语句

Object[] params={today,bbsId};

ActionMessages messages=new ActionMessages(); OpDB myOp=new OpDB();

int i=myOp.OpUpdate(sql, params);//执行SQL语句 }

26

中国石油大学胜利学院本科毕业设计(论文)

第五章 系统测试

系统测试是基于系统整体需求说明书的测试,应覆盖系统所有联合的部件。系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不相符合或与之矛盾的地方。

系统测试的对象不仅仅包括需要测试的产品系统的软件,还要包含软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口等。因此,必须将系统中的软件与各种依赖的资源结合起来,在系统实际运行环境下来进行测试。

1. 程序的测试方法

系统测试是保证系统质量与可靠性的最后关口,是对整个系统开发包括系统分析,系统设计和系统实施的最终审查。虽然在系统开发的各个阶段都采取了严格的技术措施,希望能尽快发现问题并改正,但难免会留下差错,如果在正式投入运行前没有发现问题,在工作中暴露出来,将给商城带来很大的损失。因此,对系统进行测试,是系统开发中必不可少的阶段。

系统测试的基本原则:基于以上系统测试的概念,在进行系统测试中应遵循以下原则,测试工作应避免由原开发软件的人员或小组来承担;

(1)所有测试都应该追溯到用户需求。 (2)在测试前必须制定完整的测试计划。 (3)在测试前选择完备的测试用例。 (4)85%的软件错误产生于15%的模块中。

(5)测试应该由小规模测试逐步过渡到大规模测试。 (6)穷举测试是不可能的,软件不可能不存在错误。 (7)精心制定测试计划尽可能多的发现软件中的错误。

软件测试是软件的质量管理,核心技术是软件测试用例,软件测试是有组织性、步骤性、计划性的。测试的形态分构建性测试、系统化测试、专项测试。软件测试的方式分为白盒技术和黑盒技术。白盒测试又称结构性测试,是内部人员进行的测试;黑盒测试测试着重于软件的功能的测试,测试人员必须使用测试用例。黑盒测试的技术分为等价划分、边界值分析、错误推测。

27

中国石油大学胜利学院本科毕业设计(论文)

等价划分原则:若规定了输入个数选择一个有效等价类,两个无效等价类;若输入是一组值,需要对属性进行判别,选择不同的属性输入;若输入是整数选正整数、零、负整数;若是处理时,选空表、满表、典型表。

2. 软件的功能测试

根据上一章的系统详细设计方案,制定了如下测试方案。 2.1 链接测试

由于本论坛的页面并不多,用户身份也不多,所以链接测试采取的是覆盖测试的方法,用所有的用户身份,逐个去测试链接跳转的正确性。

测试用例如表5-1所示:

表5-1测试用例及结果表 用户身份 游客 游客 游客 用户 用户 管理员 游客 游客 用户 用户 游客 用户 用户 管理员

起始页面 首页 首页 首页 首页 首页 首页 主题页面 主题页面 主题页面 主题页面 帖子页面 帖子页面 发表主题页面 管理页面

链接 注册按钮 登陆按钮 搜索按钮 个人信息按钮 搜索按钮 管理论坛按钮 主题 回到首页按钮 主题 发帖按钮 回到首页 回到首页 返回 返回首页

应当跳转页面 注册页面 登陆页面 搜索页面 个人信息页面 搜索页面 管理页面 帖子页面 首页 帖子页面 发表主题页面 首页 首页 主题页面 首页

测试结果 成功 成功 成功 成功 成功 成功 成功 成功 成功 成功 成功 成功 成功 成功

2.2 功能模块测试

本论坛的功能模块较多,多数功能较简单,因此只列举几个重要的功能模块来描述整个测试过程。

28

中国石油大学胜利学院本科毕业设计(论文)

功能模块测试用例如表5-2所示:

表5-2测试用例及结果表

用户身份 游客

测试页面 注册页面

操作步骤 未用的用户名

验证方法 去登陆页面登陆验证

用户

帖子页面

点击发表

回复是否成功显示

版主

帖子页面

删除一条回帖

用户

个人信息修改

点击修改

此操作是否成功 查看自己信息

看见自己的回复

显示“删除成功” 可以看到自己的新信息

回帖成功 回帖功能

完好准确

删除成功 功能完好

准确

修改成功 功能完好

准确

预期结果 可以登陆并跳转至首页

实际结果 结论 注册成功 注册功能

完好准确

2.3 验证功能模块测试

论坛有些地方对用户的行为有限制,比如在发表主题的时候,主题的题目、内容都有字数限制,又如在注册的时候,对用户名长度也有限制,下面进行这些验证纠错功能的测试,列举部分测试用例。

验证功能模块用例如表5-3所示:

表5-3测试用例及结论

用户身份 游客

测试页面 注册页面

操作步骤 被用的用户名

游客

注册页面

18位的用户名

用户

发表主题页面

用户

帖子页面

内容为空的主题 回复“你好楼主”

验证方法 看是否报错 看是否报错 看是否报错 看是否报错

预期结果 用户名不合法 用户名不合法 主题内容不合法 回帖长度不合法

实际结果 用户名已被占用 用户名长

结论 注册功能约束有效 注册功能

度不合法” 约束有效 主题内容无 回帖长度不合法

功能约束有效 回帖功能约束有效

29

中国石油大学胜利学院本科毕业设计(论文)

3. 软件的可用性测试

(1)JDK配置错误

JDK配置错误如图5-1所示。

图5-1 JDK配置错误

解决方法:

JAVA_HOME:C:\\Program Files\\Java\\jdk1.6.0_02

CLASSPATH:.;%JAVA_HOME%\\lib;%JAVA_HOME%\\lib\\tools.jar Path:%JAVA_HOME%\\bin;%JAVA_HOME%\\jre\\bin (2)空指针异常

空指针异常如图5-2所示。

图5-2 空指针异常

30

中国石油大学胜利学院本科毕业设计(论文)

解决方法:

发现连接数据库语句中连接密码错误”wuweotao”,更正为”wuweitao” 修改前:

conn=DriverManager.getConnection(\baseName=ShopSystem\

修改后:

conn=DriverManager.getConnection(\baseName=ShopSystem\

31

中国石油大学胜利学院本科毕业设计(论文)

结 论

本系统是一个最基本的基于Web的论坛管理系统,可扩展性很大,科学的开发过程也极有利于系统的扩充与扩展。系统采用Web体系,即客户端分别连接服务器和数据库服务器连台服务器,系统安全性较好。程序的开发严格按照软件工程的设计思想,从需求分析到总体设计,都是精细而完整的。程序具有高模块化的特点,有较强的的的可读性和可维护性。而且在界面设计中使用了CSS样式技术,使界面更美观。

32

中国石油大学胜利学院本科毕业设计(论文)

参考文献

[1] 郝玉龙.Java EE 编程技术[M].北京:清华大学出版社,2008.5-8. [2] 江开耀.软件工程与开发技术[M].西安:西安电子科大出版社,2009.7-12. [3] 刘志成.UML建模实例教程[M].北京:电子工业出版社,2009.35-40.

[4] 林上杰,林康司.JSP2.0技术手册[M].北京:电子工业出版社,2005.102-118. [5] 张琴,张千帆.JSP动态网页制作基础培训教程[M].北京:人民邮电出版社, 2005.124-126.

[6] 王立.UML与软件工程基础[M].北京:高等教育出版社,2004.55-62. [7] 叶达锋.Eclipse编程技术与实例[M].北京:人民邮电出版社,2006.17-19. [8] 邱哲,马斗.Struts设计开发大全[M].北京:清华大学出版社,2010.32-35. [9] 范斯瓦尼.MySQL 完全手册[M].北京:电子工业出版社,2009.83-85. [10] 沃尔斯.Spring in Action [M].北京:人民邮电出版社,2008.78-83.

33

中国石油大学胜利学院本科毕业设计(论文)

致 谢

在本次毕业设计实践中,首先要感谢指导教师对学生认真负责的态度,为本人提供了非常有益的指导意见。在毕业设计的这段时间,指导老师深厚的理论水平,严谨的教学态度,强烈的责任心和对学生的无私关怀,将使本人受益匪浅,对此表示衷心的感谢。

34

本文来源:https://www.bwwdw.com/article/hdy.html

Top