版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘摘 要要 近年来,随着研究生考试日益火热,立志考研的同学比比皆是,因此,组建 一个考研论坛,让考生们能够拥有一个平台来相互交流所获得的信息,对于考研 来说非常有益处。 本文主要阐述了如何利用 j2ee 的 struts 和 hibernate 框架开发一个性能优化、 可扩展性强和安全可靠的考研论坛。本论文还论述了考研论坛具体功能的实现过 程,主要包含普通用户所需求的浏览帖子功能、发表帖子功能、回复帖子功能和 附件上传与下载功能以及管理员所需求的版块管理功能、用户信息管理功能、帖 子管理功能和界面管理功能。 本论坛界面美观,简洁大方,容易操作,比较实用。 关键词:j2ee;hibernate;
2、struts;考研论坛; abstract recently, as the examination of entering postgraduate education is becoming more and more popular, people who make their mind to pass the graduate examination can be seen everywhere. so, its quite necessary to build a forum for the postgraduate examinees, so that they are able
3、to share the exam information. this paper told about how to use the struts and hibernate frame of j2ee to develop a postgraduate examination forum , which has performance optimization and has a strong scalability and of course work safely and reliable. the paper has also discussed the detailed proce
4、ss about how to realize the specific functions, which mainly includes the functions for ordinary users such as posts browsing and publishing, posts replying, annex uploading and downloading, and it also includes the functions for administrators such as forum management, user information management,
5、posts management and interface management. the forum not only has beautiful interfaces, its also simple and elegant, easy to operate, and whats more, its very functional. keywords: j2ee;hibernate;struts;postgraduate examination bbs; 目 录 第一章第一章 绪绪 论论.1 1.1 项目背景分析.1 1.2 论文的主要内容.1 1.3 论文的结构.2 第二章第二章 相关
6、技术简介相关技术简介.3 2.1 mvc 模式简介.3 2.2 j2ee 相关技术简介.3 2.3 ajax 技术.5 第三章第三章 需求分析与可行性分析需求分析与可行性分析.6 3.1 需求分析.6 3.1.1 系统界面要求.6 3.1.2 系统功能要求.6 3.1.3 系统性能要求.7 3.1.4 其它方面的要求.7 3.2 可行性分析.7 3.2.1 技术可行性.7 3.2.2 经济可行性.7 3.2.3 操作可行性.7 3.3 开发环境的选择.7 第四章第四章 概要设计概要设计.8 4.1 总体设计.8 4.2 功能设计.10 4.3 架构设计.11 4.4 数据结构设计.11 4.4
7、.1 系统 er 图.11 4.4.2 数据库关系的规范化.14 4.4.3 数据库表的设计.14 4.4.4 数据库设计与完整性.16 第五章第五章 详细设计详细设计.18 5.1 考研论坛的数据库连接.18 5.1.1 物理结构设计要点.18 5.1.2 数据库与程序的关系.18 5.2 功能模块设计.19 5.2.1 用户注册登录模块.19 5.2.2 用户信息管理模块.22 5.2.3 论坛帖子发布模块.23 5.2.4 论坛帖子回复、引用及修改模块.24 5.2.5 其它模块设计.25 5.2.6 系统的关键技术的实现.28 第六章第六章 总结与展望总结与展望.30 参考文献参考文献
8、.31 致致 谢谢.32 第一章第一章 绪绪 论论 1.11.1 项目背景分析项目背景分析 随着互联网日益深入社会生活,bbs 开发技术发展至今,从 cgi,asp 到后 来的 php,技术已经日趋成熟,功能也更加丰富,但随着 sun 公司的 java 技术所 实现的“一次编写,到处运行”的优势,继承这一衣钵的 j2ee 技术越来越受到 人们的注视。 bbs 作为一种对外的展示窗口,进行内外信息交流,已成为大众的广泛需要。 为了进行更好的交流,用户想就自己的专业和爱好能和其他的用户进行及时专业 的交流,因此论坛建设在 internet 应用上的地位显而易见,它已成为现代人沟通 和获取信息的重要
9、组成部分,从而倍受人们的重视。 现在各个大学网站都有 bbs 论坛,而如今考研越来越热,随着考研的同学越 来越多,考研论坛也越来越多,目前国内比较有名的考研论坛有:sky 考研论坛、 5432 考研论坛、top 考研论坛等等,它们的特点在于栏目非常齐全,包括:专业 课、英语、数学、政治、大学专区、诸多证书考试以及休闲娱乐等一系列栏目。 但是它们仍然具有一些自身的缺陷,比如 sky 考研论坛,其原身是动网论坛, 基于 asp 语言开发的论坛系统,也是目前国内比较流行的论坛系统。它由于是经 过很多次的代码优化和完善,所以在单服务器性能的表现上非常出色;但是,它 仅仅是满足了小型访问量的需求,无法适
10、应大规模的访问压力,这是由于它的系 统设计完全没有采用分布式的设计方案,因此它无法实现系统的集群和扩展,当 系统运行达到饱和状态时,它就束手无策,只能通过删除旧的帖子来提高性能。 现今大多数的论坛开发选用的是 php 这一技术,也有使用 asp.net 进行开 发的,但是很少见到有使用 j2ee 技术开发的论坛。之所以选择了 j2ee 这项技术 来开发这个考研论坛,一个是出于不随大众的想法,另一个方面则在于 j2ee 的 程序结构清晰,安全性比较高。java 是目前的主流开发技术,具有很多优势,比 方说安全性高,跨平台的可移植性强等。j2ee 则是 java 在 internetintrane
11、t web 上的重要应用技术,得到了广泛的支持和承认,它可以和各种 java 技术完美地结 合在一起,从而实现非常复杂的应用。 1.21.2 论文的主要内容论文的主要内容 本文将阐述一个基于 j2ee 技术的考研论坛的设计与实现,主要实现考研用 户浏览帖子、发表帖子、回复帖子以及上传下载考研附件资料等功能,其目的是 给考生提供一个在线交流考研心得和信息的平台。 该考研论坛应该具备如下功能:发帖功能,回帖功能,引用功能,附件上传 与下载功能,后台的版块管理功能,后台的用户管理功能和一些界面的设置功能 等。它将具备数学、英语、政治、专业科目以及灌水乐园等一系列主版块,在这 些主版块下面,管理员可以
12、根据需要随时添加新的子版块以扩充整个论坛的内容。 文章将首先阐述考研论坛的系统分析部分,包括可行性分析、需求分析、业 务流程分析等;系统概要设计部分将主要介绍该系统的总体设计、功能设计、架 构设计以及数据结构设计;系统详细设计部分将说明整个系统的数据库设计,接 口设计以及几个主要功能模块的流程图与算法以及其各自的实现代码,并对实现 该论坛的一些关键技术和组件进行简单的介绍;最后论文将对整个考研论坛的设 计过程与结果进行总结,总结该系统的不足之处,并对这些不足之处提出修改意 见;其次就是对该系统的未来进行展望,看还有哪些技术值得改进可以使得运行 效率更高。 1.31.3 论文的结构论文的结构 第
13、二章为相关技术的介绍,首先介绍本论坛使用的 mvc 模式的组成结构, 以及实现这些结构所用的 hibernate、struts 等框架技术。 第三章为整个系统的需求分析、可行性分析等,将整个考研论坛所需要实现 的功能用文字描述出来,分析其在技术和经济上是否具有可行性。 第四章为概要设计,将包括功能模块设计,架构设计与数据结构设计三个大 的方面。其中功能设计将划分成几大模块进行讲解,而架构设计方面则主要讲述 该考研论坛将基于 mvc 模式以及一系列的框架技术进行开发,再者就是数据结 构的设计,将介绍本考研论坛的 er 图和数据库的设计。 第五章为整个考研论坛的详细设计,在这一章论文将列出 3 到
14、 4 个模块进行 详细讲解,其它的功能模块则进行简单说明。另外论文将详细阐述本考研论坛的 关键技术是如何实现的。 第六章为最后一章,论文将在这一章对整个系统的开发过程中所学到的知识 与经验进行总结,总结还有那些不足之处以及仍然可以进行改进的地方。 第二章第二章 相关技术简介相关技术简介 2.12.1 mvcmvc 模式简介模式简介 本考研论坛采用 mvc 模式进行开发,mvc 架构是model-view-controller 的缩写,中文翻译为模型-视图-控制器。mvc 应用程序总是由这三个部分组成。 event(事件)导致 controller 改变 model 或 view,或者同时改变两
15、者。只要 controller 改变了 models 的数据或者属性,所有依赖的 view 都会自动更新。与 此类似,只要 controller 改变了 view,view 会从潜在的 model 中获取数据来刷 新自己。mvc 与 j2ee 架构的对应关系是:view 处于 web tier 或者说是 client tier,通常是 jsp/servlet,即页面显示部分。controller 也处于 web tier,通常用 servlet 来实现,即页面显示的逻辑部分实现。model 处于 middle tier,通常用服 务端的 javabean 或者 ejb 实现,即业务逻辑部分的实
16、现。 mvc 模式的优点:首先,最重要的是应该有多个视图对应一个模型的能力。 在目前用户需求的快速变化下,可能有多种方式访问应用的要求。例如,订单模 型可能有本系统的订单,也有网上订单,或者其他系统的订单,但对于订单的处 理都是一样,也就是说订单的处理是一致的。按 mvc 设计模式,一个订单模型 以及多个视图即可解决问题。这样减少了代码的复制,即减少了代码的维护量, 一旦模型发生改变,也易于维护。 其次,由于模型返回的数据不带任何显示格 式,因而这些模型也可直接应用于接口的使用。再次,由于一个应用被分离为三 层,因此有时改变其中的一层就能满足应用的改变。一个应用的业务流程或者业 务规则的改变只
17、需改动 mvc 的模型层。控制层的概念也很有效,由于它把不同 的模型和不同的视图组合在一起完成不同的请求,因此,控制层可以说是包含了 用户请求权限的概念。最后,它还有利于软件工程化管理。由于不同的层各司其 职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化产生管 理程序代码。 mvc 模式示意图如图 2.1 所示: 2.22.2 j2eej2ee 相关技术简介相关技术简介 java 2 平台目前有 3 个版本,它们分别是适用于小型设备和智能卡的 java 2 平台 micro 版(java 2 platform micro edition,简称 java me) 、适用于桌面系统
18、的 java2 平台标准版(java 2 platform standard edition,简称 java se) 、适用于创建 服务器应用程序和服务的 java2 平台企业版(java 2 platform enterprise edition, 简称 j2ee) 。 j2ee 巩固了标准版中的许多优点,例如编写一次、随处运行的特性。j2ee 技术的基础核心是 java 平台或者说是 java 平台的标准版,j2ee 不仅仅极大地巩 固了标准版中固有的诸多优点,同时还提供了对同时还提供了对 ejb(enterprise javabeans) 、java servlets api、jsp(j
19、ava serverpages)以及 xml 技术的全面支 持。j2ee 体系结构架提供了中间层集成框架用来满足无需太多费用而又需要高可 用性、高可靠性以及可扩展性的应用需求。通过 j2ee 所提供的统一开发平台, 可以极大降低开发多层应用的费用和复杂度,并且能够提供对现有应用程序集成 的强有力的支持,并且具有良好的向导支持打包特性和部署应用特性,支持添加 目录功能,并对安全机制进行了增强,显著提高了性能。 j2ee 使用多层的分布式应用模型,应用逻辑按功能划分为组件,各个应用组 件根据他们所在的层分布在不同的机器上。事实上,sun 设计 j2ee 的初衷正是为 了解决两层模式(client/
20、server)的弊端,在传统模式中,客户端担当了过多的角色 而显得臃肿,在这种模式中,第一次部署的时候比较容易,但难于升级或改进, 可伸展性也不理想,而且经常基于某种专有的协议,通常是某种数据库协议。它 使得重用业务逻辑和界面逻辑非常困难。现在 j2ee 的多层企业级应用模型将两 层化模型中的不同层面切分成许多层。 j2ee 的三大框架分别是:struts、hibernate、spring,简称 ssh。 为了实现视图层,采用了 struts 这一框架和 jstl 标签库。struts 这个框架在 视图控制以及逻辑跳转控制方面功能比较强大。struts 最早是作为 apache jakarta
21、 项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高 java server pages、servlet、标签库以及面向对象的技术水准。它的目的是为了帮助我 们减少在运用 mvc 设计模型来开发 web 应用的时间。我们仍然需要学习和应用 该架构,不过它将可以完成其中一些繁重的工作。如果想混合使用 servlets 和 jsp 的优点来建立可扩展的应用,struts 是一个不错的选择。struts 的优点主要集 中体现在两个方面:taglib 和页面导航。taglib 是 struts 的标记库,灵活运用, 能大大提高开发效率。jstl 标签库和 el 表达式的结合使用使得 jsp
22、 页面的数据 显示变得异常简洁,它完全以简洁的代码替代了 jsp 页面中繁杂的 java 代码,另 外它还支持自定义标签函数,如此一来页面数据输出的自由度就大幅提升了。 为了实现数据模型层,采用了 hibernate 这一框架,hibernate 是一个开放源 代码的对象关系映射框架(orm) ,它对 jdbc 进行了非常轻量级的对象封装, 使得 java 程序员可以随心所欲的使用对象编程思维来操纵数据库,另外它也使得 不同数据库间的数据移植变得非常简单。hibernate 可以应用在任何使用 jdbc 的 场合,既可以在 java 的客户端程序使用,也可以在 servlet/jsp 的 we
23、b 应用中使 用,最具革命意义的是,hibernate 可以在应用 ejb 的 j2ee 架构中取代 cmp,完 成数据持久化的重任。 2.32.3 ajaxajax 技术技术 为了从更大程度上提升用户使用本考研论坛的体验,在注册用户帐号模块 采用了 ajax 异步交互技术。ajax 即“asynchronous javascript and xml” (异 步 javascript 和 xml),ajax 并非缩写词,而是由 jesse james gaiiett 创造的名 词,是指一种创建交互式网页应用的网页开发技术。时刻想着用户:ajax 的最 大机遇在于用户体验。在使应用更快响应和创新
24、的过程中,定义 web 应用的规则 正在被重写;因此开发人员必须更注重用户。现在用户已经逐渐习惯如何使用 web 应用了。例如用户通常希望每一次按钮点击会导致几秒的延迟和屏幕刷新, 但 ajax 正在打破这种长时间的状况。因此用户需要重新体验按钮点击的响应了。 使用 ajax 的最大优点,就是能在不更新整个页面的前提下维护数据。这使 得 web 应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变 过的信息。 ajax 不需要任何浏览器插件,但需要用户允许 javascript 在浏览器上执行。 就像 dhtml 应用程序那样,ajax 应用程序必须在众多不同的浏览器和平台上经 过
25、严格的测试。随着 ajax 的成熟,一些简化 ajax 使用方法的程序库也相继问世。 同样,也出现了另一种辅助程序设计的技术,为那些不支持 javascript 的用户提 供替代功能。 图 2.1 mvc 模式示意图 第三章第三章 需求分析需求分析与可行性分析与可行性分析 3.13.1 需求分析需求分析 .1 系统界面要求系统界面要求 系统的初始界面假定用户是匿名登录,匿名登录的用户可以随意浏览帖子, 但不可以进行发帖与回帖操作。用户可以通过初始界面提供的统一的用户登录接 口,登录进入各自的操作界面,比如发帖,回帖以及上传下载附件等。 .2 系统功能要求系统功能
26、要求 对于一个论坛系统来说,用户应该能够通过它进行浏览帖子,发布帖子,回 复帖子以及管理员应该能够对版块、用户、帖子进行管理;而对于一个考研类型 的论坛来说,它就应该具备让用户能够在上面进行考研信息与心得的交流,包括 考研信息资料的上传与下载。所以,本考研论坛将包含如下功能: 1用户登录,退出,注册等功能。 2论坛用户信息管理功能,包括修改用户密码,是否将其设定为管理员, 是否删除该用户三种功能。 3论坛帖子发布功能,它要求实现用户登录系统后可以查看其他所有用户 所发表的帖子,并可以发布自己的帖子。 4论坛帖子回复、引用及修改功能,它要求实现用户登录系统后可以查看 其他用户发的帖子,并可以回复
27、这些帖子,并提供了修改已经回复内容的功能。 5版块管理功能,它要求实现论坛管理员可以通过后台管理系统控制论坛 的版块,管理员将完成如下功能:增删主版块,增删相应主版块下的子版块,修 改版块的名称等。 6帖子管理功能,要求实现可以进入任一帖子并在帖子详细内容界面实现 删帖操作。 7界面显示管理功能,要求实现论坛管理员可以通过后台管理系统设定所 有界面上的显示记录数目,包括前台的帖子列表显示界面,帖子回复界面以及后 台的用户信息显示界面。 8附件上传与下载功能,它要求实现通过发表帖子,可以实现附件的上传 功能;其它用户登录以后可以对该帖子的附件进行下载。 考研论坛应该具备数学、英语、政治、专业科目
28、以及灌水乐园等一系列主版 块,在这些主版块下面,管理员可以根据需要随时添加新的子版块或主版块以扩 充整个论坛的内容,用户可以根据需要进入不同的学科领域进行看帖、回帖或发 帖等操作,同时也可以上传或下载有价值的考研资料或信息。 .3 系统性能要求系统性能要求 对于贴子查看、发表贴子以及回复贴子这类频繁发生的系统操作,要采取适 当的技术优化这类数据操作,以提高数据存取效率。 .4 其它方面的要求其它方面的要求 高级别用户的所有管理操作要有针对低级别用户的身份识别功能,以防止低 级别的用户越权执行高级别用户才具有的操作功能。 3.23.2 可行性分析可行性分析 3.2
29、.13.2.1 技术可行性技术可行性 mvc、struts、hibernate、jstl、ajax 等这些技术都是经过前人无数次试 验通过的,就技术层面上来讲,用它们实现一个 bbs 论坛应该是绰绰有余的;而 考研论坛这种类似的 bbs 系统在互联网上也有着很多成功的案例,所以不论是就 技术而言还是就论坛系统本身而言都是具有可行性的。 .2 经济可行性经济可行性 该考研论坛全程由个人开发,所以不存在支付他人开发费用;而如今考研越 来越火热,立志考研的人也越来越多,所以考研类的论坛在访问量这点上是肯定 不存在问题的,加上将来可以放置一些广告,在经济上是具有可行性的。 3.2.33
30、.2.3 操作可行性操作可行性 作为一个论坛,该考研论坛具有大众化的界面与操作,界面清新,按钮功能 明了,容易操作。一般人都可以进行发帖,回帖,上传下载附件等操作,所以在 操作上是具有可行性的。 3.33.3 开发环境的选择开发环境的选择 系统需求分析阶段: microsoft windows xp。 系统代码开发阶段:windows xp+ jdk1.5 + tomcat5.5 +sql server 2005 + myeclipse 6.5。 系统 gui/logo 辅助设计工具:photoshop cs3,dreamware cs3。 第四章第四章 概要设计概要设计 4.14.1 总体设
31、计总体设计 c/s 又称 client/server 或客户/服务器模式。服务器通常采用高性能的 pc、工 作站或小型机,并采用大型数据库系统,如 oracle、sybase、informix 或 sql server。客户端需要安装专用的客户端软件。c/s 的优点是能充分发挥客户端 pc 的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客 户端响应速度快。 b/s 是 brower/server 的缩写,客户机上只要安装一个浏览器(browser) ,如 netscape navigator 或 internet explorer,服务器安装 oracle、sybase、
32、informix 或 sql server 等数据库。浏览器通过 web server 同数据库进行数据交互。 我们采用基于 b/s 结构的三层应用模型来实现 bbs 系统。目前,在 internet 应用体系结构中,事物处理被划分为 3 层,即 web browserinternet server database server。在这种体系结构中,业务的表达通过简单的 web browser 来实 现,用户通过 web browser 提交表单,把信息传递给 internet server,internet server 根据用户的请求,分析出要求数据库服务器进行的查询,交给数据库服务 器去
33、执行,database server 把查询的结果反馈给 internet server,在由 internet server 用标准的 html 语言反馈给 web browser。 三层应用模型同传统的 c/s(client/server)模型相比,提高了系统的可扩展 性、安全性和可重用性。它将应用逻辑与用户界面和数据访问相剥离,这样便使 系统的维护变得简单,同时可以通过采用组件技术,降低数据库服务器的负担, 从而提高性能。 经过以上的分析,b/s 结构比较适合本考研论坛,它具有如下的优点: 1. b/s 技术所基于的标准是开放、非专有的,是经标准化组织指定而非单一 厂商制定的。 2. b
34、/s 技术成本较低,一般只需安装、配备在服务器上。在客户机上的工作 较少,故降低了开发及管理成本。而 c/s 的应用不论是安装、配备还是升级,都 需要在所有的客户机上实施。 b/s 技术维护工作主要集中在服务器端,客户端的维护工作量十分少。而 c/s 结构中客户机和服务器的维护工作量都较大。web browser 技术简明易用, 一旦用户掌握了 web browser 的用法,也就掌握了使用系统上各种信息资源的钥 匙。 其网络结构图与系统结构图(如图 4.1 和图 4.2 所示): 图 4.1 网络结构图 图 4.2 系统结构图 4.24.2 功能设计功能设计 用户登录,退出,注册等功能; 论
35、坛用户信息管理功能,包括修改用户密码,是否将其设定为管理员,是否 删除该用户三种功能; 论坛帖子发布功能,用户登录系统后可以查看其他所有用户所发表的帖子, 并可以发布自己的话题; 论坛帖子回复、引用及修改功能,用户登录系统后可以查看其他用户发的帖 子,并可以回复这些帖子,并提供了修改已经回复内容的功能; 版块管理功能,论坛管理员可以通过后台管理系统控制论坛的版块,管理员 将完成如下功能:增删主版块,增删相应主版块下的子版块,更改版块的名 称等; 帖子管理功能,可以进入任一帖子并在帖子详细内容界面实现删帖操作; 界面显示管理功能,论坛管理员可以通过后台管理系统设定所有界面上的显 示记录数目,包括
36、前台的帖子列表显示界面,帖子回复界面以及后台的用户 信息显示界面; 附件上传与下载功能,通过发表帖子,可以实现附件的上传功能,其它用户 登录以后可以对该帖子的附件进行下载。 整个系统的运行模式图(如图 4.3 所示): 图 4.3 本系统的各个模块的运行顺序 进入考研论坛可选操作? 注册 数据库查询登陆 是否成 功? 成功 可选操作? 发表/回复文章上传下载附件 结束 失败 4.34.3 架构设计架构设计 本考研论坛将在基于 j2ee 的基础上采用 jsp + javabean + hibernate + struts + sql server2005 进行开发,使用 mvc 模式进行架构。
37、其中数据模型层与数据库的交互选择 hibernate orm(对象关系映射)框架 进行开发,由于 hibernate 使用方便,移植简单,所以采用它作为数据模型层访 问数据库的工具,极大的简化了访问数据库数据的工作。 控制层采用了 struts1.2 框架进行开发,struts 的 action 在 jsp 页面表单的提 交与页面跳转的控制功能相当强大,我们可以直接由可视化的界面看到整个系统 不同页面之间的跳转情况,维护起来相当方便,给以后的维护工作提供了很大的 便利。 视图层全部采用 jstl 标签与 el 表达式进行数据输出,jstl 标签与 el 表 达式相结合的最大特点在于可以彻底替代
38、整个 jsp 页面中的繁杂 java 代码,由繁 化简,代码简洁明了,此外,jstl 还支持自定义的标签函数,极大的提高了对数 据进行输出的自由度。 4.44.4 数据结构设计数据结构设计 .1 系统系统 erer 图图 根据 uml 系统模型,可以确定系统中的各种实体以及它们之间的关系。本 系统的实体包括帖子回复数据实体(reply) 、用户数据实体(users) 、管理员数据 实体(users) 、帖子数据实体(topic)等。 1. 五大实体之间关系的 er 图(如图 4.4 所示) 图 4.4 四大实体之间关系的 er 图 帖子与版块属于多对一关系,一个版块可以有多个帖
39、子,但一个帖子只能属 1 m 1 m m 管理员 帖子 用户 1 n 1 1 m m 回复 1 发表 管理 回复 管理 管理 版块 属于 于一个版块;帖子与用户则为多对一关系,一个用户可以发表多个帖子,但一个 帖子只能属于一个用户;回复与帖子为多对一关系,一个帖子可以有多个回复, 但一个回复只能属于一个帖子;管理员与帖子之间为一对多关系,一个管理员可 以管理多个帖子;管理员与用户之间是一对多关系,一个管理员可以管理多个用 户;管理员与回复之间是一对多关系,一个管理员可以管理多个回复。 图 4.5 用户数据实体 er 图 图 4.6 帖子数据实体 er 图 2. 用户数据实体(users)er
40、图(如图 4.5 所示) 该实体用于存储用户信息,包括管理员信息。它包含用户 id、密码、姓名、 头像、性别、权限、注册时间、邮箱以及发表帖子数目等九个属性。其中用户 id 为标识一个用户的唯一属性,不同的用户不能有相同的用户 id 号;权限可分为 用户 头像 密码 邮箱 发表帖 子数目 注册时间 姓名 性别 用户id 权限 帖子 标题 内容 帖子id 发表时间 修改时间 附件名称 用户id 版块id 两种,管理员以及普通用户;发表帖子数目用以记录该用户自注册之日起总共发 表帖子的总数。 3. 帖子数据实体(topic)er 图(如图 4.6 所示) 该实体用于存储帖子信息。它包含帖子 id、
41、标题、内容、发表时间、修改时 间、附件名称、版块 id 以及用户 id 等八个属性。其中帖子 id 为标识一个帖子 的唯一属性;附件名称为发表该帖时所上传附件的名称;发表时间为该帖第一次 编辑发表的时间,而修改时间则为最近一次修改该帖的时间;用户 i 表示该帖由 哪个用户所发表,而版块 id 则表示该帖属于哪一个版块。 4. 版块数据实体(board)er 图(如图 4.7 所示) 图 4.7 版块数据实体 er 图 该实体用于存储版块信息。它包含版块 id、版块名称以及父版块 id 等三个 属性。其中版块 id 为标识该版块的唯一属性;父版块 id 则代表该版块的上一级 主版块。 5. 回复
42、数据实体(reply)er 图(如图 4.8 所示) 图 4.8 帖子回复数据实体 er 图 该实体用于存储帖子回复信息。它包含回复 id、回复标题、回复内容、发表 版块 版块名称 版块id 父版块id 回复 标题 内容 帖子id 发表时间 修改时间 用户id 回复id 时间、修改时间、帖子 id 以及用户 id 这七个属性。其中回复 id 为标识该回复 的唯一属性;帖子 id 表示该回复是针对哪一个帖子所发表的;用户 id 表示该回 复是哪个用户所发表的。 6. 管理员数据实体(users)er 图(如图 4.9 所示) 图 4.9 管理员数据实体 er 图 .2 数据库关系
43、的规范化数据库关系的规范化 关系数据库的规范化设计是指面对一个现实问题,如何选择一个比较好的关 系模式集合。规范化设计理论主要包括三方面的内容:数据依赖、范式和模式设 计方法。其中数据依赖起着核心作用。范式是关系模式的标准化,它是衡量关系 模式好坏的标准,与数据依赖有着直接的联系。 基于 fd(函数依赖)的范式有 1nf、2nf、3nf、bcnf 等多种。 1nf 是关系模式的基础;2nf 已成为历史,已经很少提及;在数据库设计中 最常用的是 3nf 和 bcnf。3nf 的定义是,如果 xy,ya,且 y 不依赖 与 x,a 不包含于 y,那么称 xa 是传递依赖;如果关系模式 r 是 1n
44、f,且 每个非主属性都不传递依赖于 r 的候选键,那么称 r 是第三范式(3nf)的模式。 如果数据库模式中每个关系模式都是 3nf,则称其为 3nf 的数据库模式。如果 r 是 3nf 模式,那么 r 也是 2nf 模式。 本系统数据库的 4 张表,每张表的主键都包只含一个属性,而且其余属性都 直接依赖与主键,不存在 xy,yz 的情况。因此本系统数据库模式符合 3nf。 .3 数据库表的设计数据库表的设计 1. board 表(如表 4.1 所示) 版块信息表(board) ,用于存储版块信息。boardid 字段为版块的 id 编号, int 类型,唯一,主键,标量自增;
45、boardname 字段为版块的名称信息;parentid 字段为该版块的上一级版块(父版块)编号,用于在读取的时候以树状形式显示 版块信息。 管理员 密码 用户名 邮箱 2. topic 表(如表 4.2 所示) 帖子信息表(topic) ,用于存储帖子信息。topicid 字段为帖子 id 编号,int 类型,唯一,主键,标量自增;title 字段为帖子的标题;content 字段为帖子的内 容,长度为 8000,类型为 varchar 长度可变类型;publishtime 字段为帖子发表时 间,datetime 类型;modifytime 字段为帖子最近一次修改的时间,datetime
46、类型; uid 字段为用户 id 编号,与 users 表存在主外键约束关系。boardid 字段为版块 id 编号,与 board 版块信息表存在主外键约束关系;filename 字段为附件名字,帖 子显示的时候根据这个名称在服务器路径上面找到相应的附件并显示出来。 表 4.1 board 表 字 段类 型长 度允 许 空 boardidint10 boardnamevarchar50 parentidint10 表 4.2 topic 表 字 段类 型长 度允 许 空 topicidint20 titlevarchar50 contentvarchar8000 publishtimedat
47、etime modifytimedatetime uidint20yes boardidint10yes filenamevarchar100yes 3. reply 表(如表 4.3 所示) 帖子回复信息表(reply) ,用于存储帖子的回复信息。replyid 字段为回复 id 编号,int 类型,唯一,主键,标量自增;title 字段为回复标题;content 字段为回 复内容信息,长度为 1000 的 varchar 可变长度类型;pulishtime 字段为回复的时 间,datetime 类型;modifytime 字段为回复最近一次被修改的时间,datetime 类 型;uid 字
48、段为发表该回复的用户 id 编号,与 users 用户信息表存在主外键约束 关系;topicid 字段为帖子 id 编号,该回复是针对这个帖子而产生的,它与 topic 帖子信息表存在主外键约束关系。 表 4.3 reply 表 字 段类 型长 度允 许 空 replyidint20 titlevarchar50 contentvarchar1000 publishtimedatetime modifytimedatetime uidint20yes topicidint20yes 4. users 表(如表 4.4 所示) uid 字段为用户 id 编号,int 类型,唯一,主键,标量自增;
49、uname 字段为 用户帐号名称;upass 字段为用户密码;head 字段为用户头像,图片名称,页面 显示的时候通过这个图片名称在服务器上找到相应的图片并显示出来;regtime 字段为该帐号注册时间,datetime 类型;gender 字段为用户性别,int 类型,0 代 表男性,1 代表女性;job 字段代表该用户身份,int 类型,0 代表管理员,1 代表 普通用户;amount 字段为该用户所发表的帖子数目;email 字段为用户注册时所 填写的电子邮件地址。 表 4.4 users 表 字 段类 型长 度允 许 空 uidint20 unamevarchar20 upassvar
50、char20 headvarchar100 regtimedatetime gendersmallint jobintyes amountintyes emailvarchar50 .4 数据库设计与完整性数据库设计与完整性 数据库在信息管理系统中占有非常重要的基础地位。一个信息系统数据库结 构设计的好坏,将直接影响到应用程序的效率以及实现的效果。合理的数据库结 构设计不仅仅能够提高数据操作的效率,还应该能够保证数据的完整性和一致性。 对于用户的需求,则具体体现在用户对各种信息的提供、保存、更新、修改和查 询的相关操作,这就要求数据库结构能够充分地理解和满足各种信息的输出和输
51、入的具体要求。详尽地收集基础数据、数据结构并分析获得数据处理的流程,形 成详尽的数据字典,为后续的具体设计工作和开发工作打下坚实的基础。 根据前面对各模块的概要分析与设计,进一步细化和理解,将得到本系统数 据库的详细设计。 实体完整性规则:这条规则要求关系元组在组成主键的属性上不能有空值。 如果出现空值,则主键就起不了唯一标识元组的作用。 本系统数据库遵守该规则,所有主键属性均不为空(设置主键属性后,数据 库自身可以保证该规则完整性) 。 参照完整性规则:如果属性集 k 是关系模式 r1 的主键,k 同时又是另一关 系 r2 上的外键,那么在 r2 的关系中,k 的取值只能有两种可能:空值,或
52、者等 于 r1 关系中某个主键值。这条规则的实质是不允许引用不存在的实体。 本系统数据库同样遵守该规则。出现过的参照完整性规则有: 1、topic 表中的 uid 属性参照 users 表的主键 uid,boardid 属性参照 board 表 的主键 boardid。 2、reply 表中的 uid 属性参照 users 表的主键 uid,topicid 属性参照 topic 表的 主键 topicid。 用户定义的完整性规则:无。 第五章第五章 详细设计详细设计 5.15.1 考研论坛的数据库连接考研论坛的数据库连接 .1 物理结构设计要点物理结构设计要点 系统数据库采用
53、sql server2005。今天的商业环境要求不同类型的数据库解 决方案。性能、可伸缩性及可靠性是基本要求,sql server2005 给数据管理与分 析带来了灵活性。从数据管理和分析角度看,sql server 可以作为一个完备的数 据库和数据分析包。sql server2005 是一个具备完全功能支持的数据库产品,提 供了对可扩展标记语言 (xml) 的核心支持以及在 internet 上和防火墙外进行查 询的能力。 .2 数据库与程序的关系数据库与程序的关系 服务器端程序采用 hibernate 框架来访问数据库: com.microsoft.sqlserver.jd
54、bc.sqlserverdriver jdbc:sqlserver:/localhost:1433;databasename=bbs;selectmethod=cursor sa 123456 update true org.hibernate.dialect.sqlserverdialect 通过上面这段配置即可完成针对 sql server2005 数据库的连接,hibernate 最大的特点就是针对数据库的移植性强,只需改变小小的几条配置,即可完成对 任意一种数据库的移植。 public final class hibernatetool private static sessionfa
55、ctory sf=null; static session session=null; static transaction transaction=null; private hibernatetool() static configuration cf=new configuration(); cf.configure(); sf=cf.buildsessionfactory(); public static sessionfactory getsf() return sf; public static session getsession() return sf.opensession(
56、); public static void close() if(session!=null) session.close(); 通过上面这段代码,我们可以取得与数据库的连接。 public board findboard(int boardid) /通过版块id查找对应的版块信息 board board=null; try session session=hibernatetool.getsession(); board=(board)session.get(board.class, boardid); catch (exception e) system.out.println(findb
57、oard方法使用boardid找版块出异常); e.printstacktrace(); finally hibernatetool.close(); return board; 通过上面这段简洁的代码,我们便完成了一次针对论坛版块的查询,可见 hibernate 的代码是非常简洁与强大的。 5.25.2 功能模块设计功能模块设计 考研论坛的功能模块图(如图 5.1 所示): .1 用户注册登录模块用户注册登录模块 要完成论坛的除开浏览帖子之外的各项操作,用户必须登录论坛系统,如果 没有论坛帐户,用户注册是必须的。用户命令如果是退出,则清除用户的状态信 息(清除存在 sessi
58、on 里面的用户信息) ,并返回 bbs 考研论坛首页,如果是登 录则通过 struts 取得的表单将用户输入的帐号和密码提交控制层的 action,然后 通过数据模型层使用 hibernate 访问数据库进行查询,将得出的结果和用户输入 的信息做比较,如果验证正确,将该用户信息存入 session 与 application 中(之 所以存在 application 中,是为了计算全部在线用户的数目) ,然后控制层控制页 面跳往首页并显示用户已经登录到系统;如果错误则将错误信息返回,以便让用 户发现错误并重新输入。 bbs 考研论坛 系统主要功能模块 用 户 登 录 与 注 册 用 户 信
59、息 管 理 帖 子 发 表 帖 子 回 复、 引 用 及 修 改 首 页 版 块 显 示 论 坛 版 块 管 理 帖 子 管 理 界 面 显 示 管 理 附 件 上 传 与 下 载 图 5.1 bbs 考研论坛软件的功能模块图 如果用户想注册帐户,则进入注册页面,用户填写信息后,将检测信息的正 确性,如果帐号允许注册,则完成帐号的注册,将信息写入到数据库中,如果帐 户已经存在,则返回错误信息,告诉用户帐号存在,请用户重新输入,并完成注 册,进程结束。 在用户注册的界面,使用了 ajax 技术,当用户输入完用户帐号后,客户端 的脚本会在不刷新整个页面的情况下自动将该帐号发送到服务器端,并进入数据
60、 库检测该帐号是否已经存在,存在与否都会及时的返回特定的提示信息到客户端, 然后利用 dom 技术将该信息显示在页面上,此时用户应该还在填写密码或是别的 一些信息,这样做的好处在于可以友好的提示用户所填写的帐号是否已经存在, 并在用户提交整个表单之前及时的进行修改操作,此外还能减轻服务器端的负担, 让客户端完成一部分服务器本应该完成的任务。其流程图如图 5.2 所示:其登录 与注册界面截图(如图 5.3 和图 5.4 所示): 图 5.2 用户登录与注册流程图 图 5.3 用户注册界面 进入考研论坛可选操作 注册 用户输入信息 数据库检测是否成功? 帐号存在 数据库写入 帐号不存在 注册成功
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度年福建省高校教师资格证之高等教育心理学真题练习试卷B卷附答案
- 2024年交通运输设备项目资金需求报告代可行性研究报告
- 一年级数学计算题专项练习1000题汇编
- 2024年个人房产抵押贷款协议范本
- 文书模板-《劳务用工合同》
- 2024年度安置性质房产购买协议典范
- 2024老年专家返聘协议详细条款
- 2024届安徽省皖南八校联盟高三4月(二诊)调研测试卷(康德版)数学试题
- 2024年度建筑资产转让协议样例
- 2024精简型牛肉购销协议文本
- 陕西师范大学学位英语试题
- 中小学反恐风险评估报告
- 品牌营销策略和品牌策略
- 视力矫正商业计划书
- 医学课件:临床决策分析
- 幼儿园优质公开课:中班音乐韵律《打喷嚏的小老鼠》课件
- 质量管理体系品质保证体系图
- 人教版(新插图)三年级上册数学 第9课时 用乘除两步计算 解决-归总问题 教学课件
- 《现代汉语》考试复习题库及答案
- 13J104《蒸压加气混凝土砌块、板材构造》
- 初中语文七年级上册《世说新语二则》作业设计
评论
0/150
提交评论