畢業(yè)設(shè)計管理系統(tǒng)設(shè)計畢業(yè)論文_第1頁
畢業(yè)設(shè)計管理系統(tǒng)設(shè)計畢業(yè)論文_第2頁
畢業(yè)設(shè)計管理系統(tǒng)設(shè)計畢業(yè)論文_第3頁
畢業(yè)設(shè)計管理系統(tǒng)設(shè)計畢業(yè)論文_第4頁
畢業(yè)設(shè)計管理系統(tǒng)設(shè)計畢業(yè)論文_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

WORD版本.畢業(yè)設(shè)計管理系統(tǒng)設(shè)計畢業(yè)論文目錄摘要 I目錄 II一、需求分析 11.1畢業(yè)論文管理的現(xiàn)狀 11.2畢業(yè)論文管理系統(tǒng)的優(yōu)勢 11.3系統(tǒng)流程圖 21.4層次結(jié)構(gòu)圖 31.5數(shù)據(jù)流程圖 61.5數(shù)據(jù)字典 7二、概念結(jié)構(gòu)設(shè)計 92.1系統(tǒng)E-R圖 9三、邏輯結(jié)構(gòu)設(shè)計 103.1各個表的結(jié)構(gòu) 10四、系統(tǒng)實現(xiàn) 134.1建立數(shù)據(jù)庫 134.1.1數(shù)據(jù)庫創(chuàng)建流程 134.1.2數(shù)據(jù)庫關(guān)系 134.2程序設(shè)計 144.2.1工程目錄結(jié)構(gòu) 144.2.2核心技術(shù)說明 144.3項目研發(fā)時間線 20五、系統(tǒng)測試 215.1測試方案 215.2測試用例及結(jié)果 21六、軟件使用說明書 246.1登陸界面 246.2主界面 246.3查看個人信息 256.4修改密碼 256.5維護(hù)個人信息 266.6上報課題 266.7課題查詢 276.8未評題目查詢 276.9題目評審 286.10任務(wù)下派 286.11發(fā)布題目 296.12信息統(tǒng)計 306.13信息管理 30七、設(shè)計總結(jié) 32八、致謝 33九、參考文獻(xiàn) 34WORD版本.一、需求分析1.1畢業(yè)論文管理的現(xiàn)狀目前,國外畢業(yè)論文選題一般采用兩種方式:一種將畢業(yè)設(shè)計存在軟盤上交;另一種則存放到教師的電腦上的一個共享目錄。但這兩種方法都有各自的弊端:前一種方法不方便攜帶、速度慢、容量小、易損壞;后一種方法雖然解決了軟盤容量小、容易壞的問題。但存在一個更致命的缺點:學(xué)生可以隨意的查看、更改和刪除其他同學(xué)的畢業(yè)設(shè)計,造成大量如抄襲畢業(yè)設(shè)計、惡意刪除或修改其他同學(xué)畢業(yè)設(shè)計的事情發(fā)生;老師在幫學(xué)生修改畢業(yè)設(shè)計時,也很容易弄不清楚畢業(yè)設(shè)計批改與否;畢業(yè)設(shè)計是誰的或是舊畢業(yè)設(shè)計沒刪除掉,跟新畢業(yè)設(shè)計搞混了等情況,雖然有些可以用嚴(yán)格的紀(jì)律來實現(xiàn)管理,但仍然會給學(xué)生和老師帶來很多的麻煩。而且,由于畢業(yè)設(shè)計是一個持續(xù)較長時間的過程,這其中需要同學(xué)和老師不斷的溝通,但是期間若是由于學(xué)生有事或身體不適等情況,就不得不中途請假,而這勢必會影響到畢業(yè)設(shè)計的順利完成。在當(dāng)前的信息化時代中,任何學(xué)校,都需要一個實用的畢業(yè)論文選題來規(guī)畢業(yè)論文選題,這將會大大提高學(xué)校的管理水平,優(yōu)化資源,實現(xiàn)效益的最大化?,F(xiàn)在國外也有很多畢業(yè)論文選題的軟件,采用的技術(shù)也是多種多樣,如基于JSP、FTP模式,但大多數(shù)畢業(yè)論文選題主要用于網(wǎng)絡(luò)學(xué)院的遠(yuǎn)程教學(xué)。至于校園的正規(guī)教學(xué),利用畢業(yè)論文選題組織管理教學(xué)活動的并不多。針對國外對教學(xué)管理軟件的巨大需要和基本需要,一個好的教學(xué)管理軟件,必須功能齊全,操作簡便,向用戶展示友善的操作界面。在完善功能的同時又必須兼顧系統(tǒng)的靈活性,安全性,健壯性。一個好的教學(xué)管理系統(tǒng),不管是計算機(jī)專業(yè)人員還是其他用戶都能很快上手,操作簡單,便于安裝,容易普及。1.2畢業(yè)論文管理系統(tǒng)的優(yōu)勢由于學(xué)校教學(xué)功能的特殊定位,致使教師和學(xué)生必須在除了簡單的師生區(qū)別外,還有合作意味的關(guān)系。學(xué)生上交畢業(yè)設(shè)計和老師批改畢業(yè)設(shè)計,這本身除了學(xué)習(xí)交流外,還是一個合作的概念。所以,這其中的信息管理流程,需要以一個規(guī)的MIS來管理。畢業(yè)論文管理系統(tǒng)的優(yōu)勢主要表現(xiàn)在三個方面:1、畢業(yè)設(shè)計無紙化,環(huán)保又方便。傳統(tǒng)的畢業(yè)設(shè)計上交方式,都是經(jīng)由學(xué)生科目代表統(tǒng)一收齊后,交到教師辦公室,然后教師抽取一個整段的時間,或是若干分時間段,一份一份地手工翻閱批改,然后再做好相關(guān)記錄。這種傳統(tǒng)的方式,一是會有很大的體力消耗,二是在精力上也是不小的付出,而且這種辛苦在很多時候往往沒能得到滿意的回復(fù)。而無紙化畢業(yè)設(shè)計,只需在電腦前點點鼠標(biāo),在體力上幾乎沒有多大的消耗,而且在環(huán)保、效率、針對性教學(xué)指導(dǎo)方面做得要比傳統(tǒng)的畢業(yè)論文選題科學(xué)得多。2、科學(xué)管理,安全可靠。傳統(tǒng)的畢業(yè)論文選題方式,都是一份份獨立的畢業(yè)設(shè)計,一個學(xué)生對應(yīng)一份,而這么一撂的設(shè)計,經(jīng)常會由于各種原因,丟失或是污損,給畢業(yè)論文選題和教學(xué)進(jìn)程帶來很大的麻煩和不便。而畢業(yè)論文選題的動作,只需做好系統(tǒng)數(shù)據(jù)庫的保護(hù),以上問題可以迎刃而解了。3、簡化工作,促進(jìn)其他方面的綜合發(fā)展。由于畢業(yè)論文選題的介入運行,可以使教師騰出更多的時間,做更多針對性的個性化教學(xué)服務(wù),從而使每個學(xué)生都有機(jī)會在學(xué)業(yè)上有更大的進(jìn)步。1.3系統(tǒng)流程圖登錄失敗登陸成功登陸者的身份登錄失敗登陸成功登陸者的身份學(xué)生登錄界面主界面學(xué)生模塊教師模塊評審人模塊管理員模塊教師管理評審人圖1-1系統(tǒng)流程圖1.4層次結(jié)構(gòu)圖圖1-2學(xué)生層次結(jié)構(gòu)圖圖1-3教師層次結(jié)構(gòu)圖圖1-4評審人層次結(jié)構(gòu)圖圖1-5管理員層次結(jié)構(gòu)圖1.5數(shù)據(jù)流程圖 圖1-6系統(tǒng)數(shù)據(jù)流圖1.5數(shù)據(jù)字典主要的數(shù)據(jù)字典:表1-1管理員信息數(shù)據(jù)字典名字:管理員信息別名:administrator描述:管理員的相關(guān)信息定義:管理員信息=管理員id+管理員name+管理員password位置:存于數(shù)據(jù)庫表1-2教師信息數(shù)據(jù)字典名字:教師信息別名:teacher描述:教師的相關(guān)信息定義:教師信息=教師id+教師密碼+教師+教師職稱+教師性別+教師工作地點+教師QQ+教師位置:存于數(shù)據(jù)庫表1-3學(xué)生信息數(shù)據(jù)字典名字:學(xué)生信息別名:student描述:學(xué)生的相關(guān)信息定義:學(xué)生信息=學(xué)生id+學(xué)生+學(xué)生性別+學(xué)生系別+學(xué)生專業(yè)+學(xué)生年級+學(xué)生班級+學(xué)生成績+學(xué)生+學(xué)生密碼位置:存于數(shù)據(jù)庫表1-4課題信息數(shù)據(jù)字典名字:課題信息別名:topic描述:課題的相關(guān)信息定義:課題信息=課題id+課題名+出題教師+課題類別+所屬專業(yè)+需求人數(shù)+課題要求+課題容位置:存于數(shù)據(jù)庫表1-5學(xué)生選題數(shù)據(jù)字典名字:學(xué)生選題信息別名:choosetopic描述:學(xué)生和已選的課題的對應(yīng)關(guān)系定義:學(xué)生選題信息=學(xué)生id+課題id位置:存于數(shù)據(jù)庫,在選題時應(yīng)用表1-6管理員分配答辯老師數(shù)據(jù)字典名字:管理員分配答辯老師別名:answer描述:管理員為每一個課題分配5位答辯老師,其中一名為答辯組長。定義:管理員分配答辯老師=答辯題目id+答辯題目+答辯組長+答辯老師1+答辯老師2+答辯老師3+答辯老師4+答辯時間+答辯教室位置:存于數(shù)據(jù)庫,在答辯時應(yīng)用表1-7學(xué)生成績信息數(shù)據(jù)字典名字:學(xué)生成績信息別名:score描述:學(xué)生成績的相關(guān)信息定義:學(xué)生成績信息=成績id+學(xué)生名字+實習(xí)成績+指導(dǎo)成績+評閱成績+答辯成績位置:存于數(shù)據(jù)庫,在歸檔時應(yīng)用二、概念結(jié)構(gòu)設(shè)計2.1系統(tǒng)E-R圖 本系統(tǒng)涉及的實體主要由管理員、教師、學(xué)生、課題組成,主要有監(jiān)督、出題、審題、選題等幾個關(guān)系。各實體屬性和關(guān)系圖如下圖所示。管理員姓名密碼管理員姓名密碼教師職稱學(xué)歷密碼性別教研室姓名電話專業(yè)監(jiān)督監(jiān)督監(jiān)督學(xué)生密碼班級電話性別姓名課題專業(yè)班級評題人出題人名稱管理員學(xué)生教師課題審題出題選題1n1n1nnn11n圖2-1系統(tǒng)E-R圖三、邏輯結(jié)構(gòu)設(shè)計3.1各個表的結(jié)構(gòu)表3-1教師表(T_teacher)序號列號數(shù)據(jù)類型長度小數(shù)標(biāo)識主鍵允許空默認(rèn)值示意說明1Tidint20是否教工號2Tnamevachar203Tpasswordvarchar32否密碼MD5加密表3-2教師詳細(xì)信息表(T_teadetail)序號列號數(shù)據(jù)類型長度小數(shù)標(biāo)識主鍵允許空默認(rèn)值示意說明1TidInt是否教工號外鍵(T_teacher::Tid)2TnameVachar203Tsexchar2性別4Schidtinyint學(xué)院號外鍵(T_schools::Schid)5Tphonebigint6Tqqbigintqq7Tmailvarchar508Tworkplacevarchar30辦公地點9Ttitlevarchar10職稱表3-3畢設(shè)題目表(T_topic)序號列號數(shù)據(jù)類型長度小數(shù)標(biāo)識主鍵允許空默認(rèn)值示意說明1Topidint是否題目編號2Topnamevarchar50否題目名稱3Toppropertychar8題目性質(zhì)理論研究,生產(chǎn)實踐,科學(xué)實驗4Toptypechar10題目類型工程設(shè)計型,工程技術(shù)型,實驗研究型,軟件開發(fā)型5Topsourcevarchar50題目來源6Topcontenttext題目容7Toptimedatetime否getdate()發(fā)布日期8Topselectbit0是否已被選1為是;0為否9Tidint否教師編號外鍵(T_teacher::Tid)表3-4畢設(shè)題目臨時表(T_temptopictb)序號列號數(shù)據(jù)類型長度小數(shù)標(biāo)識主鍵允許空默認(rèn)值示意說明1Topidint是否題目編號2Topnamevarchar50否題目名稱3Toppropertychar8題目性質(zhì)理論研究,生產(chǎn)實踐,科學(xué)實驗4Toptypechar10題目類型工程設(shè)計型,工程技術(shù)型,實驗研究型,軟件開發(fā)型5Topsourcevarchar50題目來源6Topcontenttext題目容7Toptimedatetime否getdate()上報日期8Tidint教師編號外鍵(T_teacher::Tid)9Ridint0評審編號外鍵(T_reviewer::Rid)表3-5系(專業(yè))表(T_faculties)序號列號數(shù)據(jù)類型長度小數(shù)標(biāo)識主鍵允許空默認(rèn)值示意說明1Fidtinyint是否系編號2Fnamevarchar30否系名稱表3-6-學(xué)院表(T_schools)序號列號數(shù)據(jù)類型長度小數(shù)標(biāo)識主鍵允許空默認(rèn)值示意說明1Schidtinyint是否學(xué)院編號2Schnamevarchar30否學(xué)院名稱四、系統(tǒng)實現(xiàn)4.1建立數(shù)據(jù)庫數(shù)據(jù)庫采用SqlServer2008,數(shù)據(jù)庫名稱為GPMS。4.1.1數(shù)據(jù)庫創(chuàng)建流程數(shù)據(jù)庫創(chuàng)建流程如下:圖4.1.1數(shù)據(jù)庫創(chuàng)建流程4.1.2數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫關(guān)系圖如下:圖4.1.2數(shù)據(jù)庫關(guān)系圖4.2程序設(shè)計4.2.1工程目錄結(jié)構(gòu) 4.2.2核心技術(shù)說明1、 J2EE中重量級框架我們采用JavaServlet+JavaServerPages(JSP)+EnterpriseJavaBean(EJB)的J2EE中重量級框架,其中所包含的各類組件、服務(wù)架構(gòu)及技術(shù)層次,均有共同的標(biāo)準(zhǔn)及規(guī)格,讓各種依循J2EE架構(gòu)的不同平臺之間,存在良好的兼容性,解決過去企業(yè)后端使用的信息產(chǎn)品彼此之間無法兼容,企業(yè)部或外部難以互通的窘境。2、 DAO(數(shù)據(jù)庫接口層)的封裝在核心J2EE模式中是這樣介紹DAO模式的:為了建立一個健壯的J2EE應(yīng)用,應(yīng)該將所有對數(shù)據(jù)源的訪問操作抽象封裝在一個公共API中。用程序設(shè)計的語言來說,就是建立一個接口,接口中定義了此應(yīng)用程序中將會用到的所有事務(wù)方法。在這個應(yīng)用程序中,當(dāng)需要和數(shù)據(jù)源進(jìn)行交互的時候則使用這個接口,并且編寫一個單獨的類來實現(xiàn)這個接口在邏輯上對應(yīng)這個特定的數(shù)據(jù)存儲。我們采用DAO的思想,將所有對數(shù)據(jù)源數(shù)據(jù)庫的訪問操作抽象封裝在幾個接口類中,使事務(wù)界限更加清晰,分離了業(yè)務(wù)邏輯和數(shù)據(jù)庫基礎(chǔ)操作,代碼結(jié)構(gòu)也看起來非常清晰。還有一個好處是,數(shù)據(jù)庫的修改只要修改DAO層的訪問方式就可以了,不用整個項目都進(jìn)行修改。3、 Ajax技術(shù)異步刷新傳統(tǒng)的web應(yīng)用允許用戶填寫表單(form),當(dāng)提交表單時就向web服務(wù)器發(fā)送一個請求。服務(wù)器接收并處理傳來的表單,然后返回一個新的網(wǎng)頁。這個做法浪費了許多帶寬,因為在前后兩個頁面中的大部分HTML代碼往往是相同的。由于每次應(yīng)用的交互都需要向服務(wù)器發(fā)送請求,應(yīng)用的響應(yīng)時間就依賴于服務(wù)器的響應(yīng)時間。這導(dǎo)致了用戶界面的響應(yīng)比本地應(yīng)用慢得多。與此不同,AJAX應(yīng)用可以僅向服務(wù)器發(fā)送并取回必需的數(shù)據(jù)(而不是返回整個頁面,只是把從服務(wù)器端上取出的數(shù)據(jù)填充到div或span層上去而已,實現(xiàn)無刷新的效果),它使用SOAP或其它一些基于XML的web接口,并在客戶端采用JavaScript處理來自服務(wù)器的響應(yīng)。因為在服務(wù)器和瀏覽器之間交換的數(shù)據(jù)大量減少,結(jié)果我們就能看到響應(yīng)更快的應(yīng)用。同時很多的處理工作可以在發(fā)出請求的客戶端機(jī)器上完成,所以Web服務(wù)器的處理時間也減少了。使用Ajax的最大優(yōu)點,就是能在不更新整個頁面的前提下維護(hù)數(shù)據(jù)。這使得Web應(yīng)用程序更為迅捷地回應(yīng)用戶動作,并避免了在網(wǎng)絡(luò)上發(fā)送那些沒有改變過的信息。Ajax不需要任何瀏覽器插件,但需要用戶允許JavaScript在瀏覽器上執(zhí)行。4、 數(shù)據(jù)庫連接池在傳統(tǒng)的兩層結(jié)構(gòu)中,客戶端程序在啟動時打開數(shù)據(jù)庫連接,在退出程序時關(guān)閉數(shù)據(jù)庫連接。這樣,在整個程序運行中,每個客戶端始終占用一個數(shù)據(jù)庫連接,即使在大量沒有數(shù)據(jù)庫操作的空閑時間,如用戶輸入數(shù)據(jù)時,從而造成數(shù)據(jù)庫連接的使用效率低下。在三層結(jié)構(gòu)模式中,數(shù)據(jù)庫連接通過中間層的連接池管理。只有當(dāng)用戶真正需要進(jìn)行數(shù)據(jù)庫操作時,中間層才從連接池申請一個連接,數(shù)據(jù)庫操作完畢,連接立即釋放到連接池中,以供其他用戶使用。這樣,不僅大大提高了數(shù)據(jù)庫連接的使用效率,使得大量用戶可以共享較少的數(shù)據(jù)庫連接,而且省去了建立連接的時間。我們以Tomcat7數(shù)據(jù)庫連接池配置sqlserver2008。TomcatJDBC連接池提供對多種數(shù)據(jù)庫的支持。前提要修改tomcat服務(wù)器目錄下面的conf中的Context.xml配置文件和程序中的Web.xml文件,代碼中以如下方式實現(xiàn):Context

c

=

new

InitialContext();

DataSource

ds

=

(DataSource)c.lookup("java:comp/env/jdbc/books");

conn

=

ds.getConnection();5、 動態(tài)頁面的實現(xiàn)(CSS+動態(tài)js腳本)JS的作用是制作動.態(tài)網(wǎng)頁效果等,是提高用戶體驗的利器!而CSS是定義網(wǎng)頁樣式,讓網(wǎng)頁元素更好的表現(xiàn)給用戶,好的的網(wǎng)頁表現(xiàn)形式也能提高用戶體驗!js可以使網(wǎng)頁的功能更加豐富,給網(wǎng)頁添加更多實時的、動態(tài)的、交互的容。當(dāng)服務(wù)端需要對數(shù)據(jù)進(jìn)行驗證時,使用javascript可以在客戶端驗證數(shù)據(jù),不需要把數(shù)據(jù)傳到服務(wù)器端再傳回來,比較節(jié)省時間。你可以把網(wǎng)頁里的容隱藏起來,然后當(dāng)鼠標(biāo)放到某個地方的時候把隱藏的容顯示出來,就像這個頁面右上角的”我的知道“那個菜單做的事情。網(wǎng)頁里的下拉菜單基本上都使用js完成。當(dāng)你查看表格的時候,表格的容很多,你可以使用js給每一行數(shù)據(jù)設(shè)置不同的顏色以示區(qū)分,也可以用js完成鼠標(biāo)指到表格上表格就變色的功能。6、 批量信息圖表統(tǒng)計程序以javascript實現(xiàn)將數(shù)據(jù)庫中動態(tài)數(shù)據(jù)以圖表形式顯示在頁面上,利用ajax將實現(xiàn)更好的用戶體驗。這樣做減輕了服務(wù)端的壓力。不過,這種方式的確定是客戶端變得龐大。而且其實現(xiàn)原理很復(fù)雜,基本是div實現(xiàn)點陣字原理(一點點畫上去的)來實現(xiàn)的。效率就顯得不夠快。和原來用jfreechart比較,感覺jfreechart不好的地方是他總是先生成圖。然后利用src來顯示,其效率也不怎么高。不過服務(wù)器好的話,客戶端就輕松。7、 中文字符串相似度檢測的實現(xiàn)Levenshtein距離,又稱編輯距離,指的是兩個字符串之間,由一個轉(zhuǎn)換成另一個所需的最少編輯操作次數(shù)。許可的編輯操作包括將一個字符替換成另一個字符,插入一個字符,刪除一個字符。編輯距離的算法是首先由俄國科學(xué)家Levenshtein提出的,故又叫LevenshteinDistance算法。在程序中,為實現(xiàn)題目相似度匹配功能,我采用了LevenshteinDistance算法和最長公共子序列算法LCS(LongestCommonSubsequence)相結(jié)合的方式,計算預(yù)上報題目名稱和已發(fā)布題目的相似百分度。經(jīng)過大量數(shù)據(jù)測試,發(fā)現(xiàn)計算結(jié)果大于60%題目存在較為明顯的相似,故將結(jié)果定為相似度大于60%無法上報。核心代碼如下://LCSalgorithm最長公共子序列算法privatestaticintlongestCommonSubstringLength(StringS1,StringS2){ returnlongestCommonSubstrings(S1,S2,0).toString().length(); }privatestaticCollection<String>longestCommonSubstrings(StringS1,StringS2,intminimumLength){ Collection<Integer>indexes=newArrayList<Integer>(); intMax=minimumLength; for(inti=0;i<S1.length();i++){ for(intj=0;j<S2.length();j++){ intx=0; inty=Math.min(S1.length()-i,S2.length()-j); while(x<y&&(S1.charAt(i+x)==S2.charAt(j+x))){ x++; } if(x>Max){ Max=x; indexes=newArrayList<Integer>(); indexes.add(i); }elseif(x==Max){ indexes.add(i); } } } Collection<String>results=newHashSet<String>(); for(Integeri:indexes){ results.add(S1.substring(i,(i+Max))); } returnresults; }//LevenshteinDistance算法實現(xiàn)publicstaticdoublegetEditDistance(Strings,Stringt){intd[][];//matrixintn;//lengthofsintm;//lengthoftinti;//iteratesthroughsintj;//iteratesthroughtchars_i;//ithcharacterofschart_j;//jthcharacteroftintcost;//costintdistance;//editdistancedoublesimilarity;//Step1n=s.length();m=t.length();Stringss=s+s;intlen=longestCommonSubstringLength(ss,t);if(len>s.length())len=s.length();len*=2;//Prevent100%similaritybetweenastringandits//cyclicallyshiftedversion(e.g."aircon"and"conair")if(len==s.length()+t.length()&&s.length()==t.length()){ len--; similarity=len/((s.length()+t.length())*1.0)*100; returnsimilarity;}else{ if(n==0){ returnm; } if(m==0){ returnn; } d=newint[n+1][m+1]; //Step2 for(i=0;i<=n;i++){ d[i][0]=i; } for(j=0;j<=m;j++){ d[0][j]=j; } //Step3 for(i=1;i<=n;i++){ s_i=s.charAt(i-1); //Step4 for(j=1;j<=m;j++){ t_j=t.charAt(j-1); //Step5 if(s_i==t_j){ cost=0; }else{ cost=1; } //Step6 d[i][j]=Minimum(d[i-1][j]+1,d[i][j-1]+1, d[i-1][j-1]+cost); } } distance=d[n][m]; similarity=(1-distance/((s.length()+t.length())*1.0))*100; returnsimilarity;}}8、 美觀高效驗證碼的實現(xiàn)驗證碼一般是防止有人利用機(jī)器人自動批量注冊、對特定的注冊用戶用特定程序暴力破解方式進(jìn)行不斷的登陸、灌水。因為驗證碼是一個混合了數(shù)字或符號的圖片,人眼看起來都費勁,機(jī)器識別起來就更困難。我們的圖片驗證碼經(jīng)過多次測試檢驗,采用數(shù)字“0-9”和字母“a-z”“A-Z”,排除易混淆的字母和數(shù)字,不區(qū)分大小寫。通過測試,乳白色底字碼更易識別,隨機(jī)干擾線和隨機(jī)干擾點20條左右最合適。//定義驗證碼圖像的緩沖流 BufferedImagebuffImg=newBufferedImage( width,height,BufferedImage.TYPE_INT_RGB); //產(chǎn)生圖形上下文 Graphics2Dg=buffImg.createGraphics(); //創(chuàng)建隨機(jī)數(shù)產(chǎn)生函數(shù) Randomrandom=newRandom(); //將驗證碼圖像背景填充為白色 g.setColor(Color.WHITE); g.fillRect(0,0,width,height); //創(chuàng)建字體格式,字體的大小則根據(jù)驗證碼圖片的高度來設(shè)定。 Fontfont=newFont("Fixedsys",Font.BOLD,fontHeight); //設(shè)置字體。 g.setFont(font); //為驗證碼圖片畫邊框,為一個像素。 g.setColor(Color.GRAY); g.drawRect(0,0,width-1,height-1); //隨機(jī)生產(chǎn)22跳圖片干擾線條,使驗證碼圖片中的字符不被輕易識別 g.setColor(Color.LIGHT_GRAY); for(inti=0;i<22;i++) { intx=random.nextInt(width); inty=random.nextInt(height); intxl=random.nextInt(12); intyl=random.nextInt(12); g.drawLine(x,y,x+xl,y+yl); } //randomCode保存隨機(jī)產(chǎn)生的驗證碼 StringBufferrandomCode=newStringBuffer(); //定義顏色三素 intred=0,green=0,blue=0; //隨機(jī)生產(chǎn)codeNum個數(shù)字驗證碼 for(inti=0;i<codeNum;i++){ //得到隨機(jī)產(chǎn)生的驗證碼 StringstrRand=String.valueOf(codes[random.nextInt(codes.length)]); //使用隨機(jī)函數(shù)產(chǎn)生隨機(jī)的顏色分量來構(gòu)造顏色值,這樣輸出的每位數(shù)字的顏色值都將不同。 red=random.nextInt(255); green=random.nextInt(255); blue=random.nextInt(255);//隨即生成驗證碼字符的水平偏移量intw=0;intx=(i+1)%2;if(x==random.nextInt(2)){w=codeY-random.nextInt(7);}else{w=codeY+random.nextInt(7);} //用隨機(jī)產(chǎn)生的顏色將驗證碼繪制到圖像中。 g.setColor(newColor(red,green,blue)); g.drawString(strRand,fontHeight*i+10,codeY); //將產(chǎn)生的四個隨機(jī)數(shù)組合在一起。 randomCode.append(strRand);9、 用戶密碼MD5加密及異常登錄的預(yù)防我們采用用戶密碼MD5加密技術(shù),這樣既能防止數(shù)據(jù)庫管理員盜取用戶數(shù)據(jù)非法操作,就算有人得到數(shù)據(jù)庫,找到的也是MD5加密后的一段亂碼,破解是能破解,但是很費工夫的。所以基本上可以說是安全的。以前MD5被認(rèn)為是不可逆的,不過現(xiàn)在被破解了,不過還是比較安全的。Filter可以使用通配符用來過濾一個、多個url,或者過濾一個、多個的Servlet。我們使用Filter過濾一些成功操作界面,防止非法用戶繞過登錄頁面直接進(jìn)入到成功頁面。對用戶的異常訪問,用error.jsp頁面攔截,并在5秒后強(qiáng)行跳回登陸頁面,使用戶先登錄系統(tǒng)。4.3項目研發(fā)時間線圖4.3.1項目研發(fā)時間線五、系統(tǒng)測試5.1測試方案黑盒測試也稱功能測試或數(shù)據(jù)驅(qū)動測試,它是在已知產(chǎn)品所應(yīng)具有的功能,通過測試來檢測每個功能是否都能正常使用,在測試時,把程序看作一個不能打開的黑盒子,在完全不考慮程序部結(jié)構(gòu)和部特性的情況下,測試者在程序接口進(jìn)行測試,它只檢查程序功能是否按照需求規(guī)格說明書的規(guī)定正常使用,程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù)而產(chǎn)生正確的輸出信息,并且保持外部信息(如數(shù)據(jù)庫或文件)的完整性。"黑盒"法著眼于程序外部結(jié)構(gòu)、不考慮部邏輯結(jié)構(gòu)、針對軟件界面和軟件功能進(jìn)行測試。"黑盒"法是窮舉輸入測試,只有把所有可能的輸入都作為測試情況使用,才能以這種方法查出程序中所有的錯誤。實際上測試情況有無窮多個,人們不僅要測試所有合法的輸入,而且還要對那些不合法但是可能的輸入進(jìn)行測試。白盒測試按照程序部的邏輯對程序進(jìn)行測試,檢查程序中的每條通路是否能按預(yù)定要求正確工作。白盒測試又稱為結(jié)構(gòu)測試。在這里主要采用的是黑盒測試,并以白盒測試為輔助測試。5.2測試用例及結(jié)果1.登錄時,輸入正確的和錯誤的用戶ID和密碼,轉(zhuǎn)向是否正確1)正確的用戶名和密碼:輸入:用戶名:10240001,密碼:10240001預(yù)期輸出:登陸到教師模塊主頁。2)錯誤的用戶名和密碼:輸入:用戶名:12345,密碼:345預(yù)期輸出:跳轉(zhuǎn)到教師登陸頁面。以上測試用例經(jīng)過驗證是正確的。2.教師登錄成功后,是否可以上報課題。圖5-1添加課題測試3.是否可以修改個人信息。圖5-2修改個人信息測試4.是否可以修改課題信息。圖5-3修改課題信息測試六、軟件使用說明書6.1登陸界面教師輸入正確的用戶名和密碼,就可以進(jìn)入到畢業(yè)設(shè)計管理系統(tǒng),初始密碼與用戶名一致,登陸界面如圖6-1所示圖6-1登陸界面6.2主界面登陸驗證若正確的話,進(jìn)入主界面,如圖6-2所示:圖6-2主界面6.3查看個人信息 點擊菜單欄“個人信息”欄目,進(jìn)入個人詳細(xì)信息表單,如下圖所示:圖6-3個人信息查詢6.4修改密碼 點擊菜單欄“修改密碼”欄目,進(jìn)入密碼修改界面:圖6-4修改密碼6.5維護(hù)個人信息 點擊菜單欄“信息維護(hù)”欄目,進(jìn)入個人信息維護(hù)界面:圖6-5維護(hù)個人信息6.6上報課題 點擊菜單欄“上報課題”欄目,進(jìn)入上報課題界面,這里自動進(jìn)行字符串的匹配,即題目相似度的檢測,點擊添加按鈕,即可向數(shù)據(jù)庫中填入一條畢設(shè)題目,界面如下圖所示:圖6-6上報課題6.7課題查詢 點擊菜單欄“課題查詢”欄目,進(jìn)入課題查詢界面:圖6-7課題查詢6.8未評題目查詢 點擊菜單欄“查詢未評題目”欄目,可以查看未評題目的列表,再點擊右側(cè)評審按鈕進(jìn)入題目評審界面,如下圖所示:圖6-8未評題目查詢6.9題目評審 題目評審界面如下圖所示,點擊評審按鈕提交對該題目的詳細(xì)評審意見,并由管理員最終審核發(fā)布。圖6-9題目評審6.10任務(wù)下派 由管理員查詢每道題目的評審意見,并選出任務(wù)數(shù)相對較少的評審人,將任務(wù)發(fā)布給該評審人,實現(xiàn)任務(wù)下派功能,界面如下:圖6-10任務(wù)下派6.11發(fā)布題目 點擊發(fā)布按鈕將題目信息錄入正式庫中,即可實現(xiàn)題目發(fā)布功能,具體操作界面如下圖:圖6-11發(fā)布題目6.12信息統(tǒng)計 管理員有權(quán)限記錄和查看學(xué)生信息的統(tǒng)計、教師信息統(tǒng)計以及評審人信息統(tǒng)計的詳情,由圖表形式呈現(xiàn),如下圖:圖6-12學(xué)生信息

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論