版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
武漢理工大學武漢理工大學網上貼吧系統設計與實現摘要隨著經濟的快速發(fā)展,網絡已經滲透到人們生活及工作中的各個領域,人們越來越注重利用網絡的快捷與準確的特點來完成自己的工作,21世紀已經是屬于網絡的時代。人們把更多的注意力轉移到網絡上來,除了購物之外,人們也漸漸地在網絡上開始想換個交流。以貼吧為例,它已經成為人們獲取信息、發(fā)表言論的重要場所。它由貼吧注冊用戶所發(fā)表的大量主題組成。近年來,隨著網絡的普及完善發(fā)展,網上的貼吧也越來越火,因此建設一個好的貼吧顯得越來越有必要了。貼吧的全稱是電子布告系統,起初它還只是個公布信息的一種工具,但是隨著技術的不斷發(fā)展,現在的貼吧最終發(fā)展成一個信息整合、思想交流、資源共享的電子互動平臺。它可以提供給注冊用戶一個平臺,用戶可以通過網路的接入,登錄貼吧,在這個平臺上發(fā)表文章、閱讀文章、回復文章等等。這次的系統開發(fā)詳細表明了貼吧系統的設計思路,并對各部分設計進行了詳盡的分析,最終給出了一個完整的設計方案并對其進行了實現,以便在投入實際應用后系統可以更加穩(wěn)定可靠的工作。系統開發(fā)主要包括后臺數據庫的建立、維護以及前端應用程序的開發(fā)兩個方面,真正實現信息資源的共享。本系統以java為開發(fā)語言,在web環(huán)境下,基于B/S三層結構模式,以myeclipse為開發(fā)工具結合開發(fā)的貼吧系統。這個系統具有伸縮性好,擴展性強,能兼容、易維護、界面美觀,功能實用的功能。通過本系統,可以讓人們實現實時在線交流,真正做到信息資料的共享,也可以積極而及時地參與討論,在了解他人觀點意見的同時也可以發(fā)表自己的看法。關鍵詞:貼吧系統;B/S結構;sqlserver武漢理工大學ThedesignandimplementationofPostBarsystemAbstractWiththerapiddevelopmentofeconomy,networkhaspenetratedintoeveryfieldoflifeandworkofpeople,peoplepaymoreandmoreattentiontousingthenetworkfastandaccuratetocompletetheirwork,thetwenty-firstCenturyistheeraofnetwork.PeoplepaymoreattentiontotheInternet,inadditiontoshopping,peoplealsograduallybegantochangeinthenetworkcommunication.InthecaseofPostbar,ithasbecomeanimportantplaceforpeopletoobtaininformation,speech.Itconsistsoftheforumregisteredusersendsalotoftheme.Inrecentyears,withthedevelopmentofInternet,onlinePostBarisbecomingmoreandmorepopular,sotheconstructionofagoodpostbarisbecomingmoreandmoreimportant.Thefullnameoftheforumistheelectronicnoticesystem,atfirstitwasjustreleasedatoolofinformation,butwiththedevelopmentoftechnology,nowtheforumeventuallydevelopintoaninformationintegration,resourcesharing,exchangeideasofelectronicinteractiveplatform.Itcanprovideusersaplatform,networkuserscanaccess,logintotheforum,publishedarticles,read,replytothearticleandsooninthisplatform.Thedevelopmentofthesystemwiththatdesignideasofthesystem,anddesignthevariouspartsofadetailedanalysis,andfinallyacompletedesignschemeisgivenandtherealizationofthem,sothatinpracticethesystemcanbemorestableandreliablework.Thesystemdevelopmentmainlyincludestwoaspectstheestablishment,maintenanceofthebackgrounddatabaseandfront-endapplicationdevelopment,realizethesharingofinformationresources.Thissystemisdevelopedbyjavalanguage,inthewebenvironment,B/Sthreelayerstructuremodelbasedonthepostbarforumsystem,combinedwiththedevelopmentofatoolforthedevelopmentofmyeclipse.Thissystemhasgoodflexibility,expansibility,compatibility,easymaintenance,theinterfaceisbeautiful,functionalandpracticalfunction.Throughthissystem,peoplecanrealizereal-timeonlinecommunication,trulysharingofinformation,canalsoactivelyandtimelytoparticipateinthediscussion,inunderstandingothersopinionalsocanexpresstheirviews.Keywords:postbarsystem;B/Sstructure;sqlserver武漢理工大學目錄TOC\o"1-3"\h\u1308摘要 i16781Abstract ii224491緒論 175021.1系統開發(fā)背景 1135811.2系統開發(fā)意義 1291811.3組織安排 1135291.3.1任務目標 1114371.3.2運行環(huán)境 2152682可行性及技術簡介 3174992.1Jsp簡介 3324022.2B/S結構工作模式圖 4131252.3Myeclipse簡介 425182.4SQLServer簡介 430972.5可行性分析 519472.5.1技術可行性 545172.5.2經濟可行性 5131882.5.3操作可行性 5114942.6需求分析 617773可行性及技術簡介 7155293.1系統概要設計 7196263.2系統功能模塊設計 7212753.3數據庫設計 8324153.3.1系統實體圖 8227803.3.2數據庫表 1099454系統實現 1229024.1系統概述 1212384.2系統頁面實現 12122524.2.1系統首頁 127434.2.2用戶注冊頁面 13321004.2.3管理員發(fā)布帖子頁面 1690244.2.4類別管理頁面 17248614.2.5貼吧管理頁面 1827894.2.6用戶管理頁面 20200694.2.7用戶精華帖子頁面 21165304.2.8搜索帖子頁面 22303215系統測試 22103215.1正確認識軟件測試 23282025.2軟件測試的目的 23185295.3系統測試的方法 2315334結論 252701參考文獻 2621474致謝 271334外文資料 28432中文翻譯 33武漢理工大學1緒論1.1系統開發(fā)背景隨著信息化社會帶給我們的沖擊越來越強烈,信息化已經深入到我們生活的方方面面,同時,在信息時代強烈的沖擊下,人們已經不再滿足于上網只是查看一些資料或是網購,而是更加注重于信息的交流與傳遞。不同國家、不同地方的人可以像面對面一樣的交流、討論,這對大多數人來說是極具誘惑力的。貼吧是在1992年底隨著國際互聯網的開始流行而迅速發(fā)展起來的。互聯網的產生使得以前只能在本地訪問的貼吧可以被全世界隨意訪問,這大大加大了人們對它的興趣。在貼吧上大家可以對一個共同感興趣的問題進行討論,自由地發(fā)表自己的意見與觀點,并且能直接與其他的人進行溝通。從新聞、學習到娛樂、體育,從文字到視頻、音頻,貼吧匯集了各種形式、內容的網絡資源。同時它具有不同的用戶類型,權限不同。貼吧正以一種全新的姿態(tài)來到這個新的世紀,它以文字為主要的溝通方式,為網友提供了不受地理位置限制的交流空間。它已經成為人與人之間交流的一種形式,它提供一個相互交流、學習的互動平臺,能夠將分散的信息和分散的智慧都集中調動起來,能使得復雜的事情簡單化。如今,貼吧可以說是一種極為常見的交流互動服務系統。人們不僅可以在此發(fā)表自己的見解,相互交流技術、經驗以及暢談人生感悟,同時也可以作為用戶與商家交流的渠道,商家可以開設貼吧作為售后服務信息收集和反饋中心,在此回答用戶提出的問題式發(fā)布消息。1.2系統開發(fā)意義隨著網絡的普及,現在很多人都能夠上網,所以基于網絡的貼吧也是各種信息資源組合的場所,可以很好的為學習者、粉絲、志同道合的人提供自由的交流平臺。貼吧參與者可以圍繞某個關鍵詞或者話題,通過發(fā)表、回復話題的方式進行互動,形成了一種以關鍵詞為中心的交流方式。同時貼吧的內容也是越來越豐富,花樣繁多,貼吧也由此深受廣大網民的喜愛,因此不少商業(yè)網站對貼吧也重視起來,提供與網民交流的平臺,同時在線技術支持也在貼吧中開展起來。同樣地,也無從知道交談的對方的真實社會身份。這樣,參與貼吧的人可以處于一個平等的位置與其他人進行任何話題的交流。這對于現有的所有其他交流方式來說是不可能的。1.3組織安排本文首先介紹了貼吧系統的設計與實現的研究背景和現實意義,研究意義和研究內容。然后介紹了系統開發(fā)所用到的相關技術,闡述了Java的功能特點和系統等相關的理論。接著闡述了系統的需求分析和可行性,從軟件工程的角度分析本系統的各個部分。然后介紹了本系統的各功能模塊的功能設計、實體圖的設計、數據庫設計等。最后總結本系統的結論、現存問題以及對將來的展望。1.3.1任務目標本系統主要實現以下功能:1.貼吧實現用戶的注冊、發(fā)表言論、回復、搜索。2.貼吧系統可以查看自己的帖子、查看他人的回復、刪除信息。3.在后臺實現查看貼吧類別、添加類別、修改用戶等。1.3.2運行環(huán)境操作系統:WindowsXP/win7數據庫:sqlserver開發(fā)環(huán)境:jdk1.6MyEclipse9.0服務器:Tomcat6.0
2可行性及技術簡介2.1Jsp簡介JSP,即JavaServerPage,Java應用頁面程序。作為開發(fā)動態(tài)頁面的一種技術,JSP是當前大中型企業(yè)應用軟件首選的開發(fā)路線之一。而且JSP是J2EE的重要組成部分,開發(fā)人員可以在JSP中獲得J2EE的眾多優(yōu)點。學習JSP也是J2EE入門的必經之路。JSP既依賴于也得益于J2EE技術。“一次編寫,隨處運行”的可移植性使用戶可以專注于JSP的開發(fā),而無須考慮系統層面的問題;Java的開放特性使市面上涌現出了眾多的Web框架可供采納;面向對象的設計,為更加輕松地構筑安全穩(wěn)定的Web在線系統提供了基礎保障。JSP秉承了J2EE高貴的血統,卻又帶著平易近人的個性。JSP本質上是一個Java程序,具備Java語言一切無與倫比的優(yōu)勢。相比依賴于VBScript代碼的ASP,以及依賴于Perl語言的PHP等其他Web編程語言,JSP有著嚴格的Java語法支持,可以和JavaBean無縫整合。ASP采用了解析執(zhí)行的機制,而JSP則是先編譯后執(zhí)行。因此,在第一次訪問時JSP比ASP要慢,但是JSP的執(zhí)行則比每次都解析執(zhí)行的ASP快若干個數量級。微軟隨后推出了ASP.NET,號稱提供了豐富的面向對象類庫,引入中間語言的概念來支持多種語言,完整地集成了XML及WebService的支持,利用代碼托管機制避免危害服務器,并期盼以此代替ASP。事實上ASP.NET的框架設計與J2EE框架十分類似,雖然彌補了ASP之前的缺陷,但是,其對于Windows平臺的依賴性以及.NET本身的封閉性卻依然存在。盡管現在有Mono計劃將所有的開發(fā)轉移到Linux,但是由于各種原因,Mono有著眾多的制肘,并不被業(yè)界看好。當然,對于Windows環(huán)境下的中小型應用程序,ASP.NET確實是不錯的選擇。JSP是線程高度并行的,可以充分利用硬件資源。另外,Java語言與平臺無關,開發(fā)者可以將JSP部署在幾乎任何操作系統上,UNIX系統可以為JSP提供穩(wěn)定可靠的安全運行環(huán)境;利用集群技術還可以把多臺主機聯合起來服務于JSP應用程序。因此,JSP對于高可靠性、高性能要求的企業(yè)級應用系統有較強的吸引力。從開發(fā)者的角度考慮,JSP是開發(fā)Web應用程序的首選。JSP支持JavaBean組件,也就獲得了眾多Java廠商的有力支持,開發(fā)者可以利用JavaBean來完成所有Java能實現的功能,如數據庫連接池、圖形繪制、文件IO操作、XML解析、WebService調用與發(fā)布等。Java的開放性也使系統框架如雨后春筍般涌現,Tapstry,Velocity,Hibernate等開源框架為Web應用開發(fā)者簡化了開發(fā)流程,提高了代碼質量,從而降低了學習門檻和開發(fā)成本。JSP遵循J2EE規(guī)范所采用的分層結構也使得代碼容易組織維護,各個獨立的層次分別針對特定的編程領域,在某個領域發(fā)生變化的時候,只需要在對應層次進行針對性的修改,而不會影響到其他層次的代碼。而相對于Servlet這種Java類,JSP又有著特定的優(yōu)勢。從前面的例子可以看出,要完成一個簡單JSP頁面具有的功能,需要編寫大量的Servlet代碼,而且,從代碼上根本看不出來生成的HTML文檔結構。另外,JSP中雙引號等特殊字符,在Servlet中都需要進行轉義處理,又進一步降低了程序的可讀性。Servlet不能有效地利用原型頁面。事實上,在JSP中,還可以使用標簽等特性,進一步將JSP中的Java代碼導致的不利因素削弱。總之,使用JSP可以降低開發(fā)門檻,提高程序可讀性,開發(fā)出高性能的跨平臺企業(yè)級軟件。B/S結構工作模式圖在B/S體系結構系統中,用戶通過瀏覽器向分布在網絡上的許多服務器發(fā)出請求,服務器對瀏覽器的請求進行處理,將用戶所需信息返回到瀏覽器。而其余如數據請求、加工、結果返回以及動態(tài)網頁生成、對數據庫的訪問和應用程序的執(zhí)行等工作全部由WebServer完成。B/S工作模式圖如圖2.1所示:圖2.1B/S工作模式圖Myeclipse簡介MyEclipse企業(yè)級工作平臺(MyEclipseEnterpriseWorkbench,簡稱MyEclipse)是對EclipseIDE的擴展,利用它我們可以在數據庫和JavaEE的開發(fā)、發(fā)布以及應用程序服務器的整合方面極大的提高工作效率。它是功能豐富的JavaEE集成開發(fā)環(huán)境,包括了完備的編碼、調試、測試和發(fā)布功能,完整支持,JSP,CSS,Javascript,Hibernate等。MyEclipse是一個十分優(yōu)秀的用于開發(fā)Java,J2EE的Eclipse插件集合,MyEclipse的功能非常強大,支持也十分廣泛,尤其是對各種開源產品的支持十分不錯。MyEclipse目前支持JavaServlet,AJAX,JSP,JSF,Struts,Spring,Hibernate,EJB3,JDBC數據庫鏈接工具等多項功能??梢哉fMyEclipse是幾乎囊括了目前所有主流開源產品的專屬eclipse開發(fā)工具。MyEclipse結構上的這種模塊化,可以讓我們在不影響其他模塊的情況下,對任一模塊進行單獨的擴展和升級。簡單而言,MyEclipse是Eclipse的插件,也是一款功能強大的JavaEE集成開發(fā)環(huán)境,支持代碼編寫、配置、測試以及除錯,MyEclipse5.5以前版本需先安裝Eclipse。MyEclipse5.5以后版本安裝時不需安裝Eclipse。SQLServer簡介SQLServer是美國Microsoft公司開發(fā)的一個關系型數據庫管理系統,是目前世界上最著名的關系數據庫管理系統之一。MicrosoftSQLServer在性能和可擴展方面確立了世界領先的地位,是一套完全的數據庫和數據分析解決方案,使用戶可以快速創(chuàng)建下一代的可擴展電子商務和數據倉庫解決方案。MicrosoftSQLServer在數據庫服務器自動調整和自動管理技術方面在數據庫領域中處于領先地位,使客戶可以集中精力處理商業(yè)戰(zhàn)略上的問題,而不是去細微調整數據庫服務器的各項參數。SQLServer的主要功能:(1)數據庫管理功能作為數據庫管理系統,SQLServer自然應該具有數據庫管理功能。MicrosoftSQLServer的數據庫由包含數據的表集合和其他對象(如視圖、索引、存儲過程和觸發(fā)器)組成,目的是為執(zhí)行與數據有關的活動提供支持。存儲在數據庫中的數據通常與特定的主題或過程相關。(2)數據倉庫功能SQLServer2005提供了一套全新的綜合分析服務系統。分析服務為商業(yè)活動提供了集成的OLAP服務和數據挖掘功能。OLAP可以通過多維存儲技術對大型、復雜數據集執(zhí)行快速、高級的分析工作。數據挖掘功能能夠揭示出隱藏在大量數據中的傾向及趨勢。SQLServer針對包括集成數據挖掘、OLAP服務、安全性服務及通過Internet對多維數據集進行訪問和鏈接分析提供新的數據倉庫功能。(3)網絡貼吧SQLServer不僅提供網絡貼吧所需的可伸縮性與可擴展性之外,還提供了豐富的數據庫編程能力,以確保系統的協同工作和靈活性。SQLServer2005不僅支持集中化數據庫管理功能,而且還最大程度地實現了管理與優(yōu)化工作的自動化,從而,減輕了有關管理人員的負擔。(4)完備的Web功能SQLServer2005允許通過HTTP協議,在Web上進行高性能、基于標準的安全訪問?;赪eb的客戶端擁有訪問關系型數據存儲和訪問分析服務的能力。分布式數據復制功能分布式數據復制功能可以將一個數據庫中的數據復制到通過局域網、廣域網或Internet網絡連接的不同地點服務器或同一服務器中的不同數據庫中,并能夠自動保持這些數據同步,使各個數據庫中具有相同的數據。可行性分析可行性分析是在全面調查的基礎上,針對系統的開發(fā)是否具備必要性和可能性,對系統的開發(fā)從運行、經濟、技術的方面進行分析和研究,以避免投資失誤,保證新系統開發(fā)成功??尚行匝芯康哪康木褪怯米钚〉拇鷥r在盡可能短的時間內確定問題是否能夠解決。這部分將從以下三個方面進行研究:技術可行性、經濟可行性、操作可行性。2.5.1技術可行性技術可行性要考慮現有的技術條件是否能夠順利完成開發(fā)工作,軟硬件配置是否滿足開發(fā)的需求等。本系統采用三層結構,用sqlserver數據庫作為后臺數據庫,安裝和使用簡單易學,方便操作;用的是JSP開發(fā)語言,調試相對簡單,當前的計算機硬件配置也完全能滿足開發(fā)的需求,因此在技術上是絕對可行的。軟件方面:由于目前單機模式相對發(fā)展成熟,故軟件的開發(fā)平臺成熟可行,它們速度快、容量大、可靠性能高、價格低,完全能滿足系統的需求。2.5.2經濟可行性經濟可行性是指開發(fā)并應用此系統,應對其投資成本和未來可能取得的經濟利益,權衡其得失。隨著計算機軟件和硬件技術的飛速發(fā)展,計算機軟、硬件價格不斷下降,設計本系統所投入的資金下降。同時與一些企業(yè)發(fā)布、獲取信息所節(jié)省的價值相比,系統的收益還是很大的。開發(fā)貼吧系統在經濟上是完全可行的。2.5.3操作可行性微軟Windows操作平臺具有良好的操作性,貼吧系統服務器可以放在UNIX平臺,運行也可以基于Windows操作平臺。本系統具有友善的用戶界面、良好的安全性設置和詳細的操作說明,適合各類人群使用。需求分析需求分析是在軟件開發(fā)的初始階段進行,它對于整個軟件開發(fā)過程以及軟件開發(fā)后質量是舉足輕重的。隨著軟件系統復雜性的提高及規(guī)模的擴大,需求分析在軟件開發(fā)中所處的地位愈加突出。所謂需求,是指用戶對目標軟件系統在功能、行為、性能設計約束等方面的要求。在需求分析的研究中,系統開發(fā)人員必須對用戶的需求進行調查和分析,結合實際環(huán)境的特征,正確定義目標軟件的特征。因此,需求分析至關重要。貼吧系統設計實現以下功能:(1)管理員功能:查看用戶發(fā)布的帖子、回復的內容或是刪除帖子,同時可以添加貼吧類別、修改或是刪除類別,添加版面、修改或是刪除版面,查看、修改或是刪除用戶。(2)普通用戶功能:游客注冊后成為普通用戶,可以查看他人發(fā)布的帖子或是回復帖子,也可以自己發(fā)布帖子或是刪除帖子。(3)游客功能:游客只能查看他人發(fā)布的帖子,無法自己發(fā)布帖子或是對其他帖子進行回復,如果想實現以上功能必須先注冊。
3可行性及技術簡介3.1系統概要設計在概要設計中主要確定了系統的實現手段,定義了解決方案的邊界和主要技術結構,給出了后續(xù)工作繼續(xù)實施的所有技術要點,是開發(fā)人員在下一階段進行詳細設計的指導性文件,也是考核系統總體質量的重要技術文檔。本次的系統開發(fā)完全是一切為用戶著想,界面要美觀大方,操作盡量簡單明了,使其學校對學生貼吧的管理實現規(guī)范化、學科化。本系統是應用于整個貼吧的管理,所以對于實際中不同身份的用戶,在本系統中都有對應其角色的不同操作頁面,即不同的用戶有不同的功能,并且切互有聯系。體現了該系統的完整性。系統功能模塊設計在結構化系統設計中,模塊一般都是按功能劃分的,通常稱為功能模塊。合理的功能模塊的劃分能夠極大限度地減少重復勞動、提高開發(fā)工作的效率并增大系統的可維護性。本系統分為3個用戶權限即管理員、普通用戶、游客。下面分別介紹各個用戶的功能。(一)管理員功能:(1)我的帖子:管理員在此模塊可以發(fā)布帖子,查看其他用戶給予的回復,回復的人數,或是刪除帖子。如果頁面過多,可以直接選擇跳轉到其他頁面。(2)精華帖子:管理員在此可以查看系統中的精華帖子,并作出回復或是刪除帖子。(3)搜索功能:管理員可以通過帖子標題、帖子內容、發(fā)布者或是關鍵字進行模糊查詢或是精確查詢。(4)類別管理:管理員在后臺可以添加的類別,如貼吧的名稱、貼吧介紹,添加后可以查看類別列表,并作出修改或是刪除。(5)版面管理:管理員可以添加版面,如版面的所屬類別、名稱、版主、版面公告等信息,添加可以查看版面列表,并作出修改或是刪除。(6)用戶管理:管理員可以通過選擇不同的用戶類型進行查看不同的用戶信息,并作出修改或是刪除的操作。具體功能模塊圖如圖3.1所示:圖3.1管理員功能模塊圖(二)普通用戶功能:(1)注冊功能:游客需要注冊才能成為普通用戶,用戶登錄后可以在首頁中看到其他用戶的帖子,并可以做出回復進行交流,也可以自己發(fā)帖,查看回復或是刪除自己的帖子。(2)搜索功能:用戶可以通過帖子標題、帖子內容、發(fā)布者或是關鍵字進行模糊查詢或是精確查詢。(3)我的帖子:用戶在此模塊可以發(fā)布帖子,查看其他用戶給予的回復,回復的人數,或是刪除帖子。如果頁面過多,可以直接選擇跳轉到其他頁面。(4)精華帖子:用戶在此可以查看系統中的精華帖子,并作出回復,在此模塊中用戶只能刪除自己發(fā)布的帖子。普通用戶模塊的功能圖如圖3.2所示:圖3.2用戶功能模塊圖(三)游客功能介紹:游客只能查看其他人發(fā)布的帖子,無法發(fā)布、回復或是刪除帖子,要想成為普通用戶必須通過注冊。數據庫設計3.3.1系統實體圖實體圖是識別功能模型與數據模型間關聯關系的,在主題數據庫的抽取和規(guī)范化的過程中,采用的是簡化的實體圖表示方法,從而避免過繁過細的實體圖表示影響規(guī)劃的直觀和可用性。構成實體圖的基本要素是實體型、屬性以及聯系,其表示方法為:實體型:用矩形表示,矩形框內寫明實體名;屬性:用橢圓形表示,并用無向邊將其與相應的實體連接起來;聯系:用菱形表示,菱形框內寫明聯系名,并用無向邊分別與有關實體連接起來,同時在無向邊的旁邊標上聯系的類型。針對本系統特點,數據庫設計采用的各個組成部分的數據項和數據結構如下所示:(1)tb_bbs帖子實體圖圖3.3帖子實體圖(2)tb_bbsAnswer回復實體圖圖3.4回復表實體圖(3)tb_board貼吧實體圖圖3.5貼吧實體圖(4)tb_class分類實體圖圖3.6分類實體圖(5)tb_user用戶實體圖圖3.7用戶實體圖3.3.2數據庫表表的設計是這次設計的一個核心內容。根據前面對網站各個權限用戶模塊的功能分析和對數據庫中實體關系的設計,可以看到網站中所用到的數據信息基本包括:帖子信息表、回復表、貼吧表、分類表等。設計原則如下:(1)進行規(guī)范化設計,盡可能地減少數據冗余和重復。(2)結構設計與操作設計相結合。(3)數據結構具有相對的穩(wěn)定性。基于以上三條設計原則,本系統中關于數據庫表結構設計如下:(1)tb_bbs帖子表帖子表主要存儲帖子id、貼吧id、帖子標題、內容、發(fā)布者、發(fā)表時間、表情等信息,具體如表3.1所示:表3.1帖子表名稱數據類型備注bbs_idintidbbs_boardIDint貼吧idbbs_titlevarchar帖子標題bbs_contentvarchar內容bbs_sendervarchar發(fā)布者bbs_sendTimedatetime發(fā)表時間bbs_facevarchar表情(2)tb_bbsAnswer回復表回復表主要存儲回復id、回復主題、回復內容、回復者、回復時間、表情等信息,具體如表3.2所示:表3.2回復表名稱數據類型備注bbsAnswer_idint回復idbbsAnswer_titlevarchar(70)回復主題bbsAnswer_contentvarchar(2000)回復內容bbsAnswer_sendervarchar(20)回復者bbsAnswer_sendTimedatetime回復時間bbsAnswer_facevarchar(10)表情(3)tb_board貼吧表貼吧表主要存儲貼吧id、分類id、貼吧名稱、吧主、貼吧公告等信息,具體如表3.3所示:表3.3貼吧表名稱數據類型備注board_idint貼吧idboard_classIDsmallint分類idboard_namevarchar(40)貼吧名稱board_mastervarchar(20)吧主board_pcardvarchar(200)貼吧公告(4)tb_class分類表分類表主要存分類id、分類名稱、貼吧介紹信息等信息,具體如表3.4所示:表3.4分類表名稱數據類型備注class_idsmallint分類idclass_namevarchar(40)分類名稱class_introvarchar(200)貼吧介紹(5)tb_user用戶表用戶表主要存儲用戶id、用戶名、密碼、用戶頭像、用戶性別、聯系電話、QQ、電子郵件、來自、權限等信息,具體如表3.5所示:表3.5用戶表名稱數據類型備注idsmallintiduser_namevarchar(20)用戶名user_passwordvarchar(20)密碼user_facevarchar(11)用戶頭像user_sexvarchar(2)用戶性別user_phonevarchar(12)聯系電話user_OICQvarchar(14)QQuser_emailvarchar(100)E-mailuser_fromvarchar(200)來自user_ablevarchar(1)權限以上是系統主要實體圖和數據庫表的介紹。
4系統實現4.1系統概述人機交互子系統是用戶所能直接看到的,是給用戶的第一感覺,他現在已經成為判斷一個軟件好壞的重要標準。在設計人機交互子系統的時候,必須遵循以下原則:設計出一個易用、低錯、適應、美觀的界面,能夠使用戶自如的完成操作,而用戶不需要有較高的計算機專業(yè)知識和技能。前期對項目的大量細致的分析,以及對用戶群的調查,充分考慮實際操作的各項細節(jié),使得普通用戶在不需要查看用戶手冊的情況下亦能很自如的操作系統,并對操作流程有清晰的了解。4.2系統頁面實現本系統有三個用戶權限,分別是管理員、普通用戶和游客,三個用戶功能相輔相成,達成一個完美的系統,主要功能如下:(一)管理員功能:(1)我的帖子:管理員在此模塊可以發(fā)布帖子,查看其他用戶給予的回復,回復的人數,或是刪除帖子。如果頁面過多,可以直接選擇跳轉到其他頁面。(2)精華帖子:管理員在此可以查看系統中的精華帖子,并作出回復或是刪除帖子。(3)搜索功能:管理員可以通過帖子標題、帖子內容、發(fā)布者或是關鍵字進行模糊查詢或是精確查詢。(4)類別管理:管理員在后臺可以添加貼吧的類別,如貼吧的名稱、貼吧介紹,添加后可以查看類別列表,并作出修改或是刪除。(5)貼吧管理:管理員可以添加貼吧,如貼吧的所屬類別、名稱、吧主、貼吧公告等信息,添加可以查看貼吧列表,并作出修改或是刪除。(6)用戶管理:管理員可以通過選擇不同的用戶類型進行查看不同的用戶信息,并作出修改或是刪除的操作。(二)普通用戶功能:(1)注冊功能:游客需要注冊才能成為普通用戶,用戶登錄后可以在首頁中看到其他用戶的帖子,并可以做出回復進行交流,也可以自己發(fā)帖,查看回復或是刪除自己的帖子。(2)搜索功能:用戶可以通過帖子標題、帖子內容、發(fā)布者或是關鍵字進行模糊查詢或是精確查詢。(3)我的帖子:用戶在此模塊可以發(fā)布帖子,查看其他用戶給予的回復,回復的人數,或是刪除帖子。如果頁面過多,可以直接選擇跳轉到其他頁面。(4)精華帖子:用戶在此可以查看系統中的精華帖子,并作出回復,在此模塊中用戶只能刪除自己發(fā)布的帖子。(三)游客功能介紹:游客只能查看其他人發(fā)布的帖子,無法發(fā)布、回復或是刪除帖子,要想成為普通用戶必須通過注冊。4.2.1系統首頁在系統首頁有登錄按鈕,在未登錄的時候只能瀏覽其他人發(fā)布的帖子,無法操作任何功能,游客也在首頁進行注冊,如圖4.1所示:圖4.1系統首頁主要代碼:/**設置分頁導航欄信息*/publicvoidsetPageLink(Stringgowhich){if(gowhich==null) gowhich=""; if(gowhich.indexOf("?")>=0) gowhich+="&"; else gowhich+="?"; if(AllP>1){//AllP是已定義的變量,代表頁面總數 PageLink="<tableborder='0'cellpadding='3'><tr><td>"; if(CurrentP>1){//CurrentP是已定義的變量,代表當前頁面數字 PageLink+="<ahref='"+gowhich+"showpage=1'>【首頁】</a> "; PageLink+="<ahref='"+gowhich+"showpage="+(CurrentP-1)+"'>【上一頁】</a> "; } if(CurrentP<AllP){ PageLink+="<ahref='"+gowhich+"showpage="+(CurrentP+1)+"'>【下一頁】</a> "; PageLink+="<ahref='"+gowhich+"showpage="+AllP+"'>【尾頁】</a>"; } PageLink+="</td></tr></table>"; } }4.2.2用戶注冊頁面用戶首次登錄前需要先注冊,點擊注冊按鈕,填寫用戶名、密碼、性別、聯系電話、QQ、郵件、來自哪里即注冊成為本站的普通用戶,具體如圖4.2所示:圖4.2注冊頁面主要代碼:/**用戶注冊*/publicActionForwarduserReg(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse){ActionMessagesmessages=newActionMessages();HttpSessionsession=request.getSession();//建立會話 session.setAttribute("mainPage","../pages/userReg.jsp"); Stringvalidate=request.getParameter("validate"); if(validate==null||validate.equals("")||!validate.equals("yes")){//若果validate對象不存在,或值為空,或validate的值不為yes returnmapping.findForward("result"); } else{ UserFormregForm=(UserForm)form; Stringpass1=regForm.getUserPassword(); Stringpass2=regForm.getAginPassword();//若兩次密碼輸入不一致,則在屏幕上顯示輸出“連詞輸入的密碼不一致” if(!pass1.equals(pass2)){ System.out.println("兩次輸入的密碼不一致!"); messages.add("userPassword",newActionMessage("luntan.user.reg.pass.noEquals")); saveErrors(request,messages); } else{ StringuserName=Change.HTMLChange(regForm.getUserName()); Object[]params=null;//檢查自定義的用戶名是否已經被使用,以保證用戶名唯一 Stringsql=""; sql="select*fromtb_userwhereuser_name=?"; params=newObject[1]; params[0]=userName; OpDBmyOp=newOpDB(); UserFormuser=myOp.OpUserSingleShow(sql,params); if(user!=null){ System.out.println(userName+"用戶已經存在!"); messages.add("userOpR",newActionMessage("luntan.user.reg.exist",userName)); } else{ StringuserPassword=Change.HTMLChange(regForm.getUserPassword()); StringuserFace=regForm.getUserFace(); StringuserSex=regForm.getUserSex(); StringuserPhone=regForm.getUserPhone(); StringuserOICQ=regForm.getUserOICQ(); StringuserEmail=regForm.getUserEmail(); StringuserFrom=Change.HTMLChange(regForm.getUserFrom()); StringuserAble="0"; sql="insertintotb_uservalues(?,?,?,?,?,?,?,?,?)"; params=newObject[9]; params[0]=userName; params[1]=userPassword; params[2]=userFace; params[3]=userSex; params[4]=userPhone; params[5]=userOICQ; params[6]=userEmail; params[7]=userFrom; params[8]=userAble;//將新用戶信息插入數據庫用戶表 inti=myOp.OpUpdate(sql,params); if(i<=0){ System.out.println("用戶注冊失??!"); messages.add("userOpR",newActionMessage("luntan.user.reg.E")); } else{ System.out.println("用戶注冊成功!"); regForm.clear(); messages.add("userOpR",newActionMessage("luntan.user.reg.S")); } saveErrors(request,messages); } } returnmapping.findForward("result"); //完成注冊后,跳轉到result里設置的頁面 }} 4.2.3管理員發(fā)布帖子頁面管理員在登錄到系統后,在此模塊可以發(fā)布帖子,發(fā)布后可以對其刪除或是查看他人給予的回復,具體實現頁面如圖4.3所示:圖4.3管理員發(fā)帖頁面主要代碼:/**發(fā)表帖子*/publicActionForwardaddBbs(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse){ HttpSessionsession=request.getSession(); session.setAttribute("mainPage","/pages/add/bbsAdd.jsp"); Stringvalidate=request.getParameter("validate"); if(validate==null||validate.equals("")||!validate.equals("yes")){//如果validate對象不存在,或值為空,或validate的值不為yes returnmapping.findForward("showAddJSP"); }else{ BbsFormbbsForm=(BbsForm)form; StringboardId=(String)session.getAttribute("boardId"); StringbbsTitle=Change.HTMLChange(bbsForm.getBbsTitle()); StringbbsContent=Change.HTMLChange(bbsForm.getBbsContent()); StringbbsSender=((UserForm)session.getAttribute("logoner")).getUserName(); StringbbsSendTime=Change.dateTimeChange(newDate()); StringbbsFace=bbsForm.getBbsFace(); StringbbsOpTime=bbsSendTime; StringbbsIsTop="0"; StringbbsToTopTime=""; StringbbsIsGood="0"; StringbbsToGoodTime="";Stringsql="insertintotb_bbsvalues(?,?,?,?,?,?,?,?,?,?,?)";Object[]params={boardId,bbsTitle,bbsContent,bbsSender,bbsSendTime,bbsFace,bbsOpTime,bbsIsTop,bbsToTopTime,bbsIsGood,bbsToGoodTime}; ActionMessagesmessages=newActionMessages(); OpDBmyOp=newOpDB(); inti=myOp.OpUpdate(sql,params); if(i<=0){ System.out.println("發(fā)表帖子失??!"); messages.add("userOpR",newActionMessage("luntan.bbs.add.E")); saveErrors(request,messages);returnmapping.findForward("error");//發(fā)帖成功后,跳轉到error中設置的頁面 } else{ System.out.println("發(fā)表帖子成功!"); session.setAttribute("currentP","1");//發(fā)帖成功后,將當前頁面設置為1 messages.add("userOpR",newActionMessage("luntan.bbs.add.S")); bbsForm.clear();//清空發(fā)帖面板 saveErrors(request,messages);returnmapping.findForward("success");//發(fā)帖成功后,跳轉到success中設置的頁面 } } }4.2.4類別管理頁面管理員在系統中可以添加貼吧的類別,添加后可以查看類別列表,并可以做出修改或是刪除,如圖4.4所示:圖4.4管理類別頁面主要代碼:/**后臺-添加貼吧類別*/publicActionForwardaddClass(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse){HttpSessionsession=request.getSession();session.setAttribute("backMainPage","../class/classAdd.jsp");Stringvalidate=request.getParameter("validate");if(validate==null||validate.equals("")||!validate.equals("yes")){ returnmapping.findForward("result");//發(fā)帖成功后,跳轉到result中設置的頁面}else{ ActionMessagesmessages=newActionMessages(); ClassFormclassForm=(ClassForm)form; StringclassName=Change.HTMLChange(classForm.getClassName()); StringclassIntro=Change.HTMLChange(classForm.getClassIntro()); Stringsql=""; Object[]params=null; OpDBmyOp=newOpDB(); sql="select*fromtb_classwhereclass_name=?"; params=newObject[1]; params[0]=className; if(myOp.OpClassSingleShow(sql,params)!=null){//若新建的貼吧類別名稱已經存在System.out.println("添加貼吧類別-名稱:"+className+"的貼吧類別已經存在!"); messages.add("adminOpR",newActionMessage("luntan.admin.add.class.exist",className)); }else{ sql="insertintotb_classvalues(?,?)"; params=newObject[2]; params[0]=className; params[1]=classIntro;//將新定義的貼吧類別添加到數據庫表中 inti=myOp.OpUpdate(sql,params); if(i<=0){ System.out.println("添加貼吧類別失敗!");messages.add("adminOpR",newActionMessage("luntan.admin.add.class.E")); }else{ System.out.println("添加貼吧類別成功!"); classForm.clear();//清空表單里的內容messages.add("adminOpR",newActionMessage("luntan.admin.add.class.S")); } } saveErrors(request,messages); returnmapping.findForward("result");//發(fā)帖成功后,跳轉到result中設置的頁面} }4.2.5貼吧管理頁面管理員可以在系統中添加貼吧,并可以按照貼吧類別進行貼吧的查看,具體頁面如圖4.5所示:圖4.5貼吧管理頁面主要代碼:/**后臺-列表查看貼吧*/publicActionForwardgetBoardList(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse){ HttpSessionsession=request.getSession(); session.setAttribute("backMainPage","../board/boardListShow.jsp"); ListboardList=null; OpDBmyOp=newOpDB(); StringgetType=request.getParameter("type"); if(getType==null||getType.equals("")||!getType.equals("show")){//如果validate對象不存在,或值為空,或validate的值不為show ListclassList=myOp.OpClassListShow(); session.setAttribute("backClassList",classList); }else{ ClassFormclassform=(ClassForm)form; StringclassId=classform.getClassId(); if(classId==null||classId.equals("")){ classId=(String)session.getAttribute("boardListId"); classform.setClassId(classId); } else{ session.setAttribute("boardListId",classId); }//透過classID字段查詢數據庫表tb_board中的所有字段 Stringsql="select*fromtb_boardwhereboard_classID=?"; Object[]params={classId}; boardList=myOp.OpBoardListShow(sql,params); } session.setAttribute("backBoardList",boardList); returnmapping.findForward("success");}4.2.6用戶管理頁面 管理員在系統中可以按照不同的用戶權限來查看不同用戶的信息,并可以對信息進行修改或是刪除。具體實現頁面如圖4.6所示:圖4.6用戶管理頁面主要代碼:/**后臺-列表查看用戶*/publicActionForwardgetUserList(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse){HttpSessionsession=request.getSession();session.setAttribute("backMainPage","../user/userListShow.jsp");StringgetType=request.getParameter("type");if(getType==null||getType.equals("")||!getType.equals("show")){//如果validate對象不存在,或值為空,或validate的值不為showListableList=newArrayList();ableList.add(newLabelValueBean("全部","all"));ableList.add(newLabelValueBean("管理員","2"));ableList.add(newLabelValueBean("吧主","1"));ableList.add(newLabelValueBean("普通用戶","0"));session.setAttribute("backListAble",ableList); }else{AbleFormableform=(AbleForm)form;Stringable=ableform.getShowAble();if(able==null||able.equals("")){able=(String)session.getAttribute("userAble");ableform.setShowAble(able);}elsesession.setAttribute("userAble",able);Stringsql="";Object[]params=null;if(able.equals("all")){//查詢tb_user表中所有字段,并根據權限降序排列sql="select*fromtb_userorderbyuser_ableDESC";}else{//根據選擇的權限類型,查詢tb_user表中的所有用戶信息sql="select*fromtb_userwhereuser_able=?";params=newObject[1];params[0]=able; }OpDBmyOp=newOpDB();Listuserlist=myOp.OpUserListShow(sql,params);request.setAttribute("backUserList",userlist);} returnmapping.findForward("success"); }4.2.7用戶精華帖子頁面用戶登錄后查看版系統中的精華帖子,并作出回復,但是用戶無權刪除他人發(fā)布的帖子,只能刪除自己的帖子,下圖為精華帖子查看頁面,圖4.7所示:圖4.7精華帖子頁面主要代碼:/**查看精華帖*/publicActionForwardgoodListShow(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse){ super.setParams(request); HttpSessionsession=request.getSession(); session.setAttribute("mainPage","/pages/show/bbs/goodListShow.jsp"); OpDBmyOp=newOpDB(); intperR=5; StringcurrentP=request.getParameter("showpage"); if(currentP==null||currentP.equals("")) currentP=(String)session.getAttribute("currentPgood"); else session.setAttribute("currentPgood",currentP); Stringgowhich="user/goodListShow.do?method=goodListShow"; myOp.setMark(true);//進行分頁顯示 myOp.setPageInfo(perR,currentP,gowhich);//設置進行分頁顯示需要的信息 Stringsql="select*fromtb_bbswherebbs_isGood='1'orderbybbs_toGoodTimeDESC"; Listgoodlist=myOp.OpBbsListShow(sql,null); CreatePagepage=myOp.getPage(); session.setAttribute("goodlist",goodlist); session.setAttribute("page",page); returnmapping.findForward("success");}4.2.8搜索帖子頁面用戶在系統可以搜索站內的帖子,通過輸入帖子標題、內容、發(fā)表者或是關鍵字都可以進行模糊或是精確的搜索,具體如圖4.8所示:圖4.8搜索帖子頁面主要代碼:/**搜索操作**/ SearchFormsearchform=(SearchForm)form; Stringsubsql=searchform.getSubsql(); Stringsqlvalue=searchform.getSqlvalue(); StringsearchType=searchform.getSearchType(); Stringvalidate=request.getParameter("validate"); if(validate==null||validate.equals("")||!validate.equals("yes")){//通過“返回”超鏈接觸發(fā)的搜索操作 subsql=(String)session.getAttribute("subsql"); sqlvalue=(String)session.getAttribute("sqlvalue"); sqlvalue=(String)session.getAttribute("sqlvalue"); searchform.setSubsql(subsql); searchform.setSqlvalue(sqlvalue); searchform.setSearchType(searchType); }else{session.setAttribute("subsql",subsql);//通過提交表單觸發(fā)的“搜索操作” sqlvalue=Change.HTMLChange(searchform.getSqlvalue()); session.setAttribute("sqlvalue",sqlvalue); session.setAttribute("searchType",searchType); } Stringopname=""; Stringparam=""; if(searchType.equals("all")){ opname="="; param=sqlvalue; }else{ opname="like";param="%"+sqlvalue+"%";}5系統測試5.1正確認識軟件測試(1)不能徹底測試程序。我們知道,軟件工程的總目標是充分利用有限的人力和物力資源,高效率、高質量地完成軟件開發(fā)項目。在測試階段既然窮舉測試是不可實現的,為了節(jié)省時間和資源,提高測試效率,就必須精心設計測試用例,使得采用這些測試數據能夠取得最佳的測試效果。(2)軟件測試的目的不是證實程序的正確性。(3)軟件錯誤是不可避免的。開發(fā)過程中軟件錯誤之所以不可避免,從客觀上講,是由于所開發(fā)的軟件具有相當的復雜性。軟件開發(fā)的實踐一再表明,指望整個開發(fā)過程完全不出現人為的差錯是不可能的,問題在于如何能夠及時地發(fā)現和排除各種隱匿的差錯。(4)及時排除早期開發(fā)中的錯誤。這樣可以排除它給后期工作帶來的麻煩。也就避免付出高額的代價,從而大大提高開發(fā)的效率。(5)程序驗證方法無法取代測試。在實際的軟件開發(fā)項目中,測試仍然是最為現實、有效的質量保證手段。5.2軟件測試的目的軟件測試的目的,第一是確認軟件的質量,其一方面是確認軟件做了你所期望的事情,另一方面是確認軟件以正確的方式來做了這個事件。第二是提供信息,比如提供給開發(fā)人員或程序經理的反饋信息,為風險評估所準備的信息。第三軟件測試不僅是在測試軟件產品的本身,而且還包括軟件開發(fā)的過程。如果一個軟件產品開發(fā)完成之后發(fā)現了很多問題,這說明此軟件開發(fā)過程很可能是有缺陷的。因此軟件測試的第三個目的是保證整個軟件開發(fā)過程是高質量
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度茶藝館品牌合作全面合作協議4篇
- 綜合、專項應急預案、現場處置與方案
- 二零二四醫(yī)院與學校聯辦臨床實習基地合作協議3篇
- 專業(yè)化2024波紋管買賣協議詳案版B版
- 2025年度旅游文化節(jié)攤位租賃及旅游產品推廣合同4篇
- 專項定向井技術支持與服務協議版B版
- 2025年跨境電商平臺產品代理銷售合同協議4篇
- 專業(yè)法律顧問服務協議(2024)3篇
- 專業(yè)技術員2024聘用合同
- 2025年度茶葉出口貿易代理合同8篇
- 全自動化學發(fā)光分析儀操作規(guī)程
- 北侖區(qū)建筑工程質量監(jiān)督站監(jiān)督告知書
- 深藍的故事(全3冊)
- GB/T 42461-2023信息安全技術網絡安全服務成本度量指南
- 職校開學第一課班會PPT
- 法考客觀題歷年真題及答案解析卷一(第1套)
- 央國企信創(chuàng)白皮書 -基于信創(chuàng)體系的數字化轉型
- GB/T 36964-2018軟件工程軟件開發(fā)成本度量規(guī)范
- 6第六章 社會契約論.電子教案教學課件
- 機加車間各崗位績效考核方案
- 小學數學專題講座:小學數學計算能力的培養(yǎng)課件
評論
0/150
提交評論