BBS論壇系統(tǒng) 畢業(yè)論文 完整 畢業(yè)設(shè)計(jì) 定稿
《BBS論壇系統(tǒng) 畢業(yè)論文 完整 畢業(yè)設(shè)計(jì) 定稿》由會(huì)員分享,可在線閱讀,更多相關(guān)《BBS論壇系統(tǒng) 畢業(yè)論文 完整 畢業(yè)設(shè)計(jì) 定稿(41頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 畢業(yè)設(shè)計(jì)說(shuō)明書 學(xué)生姓名 學(xué) 號(hào) 院 (系) 專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 題 目 BBS論壇系統(tǒng) 指導(dǎo)教師 (姓 名) (專業(yè)技術(shù)職稱/學(xué)位) 2009 年 05 月 摘 要:當(dāng)今社會(huì)是一個(gè)信息飛速發(fā)達(dá)的社會(huì),人們通過互聯(lián)網(wǎng)絡(luò)可以進(jìn)行信息的交流。論壇就是一種在Internet網(wǎng)上開放的信息服務(wù)系統(tǒng),通過論壇用戶可以方便的實(shí)現(xiàn)信息的交換和文件的共享。本文研究并實(shí)現(xiàn)了基于B/S模式的BBS論壇系統(tǒng),該系統(tǒng)采用目前流行的JSP+JavaBean+后臺(tái)數(shù)據(jù)庫(kù)三
2、層架構(gòu)。 本文從BBS系統(tǒng)的開發(fā)背景、相關(guān)技術(shù)、需求分析、詳細(xì)設(shè)計(jì)、系統(tǒng)測(cè)試與維護(hù)等方面詳細(xì)闡述了整個(gè)系統(tǒng)的開發(fā)過程。 關(guān)鍵詞: BBS ,JSP,MYSQL,JavaBeans Abstract:Nowadays is a flourishing society that information travels fast, Through the Internet people can exchange in
3、formation with each other. The forum is a service system that is open on Internet, through which, the forum customer can conveniently realizes the commutation of the information and the share of the documents. This text research and realizes online forum system (BBS) which based on the B/S model, Th
4、e system used the popular Three-tier Model (JSP+JavaBean+Database). The text detailed description of the whole system development, which described from the background of system, related technologies, demand analysis, detailed design, system testing and maintenance. Keywords: BBS,JSP,MYSQL,Ja
5、vaBeans 目錄 1前言 1 1.1 選題背景和意義 1 1.2 系統(tǒng)要解決的問題 1 2 相關(guān)技術(shù)及運(yùn)行環(huán)境簡(jiǎn)介 1 2.1 JSP技術(shù)簡(jiǎn)介 1 2.2 JAVABEAN技術(shù)簡(jiǎn)介 2 2.3 JDBC技術(shù)簡(jiǎn)介 2 2.4 TOMCAT技術(shù)簡(jiǎn)介 3 2.5 運(yùn)行環(huán)境 3 3 需求分析 3 3.1 用戶功能需求 4 3.2 數(shù)據(jù)需求 5 4 系統(tǒng)整體設(shè)計(jì) 5 4.1 系統(tǒng)模塊結(jié)構(gòu)設(shè)計(jì) 5 4.2 數(shù)據(jù)
6、庫(kù)設(shè)計(jì) 9 4.2.1 E-R圖分析 9 4.2.1.1 ER模型 9 4.2.1.2 聯(lián)系定義 12 4.2.2 數(shù)據(jù)表設(shè)計(jì) 13 4.3系統(tǒng)流程圖 15 5 詳細(xì)設(shè)計(jì) 16 5.1 用戶登錄模塊 16 5.2 用戶注冊(cè)模塊設(shè)計(jì) 18 5.3 帖子主題模塊設(shè)計(jì) 21 5.4 瀏覽帖子模塊設(shè)計(jì) 24 5.5 發(fā)表帖子模塊設(shè)計(jì) 26 5.6 其他模塊設(shè)計(jì) 29 5.6.1查詢用戶模塊 29 5.6.2帖子管理模塊 30 6 系統(tǒng)運(yùn)行和測(cè)試 32 6.1 測(cè)試運(yùn)行情況 32 6.2 程序有待改進(jìn)方面 33 結(jié)論 34 參考文獻(xiàn) 35 致謝 36
7、 1前言 1.1 選題背景和意義 在二十一世紀(jì),地球因?yàn)榛ヂ?lián)網(wǎng)的存在,早已變成一個(gè)村落。人們?cè)诨ヂ?lián)網(wǎng)世界里盡情的遨游,享受著Internet帶來(lái)的無(wú)限樂趣。我們習(xí)慣了上網(wǎng)看新聞、去論壇看帖、網(wǎng)上購(gòu)物、撰寫自己的網(wǎng)絡(luò)日志等等。當(dāng)然,最離不開的,還是各種搜索引擎,幫我們找到想要的信息。總之,互聯(lián)網(wǎng)已經(jīng)成為我們的一種生活方式,一個(gè)巨大的知識(shí)庫(kù)。本篇設(shè)計(jì)論文,圍繞如何構(gòu)建網(wǎng)上論壇系統(tǒng)展開研究。網(wǎng)上論壇系統(tǒng)(BBS)是各種信息交流和傳布的場(chǎng)所,它不同于電視報(bào)紙等傳統(tǒng)的媒體,任何人都可以隨便的在BBS上發(fā)表自己的言
8、論,不受任何限制。除了可以發(fā)表文字信息外可以上傳和轉(zhuǎn)貼圖片、音樂、Flash,可以選擇字號(hào)、顏色,還可以選擇有趣的表情圖案。只要花幾分種注冊(cè)(甚至不需要)你就能暢游BBS,從中得到無(wú)窮的樂趣。本系統(tǒng)就是基于以上功能的一個(gè)BBS,旨在為廣大網(wǎng)民提供了一個(gè)交流平臺(tái),能夠在這里暢所欲言,發(fā)表自己的看法、觀點(diǎn),同時(shí)能夠結(jié)交朋友為生活增添樂趣。 1.2 系統(tǒng)要解決的問題 本系統(tǒng)要解決網(wǎng)上論壇(BBS)管理的基本功能:用戶注冊(cè)、用戶登錄、發(fā)表文章、閱讀文章、回復(fù)文章、分頁(yè)查找、作者查找、個(gè)人資料修改。版主可以添加版塊,修改版塊,查看版主信息,修改版主信息。管理員可以對(duì)帖子進(jìn)行管理,修改管理員自己的信
9、息。超級(jí)管理員可以添加新的管理員以及刪除管理員,修改管理員資料,以及對(duì)帖子的管理,超級(jí)管理員還可以添加版主。在設(shè)計(jì)過程中要解決了JSP最常見的中文亂碼問題,并針對(duì)不同平臺(tái)總結(jié)出了處理亂碼的方法,為今后系統(tǒng)的移植做了鋪墊。在數(shù)據(jù)庫(kù)連接方面采用數(shù)據(jù)庫(kù)連接池技術(shù),數(shù)據(jù)庫(kù)連接池負(fù)責(zé)分配、管理和釋放數(shù)據(jù)庫(kù)連接,它允許應(yīng)用程序重復(fù)使用一個(gè)現(xiàn)有的數(shù)據(jù)庫(kù)連接,而再不是重新建立一個(gè)。 2 相關(guān)技術(shù)及運(yùn)行環(huán)境簡(jiǎn)介 2.1 JSP技術(shù)簡(jiǎn)介 JSP是服務(wù)器端的腳本語(yǔ)言,是以SERVLET為基礎(chǔ)開發(fā)而成的動(dòng)態(tài)網(wǎng)頁(yè)生成技術(shù),它的底層實(shí)現(xiàn)是JAVA SERVLET。 JSP(JAVA SERVER PAGES)由
10、HTML代碼和潛入其中的JAVA代碼所組成。服務(wù)器在頁(yè)面被客戶端請(qǐng)求以后對(duì)這些代碼進(jìn)行處理,然后將生產(chǎn)的HTML頁(yè)面返回客戶端的瀏覽器。按照腳本語(yǔ)言是服務(wù)于某一個(gè)子系統(tǒng)的語(yǔ)言這種論述,JSP應(yīng)當(dāng)被看作是一種腳本語(yǔ)言。然而,作為一種腳本語(yǔ)言,JSP又顯得過于強(qiáng)大了,在JSP中幾乎可以使用全部的Java類。 JSP的特點(diǎn)是面向?qū)ο蟆?跨平臺(tái)、 和SERVLET一樣穩(wěn)定、 可以使用SERVLET提供的API,同時(shí)克服了SERVLET的缺點(diǎn)。 在使用JSP時(shí)一般和JAVABEANS結(jié)合使用,從而將界面表現(xiàn)和業(yè)務(wù)邏輯分離。分開內(nèi)容和顯示邏輯的好處是,更新頁(yè)面外觀的人員不必懂得Java 代碼,而更
11、新JavaBean類的人員也不必是設(shè)計(jì)網(wǎng)頁(yè)的行家里手,就可以用帶JavaBeans 類的JSP 頁(yè)面來(lái)定義Web 模板,以建立一個(gè)由具有相似的外觀的頁(yè)面組成的網(wǎng)站。JavaBeans 類完成數(shù)據(jù)提供,這樣在模板中就沒有Java 代碼,這意味著這些模板可以由一個(gè)HTML 編寫人員來(lái)維護(hù)。當(dāng)然,也可以利用Java Servlet來(lái)控制網(wǎng)站的邏輯,通過Java Servlet調(diào)用JSP文件的方式來(lái)將網(wǎng)站的邏輯和內(nèi)容分離。 2.2 JAVABEAN技術(shù)簡(jiǎn)介 JAVABEAN是基于JAVA的組建模型,有點(diǎn)類似于MICROSOFT的COM組建。JavaBean 就是JAVA的可重用組件技術(shù)。ASP通過
12、COM來(lái)擴(kuò)充復(fù)雜的功能,如文件上載、發(fā)送email以及將業(yè)務(wù)處理或復(fù)雜計(jì)算分離出來(lái)成為獨(dú)立可重復(fù)利用的模塊。JSP通過JavaBean實(shí)現(xiàn)了同樣的功能擴(kuò)充。JSP 對(duì)于在Web 應(yīng)用中集成JavaBean 組件提供了完善的支持。這種支持不僅能縮短開發(fā)時(shí)間(可以直接利用經(jīng)測(cè)試和可信任的已有組件,避免了重復(fù)開發(fā)),也為JSP 應(yīng)用帶來(lái)了更多的可伸縮性。JavaBean 組件可以用來(lái)執(zhí)行復(fù)雜的計(jì)算任務(wù),或負(fù)責(zé)與數(shù)據(jù)庫(kù)的交互以及數(shù)據(jù)提取等。 在JAVA平臺(tái)中,可以無(wú)限擴(kuò)充JAVA程序的功能,通過JAVABEAN的組合可以快速生產(chǎn)新的應(yīng)用程序。JAVABEAN 通過JAVA虛擬機(jī)(JAVA VIRT
13、UAL MACHINE)執(zhí)行,運(yùn)行JAVABEAN最小的需求是JDK1.1或者以上的版本。 對(duì)于程序員來(lái)說(shuō),最好的一點(diǎn)就是JAVABEAN可以實(shí)現(xiàn)代碼的重復(fù)利用,另外對(duì)于程序的易維護(hù)性等等也有很重大的意義。在實(shí)際的JSP開發(fā)過程中,讀者將會(huì)發(fā)現(xiàn),和傳統(tǒng)的ASP或PHP頁(yè)面相比,JSP頁(yè)面將會(huì)是非常簡(jiǎn)潔的,由于JavaBeans開發(fā)起來(lái)簡(jiǎn)單,又可以利用Java語(yǔ)言的強(qiáng)大功能,許多動(dòng)態(tài)頁(yè)面處理過程實(shí)際上被封裝到了JavaBeans中。 JAVABEAN傳統(tǒng)的應(yīng)用在于可視化的領(lǐng)域,如AWT下的應(yīng)用。自從JSP誕生后,JAVABEAN更多的應(yīng)用在了非可視化領(lǐng)域,在服務(wù)器端應(yīng)用方面表現(xiàn)出了越來(lái)越
14、強(qiáng)的生命力。 2.3 JDBC技術(shù)簡(jiǎn)介 JDBC是一組API,定義了用來(lái)訪問數(shù)據(jù)庫(kù)源的標(biāo)準(zhǔn)JAVA類庫(kù),使用這種類庫(kù)可以使用一種標(biāo)準(zhǔn)的方法、方便地訪問數(shù)據(jù)庫(kù)資源。JDBC是用于執(zhí)行SQL語(yǔ)句的Java應(yīng)用程序接口,由一組用Java語(yǔ)言編寫的類與接口組成,在JSP中將使用JDBC來(lái)訪問數(shù)據(jù)庫(kù)。JDBC是一種規(guī)范,它讓各數(shù)據(jù)庫(kù)廠商為Java程序員提供標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)訪問類和接口,這樣就使得獨(dú)立于DBMS的Java應(yīng)用程序的開發(fā)工具和產(chǎn)品成為可能。 JDBC的目標(biāo)是使應(yīng)用程序開發(fā)人員使用JDBC可以連接任何提供了JDBC驅(qū)動(dòng)程序的數(shù)據(jù)庫(kù)系統(tǒng),這樣就使得程序員無(wú)須對(duì)特定的數(shù)據(jù)庫(kù)的特點(diǎn)有過多的了解,從
15、而大大簡(jiǎn)化了和加快了開發(fā)過程。 一般的Java開發(fā)工具都帶有JDBC - ODBC橋驅(qū)動(dòng)程序,這樣,只要是能夠使用ODBC訪問的數(shù)據(jù)庫(kù)系統(tǒng),也就能夠使用JDBC訪問了。有趣的是,不同于ODBC是Open Database Connectivity的簡(jiǎn)稱,JDBC并不是Java Database Connecivity的簡(jiǎn)稱,而是SUN的注冊(cè)商標(biāo),至少官方說(shuō)法是這樣的。 JDBC API 為訪問不同的數(shù)據(jù)庫(kù)提供了一種統(tǒng)一途徑,像ODBC一樣,JDBC為開發(fā)者屏蔽了一些細(xì)節(jié)問題。 另外,JDBC對(duì)數(shù)據(jù)庫(kù)的訪問也具有平臺(tái)無(wú)關(guān)性。 2.4 TOMCAT技術(shù)簡(jiǎn)介 在已JAVA技術(shù)為的WEB
16、開發(fā)領(lǐng)域中,TAMCAT是許多JAVA程序員相當(dāng)喜愛的開放源代碼產(chǎn)品,它附屬在APACHE SOFTWARE FOUNDATION 所主導(dǎo)的JAKART項(xiàng)目?jī)?nèi)。由于TAMCT是SERVLET與JSP技術(shù)的參考實(shí)現(xiàn)(REFERNCE IMPLEMENTATION),所以它不但可以當(dāng)作獨(dú)立的WEB服務(wù)器,也可以結(jié)合其它的WEB服務(wù)器,只擔(dān)任SERVLET容器或JSP容器的角色。 2.5 運(yùn)行環(huán)境 為了保證BBS論壇管理系統(tǒng)運(yùn)行的高效性和可靠性,服務(wù)器應(yīng)具有較高的軟硬件配置,客戶端的要求不是很高。此應(yīng)用程序可廣泛運(yùn)行于國(guó)際互聯(lián)網(wǎng)即Internet,也可適用于內(nèi)部的局域網(wǎng)。其運(yùn)行要求如下: 軟件
17、環(huán)境: 客戶端: Windows95/98/2000/XP,Internet Explorer(IE)等。 服務(wù)器端:Windows NT/Windows2000,Tomcat 5.0,JDK 1.5及其以上版本,IE等; 數(shù)據(jù)庫(kù):采用MYSQL,運(yùn)行于服務(wù)器端。 硬件環(huán)境: 服務(wù)器 CPU:PIII 500以上 ,內(nèi)存:512M以上。 客戶機(jī) CPU:P200MMX以上,內(nèi)存:32M以上。 3 需求分析 軟件的需求分析必須要有對(duì)原業(yè)務(wù)的一個(gè)深入了解、提取、抽象、升華的過程,管理軟件需求分析尤其如此。 軟件的需求分析是從用戶的業(yè)務(wù)中提取出軟件系統(tǒng)能夠幫助用戶解決的業(yè)務(wù)問題,通
18、過對(duì)用戶業(yè)務(wù)問題的分析,規(guī)劃出我們的軟件產(chǎn)品。這個(gè)步驟是對(duì)用戶業(yè)務(wù)需求的一個(gè)升華,是一個(gè)把用戶業(yè)務(wù)管理流程優(yōu)化,轉(zhuǎn)化為軟件產(chǎn)品,從而提升管理而實(shí)現(xiàn)的質(zhì)的飛躍,這一步是否成功,直接關(guān)系到開發(fā)出來(lái)的軟件產(chǎn)品能否得到用戶認(rèn)可,順利交付給客戶,客戶能否真正運(yùn)用我們的產(chǎn)品幫助他解決業(yè)務(wù)或管理問題。 3.1 用戶功能需求 為了系統(tǒng)的各模塊功能夠正常使用、系統(tǒng)更加人性化,還為了滿足系統(tǒng)的實(shí)用性及安全性,本系統(tǒng)包含5個(gè)角色:游客,用戶,管理員、超級(jí)管理員、版主。 (1)游客的各項(xiàng)功能: 游客可以瀏覽本論壇,但是不可以發(fā)帖,不可以回帖,也不可以看帖,只有注冊(cè)了以后成為本論壇的用戶,才可以執(zhí)行用戶的功能
19、。 (2)用戶的各項(xiàng)功能: 一旦成為本論壇的用戶后享有以下功能: 1、用戶注冊(cè) 2、用戶登錄 3、發(fā)表文章 4、閱讀文章 5、回復(fù)文章 6、作者查找 7、個(gè)人資料修改 (3)管理員的各項(xiàng)功能: 1、修改管理員自己的信息 2、對(duì)帖子進(jìn)行管理 3、進(jìn)入前臺(tái)以及退出后臺(tái) (4)超級(jí)管理員的各項(xiàng)功能: 超級(jí)管理員可以添加新的管理員以及刪除管理員,修改管理員資料,以及對(duì)帖子的管理,超級(jí)管理員還可以添加版主。 (5)版主的各項(xiàng)功能: 版主可以具有的功能如下: 1、添加版塊 2、修改版塊 3、查看版主信息 4、修改版主信息 3.2 數(shù)據(jù)需求 用戶必須先注冊(cè)后再登
20、錄進(jìn)入系統(tǒng),系統(tǒng)用戶的數(shù)據(jù)包括用戶名、用戶密碼、用戶類型。用戶名在整個(gè)系統(tǒng)中是唯一的。 用戶瀏覽帖子時(shí),數(shù)據(jù)應(yīng)當(dāng)包括用戶名、帖子序號(hào)。用戶根據(jù)某一主題可以發(fā)表帖子,發(fā)表帖子需要的數(shù)據(jù)包括用戶名、版塊編號(hào)、版塊分類名、發(fā)表帖子標(biāo)題、發(fā)表帖子內(nèi)容、發(fā)表帖子類型。用戶回復(fù)帖子的數(shù)據(jù)包括用戶名、回復(fù)帖子序號(hào)、回復(fù)的內(nèi)容、版塊編號(hào)、版塊分類名。 管理員進(jìn)入后臺(tái)管理時(shí),需要數(shù)據(jù)包括管理員ID、管理員密碼、管理員的類型。管理員根據(jù)權(quán)限的不同分為普通管理員和超級(jí)管理員。 版主進(jìn)去后臺(tái)管理時(shí),需要的數(shù)據(jù)包括版主名、版主密碼、子版塊名、版塊編號(hào)。 4 系統(tǒng)整體設(shè)計(jì) 4.1 系統(tǒng)模塊結(jié)構(gòu)設(shè)計(jì)
21、 BBS論壇系統(tǒng)(前臺(tái))的主要功能模塊及其關(guān)系,如圖4-1所示: BBS論壇系統(tǒng)(前臺(tái)) 用戶登錄管理 用戶信息資料管理 相關(guān)查詢管理 主題帖子管理 用戶注冊(cè)管理 幫助與退出 瀏覽帖子 用戶信息修改 發(fā)表話題 回復(fù)帖子 新用戶注冊(cè) 按作者名查詢 后臺(tái)登錄 圖4-1 BBS論壇系統(tǒng)前臺(tái)主要功能模塊 根據(jù)BBS論壇系統(tǒng)前臺(tái)的模塊圖可以得到系統(tǒng)的具體功能: ★ 用戶登錄管理功能:新用戶注冊(cè)成功之后,在登錄界面輸入正確用戶名、密碼和驗(yàn)證碼之后便可以進(jìn)入本系統(tǒng)。 ★ 用戶注冊(cè)管理功能:游客可以瀏覽論壇的主題話題但是不可以發(fā)表話題和回復(fù)帖子,只有當(dāng)
22、游客在本論壇注冊(cè)成為論壇的用戶后,才能進(jìn)行相關(guān)操作。 ★ 用戶信息資料管理功能:在用戶登錄成功之后,可以修改用戶自己的信息,進(jìn)一步完善用戶資料和修改注冊(cè)時(shí)用戶填寫的資料。 ★ 主題帖子管理功能:為了方便信息交流,用戶可以發(fā)表話題,更可以根據(jù)帖子主題瀏覽帖子內(nèi)容和回復(fù)帖子。 ★ 查詢管理功能:用戶可以按作者名查詢帖子序號(hào)、標(biāo)題、發(fā)帖的時(shí)間、發(fā)帖人等信息,方便用戶快速的找到自己想要的信息。 根據(jù)BBS系統(tǒng)功能分析和論壇管理的特點(diǎn),需要設(shè)計(jì)BBS論壇的后臺(tái)管理系,其主要功能模塊如圖4-2所示。 論壇后臺(tái)管理
23、系統(tǒng) 主題帖子管理 管理員信息管理 版塊管理 版主信息管理 版主管理 可以查看管理員自己的信息,可以新增管理員,可以修改管理員的資料,還可以刪除管理員。 可以按主題帖子序號(hào),主題名,發(fā)表的話題進(jìn)行看帖,修改帖子和刪除帖子操作。 可以根據(jù)版塊要求的不同,添加這一版塊的版主負(fù)責(zé)管理此版塊。 根據(jù)版塊的分類,這一版主可以添加其版塊下的子分類,或者修改原有的子分類。 可以查看版主自己的信息,可以修改版主的信息資料。 管理員管理 管理員管理 版主管理 圖 4-2 BBS論壇系統(tǒng)后臺(tái)功能模塊 根據(jù)BBS論壇系統(tǒng)后臺(tái)的模塊圖可以得到系統(tǒng)的
24、具體功能: 一 管理員管理: ★ 管理員信息管理功能:管理員輸入正確用戶名、密碼之后便可以進(jìn)入到后臺(tái)管理系統(tǒng)。管理員可以查看自己的信息,可以添加管理員,可以修改管理員的資料,還可以刪除管理員。 ★ 主題帖子管理功能:管理員可以對(duì)用戶發(fā)表的帖子進(jìn)行管理,管理員可以按主題帖子序號(hào),主題名,發(fā)表的話題進(jìn)行看帖,修改帖子和刪除帖子等操作。 ★ 版主管理功能:管理員可以根據(jù)版塊具體要求的不同,添加這一版塊的版主負(fù)責(zé)管理此版塊。來(lái)分擔(dān)管理員的管理論壇的工作,可以更好的為廣大用戶服務(wù)。 二 版主管理: ★ 版塊管理功能:只有版主輸入正確用戶名、密碼之后便可以進(jìn)入到版主后臺(tái)管理。版主根據(jù)版塊的
25、分類,可以添加其版塊下的子分類,或者修改原有版塊下子分類的名稱,子分類的描述介紹。 ★ 版主信息管理功能:可以查看版主自己的信息,可以修改版主的信息資料。 4.2 數(shù)據(jù)庫(kù)設(shè)計(jì) 該系統(tǒng)采用MySQL作為后臺(tái)數(shù)據(jù)庫(kù)去存儲(chǔ)所有與系統(tǒng)相關(guān)的數(shù)據(jù)。這些數(shù)據(jù)表包括用戶表(userinfo)、主題帖子表(topicinfo)、回復(fù)帖子表(replyinfo)、版塊表(foruminfo)以及管理員表(admininfo)。數(shù)據(jù)模型的最終目的就是規(guī)劃能夠有效地處理事務(wù),并且保持應(yīng)用開發(fā)的簡(jiǎn)潔性的關(guān)系數(shù)據(jù)庫(kù),并在數(shù)據(jù)庫(kù)的規(guī)范化、性能優(yōu)化以及數(shù)據(jù)的簡(jiǎn)潔性之間達(dá)到平衡。 4.2.1 E-R圖分析 4.2.
26、1.1 ER模型 E-R模型是對(duì)現(xiàn)實(shí)世界的一種抽象。它的主要成分是實(shí)體、聯(lián)系和屬性。使用這三種成分,我們可以建立許多應(yīng)用環(huán)境的ER模型。本系統(tǒng)的實(shí)體和屬性的定義如下: 用戶表(用戶ID、用戶密碼、用戶昵稱、用戶電子郵箱、用戶級(jí)別、用戶留言、用戶自述、用戶權(quán)限) 主題帖子表(主題帖子編號(hào)、主題帖子標(biāo)題、主題帖子作者、帖子內(nèi)容、發(fā)表帖子的時(shí)間、回復(fù)數(shù)、所屬版塊號(hào)、主題類型) 回復(fù)帖子表(回復(fù)編號(hào)、回復(fù)帖子編號(hào)、回復(fù)作者、回復(fù)帖子時(shí)間、回復(fù)內(nèi)容) 版塊表(版塊編號(hào)、版塊名稱、版塊類型、子版塊編號(hào)、版主、主題數(shù)、文章數(shù)、版塊描述) 管理員表(管理員ID、管理員密碼、管理員電子郵箱、管理員自
27、述、注冊(cè)時(shí)間、管理員留言、管理員權(quán)限) 具體實(shí)體屬性的關(guān)系圖: 用戶 用戶留言 級(jí)別 用戶郵箱 用戶ID 密碼 昵稱 用戶權(quán)限 用戶自述 圖 4-3 用戶信息實(shí)體圖 主題帖子 發(fā)表帖子時(shí)間 回復(fù)數(shù) 帖子內(nèi)容 帖子編號(hào) 標(biāo)題 作者 主題類型 所屬版塊號(hào) 圖 4-4 主題帖子信息實(shí)體圖 回復(fù)帖子 回復(fù)編號(hào) 回復(fù)帖子編號(hào) 回復(fù)內(nèi)容 回復(fù)帖子時(shí)間 回復(fù)作者 圖 4-5 回復(fù)帖子信息實(shí)體圖 版塊 版塊描述 版主 主題數(shù) 版塊編號(hào) 版塊名稱 版塊
28、類型 文章數(shù) 子版塊編號(hào) 圖 4-6 版塊信息實(shí)體圖 管理員 留言 注冊(cè)時(shí)間 管理員自述 管理員ID 密碼 郵箱 管理員權(quán)限 圖 4-7 管理員信息實(shí)體圖 4.2.1.2 聯(lián)系定義 ER模型的“聯(lián)系”用于刻畫實(shí)體之間的關(guān)聯(lián)。一種完整的方式是對(duì)局部結(jié)構(gòu)中任意兩個(gè)實(shí)體類型,依據(jù)需求分析的結(jié)果,考察局部結(jié)構(gòu)中任意兩個(gè)實(shí)體類型之間是否存在聯(lián)系。若有聯(lián)系,進(jìn)一步確定是1:N,M:N,還是1:1等。還要考察一個(gè)實(shí)體類型內(nèi)部是否存在聯(lián)系,兩個(gè)實(shí)體類型之間是否存在聯(lián)系,多個(gè)實(shí)體類型之間是否存在聯(lián)系,等等。 本系統(tǒng)的ER模型如圖4-8所示: 版塊
29、 m m n m 1 n 1 用戶 所屬 n 主題帖子 管理員 回復(fù)帖子 管理 對(duì)應(yīng) 瀏覽 圖 4-8 ER模型圖 4.2.2 數(shù)據(jù)表設(shè)計(jì) 在這個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)中要建立5張數(shù)據(jù)表,包括用戶表(userinfo)、主題帖子表(topicinfo)、回復(fù)帖子表(replyinfo)、版塊表(foruminfo)以及管理員表(admininfo)。在剛剛建立的hello2數(shù)據(jù)庫(kù)節(jié)點(diǎn)下的“表”節(jié)點(diǎn)右擊,在彈出的快捷菜單中選擇“新增資料表”命令,就可以開始新建各個(gè)數(shù)據(jù)表。這5張數(shù)據(jù)表的各個(gè)字段意義如下所示。 4.2.2.1??????回復(fù)帖
30、子表(replyinfo) 字段名 數(shù)據(jù)類型 字段大小 說(shuō)明 id int 11 回復(fù)編號(hào)(主鍵) topicid int 11 主題號(hào)(外鍵) replyuserid varchar 20 回復(fù)者(外鍵) replytime datetime 0 ?回復(fù)時(shí)間 replycontent varchar 300 ?回復(fù)內(nèi)容 表4-1 回復(fù)帖子表 4.2.2.2??????主題帖子表(topicinfo) 字段名 數(shù)據(jù)類型 字段大小 說(shuō)明 topicid int 11 主題編號(hào)(主鍵) topictitle varchar
31、 60 標(biāo)題 topicuserid varchar 20 發(fā)帖人(外鍵) topiccontent varchar ?300 ?發(fā)帖內(nèi)容 topictime datetime ?0 ?發(fā)帖時(shí)間 replynum int ?10 回復(fù)數(shù)? forumid int ?10 ?版塊號(hào)(外鍵) groupid int 2 主題類型 表4-2 主題帖子表 4.2.2.3?????版塊表(foruminfo) 字段名 數(shù)據(jù)類型 字段大小 說(shuō)明 mid int 10 版塊編號(hào)(主鍵) name varchar 80 版塊名
32、isparent int ?2 ?版塊是否分類 sortid int ?3 ?子版塊號(hào) adminauthor varchar 60 版主 totaltopic int 10 主題數(shù) totalpost int 11 文章數(shù) description varchar 160 版塊描述 表4-3 版塊表 4.2.2.4?? 管理員表(admininfo) 字段名 數(shù)據(jù)類型 字段大小 說(shuō)明 admname varchar 20 管理員ID(主鍵) admpwd varchar 20 密碼 admemail varch
33、ar 50 ?郵箱 admstate varchar 50 ?自述 admtime datetime 0 注冊(cè)時(shí)間 admsay varchar 150 留言 admright int 10 權(quán)限 表4-4 管理員信息表 4.2.2.5??? 用戶表(userinfo) 字段名 數(shù)據(jù)類型 字段大小 說(shuō)明 userid varchar 20 用戶名(主鍵) userpwd varchar 20 ?密碼 username varchar 30 ?昵稱 useremail varchar 50 ?郵箱 userl
34、evel int 20 ?級(jí)別 usersay varchar 150 留言 userstate varchar 20 自述 right int 10 權(quán)限 表4-5 用戶信息表 4.3系統(tǒng)流程圖用戶 登錄 是否登陸 回復(fù)帖子 管理員管理 搜索主貼 帖子管理 版主管理 主界面 是 否 主頁(yè)面 注冊(cè) 后臺(tái)管理 發(fā)表新帖 添加管理員 修改管理員資料 刪除管理員 修改帖子 查看帖子 刪除帖子 添加版主 修改版主資料 添加版塊 圖 4-9 主要功能流程圖 各模塊功能解釋如下: 用戶登錄模塊:新用戶注冊(cè)
35、成功之后,在登錄界面輸入注冊(cè)時(shí)填寫的正確用戶名、密碼之后,再輸入出現(xiàn)的驗(yàn)證碼之后便可以進(jìn)入本系統(tǒng)。如果用戶名和密碼正確,但是輸入的驗(yàn)證碼錯(cuò)誤,則不允許進(jìn)入本系統(tǒng),跳轉(zhuǎn)到登錄界面重新輸入。 用戶注冊(cè)模塊:建立賬號(hào),如果游客以前沒有建立賬號(hào),則只可以瀏覽論壇的主題話題但是不可以發(fā)表新話題和回復(fù)有關(guān)帖子,只有當(dāng)游客在本論壇注冊(cè)成為論壇的用戶后,才能進(jìn)行相關(guān)操作。同時(shí)在用戶創(chuàng)建新賬號(hào)的時(shí)候,必須輸入用戶名(系統(tǒng)會(huì)在提交時(shí)檢查該用戶名是否已存在) 。用戶在建立新賬號(hào)之后就可以具有合法登錄系統(tǒng)的身份,可以進(jìn)行相關(guān)的操作。 用戶信息資料管理模塊:在用戶登錄成功之后,可以修改用戶自己的信息,進(jìn)一步完善用
36、戶自己的資料和修改注冊(cè)時(shí)用戶填寫的資料。 主題帖子模塊:為了方便信息交流,首先帖子主題類型分為精華主題(紅色)和普通主題(黑色),用戶可以根據(jù)需要游覽自己感興趣的帖子,獲得所需信息。用戶可以發(fā)表話題,還可以根據(jù)帖子主題瀏覽帖子內(nèi)容和回復(fù)帖子。 查詢模塊:用戶只要輸入想查詢的用戶ID,點(diǎn)擊查詢按鈕,便可以查詢出該用戶發(fā)表的所有帖子以及該用戶發(fā)表的帖子序號(hào)、標(biāo)題、發(fā)帖的時(shí)間、發(fā)帖人等詳細(xì)信息,方便用戶快速的找到自己想要的信息。 管理員信息管理模塊:管理員輸入正確用戶名、密碼之后便可以進(jìn)入到后臺(tái)管理系統(tǒng)。管理員可以查看自己的信息,可以添加管理員,可以修改管理員的資料,還可以刪除管理員。 主題
37、帖子管理模塊:管理員可以對(duì)用戶發(fā)表的帖子進(jìn)行管理,管理員可以按主題帖子序號(hào),主題名,發(fā)表的話題進(jìn)行看帖,修改帖子和刪除帖子等操作。 版主管理模塊:管理員可以根據(jù)版塊具體要求的不同,添加這一版塊的版主負(fù)責(zé)管理此版塊,來(lái)分擔(dān)管理員的管理論壇的工作,可以更好的為廣大用戶服務(wù)。版主還可以修改自己的資料,添加本版塊的子版塊。 5 詳細(xì)設(shè)計(jì) 5.1 用戶登錄模塊 當(dāng)游客注冊(cè)成為本BBS論壇系統(tǒng)的用戶后,便跳轉(zhuǎn)到系統(tǒng)登錄界面,在系統(tǒng)登錄界面(圖5-1所示)輸入正確用戶名、密碼和驗(yàn)證碼之后便可以進(jìn)入本系統(tǒng)。 圖 5-1 用戶登陸界面 驗(yàn)證用戶登陸的代碼如下: pr
38、ivate String userid,userpwd; public Connection con=null; public Statement stmt=null; public ResultSet rs=null; public String getUserid() { return userid; } public void setUserid(String userid) { this.userid = userid; } public String getUserpwd() { return userpwd; } publi
39、c void setUserpwd(String userpwd) { this.userpwd = userpwd; } public boolean checkUser(String id,String p){ boolean b=false; try { con=new ConnDb().getConn(); stmt=con.createStatement(); String sql="select * from userinfo where userid='"+id+"' and userpwd='"+p+"'";
40、 rs=stmt.executeQuery(sql); if(rs.next()) { b=true; } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); }finally{ this.close(); } return b; } 5.2 用戶注冊(cè)模塊設(shè)計(jì) 游客如果要在本BBS論壇系統(tǒng)發(fā)表帖子和回復(fù)帖子,游客必須在本論壇注冊(cè)成為論壇的用戶后,才能進(jìn)行相關(guān)操作。系統(tǒng)注冊(cè)界面(圖5-
41、2所示) 圖 5-2 用戶注冊(cè)界面 驗(yàn)證用戶注冊(cè)是否成功代碼如下: public class Register { private String userID; private String userName; private String userPwd; private String userEmail; private int userLevel=0; private String userSay; public int userRegister(){ try{ Class.forName("org
42、.gjt.mm.mysql.Driver").newInstance(); String url ="jdbc:mysql://localhost/hello2?user=root&password=123456"; Connection con=null; Statement stmt=null; ResultSet rs=null; con=DriverManager.getConnection(url); stmt=con.createStatement(); rs=stmt.executeQuery(
43、"select * from userinfo where userid='"+userID+"'"); int i=0; while(rs.next()){ i++; } System.out.println(String.valueOf(i)); if(i>0){ return -1;//-1是代表用戶已經(jīng)存在 } String insert="insert into userinfo values('"+userID+"','"+userPwd+"','"+userName+"','
44、"+userEmail+"','"+userLevel+"','"+userSay+"',0)"; stmt.executeUpdate(insert); return 0; //0 是代表注冊(cè)成功 } catch (Exception e) { // TODO Auto-generated catch block System.err.println(e.getMessage()); System.err.println("fail"); return -2;//-2 是代表注冊(cè)失敗 } } }
45、 5.3 帖子主題模塊設(shè)計(jì) 帖子主題界面(圖5-3所示),帖子主題類型分為精華主題(紅色)和普通主題(黑色),用戶可以根據(jù)需要游覽自己感興趣的帖子,獲得所需信息。用戶可以發(fā)表話題,還可以根據(jù)帖子主題瀏覽帖子內(nèi)容和回復(fù)帖子,以及根據(jù)用戶ID查詢主題帖子。 圖 5-3 帖子主題界面 帖子精華主題代碼如下: <% ResultSet rs; String sql="select * from topicinfo where forumid='"+forumid+"' and groupid=1 "; rs=databean.executeQuery(sql); %>
46、<% while(rs.next()) {out.print("
47、tatement stmtt=null; ResultSet rs2; conn=DriverManager.getConnection(urll); stmtt=conn.createStatement(); String sql2="select * from replyinfo where id='"+tid+"' "; rs2=stmtt.executeQuery(sql2); while(rs2.next()){ %>
48、nmouseout="this.className='tr3 f_one'">
<%=rs.getString("topictitle")%>
50、ass=a2 href="kantie.jsp?userid=<%=userid%>&topicid=<%=topicid%>"><%=rs2.getString("replycontent")%>
By:<%=rs2.getString("replyuserid")%> [ <%=rs2.getString("replytime")%> ]
53、ng("topictitle")%>
By:無(wú)
54、
55、width="369">
56、 String url ="jdbc:mysql://localhost/hello2?user=root&password=123456"; Connection con=null; Statement stmt=null; ResultSet rs=null; con=DriverManager.getConnection(url); stmt=con.createStatement(); rs=stmt.executeQuery("select * from topicinfo a,userinfo b where t
57、opicid='"+topicid+"'and a.topicuserid=b.userid"); rs.next(); String ttitle=rs.getString("topictitle"); String tuserid=rs.getString("topicuserid"); String content=rs.getString("topiccontent"); String tname=rs.getString("username"); String tsay=rs.getString("usersay"); out.println("
58、s=h >
討論的話題:"+ttitle+"
內(nèi)容:"+content+"
"+"
樓主:"+tuserid+"
"+"
個(gè)性簽名:*"+tsay+"
回復(fù):"+rcontent+" 回帖的時(shí) 62、間:"+rtime+" "+String.valueOf(i)+"樓:"+ruserid+" 個(gè)性簽名:"+rsay+"");
out.println("頂端 |