已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
共 5 页 第 i 页 摘 要 本论文主要阐述“百度搜索引擎”下的“百度知道”系统的设计 思想和实现的关键技术。论文针对互联网使用人员共享知识解决提问 的需求,采用面向对象设计的方法和 jsp,struts 等技术,分析、设 计并实现了百度知道系统。 该系统具有用户登录、注册,发布、回答、查询以及处理问题等 功能,测试表明该系统达到了预期的要求。 论文包括以下几个部分: 第一部分系统分析,通过对用户需求的分析,说明了 * * * *。 第二部分概要设计, 设计了*,* * * *。 第三部分详细设计,设计了* * * *。 第四部分系统实现,通过*完成了*系统的*模块。达 到*。 关键字:jsp struts 搜索引擎 共 5 页 第 ii 页 abstract the thesis is design of system that about baidu know system of baidu search-engine. on the other hand, it expounds the part of design of model and key technology of implementation. with the requirement of the person who uses internet to share knowledge and to resolve problems,it adopts oop(object oriented programming) and jsp, struts technology to analyze, design and implements this system. the system includes the functions that register and question, answer, select and handle the question of user. the test of whole system shows that it has come up the expectation. the thesis mainly includes the following parts: 1. source of the problem. 2. requirement and analysis. 3. system design. 4. detailed design. 5. system implementation. the system is web development application and is based on b/s model. so that i chose the popular web development technology which is based on mvc development model, that is javabean、jsp、servlet and i also used struts framework for this application. the development tools are mainly included dreamweaver 8,eclipse3.2、myeclipse5.1. jude is my uml tool. the database for server is sql server 2000. the development of application includes three part: the 共 5 页 第 iii 页 databases of design、the design of web pages and the coding work. all coding of pages mainly used the jsp and struts tags. for coding part is completely base on struts framework. key words: jsp struts search engine 共 5 页 第 iv 页 目录 第一章 系统分析 .1 1.1 问题来源 1 1.2 选题背景 2 1.2.1 问题定义 .2 1.2.2 选题意义 .2 1.3 系统功能分析 .3 1.4 数据流图 .4 第二章 基础理论知识 .6 2.1 mvc 模式概述 .6 2.2 mvc 如何工作 .7 2.3 struts 概述 8 第三章 概要设计 .9 3.1 系统概述 9 3.2 功能分析 9 3.3 数据库分析 .11 3.3.1 实体的分析 11 3.3.2 实体的属性 11 3.3.3 实体之间的联系 12 3.4 数据库的概念设计 .13 3.5 数据库的逻辑结构设计 .14 共 5 页 第 v 页 3.6 数据库的物理设计 16 第四章 详细设计 18 4.1 数据库连接模块的创建 .19 4.2 用户模块的详细设计 .20 4.3 问题模块的详细设计 .21 4.3.1 百度知道的主要功能设计 21 4.3.2 百度知道的页面及主要核心算法设计 22 4.4 开发工具及环境 .24 第五章 系统实现 26 5.1 用户模块的实现 .26 5.2 问题模块的实现 .27 结束语 .30 参考文献 .31 共 31 页 第 1 页 第一章 系统分析 1.1 问题来源 百度,2000 年 1 月创立于北京中关村,是全球最大的中文网站 、最大的中文搜索引擎。百度每天响应来自 138 个国家超过数亿次的 搜索请求。用户可以通过百度主页,在瞬间找到相关的搜索结果,这 些结果来自于百度超过十数亿的中文网页数据库。同时,用户不必访 问百度主页,也可以搜索信息。超过 20 万个搜索联盟会员,通过各种 方式将百度搜索结合到自己的网站,使用户在上网的任何时候都能进 行百度搜索。百度还提供 wap 与 pda 搜索服务,即使身边没有 pc 机, 用户也可以通过手机或掌上电脑等无线平台进行百度搜索。 百度知道()是一个基于搜索的互动式 知识问答分享平台,于 2005 年 6 月 21 日发布,并于 2005 年 11 月 8 日转为正式版。 和大家习惯使用的搜索服务有所不同,“百度知道”并非是直接 查询那些已经存在于互联网上的内容,而是用户自己根据具体需求有 针对性地提出问题,通过积分奖励机制发动其他用户,来创造该问题 的答案。 同时,这些问题的答案又会进一步作为搜索结果,提供给其 他有类似疑问的用户,达到分享知识的效果。百度知道的最大特点, 就在于和搜索引擎的完美结合,让用户所拥有的隐性知识转化成显性 知识,用户既是百度知道内容的使用者,同时又是百度知道的创造者, 在这里累积的知识数据可以反映到搜索结果中。通过用户和搜索引擎 共 31 页 第 2 页 的相互作用,实现搜索引擎的社区化。百度知道可以说是对过分依靠 技术的搜索引擎的一种人性化完善。 1.2 选题背景 1.2.1问题定义 之所以搜索引擎这么火,大家这么依赖,是因为技术的进步,搜 索引擎技术的进步非常的快。技术进步快,实际上是需求在推动。搜 索最近两年来变得这么火,实际上是需求在推动搜索技术和产业推动。 宽带越来越普及,上网越来越容易,上网的人越来越多,信息量越来 越大。现在已经是非常繁荣的大路,这里面的内容很多很多,搜索一 下初中的初恋情人,可能也会查找他的名字。 “用户提出任何一个问题,很快就会有人帮助回答,通过投票选 出的最佳答案,往往又作为搜索结果被分享到更多用户”,这一简单、 便捷的模式受到了网民的热烈欢迎,同时也改变着网民的日常生活习 惯。网友表示,“生活上一遇到解决不了的问题,我第一个想到的就 是上百度知道”,目前,百度知道每天解决超过 5 万个问题,也就意 味着,通过用户的互动参与,两天时间即可编辑完成一本十万个为 什么。 1.2.2选题意义 众所周知,百度知道已经是一套开发过并且比较成熟完善的正在 互联网上广泛使用的系统了,而之所以我选择这个系统作为我的毕业 设计主要是因为现实中的该系统是由 php 语言开发的,而在大学期间 的所学使我对于 java,jsp 语言有了浓厚兴趣,一方面可以利用自己 所学的知识实现一套正规的系统,更加锻炼自己和提高自己的技术水 共 31 页 第 3 页 平,另外实用 jsp 语言版本开发与真实的系统实现方式不同也大大的 增加我开发的兴趣。所以我选择百度知道这个系统作为我的毕业设计。 1.3系统功能分析 要开发一个应用系统,首先要了解用户对整个系统的具体要求, 确定系统应该实现的功能和系统应该具有的性能;设计应用软件时所 使用的设计平台,所开发的应用软件的运行环境;通过调查分析去了 解系统的业务流程,确定数据库设计中需要的数据结构;还要分析系 统中的数据流和长期使用的数据存储等等,这些都是需求分析中应该 完成的任务。本章采用软件工程的方法对“百度知道”模块进行了需 求分析。 “百度知道”是一个基于搜索的互动式知识问答分享平台。它实 现登录用户在线提问回答并解决问题共享知识的过程。该平台的维护 为自动维护,由定义规则进行数据的维护,默认不设网站管理员角色。 1.用户角色: 普通用户(只有查询权限,无需登录) 、信息发布用户(提问和回 答问题的用户) 2.功能模块划分: (1)问题信息查询(普通用户) 1)按照问题的栏目进行问题信息查询 2)按照问题的标题内容进行问题信息的查询 3)按照问题的状态(解决,待解决)来进行问题信息的查询 共 31 页 第 4 页 4)查询全部信息 (2)问题信息的管理(注册用户) 1)提出问题 2)对自己提出的提问进行信息处理 3)回答待解决的问题 4)问题信息查询 每一个模块的功能详见总体设计。 1.4数据流图 根据该系统问题的需求进行分析,使用数据流图示描述数据处理 过程。数据流图从数据传递和加工的角度,以图形的方式刻画数据流 从输入到输出的传输变换过程。数据流图是结构化系统分析的主要工 具,它表示了系统内部信息的流向,并表现系统的逻辑处理功能。 (数据流图描述数据处理过程,起点和终点必须是人,用矩形表示; 处理过程是动作,用圆角矩形表示;数据存储就是数据表,用开口矩 形表示;请大家注意,参考软件工程书画图) 图 1-1 用户模块的数据流图 结果信息用户信息注册请求游客 用户 1 接收 请求 用户表 d1 游客用户 查询信息 问题 信息登录 请求 回答 显 示 主 页 修改信息 注册 用户 问题表 d2 提问 显示问题 问题列表 回答 问题 注册 用户 问题表 d2 回答表 d3 注册 用户 结果 结果 修改信息 问题编号 提问请求 图 1-2 问题模块的数据流图 回答表 d3 显示问 题列表 指定 问题 回答列表 结 果 结果 共 31 页 第 5 页 数据流图中的一些专业词汇在数据字典中解释如下: (请注意:数据字典是解释前面的数据流图中出现的容易产生歧义的 词,没有数据流图只出现数据字典是毫无意义的。在数据流图中没有 的词出现在数据字典中也是毫无意义的。 ) 名字:问题列表 别名: 描述:问题列表所有问题的分类统计列表, 待解决 10 个,已解决和最佳问题各 5 个 定义:待解决问题以解决问题最佳问题 位置:百度知道首页 名字:回答列表 别名: 描述:针对某一问题的所有回答 定义:回答列表回答编号回答内容回 答者编号问题编号回答状态 位置:问题页面 名字:问题编号 别名:问题 id 描述:唯一标识问题的字段 定义:问题编号数字 位置:问题表 共 31 页 第 6 页 第二章 基础理论知识 百度知道系统的设计采用了 jsp,struts 框架来实现,因此从采 用了 mvc 结构模式进行开发。整个开发的过程也是完全按照 struts 框 架结构进行的。下面了解一下 mvc 开发模式和 struts 框架技术。 2.1 mvc模式概述 mvc 本来是存在于 desktop 程序中的,m 是指数据模型,v 是指用 户界面,c 则是控制器。使用 mvc 的目的是将 m 和 v 的实现代码分离, 从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可 以分别用柱状图、饼图来表示。c 存在的目的则是确保 m 和 v 的同步, 一旦 m 改变,v 应该同步更新。 模型视图控制器(mvc)是 xerox parc 在八十年代为编程语言 smalltalk80 发明的一种软件设计模式,至今已被广泛使用。最近 几年被推荐为 sun 公司 j2ee 平台的设计模式,并且受到越来越多的使 用 coldfusion 和 php 的开发者的欢迎。模型视图控制器模式是 一个有用的工具箱,它有很多好处,但也有一些缺点。 mvc 模式是“model-view-controller”的缩写,中文翻译为“模 式-视图-控制器” 。mvc 应用程序总是由这三个部分组成。event(事件)导 致 controller 改变 model 或 view,或者同时改变两者。只要 controller 改变了 models 的数据或者属性,所有依赖的 view 都会自 动更新。类似的,只要 controller 改变了 view,view 会从潜在的 model 中获取数据来刷新自己。mvc 模式最早是 smalltalk 语言研究团 提出的,应用于用户交互应用程序中。smalltalk 语言和 java 语言有 共 31 页 第 7 页 很多相似性,都是面向对象语言,很自然的 sun 在 potstone(宠物店) 事例应用程序中就推荐 mvc 模式作为开发 web 应用的架构模式。mvc 模式是一种架构模式,其实需要其他模式协作完成。在 j2ee 模式目录 中,通常采用 service to worker 模式实现,而 service to worker 模式可由集中控制器模式,派遣器模式和 page helper 模式组成。 2.2 mvc如何工作 mvc 是一个设计模式,它强制性的使应用程序的输入、处理和输 出分开。使用 mvc 应用程序被分成三个核心部件:模型、视图、控制 器。它们各自处理自己的任务。 1.视图 视图是用户看到并与之交互的界面。对老式的 web 应用程序来说, 视图就是由 html 元素组成的界面,在新式的 web 应用程序中,html 依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们 包括 macromedia flash 和类 xhtml,xml/xsl,wml 等一些标识语言和 web services。 2.模型 模型表示企业数据和业务规则。在 mvc 的三个部件中,模型拥有 最多的处理任务。例如它可能用像 ejbs 和 coldfusion components 这 样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模 型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用 于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的 重复性。 3.控制器 共 31 页 第 8 页 控制器接受用户的输入并调用模型和视图去完成用户的需求。所 以当单击 web 页面中的超链接和发送 html 表单时,控制器本身不输出 任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去 处理请求,然后用确定用哪个视图来显示模型处理返回的数据。 现在我们总结 mvc 的处理过程,首先控制器接收用户的请求,并 决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户 的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据, 并通过表示层呈现给用户。 2.3 struts概述 struts 最早是作为 apache jakarta 项目的组成部分问世运作。 项目的创立者希望通过对该项目的研究,改进和提高 java server pages、servlet、标签库以及面向对象的技术水准。 struts 这个名字来源于在建筑和旧式飞机中使用的支持金属架。 它的目的是为了减少在运用 mvc 设计模型来开发 web 应用的时间。你 仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。 除此之外,struts 的优点主要集中体现在两个方面:taglib 和页 面导航。taglib 是 struts 的标记库,灵活动用,能大大提高开发效 率。另外,就目前国内的 jsp 开发者而言,除了使用 jsp 自带的常用 标记外,很少开发自己的标记,或许 struts 是一个很好的起点。 struts 是 mvc 的一种实现,它将 servlet 和 jsp 标记(属于 j2ee 规范)用作实现的一部分。struts 继承了 mvc 的各项特性,并根据 j2ee 的特点,做了相应的变化与扩展。 共 31 页 第 9 页 第三章 概要设计 百度知道是一个基于搜索的互动式知识问答分享平台。和大家习 惯使用的搜索服务有所不同, “百度知道”并非是直接查询那些已经存 在于互联网上的内容,而是用户自己根据具体需求有针对性地提出问 题,通过积分奖励机制发动其他用户,来创造该问题的答案。 同时, 这些问题的答案又会进一步作为搜索结果,提供给其他有类似疑问的 用户,达到分享知识的效果。 3.1 系统概述 该系统的最大特点,就在于和搜索引擎的完美结合,让用户所拥 有的隐性知识转化成显性知识,用户既是本系统内容的使用者,同时 又是该系统的创造者,在这里累积的知识数据可以反映到搜索结果中。 通过用户和搜索引擎的相互作用,实现搜索引擎的社区化。 3.2 功能分析 下面我们着重介绍各个模块的具体功能以及设计要求。 根据需求分析,得到了本系统应该具有的功能,下面具体分析本 系统的功能模块。经过分析, “百度知道”大致分为两大模块六大功能。 即用户模块,用户处理问题模块。两个模块的功能分别为: 1.用户模块 (1)用户注册。 (2)用户登录。 2. 用户处理问题模块 (1)问题发布。 (2)问题查询。 共 31 页 第 10 页 (3)回答问题。 (4)解决问题。 系统的层次图如图 31 百度知道系统的层次图所示: 图 3-1 百度知道系统的层次图 (注意:层次图按照功能模块来划分) 系统各功能部分说明如下: 1.用户模块:主要包括对用户的注册以及登录的功能。 2.问题模块,主要包括以下几个功能的实现: (1)问题发布:已登录用户发布新的问题。 (2)问题回答:其他用户对已存在问题的回答以及提问用户对自己问题 的补充。 百度知道系统 用户模块用户操作问题模块 用 户 登 录 用 户 注 册 问 题 发 布 回 答 问 题 解 决 问 题 查 询 问 题 共 31 页 第 11 页 (3)解决提问:提问用户将其他用户对于自己提出问题的某个回答设为 最佳答案或者问题长时间未处理自动过期。 (4)查询问题:注册用户登录或者游客用户访问系统时对问题的分类浏 览以及对于单个问题的信息查询。 3.3 数据库分析 3.3.1实体的分析 根据百度知道的总体设计,我们定义了百度知道整个系统分为两 大模块和六大功能。由此我们可以首先确定百度知道的两大实体:用 户和问题,而由于用户可以根据提问来进行回答,所以问题答案也是 实体。因此该系统共有三个实体。 1.用户实体。 2.问题实体。 3.问题答案实体。 3.3.2实体的属性 百度知道系统涉及到的实体分别为用户实体,问题实体,问题答 案实体。根据系统需求,我们将以下实体的属性确定如下: 1.用户实体,包含所有百度知道的注册用户信息,其详细的属性如下: (1)客户编号。 (2)客户名称。 (3)客户密码。 (4)真实姓名。 (5)性别。 共 31 页 第 12 页 (6)身份证号。 (7)电子邮件。 (8)用户积分。 (9)用户权限。 2.问题实体,包含所有用户提出的问题的信息,其详细的属性如下: (1)问题编号。 (2)问题标题。 (3)问题内容。 (4)提问者 id。 (5)所在栏目号。 (6)问题状态。 (7)奖赏分数。 (8)回答次数。 (9)发布时间。 3.问题答案实体,包含所有问题回答的属性,其详细的属性如下: (1)回答编号。 (2)问题编号。 (3)回答标题。 (4)回答内容。 (5)回答状态。 (6)回答者编号。 3.3.3实体之间的联系 通过对百度知道系统中所需实体以及属性的分析,我们已经对于 共 31 页 第 13 页 百度知道的数据模型有了一定的了解,由此我们可以确定三大实体之 间的联系。 1.每一位注册用户都可以提出若干问题,发布问题信息。但是每个问 题只能由一个用户提出,即只能和一个用户关联。 2.每个用户都可以对某一问题发表若干回答。但是每一项回答 只能由 一个用户发表,即只能和一个用户关联。 3.每个问题都会有零到多个回答,每个回答也可以发表到不同的问题 上去。即多个问题有多个回答。 3.4 数据库的概念设计 通常使用实体联系图来建立数据模型。可以把实体联系图简 称为 er 图,相应的可把用 er 图描绘的数据模型称为 er 模型。 百度知道的实体-联系图如图 3-2 百度知道的 er 图所示: (注意:er 图描绘的是数据之间的关系,矩形代表实体;圆角矩 形或椭圆代表属性;菱形代表实体和实体之间的关系;在实体关系的 实线上要标出数字代表对应关系,1:1 或 1:n 或 m:n) 共 31 页 第 14 页 图 3-2 百度知道的 er 图 3.5 数据库的逻辑结构设计 表 3-1 用户表 作用 保存客户的信息 名称 user_info 序号 英文字段名 中文字段名 数据类型 长度 是否关键字 备注 1 user_id 用户编号 int 主键 自动编号 2 user_name 用户名称 varchar 30 3 user_pwd 用户密码 varchar 30 4 user_realname 真实姓名 varchar 30 5 user_sex 性别 int 0:男 1:女 6 user_idcard 身份证号 varchar 18 7 user_email 电子邮件 varchar 50 8 user_score 用户积分 int 9 user_limit 用户权限 int 0:管理员 1:普通用户 1 n 1 用户 问题 回答 编号 真名 密码 昵称 邮件 身份证 性别 积分 权限 提问 属于 n 编号 内容 提问者编号 时间 标题 悬赏分数 栏目号 回答数 标题 编号 时间 问题编号 状态 回答者编号 内容 问题状态 发表 n1 共 31 页 第 15 页 表 3-2 问题表 作用 保存客户提出的问题 名称 question_info 序号 英文字段名 中文字段名 数据类型 长度 是否关键 字 备注 1 ques_id 问题编号 int 10 主键 自动编号 2 ques_title 问题标题 varchar 100 3 ques_context 问题内容 varchar 2000 4 user_id 提问者 id int 外键 5 item_id 所在栏目号 int 外键 0:男 1:女 6 ques_status 问题状态 int 10: 最佳 1: 待解决 2: 已解决 7 ques_score 奖赏分数 int 8 ques_count 回答次数 int 9 ques_date 发布时间 date 表 3-3 回答表 作用 保存问题答案 名称 result_info 序号 英文字段名 中文字段名 数据类型 长度 是否关键字 备注 1 res_id 回答编号 int 主键 自动编号 2 ques_id 问题编号 int 外键 3 res_title 回答标题 varchar 100 4 res_date 回答时间 date 5 res_context 回答内容 varchar 2000 6 res_status 回答状态 int 1:最佳 0:普通 7 user_id 回答者编号 int 共 31 页 第 16 页 表 3-4 栏目表 作用 显示栏目 名称 item_info 序号 英文字段名 中文字段名 数据类型 长度 是否关键字 备注 1 item_id 栏目编号 int 主键 自动编号 2 item_name 栏目名称 varchar 200 3.6数据库的物理设计 1.创建用户表 create table user_info(-用户表,保存客户的信息 user_id int primary key identity(1,1),-客户编号 user_name varchar(30),-客户名称 user_pwd varchar(30),-客户密码 user_realname varchar(30),-真实姓名 user_sex int,-性别 user_idcard varchar(18),-身份证号 user_email varchar(50),-电子邮件 user_score int,-用户积分 user_limit int-用户权限 ) 2.创建问题表 create table question_info(-问题表,保存客户提出的问题 ques_id int primary key identity(1,1),-问题编号 ques_title varchar(30),-问题标题 ques_context varchar(2000),-问题内容 user_id int references user_info,-提问者 id 共 31 页 第 17 页 item_id int references item_info,-所在栏目号 ques_status int,-问题状态 ques_score int,-奖赏分数 ques_date datetime, -发布时间 ques_count int -回复数 ) 3.创建回答表 create table result_info(-回答表,保存问题答案 res_id int primary key identity(1,1),-答案编号 ques_id int references question_info,-问题编号 res_title varchar(200),-答案标题 res_context varchar(2000),-答案内容 res_date datetime,-答题时间 res_status int,-答案状态 user_id int references user_info-答题者编号 ) 4.创建栏目表 create table item_info(-栏目表,显示栏目 item_id int primary key identity(1,1),-栏目编号 item_name varchar(200),-栏目名称 item_type int,-栏目种类 ) 共 31 页 第 18 页 第四章 详细设计 通过系统分析和概要设计,对百度知道系统已经有了一个比较详 细的了解。整个系统的设计完全依据基于 struts 框架的 mvc 开发模式 完成。其中包结构也是按照 mvc 模式进行分层。整体开发分五个包。 分别是 action,dao,form,util,model。其中 action 可以看作 servlet 控制层,dao 是数据库连接持久化层,form 则是 javabean 与 model 模式层的实体类共同构成视图层,util 是通用工具包。 (注意:类图代表各个类之间的关系,可以用现有工具画,但是 一定要清晰) 图 4-1 百度知道的类图 共 31 页 第 19 页 整个视图层主要是由 jsp 页面来完成,而为了更好的实现的百度 知道的页面效果,本系统采用了 struts 框架中的 tiles 页面框架标签 来设计页面。将主体页面拆分成上中下三部分。整个视图层主要包括 一下几个 jsp 页面文件。 1. addquestion.jsp 提问页面的主体页面。 2. addquesstioncontent.jsp 发布问题的主题页面。 3. answer.jsp 回答问题框架页面。 4. answercontent.jsp 回答问题的主题页面。 5. footer.jsp tiles 框架。 6. header.jsp tiles 框架页面的头框架页面。 7. indexcontent.jsp 主页的主体页面。 8. layout.jsp tiles 页面框架布局设置。 9. login.jsp 登录页面。 10.main.jsp 主框架页面。 11.questionlist.jsp 问题列表框架页面。 12.questionlistcontent.jsp 问题列表主页主体页面。 13.register.jsp 注册页面。 14.result.jsp 发布问题后框架页面。 15.resultcontent.jsp 发布问题后主体页面。 16.staticjavascript.jsp 静态 javascript 加载页面。 4.1 数据库连接模块的创建 由于本系统是基于 struts 结构开发而成,struts1.1 框架中集成 了数据源配置和管理功能。即在 struts 框架下的 struts_config.xml 共 31 页 第 20 页 文件中配置 data-source 标签来定义和配置数据源,使得启动 tomcat 服务器的同时便由容器加载数据源以方便使用。当然,获得数据源之 后的数据库操作的管理是用数据库连接对象 dao 开发模式完成。在项 目下的 dao 包里包含着数据库连接操作的实现。由于本模块是数据库 连接以及持久化层操作模块所以不包含任何关联页面。 本模块所包含的类如下: 1.dao 类 数据库连接对象的父类,包含操作数据库的公共方法和获取 数据源的方法。 2.indexdao 类 继承了 dao 父类,包含了主页 index 类显示问题列表 的所有数据库查询操作方法。 3.userdao 类 继承了 dao 父类,包含了对于用户的注册,存在判断, 查询用户信息等方法。 4.questiondao 类 继承了 dao 父类,包含了对于问题以及问题回答等 增删改查操作的方法。 4.2用户模块的详细设计 用户模块主要包括用户注册以及用户查询等功能,主要包括 register.jsp,login.jsp。本模块主要包括 userdao 类,useraction 类的设计以及 model 包中 user 类的设计。而本模块主要包含的是用户 注册和登录的功能。 1.用户注册的过程 (1)用户在注册页面输入数据。 (2)首先在页面用 javascript 对用户输入数据格式和有效性进行检查。 共 31 页 第 21 页 (3)判断用户名是否存在。 (4)向用户表插入用户信息。 (5)全部正常,跳转到用户登录页面。 2.用户登录的过程 (1)用户在登录页面输入登录信息。 (2)在页面用 javascript 对用户输入数据格式和有效性进行检查。 (3)在数据库中判断是否存在某一列满足用户名和密码为用户输入的数 据,存在则通过。 (4)将用户基本信息保存在 session 对象中。 (5)全部正常,跳转到百度知道首页。 4.3 问题模块的详细设计 问题模块是百度知道系统的核心模块,在这一模块中包含了百度 知道系统的主要运行逻辑和所有的问题及搜索相关功能。主要设计的 页面有主页问题列表显示页、问题发布页、问题查询页、问题回答页、 问题补充及处理页面。本模块主要设计的功能也就是发布,查询,回 答,处理问题的四个功能。 4.3.1百度知道的主要功能设计 百度知道系统实现的主要功能设计要点如下: 1.主页问题列表显示 (1)问题状态 1 待解决问题 10 个。 (2)问题状态 2 已解决问题 5 个。 (3)问题状态 10 最佳问题 5 个。 2.用户发布问题 共 31 页 第 22 页 (1)首先只有注册用户才能发布问题。 (2)发布问题必须有标题。 (3)发布问题必须设置问题的悬赏分数。 3.用户回答问题 (1)首先只有注册的用户才能回答问题。 (2)非注册问题只可以浏览问题。 (3)回答问题至少要有回答标题。 (4)回答问题用户必须是非提问用户。 4.用户查询问题 (1)查询问题的用户可以是游客用户也可以是注册用户。 (2)查询问题按照关键字进行问题检索,检索结果为问题列表。 (3)查询问题的功能在百度知道主页实现。 5.补充及处理问题 (1)补充和处理问题的用户必须是提问用户。 (2)提问用户必须登录才能提问。 (3)补充及处理问题不能超过问题未处理时限。 (4)用户设为最佳答案以后即将奖赏分数加给最佳答案用户。 (5)一切正常,结束问题。 4.3.2百度知道的页面及主要核心算法设计 1.answercontent.jsp 问题浏览及回答页面 回答问题也就是问题浏览页面是问题模块的核心部分,也是算法 集中的部分。其中在本页面有几个关键的标签属性完成了本算法的逻 辑判断。 共 31 页 第 23 页 (1)logic:equal 逻辑相等判断。 (2)logic:empty 逻辑为空判断。 (3)logic:notempty 逻辑不为空判断。 (4)logic:iterate 逻辑迭代判断。 本算法主要涉及到的几个标志性对象为: (1)flag1 用户是否为提问用户判断标签。 (2)flag2 问题是否解决判断标签。 (3)question 问题信息实体对象。 (4)answerlist 回答列表。 (5)user 登录用户的用户信息实体对象。 (6)pagerheader 分页标签条,由 util 包下的 pager 类生成。 (7)answersize 回答列表的大小,用来统计回答数。 2.问题浏览及回答页面整个算法的流程 (1)判断 flag2 的值 true 则显示待解决,false 则显示已解决。 (2)question 对象里取出问题标题,悬赏分,提问者并在页面上显示 出来。 (3)answerlist 中取出回答列表显示答案信息。 (4)根据 answerlist 中答案状态如果为 1 则显示最佳答案信息,并显 示其他回答标签。 (5)如果答案状态为 0 则将显示回答标签并且显示回答信息。 (6)根据回答列表进行分页,显示 pageheader 分页条。 (7)判断 flag1 和 flag2 标签 如果同时为 true 则显示采纳为答案标签。 共 31 页 第 24 页 (8)如果 flag2 为 true 且 user 对象非空,则显示我也来回答标签。 (9)每种问题处理后显示回答列表的统计数目。 3.pager 分页类算法的设计 分页算法是 web 页面设计中最常用的算法之一,pager 类中本算 法的属性如下: (1)offset 分页截取开始的位置。 (2)size 所有数据列表的大小。 (3)length 每页显示的数据项。 (4)url 进行分页请求的路径。 (5)pref 参数标志,&或者?。 (6)totalpage 总页数。 (7)currentpage 当前页。 分页条生成的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《工程伦理》大二题集
- 平面设计 毕业论文
- 南宁2024年小学六年级英语第二单元期中试卷
- 2024-2025学年苏科版物理九年级上学期期中模拟测试卷(二)
- 2024年10版小学五年级英语第五单元期中试卷
- 2024年非机械驱动车辆项目投资申请报告代可行性研究报告
- 2024-2025学年高一上学期英语语法填空每日一练4(2篇含解析)
- 2024年醌类项目资金需求报告代可行性研究报告
- 2024年院前急救信息系统项目投资申请报告代可行性研究报告
- 【北师】期中模拟卷01【1-5章】
- 《中药竹罐治疗颈椎病的应用进展综述【3000字论文】》
- 第六章革命军队建设和军事战略的理论
- 年度取用水计划申请表
- 文网文业务发展报告(XX单位)
- 硬笔书法章法课件
- 养老院老人入院风险告知书4篇
- 智能制造专业群建设(智能制造业专业技术学校创业计划)课件整理
- 钢直梯安全验收(检查)表
- 设备基础施工方案及安全措施
- 用电安全检查记录表
- 部编版语文六年级上册《口语交际》专项练习
评论
0/150
提交评论