汪大鵬,尹永勝
(1.武漢郵電科學(xué)研究院 湖北 武漢 430074;2.烽火通信科技股份有限公司 湖北 武漢 430074)
基于Spring和Hibernate駕考答題系統(tǒng)的設(shè)計與實現(xiàn)
汪大鵬1,尹永勝2
(1.武漢郵電科學(xué)研究院 湖北 武漢 430074;2.烽火通信科技股份有限公司 湖北 武漢 430074)
針對駕校筆試考試部分題目較多、無序,但是范圍明確的特點,采用了Spring和Hibernate框架,后臺使用Java技術(shù),前臺使用HTML5和BootStrap技術(shù),開發(fā)了一個駕考答題系統(tǒng)。該系統(tǒng)的題庫與駕考筆試題目一致,而且答題模式也和正規(guī)的駕考筆試一致,最后也能得出學(xué)員的成績。學(xué)員通過在該系統(tǒng)上練習(xí)答題,能體驗真實的答題環(huán)境,提高自己對駕考題目的熟悉度,從而提高整體的通過率。
Spring;Hibernate;Java;HTML5;Bootstrap
傳統(tǒng)的考試,易泄題,程序繁瑣復(fù)雜,易作弊,閱卷工作量大[1]。傳統(tǒng)的考試已經(jīng)不能適應(yīng)當(dāng)前的需要,進行在線考試已經(jīng)越來越迫切[2]。隨著互聯(lián)技術(shù)的發(fā)展,越來越多的行業(yè)采用在線考試取代傳統(tǒng)的考試。目前,市場上的考試系統(tǒng)主要采用C/S(Client/Server)和 B/S(Browser/Server)兩種開發(fā)模式,考試系統(tǒng)功能參差不齊。C/S即客戶/服務(wù)器模式,主要有客戶應(yīng)用程序、服務(wù)器管理程序和中間件3個部分組成[3];B/S模式包括3層結(jié)構(gòu),包括瀏覽器、服務(wù)器和數(shù)據(jù)庫服務(wù)器[4]。駕考答題系統(tǒng)是眾多在線考試系統(tǒng)中的一個,既有C/S模式和B/S模式,本系統(tǒng)是B/S模式的。
Spring是一個開源框架,是為了解決企業(yè)級應(yīng)用程序而創(chuàng)建的[5]??蚣艿闹饕獌?yōu)勢之一就是它的分層結(jié)構(gòu),分層結(jié)構(gòu)允許你選擇使用哪一個組件,同時為J2EE應(yīng)用程序開發(fā)提供集成的框架[6]。Spring的兩大核心模塊是IoC和AOP[7]。IOC即控制反轉(zhuǎn),在Spring框架里,創(chuàng)建被調(diào)用者的工作不再由調(diào)用者來完成,Spring框架容器創(chuàng)建被調(diào)用者實例,然后再注入調(diào)用者[8]。AOP即面向切面編程,利用橫切的方法抽取匯集到另一個獨立的模塊中讓業(yè)務(wù)邏輯類的代碼比較清晰一些[9]。
本系統(tǒng)利用了Spring MVC模式開發(fā)。MVC3個基本部分為 Model、View、Controller[10]。 Model表示模型,View表示視圖,Controller表示控制器。
Hibernate框架是一個ORM (Object-relational Mapping)工具,即對象/關(guān)系映射工具,它為java語言環(huán)境構(gòu)建[11]。Hibernate是一個開放源代碼的對象關(guān)系映射框架,它對JDBC進行了輕量級的封裝[12]。Hibernate提供了一個框架來把面向?qū)ο蟮挠蚰P娃D(zhuǎn)化為數(shù)據(jù)庫模型,其典型的功能就是把Java類映射到數(shù)據(jù)庫表中,以實現(xiàn)對Java類對象進行直接的數(shù)據(jù)庫存取[13]。Hibernate可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任[14]。Hibernate適用于面向?qū)ο竽P椭械臉I(yè)務(wù)邏輯層,而且允許透明持久化,使其應(yīng)用于熱河數(shù)據(jù)庫[15]。
系統(tǒng)主要分為前臺和后臺,前臺供普通用戶使用,后臺給系統(tǒng)管理員使用。前臺主要提供注冊、登錄、答題、退出、繼續(xù)答題、查看歷史成績等功能,后臺主要有用戶管理、題目管理功能。系統(tǒng)功能模塊圖如圖1所示。
圖1 系統(tǒng)功能模塊圖
本系統(tǒng)使用Spring和Hibernate框架,利用Hibernate框架的ORM特性,將會把對象和數(shù)據(jù)庫中的表對應(yīng)起來,對數(shù)據(jù)庫中的表的操作轉(zhuǎn)換為對對象的操作。此駕考系統(tǒng)中將建3個對象,分別為用戶(User)、題目(Subject)、成績(Result),對應(yīng)到數(shù)據(jù)庫中的三張表,分別為用戶表 (user)、題目表(subject)、成績表(result),其表結(jié)構(gòu)主要字段設(shè)計如下表1、表2、表3所示。
用戶登錄后進入答題首頁,在首頁中,可以選擇科目一或者科目四答題或者查看歷史成績,首頁如圖2所示。選擇科目一即進入科目一答題頁面,選擇科目四即進入科目四答題頁面,科目一和科目四頁面相同,只是呈現(xiàn)的內(nèi)容不同;選擇查看歷史成績,即進入答題歷史列表頁面。
表1 用戶表(user)
表2 題目表(subject)
表3 成績表(result)
圖2 答題首頁圖
用戶選擇科目一或者科目四后進入答題頁面,答題頁面如圖3所示。
圖3 答題頁面圖
系統(tǒng)隨機取題核心代碼如下:
說明:首先在題目表中將科目一或者科目四的所有題目取出來放在一個Set集合中,這是利用了Set集合沒有重復(fù)元素、無序的特性;next等于0表示取出第一題,每取出一題讓next加1,取出下一題。之所以用到中間的while循環(huán),是因為考慮到用戶可能沒有完成本次考試而退出本次答題,下次進來繼續(xù)答題,再次將科目一或者科目四題目取出放到Set中,可能會取出重復(fù)題目,所以每取出一題,要判斷取出的題目前面是否已經(jīng)取出過,isExit(String,int,String)方法正是用來判斷此題是否取出過,返回true表示前面已取出過,false表示沒有取出過。如果取出過,在while循環(huán)里控制,知道沒有取出沒有重復(fù)的題目為止。
用戶答題只有兩種結(jié)果,通過或者失敗??颇恳?0分及格,100題,每題1分,所以錯題超過10題即為不及格;超過10題系統(tǒng)立即終止答題??瓶颇克囊彩?0分及格,50題,每題2分,答錯題目超過5個,系統(tǒng)立即終止答題,答題不及格。
用戶選擇查看歷史成績后,會進入歷史成績列表頁面,列表頁會按時間降序把用戶答題的記錄列出來。選擇任何一個列表,即進入成績詳情頁。在成績詳情頁可以看到自己的答題情況,點擊任何一個題號,可以進入題目詳情頁面。主要代碼如下:
說明:indexList是從數(shù)據(jù)庫取出的存儲答題情況的字段的內(nèi)容,比如用戶答了2個題目,這兩個題在題目表對應(yīng)的id分別為5和100,id為5的答對,id為 10的答錯,則 indexList值為 5_r,100_w,所以將indexList以“,”分割后存儲在index[]數(shù)組中,然后遍歷index[]數(shù)組,分別將題目對應(yīng)的id和答對或者答錯標(biāo)記對應(yīng)好存儲在timu對象中,再將對象存儲到timus列表中,返回前端頁面。
本系統(tǒng)利用了Spring和Hibernate框架,利用了用戶和成績的一對多關(guān)系,驗證了Hibernate框架的數(shù)據(jù)持久化和級聯(lián)的特性,當(dāng)我們?nèi)サ接脩魧ο蠛?,不需要再去取成績對象,而是通過用戶的get方法直接獲取到成績對象,當(dāng)session中存在用戶杜子昂時,程序在session的有效期內(nèi)不再重復(fù)執(zhí)行查詢數(shù)據(jù)庫的操作,而是直接從session中取數(shù)據(jù)。這種機制大大的提高了程序的執(zhí)行效率,避免了重復(fù)的從數(shù)據(jù)庫讀取數(shù)據(jù)的操作。
[1]王添財.基于Java EE的在線考試系統(tǒng)的設(shè)計與實現(xiàn)[D].廣州:華南理工大學(xué),2014.
[2]鄒宏.基于WEB的英語在線考試系統(tǒng)的設(shè)計與實現(xiàn)[D].成都:電子科技大學(xué),2012.
[3]趙虹.基于C/S模式考試系統(tǒng)的設(shè)計與實現(xiàn)[D].成都:電子科技大學(xué),2011.
[4]謝翠紅.基于B/S架構(gòu)的網(wǎng)絡(luò)在線考試系統(tǒng)的設(shè)計與實現(xiàn)[D].成都:電子科技大學(xué),2012.
[5]朱卉名.基于Spring MVC的政務(wù)管理系統(tǒng)研究與開發(fā)[D].南京:南京理工大學(xué),2014.
[6]陳雄華,林開雄.Spring3.x企業(yè)級應(yīng)用開發(fā)[M].北京:電子工業(yè)出版社,2012.
[7]翟劍錕.Spring框架分析及應(yīng)用研究[D].上海:中國科學(xué)院大學(xué),2013.
[8]孫慰遲.基于Spring框架的醫(yī)療保險管理信息系統(tǒng)的設(shè)計與實現(xiàn)[D].上海:復(fù)旦大學(xué),2011.
[9]王壵力.SSH技術(shù)在供應(yīng)商管理系統(tǒng)開發(fā)中的應(yīng)用研究[D].上海:上海交通大學(xué),2011.
[10]Ren Yongcahng, Xing Tao, Xing Zhaofeng,Zheng Jianchun.Application Research for Integrated SSH Combination Framework to Achieve MVC Model[C].Intrnationl Conference on Computational and Information Sciences,2011:449-502.
[11]趙彥超.基于Struts和Hibernate的購物系統(tǒng)后臺及安全的研究與實現(xiàn)[D].北京:北京工業(yè)大學(xué),2013.
[12]王昶太.基于Spring和Hibernate的智能電子商城系統(tǒng)的設(shè)計與實現(xiàn) [D].北京:北京郵電大學(xué),2015.
[13]B.Sakowicz, A.Bednarek, M.Kaminski, etal.Website forproviding statistic services based on Java EE platform [A].In:B.Mandziy ed.TCSET 2008-Modern Problems of Radio Engineering,Telecommunications and Computer Science-Proceedings of the 10th International Conference,TCSET’2010 [C].New Jersey:IEEE Computer Society,2011:166-169.
[14]孫柏松.Spring MVC設(shè)計模式和Eclipse在B/S架構(gòu)電子商城交易系統(tǒng)中的研究[D].北京:中國地質(zhì)大學(xué),2011.
[15]王雪.基于Stucts-Spring-Hibernate框架的企業(yè)培訓(xùn)管理系統(tǒng)的設(shè)計與實現(xiàn)[D].長春:吉林大學(xué),2012.
Design and implementation of driving school exam system based on Spring and Hibernate
WANG Da-peng1,YIN Yong-sheng2
(1.Wuhan Research Institute of Posts and Telecommunications,Wuhan 430074,China; 2.Wuhan Fiberhome Network Limited Liability Company,Wuhan 430074,China)
Aiming at the characteristics of lots of questions and no oeder but clear scope in the driving test,I develope a driving test system using Spring and Hibernate frameworks.The back end using the Java language,the front desk using the HTML5 and Bootstrap framework.The questions in the system are the same to the true system.And the way to answer the questions is also the same to the true driving test.When the students complete the exam,they can see their result.By practicing in the system,the students can experience the real driving test environment,and they can be more familiar to the driving test questions,so as to improve the overall pass rate.
Spring; Hibernate; Java; HTML5; Bootstrap
TN711
A
1674-6236(2017)17-0046-04
2016-07-09稿件編號:201607078
汪大鵬(1991—),男,湖北黃石人,碩士研究生。研究方向:Java Web。