基于WEB的易語言論壇系統(tǒng)的設(shè)計與實現(xiàn)_第1頁
基于WEB的易語言論壇系統(tǒng)的設(shè)計與實現(xiàn)_第2頁
基于WEB的易語言論壇系統(tǒng)的設(shè)計與實現(xiàn)_第3頁
基于WEB的易語言論壇系統(tǒng)的設(shè)計與實現(xiàn)_第4頁
基于WEB的易語言論壇系統(tǒng)的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

畢業(yè)設(shè)計(論文)任務(wù)書畢業(yè)設(shè)計(論文)題目:基于Web的易語言論壇系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)設(shè)計(論文)要求及原始數(shù)據(jù)(資料):1.綜述國內(nèi)JavaEEWEB應(yīng)用開發(fā)技術(shù)的現(xiàn)狀;2.了解JavaEEWEB項目開發(fā)的相關(guān)技術(shù);3.掌握J(rèn)avaEEWEB項目開發(fā)的基礎(chǔ)知識與基本能力;4.掌握SpringMVC與Hibernate兩大框架技術(shù);5.掌握使用框架技術(shù)開發(fā)JavaEEWEB項目的能力;6.設(shè)計并實現(xiàn)一個基于WEB的論壇系統(tǒng)項目;7.總結(jié)通過此次項目實戰(zhàn)在知識與技能方面的收獲;8.訓(xùn)練檢索文獻資料和利用文獻資料的能力;9.訓(xùn)練撰寫技術(shù)文檔與學(xué)位論文的能力。畢業(yè)設(shè)計(論文)主要內(nèi)容:1.描述國內(nèi)網(wǎng)上論壇系統(tǒng)的現(xiàn)狀;2.綜述國內(nèi)JavaEEWEB應(yīng)用開發(fā)技術(shù)的概況;3.簡單介紹JavaEEWEB項目開發(fā)的相關(guān)技術(shù);4.描述框架技術(shù)在JavaEEWEB項目開發(fā)的重要性;5.描述本項目開發(fā)環(huán)境的配置與項目運行的部署;6.分析本項目需要的功能并做出相應(yīng)的設(shè)計;7.實現(xiàn)本項目的所有功能并保證足夠的健壯性;8.總結(jié)通過本項目所獲得的知識與技能的提升;學(xué)生應(yīng)交出的設(shè)計文件(論文):1.內(nèi)容完整、層次清晰、敘述流暢、排版規(guī)范的畢業(yè)設(shè)計論文;2.包括畢業(yè)設(shè)計論文、源程序等內(nèi)容在內(nèi)的畢業(yè)設(shè)計電子文檔及其它相關(guān)材料。主要參考文獻(資料):[1]孫鑫.JavaWeb開發(fā)詳解[M].電子工業(yè)出版社,2006[2]孫衛(wèi)琴,李洪成.Tomcat與JavaWeb開發(fā)技術(shù)詳解[M].電子工業(yè)出版社,2003[3]袁建洲.JavaScript編程寶典.人民郵電出版社,2007[4]李剛.基于J2EE的AJAX寶典.電子工業(yè)出版社,2007[5]耿祥義.JSP基礎(chǔ)編程[M].清華大學(xué)出版社,2004[6]林信良.JSP&Servlet學(xué)習(xí)筆記[M].清華大學(xué)出版社,2012,5[7]孫衛(wèi)琴.精通hibernate[M].電子工業(yè)出版社,2005,4[8]林寒超,張南平.Hibernate技術(shù)的研究[J].計算機技術(shù)與發(fā)展,2006,16(11)[9]畢建信.基于MVC設(shè)計模式的Web應(yīng)用研究與實現(xiàn)[D].武漢理工大學(xué),2006,5[10]威爾德,斯尼德等著,趙利通譯.SpringFramework2入門經(jīng)典[M].清華大學(xué)出版社,2009[11]CraigWalls,RyanBreidenBach.SpringInAction[M].ManningPublications,2006[12]AmuthanG.SpringMVC:Beginner'sGuide[M].PacktPublishing,2014[13]DataflowanalysisandtestingofJSP-basedWebapplications[J].Informationandsoftwaretechnology,2006.48(12)專業(yè)班級:軟件工程1102班學(xué)生姓名:胡詩瑞要求設(shè)計(論文)工起止日期:2015年3月23日~2015年7月3日指導(dǎo)教師簽字:日期:2015年3月23日教研室主任審查簽字:日期:系主任批準(zhǔn)簽字:日期:基于Web的易語言論壇系統(tǒng)的設(shè)計與實現(xiàn)摘要論壇,是Internet上的一種電子信息服務(wù)系統(tǒng)。它提供一塊公共電子黑板,每個用戶都可以在上面寫東西,可以提出看法或發(fā)布信息。它是一種交互性比較強,內(nèi)容比較及時而豐富的Internet電子信息類型的服務(wù)系統(tǒng),用戶在BBS站點上,可以獲得各種信息服務(wù)、可以發(fā)布信息、可以進行討論、可以聊天等等。貼吧,是一種基于關(guān)鍵詞而存在的主題交流社區(qū),它與搜索功能緊密結(jié)合,能準(zhǔn)確把握用戶需求,為興趣而生。貼吧的使命就是讓志同道合的人相聚在一起。貼吧的組建依靠的是搜索引擎關(guān)鍵詞,不論是小眾話題還是大眾話題,都能夠精準(zhǔn)地聚集大批的同好網(wǎng)友,它為人們提供一個交流和表達(dá)思想的自由網(wǎng)絡(luò)空間,并以此來匯集志同道合的網(wǎng)友。本系統(tǒng)借鑒貼吧基于關(guān)鍵詞交流的思想,擴大了論壇的現(xiàn)有功能,使之不僅僅局限于定義好的的關(guān)鍵詞。用戶可以創(chuàng)建原本不存在的關(guān)鍵詞主題站,可以針對任何感興趣的主題在相應(yīng)的主題站里發(fā)表帖子,瀏覽帖子,參與討論,擴寬了獲取信息的渠道,真正做到了信息共享。系統(tǒng)采用了JSP、Ajax、Servlet以及SpringMVC與Hibernate兩大框架技術(shù)實現(xiàn),實現(xiàn)了預(yù)期的功能。關(guān)鍵詞:論壇;貼吧;MVC;JSPDesignandImplementationforBBSSystembasedonWebAbstractTheforum,isanelectronicinformationservicesystembasedonInternet.Itprovidesapublicelectronicwhiteboard,eachusercanwriteonandreleaseorviewsinformation.Itisakindofinteractiveinternetelectronicinformationservicesystemwithrichcontentandtimely,usersontheBBSsitecanobtainavarietyofinformationservices,releaseinformation,discussions,chatandsoontoget.ThePostBar,isaninternetcommunitybasedonkeysubject,itisrelatedtothesearchclosely,grasptheneedsofusersaccurately,bornininteresting.PostBar'smissionistomeetlike-mindedpeople.PostBarreliesonsearchenginekeywordsformation,whetheritisapopulartopicoranichetopic,itcangatheralargenumberofnetizensaccurately,itprovidesafreenetworkspaceforpeopletoexpressionandexchangeideas,andthusbringingtogetherlike-mindedfriends.ThissystemreferencesPostBarkeywordbasedontheideaofcommunication,expandtheexistingfunctionsoftheforum,Letitisnotlimitedtodefinedkeywords.Userscancreatekeywordssubjectstationwhichwasnotexistanduserscanbedirectedtoanyinterestingtopicthecorrespondingsubjectstation,publishandbrowseposts,participateinthediscussion,broadeningthechannelsforobtaininginformation,sharinginformationreally.SystemadoptedJSP、Ajax、ServlettechnologiesandSpringMVC、Hibernateframeworks,realizedtheexpectedfunction.Keywords:TheForum;ThePostBar;MVC;JSP目錄TOC\o"1-3"\h\u195261緒論 1287091.1背景意義 1661.2設(shè)計目標(biāo) 2175832開發(fā)環(huán)境和相關(guān)技術(shù) 385222.1開發(fā)環(huán)境 3136332.2相關(guān)技術(shù) 3178482.2.1JavaEEWEB 346552.2.2JSP 4190442.2.3Servlet 4172502.2.4JavaScript 5174762.2.5Ajax 5194522.2.6Hibernate 6276212.2.7Spring 693212.2.8SpringMVC 6148033需求分析 7260213.1需求采集 7253923.1.1功能需求 7225243.1.2性能需求 881963.2功能模塊 8185813.2.1基本功能 9125603.2.2擴展功能 10257344系統(tǒng)設(shè)計 1223404.1數(shù)據(jù)庫表設(shè)計 1233874.1.1ER圖分析 12241434.1.2數(shù)據(jù)庫表設(shè)計 15311024.2功能設(shè)計 20187814.2.1登錄注冊 20203284.2.2查看貼吧列表 2137164.2.3查看帖子列表 2117734.2.4查看帖子詳情 22164264.2.5查看提醒信息 2286965系統(tǒng)實現(xiàn) 23136125.1功能實現(xiàn) 23282025.1.1登錄注冊 23220305.1.2查看貼吧列表 26260365.1.3查看帖子列表 2984445.1.4查看帖子詳情 30122645.1.5查看提醒信息 326465.2系統(tǒng)不足 3519116系統(tǒng)測試 36208546.1登錄測試 36152196.2注冊測試 37282206.3使用測試 37270246.4總結(jié) 3719131結(jié)束語 3917207參考文獻 411405致謝 421緒論1.1背景意義當(dāng)今的社會是一個信息高速發(fā)展的社會,在信息的交流和傳遞當(dāng)中,互聯(lián)網(wǎng)占據(jù)著一個非常重要的位置。隨著Internet技術(shù)的不斷發(fā)展,以及用戶群爆炸性地增長,網(wǎng)絡(luò)不再僅僅是信息的被動獲取來源,更成為人們探討問題、交換觀點的場所,各種網(wǎng)絡(luò)應(yīng)用應(yīng)運而生。隨著網(wǎng)絡(luò)應(yīng)用的興起,人們交流的方式也發(fā)生了翻天覆地的變化。網(wǎng)絡(luò)聊天、網(wǎng)絡(luò)視頻和郵箱系統(tǒng)等網(wǎng)絡(luò)應(yīng)用的出現(xiàn)正在改變著人們彼此之間溝通、交流的方式。此外,為了滿足人們在某一特定主題下的知識獲取和信息發(fā)布的需求,網(wǎng)上論壇順勢誕生了。隨著時間的推移,論壇站點中積存了豐富的信息資源,不但有各類技術(shù)資料和新聞文檔,還包含著用戶的判斷和評論,論壇站點己成為Web信息庫的重要組成部分,自網(wǎng)上論壇誕生20多年以來,隨著Web技術(shù)的發(fā)展,己經(jīng)由原來簡單的電子公告板系統(tǒng)發(fā)展為功能豐富的網(wǎng)上論壇和虛擬社區(qū)模式。隨著網(wǎng)絡(luò)的迅速發(fā)展,信息幾乎充實在生活工作的方方面面,無論是政界、商界,還是娛樂界,都有各種各樣的論壇?;ヂ?lián)網(wǎng)正在融入我們的生活,網(wǎng)絡(luò)提供給我們的不只是一個獲取信息的來源,而且還是一個可以相互交流的空間,網(wǎng)上論壇正是一種供人們進行交流的網(wǎng)絡(luò)空間,影響和改變著我們的生活。論壇是一個讓人足不出戶即可了解外界世界,了解他人所想的工具。給天下的網(wǎng)民都提供了交流的平臺,為網(wǎng)絡(luò)的互動性作出了巨大的貢獻。人們根據(jù)自己的專業(yè)特長和興趣愛好在論壇上提出自己的問題,即提出主題。而后其他人根據(jù)主題內(nèi)容可以發(fā)表自己的意見和看法,即回復(fù)主題。一千個人有一千個哈姆雷特,論壇集大家之所長,所感,為每一個用戶提供了豐富的知識礦藏。通過論壇,網(wǎng)民們能夠更加方便的交流,更加便捷的發(fā)表自己的觀點,同時發(fā)布信息都是通過能夠被記錄的文字來進行的,所以這樣也能避免精華內(nèi)容的流失。通過論壇來征得自己想要的信息,有更高的效率和時效性,也最節(jié)約成本和資源。在論壇的交流過程中,參與討論的人可以處于一個平等的位置,且無論喜怒哀樂都是在虛擬的環(huán)境中進行,避免了正面的尷尬和沖突等。在論壇中,人們可以演變成任何角色,變換多種身份,因為網(wǎng)絡(luò)的特征,使得人民更加依賴于論壇中的交流。1.2設(shè)計目標(biāo)百度貼吧,是全球最大的主題中文社區(qū),其基于搜索引擎和開放關(guān)鍵詞的形態(tài)已變成一種通用的互聯(lián)網(wǎng)產(chǎn)品模式,被中文網(wǎng)站廣為學(xué)習(xí)采納,產(chǎn)生了大量類似“貼吧”的平臺。而本系統(tǒng)也正是借鑒了百度貼吧開放關(guān)鍵詞的特點,在實現(xiàn)了論壇基本功能的基礎(chǔ)上,擴展了論壇系統(tǒng)的現(xiàn)有功能。游客用戶可以查詢貼吧,瀏覽帖子,也可以通過注冊功能獲得系統(tǒng)賬號,從而登錄本系統(tǒng),升級成為登錄用戶,獲得對應(yīng)的權(quán)限。登錄用戶不僅可以查詢貼吧,瀏覽帖子,還可以發(fā)表帖子,回復(fù)帖子,查看通知,參與貼吧活動,創(chuàng)建貼吧,管理貼吧等,是本系統(tǒng)的核心用戶。管理員用戶不僅僅具有貼吧的所有權(quán)限,同時還肩負(fù)著發(fā)展貼吧的重任,是貼吧的核心人物。

2開發(fā)環(huán)境和相關(guān)技術(shù)2.1開發(fā)環(huán)境操作系統(tǒng):MicrosoftWindows7Ultimate(64-bit)JDK:JavaSEDevelopmentKit7u75開發(fā)工具:EclipseLunaServiceRelease2(4.4.2)數(shù)據(jù)庫:OracleDatabase11gRelease2ExpressEdition(11.0.2)服務(wù)器:ApacheTomcat7.0.592.2相關(guān)技術(shù)本項目是一個動態(tài)WEB項目,系統(tǒng)采用SpringMVC框架實現(xiàn)了頁面的切換和數(shù)據(jù)的傳遞,采用Hibernate框架實現(xiàn)了數(shù)據(jù)的持久化操作,前臺頁面采用JSP技術(shù)編寫,其數(shù)據(jù)合法性采用了JavaScript,JQuery和Ajax技術(shù),結(jié)合后臺Sertlet進行驗證?,F(xiàn)在簡單介紹一下這些技術(shù)以及系統(tǒng)詳細(xì)設(shè)計。2.2.1JavaEEWEBJavaEE(JavaPlatform,EnterpriseEdition)是sun公司(2009年4月20日甲骨文將其收購)推出的企業(yè)級應(yīng)用程序版本。這個版本以前稱為J2EE。能夠幫助我們開發(fā)和部署可移植、健壯、可伸縮且安全的服務(wù)器端Java應(yīng)用程序。JavaEE是在JavaSE的基礎(chǔ)上構(gòu)建的,它提供Web服務(wù)、組件模型、管理和通信API,可以用來實現(xiàn)企業(yè)級的面向服務(wù)體系結(jié)構(gòu)(service-orientedarchitecture,SOA)和Web2.0應(yīng)用程序。在當(dāng)今網(wǎng)絡(luò)時代,無論是因特網(wǎng)(Internet)、內(nèi)聯(lián)網(wǎng)、外聯(lián)網(wǎng)都離不開Web技術(shù)的應(yīng)用。隨著網(wǎng)絡(luò)技術(shù)尤其是Web應(yīng)用技術(shù)的發(fā)展,企業(yè)級應(yīng)用對系統(tǒng)各方面的性能要求越來越高,特別是速度、安全、可靠性以及分布式應(yīng)用等方面,在一定程度上決定著系統(tǒng)能否成功。在這些要求的共同作用下,SUN的JavaEE(Java平臺企業(yè)版)規(guī)范利用Java編程語言和企業(yè)API的強大功能,包括EJB技術(shù),提供了一種業(yè)界領(lǐng)先的Web編程技術(shù)平臺。JAVAEEWEB編程技術(shù)已成為計算機領(lǐng)域中最重要的的技術(shù)之一,它是軟件學(xué)科中一個不可或缺的分支,是計算機專業(yè)和信息管理專業(yè)一門專業(yè)基礎(chǔ)課,越來越多的人都開始學(xué)習(xí)JAVAEEWEB編程技術(shù)。2.2.2JSPJSP全名為JavaServerPages,中文名叫java服務(wù)器頁面,其根本是一個簡化的Servlet設(shè)計,它[1]是由SunMicrosystems公司倡導(dǎo)、許多公司參與一起建立的一種動態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn)。JSP技術(shù)有點類似ASP技術(shù),它是在傳統(tǒng)的網(wǎng)頁HTML(標(biāo)準(zhǔn)通用標(biāo)記語言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標(biāo)記(tag),從而形成JSP文件,后綴名為(*.jsp)。用JSP開發(fā)的Web應(yīng)用是跨平臺的,既能在Linux下運行,也能在其他操作系統(tǒng)上運行。它實現(xiàn)了Html語法中的java擴張(以<%,%>形式)。JSP與Servlet一樣,是在服務(wù)器端執(zhí)行的。通常返回給客戶端的就是一個HTML文本,因此客戶端只要有瀏覽器就能瀏覽。JSP技術(shù)使用Java編程語言編寫類XML的tags和scriptlets,來封裝產(chǎn)生動態(tài)網(wǎng)頁的處理邏輯。網(wǎng)頁還能通過tags和scriptlets訪問存在于服務(wù)端的資源的應(yīng)用邏輯。JSP將網(wǎng)頁邏輯與網(wǎng)頁設(shè)計的顯示分離,支持可重用的基于組件的設(shè)計,使基于Web的應(yīng)用程序的開發(fā)變得迅速和容易。JSP(JavaServerPages)是一種動態(tài)頁面技術(shù),它的主要目的是將表示邏輯從Servlet中分離出來。JavaServlet是JSP的技術(shù)基礎(chǔ),而且大型的Web應(yīng)用程序的開發(fā)需要JavaServlet和JSP配合才能完成。JSP具備了Java技術(shù)的簡單易用,完全的面向?qū)ο?,具有平臺無關(guān)性且安全可靠,主要面向因特網(wǎng)的所有特點。2.2.3ServletServlet是在服務(wù)器上運行的小程序。最早支持Servlet技術(shù)的是JavaSoft的JavaWebServer。此后,一些其它的基于Java的WebServer開始支持標(biāo)準(zhǔn)的ServletAPI。Servlet的主要功能在于交互式地瀏覽和修改數(shù)據(jù),生成動態(tài)Web內(nèi)容。這個過程為:1)客戶端發(fā)送請求至服務(wù)器端;2)服務(wù)器將請求信息發(fā)送至Servlet;3)Servlet生成響應(yīng)內(nèi)容并將其傳給服務(wù)器。響應(yīng)內(nèi)容動態(tài)生成,通常取決于客戶端的請求;4)服務(wù)器將響應(yīng)返回給客戶端。Servlet看起來像是通常的Java程序。Servlet導(dǎo)入特定的屬于JavaServletAPI的包。因為是對象字節(jié)碼,可動態(tài)地從網(wǎng)絡(luò)加載,可以說Servlet對Server就如同Applet對Client一樣,但是,由于Servlet運行于Server中,它們并不需要一個圖形用戶界面。從這個角度講,Servlet也被稱為FacelessObject。一個Servlet就是Java編程語言中的一個類,它被用來擴展服務(wù)器的性能,服務(wù)器上駐留著可以通過“請求-響應(yīng)”編程模型來訪問的應(yīng)用程序。雖然Servlet可以對任何類型的請求產(chǎn)生響應(yīng),但通常只用來擴展Web服務(wù)器的應(yīng)用程序。2.2.4JavaScriptJavaScript一種直譯式腳本語言,是一種動態(tài)類型、弱類型、基于原型的語言,內(nèi)置支持類型。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用于客戶端的腳本語言,最早是在HTML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個應(yīng)用)網(wǎng)頁上使用,用來給HTML網(wǎng)頁增加動態(tài)功能。2.2.5AjaxAJAX即“AsynchronousJavascriptAndXML”(異步JavaScript和XML),是指一種創(chuàng)建交互式網(wǎng)頁應(yīng)用的網(wǎng)頁開發(fā)技術(shù)。AJAX=異步JavaScript和XML(標(biāo)準(zhǔn)通用標(biāo)記語言的子集)。AJAX是一種用于創(chuàng)建快速動態(tài)網(wǎng)頁的技術(shù)。通過在后臺與服務(wù)器進行少量數(shù)據(jù)交換,AJAX可以使網(wǎng)頁實現(xiàn)異步更新。這意味著可以在不重新加載整個網(wǎng)頁的情況下,對網(wǎng)頁的某部分進行更新。傳統(tǒng)的網(wǎng)頁(不使用AJAX)如果需要更新內(nèi)容,必須重載整個網(wǎng)頁頁面。2.2.6HibernateHibernate是一個開放源代碼的對象關(guān)系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。Hibernate可以應(yīng)用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應(yīng)用中使用,最具革命意義的是,Hibernate可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。2.2.7SpringSpring是一個開源框架,Spring是于2003年興起的一個輕量級的Java開發(fā)框架,由RodJohnson在其著作ExpertOne-On-OneJ2EEDevelopmentandDesign中闡述的部分理念和原型衍生而來。它是為了解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的??蚣艿闹饕獌?yōu)勢之一就是其分層架構(gòu),分層架構(gòu)允許使用者選擇使用哪一個組件,同時為J2EE應(yīng)用程序開發(fā)提供集成的框架。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務(wù)器端的開發(fā)。從簡單性、可測試性和松耦合的角度而言,任何Java應(yīng)用都可以從Spring中受益。Spring的核心是控制反轉(zhuǎn)(IoC)和面向切面(AOP)。簡單來說,Spring是一個分層的JavaSE/EEfull-stack(一站式)輕量級開源框架。2.2.8SpringMVCSpringMVC屬于SpringFrameWork的后續(xù)產(chǎn)品,已經(jīng)融合在SpringWebFlow里面。Spring框架提供了構(gòu)建Web應(yīng)用程序的全功能MVC模塊。使用Spring可插入的MVC架構(gòu),可以選擇是使用內(nèi)置的SpringWeb框架還可以是Struts這樣的Web框架。

3需求分析需求分析是在軟件開發(fā)的初始階段進行,它對于整個軟件開發(fā)過程以及軟件開發(fā)后質(zhì)量是舉足輕重的。隨著軟件系統(tǒng)復(fù)雜性的提高及規(guī)模的擴大,需求分析在軟件開發(fā)中所處的地位愈加突出。所謂需求,是指用戶對目標(biāo)軟件系統(tǒng)在功能、行為、性能設(shè)計約束等方面的要求。在需求分析的研究中,系統(tǒng)開發(fā)人員必須對用戶的需求進行調(diào)查和分析,結(jié)合實際環(huán)境的特征,正確定義目標(biāo)軟件的特征。所謂需求分析,是指對要解決的問題進行詳細(xì)的分析,弄清楚問題的要求,包括需要輸入什么數(shù)據(jù),要得到什么結(jié)果,最后應(yīng)輸出什么??梢哉f,在軟件工程當(dāng)中的“需求分析”就是確定要計算機“做什么”,要達(dá)到什么樣的效果??梢哉f需求分析是做系統(tǒng)之前必做的。3.1需求采集在軟件工程中,需求分析指的是在建立一個新的或改變一個現(xiàn)存的電腦系統(tǒng)時描寫新系統(tǒng)的目的、范圍、定義和功能時所要做的所有的工作。需求分析是軟件工程中的一個關(guān)鍵過程。在這個過程中,系統(tǒng)分析員和軟件工程師確定顧客的需要。只有在確定了這些需要后,他們才能夠分析和尋求新系統(tǒng)的解決方法。需求分析階段的任務(wù)是確定軟件系統(tǒng)功能。3.1.1功能需求就本系統(tǒng)來說,本系統(tǒng)屬于BBS系統(tǒng),而且結(jié)合了百度貼吧開放關(guān)鍵詞的設(shè)計模式,應(yīng)該具備如下功能,現(xiàn)在按照游客與會員(登錄用戶)來介紹。游客:是指一些訪問本系統(tǒng)的時候沒有進行過登錄操作的用戶。游客只有查詢的權(quán)限,可以訪問本系統(tǒng)包含的所有貼吧,可以瀏覽某個貼吧的所有的帖子,但是游客沒有執(zhí)行任何操作的權(quán)限,游客不能創(chuàng)建新的貼吧,不能發(fā)表新的帖子,不能回復(fù)已有的帖子。游客可以通過系統(tǒng)提供的注冊頁面來獲得系統(tǒng)承認(rèn)的賬號,通過賬號登錄本系統(tǒng),以獲得與會員一致的權(quán)限。會員:會員是本系統(tǒng)的核心用戶,他們參與在貼吧建設(shè)的方方面面。會員在擁有游客的所有權(quán)限的同時,還擁有更多與系統(tǒng)進行交互的權(quán)限。會員可以更新自己賬號的信息,可以創(chuàng)建暫不存在的貼吧,可以在任何貼吧發(fā)表新的帖子,可以回復(fù)任何已存在的帖子。會員們可以通過帖子進行交流,當(dāng)有會員與你發(fā)生信息交互時,系統(tǒng)會給出相對應(yīng)的通知,而會員也可以通過查看通知來獲得信息詳情。管理員用戶,即吧主,也是會員,是某一個貼吧的管理者,肩負(fù)著壯大該貼吧的責(zé)任。會員可以通過創(chuàng)建一個貼吧來成為該貼吧的吧主,擁有該貼吧的最高權(quán)限??梢孕薷脑撡N吧的信息,可以管理本吧的帖子。吧主僅僅在屬于其自己的貼吧才是吧主,到了別的貼吧,其權(quán)限就會變成普通會員。此外,吧主還擁有著游客和會員的所有權(quán)限。3.1.2性能需求本系統(tǒng)是BBS論壇系統(tǒng),為了給用戶較好的體驗,需要本系統(tǒng)響應(yīng)快速,所以在此對硬件及軟件做了需求分析。硬件環(huán)境:處理器:Inter酷睿i5或更高內(nèi)存大小:4GB或更高硬盤空間:10GB或更高軟件環(huán)境:操作系統(tǒng):Win7或更高服務(wù)器:Tomcat6.0或更高數(shù)據(jù)庫:OracleDatabase10G或更高3.2功能模塊畫功能模塊圖是軟件開發(fā)過程中的一個非常重要的環(huán)節(jié),它將能夠顯示出軟件項目工程所要實現(xiàn)的各種功能,并且能夠分類,然后軟件工程師便能夠根據(jù)畫出來的功能模塊圖來編寫代碼實現(xiàn)具體的每一個功能。功能模塊圖就是將系統(tǒng)的功能進行分解,按功能從屬關(guān)系表示的圖表,具體如圖3-1所示:圖3-1貼吧系統(tǒng)用戶類型及對應(yīng)功能概覽圖3.2.1基本功能通過需求分析,論壇的基本功能可以從眾多的需求中篩選出來。顧名思義,基本功能就是構(gòu)成論壇系統(tǒng)的必要功能,具備這些功能的Web系統(tǒng)即是論壇。瀏覽帖子。用戶發(fā)表了新的帖子,其他用戶可以查看與回復(fù),可以相互分享自己的經(jīng)驗和想法。發(fā)表帖子。論壇就是為了相互討論話題而產(chǎn)生的,用戶發(fā)表帖子就是為了表達(dá)自己的看法與想法,能夠與他人進行討論,因此發(fā)帖功能是論壇系統(tǒng)最重要的功能?;貜?fù)帖子。用戶可以瀏覽了他人發(fā)表的帖子,如果想要發(fā)表自己的看法,參與討論,那么用戶就就可以回復(fù)這個帖子??傮w來說,瀏覽帖子-發(fā)表帖子-回復(fù)帖子這三大最主要的功能周而復(fù)始的循環(huán)進行,這就構(gòu)成了論壇。參與論壇活動的用戶,主要目的就是發(fā)表帖子,查看帖子,回復(fù)帖子,參與討論。這三大基本功能之間的相互關(guān)系如圖3-2所示:帖子列表發(fā)表帖子帖子列表發(fā)表帖子回復(fù)帖子瀏覽帖子回復(fù)帖子瀏覽帖子圖3-2貼吧系統(tǒng)基本功能相互關(guān)系圖3.2.2擴展功能除了基本功能之外,其他的論壇功能都是擴展功能。注冊登錄。用戶登錄系統(tǒng)之后,用戶信息被系統(tǒng)讀取到,用戶執(zhí)行操作的時候,系統(tǒng)直接獲取這個信息,所以會員的權(quán)限比游客高。分板塊瀏覽帖子。其實不同的貼吧就是不同的板塊,在某一個主題為某關(guān)鍵詞的貼吧里只討論與該關(guān)鍵詞相關(guān)的話題。這樣,對某一關(guān)鍵詞感興趣的用戶就不會被其他帖子信息干擾,同時也有利于有著相同興趣的用戶相互間的討論,不容易跑題。查看用戶信息。每一個用戶可以查看所有用戶的信息。刪除帖子。如果用戶發(fā)表了的帖子不符合論壇規(guī)則,則管理員需要刪除這些帖子。置頂帖子。帖子是根據(jù)發(fā)表時間的倒序排列的,這樣先發(fā)的帖子就會慢慢地排到列表靠后的位置,如果管理員需要強調(diào)某個或某些帖子的重要性,就需要為其設(shè)置特殊的等級,將這些帖子排列在列表的最前端,不再按照發(fā)帖時間順序進行排列,但還是要保證其他普通帖子按照創(chuàng)建時間的順序進行排列。精華帖子。如果某個帖子的內(nèi)容比較優(yōu)秀,管理員可以為其可以打上精華標(biāo)記,推薦給瀏覽帖子的用戶,用戶可以選擇只看精華帖。搜索帖子。隨著時間的推移,論壇中的帖子數(shù)量越來越多,用戶可能需要從大量的帖子中找到自己所需要的內(nèi)帖子,這就引出了搜索帖子的功能。設(shè)置參數(shù)。論壇一般都有一些初始化信息,比如論壇的名稱,每頁可以顯示的帖子數(shù)量等參數(shù)信息,用戶可以在頁面的底部設(shè)置這些信息。查看通知信息。比如說管理員刪帖,刪帖后系統(tǒng)會提醒發(fā)帖用戶。查看回復(fù)信息。在用戶發(fā)帖或回帖之后,被其它用戶回帖,系統(tǒng)也會給出相應(yīng)的提醒信息。查看提到情況。有時候別人發(fā)帖回特別提醒你一下(@用戶),系統(tǒng)也會做出相應(yīng)的提醒。

4系統(tǒng)設(shè)計4.1數(shù)據(jù)庫表設(shè)計數(shù)據(jù)庫系統(tǒng)是在文件系統(tǒng)的基礎(chǔ)上發(fā)展而來的,經(jīng)歷了層次數(shù)據(jù)庫、網(wǎng)狀數(shù)據(jù)庫、關(guān)系數(shù)據(jù)庫三個階段。由于關(guān)系數(shù)據(jù)庫采用人們比較容易理解和接受的二維表格來組織數(shù)據(jù),發(fā)展迅速,已成為數(shù)據(jù)庫產(chǎn)品的主流。本次系統(tǒng)設(shè)計所使用的數(shù)據(jù)庫就是關(guān)系數(shù)據(jù)庫Oracle。Oracle數(shù)據(jù)庫管理系統(tǒng)是一項全面完整的數(shù)據(jù)庫與分析產(chǎn)品。Oracle容易學(xué)習(xí)、使用,介紹、學(xué)習(xí)資料比較多,Oracle全面支持Web功能的數(shù)據(jù)庫解決方案。與此同時,Oracle11g提供了高性能、伸展性、可用性和安全性,并能更方便地在低成本服務(wù)器和存儲設(shè)備組成的網(wǎng)絡(luò)上運行,相對過往版本而言,Oracle11g具有了于總不同的特性,這也是企業(yè)數(shù)據(jù)庫系統(tǒng)在激烈市場競爭中克敵制勝的關(guān)鍵所在。正是由于Oracle和其它的大型數(shù)據(jù)庫相比較,Oracle具有可靠的安全性、較快的存儲速度、高度的兼容性和可擴展性、數(shù)據(jù)的大量性、數(shù)據(jù)保存的持久性、數(shù)據(jù)的共享性、簡單易用等等一系列的特性。因此,我采用了Oracle11g作為后臺的數(shù)據(jù)庫。本系統(tǒng)的數(shù)據(jù)庫暫時包含了7張表,分別為TABLE_MEMBER,TABLE_LEVEL,TABLE_TIEBA,TABLE_TIEZI,TABLE_FLOOR,TABLE_MESSAGE,TABLE_REMIND。他們之間存在一些依賴或包含的關(guān)系,系統(tǒng)可以有很多貼吧,每個貼吧下可以有很多帖子,每個帖子下可以有很多層樓,每層樓又可以包含很多個信息。下面將對這幾張表作相應(yīng)的介紹。4.1.1ER圖分析E-R模型是對現(xiàn)實世界的一種抽象。它的主要組成部分是實體、聯(lián)系和屬性。使用這三部分,我們可以建立許多不同應(yīng)用環(huán)境的ER模型。在本系統(tǒng)中,對象的實體和屬性的定義如下:圖4-1會員信息實體圖圖4-2貼吧信息實體圖圖4-3帖子信息實體圖圖4-4樓層信息實體圖圖4-5信息信息實體圖圖4-6提心信息實體圖4.1.2數(shù)據(jù)庫表設(shè)計TABLE_MEMBER會員表TABLE_MEMBER表是系統(tǒng)用來記錄注冊用戶信息的表,表中定義了用戶對象所具有的各種屬性,以及相對應(yīng)的具體數(shù)據(jù)。在該表中,字段id_member是主鍵,是由用戶注冊的時間得來的長度為17的數(shù)字。具體信息如“表4-1TABLE_MEMBER”所示:表4-1TABLE_MEMBER會員表字段名類型說明id_memberNUMBER(17)主鍵,會員id,根據(jù)注冊時間得到的17位數(shù)字usernameVARCHAR2(20)用戶名passwordVARCHAR2(32)密碼,MD5加密后為32位字符串phoneVARCHAR2(11)電話emailVARCHAR2(30)郵箱genderVARCHAR2(3)性別,只能為‘男’或‘女’birthdayVARCHAR2(10)生日,格式為‘yyyy-MM-dd’addressVARCHAR2(150)地址qqnumberVARCHAR2(11)QQ賬號signatureVARCHAR2(150)個性簽名experienceNUMBER(10)經(jīng)驗值roleNUMBER(1)角色,1.普通會員0.吧主,會員在每個吧的角色都不同,進入貼吧會自動更新statusNUMBER(1)狀態(tài),1.正常2.加黑3.封禁(有專門的加黑表,封禁表),會員在每個吧的這些狀態(tài)不同,進入貼吧會自動更新關(guān)鍵建表語句CONSTRAINTpk_member_1PRIMARYKEY(id_member)TABLE_TIEBA貼吧表TABLE_TIEBA表是系統(tǒng)用來記錄創(chuàng)建貼吧信息的表,表中定義了貼吧對象所具有的各種屬性,以及相對應(yīng)的具體數(shù)據(jù)。在該表中,字段id_tieba是主鍵,是由創(chuàng)建貼吧的時間得來的長度為17的數(shù)字,字段id_member就是創(chuàng)建該吧的用戶,也就是該吧的吧主,外鍵引用了TABLE_MEMBER表的id_member。具體信息如“表4-2TABLE_TIEBA”所示:表4-2TABLE_TIEBA貼吧表字段名類型說明id_tiebaNUMBER(17)主鍵,貼吧id,根據(jù)創(chuàng)建時間得到的17位數(shù)字id_memberNUMBER(17)外鍵,吧主id,根據(jù)注冊時間得到的17位數(shù)字nameVARCHAR2(30)貼吧名稱signatureVARCHAR2(150)貼吧簽名statusNUMBER(1)狀態(tài),1可視0不可視關(guān)鍵建表語句CONSTRAINTpk_tieba_1PRIMARYKEY(id_tieba),CONSTRAINTfk_tieba_2FOREIGNKEY(id_member)REFERENCEStable_member(id_member)TABLE_TIEZI帖子表TABLE_TIEZI表是系統(tǒng)用來記錄創(chuàng)建帖子信息的表,表中定義了帖子對象所具有的各種屬性,以及相對應(yīng)的具體數(shù)據(jù)。在該表中,字段id_tieba和id_tiezi構(gòu)成了聯(lián)合主鍵,分別由創(chuàng)建貼吧的時間和發(fā)表帖子的時間得來的長度為17的數(shù)字,字段id_member就是發(fā)表該貼的用戶,也就是該貼的樓主,外鍵引用了TABLE_MEMBER表的id_member。具體信息如“表4-3TABLE_TIEZI”所示:表4-3TABLE_TIEZI帖子表字段名類型說明id_tiebaNUMBER(17)主鍵,外鍵,貼吧id,根據(jù)創(chuàng)建時間得到的17位數(shù)字id_tieziNUMBER(17)主鍵,帖子id,根據(jù)發(fā)帖時間得到的17位數(shù)字id_memberNUMBER(17)外鍵,會員id,根據(jù)注冊時間得到的17位數(shù)字name_memberVARCHAR2(20)會員用戶名,發(fā)帖用戶statusNUMBER(1)狀態(tài),1可視0不可視titleVARCHAR2(150)帖子標(biāo)題關(guān)鍵建表語句 CONSTRAINTpk_tiezi_12PRIMARYKEY(id_tieba,id_tiezi), CONSTRAINTfk_tiezi_1FOREIGNKEY(id_tieba)REFERENCEStable_tieba(id_tieba), CONSTRAINTfk_tiezi_3FOREIGNKEY(id_member)REFERENCEStable_member(id_member)TABLE_FLOOR樓層表TABLE_FLOOR表是系統(tǒng)用來記錄創(chuàng)建樓層信息的表,表中定義了樓層對象所具有的各種屬性,以及相對應(yīng)的具體數(shù)據(jù)。在該表中,字段id_tieba、id_tiezi和id_floor構(gòu)成了聯(lián)合主鍵,分別由創(chuàng)建貼吧的時間、發(fā)表帖子的時間和發(fā)表樓層的時間得來的長度為17的數(shù)字,字段id_member就是發(fā)表該層的用戶,也就是該層的層主,外鍵引用了TABLE_MEMBER表的id_member。具體信息如“表4-4TABLE_FLOOR”所示:表4-4TABLE_FLOOR樓層表字段名類型說明id_tiebaNUMBER(17)主鍵,外鍵,貼吧id,根據(jù)創(chuàng)建時間得到的17位數(shù)字id_tieziNUMBER(17)主鍵,外鍵,帖子id,根據(jù)發(fā)帖時間得到的17位數(shù)字id_floorNUMBER(17)主鍵,樓層id,根據(jù)發(fā)帖時間得到的17位數(shù)字id_memberNUMBER(17)外鍵,會員id,根據(jù)注冊時間得到的17位數(shù)字name_memberVARCHAR2(20)會員用戶名,發(fā)樓用戶statusNUMBER(1)狀態(tài),1可視0不可視關(guān)鍵建表語句 CONSTRAINTpk_floor_123PRIMARYKEY(id_tieba,id_tiezi,id_floor), CONSTRAINTfk_floor_12FOREIGNKEY(id_tieba,id_tiezi)REFERENCEStable_tiezi(id_tieba,id_tiezi), CONSTRAINTfk_floor_4FOREIGNKEY(id_member)REFERENCEStable_member(id_member)TABLE_MESSAGE消息表TABLE_MESSAGE表是系統(tǒng)用來記錄創(chuàng)建信息的表,表中定義了信息對象所具有的各種屬性,以及相對應(yīng)的具體數(shù)據(jù)。在該表中,字段id_tieba、id_tiezi、id_floor和id_message構(gòu)成了聯(lián)合主鍵,分別由創(chuàng)建貼吧的時間、發(fā)表帖子的時間、發(fā)表樓層的時間和發(fā)表消息的時間得來的長度為17的數(shù)字,字段id_from就是發(fā)表該信息的用戶,字段id_to就是信息目標(biāo)(該信息的接受者),外鍵引用了TABLE_MEMBER表的id_member。具體信息如“表4-5TABLE_MESSAGE”所示:表4-5TABLE_MESSAGE信息表字段名類型說明id_tiebaNUMBER(17)主鍵,外鍵,貼吧id,根據(jù)創(chuàng)建時間得到的17位數(shù)字id_tieziNUMBER(17)主鍵,外鍵,帖子id,根據(jù)發(fā)帖時間得到的17位數(shù)字id_floorNUMBER(17)主鍵,外鍵,樓層id,根據(jù)發(fā)帖時間得到的17位數(shù)字id_messageNUMBER(17)主鍵,樓層id,根據(jù)發(fā)帖時間得到的17位數(shù)字id_fromNUMBER(17)外鍵,會員id,根據(jù)注冊時間得到的17位數(shù)字name_fromVARCHAR2(20)會員用戶名,信息發(fā)送人id_toNUMBER(17)外鍵,會員id,根據(jù)注冊時間得到的17位數(shù)字name_toVARCHAR2(20)會員用戶名,信息接收人statusNUMBER(1)狀態(tài),1可視0不可視contentVARCHAR2(3000)信息內(nèi)容關(guān)鍵建表語句 CONSTRAINTpk_message_1234PRIMARYKEY(id_tieba,id_tiezi,id_floor,id_message), CONSTRAINTfk_message_123FOREIGNKEY(id_tieba,id_tiezi,id_floor)REFERENCEStable_floor(id_tieba,id_tiezi,id_floor), CONSTRAINTfk_message_5FOREIGNKEY(id_from)REFERENCEStable_member(id_member), CONSTRAINTfk_message_7FOREIGNKEY(id_to)REFERENCEStable_member(id_member)TABLE_REMIND提醒表TABLE_REMIND表是系統(tǒng)用來記錄創(chuàng)建提醒信息的表,表中定義了提醒對象所具有的各種屬性,以及相對應(yīng)的具體數(shù)據(jù)。在該表中,字段id_remind是主鍵,是創(chuàng)建提醒的時間得來的長度為17的數(shù)字,字段kind就是提醒的類型,可以為系統(tǒng)通知、用戶回復(fù)和用戶提到。具體信息如“表4-5TABLE_MESSAGE”所示:表4-6TABLE_REMIND提醒表字段名類型說明kindNUMBER(1)提醒類型,1.通知2.回復(fù)3.提到id_remindNUMBER(17)主鍵,提醒id,根據(jù)創(chuàng)建時間得到的17位數(shù)字id_tiebaNUMBER(17)貼吧id,根據(jù)創(chuàng)建時間得到的17位數(shù)字nameVARCHAR2(30)貼吧名稱id_tieziNUMBER(17)帖子id,根據(jù)發(fā)帖時間得到的17位數(shù)字tieleVARCHAR2(150)帖子標(biāo)題id_floorNUMBER(17)樓層id,根據(jù)發(fā)帖時間得到的17位數(shù)字id_messageNUMBER(17)信息id,根據(jù)創(chuàng)建時間得到的17位數(shù)字id_fromNUMBER(17)外鍵,會員id,根據(jù)注冊時間得到的17位數(shù)字name_formVARCHAR2(20)會員用戶名,提醒發(fā)送人id_toNUMBER(17)外鍵,會員id,根據(jù)注冊時間得到的17位數(shù)字name_toVARCHAR2(20)會員用戶名,提醒接收人statusNUMBER(1)狀態(tài),1.未讀0.已讀contentVARCHAR2(3000)提醒內(nèi)容關(guān)鍵建表語句 CONSTRAINTpk_remind_12PRIMARYKEY(kind,id_remind)4.2功能設(shè)計4.2.1登錄注冊登錄與注冊功能幾乎是WEB項目里不可或缺的存在,當(dāng)然本論壇系統(tǒng)也不例外。在本系統(tǒng)里,登錄注冊模塊完全獨立了出來,單獨設(shè)置成了一個JSP頁面,在其他所有頁面里面調(diào)用該頁面即可。系統(tǒng)會根據(jù)不同情況在session里面設(shè)置不同的參數(shù)以及相對應(yīng)的數(shù)據(jù),而本JSP頁面則會根據(jù)參數(shù)是否為空來選擇不同的顯示方式。而且本JSP頁面采用浮動技術(shù),會一直固定在頁面的最頂部,不會隨著頁面的滾動而移動。本JSP頁面會顯示貼吧名稱以及貼吧簽名信息,同時還兼具用戶登錄與注冊功能。其通過JQuery與Ajax來做登錄驗證。登錄成功后,會重新加載頁面,這樣很多游客不具備的權(quán)限都會隨著用戶的登錄而變得可視或可操作。用戶點擊了注冊按鈕,系統(tǒng)會跳轉(zhuǎn)到注冊頁面,用戶只需要填寫最關(guān)鍵的賬號,密碼,手機,郵箱,通過合法性驗證,即可完成注冊,其他信息可以在注冊之后完善,賬號一經(jīng)注冊不能修改。同時還會顯示未讀提醒的數(shù)量,點擊之后會跳轉(zhuǎn)到查看提醒頁面,這個在下面的查看提醒信息里會介紹到。4.2.2查看貼吧列表系統(tǒng)會將已存在的貼吧顯示在貼吧首頁,用戶可以通過點擊每一個貼吧的“進入貼吧”按鈕來跳轉(zhuǎn)到對應(yīng)貼吧的貼吧主頁,也可以通過點擊“查看貼吧信息”或“查看吧主信息”來查看用戶感興趣的信息。所有的貼吧按照創(chuàng)建時間從早到晚的順序排列,創(chuàng)建的越早則顯示的位置越靠前。用戶也可以通過在貼吧搜索框里面輸入貼吧名稱的關(guān)鍵字(關(guān)鍵字可以有多個,中間使用空格來區(qū)分),來查找相應(yīng)的貼吧,系統(tǒng)會把滿足搜索條件的貼吧全都列出來,顯示在貼吧列表之前,便于用戶查看。若是用戶沒有找到自己想要找的貼吧,也可以通過點擊“創(chuàng)建貼吧”按鈕來創(chuàng)建一個新的貼吧。如果貼吧創(chuàng)建成功,那么該用戶就會成為這個貼吧的吧主,擁有本吧里的最高權(quán)限,但是在其他非吧主的貼吧里,該用戶仍然只是普通會員,受該吧吧主的管制。4.2.3查看帖子列表用戶通過點擊“進入貼吧”按鈕,跳轉(zhuǎn)到某一個貼吧的首頁,該吧的所有的可視的帖子,都會被系統(tǒng)檢索到,然后顯示到這里。帖子的顯示分兩種,一種是置頂帖,一種是普通帖。置頂帖會優(yōu)先顯示到列表最頂端。兩種類型的帖子都會按照時間順序,較新的帖子會顯示在靠前的位置。游客與會員的功能第一次顯現(xiàn)差別,在這里登錄用戶可以直接發(fā)表新的帖子,可以刪除自己發(fā)的帖子,但是游客則沒有這樣的權(quán)限,必須得通過登錄系統(tǒng)才可以。4.2.4查看帖子詳情用戶通過點擊帖子列表頁面的任何一個帖子標(biāo)題,即可進入查看該帖子的詳情。同樣,所有可視的信息都會被系統(tǒng)讀取到,然后顯示出來。在這里游客與登錄用戶的區(qū)別再一次體現(xiàn)了出來,游客只能瀏覽而不能回復(fù),登錄用戶可以發(fā)表一個新的樓層,也可以在某個已有樓層下回復(fù)某一個用戶,也可以只回復(fù)層主,回復(fù)的樓層會顯示在當(dāng)前帖子的最末樓,回復(fù)的信息會顯示在某一樓的最末信息位置。在這里,系統(tǒng)會根據(jù)登錄用戶與帖子的關(guān)系以及登錄用戶的權(quán)限來顯示不同的操作權(quán)限。首先是大前提,用戶不能回復(fù)自己,如果信息是樓層的第一條信息,那么不能刪除該信息,而只能刪除該樓層。其次是小限制,吧主擁有大前提下的最高權(quán)限,用戶(樓主)在自己發(fā)的貼子里擁有與吧主一致的權(quán)限,用戶(層主)在自己發(fā)的樓層里擁有與吧主一致的權(quán)限。用戶(發(fā)信息者)只對自己發(fā)的信息擁有與吧主一致的權(quán)限。4.2.5查看提醒信息提醒信息總共分為三種類型,通知提醒,回復(fù)提醒,提到提醒。通知提醒包括有管理員刪帖,管理員置頂帖,管理員精華帖等?;貜?fù)提醒就是有別人對你的發(fā)言進行了回復(fù)后系統(tǒng)發(fā)給你的提醒,提到提醒就是別人發(fā)帖或回帖是特地@到你后體統(tǒng)發(fā)給你的提醒。在本系統(tǒng)中,提醒模塊所包含的內(nèi)容有:系統(tǒng)通知,回復(fù)我的,提到我的,我回復(fù)的,我提到的共5部分。

5系統(tǒng)實現(xiàn)5.1功能實現(xiàn)1.本系統(tǒng)的前臺JSP頁面使用如下代碼重新設(shè)定了相對路徑。<%Stringpath=request.getContextPath(); StringbasePath=request.getScheme()+"://"+ request.getServerName()+":"+request.getServerPort()+path+"/";%><basehref="<%=basePath%>">這樣把相對位置設(shè)置成了basePath,完美解決了相對位置發(fā)生改變導(dǎo)致頁面找不到的問題。2.本系統(tǒng)的服務(wù)器使用了80端口,并配置了如下信息重新設(shè)置了訪問地址。<ContextdocBase="Graduation"path=""reloadable="true" source="org.eclipse.jst.jee.server:Graduation"/>這樣只需要一個域名或IP地址就可以訪問到本項目了,不需要加端口號和項目名,設(shè)計比較人性化,測試也較為方便。5.1.1登錄注冊登錄:圖5-1未登錄狀態(tài)下位置為首頁的頭文件圖5-2未登錄狀態(tài)下進入貼吧后的頭文件圖5-3已登錄狀態(tài)下進入貼吧后的頭文件圖5-4已登錄狀態(tài)下進入貼吧后的頭文件Login_Servlet.java Membermember=service.login(usernameOrPhoneOrEmail,password); if(member!=null){ out.print("√"); HttpSessionsession=request.getSession(); session.setAttribute("member_",member); Levellevel=service.findLevelByPoint(member.getExperience()); session.setAttribute("level_",level); }else{ out.print("×"); }注冊:圖5-5注冊部分效果展示圖5-6查看用戶信息圖5-7修改用戶信息Controller_Member.java @RequestMapping(value="/insert",method=RequestMethod.GET) publicStringinsert(Modelmodel){ model.addAttribute("member",newMember()); return"/member/insert.jsp"; } @RequestMapping(value="/insert",method=RequestMethod.POST) publicStringinsert(Membermember)throwsException{ service.register(member); return"redirect:/member/select/"+member.getId_member().toString(); }MemberServiceImplement.java if(dao.findMemberByUsername(member.getUsername())!=null){ thrownewException("該用戶名已經(jīng)被注冊"); } if(dao.findMemberByPhone(member.getPhone())!=null){ thrownewException("該手機號碼已經(jīng)被注冊"); } if(dao.findMemberByEmail(member.getEmail().toUpperCase())!=null){ thrownewException("該郵箱已經(jīng)被注冊"); } Longid=DateTime.getDateTimeFormatLongWithSSS(); while(dao.findMemberByMemberId(id)!=null){ id=DateTime.getDateTimeFormatLongWithSSS(); } member.setId_member(id); member.setPassword(MD5.getMD5(member.getPassword())); member.setEmail(member.getEmail().toUpperCase()); dao.saveMember(member);5.1.2查看貼吧列表圖5-8系統(tǒng)首頁圖5-9系統(tǒng)首頁-搜索圖5-10創(chuàng)建貼吧圖5-11查看貼吧信息圖5-12修改貼吧信息 Controller_Tieba.java @RequestMapping(value={"","/"},method=RequestMethod.GET) publicStringlist(Modelmodel,HttpSessionsession)throwsException{ Tiebatieba=newTieba("十度貼吧","全球最大的中文社區(qū)",null); session.setAttribute("tieba_",tieba); List<Tieba>tiebas=service_tieba.findAllTiebas(); model.addAttribute("tiebas",tiebas); return"tieba/list.jsp"; } @RequestMapping(value="/search",method=RequestMethod.POST) publicStringsearch(Stringsearch,Modelmodel,HttpSessionsession) throwsException{ if(search.length()!=0){ String[]keywords=search.split(""); List<Tieba>result=service_tieba.findTiebasByKeywords(keywords); session.setAttribute("result",result); } return"redirect:/tieba"; }5.1.3查看帖子列表圖5-13進入新建的貼吧圖5-14發(fā)表了一個新的帖子圖5-15多個用戶發(fā)表了多個帖子Controller_Tieba.java @RequestMapping(value="/home/{id_tieba}",method=RequestMethod.GET) publicStringhome(@PathVariableStringid_tieba,Modelmodel,HttpSessionsession) throwsException{ Tiebatieba=service_tieba.findTiebaByTiebaId(Long.parseLong(id_tieba)); session.setAttribute("tieba_",tieba); List<Tiezi>tiezis_top=service_tiezi.findAllTopTiezisByTiebaId( Long.parseLong(id_tieba)); List<Tiezi>tiezis_all=service_tiezi.findAllVisibleTiezisByTiebaId( Long.parseLong(id_tieba)); model.addAttribute("tiezis_top",tiezis_top); model.addAttribute("tiezis_all",tiezis_all); return"/tieba/home.jsp"; }5.1.4查看帖子詳情圖5-16用戶發(fā)表了信息Controller_Tieba.java @RequestMapping(value="/selecttiezi/{id_tieba}/{id_tiezi}",method=RequestMethod.GET) publicStringselectTiezi(@PathVariableStringid_tieba,@PathVariableStringid_tiezi, Modelmodel,HttpSessionsession)throwsException{ Tiebatieba=service_tieba.findTiebaByTiebaId(Long.parseLong(id_tieba)); model.addAttribute("tieba_",tieba); Datadata=service_tiezi.loadTieziByTiebaIdAndTieziId( Long.parseLong(id_tieba),Long.parseLong(id_tiezi)); model.addAttribute("data",data); return"/tieba/selecttiezi.jsp"; } @RequestMapping(value="/insertfloor/{id_tieba}/{id_tiezi}", method=RequestMethod.POST) publicStringinsertFloor(@PathVariableStringid_tieba,@PathVariableStringid_tiezi, Stringcontent,Modelmodel,HttpSessionsession)throwsException{ Membermember=(Member)session.getAttribute("member_"); member.setExperience(member.getExperience()+1L); member.setPassword(null); service_member.update(member); service_tiezi.sendFloor(Long.parseLong(id_tieba),Long.parseLong( id_tiezi),member.getId_member(),member.getUsername(),content); return"redirect:/tieba/selecttiezi/"+id_tieba+"/"+id_tiezi; } @RequestMapping(value="/insertmessage1/{id_tieba}/{id_tiezi}/{id_floor}/{id_to}/ {name_to}",method=RequestMethod.POST) publicStringinsertMessage(@PathVariableStringid_tieba,@PathVariableStringid_tiezi, @PathVariableStringid_floor,@PathVariableStringid_to, @PathVariableStringname_to,Stringcontent,Modelmodel, HttpSessionsession)throwsException{ Membermember=(Member)session.getAttribute("member_"); member.setExperience(member.getExperience()+1L); member.setPassword(null); service_member.update(member); session.setAttribute("member_",member); service_tiezi.sendMessage(Long.parseLong(id_tieba),Long.parseLong(id_tiezi), Long.parseLong(id_floor),member.getId_member(),member.getUsername(), Long.parseLong(id_to),name_to,content); return"redirect:/tieba/selecttiezi/"+id_tieba+"/"+id_tiezi; }5.1.5查看提醒信息圖5-17查看系統(tǒng)提醒圖5-18查看系統(tǒng)提醒Controller_Tieba.java @RequestMapping(value="/remind/inform",method=RequestMethod.GET) publicStringinform(Modelmodel,HttpSessionsession)throwsException{ Tiebatieab=(Tieba)session.getAttribute("tieba_"); model.addAttribute("tieba",tieab); Membermember=(Member)session.getAttribute("member_"); List<Remind>informs=service_remind.findInformRemindsByToId( member.getId_member()); model.addAttribute("informs",informs); model.addAttribute("flag","informs"); return"/tieba/remind.jsp"; } @RequestMapping(value="/remind/reply",method=RequestMethod.GET) publicStringreply(Modelmodel,HttpSessionsession)throwsException{ Tiebatieab=(Tieba)session.getAttribute("tieba_"); model.addAttribute("tieba",tieab); Membermember=(Member)session.getAttribute("member_"); List<Remind>replys=service_remind.findReplyRemindsByToId( member.getId_member()); model.addAttribute("replys",replys); model.addAttribute("flag","replys"); return"/tieba/remind.jsp"; } @RequestMapping(value="/remind/mention",method=RequestMethod.GET) publicStringmention(Modelmodel,HttpSessionsession)throwsException{ Tiebatieab=(Tieba)session.getAttribute("tieba_"); model.addAttribute("tieba",tieab); Membermember=(Member)session.getAttribute("member_"); List<Remind>mentions=service_remind.findMentionRemindsByToId( member.getId_member()); model.addAttribute("mentions",mentions); model.addAttribute("flag","mentions"); return"/tieba/remind.jsp"; } @RequestMapping(value="/remind/replyfromme",method=RequestMethod.GET) publicStringreplyfromme(Modelmodel,HttpSessionsession)throwsException{ Tiebatieab=(Tieba)session.getAttribute("tieba_"); model.addAttribute("tieba",tieab); Membermember=(Member)session.getAttribute("member_"); List<Remind>replysfromme=service_remind.findMentionRemindsByFromId( member.getId_member()); model.addAttribute("replysfromme",replysfromme); model.addAttribute("flag","replysfromme"); return"/tieba/remind.jsp"; } @RequestMapping(value="/remind/mentionfromme",method=RequestMethod.GET) publicStringmentionfromme(Modelmodel,HttpSessionsession)throwsException{ Tiebatieab=(Tieba)session.getAttribute("tieba_"); model.addAttribute("tieba",tieab); Membermember=(Member)session.getAttribute("member_"); List<Remind>mentionsfromme=service_remind.findMentionRemindsByFromId( member.getId_member()); model.addAttribute("mentionsfromme",mentionsfromme); model.addAttribute("flag","mentionsfromme"); return"/tieba/remind.jsp"; }5.2系統(tǒng)不足由于本人技術(shù)水平有限以及時間不足的原因,系統(tǒng)現(xiàn)在暫時還沒有圖片上傳功能,在圖片方面,我的設(shè)計初衷就是用戶注冊以及貼吧創(chuàng)建的時候,必須同時上傳一張圖片作為用戶頭像和貼吧Logo,還有用戶發(fā)帖子的時候也可以上傳圖片,這個功能在接下來的時間里我還是會集成到現(xiàn)有系統(tǒng)里面去的。還有一點,就是分頁設(shè)計功能,目前還處于研發(fā)之中?,F(xiàn)在已經(jīng)在測試項目里面實現(xiàn)了這個功能,但是代碼比較分散,JSP頁面里面有,后臺Servlet里面也有,想要往本系統(tǒng)里面集成實在是不易。所以我將會在后續(xù)的修改中,繼續(xù)加油,盡量把分頁功能整合一下。一次實現(xiàn),多次調(diào)用。把本系統(tǒng)里面涉及到分頁功能的地方,全部替換掉。

6系統(tǒng)測試軟件測試(SoftwareTesting),描述一種用來促進鑒定軟件的完整性、安全性、正確性和質(zhì)量的過程??傊?,軟件測試是一種預(yù)期輸出與實際輸出之間的對比或者審核的過程。軟件測試的最經(jīng)典的定義是:在事先規(guī)定的條件下對程序進行指定操作,用以發(fā)現(xiàn)程序的錯

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論