版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
PAGEPAGE442015屆普通本科畢業(yè)論文(設(shè)計)存檔編號:畢業(yè)論文(設(shè)計)題目:基于SSH的計算機基礎(chǔ)知識在線考試系統(tǒng)專業(yè):軟件工程院系:信息工程學(xué)院年級:2011級學(xué)號:11150038姓名:李艷平指導(dǎo)教師:關(guān)培超職稱:講師湖北經(jīng)濟學(xué)院教務(wù)處制目錄TOC\o"1-3"\h\u18220目錄 132075摘要 312868ABSTRACT 410566第1章緒論 5283291.1系統(tǒng)開發(fā)背景 568411.2國內(nèi)外研究現(xiàn)狀及分析 5285611.3系統(tǒng)開發(fā)意義 6155821.4本文組織結(jié)構(gòu) 611432第2章系統(tǒng)概述 7257692.1可行性研究 7151662.2系統(tǒng)目標(biāo) 7157832.3開發(fā)環(huán)境 8240962.4相關(guān)理論和技術(shù) 85895第3章系統(tǒng)分析與概要設(shè)計 10105163.1需求分析 10229323.2系統(tǒng)功能結(jié)構(gòu) 12304513.3系統(tǒng)流程圖 1336533.4數(shù)據(jù)庫設(shè)計 1425442第4章系統(tǒng)詳細設(shè)計與實現(xiàn) 21232934.1前臺首頁設(shè)計與實現(xiàn) 21304044.2考生信息模塊設(shè)計與實現(xiàn) 2195624.3在線考試模塊設(shè)計與實現(xiàn) 24140194.4后臺首頁設(shè)計與實現(xiàn) 265654.5試卷管理模塊設(shè)計與實現(xiàn) 27233734.6考試題目管理模塊設(shè)計與實現(xiàn) 2811886第5章關(guān)鍵代碼與難點分析 32101725.1SSH全注解框架的搭建 32312175.2Struts2攔截器 35180165.3基于注解的strutsaction跳轉(zhuǎn) 35244745.4Action處理AJAX異步請求 363325.5填空題評分方法 3722855第6章總結(jié) 4119089致謝 4314768參考文獻 44摘要隨著科學(xué)技術(shù)的高速發(fā)展,網(wǎng)絡(luò)技術(shù)已經(jīng)逐漸深入到我們的日常生活中。同時它也帶來了教育方式的一次變革,而在線考試則是一個很重要的方面?;诰W(wǎng)絡(luò)技術(shù)的在線考試系統(tǒng)則可以借助于遍布全球的Internet進行。在線考試系統(tǒng)(OnlineTest)是基于JavaEE和Struts2+Hibernate+Spring框架,采用Eclipse開發(fā)工具+MySQL數(shù)據(jù)庫+Tomcat服務(wù)器開發(fā)的一個基于Web的在線考試平臺,適合各行各業(yè)的網(wǎng)上考試、作業(yè)、練習(xí)等。它采用web方式,無需安裝客戶端,只需一部能上網(wǎng)的工具,即可實現(xiàn)無紙化考試??荚囅到y(tǒng)包括登陸注冊、在線考試、試卷管理、試題管理、成績管理、考生管理、分數(shù)統(tǒng)計以及成績查詢等功能。本系統(tǒng)旨在實現(xiàn)考試的規(guī)范化、信息化管理,提升考試效率,增強考試的公平性,使考務(wù)管理突破時空控制,使學(xué)校管理者、教師和學(xué)生無論在何時何地都可通過網(wǎng)絡(luò)進行考試,使教學(xué)朝著信息化、網(wǎng)絡(luò)化、現(xiàn)代化的目標(biāo)前進。關(guān)鍵詞:在線考試;Struts2;Hibernate;Spring;JSON;AJAX;BootstrapABSTRACTWiththerapiddevelopmentofscienceandtechnology,thenetworktechnologyhasgraduallypenetratedintoourdailylife.Atthesametime,italsobringsarevolutioninthewayofeducation,whiletheonlineexamisaveryimportantaspect.TheonlineexaminationsystembasedonnetworktechnologycanaroundtheworldwiththehelpoftheInternet.TheOnlineTestSystemisbasedonJavaEEandStruts2,HibernateandSpringframework.It’sanonlineexaminationplatformbasedonWebandusingEclipsedevelopmenttools,MySQLdatabaseandTomcatserverdevelopment,andsuitableforallonlineexaminationpracticeetc.ItadoptsWebmode,noneedtoinstalltheclient,justainternettool,youcanachievethepaperlessexamination.Thetestsystemincludesonlineregistration,signinsystem,onlineexamination,testpapermanagement,testquestionsmanagement,examinationresultsmanagement,candidatemanagementandotherfunctions.Thepurposeofthissystemistorealizeinformationmanagementandstandardizedexamination,andtoenhancetheefficiencyoftheexamination,enhancethefairnessoftheexam,andbreakthelimitationoftimeandspace.Inthisway,youcantaketheexaminationthroughthenetworkatanytime,andtheteachingcantowardsthetargetofinformatization,network,modernization.Keywords:onlineexamination;Struts2;Hibernate;Spring;JSON;Ajax;Bootstrap緒論系統(tǒng)開發(fā)背景傳統(tǒng)的考試中,要求教師在設(shè)計完試卷以后還要打印試卷,安排考試,現(xiàn)場監(jiān)考,接著收集試卷,給試卷評分,由于參考學(xué)生太多,考試類型復(fù)雜,這是一個漫長而且辛苦的過程,而且由于人工閱卷,使考試具有主觀性,難免缺乏公正。而在線考試系統(tǒng),則可以很好的解決這個問題。隨著計算機技術(shù)、Internet技術(shù)在教育領(lǐng)域應(yīng)用的普及,采用現(xiàn)代信息技術(shù)的在線考試系統(tǒng)則表現(xiàn)出來很大的優(yōu)勢。在線考試系統(tǒng)通過應(yīng)用網(wǎng)絡(luò)技術(shù),來實現(xiàn)考試過程的無紙化,使相關(guān)部門對考試過程的管理不受時間和空間的約束,不僅提高了考務(wù)管理的工作效率,還能節(jié)省資源,無論在任何地地點任何時間,只需一臺能上網(wǎng)的設(shè)備,你就可以參加考試。在線考試系統(tǒng)使教學(xué)工作能夠朝著信息化、網(wǎng)絡(luò)化、現(xiàn)代化的目標(biāo)邁進,同時也成為教育技術(shù)發(fā)展與研究的方向。國內(nèi)外研究現(xiàn)狀及分析世界上所有國家對教育事業(yè)的發(fā)展都給與了很大的關(guān)注,都期望在未來的信息社會中讓教育處在優(yōu)勢地位,走在社會發(fā)展的前沿,因此大多數(shù)國家都把信息技術(shù)應(yīng)用于教育,作為國家發(fā)展的重要推動力。在國外,美國心里協(xié)會在1986年出版了關(guān)于如何開發(fā)、使用計算機化考試以及解釋考分的指南,成為了考試和軟件開發(fā)人員的事實標(biāo)準。目前,國外很多的大型檢測出版機構(gòu)、地區(qū)教育主管部門和專業(yè)資格認證機構(gòu)都以某種測量理論為指導(dǎo)建立題庫、設(shè)計考試系統(tǒng),并進行各項相關(guān)研究。在我國,在線考試系統(tǒng)和題庫的理論研究和實踐應(yīng)用雖然起步較晚,但發(fā)展比較快速,研究和開發(fā)活動也比較活躍。北京師范大學(xué)、華北師范大學(xué)等高等院校都有教師在進行教育測量理論應(yīng)用于題庫建設(shè)方面的研究。上海交通大學(xué)、清華大學(xué)等高校,也有教師在組織力量致力于實用考試系統(tǒng)的研究和開發(fā)工作。其中使用專用在線考試系統(tǒng)影響較大的考試有:1994年開始,國家教務(wù)組織的全國計算機等級考試;1996年開始,教育部考試中心舉辦的全國計算機應(yīng)用技術(shù)證書考試;微軟授權(quán)培訓(xùn)中心組織的認證考試等。系統(tǒng)開發(fā)意義在傳統(tǒng)的教學(xué)檢驗方式中,要進行一次考試,至少需要經(jīng)過教師出題、打印試卷、學(xué)生考試、教師閱卷等幾步,這是一個繁瑣的過程,需要投入大量人力、物力及時間。顯然隨著考試類型的不斷增加和考試要求的不斷提高,教師的工作量也越來越大,可以說傳統(tǒng)的考試方法已經(jīng)不能適用于現(xiàn)代考試的需要。那么,解決這些諸多難題的一種方式,就是利用Internet無國界的特點,在互聯(lián)網(wǎng)上在線考試。在線考試系統(tǒng)可以減輕教師的工作負擔(dān)、提高其工作效率,也減少了因考試而消耗的不必要的人力和物力,同時提高了考試的質(zhì)量,從而使考試更趨于公正、客觀,更加能激發(fā)學(xué)生的學(xué)習(xí)興趣。本文組織結(jié)構(gòu)本首先講述了在線考試系統(tǒng)開發(fā)的背景和現(xiàn)狀,接著在第二章分析了系統(tǒng)可行性、系統(tǒng)目標(biāo)以及系統(tǒng)所用到的技術(shù)等。第三章首先從軟件工程的角度分析了系統(tǒng)各方面的需求,然后通過系統(tǒng)功能模塊圖描述了系統(tǒng)的各個模塊及其功能,并給出了系統(tǒng)流程圖,使整個系統(tǒng)結(jié)構(gòu)一目了然,最后介紹了系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫設(shè)計。在第四章則講述了系統(tǒng)的詳細設(shè)計與實現(xiàn),通過文字和截圖的形式分析了各個模塊的功能及操作流程。第五章對系統(tǒng)中一些關(guān)鍵代碼和比較重要的部分及關(guān)鍵點進行了講解和分析,并對填空題自動評分算法做了詳細介紹且給出了代碼的實現(xiàn)。最后對項目進行了總結(jié),并介紹在此次項目中獲得的經(jīng)驗以及自己的不足之處。系統(tǒng)概述可行性研究經(jīng)濟可行性大部分學(xué)校為了能夠及時的掌握學(xué)生的學(xué)習(xí)情況,都會定期的組織考試,對傳統(tǒng)的考試模式而言,這無疑需要消耗大量的人力物力。而利用基于網(wǎng)絡(luò)的在線考試系統(tǒng),不僅可以節(jié)省人力資源,減少因考試而花費的成本,同時,在線考試系統(tǒng)因為能夠快速的展開考試和評分,使考試更具客觀性和公正性。技術(shù)可行性開發(fā)一個網(wǎng)絡(luò)在線考試系統(tǒng),涉及的最核心的技術(shù)問題就是如何實現(xiàn)在不刷新頁面的情況下實時顯示考試時間及剩余時間,并做到到達考試結(jié)束時間時自動提交試卷的功能。如果在Ajax技術(shù)出現(xiàn)之前,要實現(xiàn)這些功能會比較麻煩,但現(xiàn)在通過Ajax技術(shù)可以輕松實現(xiàn)這些功能,這為在線考試系統(tǒng)的開發(fā)提供了技術(shù)保障。系統(tǒng)目標(biāo)根據(jù)前面所進行的需求分析及用戶的需求可知,成長在線考試網(wǎng)屬于中小型的軟件,在系統(tǒng)實施后,應(yīng)達到以下目標(biāo):突破空間限制??忌梢酝ㄟ^網(wǎng)絡(luò)在任何地方進入在線考試系統(tǒng)參加考試,而無須到達特定的地點進行考試。系統(tǒng)界面要大方整潔,操作簡單。系統(tǒng)為考生提供剩余考試時間提醒功能,以便考生能及時掌握考試情況。提供超時自動交卷的功能。當(dāng)?shù)竭_考試規(guī)定的結(jié)束時間時,如果考生沒有按時提交試卷,系統(tǒng)將會自動交卷,從而確??荚嚹軌蚬降倪M行。系統(tǒng)自動閱卷,保證成績真實準確考生可以查詢考試成績。系統(tǒng)運行穩(wěn)定、安全可靠。開發(fā)環(huán)境在開發(fā)在線考試系統(tǒng)時,需具備下面的軟件環(huán)境。操作系統(tǒng):Windows8數(shù)據(jù)庫:MySQL5.0Web服務(wù)器:Tomcat6.0開發(fā)工具:eclipse3.6開發(fā)語言:Java相關(guān)理論和技術(shù)SSH框架首先,SSH不是一個框架,而是多個框架(struts+spring+hibernate)的集成,是目前較流行的一種Web應(yīng)用程序開源集成框架,用于構(gòu)建靈活、易于擴展的多層Web應(yīng)用程序。Struts作為系統(tǒng)的整體基礎(chǔ)架構(gòu),負責(zé)MVC的分離,在Struts框架的模型部分,控制業(yè)務(wù)跳轉(zhuǎn),利用Hibernate框架對持久層提供支持。Spring一方面作為一個輕量級的IoC容器,負責(zé)查找、定位、創(chuàng)建和管理對象及對象之間的依賴關(guān)系,另一方面能使Struts和Hibernate更好地工作。采用上述開發(fā)模型,不僅實現(xiàn)了視圖、控制器與模型的徹底分離,而且還實現(xiàn)了業(yè)務(wù)邏輯層與持久層的分離。這樣無論前端如何變化,模型層只需很少的改動,并且數(shù)據(jù)庫的變化也不會對前端有所影響,大大提高了系統(tǒng)的可復(fù)用性。而且由于不同層之間耦合度小,有利于團隊成員并行工作,大大提高了開發(fā)效率。但是在一個項目中,通常會有很多個組件,如果這些組件采用XML的bean定義來配置,顯然會增加配置文件的體積,查找以及維護起來也不太方便。個人也不喜歡配置那么多的XML文件。所系本系統(tǒng)采用java的注解實現(xiàn)ssh框架,注解相當(dāng)于一種標(biāo)記加了注解就等于打上了某種標(biāo)記,沒加,則等于沒有某種標(biāo)記,以后,javac編譯器,開發(fā)工具包和其他程序可以用反射來了解你的類以及各種元素上有何種標(biāo)記,看你有什么標(biāo)記,就去干相應(yīng)的事,標(biāo)記可以加載包,類,字段,方法,方法的參數(shù)以及局部變量上。關(guān)于全注解的實現(xiàn)方式,我將會在后面的系統(tǒng)實現(xiàn)部分詳細介紹。2.MySQL數(shù)據(jù)庫MySQL被廣泛的應(yīng)用在Internet上的中小型網(wǎng)站中。由于其體積小、速度快、總體花費成本低,尤其是開放源碼這一特性,許多中小型的網(wǎng)站為了降低總體成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫。而且MySQL具有超強的穩(wěn)定性和強大的查詢功能,從而使得查詢變得方便和快捷。3.Bootstrap框架Bootstrap,來自Twitter,是目前最受歡迎的前端框架。Bootstrap是基于HTML、CSS、JAVASCRIPT的,它簡潔靈活,使得Web開發(fā)更加快捷,它在jQuery的基礎(chǔ)上進行了更為個性化和人性化的完善,形成一套自己獨有的網(wǎng)站風(fēng)格,并兼容大部分jQuery插件。Bootstrap中包含了豐富的Web組件,根據(jù)這些組件,可以快速的搭建一個漂亮、功能完備的網(wǎng)站。Ajax技術(shù)Ajax,即異步的JavaScript和XML,它不是新的編程語言,而是一種使用現(xiàn)有標(biāo)準的新方法。傳統(tǒng)的Web應(yīng)用交互由用戶觸發(fā)一個HTTP請求到服務(wù)器,服務(wù)器對其進行處理后再返回一個新的HTHL頁到客戶端,每當(dāng)服務(wù)器處理客戶端提交的請求時,客戶都只能空閑等待,哪怕只是一次很小的交互,都要返回一個完整的HTML頁,而用戶每次都要浪費時間和帶寬去重新讀取整個頁面,這導(dǎo)致用戶界面的響應(yīng)比本地應(yīng)用慢得多。AJAX使用異步方式與服務(wù)器通信,不需要打斷用戶的操作,具有更加迅速的響應(yīng)能力。優(yōu)化了Browser和Server之間的溝通,減少不必要的數(shù)據(jù)傳輸、時間及降低網(wǎng)絡(luò)上數(shù)據(jù)流量。通過在后臺與服務(wù)器進行少量數(shù)據(jù)交換,AJAX可以使網(wǎng)頁實現(xiàn)異步更新。這意味著可以在不重新加載整個網(wǎng)頁的情況下,對網(wǎng)頁的某部分進行更新。5.JSONJSON(JavaScriptObjectNotation),是一種輕量級的數(shù)據(jù)交換格式。它基于JavaScript的一個子集。JSON采用完全獨立于語言的文本格式,數(shù)據(jù)格式比較簡單,易于讀寫,格式都是壓縮的,占用帶寬小。因為JSON格式能夠直接為服務(wù)器端代碼使用,大大簡化了服務(wù)器端和客戶端的代碼開發(fā)量,但是完成的任務(wù)不變,且易于維護。這些特性使JSON成為理想的數(shù)據(jù)交換語言。系統(tǒng)分析與概要設(shè)計需求分析伴隨著社會經(jīng)濟的快速發(fā)展與前進,人們對教育的發(fā)展越來越重視。考試是教育中的一個重要環(huán)節(jié),近年來考試類型的不斷增加及考試需求不斷提高,傳統(tǒng)的考試方式要求教師打印考卷、監(jiān)考、批卷,使教師的工作量越來越大,并且這些環(huán)節(jié)由于全部需要人工完成,非常容易出錯。由于以上幾個原因,現(xiàn)在很多學(xué)校以及考試機構(gòu)正在大力建設(shè)在線考試系統(tǒng),以此來減少考務(wù)管理成本和降低人力及物力的投入,與此同時也可以為考生提供更加全面、更加靈活的服務(wù)??忌M麑ψ约旱膶W(xué)習(xí)情況進行客觀、科學(xué)的評價;教學(xué)人員則期望現(xiàn)有的考試模式能夠得到有效的改進,從而能夠提升考試效率。為了滿足考生和教務(wù)人員的需求,在線考試系統(tǒng)需要實現(xiàn)題庫管理、在線生成試卷并管理、考生登錄注冊、考生信息管理、在線答題、在線提交試卷、自動評分、成績查詢等功能,以滿足各方面的需要。1.考生:可以在線注冊,登錄系統(tǒng),若忘記登陸密碼可根據(jù)注冊時填寫的提示問題及答案召回登錄密碼;登陸系統(tǒng)后可修改密碼及個人基本信息、選擇試卷并在線考試、查詢成績個人成績;考試結(jié)束后可退出系統(tǒng)。圖3-1考生用例圖圖3-1考生用例圖2.管理員:登陸系統(tǒng)后可對管理員、考生等信息進行管理;添加考試題目并生成試卷;對考生成績按條件進行查詢和管理。圖3-2管理員用例圖圖3-2管理員用例圖3.系統(tǒng):在考試時為考生提供考試時間倒計時功能,提醒考生剩余考試時間;考試時間到達時自動提交試卷;提交試卷后自動閱卷并即時顯示考試成績。圖3-3系統(tǒng)用例圖圖3-3系統(tǒng)用例圖系統(tǒng)功能結(jié)構(gòu)根據(jù)在線考試系統(tǒng)的特點,可以將其分為前臺和后臺兩個部分來進行設(shè)計。前臺主要用于考生注冊和登錄系統(tǒng)、在線考試、查詢成績及修改個人資料等;后臺主要用于管理員對考生信息、試卷信息、考題信息和考生成績信息等進行管理。1.在線考試系統(tǒng)的前臺功能結(jié)構(gòu)圖如圖3-4所示。圖3-4前臺功能結(jié)構(gòu)圖圖3-4前臺功能結(jié)構(gòu)圖2.在線考試系統(tǒng)的后臺功能結(jié)構(gòu)圖如圖3-5所示。圖3-5后臺功能結(jié)構(gòu)圖圖3-5后臺功能結(jié)構(gòu)圖系統(tǒng)流程圖1.考生在進入系統(tǒng)進行操作之前需先登錄系統(tǒng),進入前臺首頁之后通過導(dǎo)航欄上面的鏈接可以進行相關(guān)操作。考生模塊業(yè)務(wù)流程圖如圖3-6所示。圖3-6考生模塊流程圖圖3-6考生模塊流程圖2.管理員登陸系統(tǒng)后,進入后臺管理首頁,通過導(dǎo)航欄鏈接進行后臺管理工作。管理員模塊業(yè)務(wù)流程圖如圖3-7所示。圖3-7管理員模塊流程圖圖3-7管理員模塊流程圖數(shù)據(jù)庫設(shè)計1.數(shù)據(jù)庫分析數(shù)據(jù)庫是一個應(yīng)用系統(tǒng)的核心,所以數(shù)據(jù)庫設(shè)計的好壞對一個系統(tǒng)的執(zhí)行效率以及數(shù)據(jù)的有效性和一致性有著直接且重要的影響。設(shè)計數(shù)據(jù)庫之前應(yīng)充分了解用戶的需求,需求分析是設(shè)計數(shù)據(jù)庫的起點,需求分析的結(jié)果是否能夠準確無誤的反映用戶的實際需求,將直接影響到后面各個階段的設(shè)計。數(shù)據(jù)庫需求分析的目的就是要了解在一個系統(tǒng)中,用戶需要查詢、添加、修改和刪除哪些數(shù)據(jù),通過對基本數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)以及數(shù)據(jù)處理的流程的收集與整理,組成一份詳細的數(shù)據(jù)字典,從而為后面的具體設(shè)計奠定基礎(chǔ)。根據(jù)前面所進行的需求分析及用戶的需求可知,在線考試系統(tǒng)屬于中小型的軟件。而MySQL具有小巧、功能齊全、查詢迅捷等優(yōu)點,可并可免費使用,對于一般中小型,甚至大型應(yīng)用都能夠勝任。綜上所述,本系統(tǒng)采用的是MySQL數(shù)據(jù)庫。2.數(shù)據(jù)庫概念設(shè)計數(shù)據(jù)模型是是數(shù)據(jù)特征的抽象,從抽象層次上描述了系統(tǒng)的靜態(tài)特征、動態(tài)行為和約束條件,為數(shù)據(jù)庫系統(tǒng)的信息表與操作提供一個抽象的框架。描述了數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作及數(shù)據(jù)約束。
E-R模型是對現(xiàn)實世界的一種抽象。它的主要成分是實體、聯(lián)系和屬性。使用這三種成分,我們可以建立許多應(yīng)用環(huán)境的E-R模型。根據(jù)以上各節(jié)對系統(tǒng)所做的需求分析和系統(tǒng)設(shè)計,現(xiàn)規(guī)劃處本系統(tǒng)中使用的數(shù)據(jù)庫實體分別為考生檔案實體、管理員檔案實體、試卷信息實體、考試題目實體(包括單選題、多選題、判斷題、填空題)和考生成績實體。下面將介紹幾個關(guān)鍵實體的E-R圖。1)考生信息實體考生檔案實體包括編號、考生姓名、密碼、性別、提示問題、問題答案、身份證號等屬性。其實體E-R圖如圖3-8所示。圖3-8考生信息實體ER圖圖3-8考生信息實體ER圖2)試卷信息實體試卷實體包括編號、試卷標(biāo)題、單選題個數(shù)、單選題每題分值、判斷題個數(shù)、判斷題每題分值、多選題個數(shù)、判斷題每題分值、填空題個數(shù) 、填空題每空分值、添加日期、考試所需時間等屬性。其實體E-R圖如圖3-9所示。圖3-9試卷信息實體ER圖圖3-9試卷信息實體ER圖3)單選題實體單選題實體包括編號、題干、正確答案、選項A、選項B、選項C、所屬試卷等屬性。其實體E-R圖如圖3-10所示。圖3-10單選題信息實體ER圖圖3-10單選題信息實體ER圖4)判斷題實體判斷題實體包括編號、題干、正確答案、所屬試卷等屬性。其實體E-R圖如圖3-11所示。圖3-11判斷題信息實體ER圖圖3-11判斷題信息實體ER圖5)多選題實體多選題實體包括編號、題干、正確答案、所屬試卷、選項個數(shù)、選項A、選項B、選項C、選項D、選項E、選項F、選項G等屬性。其實體E-R圖如圖3-12所示。圖3-12多選題信息實體ER圖圖3-12多選題信息實體ER圖6)填空題實體填空題實體包括編號、題干、正確答案、空白個數(shù)、所屬試卷等屬性。其實體E-R圖如圖3-13所示。圖3-13填空題信息實體ER圖圖3-13填空題信息實體ER圖7)考生成績實體 考生成績實體包括編號、考生編號、試卷編號、成績、考試時間等屬性。其實體E-R圖如下圖所示。圖3-14成績表信息實體ER圖圖3-14成績表信息實體ER圖3.數(shù)據(jù)庫邏輯結(jié)構(gòu)根據(jù)上一節(jié)的數(shù)據(jù)庫概念設(shè)計,可以創(chuàng)建與之對應(yīng)的數(shù)據(jù)表。本系統(tǒng)包含8張表,下面分別介紹這些表的結(jié)構(gòu)。1)tb_admin(管理員信息表)管理員信息表用來存放所有管理員的登錄信息,該表的結(jié)構(gòu)如下表所示。列名數(shù)據(jù)類型約束描述idintprimarykeyID號(自動編號)usernamevarchar(30)notnull用戶名passwordvarchar(30)notnull密碼2)tb_candidate(考生信息表)考生信息表用來保存所有考生信息,該表的結(jié)構(gòu)如下表所示。列名數(shù)據(jù)類型約束描述idintprimarykeyID號(自動編號)namevarchar(30)notnull姓名passwordvarchar(30)notnull密碼sexintnotnull性別cardNovarchar(18)notnull身份證號questionvarchar(100)notnull提示問題answervarchar(100)notnull問題答案3)tb_paper(試卷信息表)試卷信息表用來保存套題信息,該表的結(jié)構(gòu)如下表所示。 列名數(shù)據(jù)類型約束描述idintprimarykeyID號(自動編號)namevarchar(100)notnull試卷標(biāo)題singleNumint允許空值單選題數(shù)量singlePointint允許空值單選題每題分值pdNumint允許空值判斷題數(shù)量pdPointint允許空值判斷題每題分值multipleNumint允許空值多選題數(shù)量multiplePointint允許空值多選題每題分值addDatedatetime允許空值添加日期needTimeint允許空值考試所需時間4)tb_single(單選題信息表)單選題信息表用來存放單選題信息,該表的結(jié)構(gòu)如下表所示。列名數(shù)據(jù)類型約束描述idintprimarykeyID號(自動編號)subjectvarchar(200)notnull題干paperIdintnotnull所屬試卷編號optionAvarchar(100)notnull選項AoptionBvarchar(100)notnull選項BoptionCvarchar(100)notnull選項CoptionDvarchar(100)notnull選項Danswervarchar(2)notnull正確答案5)tb_pd(判斷題信息表)判斷題信息表用來存放判斷題信息,該表的結(jié)構(gòu)如下表所示。列名數(shù)據(jù)類型約束描述idintprimarykeyID號(自動編號)subjectvarchar(200)notnull題干answerintnotnull答案paperIdintnotnull所屬試卷編號6)tb_blank(填空題信息表)填空題信息表用來存放填空題信息,該表的結(jié)構(gòu)如下表所示。列名數(shù)據(jù)類型約束描述idintprimarykeyID號(自動編號)subjectvarchar(200)notnull題干paperIdintnotnull所屬試卷編號answervarchar(200)notnull正確答案fillNumintnotnull每題空白數(shù)量7)tb_multiple(多選題信息表)多選題信息表用來存放多選題信息,該表的結(jié)構(gòu)如下表所示。列名數(shù)據(jù)類型約束描述idintprimarykeyID號(自動編號)subjectvarchar(200)notnull題干paperIdintnotnull所屬試卷編號optionAvarchar(100)notnull選項AoptionBvarchar(100)notnull選項BoptionCvarchar(100)notnull選項CoptionDvarchar(100)notnull選項DoptionEvarchar(100)允許為空選項EoptionFvarchar(100)允許為空選項FoptionGvarchar(100)允許為空選項Ganswervarchar(15)notnull正確答案optionNumintnotnull選項個數(shù)8)tb_report(考生成績信息表)考生成績信息表用來存放考生成績信息,該表的結(jié)構(gòu)如下表所示。列名數(shù)據(jù)類型約束描述idintprimarykeyID號(自動編號)candidateIdintnotnull考生編號paperIdintnotnull試卷編號scoreintnotnull考試成績examDatedatetimenotnull考試時間系統(tǒng)詳細設(shè)計與實現(xiàn)前臺首頁設(shè)計與實現(xiàn)在線考試系統(tǒng)的首頁設(shè)計主要用于功能導(dǎo)航,在該頁面中只包括在線注冊、登陸系統(tǒng)、在線考試、成績查詢4個導(dǎo)航鏈接,如圖4-1所示。圖4-1首頁面圖4-1首頁面考生信息模塊設(shè)計與實現(xiàn)1.考生信息模塊概述考生信息模塊主要包括考生在線注冊、考生登錄、修改個人基本信息、修改登錄密碼及找回密碼5個功能??忌紫纫詾榫W(wǎng)站用戶,然后登錄網(wǎng)站才能進行一系列操作;登陸后考生還可以修改個人的注冊資料,修改密碼。如果考生忘記了登錄密碼,還可以通過網(wǎng)站提供的找回密碼功能快速找回密碼??忌畔⒛K的操作流程圖如圖4-2所示。圖4-2圖4-2生信息模塊操作流程圖2.考生注冊的實現(xiàn)過程進入在線考試系統(tǒng),可根據(jù)首頁導(dǎo)航或者在登錄頁面的導(dǎo)航欄點擊“注冊”菜單,即可進入到考生考生注冊頁面,在該頁面輸入個人資料及密碼,如圖4-3所示。當(dāng)“身份證號”輸入框失去焦點時,通過ajax異步提交該身份證號給后臺,系統(tǒng)將根據(jù)輸入的身份證號進行驗證是否已經(jīng)注冊,如果沒有注冊,將進行下面的信息填寫,當(dāng)點擊“注冊”按鈕時,系統(tǒng)保存用戶信息并跳轉(zhuǎn)至登陸頁面,供用戶登陸;否則將會提示用戶“已經(jīng)注冊”。圖4-3注冊頁面圖4-3注冊頁面3.找回密碼的實現(xiàn)過程進入到登陸頁面后,如圖4-4所示。若考生忘記登陸密碼,單擊如圖所示的“點擊找回”,即可進入到找回密碼頁面的第一步,用于輸入身份證號如圖4-5所示。在該頁面中輸入注冊時所用的身份證號,單擊“下一步”按鈕,即進入找回密碼第二步,在“密碼提示答案”輸入框中輸入密碼提示問題的答案,如圖4-6所示。單擊“下一步”按鈕,進入到找回密碼第三步,如圖4-7所示。在這里重新設(shè)置密碼,點擊“提交”后,即調(diào)轉(zhuǎn)至登陸頁面,供考生登錄。1)登陸頁面:圖4-4登陸頁面圖4-4登陸頁面2)找回密碼第一步:圖4-5找回密碼第一步圖4-5找回密碼第一步3)找回密碼第二步:圖4-6找回密碼第二步圖4-6找回密碼第二步4)找回密碼第三步:圖4-7找回密碼第三步圖4-7找回密碼第三步在線考試模塊設(shè)計與實現(xiàn)1.在線考試模塊的概述在線考試模塊的主要功能是允許考生在網(wǎng)站上針對指定的試卷進行考試。在該模塊中,考生首先需要瀏覽考試規(guī)則,在接受所列出的考試規(guī)則后,才能選擇試卷,點擊“參加考試”,系統(tǒng)則會生成試卷,然后進入考試頁面進行答題,當(dāng)考生提交試卷或者考試結(jié)束時間到達時,系統(tǒng)將自動對考生提交的試卷進行評分,并立即給出最終考試成績。在線考試模塊的操作流程圖如圖4-8所示。圖4-8在線考試模塊操作流程圖圖4-8在線考試模塊操作流程圖2.在線生成試卷并顯示試題的實現(xiàn)過程考生登錄系統(tǒng)后,在導(dǎo)航欄單擊“在線考試”鏈接,將進入到試卷列表頁面,如圖4-9所示,點擊“參加考試”,便可進入答題。圖4-9試卷列表頁面圖4-9試卷列表頁面圖4-10是在線顯示試題頁面,在頂部是本場考試的基本信息,包括總分、考試時間、參考學(xué)生及考試剩余時間等,下面則是考試題目。在本頁面考生便可直接在線答題,考試結(jié)束后點擊下面的“提交答案”按鈕,至此,本次考試結(jié)束。圖4-10在線考試頁面圖4-10在線考試頁面3.自動閱卷并顯示考試成績的實現(xiàn)過程在顯示試題頁面中,單擊“交卷”按鈕后是到達考試結(jié)束時間時,系統(tǒng)將自動自動閱卷并將考試成績以對話框的形式反饋給考生,如圖4-11所示。圖4-11顯示考試成績對話框圖4-11顯示考試成績對話框后臺首頁設(shè)計與實現(xiàn)在線考試系統(tǒng)(OnlineTest)的后臺首頁是管理員對網(wǎng)站信息進行管理的首頁面。在該頁面中,管理員可以清楚地了解網(wǎng)站后臺管理系統(tǒng)包含的基本操作。在線考試系統(tǒng)后臺首頁包含的主要模塊如下。管理員信息管理:主要包括管理員信息列表、添加管理員和刪除管理員。考生信息管理:主要包括查看已注冊考生信息列表和刪除已注冊考生信息。試卷信息管理:主要?;畈榭丛嚲硇畔⒘斜?、添加試卷信息、修改試卷信息以及刪除試卷信息??荚囶}目管理:主要包括查看考試題目列表、添加考試題目、修改考試題目以及刪除考試題目。退出管理:主要用于退出在線考試后臺管理系統(tǒng)。為了方便管理員管理,在線考試系統(tǒng)的后臺首頁中顯示的是考生成績管理頁面,其運行結(jié)果如圖4-12所示。圖4-12考生成績管理頁面圖4-12考生成績管理頁面在該頁面中,可以按條件查詢考生成績信息,包括按試卷查詢、按考試時間查詢、按考生身份證號查詢、或者三者結(jié)合在一起查詢??忌煽冃畔⒁粤斜硇问?,采用分頁管理,每次顯示20條數(shù)據(jù)。試卷管理模塊設(shè)計與實現(xiàn)1.試卷管理模塊的概述試卷管理模塊主要包括查試卷列表、添加試卷信息、修改試卷信息、刪除試卷信息、查看試卷試題信息等5個功能。試卷管理模塊的框架如圖4-13所示。圖4-13試卷管理模塊框架圖圖4-13試卷管理模塊框架圖2.查看試卷列表的實現(xiàn)過程管理員登陸后,單擊“試卷管理”超鏈接,進入到查看試卷信息列表頁面,在頁面中將以列表形式顯示全部試卷信息。同時提供添加試卷、修改試卷、刪除試卷、查看試題的超鏈接。試卷管理頁面的運行結(jié)果如圖4-14所示。圖4-14試卷列表頁面圖4-14試卷列表頁面3.添加試卷的實現(xiàn)過程管理員登陸考試系統(tǒng)后,在試卷管理頁面,點解“添加試卷”按鈕,進入到試卷添加頁面。如下圖所示。該表單需要添加試卷名稱、單選題、判斷題、多選題每題分值以及填空題每空分值和考試所需時間等。點擊“提交”,便可將此試卷信息添加到數(shù)據(jù)庫。后臺處理完成后,會提示用戶添加成功,并跳轉(zhuǎn)至試卷信息列表頁面。圖4-15添加試卷頁面圖4-15添加試卷頁面4.修改試卷的實現(xiàn)過程修改試卷信息同添加試卷信息頁面大致相同,不同之處在于:在進入修改試卷信息頁面時,通過Ajax異步獲取該試卷信息,并通過javascript腳本將試卷各屬性信息顯示在頁面,以方便用戶修改試卷信息。5.刪除試卷的實現(xiàn)過程在試卷心里列表頁面,當(dāng)某一試卷不在需要時,便可點擊操作欄里的“刪除”按鈕,點擊后,系統(tǒng)會提示“是否刪除”,在對話框中點擊“確定”時,該試卷信息便會被刪除,同時與試卷相關(guān)的考試題目也將被刪除。考試題目管理模塊設(shè)計與實現(xiàn)1.考試題目管理模塊的概述考試題目管理模塊主要包括查看試題列表、添加考試題目、修改考試題目和刪除考試題目等4個功能??荚囶}目管理模塊的框架如圖4-16所示。圖4-16試題管理模塊框架圖圖4-16試題管理模塊框架圖2.查看題目列表的實現(xiàn)過程管理員登陸考試系統(tǒng)后,點解“題目管理”超鏈接,將進入到考試題目信息列表頁面,如圖4-17所示。由于考試題目很多,為了方便用戶瀏覽方便,將考試題目按照題型分為四個模塊:分別是單選題、判斷題、多選題及填空題。用戶分別點擊四個按鈕時,便會出現(xiàn)相應(yīng)的題目列表,同時每個題型的題目列表又以分頁的形式展示,每頁20條數(shù)據(jù)。圖4-17考試題目管理頁面圖4-17考試題目管理頁面3.添加考試題目的實現(xiàn)過程在考試題目管理頁面,點解“添加試題”按鈕,將會進入添加考試題目頁面,如圖4-18所示。該頁面有四個表單,通過bootstrap框架提供的標(biāo)簽頁插件組合在一起,當(dāng)點擊上面的四個題型按鈕時,便會切換到相應(yīng)題型的添加頁面,下面只展示了添加判斷題的界面。將試題信息填寫完整后,點擊“提交按鈕”,該試題信息就會被添加,系統(tǒng)處理完成后,會提示用戶添加成功,并調(diào)轉(zhuǎn)至考試題目列表頁面。圖4-18添加考試題目頁面圖4-18添加考試題目頁面4.修改考試題目的實現(xiàn)過程在考試題目管理頁面,當(dāng)需要對某一試題進行修改時,點擊操作欄里的“修改”按鈕,將會跳轉(zhuǎn)至修改試題頁面,如下圖所示。根據(jù)考試題目管理頁面的所提供的題型標(biāo)志questionType,在該頁面將會相應(yīng)的板塊。同修改試卷信息一樣,在進入到該頁面時,通過Ajax向后臺發(fā)送異步請求,獲取該題目信息,并通過javascript腳本將相應(yīng)信填寫入表單中,以方便用戶修改。下圖只展示了單選題的修改頁面。圖4-19修改考試題目頁面圖4-19修改考試題目頁面5.刪除考試題目的實現(xiàn)過程在考試題目管理頁面,當(dāng)需要刪除某一考試題目時,點擊操作欄里的“刪除”按鈕,將彈出是否刪除的對話框,點解“確定”按鈕,該試題將會被刪除,并提示用戶操作成功。單擊“取消按鈕”,將不進行任何操作。關(guān)鍵代碼與難點分析SSH全注解框架的搭建1.選擇jar包:網(wǎng)上有很多ssh框架整合jar包詳解,這里不再贅述。2.配置文件:最基本的配置文件有web.xml,struts.xml,applicationContext.xml。1)web.xml文件:web.xml是所以web項目必須的配置文件,它是供web容器(比如tomcat)加載的,通常定義這個web項目的必要信息。在web.xml引入struts,配置Struts2框架的核心Filter:<filter> <filter-name>struts</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class></filter>filter-mapping屬性是過濾器(Filter)必須的一個屬性,用于過濾請求的路徑,此處一般就設(shè)為/*形式,對所有請求URL進行攔截(過濾):<filter-mapping><filter-name>struts</filter-name><url-pattern>/*</url-pattern></filter-mapping>到此,配置完struts2的核心控制器后,基本完成了struts2在web.xml文件中的配置。添加監(jiān)聽器,讀取Spring配置文件:<!--這個監(jiān)聽器就是為了讀取Spring的配置文件--><listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class></listener>配置歡迎頁:<welcome-file-list><welcome-file>/index.jsp</welcome-file><welcome-file>/login.jsp</welcome-file></welcome-file-list>2)applicationContext.xml文件:根據(jù)下面代碼中base-package指定的路徑,掃描其下所有包含注解的Bean,并自動注入。比如@Repository,@Service這些都是注解,前者表示持久層,后者表示業(yè)務(wù)層。有了它,我們將不用再去寫那繁瑣的<beanid=""class=""/>,這就是全注解的主旨。<!--使用annotation--><context:annotation-config/><!--使用annotation自動注冊bean,并檢查@Controller,@Service,@Repository注解已被注入--><context:component-scanbase-package="ssh"></context:component-scan>本系統(tǒng)采用MySQL數(shù)據(jù)庫,下面代碼是對數(shù)據(jù)庫信息的配置:<!--數(shù)據(jù)庫配置--><beanid="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <propertyname="driverClassName"value="com.mysql.jdbc.Driver"></property> <propertyname="url"value="jdbc:mysql://localhost:3306/examsystem"></property> <propertyname="username"value="root"></property> <propertyname="password"value="root"></property></bean>下面代碼是在Spring中定義Hibernate相關(guān)的配置,Spring已經(jīng)集成了這部分功能。通過class里面定義的類名稱我們很容易就能理解,這是使用注解的方式映射實體以及創(chuàng)建HiberanteSessionFactory。在Spring2.5.6版本中,加入了一個很有用的小功能,就是packagesToScan屬性,它是根據(jù)value中定義的路徑來掃描其下所有的注解實體類。<beanid="sessionFactory"class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"><propertyname="dataSource"><reflocal="dataSource"></ref></property><propertyname="packagesToScan"><list><value>ssh.pojo</value></list></property><propertyname="hibernateProperties"> <props> <propkey="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <propkey="show_sql">true</prop> <propkey="hibernate.format_sql">true</prop> <propkey="hibernate.hbm2ddl.auto">update</prop> </props></property></bean>下面代碼是事務(wù)定義,而且是使用注解方式定義事務(wù)(@Transactional)。<!--配置事務(wù)管理器指定其作用的sessionFactory把事務(wù)交給Spring去處理--><beanid="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <propertyname="sessionFactory"ref="sessionFactory"></property></bean><!--用注解來實現(xiàn)事務(wù)管理--><tx:annotation-driventransaction-manager="transactionManager"/>下面代碼就是定義事務(wù)的兩種方式:上面是注解式,下面是配置式。兩種方式的區(qū)別主要是,注解式只用寫那么一句話,然后在業(yè)務(wù)類或方法中加入@Transactional這個注解標(biāo)記,就完成事務(wù)聲明,不過對于每個業(yè)務(wù)類都需要在類或方法中加入這些標(biāo)記。而配置式聲明,就是不用加這些標(biāo)記,只要你的方法名稱命名比較統(tǒng)一,就可以像上面這樣定義事務(wù)規(guī)范,然后在aop標(biāo)簽中定義切入點與執(zhí)行通知就行了。在這里我寫了兩種方式。<!--注解式--><aop:config><aop:pointcutid="allServiceMethod"expression="execution(*ssh.service.*.*(..))"/><aop:advisorpointcut-ref="allServiceMethod"advice-ref="txAdvice"/></aop:config><!--配置式--><tx:adviceid="txAdvice"transaction-manager="transactionManager"><tx:attributes><tx:methodname="save*"propagation="REQUIRED"/><tx:methodname="add*"propagation="REQUIRED"/><tx:methodname="insert*"propagation="REQUIRED"/><tx:methodname="merge*"propagation="REQUIRED"/><tx:methodname="modify*"propagation="REQUIRED"/><tx:methodname="del*"propagation="REQUIRED"/><tx:methodname="remove*"propagation="REQUIRED"/><tx:methodname="put*"propagation="REQUIRED"/><tx:methodname="get*"propagation="NOT_SUPPORTED"read-only="true"/><tx:methodname="count*"propagation="NOT_SUPPORTED"read-only="true"/><tx:methodname="find*"propagation="NOT_SUPPORTED"read-only="true"/><tx:methodname="list*"propagation="NOT_SUPPORTED"read-only="true"/><tx:methodname="*"read-only="true"/></tx:attributes></tx:advice>3)Struts.xml文件:開啟使用開發(fā)模式,詳細錯誤提示:<constantname="struts.devMode"value="false"/>將對象交給spring管理:<constantname="struts.objectFactory"value="spring"/>指定資源編碼類型:<constantname="struts.i18n.encoding"value="UTF-8"/>指定每次請求到達,重新加載資源文件:<constantname="struts.i18n.reload"value="false"/>Struts登錄攔截器配置:<!--指定默認的父包--><constantname="struts.convention.default.parent.package"value="bolo-default"/><!--設(shè)置convention插件默認的根包--><constantname="struts.convention.package.locators"value="action"/><!--搜索此配置下的所有包--><constantname="struts.convention.package.locators.basePackage"value="ssh"/><!--繼承convention-default包,定義一個默認的攔截器,根據(jù)需要還可擴展--><packagename="bolo-default"extends="convention-default"> <interceptors> <interceptorname="authorityInterceptor"class="erceptor.AuthorityInterceptor"></interceptor><interceptor-stackname="boloStack"> <interceptor-refname="authorityInterceptor"> <paramname="excludeMethods">test,userLogin,register,cardValidate,prompt,questionValidate,resetPwd</param></interceptor-ref> <interceptor-refname="paramsPrepareParamsStack"></interceptor-ref> </interceptor-stack></interceptors><default-interceptor-refname="boloStack"/><global-results> <resultname="login">/login.jsp</result></global-results></package>做好這一步之后,那么登錄驗證攔截器將會對除了<param>標(biāo)簽中方法之外的所有方法進行攔截了。在訪問需要用戶登錄的URL時,若用戶未登錄或session失效,就會跳轉(zhuǎn)至<global-results>中定義的頁面,這里是login.jsp頁面。Struts2攔截器要實現(xiàn)登錄攔截的功能,最關(guān)鍵的就是要實現(xiàn)攔截類了。創(chuàng)建AuthorityInterceptor類,并繼承MethodFilterInterceptor,為什么繼承它呢?因為這個類是對方法進行攔截,而在本系統(tǒng)中,需要是對大部分的方法展開攔截,而只需要對少數(shù)幾個方法進行排除。publicclassAuthorityInterceptorextendsMethodFilterInterceptor{ @Override protectedStringdoIntercept(ActionInvocationai)throwsException{ Objectuser=ServletActionContext.getRequest().getSession().getAttribute("user"); if(user!=null){ returnai.invoke();//遞歸調(diào)用攔截器 }else{ returnAction.LOGIN;//返會登陸頁面 } }}從session中獲取當(dāng)前登錄的用戶信息,如果該用戶存在,則繼續(xù)遞歸執(zhí)行后面的攔截器;否則,將會跳轉(zhuǎn)到struts.xml配置文件中規(guī)定的調(diào)轉(zhuǎn)頁面,本系統(tǒng)中指定的是登陸頁面。所以這樣實現(xiàn)了代碼后,還要在struts.xml中進行相應(yīng)的設(shè)置,前面在解析struts.xml文件的時候,已講述了這部分?;谧⒔獾膕trutsaction跳轉(zhuǎn)跳轉(zhuǎn)至某個頁面。這里以退出系統(tǒng)為例。如下面的代碼段所示,@Action括號里面的value表示當(dāng)前處理請求的action,同form表單中action的值相同。results屬性表示action執(zhí)行后要返回的結(jié)果集:@Result就表示一個結(jié)果,其中的name就是返回的值,而location就是根據(jù)name的值確定的將要跳轉(zhuǎn)的頁面。results里面可以有多個@Result,以逗號隔開。在這里用戶成功退出系統(tǒng)后將調(diào)轉(zhuǎn)到到登陸頁面,即login.jsp,當(dāng)然name的值不一定是success,可以是任意一個你指定的值,只需和return的值保持一致即可。//退出系統(tǒng)@Action(value="logout",results={ @Result(name="success",location="/login.jsp")})publicStringlogout(){ HttpServletRequestrequest=ServletActionContext.getRequest(); HttpSessionsession=request.getSession(); if(session.getAttribute("user")!=null){ session.removeAttribute("user"); session.removeAttribute("role"); } return"success";}跳轉(zhuǎn)至某個action。有時action執(zhí)行后需要返回到另一個action,這時就需要在@Result里面指定跳轉(zhuǎn)類型dispatcher為默認跳轉(zhuǎn)類型type="redirectAction",因為struts2跳轉(zhuǎn)類型為dispatcher,用于返回一個視圖資源(如:jsp)。這里以刪除管理員為例,當(dāng)添加一位管理員后,將會跳轉(zhuǎn)至adminlist.action,經(jīng)此跳轉(zhuǎn)至管理員列表頁面。//添加管理員@Action(value="adminadd",results={ @Result(name="success",type="redirectAction",location="adminlist")})publicStringadminAdd(){ try{ HttpServletRequestrequest=ServletActionContext.getRequest(); Stringusername=request.getParameter("username"); Stringpassword=request.getParameter("password"); Adminadmin=newAdmin(username,password); userService.saveAdmin(admin); return"success"; }catch(Exceptione){ e.printStackTrace(); return"fail"; }}Action處理AJAX異步請求AJAX通過在后臺與服務(wù)器進行少量數(shù)據(jù)交換,可以使網(wǎng)頁實現(xiàn)異步更新。這里以分頁查詢考生成績信息為例介紹Action和Ajax數(shù)據(jù)交換過程。1.發(fā)送Ajax異步請求:$.ajax({ type:'POST', url:'<%=_path%>/reportsByFilter', data:{...}, success:function(data){ ... }});Action接收請求并處理。1)action中方法返回值設(shè)為void://分頁查詢指定條件下的考生成績信息@Action(value="reportsByFilter")publicvoidallDetailReportByFilter(){}在Action中將處理結(jié)果返回Ajax://分頁查詢指定條件下的考生成績信息HttpServletResponseresponse=servletActionContext.getResponse();response.setContentType("text/html;charset=utf-8");response.getWriter().write(...);這里write中的省略號表示要返回的數(shù)據(jù)。若是返回字符串則可直接write寫出,如write("success");若要返回其他形式的數(shù)據(jù),需先將其轉(zhuǎn)換成json格式的數(shù)據(jù),如write(jsonStr),jsonStr為轉(zhuǎn)換的json格式的字符串。如:String jsonStr=newObjectMapper().writeValueAsString(reports);reports為查詢到的成績對象列表。3.Ajax接收action返回的數(shù)據(jù)并處理。在Ajax的success方法里面的data就是返回的數(shù)據(jù)。若返回的是一般字符串,則可直接使用,如varstr=data;若返回的是json對象,則需要將data進行轉(zhuǎn)換后再使用。填空題評分方法填空題答案既有客觀性,也有主觀性。為了快速合理、準確無誤的自動評分,研究了相關(guān)文獻,發(fā)現(xiàn)填空題具有一題多空、答案多值及相鄰答案可以相互換位等特點。設(shè)計出每個空格分值相同、答案無標(biāo)點無復(fù)合的出題規(guī)則,并使用核心詞匯和豎線連接考試答案的描述規(guī)則,以及采用混合匹配及兩種結(jié)果的評分策略。由此設(shè)計實現(xiàn)了填空題自動評分算法,經(jīng)系統(tǒng)驗證,此算法能滿足通用填空題的需求。1.出題規(guī)則根據(jù)填空題的特點及自動評分的要求,確定試題的編制規(guī)則如下:1)空格同分值在同一份試卷最后那個,每個空格具有相同的分值,以簡化評分流程,從而快速的自動評分。2)答案無標(biāo)點試題答案中不含標(biāo)點符號,以減少考生在輸入中出現(xiàn)錯誤,從而合理自動的評分。2.標(biāo)準答案描述規(guī)則解答填空題時,考生總是習(xí)慣根據(jù)自己對知識點的理解程度和思維習(xí)慣給出答案。要實現(xiàn)系統(tǒng)對填空題的準確且有效自動評分,就一定要按照某種正確的規(guī)則來設(shè)置考試題目的標(biāo)準答案,這個規(guī)則不僅僅要具有簡單性和一致性,還要能方便的在實際中應(yīng)用。1)使用核心詞匯為了使標(biāo)準答案能夠簡化而且能夠快速有效的自動評分,每個空格的標(biāo)準答案應(yīng)該是與考核的知識點具有相同的核心詞匯。所謂核心詞匯,就是“凡是可以得分的答案中所必須包含的詞匯”。2)使用豎線連接當(dāng)某個空格答案有多種時,使用特定的符號將其進行連接,這里以豎線“|”為例。具體規(guī)則是:如果一個空格的答案有多種,將多個答案同通過豎線連接在一起并以此來作為標(biāo)準答案;如果相鄰的空格答案并列,則將并列的答案連接在一起作為每個空格標(biāo)準答案。3.評分策略1)進行混合匹配:遍歷每一個空格,首先判斷考生答案與標(biāo)準答案是否精確匹配,若不是精確匹配,再判斷是否模糊匹配。2)只取兩種結(jié)果:對于每個空格,要么得分,要么不得分。4.算法實現(xiàn)1)自動評分的流程如果考生的答案與標(biāo)準答案精確匹配,則直接計分。在考生答案與標(biāo)磚答案模糊匹配的前提下,先判斷是否有并列的空格,如果不是,計分,并同時創(chuàng)建臨時數(shù)組用來存放匹配的標(biāo)準答案;如果是并列空格,再判斷是否是重復(fù)答案,如果不是重復(fù)答案,計分,并將已經(jīng)匹配的標(biāo)準答案加到臨時數(shù)組當(dāng)中。自動評分的流程圖如圖5-1所示。圖5-1自動評分流程圖圖5-1自動評分流程圖編碼實現(xiàn)//@paramcanAnswer考生答案 @parammodelAnswer標(biāo)準答案publicclassBlankScore{publicstaticintautoScore(String[]canAnswer,String[]modelAnswer,intpoint){ intscore=0,count=0;//總分數(shù)和臨時數(shù)組下標(biāo); Stringtemp[]=newString[10];//臨時數(shù)組,存放匹配答案 for(inti=0;i<modelAnswer.length;i++){ if(!DataHelper.isNullOrEmpty(canAnswer[i])){ //考生答案存在 if(canAnswer[i].equals(modelAnswer[i])){ score+=point;//考生答案等于標(biāo)準答案,計分,到達下一個空格 }else{ //空格答案多值或多個空格答案并列的情況下,對答案關(guān)鍵字進行分解 Stringstr[]=modelAnswer[i].split("\\|"); for(intj=0;j<str.length;j++){ if(canAnswer[i].contains(str[j])){ //考生答案匹配標(biāo)準答案 if(i>0&&modelAnswer[i].equals(modelAnswer[i-1])){ //標(biāo)準答案與前一個相同 intk; for(k=0;k<count;k++){ if(canAnswer[i].contains(temp[k])){ break;//考生答案匹配臨時數(shù)組元素,表明答案重復(fù),到達下一個空格 } } if(k==count){ //考生答案與臨時數(shù)組元素不匹配,將匹配答案加入臨時
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 出攤貨架轉(zhuǎn)讓合同范例
- 托管合同范例內(nèi)容
- 夜市攤位合同范例
- 工程竣工審核合同范例
- 拆除室內(nèi)施工合同范例
- 別墅綠化維護合同模板
- 白酒市場調(diào)研報告
- 學(xué)校桌椅維修合同范例
- 壁畫合作合同范例
- 建設(shè)工程人工合同范例
- 人教版六年級下冊《反比例的量》導(dǎo)學(xué)案
- GB 26402-2011 食品安全國家標(biāo)準 食品添加劑 碘酸鉀
- DNA甲基化與腫瘤分子標(biāo)志
- 《甲方認質(zhì)認價確認單》
- 降低住院患者跌倒發(fā)生率
- 各種煙氣焓溫、密度、比熱計算表
- 導(dǎo)游與旅行社簽訂勞動合同
- 公路管理工作常見五大訴訟風(fēng)險及防范
- FLUKE-17B型萬用表使用說明
- 探析高校圖書館文創(chuàng)產(chǎn)品開發(fā)與推廣-以清華大學(xué)圖書館為例
- 痰飲咳嗽病脈證并治第十二
評論
0/150
提交評論