版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
湖南科技大學畢業(yè)設(shè)計(論文)題目科大開源平臺設(shè)計與實現(xiàn)作者學院計算機科學與工程學院專業(yè)學號指導教師二〇一五年六月五日湖南科技大學畢業(yè)設(shè)計(論文)任務書計算機科學與工程院網(wǎng)絡工程系(教研室)系(教研室)主任:(簽名)年月日學生姓名:學號:專業(yè):網(wǎng)絡工程1設(shè)計(論文)題目及專題:科大開源平臺設(shè)計與實現(xiàn)2學生設(shè)計(論文)時間:自2014年12月31日開始至2015年5月31日止3設(shè)計(論文)所用資源和參考資料:[1]徐建波.JavaWeb應用開發(fā)原理與技術(shù)[M].湖南,國防科技大學出版社,2010:20-150.[2]JhonResig.精通JavaScript[M].北京,人民郵電出版社,2007:2-200.[3]RogerS.Pressman.軟件工程實踐者的研究方法[M].北京,機械工業(yè)出版社,2011:9-78.[4]李剛.輕量級J2EE企業(yè)實戰(zhàn)[M].北京,電子工業(yè)出版社,2006:25-96.[5]孫衛(wèi)琴.精通Struts[M].北京,電子工業(yè)出版社,2004:18-120.[6]孫衛(wèi)琴.精通Hibernate[M].北京,電子工業(yè)出版社,2005:5-128.4設(shè)計(論文)應完成的主要內(nèi)容:(1)普通用戶登錄注冊模塊。(2)普通用戶對資源上傳、下載、查看、評論、搜索。(3)普通用戶參加競賽、發(fā)表作品、對作品投票、評論作品。(4)管理員對用戶的管理。(5)管理員對資源的管理。(6)管理員對競賽管理。(7)管理員對系統(tǒng)公告的管理。5提交設(shè)計(論文)形式(設(shè)計說明與圖紙或論文等)及要求將論文紙質(zhì)版、電子版、軟件源碼與說明文檔刻成光盤提交6發(fā)題時間:2014年12月31日指導教師:(簽名)學生:(簽名)湖南科技大學畢業(yè)設(shè)計(論文)指導人評語指導人:(簽名)年月日指導人評定成績:湖南科技大學畢業(yè)設(shè)計(論文)評閱人評語評閱人:(簽名)年月日評閱人評定成績:湖南科技大學畢業(yè)設(shè)計(論文)答辯記錄日期:2015.06.02學生:學號:班級:題目:科大開源平臺設(shè)計與實現(xiàn)提交畢業(yè)設(shè)計(論文)答辯委員會下列材料:1設(shè)計(論文)說明書 共 38 頁2設(shè)計(論文)圖紙 共 0 頁3指導人、評閱人評語 共 3 頁畢業(yè)設(shè)計(論文)答辯委員會評語:答辯委員會主任:(簽名)委員:(簽名)(簽名)(簽名)(簽名)答辯成績:總評成績:-39-第一章緒論1.1研究背景及意義開源(OpenSource,開放源碼)被非盈利性軟件組織注冊為認證標記,并對其進行了正式的定義,用于描述那些源碼可以被公眾使用的軟件,并且此軟件的使用、修改和發(fā)行也不受許可證的限制。開源的好處是有很多的,軟件更具有安全性,軟件開放,每個人都能為你的軟件添磚加瓦,由于軟件開源,可以及早發(fā)現(xiàn)某個bug。此次課題研究的對象并不是主要針對如何寫一個開源軟件,相信大家都有用過Github這個網(wǎng)站。Github是一個開源代碼庫以及版本控制系統(tǒng),擁有140多萬開發(fā)者用戶,它還提供了一個Web界面,用于顯示軟件的結(jié)構(gòu)以及源碼。而國內(nèi),比如CSDN論壇,開源中國社區(qū),最代碼等網(wǎng)站起到了分享源碼,推廣源碼的作用。jQuery是一個優(yōu)秀的JavaScript類庫,此軟件目前開源,作者是著名的JohnResig,這個類庫吸引了全世界著名JavaScript程序員的參與編寫,讓這個類庫更加完善。一個好的開源軟件能吸引很多優(yōu)秀的程序員的。而我們?nèi)绻麚碛斜姸嗟某绦蛟创a,但是如何才能統(tǒng)一的管理這些源碼,讓這些源碼被眾多的人群所得到呢?科大開源平臺就是這樣一個平臺,這個系統(tǒng)主要模仿的是最代碼這個網(wǎng)站,主要功能是分享代碼以及一個競賽模塊。競賽模塊就是發(fā)布各種競賽,用戶可以上傳自己的作品??拼箝_源平臺是一個優(yōu)秀的資源分享平臺,自帶競賽模塊,致力于提高本校學生的整體編程能力,促進學生之間的交流,讓更多的編程愛好者學習到更多的知識。國內(nèi)的某些資源分享平臺比如CSDN,開源中國,ITEYE論壇,最代碼網(wǎng)站等都有資源分享下載的功能,這些平臺的共同特點是提供了一個資源共享的平臺,用戶隨時可以去這個平臺上拿自己想要的資源,這樣有利于各個程序員之間的相互學習相互交流。國外的網(wǎng)站比如Github這個代碼管理平臺,也有實現(xiàn)資源分享下載的功能,當然這個網(wǎng)站是做的非常好的。我們手里的好的資源需要共享在互聯(lián)網(wǎng)上。為了促進學生之間的相互學習和交流,方便學生獲取學習資源,我們學校急需一個平臺來實現(xiàn)這一需求,科大開源平臺正好解決了這個問題,這個平臺能實現(xiàn)基本的資源上傳下載,并且不需要積分,這個平臺的出現(xiàn),極大方便了學生獲取相關(guān)資源,促進了學生之間的交流,另外這個平臺附帶競賽模塊,豐富學生的課余生活。1.2論文主要研究內(nèi)容科大開源平臺是一個基于SSH(Struts2.0+Spring2.5+Hibernate3.0)框架制作而成的Web系統(tǒng)。該系統(tǒng)主要由兩大模塊組成,分別是資源模塊和競賽模塊,另外還有系統(tǒng)公告模塊,用戶模塊。因此本文研究的主要內(nèi)容是:(1)普通用戶登錄注冊模塊。(2)普通用戶對資源上傳、下載、查看、評論、搜索。(3)普通用戶參加競賽、發(fā)表作品、對作品投票、評論作品。(4)管理員對用戶的管理。(5)管理員對資源的管理。(6)管理員對競賽管理。(7)管理員對系統(tǒng)公告的管理。1.3論文研究需要解決的問題本系統(tǒng)所需解決的主要問題有:如何搭建Java的SSH(Struts2.0+Spring2.5+Hibernate3.0)框架。如何實現(xiàn)文件的上傳下載功能。調(diào)用富文本編輯器CKeditor?;趈Query框架實現(xiàn)Ajax異步刷新技術(shù)。數(shù)據(jù)分頁技術(shù)的實現(xiàn)。Java實現(xiàn)郵件發(fā)送技術(shù)。JavaScript實現(xiàn)的預覽圖片。投票功能的實現(xiàn)。1.4論文的組織結(jié)構(gòu)本文的組織結(jié)構(gòu)如下:第一章分析了研究目的以及意義,然后確定研究問題。第二章介紹了該系統(tǒng)的相關(guān)知識。第三章對系統(tǒng)的各個功能模塊做了詳細的需求分析并給出了活動圖。第四章通過系統(tǒng)運行環(huán)境分析、數(shù)據(jù)庫設(shè)計的分析、類圖的分析、接口設(shè)計對系統(tǒng)進行了詳細的概要設(shè)計。第五章給出了系統(tǒng)整體框架,分析了程序結(jié)構(gòu),對各個頁面進行了分析,給出了實體類分析,數(shù)據(jù)庫操作分析,對系統(tǒng)進行了詳細的設(shè)計。第六章給出了每個功能模塊的實現(xiàn)效果。1.5本章小結(jié)本章主要先明確研究背景,然后再由研究意義和研究價值來確定研究的內(nèi)容,再根據(jù)研究的內(nèi)容提出要解決的問題,最后對本文的組織結(jié)構(gòu)進行了詳細的描述。第二章相關(guān)知識介紹該系統(tǒng)運行在Window7.0操作系統(tǒng)下,Web容器采用Tomcat7.0,數(shù)據(jù)庫采用MySQL5.6,前端有用到DIV+CSS布局,框架有用到jQuery框架,CKeditor框架,后臺語言采用Java語言,并且應用了SSH框架,Java服務端語言JSP。本章將對該系統(tǒng)運用到的這些相關(guān)知識進行詳細的介紹。2.1前端技術(shù)2.1.1DIV+CSS布局DIV+CSS布局是網(wǎng)頁設(shè)計中的一種標準,DIV是HTML語言中的一個標簽,是一個塊標簽,CSS是層疊樣式表,是英文單詞CascadingStyleSheets的縮寫。一般在網(wǎng)頁中都會引入相關(guān)的CSS文件來美化頁面,目前CSS的最新版本為CSS3.0。本系統(tǒng)前端界面用HTML語言編寫,采用的是目前比較流行的DIV+CSS布局。跟table布局相比,DIV+CSS布局有下面的優(yōu)勢:編寫更加簡單,開發(fā)效率快。如果需要更換網(wǎng)站的風格,不需要在HTML頁面中一一改變樣式,只需要改動該頁面引入的相關(guān)CSS文件就行,實現(xiàn)了樣式與頁面的分離。因為能提高系統(tǒng)的訪問速度,所以能給用戶帶來舒適的體驗。采用DIV+CSS布局的最大的特點是更容易被百度等搜索引擎收錄。代碼簡潔,有利于開發(fā)人員進行維護。2.1.2jQuery框架jQuery框架是由美國人JhonResig創(chuàng)作的一個優(yōu)秀的JavaScript框架。jQuery秉承了它的設(shè)計理念寫的更少,做的更多。它可以使用鏈式代碼,來實現(xiàn)頁面的動畫效果、彈出層效果、選擇dom元素等。目前世界流行的大部分網(wǎng)站中都有采用jQuery這個框架,這個框架的簡便性與方便性是不言而喻的,用戶JavaScript代碼的撰寫變得更簡潔,且不需要考慮兼容性問題,另外jQuery還封裝了Ajax技術(shù),在本系統(tǒng)中有大量用到這個技術(shù)。jQuery框架支持插件的機制,當jQuery庫提供的系統(tǒng)函數(shù)不能滿足用戶當前的需求的時候,用戶可以自己來寫一些插件來滿足自己當前的需求。采用jQuery框架,能帶來的好處是:實現(xiàn)了JavaScript代碼和HTML代碼分離,使程序看起來更加簡潔。實現(xiàn)了快速查找頁面HTML元素。jQuery代碼采用鏈式編程,是程序更加容易理解,便于程序員進行維護。jQuery代碼兼容多種瀏覽器,避免了程序瀏覽器的不兼容性。jQuery的幫助文檔詳細,能找到很多實例程序,便于學習。本系統(tǒng)采用jQuery框架,主要用于一些表單驗證,Ajax實現(xiàn)異步刷新,某些元素的快速查找等。2.1.3CKeditor框架CKeditor是當前優(yōu)秀的網(wǎng)頁編輯器,CKeditor原來是叫做FCKeditor,在2009年的時候,改名為CKeditor,它是一個優(yōu)秀的可見即可得的富文本編輯器,它采用JavaScript語言編寫,是一個開源軟件。國內(nèi)許多Web項目都有使用這個框架。使用了該框架之后,對于網(wǎng)頁的文字編輯就變得像用戶在編輯WORD文檔一樣那么豐富,同時該框架還支持圖片上傳功能。本系統(tǒng)個頁面采用到這個框架。該框架的特點有:功能強大,使用起來及其方便,是一個開源軟件。容易配置、跨瀏覽器(兼容IE瀏覽器,F(xiàn)ireFox瀏覽器,Google瀏覽器)。支持ASP、Java、PHP、ASP.NET等多種編程語言。有詳細的API文檔。界面簡潔,給用戶帶來很好的體驗。2.2后端技術(shù)2.2.1JavaJava語言是一種完全面向?qū)ο蟮恼Z言,它的編程風格跟C和C++特別相似,但是Java語言并沒有C和C++語言復雜的指針,而是采用了引用來取代。另外Java語言的類不支持多重繼承,但是它引入了接口來實現(xiàn)這一功能。Java開發(fā)者分為3個方向,J2SE是做Windows應用程序的,但是由于Java語言做的Windows應用程序界面不美觀,比不上微軟的開發(fā)語言做起來簡單,一般很少有人用Java語言開發(fā)桌面應用程序。J2ME是做像手機一樣的可移動設(shè)備方面開發(fā)的,J2EE是做網(wǎng)頁編程方面的,在J2EE上擁有許多框架,由于Java語言的跨平臺特性,所以Java語言在網(wǎng)站開發(fā)方面具有很大的優(yōu)勢。本系統(tǒng)后臺采用的Java語言。為何采用Java語言,因為其具有如下特點:語言簡單,容易理解。完全面向?qū)ο?。Java是編譯成字節(jié)碼,具有跨平臺的特性,無論是在linux操作系統(tǒng)上還是在Windows操作系統(tǒng)上都可以運行。自帶垃圾回收機制,及時清理內(nèi)存。具有異常處理機制,使程序更加穩(wěn)定。2.2.2Struts2.0+Spring2.5+Hibernate3.0Struts2.0+Spring2.5+Hibernate3.0簡稱SSH框架,后面的數(shù)字是每個框架的版本號。這個框架是基于Java平臺的,致力于更加方便的開發(fā)網(wǎng)站應用程序。下面將逐一介紹這三個框架。Struts是一個在Java語言上面實現(xiàn)的MVC框架,主要分為模型、視圖、控制器三部分。通過配置Struts.xml文件,來實現(xiàn)對視圖及表現(xiàn)層的控制。如果我們想減少運用MVC框架來開發(fā)網(wǎng)站應用的時間,可以使用Struts框架。Strtus是Apache基金會的一個開源項目,它也是面向?qū)ο蟮模琒truts會對用戶的沒一個請求都對應一個Action,這個Action是一個類,里面可以寫很多方法,每個方法會返回一個字符串,這個字符串對應了配置文件中的某個字段,通過這個配置文件再來控制程序跳轉(zhuǎn)到那個頁面。Strtus中還引入了Taglib標簽庫,除了使用JSP自帶的標簽庫外,還可以是用Struts自帶的標簽庫。Spring是一個輕量級Java開源框架,Spring對類統(tǒng)一的初始化在一個容器里面,實現(xiàn)對類的管理。這個框架的特點是分層架構(gòu),這個架構(gòu)指揮程序使用哪個組件。Spring采用了面向切面編程(AOP)。面向切面編程是Spring的核心思想,比如在一個程序中,你需要在兩個邏輯之間,加上另外一個邏輯,這就是面向切面編程,Spring恰好做到了這點,運用這一個理念,讓程序的運行更加健壯。Spring的作用是用來整合其他框架,對其他框架進行一個統(tǒng)一的管理,并且對程序中的類和資源進行統(tǒng)一的初始化,它有一個容器,可以對這些資源進行管理,在Spring框架中可以配置數(shù)據(jù)源、數(shù)據(jù)庫連接池的配置、JavaBean的配置等。另外Spring也實現(xiàn)了MVC框架,使用Spring能帶來以下的好處:方便解耦,可以簡化程序的開發(fā)??梢院芊奖愕膶崿F(xiàn)AOP編程??梢院芊奖愕膶Y源進行統(tǒng)一的管理。方便程序的測試和開發(fā)人員的維護。Hibernate是對象關(guān)系映射框架,這個框架對JDBC操作進行了封裝。將數(shù)據(jù)庫的處理都封裝成對象的思維。使用者操作數(shù)據(jù)庫可以運用對象的思維進行操作。Hibernate框架的出現(xiàn),簡化了傳統(tǒng)JDBC程序帶來的繁瑣的代碼編寫,它和Spring框架整合之后,更能顯示出其強大的功能。Hibernate框架擁有延遲加載的特性,采用映射實體類的方式,根據(jù)設(shè)計的實體類來創(chuàng)建相應的數(shù)據(jù)庫表格,使用起來及其方便。Hibernate框架不僅可以用在客戶端程序中,還可以用在網(wǎng)頁程序中,它的作用是實現(xiàn)了數(shù)據(jù)庫的持久化。使用Hibernate框架能帶來的好處有:支持多種數(shù)據(jù)庫,只需要改變配置文件即可。封裝了JDBC的操作,簡化了代碼的編寫。采用面向?qū)ο蟮乃季S,使程序更加容易理解。將這三個框架整合起來,能方便程序的編寫,對數(shù)據(jù)進行持久化,實現(xiàn)了MVC的分層思想。2.2.3JSPJSP全名為JavaServerPages。它是在傳統(tǒng)的HTML頁面中加入Java語法,它的本質(zhì)其實是一個Servlet,當Tomcat容器對JSP文件進行編譯之后,會在相應的目錄生成一個Java文件,這個文件就是Servlet文件。使用JSP開發(fā)的Web程序是跨平臺的,因為Java語言是跨平臺的。JSP里自帶了很多標簽。它是在服務器端執(zhí)行的語言,一般是在Tomcat服務器中,經(jīng)過服務器的編譯,返回給用戶的是一些HTML代碼。JSP內(nèi)置了九大對象request、response、session、application、out、page、config、exception、pageContext。JSP是基于Java技術(shù)的,也是完全面向?qū)ο蟮?,具有跨平臺特性。它是一種動態(tài)語言技術(shù),用于制作動態(tài)網(wǎng)頁。JSP編寫簡單,使用方便,具有跨平臺特性,運行速度快。2.3Ajax技術(shù)Ajax即AsynchronousJavaScriptAndXml,異步JavaScript和xml,指在不刷新本頁面url的情況下與后端進行通信,對網(wǎng)頁的某個部分進行更新。Ajax不是一種新的編程語言,而是一種交互性更強的Web技術(shù)。比如當注冊用戶,在文本框中輸入一個用戶名的時候,當你鼠標移開文本框,會采用Ajax技術(shù),與后端異步通信,檢測用戶名是否存在,這是不能刷新整個頁面的。運用了這種技術(shù)之后,會使整個網(wǎng)頁的體驗度更好,速度更快。jQuery框架中有對Ajax技術(shù)的封裝,你只需要使用幾行代碼便可以調(diào)用這個技術(shù)。Ajax技術(shù)應用在很多方面,能提高網(wǎng)頁的交互性,使網(wǎng)頁功能更加友好。Ajax技術(shù)具有以下幾個優(yōu)點:使操作更加方便。加快和服務器之間的通信速度。實現(xiàn)局部刷新。2.4開發(fā)工具2.4.1Sublimetext2.0Sublimetext2.0是一款開源代碼編寫軟件,其獨特的代碼提示功能,代碼高亮風格,插件安裝機制,使得開發(fā)人員一使用這個軟件就會愛上它,本系統(tǒng)采用該軟件來編寫前端界面,及其方便。2.4.2Myeclipse10.0Myeclipse10.0是對eclipse軟件的集成,這個軟件集成了很多插件,使用起來特別方便。主要用于J2EE的開發(fā),本系統(tǒng)后端Java代碼的編寫都是采用這個軟件來編寫的。2.5本章小結(jié)本章系統(tǒng)的介紹了科大開源平臺系統(tǒng)所使用的前端技術(shù),后端技術(shù),開發(fā)工具,Ajax技術(shù),SSH框架,jQuery框架,Ckeditor框架等做了詳細介紹。第三章系統(tǒng)需求分析需求分析是軟件開發(fā)的基礎(chǔ),需求分析的目的是明確好軟件需要實現(xiàn)什么功能,只有將需求分析做好了,才能開始制作一個軟件。需求分析就像一個目標一樣,指引著軟件開發(fā)者前行。經(jīng)過詳細的思考,科大開源平臺要實現(xiàn)這些功能:對于普通用戶:用戶注冊、用戶登錄、修改密碼、上傳頭像、資源上傳、資源下載、參見競賽、發(fā)表競賽作品、對作品投票、評論、搜索資源。對于管理員:資源的管理(包括對資源的審核、修改、刪除、語言管理、標簽管理),競賽管理(發(fā)起競賽,正在進行競賽,已經(jīng)結(jié)束競賽),系統(tǒng)公告,留言管理。3.1用戶注冊需求分析功能:實現(xiàn)普通用戶的基本注冊功能。說明:游客填寫完注冊信息,提交信息時檢測信息是否有效,如果信息正確則發(fā)送郵件提醒用戶激活,完成注冊。否則,提示注冊失敗。其活動圖如下圖3.1所示:圖3.1用戶注冊活動圖3.2用戶登錄需求分析功能:實現(xiàn)普通用戶的基本登錄功能。說明:用戶輸入信息,如果用戶名密碼錯誤,提示登錄失敗,如果三次登錄失敗,給出提示找回密碼鏈接。其活動圖如下圖3.2所示:圖3.2用戶登錄活動圖3.3資源上傳需求分析功能:實現(xiàn)普通用戶的上傳資源至服務器的功能。說明:用戶填寫資源標題,資源描述,資源分類等信息,選擇文件并且上傳至服務器如果用戶沒有的登錄,提醒用戶登錄。其活動圖如下圖3.3所示:圖3.3資源上傳活動圖3.4資源下載需求分析功能:實現(xiàn)普通用戶的下載資源的功能。說明:用戶選定某資源,發(fā)送下載請求,下載這個資源。其活動圖如下圖3.4所示:圖3.4資源下載活動圖3.5資源搜索需求分析功能:實現(xiàn)普通用戶對資源進行搜索的功能。說明:用戶輸入關(guān)鍵字,點擊搜索按鈕,根據(jù)關(guān)鍵字搜索出相關(guān)資源。其活動圖如下圖3.5所示:圖3.5資源搜索活動圖3.6資源管理需求分析功能:實現(xiàn)管理員用戶對資源管理的功能。說明:管理員對普通用戶上傳的資源進行管理,包括刪除資源、編輯資源、審核資源。其活動圖如下圖3.6所示:圖3.6資源管理活動圖3.7參加競賽需求分析功能:實現(xiàn)普通用戶參加競賽的功能。說明:實現(xiàn)普通用戶參加競賽,并且上傳相關(guān)作品到這個競賽目錄下面的功能。其活動圖如下圖3.7所示:圖3.7參加競賽活動圖3.8競賽管理需求分析功能:實現(xiàn)管理員對競賽的管理功能。說明:管理員可以查看當前正在進行的競賽,已經(jīng)結(jié)束競賽,發(fā)起競賽。其活動圖如下圖3.8所示: 圖3.8競賽管理活動圖3.9作品投票需求分析功能:實現(xiàn)普通用戶對參賽作品的投票功能。說明:某個競賽目錄下面可能會有許許多多的作品,如何給這些作品排名,需要普通用戶在查看某個競賽的參賽作品的時候,可以對這個作品進行投票,給出一定的分數(shù),一個用戶只能對同一個作品投一次票,這樣就杜絕了一個用戶無限刷投票的出現(xiàn)。其活動圖如下圖3.9所示:圖3.9作品投票活動圖3.10評論需求分析功能:實現(xiàn)普通用戶對某個參賽作品或者某個資源評論的功能。說明:有些時候,用戶想對某個參賽作品或者某個資源進行評論來發(fā)表自己對這個東西的看法,其他的用戶可以通過查看這些評論,從側(cè)面來了解這些東西的好壞,于是需要一個評論的功能,用戶輸入自己的評論信息,點擊發(fā)布,就可以及時呈現(xiàn)出來。其活動圖如下圖3.10所示:圖3.10評論活動圖圖3.11系統(tǒng)公告活動圖3.11系統(tǒng)公告需求分析功能:實現(xiàn)管理員對系統(tǒng)公告管理的功能。說明:管理員有些時候需要發(fā)送一些系統(tǒng)公告給普通用戶看,這時候需要一個模塊來實現(xiàn)這個功能,系統(tǒng)公告模塊可以實現(xiàn)發(fā)布公告,編輯公告,刪除公告的功能。其活動圖如右圖3.11所示:3.12本章小結(jié)本章對科大開源平臺系統(tǒng)的各個模塊的需求進行了分析,全方位的考慮了用戶的需求,通過需求分析的詳細描述,了解了該系統(tǒng)的整體功能,描述了各個模塊的基本功能,制作了相關(guān)的活動圖,直觀的展示了用戶的需求,一個好的需求分析是制作好的軟件的開始。第四章系統(tǒng)概要設(shè)計4.1編寫目的編寫系統(tǒng)概要設(shè)計的目的是為了將該系統(tǒng)的運行環(huán)境、類圖設(shè)計、接口設(shè)計、數(shù)據(jù)庫設(shè)計、設(shè)計約束進行一個基本的描述。通過這些描述,大概了解系統(tǒng)的架構(gòu),能給軟件開發(fā)人員和實現(xiàn)人員對該系統(tǒng)進行維護和實現(xiàn)提供一定的依據(jù)。4.2系統(tǒng)運行環(huán)境該系統(tǒng)運行環(huán)境如表4.2所示:表4.2系統(tǒng)運行環(huán)境表名稱環(huán)境操作系統(tǒng)windows7.0開發(fā)語言Java服務器Tomcat7.0數(shù)據(jù)庫MySQL5.6JDK環(huán)境JDK1.7+內(nèi)存2G以上CPUInteli32.20GHz4.3設(shè)計約束數(shù)據(jù)庫表的命名:t_xxx(xxx是一個數(shù)據(jù)實體的英文),比如用戶(user)表,那么數(shù)據(jù)庫表名字則叫做t_user。包名:com.hnust.research.*。JavaScript文件名:JavaScript_xxxPage.JavaScript(xxx表示的是那個jsp頁面的名字,比如有個注冊頁面register.jsp,對應的JavaScript就是register.JavaScript)。CSS文件名:xxx.CSS(xxx表示jsp頁面的名字,比如有個注冊頁面register.jsp,對應的CSS就是register.CSS)。編碼:UTF-8編碼方式。項目名稱:Research。數(shù)據(jù)庫名稱:Research。4.4類圖本系統(tǒng)總共需要10個實體類來實現(xiàn)具體功能,分別是User(用戶類)、Source(資源類)、Soft(作品類)、Comment(評論類)、Competition(競賽類)、PageBean(分頁類)、Score(得分類)、Notice(系統(tǒng)公告類)、Label(標簽類)、ProgLanguage(編程語言類)。這些類中的字段將在第五章系統(tǒng)詳細設(shè)計中一一描述。為了更好的的描述程序中各個類之間的關(guān)系,需要通過uml工具來畫出各個類之間的一個關(guān)系圖。圖4.4是類圖的描述:圖4.4類圖從圖4.4可以看出有6個類是具有對應關(guān)系的,其余的四個ProgLanguage(編程語言類),Label(標簽類),Notice(系統(tǒng)公告類),PageBean(類)是獨立開來的。一個User對應多個Source,一個User對應多個soft,一個Competition對應多個Soft,一個Soft對應一個Score,一個Soft對應多個Comment,一個Source對應多個Comment。明確了這些對應關(guān)系,是為了以后設(shè)計數(shù)據(jù)庫而用的,數(shù)據(jù)庫中的字段都是根據(jù)這些實體類中的字段設(shè)計而來的,數(shù)據(jù)庫的設(shè)計將在4.6小結(jié)詳細介紹。4.5接口設(shè)計在本系統(tǒng)中,有三個包,com.hnust.research.base包,com.hnust.research.service包,com.hnust.research.serviceImpl包。第一個包是基本的接口,有一個接口DaoSupport,一個類DaoSupportImpl實現(xiàn)了了DaoSupport接口。第二個包中有九個接口:CompetitionService,LabelService,ProLanguageService,CommentService,ScoreService,SoftService,SourceService,UserService,NoticeService。第三個包中是具體接口的實現(xiàn)類:CompetitionServiceImpl,LabelServiceImpl,ProLanguageServiceImpl,CommentServiceImpl,ScoreServiceImpl,SoftServiceImpl,SourceServiceImpl,UserServiceImpl,NoticeServiceImpl。在第一個包com.hnust.research.base中,基礎(chǔ)接口DaoSupport定義了基本的方法(add方法,delete方法,getById方法,list方法等等),在DaoSupportImpl類中實現(xiàn)了這個接口中的方法。第二個包中,每個對應的Service繼承了第一個包中的Daosupport接口。第三個包中,每個對應的ServiceImpl繼承了第一個包中的DaosupportImpl類和實現(xiàn)了第二個包中的對應的Service接口。下圖4.5描述了這幾個包中接口設(shè)計以及接口類實現(xiàn)的關(guān)系:圖4.5接口以及接口類實現(xiàn)圖從圖4.5可以看出,具體的XXXServiceImpl類中繼承了來自DaoSupportImpl的某些基本方法,如果需要添加自己的方法,只需要在自己身上添加即可,這樣抽取公共方法,既簡化了代碼的編寫,又實現(xiàn)了解耦。有時候在編程的時候,就需要抽取某些公共方法來達到分層的效果,這樣雖然層次是較為復雜了,但是結(jié)構(gòu)變得更加清晰,編程變得更加方便,某些公共的方法一有改變,其余只要繼承了這些公共方法的類都會改變。4.6數(shù)據(jù)庫表設(shè)計4.6.1t_competition數(shù)據(jù)表表4.6.1t_competition數(shù)據(jù)表字段名類型是否為空描述idintyes主鍵,自動遞增titilevarcharno競賽標題descriptiontextno競賽描述statusvarcharno競賽狀態(tài)tauthorvarcharno競賽發(fā)起人名字startdatetimeno開始日期enddatetimeno結(jié)束日期noteIdsvarcharno記錄參加人idcountintno作品數(shù)目4.6.2t_comment數(shù)據(jù)表表4.6.2t_comment數(shù)據(jù)表字段名類型是否為空描述idintyes主鍵,自動遞增toIdintno評論哪個實體的idcommenttextno評論timedatetimeno評論時間flagvarcharno評論的是資源還是作品標記userIdintno用戶id4.6.3t_label數(shù)據(jù)表表4.6.3t_label數(shù)據(jù)表字段名類型是否為空描述idintyes主鍵,自動遞增typevarcharno標簽類型4.6.4t_notice數(shù)據(jù)表表4.6.4t_notice數(shù)據(jù)表字段名類型是否為空描述idintyes主鍵,自動遞增contentvarcharno評論哪個實體的idtimedatetimeno發(fā)布時間4.6.5t_proglanguage數(shù)據(jù)表表4.6.5t_proglanguage數(shù)據(jù)表字段名類型是否為空描述idintyes主鍵,自動遞增languagevarcharno編程語言4.6.6t_score數(shù)據(jù)表表4.6.6t_score數(shù)據(jù)表字段名類型是否為空描述idintyes主鍵,自動遞增level1intno等級1的票數(shù)level2intno等級2的票數(shù)level3intno等級3的票數(shù)level4intno等級4的票數(shù)level5intno等級5的票數(shù)noteIdsvarcharyes投票人idscoresfloatyes得分4.6.7t_soft數(shù)據(jù)表表4.6.7t_soft數(shù)據(jù)表字段名類型是否為空描述idintyes主鍵,自動遞增titlevarcharno作品標題descriptionintno作品描述createdateintno創(chuàng)建日期pathintno上傳路徑userIdintno上傳人idcompetitionIdvarcharyes競賽idscoreIdfloatyes得分id4.6.8t_source數(shù)據(jù)表表4.6.8t_source數(shù)據(jù)表字段名類型是否為空描述idintyes主鍵,自動遞增titlevarcharno資源標題descriptiontextno資源描述pathvarcharno上傳路徑countintno下載次數(shù)typevarcharno標簽timedatetimeno上傳時間statusintno狀態(tài)languagevarcharno編程語言userIdintno上傳人idscoreIdintno得分id4.6.9t_user數(shù)據(jù)表表4.6.9t_user數(shù)據(jù)表字段名類型是否為空描述idintyes主鍵,自動遞增usernamevarcharno用戶名passwordvarcharno密碼sharecountintno分享次數(shù)softcountintno上傳作品數(shù)createdatedatetimeno創(chuàng)建日期imgpathvarcharno頭像地址descriptionvarcharno用戶描述nicknamevarcharno昵稱sexintno性別activeintno狀態(tài)mailvarcharno郵箱地址activeCodevarcharno激活碼4.7本章小結(jié)本章通過對科大開源平臺系統(tǒng)的概要設(shè)計,詳細的分析了系統(tǒng)的運行環(huán)境,給出了系統(tǒng)的詳細類圖設(shè)計,實現(xiàn)了用戶的接口設(shè)計描述,并對該系統(tǒng)的某些規(guī)則進行了約束,最后分析了該系統(tǒng)數(shù)據(jù)庫表格的設(shè)計。這樣有利于開發(fā)人員對該系統(tǒng)進行開發(fā)。第五章系統(tǒng)詳細設(shè)計5.1系統(tǒng)框架圖5.1系統(tǒng)框架圖圖5.1系統(tǒng)框架圖如上圖5.1所示,這個系統(tǒng)主要由兩套操作界面組成,科大開源平臺系統(tǒng)這一塊是給普通用戶準備的,而科大開源平臺管理系統(tǒng)是給管理員準備的。前者擁有四個模塊,分別是用戶模塊,資源模塊,競賽模塊,評論模塊。而后者擁有五個模塊,分別是用戶管理,資源管理,競賽管理,評論管理,系統(tǒng)公告管理。用戶選擇相應的系統(tǒng),進行相關(guān)的操作,和數(shù)據(jù)庫之間的交互是使用Hibernate框架。5.2程序結(jié)構(gòu)設(shè)計如下圖5.2所示,下面將分別介紹各個目錄的內(nèi)容:圖5.2程序結(jié)構(gòu)圖5.2.1src目錄src目錄下存放的是類的源文件,第一個包里面存放的是各個實體類對應的action類,如圖5.2.1所示,第二個包里的內(nèi)容是一些抽取了公共方法的類,如圖所示,第三個包里的內(nèi)容是一些實體類以及對應的hbm映射文件,如圖所示,第四個包里面的內(nèi)容是各個實體對應的接口,如圖所示,第五個包里面的內(nèi)容是各個接口的實現(xiàn)類,如圖所示,第六個包里面的內(nèi)容是一些輔助類,如圖所示。圖action包圖base包圖domain包圖service包圖serviceImpl包圖utill包下表5.2.1詳細說明了每個類的作用。表5.2.1類功能表類名作用類名作用AdminHomeAction管理主頁操作類CkeditorImgckeditor上傳圖片CommentAction評論操作類CompetitionAction競賽操作類HomeAction主頁操作類LabelAction標簽操作類MailAction郵件操作類NoticeAction系統(tǒng)公告操作類ProgLanguageAction編程語言操作類SecurityCodeImageAction驗證碼操作類SoftAction作品操作類SourceAction資源操作類UploadAction上傳操作類UserAction用戶操作類BaseAction基礎(chǔ)操作類DaoSupport基礎(chǔ)接口類DaoSupportImpl基礎(chǔ)接口實現(xiàn)類Comment評論實體類Competition競賽實體類Label標簽實體類Notice系統(tǒng)公告實體類PageBean分頁實體類ProgLanguage編程語言實體類Score分數(shù)實體類Soft作品實體類Source資源實體類User用戶實體類LabelService標簽接口CommentService評論接口CompeititonService競賽接口NoticeService系統(tǒng)公告接口ProgLanguageService編程語言接口ScoreService分數(shù)接口SoftService作品接口SourceService資源接口UserService用戶接口CommentServiceImpl評論接口實現(xiàn)類CompeititonServiceImpl競賽接口實現(xiàn)類NoticeServiceImpl系統(tǒng)公告接口實現(xiàn)類ProgLanguageServiceImpl編程語言接口實現(xiàn)類ScoreServiceImpl分數(shù)接口實現(xiàn)類SoftServiceImpl作品接口實現(xiàn)類SourceServiceImpl資源接口實現(xiàn)類UserServiceImpl用戶接口實現(xiàn)類(續(xù)表5.2.1)類名作用類名作用LabelServiceImpl標簽接口實現(xiàn)類CheckCookieInterceptor用戶Cookie檢查類CookieUtilsCook輔助類Installer數(shù)據(jù)安裝類QueryHelper分頁輔助類SecurityCode驗證碼生成輔助類SecurityImage驗證碼圖片生成類SendMailUtil發(fā)送郵件輔助類UploadFileUtil文件上傳輔助類5.2.2config目錄applicationContext.xml是spring的配置文件。hibernate.cfg.xml是hibernate的配置文件。perties是數(shù)據(jù)源的配置文件。perties是日志的配置文件。Struts.xml是Struts2.0的配置文件。5.2.3WebRoot目錄CSS文件夾下面存放的系統(tǒng)的CSS樣式文件。images存放的系統(tǒng)的圖片。plugins是CKeditor的文件存放處。resource是資源上傳的文件夾。scripts是腳本的文件夾。soft是作品上傳文件夾。upload是圖片上傳的文件夾。Web-INF是系統(tǒng)目錄,存放Web.xml和jsp文件。5.3頁面設(shè)計在Web-INF目錄下面有一個jsp文件夾,jsp文件夾下面有三個目錄。分別是source(科大開源平臺頁面),admin(管理頁面),public(公共頁面)。下面將分別介紹這幾個目錄下的頁面。source目錄如表5.3.1所示,admin目錄如表5.3.2所示,public目錄如表5.3.3所示。表5.3.3source目錄表頁面說明頁面說明attendUI.jsp參加競賽頁面competitionDetail.jsp競賽詳情頁面competitionList.jsp競賽列表頁面confirm.jsp激活驗證頁面error.jsp錯誤頁面forget.jsp忘記密碼頁面login.jsp登錄頁面member.jsp信息設(shè)置頁面(續(xù)表5.3.3)頁面說明頁面說明personalInfo.jsp個人信息頁面register.jsp注冊頁面registerOk.jsp注冊成功界面softDetail.jsp作品詳情頁面softList.jsp作品列表頁面sourceDetail.jsp資源詳情頁面sourceIndex.jsp主頁sourceList.jsp資源列表頁面sourceResult.jsp資源搜素頁面sourceUpload.jsp資源上傳頁面表5.3.2admin目錄表頁面說明頁面說明list_end.jsp競賽結(jié)束列表list_start.jsp正在進行列表saveUI.jsp保存頁面list.jsp列表頁面create.jsp創(chuàng)建頁面detail.jsp詳情頁面edit.jsp編輯頁面labelList.jsp資源標簽列表頁labelSaveUI.jsp保存標簽頁面languageList.jsp編程語言列表頁languageSaveUI.jsp資源編程語言保存頁面list_ok.jsp已經(jīng)審核資源列表list_unchecked.jsp未經(jīng)審核資源列表info.jsp用戶信息頁面bottom.jsp主頁底部index.jsp主頁left.jsp主頁左邊top.jsp主頁頂部表5.3.3public目錄表頁面說明頁面說明head.jspf頭部jsp片段bottom.jspf底部jsp片段以上就是本系統(tǒng)的所有頁面信息。5.4實體類設(shè)計publicpublicclassUserimplementsSerializable{ privateLongid;//id privateStringusername;//用戶名 privateStringpassword;//密碼 privateIntegersharecount;//分享次數(shù) privateIntegersoftcount;//上傳作品數(shù)目 privateDatecreatedate;//創(chuàng)建日期 privateStringimgpath;//頭像路徑 privateStringdescription;//描述privateprivateStringnickname;//昵稱 privateIntegersex;//性別 privateIntegeractive;//激活狀態(tài) privateStringmail;//郵箱 privateStringactiveCode;//激活碼 /** *一個用戶有多個資源,一對多關(guān)系 */ privateSet<Source>sources=newHashSet<Source>(); /** *一個用戶有多個作品,一對多關(guān)系 */ privateSet<Soft>softs=newHashSet<Soft>();}publicpublicclassCompetition{ privateLongid;//id privateStringtitle;//競賽名字 privateStringdescription; //競賽描述 privateStringstatus; //狀態(tài) privateStringauthor; //發(fā)起人 privateDatestart; //開始時間 privateDateend; //結(jié)束時間 privateStringnoteIds;//記錄參加人的id的字段("1,3,5,6,7,8"),表示id為1,3,6,7,8的用戶參加過這個比賽 privateIntegercount;//有多少個作品記錄 privateSet<Soft>softs=newHashSet<Soft>(); //一個競賽對應多個作品}publicpublicclassLabelimplementsSerializable{ privateIntegerid;//idprivateStringtype;//種類}publicpublicclassPageBean{ //指定的或是頁面參數(shù) privateintcurrentPage;//當前頁 privateintpageSize;//每頁顯示多少條數(shù)據(jù) //查詢數(shù)據(jù)庫 privateListrecordList;//本頁的數(shù)據(jù)列表 privateintrecordCount;//總記錄數(shù) //計算出來的 privateintpageCount;//總頁數(shù) privateintbeginPageIndex;//頁碼列表的開始索引 privateintendPageIndex; //頁碼列表的結(jié)束索引}publicpublicclassProgLanguage{ //id privateIntegerid; //語言 privateStringlanguage;}publicpublicclassScore{ privateLongid;//id privateIntegerlevel1; privateIntegerlevel2; privateIntegerlevel3; privateIntegerlevel4; privateIntegerlevel5; privateStringnoteIds; privateFloatpercent1; privateFloatpercent2; privateFloatpercent3; privateFloatpercent4; privateFloatpercent5; privateFloatscores;}publicpublicclassSoft{ privateLongid;//idprivateprivateStringtitle;//作品名字 privateStringdescription; //作品描述 privateDatecreatedate;//上傳時間 privateStringpath;//上傳路徑 /** *一個作品對應一個投票類(一一對應) */ privateScorescore; /** *一個作品,對應一個用戶 */ privateUseruser; /** *一個作品對應一個競賽 */ privateCompetitioncompetition;}publicpublicclassSourceimplementsSerializable{ privateLongid;//id privateStringtitle;//標題 privateStringdescription;//描述 privateStringpath; //路徑 privateIntegercount; //下載次數(shù) privateStringtype; //類型 privateDatetime; //上傳時間 privateIntegerstatus;//資源狀態(tài) privateStringlanguage; //屬于哪門語言 privateUseruser;//屬于哪個用戶 privateScorescore;//這個資源的得分}5.5操作數(shù)據(jù)庫分析在一般的JavaWeb程序中,是采用JDBC技術(shù)來連接數(shù)據(jù)庫并且操作數(shù)據(jù)庫的,需要建立Connection,申明statement,執(zhí)行sql語句,返回結(jié)果集ResultSet。而在Hibernate框架中,只需要配置了數(shù)據(jù)源連接參數(shù)。配置參數(shù)如下所示:jdbcUrl=jdbc:mysql:///researchdriverClass=com.mysql.jdbc.Driveruser=rootpassword=dislike09在程序中只需要獲得數(shù)據(jù)庫連接的sessionFactory,然后獲得當前的session,就可以通過session對象來操作數(shù)據(jù)庫,刪除,增加等很多方法都封裝在了session對象中,這樣就方便了很多。5.6本章小結(jié)本章是對系統(tǒng)詳細設(shè)計的描述,先從系統(tǒng)框架入手,給出了系統(tǒng)框架圖,然后從程序結(jié)構(gòu)開始,分析了程序的整體結(jié)構(gòu),給出了每個文件夾的作用,接下來,分析了每個jsp頁面的作用,然后介紹了程序?qū)嶓w類的設(shè)計,最后分析了如何通過Hibernate操作數(shù)據(jù)庫。第六章系統(tǒng)功能實現(xiàn)6.1用戶注冊實現(xiàn)預期效果:當用戶填寫信息,會進行表單驗證,Ajax驗證用戶名是否存在。信息填寫正確,發(fā)送郵件提醒用戶激活。實際效果:如圖6.1.1和圖6.1.2所示:圖6.1.1用戶注冊圖6.1.2郵件激活6.2用戶登錄實現(xiàn)逾期效果:輸入用戶名和密碼進行Ajax驗證。如果三次輸入密碼不正確提示找回密碼。實際效果:如圖6.2.1和圖6.2.2所示:圖6.2.1用戶登錄失敗圖6.2.2提醒忘記密碼6.3資源上傳實現(xiàn)預期效果:用戶填寫相關(guān)信息,選擇文件,實現(xiàn)上傳。實際效果:如圖6.3.1所示:圖6.3.1資源上傳6.4資源下載實現(xiàn)預期效果:用戶點擊資源列表頁面,選中資源,點擊相應的下載按鈕,實現(xiàn)資源的下載。實際效果:如圖6.4.1所示:圖6.4.1資源下載6.5資源搜索實現(xiàn)預期效果:用戶登錄之后,在中間搜索框中輸入jquery,就會搜索出
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 44435-2024信息與文獻數(shù)字文件(檔案)轉(zhuǎn)換和遷移過程
- GB/T 25216-2024煤與瓦斯突出危險性區(qū)域預測方法
- 合伙協(xié)議書簽訂時的法律審查
- 2024年黃沙石子供貨合同范本
- 專業(yè)承包工地食堂合同書模板
- 合作經(jīng)營生意合同協(xié)議
- 800字代辦委托協(xié)議范本
- 房產(chǎn)按揭貸款借款協(xié)議示例
- 咖啡店外賣服務合同
- 2024年二手車購買協(xié)議格式
- 2023老年重癥患者靜脈血栓栓塞癥預防中國專家共識
- 汽車發(fā)動機構(gòu)造與維修參考文獻
- Mysql 8.0 OCP 1Z0-908 CN-total認證備考題庫(含答案)
- 完整版全國行政區(qū)域身份證代碼表(EXCEL版)TextMarkTextMark
- 配電房設(shè)備運行記錄表
- 豬營養(yǎng)體系課件-整理
- 某水電站防洪影響評價呈文
- T-CRA 002-2023 客運索道安全運營應急預案編寫指南
- 2023年春江蘇開放大學《江蘇紅色文化》過程性考核作業(yè)一二和綜合大作業(yè)+參考答案
- 生物化學實驗智慧樹知到答案章節(jié)測試2023年浙江大學
- 學生視力檢測分析報告及整改措施
評論
0/150
提交評論