版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 蘭州理工大學(xué)</b></p><p><b> 計(jì)算機(jī)與通信學(xué)院</b></p><p><b> 2013年春季學(xué)期</b></p><p><b> 工程開發(fā)綜合訓(xùn)練</b></p><p> 題 目:
2、 畢業(yè)設(shè)計(jì)管理系統(tǒng) </p><p> 專業(yè)班級(jí): 10級(jí)軟件工程基地班 </p><p> 姓 名: *** </p><p> 學(xué) 號(hào): *** </p><p> 指導(dǎo)教師: *** <
3、;/p><p> 成 績(jī): </p><p><b> 摘 要</b></p><p> 該畢業(yè)設(shè)計(jì)管理系統(tǒng)采用的是B/S結(jié)構(gòu),以Sql Server 2008 + myeclipse + JSP作為開發(fā)工具。本系統(tǒng)借助了網(wǎng)絡(luò)平臺(tái),不但使學(xué)生與老師進(jìn)行有效的溝通,使學(xué)生可以及時(shí)的了解有關(guān)
4、畢業(yè)論文的相關(guān)事情,而且使論文的上傳查看、信息的管理、用戶的管理和數(shù)據(jù)庫(kù)的管理等工作更加容易,既提高了工作效率,也降低了成本。本系統(tǒng)主要針對(duì)于高校的畢業(yè)設(shè)計(jì)環(huán)節(jié)進(jìn)行管理。</p><p> 本系統(tǒng)實(shí)現(xiàn)了管理員對(duì)系統(tǒng)用戶信息(管理員信息、教師信息、學(xué)生信息)、課題信息管理等;教師角色對(duì)個(gè)人信息的修改,課題的添加,查詢管理、選題管理,論文管理等;評(píng)審角色對(duì)個(gè)人信息的修改,課題的評(píng)審等;學(xué)生角色可以對(duì)個(gè)人信息修改,查
5、看成績(jī)、選題登記與查詢,論文提交與查看。</p><p> 關(guān)鍵詞:畢業(yè)論文選題;管理系統(tǒng);SQL Server;J2EE;GPMS</p><p><b> 目錄</b></p><p><b> 摘 要I</b></p><p><b> 目錄II</b><
6、;/p><p><b> 一、需求分析1</b></p><p> 1.1畢業(yè)論文管理的現(xiàn)狀1</p><p> 1.2畢業(yè)論文管理系統(tǒng)的優(yōu)勢(shì)1</p><p> 1.3 系統(tǒng)流程圖2</p><p> 1.4層次結(jié)構(gòu)圖3</p><p> 1.5數(shù)據(jù)流程
7、圖6</p><p><b> 1.5數(shù)據(jù)字典7</b></p><p> 二、概念結(jié)構(gòu)設(shè)計(jì)9</p><p> 2.1系統(tǒng)E-R圖9</p><p> 三、邏輯結(jié)構(gòu)設(shè)計(jì)10</p><p> 3.1各個(gè)表的結(jié)構(gòu)10</p><p><b>
8、 四、系統(tǒng)實(shí)現(xiàn)13</b></p><p> 4.1 建立數(shù)據(jù)庫(kù)13</p><p> 4.1.1數(shù)據(jù)庫(kù)創(chuàng)建流程13</p><p> 4.1.2數(shù)據(jù)庫(kù)關(guān)系13</p><p> 4.2 程序設(shè)計(jì)14</p><p> 4.2.1 工程目錄結(jié)構(gòu)14</p><p&
9、gt; 4.2.2 核心技術(shù)說明14</p><p> 4.3 項(xiàng)目研發(fā)時(shí)間線20</p><p><b> 五、系統(tǒng)測(cè)試21</b></p><p> 5.1 測(cè)試方案21</p><p> 5.2 測(cè)試用例及結(jié)果21</p><p> 六、軟件使用說明書24</p
10、><p> 6.1 登陸界面24</p><p> 6.2 主界面24</p><p> 6.3 查看個(gè)人信息25</p><p> 6.4 修改密碼25</p><p> 6.5 維護(hù)個(gè)人信息26</p><p> 6.6 上報(bào)課題26</p><p&g
11、t; 6.7 課題查詢27</p><p> 6.8 未評(píng)題目查詢27</p><p> 6.9 題目評(píng)審28</p><p> 6.10 任務(wù)下派28</p><p> 6.11發(fā)布題目29</p><p> 6.12信息統(tǒng)計(jì)30</p><p> 6.13信息管理
12、30</p><p><b> 七、設(shè)計(jì)總結(jié)32</b></p><p><b> 八、致謝33</b></p><p><b> 九、參考文獻(xiàn)34</b></p><p><b> 一、需求分析</b></p><p&g
13、t; 1.1畢業(yè)論文管理的現(xiàn)狀</p><p> 目前,國(guó)內(nèi)外畢業(yè)論文選題一般采用兩種方式:一種將畢業(yè)設(shè)計(jì)存在軟盤上交;另一種則存放到教師的電腦上的一個(gè)共享目錄內(nèi)。但這兩種方法都有各自的弊端:前一種方法不方便攜帶、速度慢、容量小、易損壞;后一種方法雖然解決了軟盤容量小、容易壞的問題。但存在一個(gè)更致命的缺點(diǎn):學(xué)生可以隨意的查看、更改和刪除其他同學(xué)的畢業(yè)設(shè)計(jì),造成大量如抄襲畢業(yè)設(shè)計(jì)、惡意刪除或修改其他同學(xué)畢業(yè)設(shè)計(jì)
14、的事情發(fā)生;老師在幫學(xué)生修改畢業(yè)設(shè)計(jì)時(shí),也很容易弄不清楚畢業(yè)設(shè)計(jì)批改與否;畢業(yè)設(shè)計(jì)是誰的或是舊畢業(yè)設(shè)計(jì)沒刪除掉,跟新畢業(yè)設(shè)計(jì)搞混了等情況,雖然有些可以用嚴(yán)格的紀(jì)律來實(shí)現(xiàn)管理,但仍然會(huì)給學(xué)生和老師帶來很多的麻煩。而且,由于畢業(yè)設(shè)計(jì)是一個(gè)持續(xù)較長(zhǎng)時(shí)間的過程,這其中需要同學(xué)和老師不斷的溝通,但是期間若是由于學(xué)生有事或身體不適等情況,就不得不中途請(qǐng)假,而這勢(shì)必會(huì)影響到畢業(yè)設(shè)計(jì)的順利完成。在當(dāng)前的信息化時(shí)代中,任何學(xué)校,都需要一個(gè)實(shí)用的畢業(yè)論文選
15、題來規(guī)范畢業(yè)論文選題,這將會(huì)大大提高學(xué)校的管理水平,優(yōu)化資源,實(shí)現(xiàn)效益的最大化。</p><p> 現(xiàn)在國(guó)內(nèi)外也有很多畢業(yè)論文選題的軟件,采用的技術(shù)也是多種多樣,如基于JSP、FTP模式,但大多數(shù)畢業(yè)論文選題主要用于網(wǎng)絡(luò)學(xué)院的遠(yuǎn)程教學(xué)。至于校園內(nèi)的正規(guī)教學(xué),利用畢業(yè)論文選題組織管理教學(xué)活動(dòng)的并不多。針對(duì)國(guó)內(nèi)外對(duì)教學(xué)管理軟件的巨大需要和基本需要,一個(gè)好的教學(xué)管理軟件,必須功能齊全,操作簡(jiǎn)便,向用戶展示友善的操作界
16、面。在完善功能的同時(shí)又必須兼顧系統(tǒng)的靈活性,安全性,健壯性。一個(gè)好的教學(xué)管理系統(tǒng),不管是計(jì)算機(jī)專業(yè)人員還是其他用戶都能很快上手,操作簡(jiǎn)單,便于安裝,容易普及。</p><p> 1.2畢業(yè)論文管理系統(tǒng)的優(yōu)勢(shì)</p><p> 由于學(xué)校教學(xué)功能的特殊定位,致使教師和學(xué)生必須在除了簡(jiǎn)單的師生區(qū)別外,還有合作意味的關(guān)系。學(xué)生上交畢業(yè)設(shè)計(jì)和老師批改畢業(yè)設(shè)計(jì),這本身除了學(xué)習(xí)交流外,還是一個(gè)合作的
17、概念。所以,這其中的信息管理流程,需要以一個(gè)規(guī)范的MIS來管理。</p><p> 畢業(yè)論文管理系統(tǒng)的優(yōu)勢(shì)主要表現(xiàn)在三個(gè)方面:</p><p> 1、畢業(yè)設(shè)計(jì)無紙化,環(huán)保又方便。傳統(tǒng)的畢業(yè)設(shè)計(jì)上交方式,都是經(jīng)由學(xué)生科目代表統(tǒng)一收齊后,交到教師辦公室,然后教師抽取一個(gè)整段的時(shí)間,或是若干分時(shí)間段,一份一份地手工翻閱批改,然后再做好相關(guān)記錄。這種傳統(tǒng)的方式,一是會(huì)有很大的體力消耗,二是在精
18、力上也是不小的付出,而且這種辛苦在很多時(shí)候往往沒能得到滿意的回復(fù)。而無紙化畢業(yè)設(shè)計(jì),只需在電腦前點(diǎn)點(diǎn)鼠標(biāo),在體力上幾乎沒有多大的消耗,而且在環(huán)保、效率、針對(duì)性教學(xué)指導(dǎo)方面做得要比傳統(tǒng)的畢業(yè)論文選題科學(xué)得多。</p><p> 2、科學(xué)管理,安全可靠。傳統(tǒng)的畢業(yè)論文選題方式,都是一份份獨(dú)立的畢業(yè)設(shè)計(jì),一個(gè)學(xué)生對(duì)應(yīng)一份,而這么一撂的設(shè)計(jì),經(jīng)常會(huì)由于各種原因,丟失或是污損,給畢業(yè)論文選題和教學(xué)進(jìn)程帶來很大的麻煩和不便
19、。而畢業(yè)論文選題的動(dòng)作,只需做好系統(tǒng)數(shù)據(jù)庫(kù)的保護(hù),以上問題可以迎刃而解了。</p><p> 3、簡(jiǎn)化工作,促進(jìn)其他方面的綜合發(fā)展。由于畢業(yè)論文選題的介入運(yùn)行,可以使教師騰出更多的時(shí)間,做更多針對(duì)性的個(gè)性化教學(xué)服務(wù),從而使每個(gè)學(xué)生都有機(jī)會(huì)在學(xué)業(yè)上有更大的進(jìn)步。</p><p><b> 1.3 系統(tǒng)流程圖</b></p><p> 圖1-
20、1 系統(tǒng)流程圖</p><p><b> 1.4層次結(jié)構(gòu)圖</b></p><p> 圖1-2 學(xué)生層次結(jié)構(gòu)圖</p><p> 圖1-3 教師層次結(jié)構(gòu)圖</p><p> 圖1-4 評(píng)審人層次結(jié)構(gòu)圖</p><p> 圖1-5 管理員層次結(jié)構(gòu)圖</p><p>
21、<b> 1.5數(shù)據(jù)流程圖</b></p><p> 圖1-6 系統(tǒng)數(shù)據(jù)流圖</p><p><b> 1.5數(shù)據(jù)字典 </b></p><p><b> 主要的數(shù)據(jù)字典:</b></p><p> 表1-1 管理員信息數(shù)據(jù)字典</p><p&g
22、t; 表1-2 教師信息數(shù)據(jù)字典</p><p> 表1-3 學(xué)生信息數(shù)據(jù)字典</p><p> 表1-4課題信息數(shù)據(jù)字典</p><p> 表1-5學(xué)生選題數(shù)據(jù)字典</p><p> 表1-6管理員分配答辯老師數(shù)據(jù)字典</p><p> 表1-7 學(xué)生成績(jī)信息數(shù)據(jù)字典</p><p&g
23、t;<b> 二、概念結(jié)構(gòu)設(shè)計(jì)</b></p><p><b> 2.1系統(tǒng)E-R圖</b></p><p> 本系統(tǒng)涉及的實(shí)體主要由管理員、教師、學(xué)生、課題組成,主要有監(jiān)督、出題、審題、選題等幾個(gè)關(guān)系。各實(shí)體屬性和關(guān)系圖如下圖所示。</p><p> 圖2-1 系統(tǒng)E-R圖</p><p>
24、;<b> 三、邏輯結(jié)構(gòu)設(shè)計(jì)</b></p><p><b> 3.1各個(gè)表的結(jié)構(gòu)</b></p><p> 表3-1教師表(T_teacher)</p><p> 表3-2教師詳細(xì)信息表(T_teadetail)</p><p> 表3-3畢設(shè)題目表(T_topic)</p>
25、<p> 表3-4畢設(shè)題目臨時(shí)表(T_temptopictb)</p><p> 表3-5系(專業(yè))表(T_faculties)</p><p> 表 3-6-學(xué)院表(T_schools)</p><p><b> 四、系統(tǒng)實(shí)現(xiàn)</b></p><p><b> 4.1 建立數(shù)據(jù)庫(kù)<
26、;/b></p><p> 數(shù)據(jù)庫(kù)采用SqlServer2008,數(shù)據(jù)庫(kù)名稱為GPMS。</p><p> 4.1.1數(shù)據(jù)庫(kù)創(chuàng)建流程</p><p> 數(shù)據(jù)庫(kù)創(chuàng)建流程如下:</p><p> 圖4.1.1 數(shù)據(jù)庫(kù)創(chuàng)建流程</p><p> 4.1.2數(shù)據(jù)庫(kù)關(guān)系</p><p>&
27、lt;b> 數(shù)據(jù)庫(kù)關(guān)系圖如下:</b></p><p> 圖4.1.2 數(shù)據(jù)庫(kù)關(guān)系圖</p><p><b> 4.2 程序設(shè)計(jì)</b></p><p> 4.2.1 工程目錄結(jié)構(gòu)</p><p> 4.2.2 核心技術(shù)說明</p><p> 1、J2EE中重量級(jí)框
28、架 </p><p> 我們采用Java Servlet + Java Server Pages (JSP) + Enterprise Java Bean (EJB )的J2EE中重量級(jí)框架,其中所包含的各類組件、服務(wù)架構(gòu)及技術(shù)層次,均有共同的標(biāo)準(zhǔn)及規(guī)格,讓各種依循J2EE架構(gòu)的不同平臺(tái)之間,存在良好的兼容性,解決過去企業(yè)后端使用的信息產(chǎn)品彼此之間無法兼容,企業(yè)內(nèi)部或外部難以互通的窘境。</p>
29、<p> 2、DAO(數(shù)據(jù)庫(kù)接口層)的封裝</p><p> 在核心J2EE模式中是這樣介紹DAO模式的:為了建立一個(gè)健壯的J2EE應(yīng)用,應(yīng)該將所有對(duì)數(shù)據(jù)源的訪問操作抽象封裝在一個(gè)公共API中。用程序設(shè)計(jì)的語言來說,就是建立一個(gè)接口,接口中定義了此應(yīng)用程序中將會(huì)用到的所有事務(wù)方法。在這個(gè)應(yīng)用程序中,當(dāng)需要和數(shù)據(jù)源進(jìn)行交互的時(shí)候則使用這個(gè)接口,并且編寫一個(gè)單獨(dú)的類來實(shí)現(xiàn)這個(gè)接口在邏輯上對(duì)應(yīng)這個(gè)特定的
30、數(shù)據(jù)存儲(chǔ)。</p><p> 我們采用DAO的思想,將所有對(duì)數(shù)據(jù)源數(shù)據(jù)庫(kù)的訪問操作抽象封裝在幾個(gè)接口類中,使事務(wù)界限更加清晰,分離了業(yè)務(wù)邏輯和數(shù)據(jù)庫(kù)基礎(chǔ)操作,代碼結(jié)構(gòu)也看起來非常清晰。還有一個(gè)好處是,數(shù)據(jù)庫(kù)的修改只要修改DAO層的訪問方式就可以了,不用整個(gè)項(xiàng)目都進(jìn)行修改。</p><p> 3、Ajax技術(shù)異步刷新</p><p> 傳統(tǒng)的web應(yīng)用允許用戶
31、填寫表單(form),當(dāng)提交表單時(shí)就向web服務(wù)器發(fā)送一個(gè)請(qǐng)求。服務(wù)器接收并處理傳來的表單,然后返回一個(gè)新的網(wǎng)頁(yè)。這個(gè)做 法浪費(fèi)了許多帶寬,因?yàn)樵谇昂髢蓚€(gè)頁(yè)面中的大部分HTML代碼往往是相同的。由于每次應(yīng)用的交互都需要向服務(wù)器發(fā)送請(qǐng)求,應(yīng)用的響應(yīng)時(shí)間就依賴于服務(wù)器的響應(yīng)時(shí)間。這導(dǎo)致了用戶界面的響應(yīng)比本地應(yīng)用慢得多。</p><p> 與此不同,AJAX應(yīng)用可以僅向服務(wù)器發(fā)送并取回必需的數(shù)據(jù)(而不是返回整個(gè)頁(yè)面,
32、只是把從服務(wù)器端上取出的數(shù)據(jù)填充到div或span層上去而已,實(shí)現(xiàn)無刷新的效果),它使用SOAP或其它一些基于 XML的web service接口,并在客戶端采用JavaScript處理來自服務(wù)器的響應(yīng)。因?yàn)樵诜?wù)器和瀏覽器之間交換的數(shù)據(jù)大量減少,結(jié)果我們就能看到響應(yīng)更快 的應(yīng)用。同時(shí)很多的處理工作可以在發(fā)出請(qǐng)求的客戶端機(jī)器上完成,所以Web服務(wù)器的處理時(shí)間也減少了。</p><p> 使用Ajax的最大優(yōu)點(diǎn),
33、就是能在不更新整個(gè)頁(yè)面的前提下維護(hù)數(shù)據(jù)。這使得Web應(yīng)用程序更為 迅捷地回應(yīng)用戶動(dòng)作,并避免了在網(wǎng)絡(luò)上發(fā)送那些沒有改變過的信息。</p><p> Ajax不需要任何瀏覽器插件,但需要用戶允許JavaScript在瀏覽器上執(zhí)行。</p><p><b> 4、數(shù)據(jù)庫(kù)連接池</b></p><p> 在傳統(tǒng)的兩層結(jié)構(gòu)中,客戶端程序在啟動(dòng)時(shí)
34、打開數(shù)據(jù)庫(kù)連接,在退出程序時(shí)關(guān)閉數(shù)據(jù)庫(kù)連接。這樣,在整個(gè)程序運(yùn)行中,每個(gè)客戶端始終占用一個(gè)數(shù)據(jù)庫(kù)連接,即使在大量沒有數(shù)據(jù)庫(kù)操作的空閑時(shí)間,如用戶輸入數(shù)據(jù)時(shí),從而造成數(shù)據(jù)庫(kù)連接的使用效率低下。 </p><p> 在三層結(jié)構(gòu)模式中,數(shù)據(jù)庫(kù)連接通過中間層的連接池管理。只有當(dāng)用戶真正需要進(jìn)行數(shù)據(jù)庫(kù)操作時(shí),中間層才從連接池申請(qǐng)一個(gè)連接,數(shù)據(jù)庫(kù)操作完畢,連接立即釋放到連接池中,以供其他用戶使用。這樣,不僅大大提高了數(shù)據(jù)庫(kù)
35、連接的使用效率,使得大量用戶可以共享較少的數(shù)據(jù)庫(kù)連接,而且省去了建立連接的時(shí)間。 </p><p> 我們以Tomcat7數(shù)據(jù)庫(kù)連接池配置sqlserver2008。Tomcat JDBC連接池提供對(duì)多種數(shù)據(jù)庫(kù)的支持。前提要修改tomcat服務(wù)器目錄下面的conf中的Context.xml配置文件和程序中的 Web.xml文件,代碼中以如下方式實(shí)現(xiàn): </p><p> Context
36、 c = new InitialContext();DataSource ds = (DataSource)c.lookup("java:comp/env/jdbc/books");conn = ds.getConnection();</p><p> 5、動(dòng)態(tài)頁(yè)面的實(shí)現(xiàn)(CSS+動(dòng)態(tài)js腳本)&
37、lt;/p><p> JS的作用是制作動(dòng).態(tài)網(wǎng)頁(yè)效果等,是提高用戶體驗(yàn)的利器!而CSS是定義網(wǎng)頁(yè)樣式,讓網(wǎng)頁(yè)元素更好的表現(xiàn)給用戶,好的的網(wǎng)頁(yè)表現(xiàn)形式也能提高用戶體驗(yàn)!js可以使網(wǎng)頁(yè)的功能更加豐富,給網(wǎng)頁(yè)添加更多實(shí)時(shí)的、動(dòng)態(tài)的、交互的內(nèi)容。當(dāng)服務(wù)端需要對(duì)數(shù)據(jù)進(jìn)行驗(yàn)證時(shí),使用javascript可以在客戶端驗(yàn)證數(shù)據(jù),不需要把數(shù)據(jù)傳到服務(wù)器端再傳回來,比較節(jié)省時(shí)間。你可以把網(wǎng)頁(yè)里的內(nèi)容隱藏起來,然后當(dāng)鼠標(biāo)放到某個(gè)地方的時(shí)
38、候把隱藏的內(nèi)容顯示出來,就像這個(gè)頁(yè)面右上角的”我的知道“那個(gè)菜單做的事情。網(wǎng)頁(yè)里的下拉菜單基本上都使用js完成。當(dāng)你查看表格的時(shí)候,表格的內(nèi)容很多,你可以使用js給每一行數(shù)據(jù)設(shè)置不同的顏色以示區(qū)分,也可以用js完成鼠標(biāo)指到表格上表格就變色的功能。</p><p> 6、批量信息圖表統(tǒng)計(jì)</p><p> 程序以javascript實(shí)現(xiàn)將數(shù)據(jù)庫(kù)中動(dòng)態(tài)數(shù)據(jù)以圖表形式顯示在頁(yè)面上,利用aj
39、ax將實(shí)現(xiàn)更好的用戶體驗(yàn)。這樣做減輕了服務(wù)端的壓力。不過,這種方式的確定是客戶端變得龐大。而且其實(shí)現(xiàn)原理很復(fù)雜,基本是div實(shí)現(xiàn)點(diǎn)陣字原理(一點(diǎn)點(diǎn)畫上去的)來實(shí)現(xiàn)的。效率就顯得不夠快。和原來用jfreechart比較,感覺jfreechart不好的地方是他總是先生成圖。然后利用src來顯示,其效率也不怎么高。不過服務(wù)器好的話,客戶端就輕松。</p><p> 7、中文字符串相似度檢測(cè)的實(shí)現(xiàn)</p>
40、<p> Levenshtein 距離,又稱編輯距離,指的是兩個(gè)字符串之間,由一個(gè)轉(zhuǎn)換成另一個(gè)所需的最少編輯操作次數(shù)。許可的編輯操作包括將一個(gè)字符替換成另一個(gè)字符,插入一個(gè)字符,刪除一個(gè)字符。編輯距離的算法是首先由俄國(guó)科學(xué)家Levenshtein提出的,故又叫Levenshtein Distance算法。</p><p> 在程序中,為實(shí)現(xiàn)題目相似度匹配功能,我采用了Levenshtein Di
41、stance算法和最長(zhǎng)公共子序列算法LCS(Longest Common Subsequence)相結(jié)合的方式,計(jì)算預(yù)上報(bào)題目名稱和已發(fā)布題目的相似百分度。經(jīng)過大量數(shù)據(jù)測(cè)試,發(fā)現(xiàn)計(jì)算結(jié)果大于60%題目存在較為明顯的相似,故將結(jié)果定為相似度大于60%無法上報(bào)。核心代碼如下:</p><p> //LCS algorithm 最長(zhǎng)公共子序列算法</p><p> private stati
42、c int longestCommonSubstringLength(String S1, String S2){</p><p> return longestCommonSubstrings(S1, S2, 0).toString().length();</p><p><b> }</b></p><p> private stat
43、ic Collection<String> longestCommonSubstrings(String S1, String S2, int minimumLength){</p><p> Collection<Integer> indexes = new ArrayList<Integer>();</p><p> int Max = mini
44、mumLength;</p><p> for (int i = 0; i < S1.length(); i++){</p><p> for (int j = 0; j < S2.length(); j++){</p><p> int x = 0;</p><p> int y = Math.min(S1.length
45、()-i,S2.length()-j);</p><p> while (x < y && (S1.charAt(i + x) == S2.charAt(j + x) )){</p><p><b> x++;</b></p><p><b> }</b></p><p>
46、; if (x > Max){</p><p><b> Max = x;</b></p><p> indexes = new ArrayList<Integer>();</p><p> indexes.add(i);</p><p> }else if (x == Max){</p
47、><p> indexes.add(i);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> Collection<String> results = n
48、ew HashSet<String>();</p><p> for (Integer i : indexes){</p><p> results.add(S1.substring(i, (i + Max)));</p><p><b> }</b></p><p> return results;
49、</p><p><b> }</b></p><p> //Levenshtein Distance 算法實(shí)現(xiàn)</p><p> public static double getEditDistance(String s, String t) {</p><p> int d[][]; // matrix<
50、;/p><p> int n; // length of s</p><p> int m; // length of t</p><p> int i; // iterates through s</p><p> int j; // iterates through t</p><p> char s_i;
51、// ith character of s</p><p> char t_j; // jth character of t</p><p> int cost; // cost</p><p> int distance; //edit distance</p><p> double similarity;</p>
52、<p><b> // Step 1</b></p><p> n = s.length();</p><p> m = t.length();</p><p> String ss = s+s;</p><p> int len = longestCommonSubstringLength(ss,t
53、);</p><p> if(len>s.length()) len=s.length();</p><p><b> len *= 2;</b></p><p> // Prevent 100% similarity between a string and its</p><p> // cyclica
54、lly shifted version (e.g. "aircon" and "conair")</p><p> if (len == s.length() + t.length() && s.length()==t.length()){</p><p><b> len--;</b></p>
55、<p> similarity = len/((s.length()+t.length())*1.0)*100;</p><p> return similarity;</p><p><b> }else{</b></p><p> if (n == 0) {</p><p><b>
56、return m;</b></p><p><b> }</b></p><p> if (m == 0) {</p><p><b> return n;</b></p><p><b> }</b></p><p> d = n
57、ew int[n + 1][m + 1];</p><p><b> // Step 2</b></p><p> for (i = 0; i <= n; i++) {</p><p> d[i][0] = i;</p><p><b> }</b></p><p&
58、gt; for (j = 0; j <= m; j++) {</p><p> d[0][j] = j;</p><p><b> }</b></p><p><b> // Step 3</b></p><p> for (i = 1; i <= n; i++) {</
59、p><p> s_i = s.charAt(i - 1);</p><p><b> // Step 4</b></p><p> for (j = 1; j <= m; j++) {</p><p> t_j = t.charAt(j - 1);</p><p><b>
60、// Step 5</b></p><p> if (s_i == t_j) {</p><p><b> cost = 0;</b></p><p><b> } else {</b></p><p><b> cost = 1;</b></p>
61、;<p><b> }</b></p><p><b> // Step 6</b></p><p> d[i][j] = Minimum(d[i - 1][j] + 1, d[i][j - 1] + 1,</p><p> d[i - 1][j - 1] + cost);</p>&l
62、t;p><b> }</b></p><p><b> }</b></p><p> distance = d[n][m];</p><p> similarity = (1-distance/((s.length()+t.length())*1.0))*100;</p><p>
63、return similarity;</p><p><b> }</b></p><p><b> }</b></p><p> 8、美觀高效驗(yàn)證碼的實(shí)現(xiàn)</p><p> 驗(yàn)證碼一般是防止有人利用機(jī)器人自動(dòng)批量注冊(cè)、對(duì)特定的注冊(cè)用戶用特定程序暴力破解方式進(jìn)行不斷的登陸、灌水。因?yàn)轵?yàn)證碼
64、是一個(gè)混合了數(shù)字或符號(hào)的圖片,人眼看起來都費(fèi)勁,機(jī)器識(shí)別起來就更困難。</p><p> 我們的圖片驗(yàn)證碼經(jīng)過多次測(cè)試檢驗(yàn),采用數(shù)字“0-9”和字母“a-z”“A-Z”,排除易混淆的字母和數(shù)字,不區(qū)分大小寫。通過測(cè)試,乳白色底字碼更易識(shí)別,隨機(jī)干擾線和隨機(jī)干擾點(diǎn)20條左右最合適。</p><p> //定義驗(yàn)證碼圖像的緩沖流</p><p> Buffered
65、Image buffImg = new BufferedImage(</p><p> width, height,BufferedImage.TYPE_INT_RGB); </p><p><b> //產(chǎn)生圖形上下文</b></p><p> Graphics2D g = buffImg.createGraphics(); </
66、p><p> //創(chuàng)建隨機(jī)數(shù)產(chǎn)生函數(shù)</p><p> Random random = new Random(); </p><p> //將驗(yàn)證碼圖像背景填充為白色</p><p> g.setColor(Color.WHITE); </p><p> g.fillRect(0, 0, width, heigh
67、t); </p><p> //創(chuàng)建字體格式,字體的大小則根據(jù)驗(yàn)證碼圖片的高度來設(shè)定。</p><p> Font font = new Font("Fixedsys",Font.BOLD, fontHeight); </p><p><b> //設(shè)置字體。</b></p><p> g.s
68、etFont(font); </p><p> //為驗(yàn)證碼圖片畫邊框,為一個(gè)像素。</p><p> g.setColor(Color.GRAY); </p><p> g.drawRect(0, 0, width - 1, height - 1); </p><p> //隨機(jī)生產(chǎn)22跳圖片干擾線條,使驗(yàn)證碼圖片中的字符不被輕易識(shí)
69、別</p><p> g.setColor(Color.LIGHT_GRAY); </p><p> for(int i = 0; i<22; i++) </p><p><b> {</b></p><p> int x = random.nextInt(width); </p><p
70、> int y = random.nextInt(height); </p><p> int xl = random.nextInt(12); </p><p> int yl = random.nextInt(12); </p><p> g.drawLine(x, y, x + xl, y + yl); </p><p>
71、<b> }</b></p><p> //randomCode保存隨機(jī)產(chǎn)生的驗(yàn)證碼</p><p> StringBuffer randomCode = new StringBuffer(); </p><p><b> //定義顏色三素</b></p><p> int red = 0
72、, green = 0, blue = 0; </p><p> //隨機(jī)生產(chǎn)codeNum個(gè)數(shù)字驗(yàn)證碼</p><p> for (int i = 0; i<codeNum; i++) {</p><p> //得到隨機(jī)產(chǎn)生的驗(yàn)證碼</p><p> String strRand = String.valueOf(codes[
73、random.nextInt(codes.length)]); </p><p> //使用隨機(jī)函數(shù)產(chǎn)生隨機(jī)的顏色分量來構(gòu)造顏色值,這樣輸出的每位數(shù)字的顏色值都將不同。</p><p> red = random.nextInt(255); </p><p> green = random.nextInt(255); </p><p>
74、 blue = random.nextInt(255); </p><p> //隨即生成驗(yàn)證碼字符的水平偏移量</p><p> int w = 0;</p><p> int x = (i + 1) % 2;</p><p> if (x == random.nextInt(2)) {</p><p>
75、 w = codeY - random.nextInt(7);</p><p><b> } else {</b></p><p> w = codeY + random.nextInt(7);</p><p><b> }</b></p><p> //用隨機(jī)產(chǎn)生的顏色將驗(yàn)證碼繪制到圖像中
76、。</p><p> g.setColor(new Color(red, green, blue)); </p><p> g.drawString(strRand, fontHeight*i+10, codeY); </p><p> //將產(chǎn)生的四個(gè)隨機(jī)數(shù)組合在一起。</p><p> randomCode.append(strR
77、and);</p><p> 9、用戶密碼MD5加密及異常登錄的預(yù)防</p><p> 我們采用用戶密碼MD5加密技術(shù),這樣既能防止數(shù)據(jù)庫(kù)管理員盜取用戶數(shù)據(jù)非法操作,就算有人得到數(shù)據(jù)庫(kù),找到的也是MD5加密后的一段亂碼,破解是能破解,但是很費(fèi)工夫的。所以基本上可以說是安全的。以前MD5被認(rèn)為是不可逆的,不過現(xiàn)在被破解了,不過還是比較安全的。</p><p>
78、 Filter可以使用通配符用來過濾一個(gè)、多個(gè)url,或者過濾一個(gè)、多個(gè)的Servlet。</p><p> 我們使用Filter過濾一些成功操作界面,防止非法用戶繞過登錄頁(yè)面直接進(jìn)入到成功頁(yè)面。對(duì)用戶的異常訪問,用error.jsp頁(yè)面攔截,并在5秒后強(qiáng)行跳回登陸頁(yè)面,使用戶先登錄系統(tǒng)。</p><p> 4.3 項(xiàng)目研發(fā)時(shí)間線</p><p> 圖4.3.
79、1 項(xiàng)目研發(fā)時(shí)間線</p><p><b> 五、系統(tǒng)測(cè)試</b></p><p><b> 5.1 測(cè)試方案</b></p><p> 黑盒測(cè)試也稱功能測(cè)試或數(shù)據(jù)驅(qū)動(dòng)測(cè)試,它是在已知產(chǎn)品所應(yīng)具有的功能,通過測(cè)試來檢測(cè)每個(gè)功能是否都能正常使用,在測(cè)試時(shí),把程序看作一個(gè)不能打開的黑盒子,在完全不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特
80、性的情況下,測(cè)試者在程序接口進(jìn)行測(cè)試,它只檢查程序功能是否按照需求規(guī)格說明書的規(guī)定正常使用,程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù)而產(chǎn)生正確的輸出信息,并且保持外部信息(如數(shù)據(jù)庫(kù)或文件)的完整性。</p><p> "黑盒"法著眼于程序外部結(jié)構(gòu)、不考慮內(nèi)部邏輯結(jié)構(gòu)、針對(duì)軟件界面和軟件功能進(jìn)行測(cè)試。"黑盒"法是窮舉輸入測(cè)試,只有把所有可能的輸入都作為測(cè)試情況使用,才能以這種方法查出程
81、序中所有的錯(cuò)誤。實(shí)際上測(cè)試情況有無窮多個(gè),人們不僅要測(cè)試所有合法的輸入,而且還要對(duì)那些不合法但是可能的輸入進(jìn)行測(cè)試。</p><p> 白盒測(cè)試按照程序內(nèi)部的邏輯對(duì)程序進(jìn)行測(cè)試,檢查程序中的每條通路是否能按預(yù)定要求正確工作。白盒測(cè)試又稱為結(jié)構(gòu)測(cè)試。</p><p> 在這里主要采用的是黑盒測(cè)試,并以白盒測(cè)試為輔助測(cè)試。</p><p> 5.2 測(cè)試用例及結(jié)果
82、</p><p> 1.登錄時(shí),輸入正確的和錯(cuò)誤的用戶ID和密碼,轉(zhuǎn)向是否正確</p><p> 1)正確的用戶名和密碼:</p><p> 輸入:用戶名:10240001,密碼:10240001</p><p> 預(yù)期輸出:登陸到教師模塊主頁(yè)。</p><p> 2)錯(cuò)誤的用戶名和密碼:</p>
83、<p> 輸入:用戶名:12345,密碼:345</p><p> 預(yù)期輸出:跳轉(zhuǎn)到教師登陸頁(yè)面。</p><p> 以上測(cè)試用例經(jīng)過驗(yàn)證是正確的。</p><p> 2.教師登錄成功后,是否可以上報(bào)課題。</p><p> 圖5-1 添加課題測(cè)試</p><p> 3.是否可以修改個(gè)人信息。
84、</p><p> 圖5-2 修改個(gè)人信息測(cè)試</p><p> 4.是否可以修改課題信息。</p><p> 圖5-3修改課題信息測(cè)試</p><p><b> 六、軟件使用說明書</b></p><p><b> 6.1 登陸界面</b></p>
85、<p> 教師輸入正確的用戶名和密碼,就可以進(jìn)入到畢業(yè)設(shè)計(jì)管理系統(tǒng),初始密碼與用戶名一致,登陸界面如圖6-1所示 </p><p><b> 圖6-1 登陸界面</b></p><p><b> 6.2 主界面</b></p><p> 登陸驗(yàn)證若正確的話,進(jìn)入主界面,如圖6-2所示:</p>
86、;<p><b> 圖6-2 主界面</b></p><p> 6.3 查看個(gè)人信息</p><p> 點(diǎn)擊菜單欄“個(gè)人信息”欄目,進(jìn)入個(gè)人詳細(xì)信息表單,如下圖所示:</p><p> 圖6-3 個(gè)人信息查詢</p><p><b> 6.4 修改密碼</b></p&g
87、t;<p> 點(diǎn)擊菜單欄“修改密碼”欄目,進(jìn)入密碼修改界面:</p><p><b> 圖6-4 修改密碼</b></p><p> 6.5 維護(hù)個(gè)人信息</p><p> 點(diǎn)擊菜單欄“信息維護(hù)”欄目,進(jìn)入個(gè)人信息維護(hù)界面:</p><p> 圖6-5 維護(hù)個(gè)人信息</p><
88、p><b> 6.6 上報(bào)課題</b></p><p> 點(diǎn)擊菜單欄“上報(bào)課題”欄目,進(jìn)入上報(bào)課題界面,這里自動(dòng)進(jìn)行字符串的匹配,即題目相似度的檢測(cè),點(diǎn)擊添加按鈕,即可向數(shù)據(jù)庫(kù)中填入一條畢設(shè)題目,界面如下圖所示:</p><p><b> 圖6-6 上報(bào)課題</b></p><p><b> 6.7
89、 課題查詢</b></p><p> 點(diǎn)擊菜單欄“課題查詢”欄目,進(jìn)入課題查詢界面:</p><p><b> 圖6-7 課題查詢</b></p><p> 6.8 未評(píng)題目查詢</p><p> 點(diǎn)擊菜單欄“查詢未評(píng)題目”欄目,可以查看未評(píng)題目的列表,再點(diǎn)擊右側(cè)評(píng)審按鈕進(jìn)入題目評(píng)審界面,如下圖所示:
90、</p><p> 圖6-8 未評(píng)題目查詢</p><p><b> 6.9 題目評(píng)審</b></p><p> 題目評(píng)審界面如下圖所示,點(diǎn)擊評(píng)審按鈕提交對(duì)該題目的詳細(xì)評(píng)審意見,并由管理員最終審核發(fā)布。</p><p><b> 圖6-9 題目評(píng)審</b></p><p&
91、gt;<b> 6.10 任務(wù)下派</b></p><p> 由管理員查詢每道題目的評(píng)審意見,并選出任務(wù)數(shù)相對(duì)較少的評(píng)審人,將任務(wù)發(fā)布給該評(píng)審人,實(shí)現(xiàn)任務(wù)下派功能,界面如下:</p><p> 圖6-10 任務(wù)下派</p><p><b> 6.11發(fā)布題目</b></p><p> 點(diǎn)擊
92、發(fā)布按鈕將題目信息錄入正式庫(kù)中,即可實(shí)現(xiàn)題目發(fā)布功能,具體操作界面如下圖:</p><p> 圖6-11 發(fā)布題目</p><p><b> 6.12信息統(tǒng)計(jì)</b></p><p> 管理員有權(quán)限記錄和查看學(xué)生信息的統(tǒng)計(jì)、教師信息統(tǒng)計(jì)以及評(píng)審人信息統(tǒng)計(jì)的詳情,由圖表形式呈現(xiàn),如下圖:</p><p> 圖6-1
93、2 學(xué)生信息統(tǒng)計(jì)</p><p> 圖6-13 教師信息統(tǒng)計(jì)</p><p><b> 6.13信息管理</b></p><p> 信息管理模塊分為學(xué)生、老師、評(píng)審人和管理員的信息管理,具體界面如下,可實(shí)現(xiàn)各角色信息的增、刪、改、查:</p><p> 圖6-14 學(xué)生信息管理</p><p&
94、gt;<b> 七、設(shè)計(jì)總結(jié)</b></p><p> 本次工程開發(fā)綜合訓(xùn)練歷時(shí)3個(gè)月左右的時(shí)間,終于在我們小組的共同努力下完成了。期間,遇到過很多或大或小的問題,幸運(yùn)的是在我們?nèi)M的通力合作和老師的耐心指導(dǎo)下,都一一解決了。</p><p> 3個(gè)月的時(shí)間轉(zhuǎn)瞬即逝,但我不會(huì)忘記曾多少個(gè)夜里我們通宵調(diào)試代碼,多少次會(huì)議我們激烈爭(zhēng)辯發(fā)表改進(jìn)意見。3個(gè)月里不僅在我們
95、大家的通力合作下完成了任務(wù),更讓我見證了團(tuán)隊(duì)之間深深的友情。作為團(tuán)隊(duì)的小組長(zhǎng),我在一開始感到了巨大的壓力,但在團(tuán)隊(duì)首次會(huì)議開過之后,我知道我的擔(dān)心是多余的,例會(huì)上組員們各抒己見激烈辯論的情景讓我欣慰,也讓我感受到我們的團(tuán)隊(duì)真的很優(yōu)秀。十周左右的時(shí)間,鍛煉了我的團(tuán)隊(duì)領(lǐng)導(dǎo)能力,加強(qiáng)了我的專業(yè)技能,提升了我對(duì)J2EE框架的深入理解,更重要的是讓我感受到了深深的團(tuán)隊(duì)友情,這讓我對(duì)未來步入社會(huì)崗位充滿了憧憬和期望。</p><
96、p> 在本次設(shè)計(jì)中,我感覺自身的能力有了很大的提高。在這次訓(xùn)練中我們小組的每個(gè)人都負(fù)責(zé)完成系統(tǒng)的一個(gè)模塊,當(dāng)遇到問題時(shí),都會(huì)先去百度或者google上查,查不到的話,再去圖書館借書,總之,基本上遇到的難題都可以自行解決,在解決問題的同時(shí),我在認(rèn)真做著總結(jié),從中受益匪淺。</p><p><b> 八、致謝</b></p><p> 感謝這一學(xué)期給我們教授j
97、avaEE課程和指導(dǎo)我們進(jìn)行工程開發(fā)綜合訓(xùn)練的***老師,在他的耐心教授下,我熟悉了javaEE這一規(guī)范,掌握了一些開發(fā)JSP頁(yè)面的技巧,這為本次的工程開發(fā)綜合訓(xùn)練奠定了基礎(chǔ),再通過*老師的耐心指導(dǎo),我們小組基本上完成了本次設(shè)計(jì)。在此,再一次向*老師表示感謝!同時(shí),我想將這份謝意獻(xiàn)給我們團(tuán)隊(duì)的每一位成員,感謝你們這數(shù)十周來積極提議,辛苦編碼。感謝大家!</p><p><b> 九、參考文獻(xiàn)</
98、b></p><p> 1. 趙艷鐸等(譯). 數(shù)據(jù)庫(kù)原理(第5版) [M]. 清華大學(xué)出版社, 2011 </p><p> 2. 楊冬青等(譯). 數(shù)據(jù)庫(kù)系統(tǒng)概念(第6版) [M]. 機(jī)械工業(yè)出版社, 2012</p><p> 3. 金名等(譯). 數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)、實(shí)現(xiàn)與管理(第8版) [M]. 清華大學(xué)出版社, 2012</p>&
99、lt;p> 4. 劉智勇. SQL Server 2008寶典[M]. 電子工業(yè)出版社,2010</p><p> 5. 蘇金國(guó)等(譯). Oracle Database 9i/10g/11g編程藝術(shù)[M]. 人民郵電出版社, 2011</p><p> 6.張躍平等. JSP程序設(shè)計(jì)[M]. 清華大學(xué)出版社, 2009,8</p><p> 7.吳長(zhǎng)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)--畢業(yè)設(shè)計(jì)管理系統(tǒng)說明書
- 畢業(yè)設(shè)計(jì)說明書---畢業(yè)設(shè)計(jì)課題綜合管理系統(tǒng)
- 畢業(yè)設(shè)計(jì)說明書---畢業(yè)設(shè)計(jì)課題綜合管理系統(tǒng)
- 礦井畢業(yè)設(shè)計(jì)畢業(yè)設(shè)計(jì)說明書
- 畢業(yè)設(shè)計(jì)說明書---畢業(yè)設(shè)計(jì)課題綜合管理系統(tǒng).doc
- 醫(yī)院管理系統(tǒng)畢業(yè)設(shè)計(jì)說明書
- 網(wǎng)上訂餐系統(tǒng)畢業(yè)設(shè)計(jì)論文畢業(yè)設(shè)計(jì)說明書
- 【畢業(yè)設(shè)計(jì)】墊圈內(nèi)徑檢測(cè)裝置畢業(yè)設(shè)計(jì)說明書課程畢業(yè)設(shè)計(jì)說明書
- 【畢業(yè)設(shè)計(jì)】臺(tái)虎鉗畢業(yè)設(shè)計(jì)說明書
- 藥庫(kù)管理系統(tǒng)畢業(yè)設(shè)計(jì)說明書
- 訂單管理系統(tǒng)畢業(yè)設(shè)計(jì)說明書
- 畢業(yè)設(shè)計(jì)說明書—
- 【畢業(yè)設(shè)計(jì)】墊圈內(nèi)徑檢測(cè)裝置畢業(yè)設(shè)計(jì)說明書課程畢業(yè)設(shè)計(jì)說明書
- 學(xué)籍管理畢業(yè)設(shè)計(jì)說明書
- 空調(diào)系統(tǒng)設(shè)計(jì) 畢業(yè)設(shè)計(jì)說明書
- 財(cái)務(wù)系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)說明書
- 空調(diào)系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)說明書
- 【畢業(yè)設(shè)計(jì)】臺(tái)虎鉗畢業(yè)設(shè)計(jì)說明書
- 畢業(yè)設(shè)計(jì)說明書
- delphi物資管理系統(tǒng)畢業(yè)設(shè)計(jì)說明書
評(píng)論
0/150
提交評(píng)論