




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
畢業設計(論文)任務書畢業設計(論文)題目:基于Web的易語言論壇系統的設計與實現畢業設計(論文)要求及原始數據(資料):1.綜述國內JavaEEWEB應用開發技術的現狀;2.了解JavaEEWEB項目開發的相關技術;3.掌握JavaEEWEB項目開發的基礎知識與基本能力;4.掌握SpringMVC與Hibernate兩大框架技術;5.掌握使用框架技術開發JavaEEWEB項目的能力;6.設計并實現一個基于WEB的論壇系統項目;7.總結通過此次項目實戰在知識與技能方面的收獲;8.訓練檢索文獻資料和利用文獻資料的能力;9.訓練撰寫技術文檔與學位論文的能力。畢業設計(論文)主要內容:1.描述國內網上論壇系統的現狀;2.綜述國內JavaEEWEB應用開發技術的概況;3.簡單介紹JavaEEWEB項目開發的相關技術;4.描述框架技術在JavaEEWEB項目開發的重要性;5.描述本項目開發環境的配置與項目運行的部署;6.分析本項目需要的功能并做出相應的設計;7.實現本項目的所有功能并保證足夠的健壯性;8.總結通過本項目所獲得的知識與技能的提升;學生應交出的設計文件(論文):1.內容完整、層次清晰、敘述流暢、排版規范的畢業設計論文;2.包括畢業設計論文、源程序等內容在內的畢業設計電子文檔及其它相關材料。主要參考文獻(資料):[1]孫鑫.JavaWeb開發詳解[M].電子工業出版社,2006[2]孫衛琴,李洪成.Tomcat與JavaWeb開發技術詳解[M].電子工業出版社,2003[3]袁建洲.JavaScript編程寶典.人民郵電出版社,2007[4]李剛.基于J2EE的AJAX寶典.電子工業出版社,2007[5]耿祥義.JSP基礎編程[M].清華大學出版社,2004[6]林信良.JSP&Servlet學習筆記[M].清華大學出版社,2012,5[7]孫衛琴.精通hibernate[M].電子工業出版社,2005,4[8]林寒超,張南平.Hibernate技術的研究[J].計算機技術與發展,2006,16(11)[9]畢建信.基于MVC設計模式的Web應用研究與實現[D].武漢理工大學,2006,5[10]威爾德,斯尼德等著,趙利通譯.SpringFramework2入門經典[M].清華大學出版社,2009[11]CraigWalls,RyanBreidenBach.SpringInAction[M].ManningPublications,2006[12]AmuthanG.SpringMVC:Beginner'sGuide[M].PacktPublishing,2014[13]DataflowanalysisandtestingofJSP-basedWebapplications[J].Informationandsoftwaretechnology,2006.48(12)專業班級:軟件工程1102班學生姓名:胡詩瑞要求設計(論文)工起止日期:2015年3月23日~2015年7月3日指導教師簽字:日期:2015年3月23日教研室主任審查簽字:日期:系主任批準簽字:日期:基于Web的易語言論壇系統的設計與實現摘要論壇,是Internet上的一種電子信息服務系統。它提供一塊公共電子黑板,每個用戶都可以在上面寫東西,可以提出看法或發布信息。它是一種交互性比較強,內容比較及時而豐富的Internet電子信息類型的服務系統,用戶在BBS站點上,可以獲得各種信息服務、可以發布信息、可以進行討論、可以聊天等等。貼吧,是一種基于關鍵詞而存在的主題交流社區,它與搜索功能緊密結合,能準確把握用戶需求,為興趣而生。貼吧的使命就是讓志同道合的人相聚在一起。貼吧的組建依靠的是搜索引擎關鍵詞,不論是小眾話題還是大眾話題,都能夠精準地聚集大批的同好網友,它為人們提供一個交流和表達思想的自由網絡空間,并以此來匯集志同道合的網友。本系統借鑒貼吧基于關鍵詞交流的思想,擴大了論壇的現有功能,使之不僅僅局限于定義好的的關鍵詞。用戶可以創建原本不存在的關鍵詞主題站,可以針對任何感興趣的主題在相應的主題站里發表帖子,瀏覽帖子,參與討論,擴寬了獲取信息的渠道,真正做到了信息共享。系統采用了JSP、Ajax、Servlet以及SpringMVC與Hibernate兩大框架技術實現,實現了預期的功能。關鍵詞:論壇;貼吧;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設計目標 2175832開發環境和相關技術 385222.1開發環境 3136332.2相關技術 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系統設計 1223404.1數據庫表設計 1233874.1.1ER圖分析 12241434.1.2數據庫表設計 15311024.2功能設計 20187814.2.1登錄注冊 20203284.2.2查看貼吧列表 2137164.2.3查看帖子列表 2117734.2.4查看帖子詳情 22164264.2.5查看提醒信息 2286965系統實現 23136125.1功能實現 23282025.1.1登錄注冊 23220305.1.2查看貼吧列表 26260365.1.3查看帖子列表 2984445.1.4查看帖子詳情 30122645.1.5查看提醒信息 326465.2系統不足 3519116系統測試 36208546.1登錄測試 36152196.2注冊測試 37282206.3使用測試 37270246.4總結 3719131結束語 3917207參考文獻 411405致謝 421緒論1.1背景意義當今的社會是一個信息高速發展的社會,在信息的交流和傳遞當中,互聯網占據著一個非常重要的位置。隨著Internet技術的不斷發展,以及用戶群爆炸性地增長,網絡不再僅僅是信息的被動獲取來源,更成為人們探討問題、交換觀點的場所,各種網絡應用應運而生。隨著網絡應用的興起,人們交流的方式也發生了翻天覆地的變化。網絡聊天、網絡視頻和郵箱系統等網絡應用的出現正在改變著人們彼此之間溝通、交流的方式。此外,為了滿足人們在某一特定主題下的知識獲取和信息發布的需求,網上論壇順勢誕生了。隨著時間的推移,論壇站點中積存了豐富的信息資源,不但有各類技術資料和新聞文檔,還包含著用戶的判斷和評論,論壇站點己成為Web信息庫的重要組成部分,自網上論壇誕生20多年以來,隨著Web技術的發展,己經由原來簡單的電子公告板系統發展為功能豐富的網上論壇和虛擬社區模式。隨著網絡的迅速發展,信息幾乎充實在生活工作的方方面面,無論是政界、商界,還是娛樂界,都有各種各樣的論壇?;ヂ摼W正在融入我們的生活,網絡提供給我們的不只是一個獲取信息的來源,而且還是一個可以相互交流的空間,網上論壇正是一種供人們進行交流的網絡空間,影響和改變著我們的生活。論壇是一個讓人足不出戶即可了解外界世界,了解他人所想的工具。給天下的網民都提供了交流的平臺,為網絡的互動性作出了巨大的貢獻。人們根據自己的專業特長和興趣愛好在論壇上提出自己的問題,即提出主題。而后其他人根據主題內容可以發表自己的意見和看法,即回復主題。一千個人有一千個哈姆雷特,論壇集大家之所長,所感,為每一個用戶提供了豐富的知識礦藏。通過論壇,網民們能夠更加方便的交流,更加便捷的發表自己的觀點,同時發布信息都是通過能夠被記錄的文字來進行的,所以這樣也能避免精華內容的流失。通過論壇來征得自己想要的信息,有更高的效率和時效性,也最節約成本和資源。在論壇的交流過程中,參與討論的人可以處于一個平等的位置,且無論喜怒哀樂都是在虛擬的環境中進行,避免了正面的尷尬和沖突等。在論壇中,人們可以演變成任何角色,變換多種身份,因為網絡的特征,使得人民更加依賴于論壇中的交流。1.2設計目標百度貼吧,是全球最大的主題中文社區,其基于搜索引擎和開放關鍵詞的形態已變成一種通用的互聯網產品模式,被中文網站廣為學習采納,產生了大量類似“貼吧”的平臺。而本系統也正是借鑒了百度貼吧開放關鍵詞的特點,在實現了論壇基本功能的基礎上,擴展了論壇系統的現有功能。游客用戶可以查詢貼吧,瀏覽帖子,也可以通過注冊功能獲得系統賬號,從而登錄本系統,升級成為登錄用戶,獲得對應的權限。登錄用戶不僅可以查詢貼吧,瀏覽帖子,還可以發表帖子,回復帖子,查看通知,參與貼吧活動,創建貼吧,管理貼吧等,是本系統的核心用戶。管理員用戶不僅僅具有貼吧的所有權限,同時還肩負著發展貼吧的重任,是貼吧的核心人物。
2開發環境和相關技術2.1開發環境操作系統:MicrosoftWindows7Ultimate(64-bit)JDK:JavaSEDevelopmentKit7u75開發工具:EclipseLunaServiceRelease2(4.4.2)數據庫:OracleDatabase11gRelease2ExpressEdition(11.0.2)服務器:ApacheTomcat7.0.592.2相關技術本項目是一個動態WEB項目,系統采用SpringMVC框架實現了頁面的切換和數據的傳遞,采用Hibernate框架實現了數據的持久化操作,前臺頁面采用JSP技術編寫,其數據合法性采用了JavaScript,JQuery和Ajax技術,結合后臺Sertlet進行驗證?,F在簡單介紹一下這些技術以及系統詳細設計。2.2.1JavaEEWEBJavaEE(JavaPlatform,EnterpriseEdition)是sun公司(2009年4月20日甲骨文將其收購)推出的企業級應用程序版本。這個版本以前稱為J2EE。能夠幫助我們開發和部署可移植、健壯、可伸縮且安全的服務器端Java應用程序。JavaEE是在JavaSE的基礎上構建的,它提供Web服務、組件模型、管理和通信API,可以用來實現企業級的面向服務體系結構(service-orientedarchitecture,SOA)和Web2.0應用程序。在當今網絡時代,無論是因特網(Internet)、內聯網、外聯網都離不開Web技術的應用。隨著網絡技術尤其是Web應用技術的發展,企業級應用對系統各方面的性能要求越來越高,特別是速度、安全、可靠性以及分布式應用等方面,在一定程度上決定著系統能否成功。在這些要求的共同作用下,SUN的JavaEE(Java平臺企業版)規范利用Java編程語言和企業API的強大功能,包括EJB技術,提供了一種業界領先的Web編程技術平臺。JAVAEEWEB編程技術已成為計算機領域中最重要的的技術之一,它是軟件學科中一個不可或缺的分支,是計算機專業和信息管理專業一門專業基礎課,越來越多的人都開始學習JAVAEEWEB編程技術。2.2.2JSPJSP全名為JavaServerPages,中文名叫java服務器頁面,其根本是一個簡化的Servlet設計,它[1]是由SunMicrosystems公司倡導、許多公司參與一起建立的一種動態網頁技術標準。JSP技術有點類似ASP技術,它是在傳統的網頁HTML(標準通用標記語言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標記(tag),從而形成JSP文件,后綴名為(*.jsp)。用JSP開發的Web應用是跨平臺的,既能在Linux下運行,也能在其他操作系統上運行。它實現了Html語法中的java擴張(以<%,%>形式)。JSP與Servlet一樣,是在服務器端執行的。通常返回給客戶端的就是一個HTML文本,因此客戶端只要有瀏覽器就能瀏覽。JSP技術使用Java編程語言編寫類XML的tags和scriptlets,來封裝產生動態網頁的處理邏輯。網頁還能通過tags和scriptlets訪問存在于服務端的資源的應用邏輯。JSP將網頁邏輯與網頁設計的顯示分離,支持可重用的基于組件的設計,使基于Web的應用程序的開發變得迅速和容易。JSP(JavaServerPages)是一種動態頁面技術,它的主要目的是將表示邏輯從Servlet中分離出來。JavaServlet是JSP的技術基礎,而且大型的Web應用程序的開發需要JavaServlet和JSP配合才能完成。JSP具備了Java技術的簡單易用,完全的面向對象,具有平臺無關性且安全可靠,主要面向因特網的所有特點。2.2.3ServletServlet是在服務器上運行的小程序。最早支持Servlet技術的是JavaSoft的JavaWebServer。此后,一些其它的基于Java的WebServer開始支持標準的ServletAPI。Servlet的主要功能在于交互式地瀏覽和修改數據,生成動態Web內容。這個過程為:1)客戶端發送請求至服務器端;2)服務器將請求信息發送至Servlet;3)Servlet生成響應內容并將其傳給服務器。響應內容動態生成,通常取決于客戶端的請求;4)服務器將響應返回給客戶端。Servlet看起來像是通常的Java程序。Servlet導入特定的屬于JavaServletAPI的包。因為是對象字節碼,可動態地從網絡加載,可以說Servlet對Server就如同Applet對Client一樣,但是,由于Servlet運行于Server中,它們并不需要一個圖形用戶界面。從這個角度講,Servlet也被稱為FacelessObject。一個Servlet就是Java編程語言中的一個類,它被用來擴展服務器的性能,服務器上駐留著可以通過“請求-響應”編程模型來訪問的應用程序。雖然Servlet可以對任何類型的請求產生響應,但通常只用來擴展Web服務器的應用程序。2.2.4JavaScriptJavaScript一種直譯式腳本語言,是一種動態類型、弱類型、基于原型的語言,內置支持類型。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用于客戶端的腳本語言,最早是在HTML(標準通用標記語言下的一個應用)網頁上使用,用來給HTML網頁增加動態功能。2.2.5AjaxAJAX即“AsynchronousJavascriptAndXML”(異步JavaScript和XML),是指一種創建交互式網頁應用的網頁開發技術。AJAX=異步JavaScript和XML(標準通用標記語言的子集)。AJAX是一種用于創建快速動態網頁的技術。通過在后臺與服務器進行少量數據交換,AJAX可以使網頁實現異步更新。這意味著可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。傳統的網頁(不使用AJAX)如果需要更新內容,必須重載整個網頁頁面。2.2.6HibernateHibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。2.2.7SpringSpring是一個開源框架,Spring是于2003年興起的一個輕量級的Java開發框架,由RodJohnson在其著作ExpertOne-On-OneJ2EEDevelopmentandDesign中闡述的部分理念和原型衍生而來。它是為了解決企業應用開發的復雜性而創建的??蚣艿闹饕獌瀯葜痪褪瞧浞謱蛹軜?,分層架構允許使用者選擇使用哪一個組件,同時為J2EE應用程序開發提供集成的框架。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務器端的開發。從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益。Spring的核心是控制反轉(IoC)和面向切面(AOP)。簡單來說,Spring是一個分層的JavaSE/EEfull-stack(一站式)輕量級開源框架。2.2.8SpringMVCSpringMVC屬于SpringFrameWork的后續產品,已經融合在SpringWebFlow里面。Spring框架提供了構建Web應用程序的全功能MVC模塊。使用Spring可插入的MVC架構,可以選擇是使用內置的SpringWeb框架還可以是Struts這樣的Web框架。
3需求分析需求分析是在軟件開發的初始階段進行,它對于整個軟件開發過程以及軟件開發后質量是舉足輕重的。隨著軟件系統復雜性的提高及規模的擴大,需求分析在軟件開發中所處的地位愈加突出。所謂需求,是指用戶對目標軟件系統在功能、行為、性能設計約束等方面的要求。在需求分析的研究中,系統開發人員必須對用戶的需求進行調查和分析,結合實際環境的特征,正確定義目標軟件的特征。所謂需求分析,是指對要解決的問題進行詳細的分析,弄清楚問題的要求,包括需要輸入什么數據,要得到什么結果,最后應輸出什么。可以說,在軟件工程當中的“需求分析”就是確定要計算機“做什么”,要達到什么樣的效果??梢哉f需求分析是做系統之前必做的。3.1需求采集在軟件工程中,需求分析指的是在建立一個新的或改變一個現存的電腦系統時描寫新系統的目的、范圍、定義和功能時所要做的所有的工作。需求分析是軟件工程中的一個關鍵過程。在這個過程中,系統分析員和軟件工程師確定顧客的需要。只有在確定了這些需要后,他們才能夠分析和尋求新系統的解決方法。需求分析階段的任務是確定軟件系統功能。3.1.1功能需求就本系統來說,本系統屬于BBS系統,而且結合了百度貼吧開放關鍵詞的設計模式,應該具備如下功能,現在按照游客與會員(登錄用戶)來介紹。游客:是指一些訪問本系統的時候沒有進行過登錄操作的用戶。游客只有查詢的權限,可以訪問本系統包含的所有貼吧,可以瀏覽某個貼吧的所有的帖子,但是游客沒有執行任何操作的權限,游客不能創建新的貼吧,不能發表新的帖子,不能回復已有的帖子。游客可以通過系統提供的注冊頁面來獲得系統承認的賬號,通過賬號登錄本系統,以獲得與會員一致的權限。會員:會員是本系統的核心用戶,他們參與在貼吧建設的方方面面。會員在擁有游客的所有權限的同時,還擁有更多與系統進行交互的權限。會員可以更新自己賬號的信息,可以創建暫不存在的貼吧,可以在任何貼吧發表新的帖子,可以回復任何已存在的帖子。會員們可以通過帖子進行交流,當有會員與你發生信息交互時,系統會給出相對應的通知,而會員也可以通過查看通知來獲得信息詳情。管理員用戶,即吧主,也是會員,是某一個貼吧的管理者,肩負著壯大該貼吧的責任。會員可以通過創建一個貼吧來成為該貼吧的吧主,擁有該貼吧的最高權限??梢孕薷脑撡N吧的信息,可以管理本吧的帖子。吧主僅僅在屬于其自己的貼吧才是吧主,到了別的貼吧,其權限就會變成普通會員。此外,吧主還擁有著游客和會員的所有權限。3.1.2性能需求本系統是BBS論壇系統,為了給用戶較好的體驗,需要本系統響應快速,所以在此對硬件及軟件做了需求分析。硬件環境:處理器:Inter酷睿i5或更高內存大小:4GB或更高硬盤空間:10GB或更高軟件環境:操作系統:Win7或更高服務器:Tomcat6.0或更高數據庫:OracleDatabase10G或更高3.2功能模塊畫功能模塊圖是軟件開發過程中的一個非常重要的環節,它將能夠顯示出軟件項目工程所要實現的各種功能,并且能夠分類,然后軟件工程師便能夠根據畫出來的功能模塊圖來編寫代碼實現具體的每一個功能。功能模塊圖就是將系統的功能進行分解,按功能從屬關系表示的圖表,具體如圖3-1所示:圖3-1貼吧系統用戶類型及對應功能概覽圖3.2.1基本功能通過需求分析,論壇的基本功能可以從眾多的需求中篩選出來。顧名思義,基本功能就是構成論壇系統的必要功能,具備這些功能的Web系統即是論壇。瀏覽帖子。用戶發表了新的帖子,其他用戶可以查看與回復,可以相互分享自己的經驗和想法。發表帖子。論壇就是為了相互討論話題而產生的,用戶發表帖子就是為了表達自己的看法與想法,能夠與他人進行討論,因此發帖功能是論壇系統最重要的功能。回復帖子。用戶可以瀏覽了他人發表的帖子,如果想要發表自己的看法,參與討論,那么用戶就就可以回復這個帖子??傮w來說,瀏覽帖子-發表帖子-回復帖子這三大最主要的功能周而復始的循環進行,這就構成了論壇。參與論壇活動的用戶,主要目的就是發表帖子,查看帖子,回復帖子,參與討論。這三大基本功能之間的相互關系如圖3-2所示:帖子列表發表帖子帖子列表發表帖子回復帖子瀏覽帖子回復帖子瀏覽帖子圖3-2貼吧系統基本功能相互關系圖3.2.2擴展功能除了基本功能之外,其他的論壇功能都是擴展功能。注冊登錄。用戶登錄系統之后,用戶信息被系統讀取到,用戶執行操作的時候,系統直接獲取這個信息,所以會員的權限比游客高。分板塊瀏覽帖子。其實不同的貼吧就是不同的板塊,在某一個主題為某關鍵詞的貼吧里只討論與該關鍵詞相關的話題。這樣,對某一關鍵詞感興趣的用戶就不會被其他帖子信息干擾,同時也有利于有著相同興趣的用戶相互間的討論,不容易跑題。查看用戶信息。每一個用戶可以查看所有用戶的信息。刪除帖子。如果用戶發表了的帖子不符合論壇規則,則管理員需要刪除這些帖子。置頂帖子。帖子是根據發表時間的倒序排列的,這樣先發的帖子就會慢慢地排到列表靠后的位置,如果管理員需要強調某個或某些帖子的重要性,就需要為其設置特殊的等級,將這些帖子排列在列表的最前端,不再按照發帖時間順序進行排列,但還是要保證其他普通帖子按照創建時間的順序進行排列。精華帖子。如果某個帖子的內容比較優秀,管理員可以為其可以打上精華標記,推薦給瀏覽帖子的用戶,用戶可以選擇只看精華帖。搜索帖子。隨著時間的推移,論壇中的帖子數量越來越多,用戶可能需要從大量的帖子中找到自己所需要的內帖子,這就引出了搜索帖子的功能。設置參數。論壇一般都有一些初始化信息,比如論壇的名稱,每頁可以顯示的帖子數量等參數信息,用戶可以在頁面的底部設置這些信息。查看通知信息。比如說管理員刪帖,刪帖后系統會提醒發帖用戶。查看回復信息。在用戶發帖或回帖之后,被其它用戶回帖,系統也會給出相應的提醒信息。查看提到情況。有時候別人發帖回特別提醒你一下(@用戶),系統也會做出相應的提醒。
4系統設計4.1數據庫表設計數據庫系統是在文件系統的基礎上發展而來的,經歷了層次數據庫、網狀數據庫、關系數據庫三個階段。由于關系數據庫采用人們比較容易理解和接受的二維表格來組織數據,發展迅速,已成為數據庫產品的主流。本次系統設計所使用的數據庫就是關系數據庫Oracle。Oracle數據庫管理系統是一項全面完整的數據庫與分析產品。Oracle容易學習、使用,介紹、學習資料比較多,Oracle全面支持Web功能的數據庫解決方案。與此同時,Oracle11g提供了高性能、伸展性、可用性和安全性,并能更方便地在低成本服務器和存儲設備組成的網絡上運行,相對過往版本而言,Oracle11g具有了于總不同的特性,這也是企業數據庫系統在激烈市場競爭中克敵制勝的關鍵所在。正是由于Oracle和其它的大型數據庫相比較,Oracle具有可靠的安全性、較快的存儲速度、高度的兼容性和可擴展性、數據的大量性、數據保存的持久性、數據的共享性、簡單易用等等一系列的特性。因此,我采用了Oracle11g作為后臺的數據庫。本系統的數據庫暫時包含了7張表,分別為TABLE_MEMBER,TABLE_LEVEL,TABLE_TIEBA,TABLE_TIEZI,TABLE_FLOOR,TABLE_MESSAGE,TABLE_REMIND。他們之間存在一些依賴或包含的關系,系統可以有很多貼吧,每個貼吧下可以有很多帖子,每個帖子下可以有很多層樓,每層樓又可以包含很多個信息。下面將對這幾張表作相應的介紹。4.1.1ER圖分析E-R模型是對現實世界的一種抽象。它的主要組成部分是實體、聯系和屬性。使用這三部分,我們可以建立許多不同應用環境的ER模型。在本系統中,對象的實體和屬性的定義如下:圖4-1會員信息實體圖圖4-2貼吧信息實體圖圖4-3帖子信息實體圖圖4-4樓層信息實體圖圖4-5信息信息實體圖圖4-6提心信息實體圖4.1.2數據庫表設計TABLE_MEMBER會員表TABLE_MEMBER表是系統用來記錄注冊用戶信息的表,表中定義了用戶對象所具有的各種屬性,以及相對應的具體數據。在該表中,字段id_member是主鍵,是由用戶注冊的時間得來的長度為17的數字。具體信息如“表4-1TABLE_MEMBER”所示:表4-1TABLE_MEMBER會員表字段名類型說明id_memberNUMBER(17)主鍵,會員id,根據注冊時間得到的17位數字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)經驗值roleNUMBER(1)角色,1.普通會員0.吧主,會員在每個吧的角色都不同,進入貼吧會自動更新statusNUMBER(1)狀態,1.正常2.加黑3.封禁(有專門的加黑表,封禁表),會員在每個吧的這些狀態不同,進入貼吧會自動更新關鍵建表語句CONSTRAINTpk_member_1PRIMARYKEY(id_member)TABLE_TIEBA貼吧表TABLE_TIEBA表是系統用來記錄創建貼吧信息的表,表中定義了貼吧對象所具有的各種屬性,以及相對應的具體數據。在該表中,字段id_tieba是主鍵,是由創建貼吧的時間得來的長度為17的數字,字段id_member就是創建該吧的用戶,也就是該吧的吧主,外鍵引用了TABLE_MEMBER表的id_member。具體信息如“表4-2TABLE_TIEBA”所示:表4-2TABLE_TIEBA貼吧表字段名類型說明id_tiebaNUMBER(17)主鍵,貼吧id,根據創建時間得到的17位數字id_memberNUMBER(17)外鍵,吧主id,根據注冊時間得到的17位數字nameVARCHAR2(30)貼吧名稱signatureVARCHAR2(150)貼吧簽名statusNUMBER(1)狀態,1可視0不可視關鍵建表語句CONSTRAINTpk_tieba_1PRIMARYKEY(id_tieba),CONSTRAINTfk_tieba_2FOREIGNKEY(id_member)REFERENCEStable_member(id_member)TABLE_TIEZI帖子表TABLE_TIEZI表是系統用來記錄創建帖子信息的表,表中定義了帖子對象所具有的各種屬性,以及相對應的具體數據。在該表中,字段id_tieba和id_tiezi構成了聯合主鍵,分別由創建貼吧的時間和發表帖子的時間得來的長度為17的數字,字段id_member就是發表該貼的用戶,也就是該貼的樓主,外鍵引用了TABLE_MEMBER表的id_member。具體信息如“表4-3TABLE_TIEZI”所示:表4-3TABLE_TIEZI帖子表字段名類型說明id_tiebaNUMBER(17)主鍵,外鍵,貼吧id,根據創建時間得到的17位數字id_tieziNUMBER(17)主鍵,帖子id,根據發帖時間得到的17位數字id_memberNUMBER(17)外鍵,會員id,根據注冊時間得到的17位數字name_memberVARCHAR2(20)會員用戶名,發帖用戶statusNUMBER(1)狀態,1可視0不可視titleVARCHAR2(150)帖子標題關鍵建表語句 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表是系統用來記錄創建樓層信息的表,表中定義了樓層對象所具有的各種屬性,以及相對應的具體數據。在該表中,字段id_tieba、id_tiezi和id_floor構成了聯合主鍵,分別由創建貼吧的時間、發表帖子的時間和發表樓層的時間得來的長度為17的數字,字段id_member就是發表該層的用戶,也就是該層的層主,外鍵引用了TABLE_MEMBER表的id_member。具體信息如“表4-4TABLE_FLOOR”所示:表4-4TABLE_FLOOR樓層表字段名類型說明id_tiebaNUMBER(17)主鍵,外鍵,貼吧id,根據創建時間得到的17位數字id_tieziNUMBER(17)主鍵,外鍵,帖子id,根據發帖時間得到的17位數字id_floorNUMBER(17)主鍵,樓層id,根據發帖時間得到的17位數字id_memberNUMBER(17)外鍵,會員id,根據注冊時間得到的17位數字name_memberVARCHAR2(20)會員用戶名,發樓用戶statusNUMBER(1)狀態,1可視0不可視關鍵建表語句 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表是系統用來記錄創建信息的表,表中定義了信息對象所具有的各種屬性,以及相對應的具體數據。在該表中,字段id_tieba、id_tiezi、id_floor和id_message構成了聯合主鍵,分別由創建貼吧的時間、發表帖子的時間、發表樓層的時間和發表消息的時間得來的長度為17的數字,字段id_from就是發表該信息的用戶,字段id_to就是信息目標(該信息的接受者),外鍵引用了TABLE_MEMBER表的id_member。具體信息如“表4-5TABLE_MESSAGE”所示:表4-5TABLE_MESSAGE信息表字段名類型說明id_tiebaNUMBER(17)主鍵,外鍵,貼吧id,根據創建時間得到的17位數字id_tieziNUMBER(17)主鍵,外鍵,帖子id,根據發帖時間得到的17位數字id_floorNUMBER(17)主鍵,外鍵,樓層id,根據發帖時間得到的17位數字id_messageNUMBER(17)主鍵,樓層id,根據發帖時間得到的17位數字id_fromNUMBER(17)外鍵,會員id,根據注冊時間得到的17位數字name_fromVARCHAR2(20)會員用戶名,信息發送人id_toNUMBER(17)外鍵,會員id,根據注冊時間得到的17位數字name_toVARCHAR2(20)會員用戶名,信息接收人statusNUMBER(1)狀態,1可視0不可視contentVARCHAR2(3000)信息內容關鍵建表語句 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表是系統用來記錄創建提醒信息的表,表中定義了提醒對象所具有的各種屬性,以及相對應的具體數據。在該表中,字段id_remind是主鍵,是創建提醒的時間得來的長度為17的數字,字段kind就是提醒的類型,可以為系統通知、用戶回復和用戶提到。具體信息如“表4-5TABLE_MESSAGE”所示:表4-6TABLE_REMIND提醒表字段名類型說明kindNUMBER(1)提醒類型,1.通知2.回復3.提到id_remindNUMBER(17)主鍵,提醒id,根據創建時間得到的17位數字id_tiebaNUMBER(17)貼吧id,根據創建時間得到的17位數字nameVARCHAR2(30)貼吧名稱id_tieziNUMBER(17)帖子id,根據發帖時間得到的17位數字tieleVARCHAR2(150)帖子標題id_floorNUMBER(17)樓層id,根據發帖時間得到的17位數字id_messageNUMBER(17)信息id,根據創建時間得到的17位數字id_fromNUMBER(17)外鍵,會員id,根據注冊時間得到的17位數字name_formVARCHAR2(20)會員用戶名,提醒發送人id_toNUMBER(17)外鍵,會員id,根據注冊時間得到的17位數字name_toVARCHAR2(20)會員用戶名,提醒接收人statusNUMBER(1)狀態,1.未讀0.已讀contentVARCHAR2(3000)提醒內容關鍵建表語句 CONSTRAINTpk_remind_12PRIMARYKEY(kind,id_remind)4.2功能設計4.2.1登錄注冊登錄與注冊功能幾乎是WEB項目里不可或缺的存在,當然本論壇系統也不例外。在本系統里,登錄注冊模塊完全獨立了出來,單獨設置成了一個JSP頁面,在其他所有頁面里面調用該頁面即可。系統會根據不同情況在session里面設置不同的參數以及相對應的數據,而本JSP頁面則會根據參數是否為空來選擇不同的顯示方式。而且本JSP頁面采用浮動技術,會一直固定在頁面的最頂部,不會隨著頁面的滾動而移動。本JSP頁面會顯示貼吧名稱以及貼吧簽名信息,同時還兼具用戶登錄與注冊功能。其通過JQuery與Ajax來做登錄驗證。登錄成功后,會重新加載頁面,這樣很多游客不具備的權限都會隨著用戶的登錄而變得可視或可操作。用戶點擊了注冊按鈕,系統會跳轉到注冊頁面,用戶只需要填寫最關鍵的賬號,密碼,手機,郵箱,通過合法性驗證,即可完成注冊,其他信息可以在注冊之后完善,賬號一經注冊不能修改。同時還會顯示未讀提醒的數量,點擊之后會跳轉到查看提醒頁面,這個在下面的查看提醒信息里會介紹到。4.2.2查看貼吧列表系統會將已存在的貼吧顯示在貼吧首頁,用戶可以通過點擊每一個貼吧的“進入貼吧”按鈕來跳轉到對應貼吧的貼吧主頁,也可以通過點擊“查看貼吧信息”或“查看吧主信息”來查看用戶感興趣的信息。所有的貼吧按照創建時間從早到晚的順序排列,創建的越早則顯示的位置越靠前。用戶也可以通過在貼吧搜索框里面輸入貼吧名稱的關鍵字(關鍵字可以有多個,中間使用空格來區分),來查找相應的貼吧,系統會把滿足搜索條件的貼吧全都列出來,顯示在貼吧列表之前,便于用戶查看。若是用戶沒有找到自己想要找的貼吧,也可以通過點擊“創建貼吧”按鈕來創建一個新的貼吧。如果貼吧創建成功,那么該用戶就會成為這個貼吧的吧主,擁有本吧里的最高權限,但是在其他非吧主的貼吧里,該用戶仍然只是普通會員,受該吧吧主的管制。4.2.3查看帖子列表用戶通過點擊“進入貼吧”按鈕,跳轉到某一個貼吧的首頁,該吧的所有的可視的帖子,都會被系統檢索到,然后顯示到這里。帖子的顯示分兩種,一種是置頂帖,一種是普通帖。置頂帖會優先顯示到列表最頂端。兩種類型的帖子都會按照時間順序,較新的帖子會顯示在靠前的位置。游客與會員的功能第一次顯現差別,在這里登錄用戶可以直接發表新的帖子,可以刪除自己發的帖子,但是游客則沒有這樣的權限,必須得通過登錄系統才可以。4.2.4查看帖子詳情用戶通過點擊帖子列表頁面的任何一個帖子標題,即可進入查看該帖子的詳情。同樣,所有可視的信息都會被系統讀取到,然后顯示出來。在這里游客與登錄用戶的區別再一次體現了出來,游客只能瀏覽而不能回復,登錄用戶可以發表一個新的樓層,也可以在某個已有樓層下回復某一個用戶,也可以只回復層主,回復的樓層會顯示在當前帖子的最末樓,回復的信息會顯示在某一樓的最末信息位置。在這里,系統會根據登錄用戶與帖子的關系以及登錄用戶的權限來顯示不同的操作權限。首先是大前提,用戶不能回復自己,如果信息是樓層的第一條信息,那么不能刪除該信息,而只能刪除該樓層。其次是小限制,吧主擁有大前提下的最高權限,用戶(樓主)在自己發的貼子里擁有與吧主一致的權限,用戶(層主)在自己發的樓層里擁有與吧主一致的權限。用戶(發信息者)只對自己發的信息擁有與吧主一致的權限。4.2.5查看提醒信息提醒信息總共分為三種類型,通知提醒,回復提醒,提到提醒。通知提醒包括有管理員刪帖,管理員置頂帖,管理員精華帖等?;貜吞嵝丫褪怯袆e人對你的發言進行了回復后系統發給你的提醒,提到提醒就是別人發帖或回帖是特地@到你后體統發給你的提醒。在本系統中,提醒模塊所包含的內容有:系統通知,回復我的,提到我的,我回復的,我提到的共5部分。
5系統實現5.1功能實現1.本系統的前臺JSP頁面使用如下代碼重新設定了相對路徑。<%Stringpath=request.getContextPath(); StringbasePath=request.getScheme()+"://"+ request.getServerName()+":"+request.getServerPort()+path+"/";%><basehref="<%=basePath%>">這樣把相對位置設置成了basePath,完美解決了相對位置發生改變導致頁面找不到的問題。2.本系統的服務器使用了80端口,并配置了如下信息重新設置了訪問地址。<ContextdocBase="Graduation"path=""reloadable="true" source="org.eclipse.jst.jee.server:Graduation"/>這樣只需要一個域名或IP地址就可以訪問到本項目了,不需要加端口號和項目名,設計比較人性化,測試也較為方便。5.1.1登錄注冊登錄:圖5-1未登錄狀態下位置為首頁的頭文件圖5-2未登錄狀態下進入貼吧后的頭文件圖5-3已登錄狀態下進入貼吧后的頭文件圖5-4已登錄狀態下進入貼吧后的頭文件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("該用戶名已經被注冊"); } if(dao.findMemberByPhone(member.getPhone())!=null){ thrownewException("該手機號碼已經被注冊"); } if(dao.findMemberByEmail(member.getEmail().toUpperCase())!=null){ thrownewException("該郵箱已經被注冊"); } 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系統首頁圖5-9系統首頁-搜索圖5-10創建貼吧圖5-11查看貼吧信息圖5-12修改貼吧信息 Controller_Tieba.java @RequestMapping(value={"","/"},method=RequestMethod.GET) publicStringlist(Modelmodel,HttpSessionsession)throwsException{ Tiebatieba=newTieba("十度貼吧","全球最大的中文社區",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發表了一個新的帖子圖5-15多個用戶發表了多個帖子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用戶發表了信息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查看系統提醒圖5-18查看系統提醒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系統不足由于本人技術水平有限以及時間不足的原因,系統現在暫時還沒有圖片上傳功能,在圖片方面,我的設計初衷就是用戶注冊以及貼吧創建的時候,必須同時上傳一張圖片作為用戶頭像和貼吧Logo,還有用戶發帖子的時候也可以上傳圖片,這個功能在接下來的時間里我還是會集成到現有系統里面去的。還有一點,就是分頁設計功能,目前還處于研發之中。現在已經在測試項目里面實現了這個功能,但是代碼比較分散,JSP頁面里面有,后臺Servlet里面也有,想要往本系統里面集成實在是不易。所以我將會在后續的修改中,繼續加油,盡量把分頁功能整合一下。一次實現,多次調用。把本系統里面涉及到分頁功能的地方,全部替換掉。
6系統測試軟件測試(SoftwareTesting),描述一種用來促進鑒定軟件的完整性、安全性、正確性和質量的過程??傊?,軟件測試是一種預期輸出與實際輸出之間的對比或者審核的過程。軟件測試的最經典的定義是:在事先規定的條件下對程序進行指定操作,用以發現程序的錯
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030購物中心行業競爭格局分析及投資前景與戰略規劃研究報告
- 2025-2030裝運箱行業競爭格局分析及投資前景與戰略規劃研究報告
- 2025-2030血壓監測儀行業市場現狀供需分析及投資評估規劃分析研究報告
- 2025-2030營養品產業政府戰略管理與區域發展戰略研究咨詢報告
- 2025-2030草本植物飲料產業發展分析及發展趨勢與投資前景預測報告
- 突破重點2025年計算機二級考試試題及答案
- 藥劑藥物代謝研究試題及答案
- 西醫臨床考試主流內容與試題及答案
- 高二語文競賽試題及答案
- 熱電保安考試題及答案
- 完整解讀2024年關于加強社區工作者隊伍建設的意見內容課件
- 石子的檢驗報告
- 淺談抖音短視頻對大學生的影響
- 吉林交通職業技術學院單招職業技能測試參考試題庫(含答案)
- 家長有遠見孩子有格局
- 《第七課沈從文:逆境也是生活的恩賜》課件(黑龍江縣級優課)
- 產品開發與產品生命周期管理
- 海洋環境監測概述課件
- JGT266-2011 泡沫混凝土標準規范
- 平安壽險退保 申請書
- 臨時用電申請審批表
評論
0/150
提交評論