版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、摘摘 要要 本論文主要闡述“百度搜索引擎”下的“百度知道”系統(tǒng)的設(shè)計 思想和實現(xiàn)的關(guān)鍵技術(shù)。論文針對互聯(lián)網(wǎng)使用人員共享知識解決提問 的需求,采用面向?qū)ο笤O(shè)計的方法和 jsp,struts 等技術(shù),分析、設(shè) 計并實現(xiàn)了百度知道系統(tǒng)。 該系統(tǒng)具有用戶登錄、注冊,發(fā)布、回答、查詢以及處理問題等 功能,測試表明該系統(tǒng)達到了預(yù)期的要求。 論文包括以下幾個部分: 第一部分系統(tǒng)分析,通過對用戶需求的分析,說明了 * * * *。 第二部分概要設(shè)計, 設(shè)計了*,* * * *。 第三部分詳細(xì)設(shè)計,設(shè)計了* * * *。 第四部分系統(tǒng)實現(xiàn),通過*完成了*系統(tǒng)的*模塊。達 到*。 關(guān)鍵字:jsp struts 搜
2、索引擎 abstractabstract 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
3、 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 the
4、sis 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 o
5、n 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
6、 part: the 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 目錄 第一章 系統(tǒng)分析.1 1.1 問題來源 .1 1.2 選題背景 .2 1.2.1 問題定義.2 1.2.2 選題意義.2 1.3 系統(tǒng)功能分析.
7、3 1.4 數(shù)據(jù)流圖.4 第二章 基礎(chǔ)理論知識.6 2.1 mvc 模式概述.6 2.2 mvc 如何工作.7 2.3 struts 概述.8 第三章 概要設(shè)計.9 3.1 系統(tǒng)概述 .9 3.2 功能分析 .9 3.3 數(shù)據(jù)庫分析 .11 3.3.1 實體的分析.11 3.3.2 實體的屬性.11 3.3.3 實體之間的聯(lián)系.12 3.4 數(shù)據(jù)庫的概念設(shè)計 .13 3.5 數(shù)據(jù)庫的邏輯結(jié)構(gòu)設(shè)計 .14 3.6 數(shù)據(jù)庫的物理設(shè)計.16 第四章 詳細(xì)設(shè)計.18 4.1 數(shù)據(jù)庫連接模塊的創(chuàng)建 .19 4.2 用戶模塊的詳細(xì)設(shè)計 .20 4.3 問題模塊的詳細(xì)設(shè)計 .21 4.3.1 百度知道的主要
8、功能設(shè)計.21 4.3.2 百度知道的頁面及主要核心算法設(shè)計.22 4.4 開發(fā)工具及環(huán)境 .24 第五章 系統(tǒng)實現(xiàn).26 5.1 用戶模塊的實現(xiàn) .26 5.2 問題模塊的實現(xiàn) .27 結(jié)束語.30 參考文獻.31 第一章第一章 系統(tǒng)分析系統(tǒng)分析 1.11.1 問題來源問題來源 百度,2000 年 1 月創(chuàng)立于北京中關(guān)村,是全球最大的中文網(wǎng)站 、最大的中文搜索引擎。百度每天響應(yīng)來自 138 個國家超過數(shù)億次的 搜索請求。用戶可以通過百度主頁,在瞬間找到相關(guān)的搜索結(jié)果,這 些結(jié)果來自于百度超過十?dāng)?shù)億的中文網(wǎng)頁數(shù)據(jù)庫。同時,用戶不必訪 問百度主頁,也可以搜索信息。超過 20 萬個搜索聯(lián)盟會員,通
9、過各種 方式將百度搜索結(jié)合到自己的網(wǎng)站,使用戶在上網(wǎng)的任何時候都能進 行百度搜索。百度還提供 wap 與 pda 搜索服務(wù),即使身邊沒有 pc 機, 用戶也可以通過手機或掌上電腦等無線平臺進行百度搜索。 百度知道(http:/)是一個基于搜索的互動式 知識問答分享平臺,于 2005 年 6 月 21 日發(fā)布,并于 2005 年 11 月 8 日轉(zhuǎn)為正式版。 和大家習(xí)慣使用的搜索服務(wù)有所不同,“百度知道”并非是直接 查詢那些已經(jīng)存在于互聯(lián)網(wǎng)上的內(nèi)容,而是用戶自己根據(jù)具體需求有 針對性地提出問題,通過積分獎勵機制發(fā)動其他用戶,來創(chuàng)造該問題 的答案。 同時,這些問題的答案又會進一步作為搜索結(jié)果,提供
10、給其 他有類似疑問的用戶,達到分享知識的效果。百度知道的最大特點, 就在于和搜索引擎的完美結(jié)合,讓用戶所擁有的隱性知識轉(zhuǎn)化成顯性 知識,用戶既是百度知道內(nèi)容的使用者,同時又是百度知道的創(chuàng)造者, 在這里累積的知識數(shù)據(jù)可以反映到搜索結(jié)果中。通過用戶和搜索引擎 的相互作用,實現(xiàn)搜索引擎的社區(qū)化。百度知道可以說是對過分依靠 技術(shù)的搜索引擎的一種人性化完善。 1.21.2 選題背景選題背景 .1 問題定義問題定義 之所以搜索引擎這么火,大家這么依賴,是因為技術(shù)的進步,搜 索引擎技術(shù)的進步非常的快。技術(shù)進步快,實際上是需求在推動。搜 索最近兩年來變得這么火,實際上是需求在推動搜索技術(shù)和產(chǎn)業(yè)
11、推動。 寬帶越來越普及,上網(wǎng)越來越容易,上網(wǎng)的人越來越多,信息量越來 越大?,F(xiàn)在已經(jīng)是非常繁榮的大路,這里面的內(nèi)容很多很多,搜索一 下初中的初戀情人,可能也會查找他的名字。 “用戶提出任何一個問題,很快就會有人幫助回答,通過投票選 出的最佳答案,往往又作為搜索結(jié)果被分享到更多用戶”,這一簡單、 便捷的模式受到了網(wǎng)民的熱烈歡迎,同時也改變著網(wǎng)民的日常生活習(xí) 慣。網(wǎng)友表示,“生活上一遇到解決不了的問題,我第一個想到的就 是上百度知道”,目前,百度知道每天解決超過 5 萬個問題,也就意 味著,通過用戶的互動參與,兩天時間即可編輯完成一本十萬個為 什么。 .2 選題選題意義意義 眾所周
12、知,百度知道已經(jīng)是一套開發(fā)過并且比較成熟完善的正在 互聯(lián)網(wǎng)上廣泛使用的系統(tǒng)了,而之所以我選擇這個系統(tǒng)作為我的畢業(yè) 設(shè)計主要是因為現(xiàn)實中的該系統(tǒng)是由 php 語言開發(fā)的,而在大學(xué)期間 的所學(xué)使我對于 java,jsp 語言有了濃厚興趣,一方面可以利用自己 所學(xué)的知識實現(xiàn)一套正規(guī)的系統(tǒng),更加鍛煉自己和提高自己的技術(shù)水 平,另外實用 jsp 語言版本開發(fā)與真實的系統(tǒng)實現(xiàn)方式不同也大大的 增加我開發(fā)的興趣。所以我選擇百度知道這個系統(tǒng)作為我的畢業(yè)設(shè)計。 1.31.3 系統(tǒng)功能分析系統(tǒng)功能分析 要開發(fā)一個應(yīng)用系統(tǒng),首先要了解用戶對整個系統(tǒng)的具體要求, 確定系統(tǒng)應(yīng)該實現(xiàn)的功能和系統(tǒng)應(yīng)該具有的性能;設(shè)計應(yīng)用軟
13、件時所 使用的設(shè)計平臺,所開發(fā)的應(yīng)用軟件的運行環(huán)境;通過調(diào)查分析去了 解系統(tǒng)的業(yè)務(wù)流程,確定數(shù)據(jù)庫設(shè)計中需要的數(shù)據(jù)結(jié)構(gòu);還要分析系 統(tǒng)中的數(shù)據(jù)流和長期使用的數(shù)據(jù)存儲等等,這些都是需求分析中應(yīng)該 完成的任務(wù)。本章采用軟件工程的方法對“百度知道”模塊進行了需 求分析。 “百度知道”是一個基于搜索的互動式知識問答分享平臺。它實 現(xiàn)登錄用戶在線提問回答并解決問題共享知識的過程。該平臺的維護 為自動維護,由定義規(guī)則進行數(shù)據(jù)的維護,默認(rèn)不設(shè)網(wǎng)站管理員角色。 1.用戶角色: 普通用戶(只有查詢權(quán)限,無需登錄) 、信息發(fā)布用戶(提問和回 答問題的用戶) 2.功能模塊劃分: (1)問題信息查詢(普通用戶) 1)
14、按照問題的欄目進行問題信息查詢 2)按照問題的標(biāo)題內(nèi)容進行問題信息的查詢 3)按照問題的狀態(tài)(解決,待解決)來進行問題信息的查詢 4)查詢?nèi)啃畔?(2)問題信息的管理(注冊用戶) 1)提出問題 2)對自己提出的提問進行信息處理 3)回答待解決的問題 4)問題信息查詢 每一個模塊的功能詳見總體設(shè)計。 1.41.4 數(shù)據(jù)流圖數(shù)據(jù)流圖 根據(jù)該系統(tǒng)問題的需求進行分析,使用數(shù)據(jù)流圖示描述數(shù)據(jù)處理 過程。數(shù)據(jù)流圖從數(shù)據(jù)傳遞和加工的角度,以圖形的方式刻畫數(shù)據(jù)流 從輸入到輸出的傳輸變換過程。數(shù)據(jù)流圖是結(jié)構(gòu)化系統(tǒng)分析的主要工 具,它表示了系統(tǒng)內(nèi)部信息的流向,并表現(xiàn)系統(tǒng)的邏輯處理功能。 (數(shù)據(jù)流圖描述數(shù)據(jù)處理過
15、程,起點和終點必須是人,用矩形表示; 處理過程是動作,用圓角矩形表示;數(shù)據(jù)存儲就是數(shù)據(jù)表,用開口矩 形表示;請大家注意請大家注意,參考軟件工程書畫圖) 圖圖 1-11-1 用戶模塊的數(shù)據(jù)流圖用戶模塊的數(shù)據(jù)流圖 結(jié)果信息用戶信息注冊請求游客 用戶 1 接收 請求 用戶表 d1 游客 用戶 查詢信息 問題 信息 登錄 請求 回答 顯 示 主 頁 修改信息 注冊 用戶 問題表 d2 提問 顯示問題 問題列表 回答 問題 注冊 用戶 問題表 d2 回答表 d3 注冊 用戶 結(jié)果 結(jié)果 修改信息 問題編號 提問請求 圖圖 1-21-2 問題模塊的數(shù)據(jù)流圖問題模塊的數(shù)據(jù)流圖 回答表 d3 顯示問 題列表
16、指定 問題 回答列表 結(jié) 果 結(jié)果 數(shù)據(jù)流圖中的一些專業(yè)詞匯在數(shù)據(jù)字典中解釋如下: (請注意:請注意:數(shù)據(jù)字典是解釋前面的數(shù)據(jù)流圖中出現(xiàn)的容易產(chǎn)生歧義的 詞,沒有數(shù)據(jù)流圖只出現(xiàn)數(shù)據(jù)字典是毫無意義的。在數(shù)據(jù)流圖中沒有 的詞出現(xiàn)在數(shù)據(jù)字典中也是毫無意義的。 ) 名字:問題列表 別名: 描述:問題列表所有問題的分類統(tǒng)計列表, 待解決 10 個,已解決和最佳問題各 5 個 定義:待解決問題以解決問題最佳問題 位置:百度知道首頁 名字:回答列表 別名: 描述:針對某一問題的所有回答 定義:回答列表回答編號回答內(nèi)容回 答者編號問題編號回答狀態(tài) 位置:問題頁面 名字:問題編號 別名:問題 id 描述:唯一標(biāo)
17、識問題的字段 定義:問題編號數(shù)字 位置:問題表 第二章第二章 基礎(chǔ)理論知識基礎(chǔ)理論知識 百度知道系統(tǒng)的設(shè)計采用了 jsp,struts 框架來實現(xiàn),因此從采 用了 mvc 結(jié)構(gòu)模式進行開發(fā)。整個開發(fā)的過程也是完全按照 struts 框 架結(jié)構(gòu)進行的。下面了解一下 mvc 開發(fā)模式和 struts 框架技術(shù)。 2.12.1 mvcmvc 模式概述模式概述 mvc 本來是存在于 desktop 程序中的,m 是指數(shù)據(jù)模型,v 是指用 戶界面,c 則是控制器。使用 mvc 的目的是將 m 和 v 的實現(xiàn)代碼分離, 從而使同一個程序可以使用不同的表現(xiàn)形式。比如一批統(tǒng)計數(shù)據(jù)你可 以分別用柱狀圖、餅圖來表
18、示。c 存在的目的則是確保 m 和 v 的同步, 一旦 m 改變,v 應(yīng)該同步更新。 模型視圖控制器(mvc)是 xerox parc 在八十年代為編程語言 smalltalk80 發(fā)明的一種軟件設(shè)計模式,至今已被廣泛使用。最近 幾年被推薦為 sun 公司 j2ee 平臺的設(shè)計模式,并且受到越來越多的使 用 coldfusion 和 php 的開發(fā)者的歡迎。模型視圖控制器模式是 一個有用的工具箱,它有很多好處,但也有一些缺點。 mvc 模式是“model-view-controller”的縮寫,中文翻譯為“模 式-視圖-控制器” 。mvc 應(yīng)用程序總是由這三個部分組成。event(事件)導(dǎo) 致
19、 controller 改變 model 或 view,或者同時改變兩者。只要 controller 改變了 models 的數(shù)據(jù)或者屬性,所有依賴的 view 都會自 動更新。類似的,只要 controller 改變了 view,view 會從潛在的 model 中獲取數(shù)據(jù)來刷新自己。mvc 模式最早是 smalltalk 語言研究團 提出的,應(yīng)用于用戶交互應(yīng)用程序中。smalltalk 語言和 java 語言有 很多相似性,都是面向?qū)ο笳Z言,很自然的 sun 在 potstone(寵物店) 事例應(yīng)用程序中就推薦 mvc 模式作為開發(fā) web 應(yīng)用的架構(gòu)模式。mvc 模式是一種架構(gòu)模式,其實
20、需要其他模式協(xié)作完成。在 j2ee 模式目錄 中,通常采用 service to worker 模式實現(xiàn),而 service to worker 模式可由集中控制器模式,派遣器模式和 page helper 模式組成。 2.22.2 mvcmvc 如何工作如何工作 mvc 是一個設(shè)計模式,它強制性的使應(yīng)用程序的輸入、處理和輸 出分開。使用 mvc 應(yīng)用程序被分成三個核心部件:模型、視圖、控制 器。它們各自處理自己的任務(wù)。 1.視圖 視圖是用戶看到并與之交互的界面。對老式的 web 應(yīng)用程序來說, 視圖就是由 html 元素組成的界面,在新式的 web 應(yīng)用程序中,html 依舊在視圖中扮演著重
21、要的角色,但一些新的技術(shù)已層出不窮,它們 包括 macromedia flash 和類 xhtml,xml/xsl,wml 等一些標(biāo)識語言和 web services。 2.模型 模型表示企業(yè)數(shù)據(jù)和業(yè)務(wù)規(guī)則。在 mvc 的三個部件中,模型擁有 最多的處理任務(wù)。例如它可能用像 ejbs 和 coldfusion components 這 樣的構(gòu)件對象來處理數(shù)據(jù)庫。被模型返回的數(shù)據(jù)是中立的,就是說模 型與數(shù)據(jù)格式無關(guān),這樣一個模型能為多個視圖提供數(shù)據(jù)。由于應(yīng)用 于模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的 重復(fù)性。 3.控制器 控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求。
22、所 以當(dāng)單擊 web 頁面中的超鏈接和發(fā)送 html 表單時,控制器本身不輸出 任何東西和做任何處理。它只是接收請求并決定調(diào)用哪個模型構(gòu)件去 處理請求,然后用確定用哪個視圖來顯示模型處理返回的數(shù)據(jù)。 現(xiàn)在我們總結(jié) mvc 的處理過程,首先控制器接收用戶的請求,并 決定應(yīng)該調(diào)用哪個模型來進行處理,然后模型用業(yè)務(wù)邏輯來處理用戶 的請求并返回數(shù)據(jù),最后控制器用相應(yīng)的視圖格式化模型返回的數(shù)據(jù), 并通過表示層呈現(xiàn)給用戶。 2.32.3 strutsstruts 概述概述 struts 最早是作為 apache jakarta 項目的組成部分問世運作。 項目的創(chuàng)立者希望通過對該項目的研究,改進和提高 ja
23、va server pages、servlet、標(biāo)簽庫以及面向?qū)ο蟮募夹g(shù)水準(zhǔn)。 struts 這個名字來源于在建筑和舊式飛機中使用的支持金屬架。 它的目的是為了減少在運用 mvc 設(shè)計模型來開發(fā) web 應(yīng)用的時間。你 仍然需要學(xué)習(xí)和應(yīng)用該架構(gòu),不過它將可以完成其中一些繁重的工作。 除此之外,struts 的優(yōu)點主要集中體現(xiàn)在兩個方面:taglib 和頁 面導(dǎo)航。taglib 是 struts 的標(biāo)記庫,靈活動用,能大大提高開發(fā)效 率。另外,就目前國內(nèi)的 jsp 開發(fā)者而言,除了使用 jsp 自帶的常用 標(biāo)記外,很少開發(fā)自己的標(biāo)記,或許 struts 是一個很好的起點。 struts 是 mv
24、c 的一種實現(xiàn),它將 servlet 和 jsp 標(biāo)記(屬于 j2ee 規(guī)范)用作實現(xiàn)的一部分。struts 繼承了 mvc 的各項特性,并根據(jù) j2ee 的特點,做了相應(yīng)的變化與擴展。 第三章第三章 概要設(shè)計概要設(shè)計 百度知道是一個基于搜索的互動式知識問答分享平臺。和大家習(xí) 慣使用的搜索服務(wù)有所不同, “百度知道”并非是直接查詢那些已經(jīng)存 在于互聯(lián)網(wǎng)上的內(nèi)容,而是用戶自己根據(jù)具體需求有針對性地提出問 題,通過積分獎勵機制發(fā)動其他用戶,來創(chuàng)造該問題的答案。 同時, 這些問題的答案又會進一步作為搜索結(jié)果,提供給其他有類似疑問的 用戶,達到分享知識的效果。 3.13.1 系統(tǒng)概述系統(tǒng)概述 該系統(tǒng)的
25、最大特點,就在于和搜索引擎的完美結(jié)合,讓用戶所擁 有的隱性知識轉(zhuǎn)化成顯性知識,用戶既是本系統(tǒng)內(nèi)容的使用者,同時 又是該系統(tǒng)的創(chuàng)造者,在這里累積的知識數(shù)據(jù)可以反映到搜索結(jié)果中。 通過用戶和搜索引擎的相互作用,實現(xiàn)搜索引擎的社區(qū)化。 3.23.2 功能分析功能分析 下面我們著重介紹各個模塊的具體功能以及設(shè)計要求。 根據(jù)需求分析,得到了本系統(tǒng)應(yīng)該具有的功能,下面具體分析本 系統(tǒng)的功能模塊。經(jīng)過分析, “百度知道”大致分為兩大模塊六大功能。 即用戶模塊,用戶處理問題模塊。兩個模塊的功能分別為: 1.用戶模塊 (1)用戶注冊。 (2)用戶登錄。 2. 用戶處理問題模塊 (1)問題發(fā)布。 (2)問題查詢。
26、 (3)回答問題。 (4)解決問題。 系統(tǒng)的層次圖如圖 31 百度知道系統(tǒng)的層次圖所示: 圖圖 3-13-1 百度知道系統(tǒng)的層次圖百度知道系統(tǒng)的層次圖 (注意:層次圖按照功能模塊來劃分) 系統(tǒng)各功能部分說明如下: 1.用戶模塊:主要包括對用戶的注冊以及登錄的功能。 2.問題模塊,主要包括以下幾個功能的實現(xiàn): (1)問題發(fā)布:已登錄用戶發(fā)布新的問題。 (2)問題回答:其他用戶對已存在問題的回答以及提問用戶對自己問題 的補充。 百度知道系統(tǒng) 用戶模塊用戶操作問題模塊 用 戶 登 錄 用 戶 注 冊 問 題 發(fā) 布 回 答 問 題 解 決 問 題 查 詢 問 題 (3)解決提問:提問用戶將其他用戶對
27、于自己提出問題的某個回答設(shè)為 最佳答案或者問題長時間未處理自動過期。 (4)查詢問題:注冊用戶登錄或者游客用戶訪問系統(tǒng)時對問題的分類瀏 覽以及對于單個問題的信息查詢。 3.33.3 數(shù)據(jù)庫分析數(shù)據(jù)庫分析 .1 實體的分析實體的分析 根據(jù)百度知道的總體設(shè)計,我們定義了百度知道整個系統(tǒng)分為兩 大模塊和六大功能。由此我們可以首先確定百度知道的兩大實體:用 戶和問題,而由于用戶可以根據(jù)提問來進行回答,所以問題答案也是 實體。因此該系統(tǒng)共有三個實體。 1.用戶實體。 2.問題實體。 3.問題答案實體。 .2 實體的屬性實體的屬性 百度知道系統(tǒng)涉及到的實體分別為用戶實體,問
28、題實體,問題答 案實體。根據(jù)系統(tǒng)需求,我們將以下實體的屬性確定如下: 1.用戶實體,包含所有百度知道的注冊用戶信息,其詳細(xì)的屬性如下: (1)客戶編號。 (2)客戶名稱。 (3)客戶密碼。 (4)真實姓名。 (5)性別。 (6)身份證號。 (7)電子郵件。 (8)用戶積分。 (9)用戶權(quán)限。 2.問題實體,包含所有用戶提出的問題的信息,其詳細(xì)的屬性如下: (1)問題編號。 (2)問題標(biāo)題。 (3)問題內(nèi)容。 (4)提問者 id。 (5)所在欄目號。 (6)問題狀態(tài)。 (7)獎賞分?jǐn)?shù)。 (8)回答次數(shù)。 (9)發(fā)布時間。 3.問題答案實體,包含所有問題回答的屬性,其詳細(xì)的屬性如下: (1)回答編
29、號。 (2)問題編號。 (3)回答標(biāo)題。 (4)回答內(nèi)容。 (5)回答狀態(tài)。 (6)回答者編號。 .3 實體之間的聯(lián)系實體之間的聯(lián)系 通過對百度知道系統(tǒng)中所需實體以及屬性的分析,我們已經(jīng)對于 百度知道的數(shù)據(jù)模型有了一定的了解,由此我們可以確定三大實體之 間的聯(lián)系。 1.每一位注冊用戶都可以提出若干問題,發(fā)布問題信息。但是每個問 題只能由一個用戶提出,即只能和一個用戶關(guān)聯(lián)。 2.每個用戶都可以對某一問題發(fā)表若干回答。但是每一項回答 只能由 一個用戶發(fā)表,即只能和一個用戶關(guān)聯(lián)。 3.每個問題都會有零到多個回答,每個回答也可以發(fā)表到不同的問題 上去。即多個問題有多個回答。 3.43.
30、4 數(shù)據(jù)庫的概念設(shè)計數(shù)據(jù)庫的概念設(shè)計 通常使用實體聯(lián)系圖來建立數(shù)據(jù)模型。可以把實體聯(lián)系圖簡 稱為 er 圖,相應(yīng)的可把用 er 圖描繪的數(shù)據(jù)模型稱為 er 模型。 百度知道的實體-聯(lián)系圖如圖 3-2 百度知道的 er 圖所示: (注意注意:er 圖描繪的是數(shù)據(jù)之間的關(guān)系,矩形代表實體;圓角矩 形或橢圓代表屬性;菱形代表實體和實體之間的關(guān)系;在實體關(guān)系的 實線上要標(biāo)出數(shù)字代表對應(yīng)關(guān)系,1:1 或 1:n 或 m:n) 圖圖 3-23-2 百度知道的百度知道的 erer 圖圖 3.53.5 數(shù)據(jù)庫的邏輯結(jié)構(gòu)設(shè)計數(shù)據(jù)庫的邏輯結(jié)構(gòu)設(shè)計 表表 3-13-1 用戶表用戶表 作用作用保存客戶的信息名稱名稱
31、user_info 序號英文字段名中文字段名數(shù)據(jù)類型長度是否關(guān)鍵字備注 1user_id 用戶編號 int 主鍵自動編號 2user_name 用戶名稱 varchar30 3user_pwd 用戶密碼 varchar30 4user_realname 真實姓名 varchar30 5user_sex 性別 int 0:男 1:女 6user_idcard 身份證號 varchar18 7user_email 電子郵件 varchar50 8user_score 用戶積分 int 9user_limit 用戶權(quán)限 int 0:管理員 1:普通用戶 1 n 1 用戶 問題 回答 編號 真名 密碼
32、 昵稱 郵件 身份證 性別 積分 權(quán)限 提問 屬于 n 編號 內(nèi)容 提問者編號時間標(biāo)題懸賞分?jǐn)?shù) 欄目號 回答數(shù) 標(biāo)題 編號時間問題編號 狀態(tài) 回答者編號 內(nèi)容 問題狀態(tài) 發(fā)表 n1 表表 3-23-2 問題表問題表 作用作用保存客戶提出的問題名稱名稱 question_info 序號英文字段名中文字段名數(shù)據(jù)類型長度是否關(guān)鍵 字 備注 1ques_id 問題編號 int10 主鍵自動編號 2ques_title 問題標(biāo)題 varchar100 3ques_context 問題內(nèi)容 varchar2000 4user_id 提問者 id int 外鍵 5item_id 所在欄目號 int 外鍵0:
33、男 1:女 6ques_status 問題狀態(tài) int 10: 最佳 1: 待解決 2: 已解決 7ques_score 獎賞分?jǐn)?shù) int 8ques_count 回答次數(shù) int 9ques_date 發(fā)布時間 date 表表 3-33-3 回答表回答表 作用作用保存問題答案名稱名稱 result_info 序號英文字段名中文字段名數(shù)據(jù)類型長度是否關(guān)鍵字備注 1res_id 回答編號 int 主鍵自動編號 2ques_id 問題編號 int 外鍵 3res_title 回答標(biāo)題 varchar100 4res_date 回答時間 date 5res_context 回答內(nèi)容 varchar2
34、000 6res_status 回答狀態(tài) int 1:最佳 0:普通 7user_id 回答者編號 int 表表 3-43-4 欄目表欄目表 作用作用顯示欄目名稱名稱 item_info 序號英文字段名中文字段名數(shù)據(jù)類型長度是否關(guān)鍵字備注 1item_id 欄目編號 int 主鍵自動編號 2item_name 欄目名稱 varchar200 3.63.6 數(shù)據(jù)庫的物理設(shè)計數(shù)據(jù)庫的物理設(shè)計 1.創(chuàng)建用戶表 create table user_info(-用戶表,保存客戶的信息 user_id int primary key identity(1,1),-客戶編號 user_name varcha
35、r(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-用戶權(quán)限 ) 2.創(chuàng)建問題表 create table question_info(-問題表,保存客戶提出的問題 ques_id int primary key identity(1,1),-問題編號 ques_title varch
36、ar(30),-問題標(biāo)題 ques_context varchar(2000),-問題內(nèi)容 user_id int references user_info,-提問者 id item_id int references item_info,-所在欄目號 ques_status int,-問題狀態(tài) ques_score int,-獎賞分?jǐn)?shù) ques_date datetime, -發(fā)布時間 ques_count int -回復(fù)數(shù) ) 3.創(chuàng)建回答表 create table result_info(-回答表,保存問題答案 res_id int primary key identity(1,1),
37、-答案編號 ques_id int references question_info,-問題編號 res_title varchar(200),-答案標(biāo)題 res_context varchar(2000),-答案內(nèi)容 res_date datetime,-答題時間 res_status int,-答案狀態(tài) user_id int references user_info-答題者編號 ) 4.創(chuàng)建欄目表 create table item_info(-欄目表,顯示欄目 item_id int primary key identity(1,1),-欄目編號 item_name varchar(2
38、00),-欄目名稱 item_type int,-欄目種類 ) 第四章第四章 詳細(xì)設(shè)計詳細(xì)設(shè)計 通過系統(tǒng)分析和概要設(shè)計,對百度知道系統(tǒng)已經(jīng)有了一個比較詳 細(xì)的了解。整個系統(tǒng)的設(shè)計完全依據(jù)基于 struts 框架的 mvc 開發(fā)模式 完成。其中包結(jié)構(gòu)也是按照 mvc 模式進行分層。整體開發(fā)分五個包。 分別是 action,dao,form,util,model。其中 action 可以看作 servlet 控制層,dao 是數(shù)據(jù)庫連接持久化層,form 則是 javabean 與 model 模式層的實體類共同構(gòu)成視圖層,util 是通用工具包。 (注意:類圖代表各個類之間的關(guān)系,可以用現(xiàn)有工具
39、畫,但是 一定要清晰) 圖圖 4-14-1 百度知道的類圖百度知道的類圖 整個視圖層主要是由 jsp 頁面來完成,而為了更好的實現(xiàn)的百度 知道的頁面效果,本系統(tǒng)采用了 struts 框架中的 tiles 頁面框架標(biāo)簽 來設(shè)計頁面。將主體頁面拆分成上中下三部分。整個視圖層主要包括 一下幾個 jsp 頁面文件。 1. addquestion.jsp 提問頁面的主體頁面。 2. addquesstioncontent.jsp 發(fā)布問題的主題頁面。 3. answer.jsp 回答問題框架頁面。 4. answercontent.jsp 回答問題的主題頁面。 5. footer.jsp tiles 框
40、架。 6. header.jsp tiles 框架頁面的頭框架頁面。 7. indexcontent.jsp 主頁的主體頁面。 8. layout.jsp tiles 頁面框架布局設(shè)置。 9. login.jsp 登錄頁面。 10.main.jsp 主框架頁面。 11.questionlist.jsp 問題列表框架頁面。 12.questionlistcontent.jsp 問題列表主頁主體頁面。 13.register.jsp 注冊頁面。 14.result.jsp 發(fā)布問題后框架頁面。 15.resultcontent.jsp 發(fā)布問題后主體頁面。 16.staticjavascript.
41、jsp 靜態(tài) javascript 加載頁面。 4.14.1 數(shù)據(jù)庫連接模塊的創(chuàng)建數(shù)據(jù)庫連接模塊的創(chuàng)建 由于本系統(tǒng)是基于 struts 結(jié)構(gòu)開發(fā)而成,struts1.1 框架中集成 了數(shù)據(jù)源配置和管理功能。即在 struts 框架下的 struts_config.xml 文件中配置 data-source 標(biāo)簽來定義和配置數(shù)據(jù)源,使得啟動 tomcat 服務(wù)器的同時便由容器加載數(shù)據(jù)源以方便使用。當(dāng)然,獲得數(shù)據(jù)源之 后的數(shù)據(jù)庫操作的管理是用數(shù)據(jù)庫連接對象 dao 開發(fā)模式完成。在項 目下的 dao 包里包含著數(shù)據(jù)庫連接操作的實現(xiàn)。由于本模塊是數(shù)據(jù)庫 連接以及持久化層操作模塊所以不包含任何關(guān)聯(lián)頁面
42、。 本模塊所包含的類如下: 1.dao 類 數(shù)據(jù)庫連接對象的父類,包含操作數(shù)據(jù)庫的公共方法和獲取 數(shù)據(jù)源的方法。 2.indexdao 類 繼承了 dao 父類,包含了主頁 index 類顯示問題列表 的所有數(shù)據(jù)庫查詢操作方法。 3.userdao 類 繼承了 dao 父類,包含了對于用戶的注冊,存在判斷, 查詢用戶信息等方法。 4.questiondao 類 繼承了 dao 父類,包含了對于問題以及問題回答等 增刪改查操作的方法。 4.24.2 用戶模塊的詳細(xì)設(shè)計用戶模塊的詳細(xì)設(shè)計 用戶模塊主要包括用戶注冊以及用戶查詢等功能,主要包括 register.jsp,login.jsp。本模塊主要
43、包括 userdao 類,useraction 類的設(shè)計以及 model 包中 user 類的設(shè)計。而本模塊主要包含的是用戶 注冊和登錄的功能。 1.用戶注冊的過程 (1)用戶在注冊頁面輸入數(shù)據(jù)。 (2)首先在頁面用 javascript 對用戶輸入數(shù)據(jù)格式和有效性進行檢查。 (3)判斷用戶名是否存在。 (4)向用戶表插入用戶信息。 (5)全部正常,跳轉(zhuǎn)到用戶登錄頁面。 2.用戶登錄的過程 (1)用戶在登錄頁面輸入登錄信息。 (2)在頁面用 javascript 對用戶輸入數(shù)據(jù)格式和有效性進行檢查。 (3)在數(shù)據(jù)庫中判斷是否存在某一列滿足用戶名和密碼為用戶輸入的數(shù) 據(jù),存在則通過。 (4)將用
44、戶基本信息保存在 session 對象中。 (5)全部正常,跳轉(zhuǎn)到百度知道首頁。 4.34.3 問題模塊的詳細(xì)設(shè)計問題模塊的詳細(xì)設(shè)計 問題模塊是百度知道系統(tǒng)的核心模塊,在這一模塊中包含了百度 知道系統(tǒng)的主要運行邏輯和所有的問題及搜索相關(guān)功能。主要設(shè)計的 頁面有主頁問題列表顯示頁、問題發(fā)布頁、問題查詢頁、問題回答頁、 問題補充及處理頁面。本模塊主要設(shè)計的功能也就是發(fā)布,查詢,回 答,處理問題的四個功能。 .1 百度知道的主要功能設(shè)計百度知道的主要功能設(shè)計 百度知道系統(tǒng)實現(xiàn)的主要功能設(shè)計要點如下: 1.主頁問題列表顯示 (1)問題狀態(tài) 1 待解決問題 10 個。 (2)問題狀態(tài) 2
45、 已解決問題 5 個。 (3)問題狀態(tài) 10 最佳問題 5 個。 2.用戶發(fā)布問題 (1)首先只有注冊用戶才能發(fā)布問題。 (2)發(fā)布問題必須有標(biāo)題。 (3)發(fā)布問題必須設(shè)置問題的懸賞分?jǐn)?shù)。 3.用戶回答問題 (1)首先只有注冊的用戶才能回答問題。 (2)非注冊問題只可以瀏覽問題。 (3)回答問題至少要有回答標(biāo)題。 (4)回答問題用戶必須是非提問用戶。 4.用戶查詢問題 (1)查詢問題的用戶可以是游客用戶也可以是注冊用戶。 (2)查詢問題按照關(guān)鍵字進行問題檢索,檢索結(jié)果為問題列表。 (3)查詢問題的功能在百度知道主頁實現(xiàn)。 5.補充及處理問題 (1)補充和處理問題的用戶必須是提問用戶。 (2)提
46、問用戶必須登錄才能提問。 (3)補充及處理問題不能超過問題未處理時限。 (4)用戶設(shè)為最佳答案以后即將獎賞分?jǐn)?shù)加給最佳答案用戶。 (5)一切正常,結(jié)束問題。 .2 百度知道的頁面及主要核心算法設(shè)計百度知道的頁面及主要核心算法設(shè)計 1.answercontent.jsp 問題瀏覽及回答頁面 回答問題也就是問題瀏覽頁面是問題模塊的核心部分,也是算法 集中的部分。其中在本頁面有幾個關(guān)鍵的標(biāo)簽屬性完成了本算法的邏 輯判斷。 (1)logic:equal 邏輯相等判斷。 (2)logic:empty 邏輯為空判斷。 (3)logic:notempty 邏輯不為空判斷。 (4)logic:
47、iterate 邏輯迭代判斷。 本算法主要涉及到的幾個標(biāo)志性對象為: (1)flag1 用戶是否為提問用戶判斷標(biāo)簽。 (2)flag2 問題是否解決判斷標(biāo)簽。 (3)question 問題信息實體對象。 (4)answerlist 回答列表。 (5)user 登錄用戶的用戶信息實體對象。 (6)pagerheader 分頁標(biāo)簽條,由 util 包下的 pager 類生成。 (7)answersize 回答列表的大小,用來統(tǒng)計回答數(shù)。 2.問題瀏覽及回答頁面整個算法的流程 (1)判斷 flag2 的值 true 則顯示待解決,false 則顯示已解決。 (2)question 對象里取出問題標(biāo)題
48、,懸賞分,提問者并在頁面上顯示 出來。 (3)answerlist 中取出回答列表顯示答案信息。 (4)根據(jù) answerlist 中答案狀態(tài)如果為 1 則顯示最佳答案信息,并顯 示其他回答標(biāo)簽。 (5)如果答案狀態(tài)為 0 則將顯示回答標(biāo)簽并且顯示回答信息。 (6)根據(jù)回答列表進行分頁,顯示 pageheader 分頁條。 (7)判斷 flag1 和 flag2 標(biāo)簽 如果同時為 true 則顯示采納為答案標(biāo)簽。 (8)如果 flag2 為 true 且 user 對象非空,則顯示我也來回答標(biāo)簽。 (9)每種問題處理后顯示回答列表的統(tǒng)計數(shù)目。 3.pager 分頁類算法的設(shè)計 分頁算法是 web 頁面設(shè)計中最常用的算法之一,pager 類中本算 法的屬性如下: (1)offset 分頁截取開始的位置。 (2)size 所有數(shù)據(jù)列表的大小。 (3)length 每頁顯示的數(shù)據(jù)項。 (4)url 進行分頁請求的路徑。 (5)pref 參數(shù)標(biāo)志,&或者?。 (6)totalpage 總頁數(shù)。 (7)cur
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版桶裝水電商銷售與物流配送合作協(xié)議3篇
- AAA 玻璃有限公司煙氣余熱發(fā)電項目可行性研究報告
- 酒店行業(yè)助理的工作概述
- 幼兒園工作總結(jié)愛心傳遞溫馨舒適
- 二零二五年度:我國行政合同中優(yōu)益權(quán)在公共服務(wù)領(lǐng)域的應(yīng)用論文3篇
- 2025版物業(yè)糾紛調(diào)解與法律服務(wù)合作協(xié)議2篇
- 二零二五年度個人版權(quán)保護與維權(quán)服務(wù)合同2篇
- 2025版食材配送與餐飲加盟合作合同模板3篇
- 二零二五年度能源合同能源管理服務(wù)協(xié)議范本2篇
- 聚氨酯發(fā)泡保溫施工方案
- 2017年江蘇南京中考滿分作文《無情歲月有味詩》5
- 2024-2030年中國智慧水務(wù)行業(yè)應(yīng)用需求分析發(fā)展規(guī)劃研究報告
- 2024年中國南水北調(diào)集團新能源投資限公司抽水蓄能項目崗位公開招聘高頻考題難、易錯點模擬試題(共500題)附帶答案詳解
- 中國2型糖尿病運動治療指南 (2024版)
- 基礎(chǔ)構(gòu)成設(shè)計全套教學(xué)課件
- 城市道路交通安全評價標(biāo)準(zhǔn) DG-TJ08-2407-2022
- 統(tǒng)編版高中政治選擇性必修2《法律與生活》知識點復(fù)習(xí)提綱詳細(xì)版
- 急腹癥的診斷思路
- 2024小說推文行業(yè)白皮書
- 研究性成果及創(chuàng)新性成果怎么寫(通用6篇)
- 特殊感染手術(shù)管理考試試題及答案
評論
0/150
提交評論