在線網摘系統的設計與實現【畢業(yè)論文+文獻綜述+任務書+開題報告】_第1頁
已閱讀1頁,還剩64頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  本科畢業(yè)設計(論文)</p><p><b>  ( 屆)</b></p><p>  論文題目在線網摘系統的設計與實現</p><p>  所在學院 </p><p>  專業(yè)班級 信息管理與信息系統 </p&g

2、t;<p>  學生姓名 學號 </p><p>  指導教師 職稱 </p><p>  完成日期 年 月 日</p><p><b>  誠 信 聲 明</b></p><p&g

3、t;  我聲明,所呈交的論文(設計)是本人在老師指導下進行的研究工作及取得的研究成果。據我查證,除了文中特別加以標注和致謝的地方外,論文(設計)中不包含其他人已經發(fā)表或撰寫過的研究成果,也不包含為獲得______或其他教育機構的學位或證書而使用過的材料。我承諾,論文(設計)中的所有內容均真實、可信。</p><p>  論文(設計)作者簽名: 簽名日期: 年 月 日</p>

4、<p><b>  授 權 聲 明</b></p><p>  學校有權保留送交論文(設計)的原件,允許論文(設計)被查閱和借閱,學??梢怨颊撐模ㄔO計)的全部或部分內容,可以影印、縮印或其他復制手段保存論文(設計),學校必須嚴格按照授權對論文(設計)進行處理,不得超越授權對論文(設計)進行任意處置。</p><p>  論文(設計)作者簽名:

5、 簽名日期: 年 月 日</p><p>  在線網摘系統的設計與實現</p><p>  摘要: 長期以來,網上沖浪者在上網的時候都習慣了把感興趣的網址用收藏夾收錄起來。但是本地收藏夾沒有標簽,這樣導致索引機制效果不佳。因此,隨著用戶在本地收藏夾中收錄的網址越來越多,想要從中鎖定特定收錄網址成為了一件越來越困難的事。當人們想要分享信息和資源時,本地收藏夾的非共享存儲機制的弊

6、端就曝露無遺。于是,“網摘”這個概念就應運而生了。目前,在線網摘系統正處于一種成長階段,因此開發(fā)設計一個在線網摘系統是非常有必要的。</p><p>  在線網摘系統的開發(fā)語言采用JSP,數據庫采用MySQL,開發(fā)工具使用MyEclipse 6.0.1。分析在線網摘系統的系統需求,完成概要設計、功能設計、數據庫設計(E-R圖、數據流程圖)、程序流程圖等,利用面向對象以及代碼分離思想開發(fā)系統。頁面主要功能模塊有系統

7、主頁面模塊、網摘管理模塊、網摘分類模塊等等。經過測試,該網站能正常運行。</p><p>  關鍵詞: 在線網摘;數據庫;模塊;網站</p><p>  Design and Implementation of </p><p>  Online Social Bookmark System </p><p>  Abstract: Over

8、 the years, when surfing the Internet the Internet users are accustomed to using the Favorite to record URLs of interest. However, the indexing mechanism is ineffective because of the local favorites ' lacking of lab

9、el. So, with the growing number of users record Web site, locking the particular site from the URLs which in the Favorite is becoming difficult. When people need to share information and resources, Favorites of the drawb

10、acks of non-shared storage system is exposed compl</p><p>  The development of the online social bookmark system uses the language of JSP, the database uses MySQL, and development tool uses MyEclipse 6.0.1 .

11、 It is necessary to analyze the system requirements of the online social bookmark system, to complete the outline design, function design, database design (figure E-R, flowcharts) and program flowcharts. The functions in

12、clude web homepage module, tags management module, tags categories module and so on. It has been tested that the website runs normall</p><p>  Key words: Online Social Bookmark; Database; Module; Website<

13、/p><p><b>  目 錄</b></p><p><b>  1 緒 論1</b></p><p>  1.1 系統的背景簡介1</p><p>  1.2國內外研究現狀2</p><p>  1.3 本課題研究的意義3</p><

14、p>  1.4 本系統的目標4</p><p><b>  2 系統分析5</b></p><p>  2.1 需求分析5</p><p>  2.1.1 系統需求分析5</p><p>  2.1.2 系統總體構成5</p><p>  2.2 業(yè)務流程分析6<

15、;/p><p>  2.3數據流分析6</p><p><b>  3 系統設計8</b></p><p>  3.1 開發(fā)技術方案選擇8</p><p>  3.2 數據庫設計8</p><p>  3.2.1 數據庫技術概述8</p><p>  3.2

16、.2 數據庫需求分析9</p><p>  3.2.3 數據庫概念結構設計10</p><p>  3.2.4 數據表設計13</p><p>  3.3 系統功能分析16</p><p><b>  4系統實現18</b></p><p>  4.1 用戶注冊、登錄和注銷模

17、塊18</p><p>  4.1.1數據連接實現18</p><p>  4.1.2用戶登錄模塊19</p><p>  4.1.3 用戶注冊模塊23</p><p>  4.1.4 用戶注銷模塊28</p><p>  4.2 網摘管理模塊28</p><p>  4.

18、2.1加入網摘模塊28</p><p>  4.2.2添加書簽模塊35</p><p>  5 系統測試38</p><p>  5.1 測試目的38</p><p>  5.2 測試方案38</p><p>  5.3 系統評價40</p><p><b> 

19、 6 總結41</b></p><p>  致謝.........................................................................42</p><p><b>  參考文獻43</b></p><p><b>  1 緒 論</b><

20、;/p><p>  1.1 系統的背景簡介</p><p>  長期以來,網上“沖浪者”在上網的時候都習慣使用收藏夾收藏感興趣的網址。但本地收藏夾缺乏有效的索引機制,隨著用戶收藏的網址數量的逐漸增多,想要在收藏夾中鎖定特定網址成了一件越來越困難的事情。此外,收錄附屬信息和評價系統的缺乏也使本地收藏夾僅僅停留在“收藏”而已,那些需要對信息進行注解的網址,用戶不得不借助記事本等外部工具。有時候在

21、面對重裝系統,多操作系統、異地上機等情況時,用戶不得不將收藏夾里面的數據一次又一次地手工進行轉存。當人們需要分享信息和資源時,本地收藏夾的非共享存儲機制的弊端更是曝露無遺。于是,“網摘”這個概念就應運而生了。由于網摘是基于知識管理、分享、發(fā)掘的角度進行設計,所以上面提出的各個問題都得到了很好的解決方案[1]。</p><p>  網摘同樣稱為網頁書簽,英文原名是Social Bookmark,直接翻譯是“社會化書

22、簽”。Joshua發(fā)明網摘站點——del.icio.us是世界上第一個網摘站點。網摘是一種服務,它提供的是一種收藏、分類、排序、分享互聯網信息資源的方式[2]。用戶用網摘存儲自己感興趣的網址和相關信息列表,同時用標簽(Tag)對網址進行索引,這樣就可以使網址資源有序分類,同是使網址及相關信息的社會性分享成為可能。網站的價值在用戶分享網址的過程中被給予評估,挖掘有效信息的成本在通過群體的參與后得到有效的控制。具有相同興趣的用戶可以通過知識

23、分類機制使彼此之間更容易分享信息和進行交流。同時,網摘站點也呈現出一種以知識分類的社群的景象。</p><p>  通俗地說,網摘就是一個網絡上的海量收藏夾。網摘將網絡上零散的信息資源進行有目的的匯聚整理后再向大眾展現出來。網摘提供的功能有很多是本地收藏夾所不具備的,它的核心價值已經不僅僅是保存瀏覽的網頁,而是成為一個能夠真正做到“共享中收藏,收藏中分享”新的信息共享中心。如果每天有很多的用戶使用網摘,用戶每天提

24、供大量的收藏鏈接,網摘網站就成了匯集各種信息鏈接的門戶網站。</p><p>  網摘系統也稱為社會化書簽系統。社會化書簽系統為用戶提供了基于標簽(Tag)技術的信息組織和管理方式,這是自由分類法的運行環(huán)境,也提供分享和交流的平臺,并幫助用戶存儲和管理個人信息資源。在社會化書簽系統中,用戶根據個人的需求對資源自由選擇詞匯進行標注,每一次添加一個詞匯被稱為對資源添加一個“標簽(Tag)”。社會化書簽系統的三個基本元

25、素是用戶、資源和標簽,一個社會化書簽系統可以用<用戶,標簽,資源>的三元組表示。三個元素及相互間的關系構成了社會化書簽系統的內在結構,三者之間的互動使這一結構不斷變化[3]。在社會化書簽系統中,用戶使用標簽對資源進行標注,每個標簽相當于用戶對資源的一個分類,資源根據不同的標簽被組織到不同的分類之下;所有用戶的資源存在于一個共享的平臺上,相同的標簽還能夠聚合不同用戶相同分類下的資源[4]。</p><p&g

26、t;  在線網摘系統的雛形始于1998年,當時創(chuàng)始人美國人約舒亞·沙科特(Joshua Schachter)只是用一個文件夾來保存手里大量的鏈接。隨著保存的內容越來越多,為了能更快捷地找到某個鏈接,他開始在每個鏈接后面加上一個關鍵詞來做備忘,這就是標簽(Tag)。4年后他為這些保存的鏈接創(chuàng)建了一個基于web的據庫以供自己使用,1年后約舒亞想到要將這種工具提供給別人使用就重寫了數據庫使其支持多用戶使用,形成了現在的Del.ici

27、o.us。Del.icio.us一經推出就大受歡迎,很快有一些網站效仿。它的模仿者Furl.net卻青出于藍,在創(chuàng)立僅一年后就出售給著名的搜索引擎公司LookSmart。</p><p>  2004年10月,中文網站365key.com開始向國內互聯網用戶提供網摘服務。在365key取得廣泛關注后,“網摘”這個名詞在365key站長曾登高、著名Blogger洪波等一批專業(yè)人士的推廣下迅速傳播開。半年后,“網摘”

28、這個新創(chuàng)詞已經在搜索引擎中從無到有地成了一個熱門詞,人們可以在Google上看到20多萬個關于“網摘”的中文鏈接。國內提供與365key類似服務的網站已有上百家,甚至作為大型門戶網站的新浪網也提供了自己的網摘服務——新浪vivi。</p><p><b>  國內外研究現狀</b></p><p>  隨著 Web2.0技術的發(fā)展“可寫網絡”逐步變?yōu)楝F實[5]。這類應

29、用都是由第三方處理和保存數據,這些技術也在網摘系統中得到運用。伴隨著多樣的網摘工具的出現,使用網摘的用戶也是越來越多了。例如,del.icio.us網站顯示,每天有超過一百萬的用戶在該網站上注冊[6]。目前網摘網站有很多,如新浪vivi收藏夾、百度搜藏、和訊部落、Diggo等等。其中Diigo(Digest of Internet Information ,Groups and Other Stuff)是以Web2.0為平臺開發(fā)出來的一

30、款社會性軟件,是社會化書簽網站的一個典型代表。美國知名的IT專業(yè)媒體CNET 2006年評出的互聯網十大“最受歡迎研究工具”中,Diigo排名第四,Google入選的四個工具都排在其后面[7]。</p><p>  社會化書簽是協作工具之一,人們可以將他們感興趣的鏈接共享在網頁上[8]。現在的網摘工具是又多又雜,給人們帶來簡單、方便的同時,也存在一些不足之處的。目前網摘工具存在的主要問題是:</p>

31、<p>  (1)網摘貢獻者集中度過高,影響網絡書簽質量。從bookmark.hexun.com網摘者2006.5.31 的前20名排行數據可得出少數人貢獻度過高,造成少數人影響收藏和推薦的結果。相反以http://pstatic.xunlei.com/的前20名排行數據可看出下載推薦的前20名貢獻度差別不大。在迅雷下載雷友下載統計中,用戶不需額外進行點擊動作,貢獻度較為平均,而網摘工具需要用戶完全義務地多一次點擊。導致少數

32、人點擊貢獻度高度集中。</p><p>  (2)用戶的點擊和推薦比例太低,導致推薦網頁質量下降。以alexa2006.5.31全世界排名104位的www.cmfu.com前100名瀏覽作品數據統計可知,在有物質獎勵情況下點擊和推薦比為13.8% ,無物質獎勵以bookmark.hexun.com的2006.5.31前100名瀏覽網頁數據可以得出,使用網摘軟件點擊和推薦比例為1.1% ,點推比太低。從中可知,用戶

33、主動保存和推薦自己網址的比率過低,不利最大多數的用戶積累自己感興趣的地址資源。目前的網摘軟件還不能夠完全準確保存和推薦“懶惰”用戶關注的網頁[9]。</p><p>  時代在發(fā)展, 人們組織知識、利用知識、創(chuàng)造知識的方法也在發(fā)展和變化。網摘會隨著需求的變化和網絡的發(fā)展也會在功能上不斷改進與發(fā)展,應用的領域也會是越來越廣泛,不過主要的應用領域還是知識管理方面。然而, 序化、共享、交流、創(chuàng)新的主題不會改變, 而這也

34、是網摘系統的各個應用領域得以成功的先決條件。我們相信, 未來的網摘系統的各個領域如個人知識管理將更加方便、有效, 更加貼近我們普通人的生活。</p><p>  1.3 本課題研究的意義</p><p>  社會化書簽是一種網絡上的海量收藏夾。網上“沖浪者”可將社會化書簽用于對互聯網中的信息和知識進行管理、分享和發(fā)掘,其主要特點是: </p><p> ?。?)提

35、高了知識的重用度。網絡上信息和知識很多,用戶在網上瀏覽網頁時,當閱讀到的有收藏價值的信息和知識時,將其保存在社會化書簽中,并對其作一些的描述和注解,這樣長久之后就慢慢積累形成了一個豐富的個人知識庫。社會化書簽相當于人的大腦的擴充,幫助我們記住許多之前閱讀過的信息和知識,這樣就能使這些信息和知識能夠方便地重用。 </p><p> ?。?)提供了一種基于知識分類的社交場所。用戶通過知識分類,可以更快結交到具有相同興

36、趣和特定技能的人,形成交流群體;通過交流和分享互相增強知識,滿足溝通、表達等社會性需要。 </p><p> ?。?)促進用戶間彼此分享收藏的信息和知識。每一個人的視野和視角是有限的,加上空間和時間上的分割,所以一個人所能接觸到的東西是非常有限的、片面的、成本代價比較高的。在社會化書簽網站上,用戶可以讓自己的好友推薦好文章到自己的知識庫中,這樣可以把獲得高質量信息和知識的成本大大降低了[10]。</p>

37、;<p>  當前,國內外已經涌現出許許多多的網摘站點,在這些網站上面,用戶可以分享和收藏自己感興趣的網址。盡管網摘是一種社會行為,但也為用戶進行真正意義上的個人知識管理提供了一種可能。</p><p>  通過網摘, 用戶可以在網絡上保存一些在閱讀互聯網信息過程中感興趣的有收藏機制的信息, 并對其做出必要的描述和注解, 這樣慢慢積累就形成個人知識體系。同時, 用戶可以使用網摘進行彼此之間分享收藏信

38、息。這樣降低了所有參與用戶獲取信息的成本, 并且可以使用戶更輕松地得到更多、多角度的信息。</p><p>  用戶可以通過知識分類, 更快地結交到具有相同興趣和特定技能的人, 彼此形成交流群體, 通過交流和分享可以彼此互相增強知識, 滿足溝通、表達等社會性需要。此外,網摘更新及時, 因此用戶可以及時、有效地得到所需要的信息;網摘是在網絡上的, 不論用戶身處何時何地,只要能上網均可獲取……</p>

39、<p>  從以上角度可以看出, 網摘是注重分類、系統、更新、交流、創(chuàng)新, 很好體現了個人知識管理的核心精神和內在要求[11]。</p><p>  1.4 本系統的目標 </p><p>  本次畢業(yè)設計就是開發(fā)在線網摘系統,通過網站來保存自己感興趣的網站鏈接,便于以后能更好的檢索,以達到節(jié)約時間為目的。本系統的目標是:</p><p>  (1)盡量

40、能利用所學知識提出一些實際的信息管理問題,并設計計算機化的解決方案,從而達到促進網絡資源的合理組織和有效利用的目標。</p><p>  (2)系統應符合廣大用戶的要求,能夠輕松地實現把網摘資源添加到自己的收藏夾中并與好友分享的功能,特別是那些不太懂得系統操作的會員用戶也能比較容易地學會操作。</p><p>  (3)系統采用模塊化程序設計方法,既便于系統功能的各種組合和修改,又便于未參

41、與開發(fā)的技術維修人員補充和維護。</p><p>  2 系統分析 </p><p><b>  2.1 需求分析</b></p><p>  在軟件工程中,需求分析指的是在建立一個新的或改變一個現存的電腦系統時描寫新系統的目的、范圍、定義和功能時所要做的所有的工作。需求分析是軟件工程中的一個關鍵過程。在這個過程中,系統分析員和軟件工程

42、師確定顧客的需要。只有在確定了這些需要后他們才能夠分析和尋求新系統的解決方法。</p><p>  2.1.1 系統需求分析</p><p>  在線網摘系統的設計主要包括加入網摘模塊、用戶注冊登錄模塊、書簽和標簽添加模塊。加入網摘需要在網摘網站注冊一個賬號,然后就可以在線添加喜歡的內容了。為了方便起見,可以在瀏覽器快捷鏈接欄或者在屬性欄上放置一個網摘的按鈕,這樣就可以隨時點擊按鈕把正在

43、查看的網頁保存到網摘。</p><p> ?。?)加入網摘模塊:該功能模塊用于當用戶看到感興趣的網站時,可以對其添加到自己的網摘管理系統中。</p><p>  (2)用戶注冊登錄模塊:該功能模塊是一個系統所必須的,是陌生用戶首次進入該系統,并且想是用該系統的功能時所要操作的。</p><p> ?。?)書簽和標簽添加管理:該功能模塊是讓用戶根據自己的喜好進行添加一

44、些鏈接,也可以加入標簽,這樣以后便于查找。</p><p>  2.1.2 系統總體構成</p><p>  本系統的使用者分為兩類:新用戶和老用戶。這兩者要使用的功能是一樣的。差別就是新用戶首次進入本系統的時候,能看到本系統的信息,但是沒有權限運用其他功能。只能看到系統中信息的一個標題。新用戶一旦注冊賬號了,并且登錄后就享有和老用戶一樣的權限,可以擁有添加網摘等操作的權利。</p

45、><p>  用戶可以通過瀏覽其他網站上的信息,當看到自己感興趣的信息時,可以復制網址加入網摘這一操作來保存它。這樣就能方便于以后想要這一信息的時候,我們能簡單、方便地找到這一信息。書簽和標簽也同樣可以添加,書簽也是可以鏈接的,這樣我看到書簽后,只要點擊網址,就可以在一個新的瀏覽器窗口中看到我想要看到頁面。這樣為我們帶來一些方便,就像瀏覽器的收藏夾一樣。</p><p>  本系統的系統總體構

46、成如圖2-1所示:</p><p>  圖2-1 系統總體構成</p><p>  2.2 業(yè)務流程分析</p><p>  業(yè)務流程圖(transaction flow diagram,簡稱TFD),就是用圓圈、矩形和箭頭等各種圖形進行連接來說明一個系統的業(yè)務過程。本系統主要的業(yè)務流程圖如下圖所示。</p><p>  圖2-2 用戶業(yè)務

47、流程圖</p><p><b>  數據流分析</b></p><p>  數據流程分析把數據在組織內部的流動情況抽象地獨立出來,舍去了具體組織機構、信息載體、處理工作等,單從數據流動過程來考察實際業(yè)務的數據處理模式。現有的數據流程分析多是通過分層的數據流程圖(data flow diagram,簡稱DFD)來實現的。本系統的幾個數據流圖如下所示。</p>

48、<p>  圖2-3在線網摘系統TOP數據流圖</p><p>  圖2-4在線網摘系統細化流程圖</p><p><b>  3 系統設計</b></p><p>  本系統的設計階段主要解決系統如何實現問題,也叫做概要設計。就是根據之前的系統分析,將系統劃分為幾個模塊,實現怎么把現實中的業(yè)務用其他模型來體現出來。主要是將現實

49、的業(yè)務模型轉化成數據模型。將系統分為幾個模塊分別實現后在組合在一起就能成為一個系統了。系統設計主要是確定將系統分成哪些模塊并如何實現。</p><p>  3.1開發(fā)技術方案選擇</p><p>  本系統選擇的開發(fā)技術語言為JSP,開發(fā)平臺為 MyEclipse 6.0.1,鏈接數據庫的是JDBC,選擇的數據庫為 MySQL 。下面分別對JSP編程環(huán)境以及數據庫MySQL做一個簡單的介紹

50、。</p><p>  JSP是由Sun公司為創(chuàng)建動態(tài)Web內容而定義的一種技術,它是與Java相關的一種HTML文檔,Java提供動態(tài)內容。JSP是服務端應用,它們接受請求并生成響應,此請求通過通常產出于一個Web客戶端,而響應則生成一種HTML文檔,需要返回給Web客戶端。由于JSP是服務器端應用,它們擁有對服務器端資源的訪問,諸如Servlet 、JavaBean、EJB和數據庫。</p>&

51、lt;p>  JSP數據庫編程是JSP技術的核心,當前所有的電子商務網站都是對數據庫進行操作的。要進行基于數據庫系統的JSP開發(fā),首先必須學習數據庫知識和JSP與數據庫之間的交互操作。JSP動態(tài)編程中,離不開數據庫的支持。JDBC使得在JSP程序中可以方便地操作數據庫:不管是企業(yè)級的Oracle、Sybase、DB2還是最簡單的Access、MySQL。</p><p>  JDBC(Java Data B

52、ase Connectivity,Java數據庫連接)是一種用于執(zhí)行SQL語句的Java API,可以為多種關系數據庫提供統一訪問,它由一組用Java編程語言編寫的類和接口組成。JDBC為工具/數據庫開發(fā)人員提供了一個標準的API,據此可以構建更高級的工具和接口,使數據庫開發(fā)人員能夠用純 Java API 編寫數據庫應用程序。</p><p>  本系統的開發(fā)選擇的數據庫為MySQL ,MySQL是一個小型關系型

53、數據庫管理系統,開發(fā)者為瑞典MySQL AB公司。目前MySQL被廣泛地應用在Internet上的中小型網站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網站為了降低網站總體擁有成本而選擇了MySQL作為網站數據庫。</p><p>  3.2 數據庫設計</p><p>  3.2.1 數據庫技術概述</p><p>  數據庫,

54、是按照數據結構來組織、存儲和管理數據的倉庫,是用于查詢的大量數據的存儲區(qū)域。使用數據庫可以帶來許多好處:如減少了數據的冗余度,從而大大地節(jié)省了數據的存儲空間,實現數據資源的充分共享等等。</p><p>  總的來說,數據庫的設計對系統的經濟性、功能性和效率有很大的影響,一個好的數據庫,要求在設計時盡量避免數據的多余,另外,還要盡可能提高數據的存取速度。數據庫設計時速度與空間在范式上是相互矛盾的。一方面按規(guī)范化理

55、論的要求,關系模式應盡量取高級范式,尤其對記錄數較多的關系,低級范式將會造成存儲的大量重復,使空間遭受嚴重浪費;另一方面從存取速度上考慮,應該盡量做到一個模式涉及的屬性越多越好,相互運算越少越好,這樣,又應取低級范式。因此我們在涉及數據庫時要嚴格地探討它的使用環(huán)境,充分了解用戶的需求,清楚地掌握數據庫系統的特點。經過綜合的評價和分析后設計出的數據庫應滿足以下要求:</p><p> ?。?)數據庫信息要能充分體現

56、出用戶使用系統的需求。</p><p> ?。?)能夠只吃用戶對數據進行的所有處理。</p><p>  (3)能夠容易被數據庫管理系統運行維護。</p><p> ?。?)數據一致性、完整性好,無更新異常。</p><p>  3.2.2 數據庫需求分析</p><p>  用戶的需求具體表現在對各種信息的提供、保

57、存、更新和查詢,這就要求數據庫能滿足各種信息的輸出和輸入。通過對上述系統功能的分析,針對網摘系統的需求,總結出如下需求信息:</p><p>  (1)用戶分普通用戶和管理員用戶。</p><p> ?。?)管理員是對新聞信息管理、網站鏈接管理、網摘管理。</p><p> ?。?)普通用戶可以瀏覽其他新聞、網站鏈接等信息,可以加入網摘、修改網摘、刪除網摘。<

58、/p><p> ?。?)用戶瀏覽網摘是過程也是被記錄下來,可以統計出熱門的網摘。</p><p> ?。?)一個用戶對于多個的網摘。</p><p>  經過對上述系統功能的分析和需求總結,設計如下數據項:</p><p> ?。?)管理員信息:管理員用戶名、密碼、郵箱。</p><p> ?。?)書簽信息:書簽編號、用戶

59、編號、鏈接網址、書簽、備注。</p><p> ?。?)IP信息:編號、IP地址、用戶ID。</p><p> ?。?)網站鏈接信息:鏈接編號、網站名稱、網址。</p><p> ?。?)用戶信息:用戶編號、用戶ID、用戶名、密碼、郵箱、注冊時間、用戶登錄時間、網摘數量、國家。</p><p> ?。?)新聞信息:新聞編號、標題、內容、關鍵詞

60、、更新時間。</p><p>  (7)標簽信息:標簽編號、用戶ID、標簽內容、點擊數量、分類編號、是否私有標簽。</p><p>  (8)類別信息:類別編號、類別名稱。</p><p> ?。?)瀏覽信息:瀏覽編號、網摘編號、用戶ID、瀏覽者IP、瀏覽鏈接、瀏覽次數。</p><p>  (10)網摘信息:網摘編號、用戶ID、標題、來源網

61、址、簡介、標簽、評分、分類編號、添加時間。</p><p>  3.2.3 數據庫概念結構設計</p><p> ?。?)各實體E-R圖</p><p>  根據對數據項與數據結構的分析,設計出能夠滿足系統需求的各種實體,及它們之間的關系,為后面的邏輯結構設計打下基礎。根據設計規(guī)劃得出的實體有:管理員信息實體、普通用戶實體、IP信息實體、網站鏈接信息實體、書簽信息

62、實體、新聞信息實體、標簽信息實體、類別信息實體、瀏覽信息實體、網摘信息實體。</p><p>  圖3-1 管理員實體E-R圖</p><p>  圖3-2 普通用戶實體E-R圖</p><p>  圖3-3 書簽實體E-R圖</p><p>  圖3-4 IP實體E-R圖</p><p>  圖3-5 網站鏈接實體E

63、-R圖</p><p>  圖3-6 新聞實體E-R圖</p><p>  圖3-7 標簽實體E-R圖</p><p>  圖3-8 類別實體E-R圖</p><p>  圖3-9 瀏覽實體E-R圖</p><p>  圖3-10 網摘實體E-R圖</p><p> ?。?)各實體之間的關系總E

64、-R圖</p><p>  圖3-11 各實體關系總E-R圖</p><p>  3.2.4 數據表設計</p><p>  本系統創(chuàng)建的MySQL數據庫稱為wangzhai。包含如下幾個表。</p><p>  表3-1管理員(admin)表</p><p>  表3-2書簽(bookmark)表</p>

65、;<p>  表3-3 IP(ip)表</p><p>  表3-4 網站鏈接(links)表</p><p>  表3-5 普通用戶(myuser)表</p><p>  表3-6新聞(news)表</p><p>  表3-7 標簽(tags)表</p><p>  表3-8 類別(type)表<

66、;/p><p>  表3-9 瀏覽記錄(visit)表</p><p>  表3-10 網摘(zhai)表</p><p>  3.3 系統功能分析</p><p>  經過對系統的需求分析,將整個系統分為兩部分,管理員系統和普通用戶系統。</p><p>  (1)管理員系統功能分析</p><p&

67、gt;  管理員主要包括新聞信息模塊、網站鏈接模塊。管理員系統功能模塊如圖3-12所示</p><p>  圖3-12 管理員系統模塊圖</p><p>  管理員系統模塊的主要功能分別為:</p><p><b> ?、?新聞信息模塊</b></p><p>  管理員在這個網站上為普通用戶提供一些新聞信息。主要是對新

68、聞信息的添加、修改、刪除等操作。</p><p><b>  ② 網站鏈接模塊</b></p><p>  管理員在這個網站上為普通用戶提供一些網站鏈接。主要是對網站鏈接的添加、修改、刪除等操作。</p><p><b>  ③ 類別模塊</b></p><p>  類別模塊是管理員為網摘、標簽分類

69、提供一個大類分類方法。管理員可以添加、修改、刪除類別信息。</p><p> ?。?)普通用戶系統功能分析</p><p>  普通用戶系統可分為瀏覽模塊、網摘管理模塊、書簽管理模塊和標簽管理模塊。普通用戶系統如圖3-13所示。</p><p>  圖3-13 普通用戶系統模塊圖</p><p>  普通用戶系統模塊的主要功能分別為:<

70、/p><p><b>  ① 網摘管理模塊</b></p><p>  用戶當看到自己感興趣的信息的時候,可以進行添加網摘這一個操作,事后也可以對其進行修改、刪除等操作。</p><p><b> ?、?書簽管理模塊</b></p><p>  用戶當看到自己感興趣的網站鏈接的時候,可以進行添加書簽這一

71、個操作,事后也可以對其進行修改、刪除等操作。</p><p><b> ?、?標簽管理模塊</b></p><p>  是用戶對網摘進行加入標簽,這樣就能更好的管理網摘,而且可以根據點擊數量來統計熱門的網摘內容。</p><p><b> ?、?瀏覽模塊</b></p><p>  是用戶對新聞信息

72、和網站鏈接的瀏覽過程。</p><p><b>  系統實現</b></p><p>  在概要設計階段,已將系統劃分為多個模塊,并將它們按照一定的原則組裝起來,同時確定了每個功能及模塊之間的外部接口。到了詳細設計階段,將確定每個模塊具體執(zhí)行的過程。在處理過程設計時我采用的是結構化程序設計(簡稱SP)方法。詳細設計的結果基本決定了最終程序的質量,為軟件的質量、延長軟件

73、的生存期、軟件的可測試性、可維護性提供重要的保障。</p><p>  用戶注冊、登錄和注銷模塊</p><p><b>  數據連接實現</b></p><p>  本系統是使用MySQL數據庫,數據庫連接是JDBC。在每個需要連接數據庫的頁面都會輸入以下代碼,但是連接數據庫的函數是在類Functions中。</p><p

74、>  Request.setCharacterEncoding(“gb2312”);</p><p>  String mysqlDriver = “com.mysql.jdbc.Driver”; //數據庫驅動</p><p>  String mysqlUrl = “jdbc:mysql://localhost:3306/ch13_wangzhai”

75、; //數據庫連接字串</p><p>  String mysqlUser = “root”; //數據庫用戶名</p><p>  String mysqlPsw = “1234567”; //數據庫密碼</p><p>  Functions類中連接

76、數據庫函數代碼如下:</p><p>  public Connection init(String driver, String mysqlUrl, String user,</p><p>  String password) {</p><p>  Connection conn = null;</p><p><b>  t

77、ry {</b></p><p>  Class.forName(driver);</p><p>  String dburl = mysqlUrl + “?user=” + user + “&password=” + password</p><p>  + “&useUnicode=true&characterEncodin

78、g=GBK”;</p><p>  System.out.println(dburl);</p><p>  conn = DriverManager.getConnection(dburl);</p><p>  return conn;</p><p>  } catch (Exception exception) {</p>

79、<p>  exception.printStackTrace();</p><p>  return null;</p><p><b>  }</b></p><p><b>  }</b></p><p>  public void closeDB(Connection conn

80、){ //關閉數據庫 </p><p>  if(conn !=null)</p><p><b>  try {</b></p><p>  conn.close();</p><p>  } catch (SQLException e) {</p><p>  //

81、TODO 自動生成 catch 塊</p><p>  e.printStackTrace();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  用戶登錄模塊</b></p><p>  本頁是

82、本站的登錄頁面,為了確保網站與數據庫的安全,對進入的人員進行身份驗證是十分必要的。界面如圖4-1所示。本頁獲得用戶名和密碼信息,并對其進行驗證。如果正確,則把這些信息放入cookie,在頁面的上方會顯示該用戶名。如果用戶名或者密碼錯誤,則會彈出錯誤警告。</p><p>  圖4-1 用戶登錄頁面</p><p>  登入界面頁面是login.jsp,其主要代碼如下:</p>

83、<p>  request.setCharacterEncoding(“gb2312”);</p><p>  String userid1=request.getParameter(“userid”);</p><p>  String psw=request.getParameter(“psw”);</p><p>  String tourl=re

84、quest.getParameter(“tourl”);</p><p>  String IfLogin =”-1”;</p><p>  if(userid1!=null && !””.equals(userid1)){</p><p>  int Have= 0;</p><p>  User u = dbm.getUs

85、erByname(conn, userid1);</p><p>  if( u != null)</p><p>  Have=u.getId();</p><p>  IfLogin = “3”;</p><p>  if(Have>0){</p><p>  userid1=u.getUserid();&l

86、t;/p><p>  String psw1=u.getPsw();</p><p>  if(psw != null && psw1 != null && psw.equals(psw1)){</p><p>  IfLogin = “1”;</p><p>  //set cookie</p>&

87、lt;p>  Cookie cookie = new Cookie(“wangzhai”,java.net.URLEncoder.encode(userid1,”UTF-8”)); </p><p>  cookie.setPath(“/”);// very important</p><p>  cookie.setMaxAge(-1);</p><p&g

88、t;  response.addCookie(cookie);</p><p><b>  }</b></p><p><b>  else{</b></p><p>  IfLogin = “2”;</p><p><b>  }</b></p><p&g

89、t;<b>  }</b></p><p><b>  }</b></p><p>  以上代碼是將獲取的用戶名和密碼與數據庫的中的進行比較,針對不用的結果對IfLogin賦予不用的值,后面的是根據IfLogin的不同取值將不同的結果反饋給用戶。</p><p><b>  <%</b><

90、/p><p>  if(“1”.equals(IfLogin)){</p><p>  if(“myzhai”.equals(tourl)){</p><p>  out.println( “<script>location.replace(‘myzhai.jsp’);</script>”);</p><p> 

91、 }else if(“mysetup”.equals(tourl)){</p><p>  out.println( “<script>location.replace(‘mysetup.jsp’);</script>”);</p><p>  }else if(“err!”.equals(tourl)){</p><p>  out

92、.println( “<script>location.replace(‘err.html’);</script>”);</p><p><b>  }else{</b></p><p>  out.println( “<script>location.replace(‘index.jsp?uid=”+userid1+”

93、’);</script>”);</p><p><b>  }</b></p><p><b>  }else{</b></p><p><b>  %></b></p><p><b>  <%</b></p>

94、<p>  if(“2”.equals(IfLogin)){</p><p><b>  %></b></p><p>  <tr align=”center” class=”Notice”></p><p>  <td colspan=”2”>密碼錯誤...</p><p>&l

95、t;b>  </td></b></p><p><b>  </tr></b></p><p><b>  <%</b></p><p>  }else if(“3”.equals(IfLogin)){</p><p><b>  %>

96、</b></p><p>  <tr align=”center” class=”Notice”></p><p>  <td colspan=”2”>無此用戶... </td></p><p><b>  </tr></b></p><p><b>

97、;  <%</b></p><p><b>  }</b></p><p><b>  %></b></p><p>  以上的代碼是實現獲取用戶名和密碼,并對其進行驗證,如果錯誤的話會根據相應的錯誤給出提示——“密碼錯誤”或者“無此用戶”。如果正確的話就會將正確的用戶名和密碼放入cookie,這樣

98、就能系統就能記住該用戶,而且也能在頁面的上方顯示出其用戶名。顯示其用戶名就是讀取cookie中的信息,并顯示出來。其關鍵代碼如下:</p><p>  function getcookieval(offset) {</p><p>  var endstr = document.cookie.indexOf(“;”,offset);</p><p>  if (

99、endstr == -1)</p><p>  endstr = document.cookie.length;</p><p>  return (decodeURI(document.cookie.substring(offset,endstr)));</p><p><b>  }</b></p><p>  fu

100、nction getcookie(name) {</p><p>  var arg = name + ‘=’;</p><p>  var alen = arg.length;</p><p>  var clen = document.cookie.length;</p><p>  var j = 0;</p><

101、;p>  while (j< clen) {</p><p>  var k = j + alen;</p><p>  if(document.cookie.substring(j,k) == arg) return getcookieval(k);</p><p>  j = document.cookie.indexOf(“”,j)+1

102、;</p><p>  if (j ==0 ) break; </p><p><b>  }</b></p><p>  return null;</p><p><b>  }</b></p><p>  以上的代碼是讀取cookies中的用戶名信息,下面是把

103、cookies中讀取的信息顯示出來。如果用戶名不為空則顯示歡迎您等等信息,否則顯示免費注冊和登錄的鏈接。</p><p>  Var username = getcookie(“wangzhai”)</p><p>  if ((username != null) & (username != “”))</p><p><b>  {</b&

104、gt;</p><p>  document.write(“歡迎您:<B>”);</p><p>  document.write(getcookie(“wangzhai”));</p><p>  document.write(“</B> | “);</p><p>  document.write(“<a h

105、ref=’mysetup.jsp’>配置</a> | “);</p><p>  document.write(“<a href=’logout.jsp’>注銷</a> | “);</p><p>  document.write(“<a href=’icollect.jsp’ title=’添加新網摘’>添加</a> |

106、“);</p><p>  document.write(“<a href=’myzhai.jsp’ title=’管理我的網摘’><font color=red>管理</font></a> | “);</p><p><b>  }</b></p><p><b>  else{<

107、;/b></p><p>  document.write(“<a href=’reg.jsp’>免費注冊</a> | “);</p><p>  document.write(“<a href=’login.jsp’>登陸</a>”);}</p><p>  4.1.3用戶注冊模塊</p><

108、;p>  用戶注冊模塊是針對新用戶來說的。為了系統的安全性,只有本站的用戶才能擁有網摘、書簽、標簽添加的功能。其界面如圖4-2所示。用戶注冊的頁面是reg.jsp,在運行新用戶注冊的過程中需要調用DBManager類中的checkUserEmail、checkUsername和usrReg三個函數。其主要代碼如下:</p><p>  圖4-2 用戶注冊頁面</p><p>  re

109、quest.setCharacterEncoding(“gb2312”);</p><p>  String userid1=request.getParameter(“userid”);</p><p>  String username1=request.getParameter(“username”);</p><p>  String psw=request

110、.getParameter(“psw”);</p><p>  String email=request.getParameter(“email”);</p><p>  int