李继光082055214-毕业论文三稿

更新时间:2024-05-28 18:42:01 阅读量: 综合文库 文档下载

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

毕业设计

跑步社区-跑步论坛 的设计与实现

李继光 082055214 学生姓名: 学号: 计算机工程系

系 部: 网络工程 专 业: 纪良雄 指导教师:

2012年 06月11日

跑步社区-跑步论坛的设计与实现

摘 要

本系统是基于window XP下开发的B/S结构的iRun跑步社区中的跑步论坛。以Genuitec公司开发的MyEclipse8.5作为主要的开发工具,构建三层架构,使用jsp+html+css技术开发前台,struts2+hibernate框架组合构建后台的业务逻辑。以Oracle 10g作为数据库的开发工具。

在分析当前各大论坛的前提下,概括描述了系统的开发背景、开发工具和具体设计,主要实现对主题帖、回复帖的管理。论坛的目标对象是网络上爱好跑步的网民;管理者是各大版面的管理员。根据这些论坛业务信息,本系统的主要功能包括:实现论坛会员信息和帖子的管理和维护,如会员信息管理,会员个人空间管理,主题帖查询,回复主题帖等功能。

关键字:BBS论坛,struts2,hibernate,oracle

Title:The design and implementation of iRun Forum in iRun

Community

Abstract

With Microsoft Visual Studio 2008 and SQL Server 2005 as major tools, the college library information management system built a three-layer construction based on Windows 7 and B / S structure, using ASP·Net as the front-end developing technology. The application of UML is used throughout in the procession of designing and development, especially in diagrams as use-case diagrams, class diagrams, activity diagrams, timing sequence chart.

On the analysis of the current major forum visitors, briefly described the system development background, development tools and the specific design, the main achievement of the topics, reply brief management. The target object of forum is the people like running; management is the major layout manager. According to the forum, business information, this system main function includes: the forum membership information and post management and maintenance, such as membership information management, personal space management, query topics, reply to topics and upload and other functions.

Key word: BBS forum,struts2,hibernate,oracle

太原工业学院毕业论文

目 录

1 概述 .................................................................................................................................... 3 1.1项目背景 .......................................................................................................................... 3 1.2系统目标 .......................................................................................................................... 4 1.3系统开发环境 .................................................................................................................. 5 1.3.1系统开发工具 ............................................................................................................... 5 1.3.2系统开发语言 ............................................................................................................... 5 1.3.3数据库服务器 ............................................................................................................... 6 1.3.4系统架构 ....................................................................................................................... 6 2 可行性分析 ........................................................................................................................ 8 2.1可行性分析 ..................................................................................................................... 8 2.1.1技术可行性 ................................................................................................................. 8 2.1.2经济可行性 ................................................................................................................. 8 2.1.3操作可行性 ................................................................................................................. 8 2.1.4法律可行性 ................................................................................................................. 9 3 需求分析 .......................................................................................................................... 10 3.1用户需求分析 ............................................................................................................... 10 3.2 功能需求分析 ............................................................................................................... 11 3.3数据字典 ........................................................................................................................ 11 4 系统总体设计 .................................................................................................................. 18 4.1 系统功能设计 ............................................................................................................... 18 4.1.1 总体功能设计 ............................................................................................................ 19 4.1.2系统功能模块简介 ..................................................................................................... 20 4.2数据表实体 .................................................................................................................... 21 5 系统详细设计 .................................................................................................................. 27 5.1 STRUTS2、HIBERNATE在WEB项目中的作用 ............................................................... 27

I

太原工业学院毕业论文

5.1.1数据库连接 ................................................................................................................. 27 5.2系统模块功能概述 ........................................................................................................ 30 5.2.1登录验证 ..................................................................................................................... 30 5.2.2 用户个人空间管理 .................................................................................................... 31 5.2.2.1 查看个人空间 ....................................................................................................... 31 5.2.3论坛管理 ..................................................................................................................... 32 5.2.3.1论坛首页显示 .......................................................................................................... 32 5.2.3.2主题列表显示 .......................................................................................................... 33 5.2.3.3发表新主题 .............................................................................................................. 34 5.2.3.4回复主题 .................................................................................................................. 36 5.2.3.5实时回复通知 .......................................................................................................... 36 5.2.3.6加好友 ...................................................................................................................... 37 5.2.3.7帖子搜索 .................................................................................................................. 38 5.2.4 约跑地带 .................................................................................................................... 39 5.2.4.1首页显示 .................................................................................................................. 39 5.2.4.2 约跑详细信息页的显示 ......................................................................................... 39 5.2.4.3 参加约跑 ................................................................................................................. 40 6 系统测试 .......................................................................................................................... 41 6.1 系统测试的基本原则 ................................................................................................... 41 6.2 软件测试方法 ............................................................................................................... 41 6.3 系统的单元测试 ........................................................................................................... 41 6.4 系统测试结论 ............................................................................................................... 43 6.4.1 软件能力 .................................................................................................................... 43 6.4.2 软件的缺陷和限制 .................................................................................................... 43 6.5 系统维护 ....................................................................................................................... 43 结 论 .................................................................................................................................. 44 参考文献 .............................................................................................................................. 45 致 谢 ................................................................................................................................ 46

II

太原工业学院毕业论文

1 概述

1.1项目背景

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

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

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

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

目前,通过专题论坛系统可随时取得各种自己需要最新的信息;也可以通过专题论坛系统来和别人讨论计算机软件、硬件、Internet、多媒体、程序设计以及人文、地理等等各种有趣的话题;本专题论坛主要针对爱好跑步的朋友,这个精彩的天地就在你我的身旁,只要您拥有一台可以访问互联网的计算机,就可以通过这个交流平台,来分享我们对于跑步的点滴。

3

太原工业学院毕业论文

1.2系统目标

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

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

4

太原工业学院毕业论文

1.3系统开发环境 1.3.1系统开发工具

(1)MyEclipse8.5简介

MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernate。

MyEclipse的特征可以被分为7类:JavaEE模型,Web开发工具,EJB开发工具,应用程序服务器的连接器,JavaEE项目部署服务,数据库服务,MyEclipse整合帮助。

对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。

简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的JavaEE集成开发环境,支持代码编写、配置、测试以及除错,而且MyEclipse8.5支持struts2,因此,我选择MyEclipse8.5作为毕业设计的开发工具

1.3.2系统开发语言

(1)Java语言简介

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。

与传统程序不同,Sun 公司在推出 Java 之际就将其作为一种开放的技术。全球数以万计的 Java 开发公司被要求所设计的 Java 软件必须相互兼容。“Java 语言

5

太原工业学院毕业论文

靠群体的力量而非公司的力量”是 Sun 公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。 (2)JSP简介

JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。

JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。

1.3.3数据库服务器

(1) Oracle 10g 简介

SQL(Structured Query Language),结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。绝大多数流行的关系型数据库管理系统都采用了SQL语言标准。虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select, Insert, Update, Delete, Create,以及Drop在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作[12]。

1.3.4系统架构

(1)B/S模式简介

B/S(Browser/Server,浏览器/服务器)模式又称B/S结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier结构。B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScript?)和ActiveX技术,用通用浏

6

太原工业学院毕业论文

览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。 (2)三层构架

三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。

① 表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。

② 业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。

③ 数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等[16]。

7

太原工业学院毕业论文

2 可行性分析

2.1可行性分析 2.1.1技术可行性

技术上的可行性分析主要分析技术条件能否顺利完成开发工作,硬、软件能否满足开发者的需要等。软件方面,本系统采用Genuitec开发的MyEclipse8.5编程工具开发前台,主要语言是Java和JSP。构架上使用B/S结构,将客户端建立在浏览器上,能够不依靠固定的客户端进行使用。在数据库方面使用的Oracle 10g,它强大的数据处理能力能更好的应对将来用户访问量的指数倍增长。硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。

在四年中,我们学习了大量关于Java和JSP的知识,数据库方面,对于Oracle 10g基本的应用已经比较熟悉,故能够成功的开发出本系统。

2.1.2经济可行性

本跑步论坛能够为各位爱好跑步的网民提供各种有效的资讯,网民们能够在论坛中自由地交流跑步心得,了解到如何跑步锻炼才是最有益身心,而且无形中增加了业余跑步者的锻炼兴趣,因此能吸引大量的网民来访问本论坛,并能在论坛上停留;IT网络行业,访问量和在线时长就意味着金钱。论坛可以通过投放一些卖体育用品的广告来从广告主那里获得推广收入。

由于开发此论坛所需的硬件(计算机及相关硬件)和软件环境在市场上都容易购买到,所需技术人员为数不多,如果此系统投入使用,将会吸引大量热爱跑步的网民,经济效益高,因此开发此类系统经济可行。

现在,计算机的价格已经十分低廉,性能却有了长足的进步。 通过几个方面的分析,可以得出本系统在经济上是可行的结论。

2.1.3操作可行性

操作可行性主要是指本系统开发完成后,管理人员可以在软件开发人员的简单指导下,利用B/S结构来进行操作,通过网络浏览器方式。本论坛界面简约,能够方便

8

太原工业学院毕业论文

地发表主题、回帖、查看帖子、添加管理员,所以操作容易,只要有一定计算机操作知识都是能够操作,只要按照一定的操作步骤都可以使用本系统。

2.1.4法律可行性

整个系统由于是自行独立开发,自行使用,所以系统本身不存在法律上的版权争议。在软件方面,使用正版软件,在开发过程中严格按照相关法律规定,没有发生任何违法事件,所以在法律上该系统既安全又可行。

9

太原工业学院毕业论文

3 需求分析

需求分析是系统开发必要环节,也是重中之重。作为该过程的结果,需求规格说明书是对系统的功能和行为完整的描述。系统设计将来自于需求分析的抽象规格说明转变为面向真实世界的设计。一旦构建完成,该系统就会投入使用,同时会不可避免地产生更多的新需求。同时,需求过程与分析活动之间有相当程度的重叠,分析建模对于设定工作的范围和其他一些事来说是必要的,所以我们利用分析模型来描述需求过程,随着开发工作的继续,分析活动在工作中占的比例将变得越来越大,直到所有需求都已知。

3.1用户需求分析

跑步论坛的设计目的是让网络上热爱跑步的网民能够通过网络自由地交流跑步锻炼的心得,以此来加强网民们的跑步锻炼兴趣。系统的用户有4种类型,分别是普通会员,游客,斑竹,超级管理员。斑竹登录后可以对他所任职的版面进行帖子的管理,其主要操作是删除一些违反论坛规定的帖子;普通会员在登录后能够发表新主题,回复主题,查看其他会员的个人空间。游客登录后能够进行有浏览帖子的权限。超级管理员登录后除了拥有除了斑竹的全部功能外还有添加、删除版面、管理斑竹的功能。

根据以上的用户操作需求,将系统划分如下4大功能,并对其模块的划分和功能进行描述:

游客:查看帖子

注册会员:可以发表自己的帖子、回复帖子、修改个人信息等。

管理员兼版主:具有最大权限,可以执行任何操作。比如增加、修改、删除板块;删除会员;管理版主等功能。 ? 游客

? 查看帖子 ? 搜索帖子 ? 注册会员

? 查看帖子 ? 搜索帖子 ? 发表新主题

10

太原工业学院毕业论文

? 发表回复

? 查看其他会员的个人空间 ? 参与其他会员发布的约跑 ? 超级管理员

? 对帖子进行管理 ? 添加、删除版面 ? 删除会员、对会员禁言

3.2 功能需求分析

本系统根据论坛系统的需要,以实现交流信息的一个平台。本系统的功能要求主要包括:

1.身份的安全验证。主要完成系统登录用户的验证,对于非法用户将禁止登录,不同身份的用户被赋予不同的权限。

2.游客:浏览帖子,留言。

3.注册会员:发表、修改帖子;搜索帖子;回复帖子,删除回复;查看、修改个人信息

5.超级管理员:删除用户;搜索帖子;添加板块、删除板块;

3.3数据字典

11

太原工业学院毕业论文

版面信息表:forum_(如表3-2所示)

字段名 Id Name description forumOrder topicCount articleCount createTime lastTopicId 类型 长度 是否主键 PK 否 否 否 否 否 否 否 是否为空 NOT NULL NOTNULL NULL NOT NULL Default 0 Default 0 NOTNULL NULL 描述 流水号 版面名称 版面描述 版面次序 主题帖数量 文章数量 发表时间 最后发表的主题Id number Varchar2 Varchar2 number number number Varchar2 number 38 80 200 2 10 10 20 38 lastPostTime Varchar2

20 否 NULL 最后编辑时间

表3-2 版面信息表

主题帖信息表:topic_ (如表3-3所示) 字段名 Id forumName Title Content userId forumId postTime lastPostTime 类型 长度 是否主键 PK 否 否 否 否 否 否 否 是否为空 NOT NULL NOTNULL NOTNULL NOTNULL NOTNULL NOTNULL NOTNULL NULL 描述 流水号 版面名称 标题 内容 用户Id 版面Id 发表时间 最后发表时间 number varchar varchar clob number number Varchar2 Varchar2 38 80 80 38 38 20 20 viewCount number 10 12

否 NOTNULL 浏览次数

太原工业学院毕业论文

replyCount Nextfloor

number number 10 5 否 否 NOTNULL NOTNULL 回复数量 下一楼层号

表3-3 主题帖信息表

回复帖信息表:reply_ (如表3-4所示) 字段名 Id Title content UserId topicId postTime floor isRead

表3-4回复帖信息表

类型 number Varchar2 Clob Number number Varchar2 number number 长度 38 80 38 38 20 5 1 是否主键 PK 否 否 否 否 否 否 否 是否为空 NOT NULL NOT NULL NULL NOTNULL NOTNULL Default 0 描述 流水号 标题 回复帖内容 用户Id 主题Id 发表日期 楼层 0未读 1已读 附件信息表:attachment_ (如表3-5所示) 字段名 Id path fileName fileSize CreateTime 类型 number Varchar2 Varchar2 number Varchar2 长度 38 50 40 10 20 10 38 13

是否主键 PK 否 否 否 否 否 否 是否为空 NOT NULL NULL NULL NULL NULL NULL NULL 描述 流水号 存储路径 文件名 文件大小 创建时间 下载次数 downloadCount number topicId number 主题Id 太原工业学院毕业论文

表3-5附件信息表

会员信息表:memberinfo_ (如表3-6所示) 字段名 id Nickname password Gender pwdQuestion pwdAnswer Email province Age Address phone Headphoto Point topicCount Article Registerdate 类型 Varchar2 Varchar2 Varchar2 Varchar2 Varchar2 Varchar2 Varchar2 Varchar2 Varchar2 Varchar2 Varchar2 Varchar2 number Number number Varchar2 长度 38 20 50 1 100 100 100 10 3 100 50 50 5 5 5 20 20 20 1 38 1 是否主键 PK PK 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 是否为空 NOTNULL NOTNULL NULL NOTNULL NOTNULL NOTNULL NOTNULL NOTNULL NOTNULL NOTNULL NOTNULL NULL NOTNULL NOTNULL NOTNULL NOTNULL NULL NULL Default 0 Default 0 描述 流水号 会员昵称 密码 性别 密码提示问题 密码问题答案 电子邮件 所在城市 年龄 详细地址 联系电话 头像路径 积分 主题数量 文章数量 注册时间 最后访问时间 最后访问IP 0 下线 1在线 等级Id 0普通1管理员 LastestVisitTime Varchar2 latestVisitIP isOnline GradeId isAdmin Varchar2 number number number

表3-6 会员信息表

14

太原工业学院毕业论文

等级信息表:grade_(如表3-7所示) 字段名 Id Minpoint Maxpoint Gradename Iconpath

表3-7等级信息表

类型 number number number Varchar2 Varchar2 长度 38 5 5 20 50 是否主键 PK 否 否 否 否 是否为空 NOT NULL NOTNULL NOTNULL NOTNULL NOTNULL 描述 流水号 积分下限 积分上限 等级名 等级图标 积分动作信息表:pointaction_(如表3-8所示) 字段名 Id Actionname point description

表3-8积分动作信息表

类型 number Varchar2 number Varchar2 长度 38 20 200 是否主键 PK 否 否 否 是否为空 NOT NULL NOTNULL NOTNULL NOTNULL 描述 流水号 积分动作名 获得的积分 动作描述 积分记录信息表:pointRecord_(如表3-9所示)

字段名 Id Nickname Receivedate PointactionId

类型 number Varchar2 Varchar2 number 长度 38 20 20 38 是否主键 PK PK 否 否 是否为空 NOT NULL NOTNULL NOTNULL NOTNULL 描述 流水号 用户昵称 获得日期 积分动作Id 15

太原工业学院毕业论文

表3-9积分动作信息表

好友信息表:friendRecord_(如表3-10所示) 字段名 Id selfname Friendname

表3-10好友信息表

类型 number Varchar2 Varchar2 长度 38 是否主键 PK 否 否 是否为空 NOT NULL NOTNULL NOTNULL 描述 流水号 自己名字 好友名字 个人空间信息表:memberspace_(如表3-11所示) 字段名 Id opinion runtime runhabit runplace Runstar cellphone Icon 类型 number Varchar2 Varchar2 Varchar2 Varchar2 Varchar2 Varchar2 Varchar2 长度 38 200 20 50 50 50 50 200 38 是否主键 PK 否 否 否 否 否 否 否 否 是否为空 NOT NULL NOTNULL NOTNULL NOTNULL NOTNULL NOTNULL NOTNULL NOTNULL NOTNULL 描述 流水号 跑步主张 跑步时间 跑步习惯 跑步地点 体育明星 联系电话 个性头像 用户Id MemberinfoId number

表3-11个人空间信息表

约跑信息表:runOrder_(如表3-12所示) 字段名 类型 长度 是否主键 是否为空 描述 16

太原工业学院毕业论文

Id title runtime Runplace UserId joinCount CreateTime Iconpath Status

Number Varchar2 Varchar2 Varchar2 number number Varchar2 Varchar2 number 38 80 50 100 38 5 30 50 1 PK 否 否 否 否 否 否 否 否 NOT NULL NOTNULL NOTNULL NOTNULL NOTNULL NOTNULL NOTNULL NOTNULL NOTNULL 流水号 约跑标题 跑步时间 跑步地方 发起者Id 参加人数 创建时间 标志图片 0 正常 1过期 表3-12约跑信息表

约跑记录信息表:runRecord_(如表3-13所示) 字段名 Id Nickname Iconpath RunOrderId joinTime joinCount CreateTime

表3-13约跑记录信息表

类型 Number Varchar2 Varchar2 number Varchar2 number Varchar2 长度 38 20 50 38 30 5 30 是否主键 PK 否 否 否 否 否 否 是否为空 NOT NULL NOTNULL NOTNULL NOTNULL NOTNULL NOTNULL NOTNULL 描述 流水号 参与者昵称 参与者头像 约跑Id 参与时间 参加人数 创建时间 17

太原工业学院毕业论文

4 系统总体设计

在具体实现BBS论坛系统的设计和实现过程中,我们应用了Struts2+hibernate框架,.JSP等新技术和开发工具,以使其适应当今软件的发展。

4.1 系统功能设计

根据目前BBS论坛管理及服务的实际情况,确定了本BBS论坛系统的主要内容为如下几个模块:

一是用户管理模块,主要实现用户的登录、注册、注销、个人资料的修改更新,管理员删除用户、对用户禁言锁定等功能;

二是论坛的帖子管理模块,主要实现帖子的发表,管理员对于帖子的管理,发表回复;

三是版面管理模块,主要实现版面的添加、删除以及各版面在首页的显示顺序 四是用户个人空间的模块,主要实现个人空间中最新帖子的显示,用户活跃度排行榜,对个人空间中信息的管理;

五是用户的权限管理,实现对超级管理员,斑竹,普通会员,游客这几种不同用户的权限管理。

18

太原工业学院毕业论文

4.1.1 总体功能设计

通过对论坛业务的分析,BBS论坛系统的功能结构图如下图4-1所示:

图4-1 系统功能结构图

19

太原工业学院毕业论文

4.1.2系统功能模块简介

1、权限管理模块:该模块实现用户合法性验证,把用户个人信息保存在 Session 中 ,而在后面的页面中通过判断这个 Session值是否登陆。

2、帖子管理模块:主要包括了发表新主题、发表回复、删除帖子、删除回复等功能。

3、个人空间管理模块:主要包括个人空间的创建与修改,用户活跃度排行榜,自己最近发的帖子,论坛最新的帖子。

4、版面管理模块:主要超级管理员对版面的添加、删除、修改以及调整版面在首页的显示顺序

5、用户管理模块:用户的登录、注册、注销、个人信息的修改更新,管理员对用户的删除以及禁言等功能。

20

太原工业学院毕业论文

4.2数据表实体

(1)版面信息表:forum_ 如表4-4所示

Forum_(id,name,description,forumorder,topicCount,aticleCount,createTime,lastTopic,lastPostTime)

表4-4版面信息表

(2)主题信息表:topic_ 如表4-5所示

Topic_(id,forumname,title,content,userId,forumId,postTime,lastPostTime,ViewCount,replyCount,nextFloor);

表4-5 主题信息表

21

太原工业学院毕业论文

(3)回复信息表:reply_ 如表4-6所示

Reply_(id,title,content,userId,topicId,postTime,Floor,isRead);

表4-6 回复信息表

(4)附件信息表:attachment_ 如表4-7所示

Attachment_(id,path,filename,filesize,createTime,downloadCount,topicId);

表4-7附件信息表

(5)会员信息表:memberinfo_ 如表4-8所示

Memberinfo_(id,nickname,password,gender,pwdquestion,pwdAnswer,email,province,age,address,phone,headphoto,point,topicCount,article,registerdate,gradeId,isAdmin);

22

太原工业学院毕业论文

表4-8 会员信息表

(6)等级信息表:grade_ 如表4-9所示

Grade_(id,minpoint,maxpoint,gradename,pointactionId);

表4-9 等级信息表

(7)积分动作信息表:pointaction_ 如表4-10所示 Pointaction_(id,actionname,point,description)

23

太原工业学院毕业论文

表4-10积分动作信息表

(8)积分记录信息表:pointRecord_ 如表4-11所示

pointRecord_(id,nickname,receivedate,pointactionId);

表4-11读者类型信息表

(9)好友信息表 friendRecord_ 如表4-12 FriendRecord_(id,selfname,friendname);

表4-12 好友信息表

(10) 个人空间信息表 memberspace_ 如表4-13

memberspace_(id,opinion,runtime,runplace,runstar,runhabit ,cellphone,icon,memberid);

24

太原工业学院毕业论文

表4-13 个人空间信息表

(11)约跑信息表 runOrder_如表4-14

runOrder_(id,title,runplace,runtime,userId,joinCount,createTime, iconpath,status);

(12) 约跑记录信息表 runRecord_如表4-15

RunRecord_(id,nickname,runOrderId,joinTime,iconPath);

25

表4-14 约跑信息表

太原工业学院毕业论文

如表4-15

26

太原工业学院毕业论文

5 系统详细设计

5.1 struts2、hibernate在web项目中的作用

(1)struts2负责web层

Struts2框架把网页表单提交的数据封装到pojo类中,然后在Action类调用service层的业务逻辑对pojo类中的数据进行处理,再forward到相应的网页 (2)hibernate负责持久化层,将数据持久化到数据库中 hibernate 为持久层,提供 OR/Mapping 。

通过java Annotation配置, 使pojo类和数据库中的表相对应的。然后定义 DAO ,这些是跟数据库打交道的类,它们会使用 POJO类 。

在 struts+ hibernate 的系统中,

对象的调用流程是: jsp-> Action - > Service ->DAO ->Hibernate 。 数据的流向是struts框架将接受用户的数据,封装到POJO类中, Action 将数据从 POJO类 中取出,封装成 VO 或 PO,

5.1.1数据库连接

(1)数据库连接

创建一个HibernateSessionFactory类来管理Hibernate与数据库的会话。 静态代码块读取默认的hibernate配置文件hibernate.cfg.xml,建立 SessionFactory,代码如下:

static {

try {

configuration.configure(configFile);

sessionFactory = configuration.buildSessionFactory();

} catch (Exception e) { }

e.printStackTrace();

}

27

太原工业学院毕业论文

获取Session

public static Session getSession() throws HibernateException {

Session session = (Session) threadLocal.get(); if (session == null || !session.isOpen()) { }

if (sessionFactory == null) { }

session=(sessionFactory!=null)? sessionFactory.openSession() : null;

threadLocal.set(session);

rebuildSessionFactory();

return session; }

(2)hibernate.cfg.xml中对数据库连接的配置

org.hibernate.dialect.Oracle9Dialect

jdbc:oracle:thin:@127.0.0.1:1521:XE

oracle.jdbc.driver.OracleDriver

28

太原工业学院毕业论文

(3)关闭数据库连接

关闭session,代码如下:

public static void closeSession() throws HibernateException { Session session = (Session) threadLocal.get(); threadLocal.set(null); if (session != null) { session.close(); }

29

太原工业学院毕业论文

5.2系统模块功能概述 5.2.1登录验证

用户输入自己的账号密码,系统对用户输入的信息进行合法性检查,

如果用户输入的信息不完整,提示用户输入相应的信息。 如果无提示,单击【登录】按钮

如果用户输入的账号不存在,提示“用户名不存在,请重新登录!” 如果用户输入密码与账号不匹配,提示“密码错误,请重新登录!” 如果用户验证码不正确,提示“验证码错误,请重新登录!”

详细设计:

首先,用户在访问index.jsp页面的时候,系统要检测是否需要自动登陆,那如何检测呢,就是检查浏览器的cookie中有没有用户上次登陆保存的用户名和密码,如果有,就用cookie中的用户名和密码来直接登陆。如果没有就转到登陆页面login.jsp。

然后,当用户登陆的时候,系统需要检查用户是否有选择下次访问自动登陆的checkbox,如果有选择,系统就需要将这次登陆的用户名和密码保存到用户浏览器的cookie中,以便下次访问的时候能自动登陆。 具体登陆过程:

1.查看用户输入的验证码是否正确,若错误,则跳转到登录页面,提示错误信息 2.调用IMemberService接口中的findMemberinfoByName方法找出此用户名对应的用户信息memberinfo,若memberinfo为null,则此用户名不存在,立即跳转到登录页面,提示错误信息;

3.用登录的密码与memberinfo中的密码相比较,若不一致,则跳转到登录页面,提示错误信息

4.查看在同一浏览器中是否有其他用户登录,若有,则调用IMemberService接口的logout方法让这个用户下线,然后在调用IMemberService接口中的login方法让当前用户上线。

5.判断这次登陆是否和上次登陆是否在同一天内,如果不是需要给这次登陆加登陆应该能获取的积分数,并需要保存获取积分的记录

6.将会员的isonline设成在线状态,将latestDate保存到session中,再更新

30

太原工业学院毕业论文

用户信息中的latestDate。

7.查询积分排名前五的用户,将数据以List对象形式存储到session中

(2)登录以后,页面跳转到跑步社区首页,如图5-2

图5-2跑步社区首页

5.2.2 用户个人空间管理 5.2.2.1 查看个人空间

前台超链接的设计:space/checkSpace?username=xxx

链接说明:

checkSpace是在名为space的命名空间下一个action的名字

如果是在登录用户的主页点击“个性空间”,则username传递的是当前的用户昵 称;如果点击其他会员昵称,则username传递的是其他会员的昵称 详细设计:

1. 从session中获取用户信息,判断当前用户是否已登录

31

太原工业学院毕业论文

2. 调用IMemberService中的findMemberinfoByName方法查出username对应的用户信息memberinfo,对照当前session中的用户信息,判断是否是当前登录用户

3. 判断该用户是否已经创建了个人空间,

a) 被访问用户还没有创建空间,若被访问用户是当前登录用户,则跳转到创

建个性空间页面,否则跳转回到主页member/activity.jsp,提示该用户还没有创建个性空间

b) 被访问用户已经创建个性空间

1. 被访问用户是其他用户,调用IRunOrder接口的

findRunOrderByPage方法,查出该用户发布的约跑消息, 调用IMemberService接口中的findFriendRecordByNickname方法查出该用户的好友,之后跳转到otherspace.jsp页面

2. 被访问用户是当前登陆用户,调用IRunRecordService接口中的

findRunRecordByPage方法查出登陆用户参加的约跑消息,调用IMemberService接口中的findFriendRecordByNickname方法查出当前登录用户的好友,之后跳转到space.jsp

5.2.3论坛管理 5.2.3.1论坛首页显示

单击“跑步论坛“命令,进入跑步论坛首页,显示各个版面,以及各版面的前5条主题。

详细设计:

1. 调用IForumService接口中的forumDisplay方法查找出论坛的全部

版面信息,查出后将数据存储到变量名叫list的List类型对象中 2. 遍历list集合,调用ITopicService接口中findTopTopic方法查询

出各版面的前五条主题,将查询的结果与版面一起封装到map集合中

遍历集合代码如下: for(Forum forum:list){

32

太原工业学院毕业论文

List topicList =

topicService.findTopTopic(forum.getName(), 5);

map.put(forum, topicList); }

页面设计如图5-5所示

图5-5

图5-

5.2.3.2主题列表显示

单击“版面标题”命令,页面跳转到主题列表页。

详细设计:

1. 根据传过来的参数forumId调用IForumService的findForum方法获取版面信息forum

2. 根据forum中版面名调用ITopicService的findTopicByPage方法查出该版面首页的主题列表,将forum存储到session中

3. 计算该版面的主题总页数,因为测试,暂时使用每页显示2个主题 long topicResult=forum.getTopicCount(); if(topicResult%2==0){

topicTotalPage=topicResult/2;

}else{ }

33

topicTotalPage=topicResult/2+1;

太原工业学院毕业论文

//将主题总页数信息存储到session中

session.setAttribute(\

5.2.3.3发表新主题

在版面页, 单击“发表新主题”,页面将跳转到发表新主题页面 前台采用开源的富文本编辑器kindeditor3.6替代原本的普通的textarea 前台调用kindeditor的javascript代码: 详细设计:

1.判断验证码是否正确,若错误,则立即返回发表新主题页面 2.判断当前用户是否已经登录

3.从session中取出forum的版面信息,将与topic有关的信息封装到topic中 4.处理附件上传

4.1 在struts.xml配置文件中设置了上传的根目录 代码如下:

/attachment /forum/deal.jsp

/forum/newTopic.jsp /login.jsp

4.2 Action类中的处理代码:

if(upload!=null){

//获取在配置文件中配置的根目录

34

太原工业学院毕业论文

String

parent=ServletActionContext.getServletContext().getRealPath(parentPath);

File file=new File(parent);

//判断指定文件夹是否存在,若不存在就新建一个 if(!file.exists()){ }

//以从1970年到现在的秒数作为上传文件的文件名

String upName=System.currentTimeMillis()+uploadFileName .substring(uploadFileName.indexOf('.')); File upFile=new File(file, upName);

BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(upFile));

BufferedInputStream bis=new BufferedInputStream(new FileInputStream(upload)); //设置缓冲区提高文件上传效率 byte[] buf=new byte[1024]; while(bis.read(buf)!=-1){ }

Attachment att=new Attachment(); att.setFileName(upName); att.setFileSize(upload.length());

att.setPath(parentPath.substring(1)+\att.setTopic(topic);

attService.saveOrUpdate(att); //关闭资源 bos.flush(); bis.close();

35

file.mkdir();

bos.write(buf);

太原工业学院毕业论文

bos.close(); }

5.调用ITopicService的add方法保存主题

6.更新版面forum中的信息,更新session中forum和topic对应的值,给用户加 相应的积分,更新用户信息,并记录获得积分的记录

5.2.3.4回复主题

在主题页,点击“回复主题”命令,将进入发表回复页面 详细设计:

1. 判断用户是否已经登录

2. 调用IReplyService接口中的add方法增加回复,更新主题信息 3. 给用户增加相应的积分,更新用户信息,并记录获得积分的记录

5.2.3.5实时回复通知

在论坛首页和主题列表页以及主题页中,采用ajax技术实现了实时回复通知,一旦有其他用户对你所发表的主题进行回复,马上网页标签页上的标题就会显示“您的主题有新回复”

Dwr配置:

前台核心代码: function checkReply(){

36

太原工业学院毕业论文

//直接向后台发送异步请求,检测是否有新回复

}

dwr_reply.findNewReply(checkReplyCallBack);

//回调函数

function checkReplyCallBack(value){ }

//设置每隔3分钟检测一下是否有新回复 setInterval(\

后台在CheckNewReply类中调用findNewReply方法处理这个异步请求

var title=document.getElementsByTagName('title'); if(value!=0){

title.item(0).firstChild.nodeValue=\您的主题有新回复\

}else{ }

console.log(\暂时没有新回复\

5.2.3.6加好友

在主题页中,点击“加为好友”命令,可以加你感兴趣的帖子的作者为好友 核心技术:ajax dwr框架

前台核心代码:

Top