本發(fā)明涉及電子教學(xué)領(lǐng)域,特別是一種基于j2ee的考試系統(tǒng)及其使用方法。
背景技術(shù):
::隨著網(wǎng)絡(luò)技術(shù)和數(shù)據(jù)庫技術(shù)的發(fā)展以及全國各高校教學(xué)管理信息化程度的不斷提高,無紙化考試系統(tǒng)獲得了前所未有的發(fā)展和技術(shù)支持。目前市場上已經(jīng)出現(xiàn)很多的在線考試系統(tǒng),然而,大多數(shù)的在線考試系統(tǒng)在考試結(jié)束后,只是向?qū)W生用戶提供考試成績和標(biāo)準(zhǔn)答案。學(xué)生用戶經(jīng)常遇到標(biāo)準(zhǔn)答案不理解卻不能獲得詳細(xì)解答過程的情況,這樣嚴(yán)重影響了學(xué)生用戶的學(xué)習(xí)效率;因此,學(xué)生用戶迫切希望能夠出現(xiàn)一種考試系統(tǒng),使學(xué)生可以在考試后能夠就試卷上需要答疑的問題向教師反饋,同時,教師可以通過錄制問題講解視頻的方式進(jìn)行答疑。技術(shù)實現(xiàn)要素:本發(fā)明的發(fā)明目的是,提供一種基于j2ee的考試系統(tǒng)及其使用方法,解決學(xué)生用戶在線考試后對考試系統(tǒng)上傳的答案不理解卻不能獲得詳細(xì)解答過程的問題。為達(dá)到上述目的,本發(fā)明所采用的技術(shù)方案是:一種基于j2ee的考試系統(tǒng),包括用戶管理模塊、教師終端系統(tǒng)、學(xué)生終端系統(tǒng)、試題管理模塊、考試管理模塊以及答疑模塊;所述用戶管理模塊連接所述教師終端系統(tǒng)以及所述學(xué)生終端系統(tǒng),所述教師終端系統(tǒng)連接所述試題管理模塊以及所述考試管理模塊,所述試題管理模塊連接所述考試管理模塊,所述考試管理模塊連接所述學(xué)生終端系統(tǒng),所述學(xué)生終端系統(tǒng)和所述教師終端系統(tǒng)之間還連接有所述答疑模塊,所述學(xué)生終端系統(tǒng)連接學(xué)生用戶終端,所述教師終端系統(tǒng)連接教師用戶終端,所述教師用戶終端連接攝像頭;所述用戶管理模塊用于管理員編輯及存儲第一用戶信息,并將用戶登陸時輸入的第二用戶信息與第一用戶信息進(jìn)行對比,若第一用戶信息與第二用戶信息匹配,所述用戶管理模塊根據(jù)第二用戶信息判斷用戶為教師用戶或者學(xué)生用戶,并進(jìn)入對應(yīng)的所述教師終端系統(tǒng)或所述學(xué)生終端系統(tǒng);所述教師終端系統(tǒng)用于教師用戶獲取試題管理和考試管理的權(quán)限;所述學(xué)生終端系統(tǒng)用于學(xué)生用戶獲取參與考試的權(quán)限;所述試題管理模塊用于教師用戶制定和管理試卷,并在學(xué)生用戶考試時,將試卷發(fā)送至所述考試管理模塊;所述考試管理模塊用于學(xué)生用戶在線考試、教師用戶在線閱卷以及學(xué)生用戶考試成績查詢;所述答疑模塊包括問題反饋單元以及問題解答單元;所述問題反饋單元用于學(xué)生用戶反饋需要答疑的問題,并將問題發(fā)送至問題解答單元;所述問題解答單元用于教師用戶接收學(xué)生用戶的問題,并對問題進(jìn)行解答;教師用戶通過所述攝像頭記錄問題講解的過程,所述攝像頭生成問題解答的視頻信息并通過所述教師用戶終端將視頻信息發(fā)送至所述問題解答單元以供所有學(xué)生用戶查看。優(yōu)選地,所述試題管理模塊包括科目信息管理單元、試卷制定單元及試題存儲單元;所述科目信息管理單元用于教師編輯科目信息,并將科目信息發(fā)送至所述試卷制定單元;所述試卷制定單元用于教師根據(jù)對應(yīng)的科目信息制定試卷,并將試卷發(fā)送至所述試題存儲單元;所述試題存儲單元用于存儲教師制定的試卷,并在學(xué)生用戶考試時將試題發(fā)送至所述考試管理模塊。優(yōu)選地,所述試卷制定單元包括自動組卷和人工組卷兩種方式。所述自動組卷,便于教師用戶快速地制定出試卷,節(jié)約時間的同時也減輕教師用戶的負(fù)擔(dān);所述人工組卷,便于教師用戶根據(jù)學(xué)生用戶知識點的掌握情況,制定出符合學(xué)生用戶學(xué)習(xí)需求的試卷。兩者結(jié)合,增加了試題的多樣性,便于提高學(xué)生用戶的學(xué)習(xí)水平。優(yōu)選地,所述教師用戶終端連接有紅外線掃描儀,所述紅外線掃描儀用于掃描紙檔試題,并將紙檔試題通過所述教師用戶終端添加至所述試題存儲單元。所述紅外線掃描儀的設(shè)置,便于教師用戶將有考察意義的試題添加到試題存儲單元,以供教師制定試卷時選用。優(yōu)選地,所述考試管理模塊包括答題單元、提交單元、閱卷單元、統(tǒng)計單元以及成績查詢單元;所述答題單元用于學(xué)生用戶獲取教師用戶制定的試卷,并進(jìn)行答題;所述提交單元用于學(xué)生用戶提交答卷,并將答卷發(fā)送至所述閱卷單元;所述閱卷單元用于系統(tǒng)自動評閱答卷的客觀題以及教師用戶評閱答卷的主觀題,并將已評閱試卷發(fā)送至所述統(tǒng)計單元;所述統(tǒng)計單元用于計算每份已評閱試卷的最終成績以及每道試題的錯誤率,并將計算結(jié)果發(fā)送至所述成績查詢單元;所述成績查詢單元用于學(xué)生用戶查詢考試成績和試題的正確答案以及教師用戶查詢每道試題的錯誤率。優(yōu)選地,所述考試管理模塊還包括自動交卷單元,當(dāng)?shù)竭_(dá)考試時間結(jié)束時,所述自動交卷單元自動檢測學(xué)生用戶是否提交答卷,若檢測到學(xué)生用戶沒有提交答卷,所述自動交卷單元自動保存并提交答卷。自動交卷單元的設(shè)置,有效地避免了學(xué)生用戶不能按時提交考試從而丟失考試數(shù)據(jù)的情況。優(yōu)選地,所述攝像頭為便攜式攝像頭。所述便攜式攝像頭便于記錄教師用戶在所述教師用戶終端上演示的解題過程以及標(biāo)注的重點內(nèi)容,使教師用戶的講解更加詳細(xì)、清楚,增強學(xué)生用戶的學(xué)習(xí)效果。優(yōu)選地,所述教師用戶終端還連接有寫字板,所述寫字板用于教師用戶編輯文字信息,并將文字信息傳送至所述教師用戶終端。所述寫字板的設(shè)置,便于教師用戶輸入問題講解需要的內(nèi)容,大大節(jié)約了教師用戶的輸入時間。一種基于j2ee的考試系統(tǒng)的使用方法,包括以下步驟:a.教師用戶登陸教師終端系統(tǒng);b.教師用戶編輯科目信息并通過所述試卷制定單元制定試卷;c.學(xué)生用戶登陸學(xué)生終端系統(tǒng);d.學(xué)生用戶通過所述答題單元獲取試卷并作答;e.作答完成,學(xué)生用戶通過提交單元提交答卷,或者考試時間到,所述自動交卷單元提交試卷;f.系統(tǒng)自動評閱答卷的客觀題,教師用戶通過所述閱卷單元評閱答卷的主觀題;g.所述統(tǒng)計單元計算每份已評閱試卷的最終成績以及每道試題的錯誤率;h.學(xué)生用戶查詢考試成績以及試題的正確答案,教師用戶查詢每道試題的錯誤率;i.學(xué)生用戶通過問題反饋單元向教師提問需要答疑的問題;j.教師用戶通過所述攝像頭記錄問題講解的過程,并將錄制的視頻信息發(fā)送至問題解答單元以供所有學(xué)生用戶查看。由于采用上述技術(shù)方案,本發(fā)明具有以下有益效果:1.本發(fā)明設(shè)置有答疑模塊,答疑模塊包括問題反饋單元和問題解答單元,學(xué)生用戶通過問題反饋單元向教師提問需要答疑的問題,教師用戶通過所述攝像頭記錄問題講解的過程,并將錄制的視頻信息發(fā)送至問題解答單元以供所有學(xué)生用戶查看,這樣學(xué)生用戶便可以獲得詳細(xì)而清楚的講解過程,增強了學(xué)生用戶的學(xué)習(xí)效果,提高學(xué)生用戶的學(xué)習(xí)水平,同時也減輕了教師用戶的工作負(fù)擔(dān)。2.本發(fā)明的問題解答單元中存儲的視頻信息是對所有學(xué)生用戶共享的,所有的學(xué)生用戶均可以查看和學(xué)習(xí),避免了多位學(xué)生用戶就相同的問題向教師用戶提問,從而浪費教師用戶的寶貴時間。3.本發(fā)明設(shè)置有紅外線掃描儀,教師用戶可以通過紅外線掃描儀掃描紙檔資料上有考察意義的試題,將試題添加到試題存儲單元,以供教師制定試卷時選用。這樣,不僅節(jié)約了教師用戶錄入試題的時間,而且增加了試題的多樣性,有利于學(xué)生用戶的學(xué)習(xí)。附圖說明圖1是本發(fā)明的功能模塊圖;圖2是本發(fā)明的登陸流程圖;圖3是本發(fā)明的試題管理模塊的組成單元示意圖;圖4是本發(fā)明的試卷制定單元采用隨機組卷方式的前臺流程圖;圖5是本發(fā)明的試卷制定單元采用隨機組卷方式的后臺流程圖;圖6是本發(fā)明的考試管理模塊的的組成單元示意圖;圖7是本發(fā)明的答疑模塊的的組成單元示意圖;圖8是本發(fā)明的使用方法的流程圖;附圖中,1-用戶管理模塊、2-教師終端系統(tǒng)、3-學(xué)生終端系統(tǒng)、4-試題管理模塊、401-科目信息管理單元、402-試卷制定單元、403-試題存儲單元、5-考試管理模塊、501-答題單元、502-提交單元、503-自動交卷單元、504-閱卷單元、505-統(tǒng)計單元、506-成績查詢單元、6-答疑模塊、601-問題反饋單元、602-問題解答單元、7-教師用戶終端、8-學(xué)生用戶終端、9-攝像頭、10-紅外線掃描儀、11-寫字板。具體實施方式以下結(jié)合附圖對發(fā)明的具體實施進(jìn)一步說明。如圖1所示,一種基于j2ee的考試系統(tǒng)包括用戶管理模塊1、教師終端系統(tǒng)2、學(xué)生終端系統(tǒng)3、試題管理模塊4、考試管理模塊5以及答疑模塊6。用戶管理模塊1連接教師終端系統(tǒng)2以及學(xué)生終端系統(tǒng)3,教師終端系統(tǒng)2連接試題管理模塊4以及考試管理模塊5,試題管理模塊4連接考試管理模塊5,考試管理模塊5連接學(xué)生終端系統(tǒng)3,學(xué)生終端系統(tǒng)3和教師終端系統(tǒng)2之間還連接有答疑模塊6,學(xué)生終端系統(tǒng)3連接學(xué)生用戶終端8,教師終端系統(tǒng)2連接教師用戶終端7,教師用戶終端7連接攝像頭9。用戶管理模塊1用于管理員編輯及存儲第一用戶信息,并將用戶登陸時輸入的第二用戶信息與第一用戶信息進(jìn)行對比,若第一用戶信息與第二用戶信息匹配,用戶管理模塊1根據(jù)第二用戶信息判斷用戶為教師用戶或者學(xué)生用戶,并進(jìn)入對應(yīng)的教師終端系統(tǒng)2或?qū)W生終端系統(tǒng)3。教師終端系統(tǒng)2用于教師用戶獲取試題管理和考試管理的權(quán)限。學(xué)生終端系統(tǒng)3用于學(xué)生用戶獲取參與考試的權(quán)限。如圖2所示,本發(fā)明的登陸流程如下:s1.用戶管理模塊1進(jìn)行頁面加載。s2.教師用戶或者學(xué)生用戶在文本框中輸入第二用戶信息。s3.用戶管理模塊1將第二用戶信息與存儲的第一用戶信息進(jìn)行對比,判斷是否存在該用戶;若用戶存在,用戶管理模塊將第二用戶信息寫入瀏覽器的session進(jìn)行保存,同時jsp提交頁面,若用戶不存在,提示登陸失敗。s4.當(dāng)頁面提交成功后,struts攔截名為“l(fā)oginpro”的請求,并跳轉(zhuǎn)到“l(fā)oginaction”類中,執(zhí)行默認(rèn)的“execute()”方法。s5.loginaction類獲取頁面中存儲的第二用戶信息。s6.loginaction根據(jù)第二用戶信息判斷用戶登錄身份,如果登陸用戶的身份是教師,則通過依賴注入對象us調(diào)用userservice接口中的getuserbynameandpass方法查詢是否存在匹配教師用戶,如果查詢的返回集合大于0,則說明該教師用戶已經(jīng)注冊,action返回全局字符串常量tea_result并呈現(xiàn)教師終端系統(tǒng)主界面,否則返回error。如果登陸用戶的身份是學(xué)生,則通過依賴注入對象us調(diào)用studentservice接口中的getstudengtbynameandcardno方法查詢是否存在匹配學(xué)生,如果查詢的返回集合大于0,則說明該學(xué)生用戶已經(jīng)注冊,action返回全局字符串常量stu_result并呈現(xiàn)學(xué)生終端系統(tǒng)主界面,否則返回error。如圖3所示,試題管理模塊4用于教師用戶制定和管理試卷,并在學(xué)生用戶考試時,將試卷發(fā)送至考試管理模塊5。試題管理模塊4包括科目信息管理單元401、試卷制定單元402及試題存儲單元403。科目信息管理單元401用于教師編輯科目信息,并將科目信息發(fā)送至試卷制定單元402??颇啃畔⒐芾戆ㄌ砑涌颇?、查詢科目、修改科目、刪除科目,用戶可以根據(jù)需要添加科目,也可以根據(jù)科目名稱查詢以前添加的科目,并可以對其進(jìn)行相應(yīng)的修改或者刪除。添加科目包括編輯科目名稱、簡介、添加時間等信息。當(dāng)教師用戶單擊“添加科目”菜單,進(jìn)入編輯表單頁面,并通過js文件中的ajax從后臺讀取保存在session里的教師用戶信息,然后返回到j(luò)s客戶端,由“document.getelementbyid("username").value”將讀取的信息寫入jsp頁面中的隱藏域內(nèi),并將隱藏域的name屬性設(shè)置為“l(fā)es.username”,方便在進(jìn)行存儲時可以通過“l(fā)es”以對象的形式存儲數(shù)據(jù),減少了在action中封裝les對象的各個屬性,以及再次設(shè)置les屬性模塊的代碼。當(dāng)編輯完畢,單擊“保存”按鈕,在客戶端js文件中,通過代碼“document.addlesson.submit()”提交表單,向后臺提交數(shù)據(jù)。jsp頁面表單的action屬性決定將數(shù)據(jù)信息交由哪個控制器處理,struts會攔截jsp中表單的action屬性值“addlessonaction”,并將其轉(zhuǎn)到名為“addlessonaction”的類,執(zhí)行默認(rèn)的“execute”方法,在該方法中,利用lessonservice中的addlesson方法將獲取的les對象添加到數(shù)據(jù)庫中,該業(yè)務(wù)邏輯lessonservice的addlesson中調(diào)用了dao組件的save方法,并返回結(jié)果,當(dāng)程序返回到action中之后,通過判斷addlesson返回的值是否大于0來判斷是否保存成功,若為true,則返回success,否則返回error。查詢科目的實現(xiàn)方式為:用jquery獲取文本框值并判斷是否為空,若不為空,通過代碼“window.location.href=encodeuri(encodeuri("checklesson?name="+$("#textfield").val()))”將查詢請求及科目名稱發(fā)送給后臺,struts攔截請求,并根據(jù)名為“checklesson”的action在struts.xml配置文件中找到該action對應(yīng)的checklesson處理類及處理方法。在該類的docheck()方法中,通過session.getattribute(“username”).tostring()獲取當(dāng)前用戶名username的值作為lessonservice的getbyname方法中的一個實參,調(diào)用lessondao的findbyname方法獲取當(dāng)前用戶添加的科目,在該dao類中,使用gethibernatetemplate().find(hql)方法查詢科目并返回科目集合,而該方法中的參數(shù)hql則是從數(shù)據(jù)庫中查詢并取出數(shù)據(jù)的hql語言。struts將action處理結(jié)果轉(zhuǎn)發(fā)給choicelesson.jsp頁面,在該頁面通過struts的<s:iterator>標(biāo)簽迭代遍歷顯示查詢到的對象集合。修改科目的實現(xiàn)方式為:當(dāng)用戶單擊“修改科目”鏈接之后,可對該鏈接所在的記錄修改,在jsp頁面通過html的超鏈接元素發(fā)送url請求,鏈接代碼如下:<aid="edit"href="${pagecontext.request.contextpath}/addlessona?id=<s:propertyvalue="id"/>">修改</a>。當(dāng)跳轉(zhuǎn)到addlessona.jsp頁面之后,在該頁面的js文件中,使用location.search獲取該鏈接的url,然后對url字符串進(jìn)行分解,先獲取“?”后的參數(shù)和參數(shù)值,然后,再利用“quested=para[0].split(“=”)[1]”獲取id值,然后利用ajax將id值傳遞給后臺名為“getlessonbyid”的控制器,struts將請求轉(zhuǎn)到“getlessonbyid”類的“docheck”方法中,該方法中,調(diào)用業(yè)務(wù)邏輯組件lessonservice的“finglessonbyid”方法,通過傳遞參數(shù)id作為實參查詢出該用戶名需要修改的lesson對象,利用for循環(huán)遍歷取出的信息,將其封裝轉(zhuǎn)換為字符串。為了防止亂碼,在聲明獲取向文本輸出流打印對象printwriter之前,先使用“response.setcharacterencoding("utf-8")”設(shè)置其編碼方式為“utf-8”,然后輸出到ajax的異步發(fā)送請求成功的回調(diào)函數(shù)中,即在ajax的success參數(shù)中的函數(shù),使用unescape()函數(shù)進(jìn)行返回值的解碼,再對解碼后的字符串進(jìn)行分割處理,獲取當(dāng)前用戶名和所需要修改科目對象的各個屬性值,并寫入“addlessona.jsp”頁面對應(yīng)的位置。當(dāng)用戶編輯修改完成,點擊提交保存之后,與添加科目類似,通過業(yè)務(wù)邏輯組件lessonservice的modifylesson方法修改記錄,該方法調(diào)用dao層的update方法更新當(dāng)前的記錄。刪除科目的實現(xiàn)方式為:當(dāng)用戶單擊“刪除科目”鏈接之后,為了避免錯誤刪除,先調(diào)用javascript確認(rèn)對話框,只有選擇是之后,鏈接才會跳轉(zhuǎn)并執(zhí)行刪除操作。在jsp頁面通過html的超鏈接元素進(jìn)行發(fā)送刪除請求,鏈接代碼如下:<ahref="javascript:void(0)",onclick="if(isdelete()),this.href='deletelesson?deleid=<s:propertyvalue='id'/>'">刪除</a>。該過程與修改科目的操作類似,發(fā)送請求的同時也需要傳遞對象的id值,通過主鍵id值查找到該對象,然后調(diào)用底層gethibernatetemplate()的delete方法刪除該對象。其中關(guān)鍵部分代碼如下:lessonlesson=this.gethibernatetemplate().load(lesson.class,deleid);this.gethibernatetemplate().delete(lesson)。試卷制定單元402用于教師根據(jù)對應(yīng)的科目信息制定試卷,并將試卷發(fā)送至試題存儲單元403。試卷制定單元402包括自動組卷和人工組卷兩種方式。隨機組卷時,教師用戶只需要選擇考試科目和題型并填寫對應(yīng)題型的總分值,輸入考試時間即可,系統(tǒng)一次完成隨機抽取試題組卷。自動組卷,便于教師用戶快速地制定出試卷,節(jié)約時間的同時也減輕教師用戶的負(fù)擔(dān)。如圖4所示,隨機組卷方式的前臺流程如下:a1:單擊隨機組卷選項欄中的“確認(rèn)”按鈕,在js文件中,利用“document.getelementbyid().value”獲取表格中各題型的分值。a2:判斷表格中的分值是否為空,如果不為空,計算對應(yīng)題型的數(shù)量,將對應(yīng)的題型和數(shù)量以逗號作為分隔符組成一個字符串,再將每個不同對象以“-”作為分隔符組成字符串,最后將該字符串賦值給全局變量inf。a3:通過ajax向randresultset發(fā)送請求,同時傳遞全局變量inf及科目信息。a4:后臺攔截請求之后將其轉(zhuǎn)到randresultset類的dorandresultset()方法中,該方法隨機從題庫中抽取試題保存在試卷表中。a5:處理完畢返回考試科目到j(luò)s中。a6:在js中利用“window.location.href="showtaotilist?lesson="+lesson”發(fā)送請求。a7:struts攔截請求之后轉(zhuǎn)到showtaotilist類的execute方法中,最后以傳遞過來的參數(shù)和當(dāng)前用戶名作為實參,調(diào)用taotiservice組件的findalltaoti方法和getcurrenttotalscore方法,兩個方法分別調(diào)用taotidao組件的findalltaoti方法和getcurrenttotalscore方法并返回數(shù)據(jù)信息。showtaotilist類處理完畢返回success,struts根據(jù)返回信息跳轉(zhuǎn)回到隨機組卷頁面makeexam.jsp,顯示抽取到的題目信息。如圖5所示,隨機組卷方式的后臺流程如下:b1:struts攔截請求,轉(zhuǎn)到randresultset類的dorandresultset方法中。b2:通過session獲取當(dāng)前用戶名username,并通過分隔符“-”分割字符串inf,得到字符串?dāng)?shù)組str,該數(shù)組str中的元素即是由題型type和該題型數(shù)量num組成的字符串“‘type’,‘num’”。b3:通過for循環(huán),分別處理每種題型的隨機抽取和保存入試卷表的操作,根據(jù)當(dāng)前用戶名和ajax傳遞給后臺的type和lesson參數(shù)值作為查詢條件。b4:使用questionsservice組件的getbylessonandtype方法來查詢信息,而該方法調(diào)用了dao組件中的方法,該組件的方法使用hql語言進(jìn)行查詢,并返回list<questions>類型的信息,保存在變量list中。b5:利用“hashset<integer>set=newhashset<integer>();”聲明set變量,該變量用來存儲所生成的一組隨機數(shù)即題目的id主鍵,通過for循環(huán),遍歷取出id值。b6:利用“java.util.list.get(intindex)”方法取出集合list中對應(yīng)題目q,聲明試卷實體taoti類對象tao,通過getter方法取出q對象各個屬性值,同時通過setter方法設(shè)置成tao對象的屬性值。b7:調(diào)用taotiservice組件的addtaoti方法保存tao對象,即把題目加入到試卷表中。b8:最后“randresultset”中dorandresultset方法返回當(dāng)前科目信息到j(luò)s中,然后利用“window.location.href”繼續(xù)跳轉(zhuǎn)到另一個action處理,顯示抽取到的所有題目。自定義組卷時,教師用戶通過手工編輯試題保存到題庫中或者添加到試卷中,此部分主要包括新增試題、查詢試題、修改試題、刪除試題。人工組卷,便于教師用戶根據(jù)學(xué)生用戶知識點的掌握情況,制定出符合學(xué)生用戶學(xué)習(xí)需求的試卷。人工組卷和自動組卷的結(jié)合,增加了試題的多樣性,便于提高學(xué)生用戶的學(xué)習(xí)水平。新增試題的實現(xiàn)流程如下:c1:通過js文件中的ajax從后臺讀取保存在session里的用戶信息,再返回到j(luò)s。c2:由“document.getelementbyid("username").value”將讀取的信息寫入jsp頁面中的隱藏域內(nèi),并將隱藏域的name屬性設(shè)置為“que.username”,以及表格內(nèi)各文本框html元素的name屬性都加que,方便在進(jìn)行存儲時可以通過“que”以對象的形式存儲數(shù)據(jù),減少了在action中封裝que對象的各個屬性,以及再次設(shè)置que屬性模塊的代碼。c3:當(dāng)填寫完信息之后,點擊“添加到試卷”按鈕。c4:在js中,利用“window.location.href”發(fā)送請求,同時將所輸入的各表格數(shù)據(jù)作為傳遞的參數(shù)。c5:struts攔截請求,轉(zhuǎn)發(fā)到addtaotiaction類的execute方法中處理,在該類中需要聲明接收各個參數(shù)值的屬性變量,并編寫其setter和getter方法,首先聲明要保存的對象變量tao,然后才能調(diào)用其setter方法設(shè)置它的屬性值。c6:設(shè)置完后,調(diào)用taotiservice組件的addtaoti方法進(jìn)行保存,然后action返回“success”字符串,struts根據(jù)返回的信息跳轉(zhuǎn)到新增試題頁面,便于用戶繼續(xù)新增試題。試題存儲單元403用于存儲教師制定的試卷,并在學(xué)生用戶考試時將試題發(fā)送至考試管理模塊5。優(yōu)選地,教師用戶終端7連接有紅外線掃描儀10,紅外線掃描儀10用于掃描紙檔試題,并將紙檔試題通過教師用戶終端7添加至試題存儲單元403。紅外線掃描儀10的設(shè)置,便于教師用戶將有考察意義的試題添加到試題存儲單元403,以供教師制定試卷時選用。如圖6所示,考試管理模塊5用于學(xué)生用戶在線考試、教師用戶在線閱卷以及學(xué)生用戶考試成績查詢??荚嚬芾砟K5包括答題單元501、提交單元502、自動交卷單元503、閱卷單元504、統(tǒng)計單元505以及成績查詢單元506。答題單元501用于學(xué)生用戶獲取教師用戶制定的試卷,并進(jìn)行答題。答題單元501除了顯示試題內(nèi)容,還顯示了試題所屬科目套題、答題時間、考試剩余時間、當(dāng)前日期時間、試卷總分、學(xué)生用戶姓名和學(xué)號等基本信息。當(dāng)學(xué)生用戶點擊前臺首頁菜單欄的“獲取試卷”,前臺顯示出所有考試科目,以及顯示該科目試卷發(fā)布時間,點擊操作欄的“答題”按鈕進(jìn)入相應(yīng)科目的考試頁面中。在js文件中,為“答題”按鈕設(shè)置click事件,在事件中,利用“document.getelementbyid("td1").innerhtml;”取得列表單元格的值,即按鈕所在行的考試科目,用該值作為傳遞參數(shù),使用“window.open()”方法發(fā)送請求,在瀏覽器中該方法將會保留原主界面,而重新打開一個新的頁面。struts攔截該請求,轉(zhuǎn)到“gettaotibylesson”類默認(rèn)的execute方法,該方法首先從session里獲取當(dāng)前登錄的學(xué)生姓名和學(xué)號,該類中調(diào)用了業(yè)務(wù)邏輯組件taotiservice的“gettime、getheader、gettaotibysingle、gettaotibypanduan”等幾個方法,這些方法調(diào)用了dao組件中的方法,分別獲取試卷答題時間、試卷所屬科目、所屬科目的試卷的題目信息,執(zhí)行完dao方法后,由service返回這些數(shù)據(jù)信息到action中,最后execute方法返回“success”,struts配置文件根據(jù)該方法返回信息,跳轉(zhuǎn)到考試頁面startexam.jsp,頁面加載時,同時把action處理得到的試卷答題時間、試卷標(biāo)題、試卷題目等數(shù)據(jù)信息顯示到頁面對應(yīng)位置上。答題單元501保存答題記錄的實現(xiàn)主要是為每個題目選項都綁定了onclick事件,當(dāng)學(xué)生答題的時候,觸發(fā)onclick事件,把該選項的值記錄下來,然后通過ajax把當(dāng)前題目學(xué)生的答案、真實id值、序號、題型傳給后臺服務(wù)器。為了方便系統(tǒng)統(tǒng)計評分,在domain里創(chuàng)建了一個實體對象temptable,專門用來實時保存學(xué)生的答題記錄,該temptable對象主要有姓名、學(xué)號、考試科目、題型、頁面序號、試題的真實id、考生選擇、正確答案、該題得分等屬性。后臺服務(wù)器在保存學(xué)生答題記錄之前,首先根據(jù)學(xué)號、題目的真實id值作為查詢條件,查詢數(shù)據(jù)庫中是否已經(jīng)存在該題目的作答記錄,如果不存在,則做添加操作,否則做修改操作,這樣可以避免學(xué)生改選了之后,數(shù)據(jù)庫中出現(xiàn)重復(fù)記錄或者不是最新記錄的問題。提交單元502用于學(xué)生用戶提交答卷,并將答卷發(fā)送至閱卷單元504。自動交卷單元503,用于當(dāng)?shù)竭_(dá)考試時間結(jié)束時,自動交卷單元503自動檢測學(xué)生用戶是否提交答卷,若檢測到學(xué)生用戶沒有提交答卷,自動交卷單元503自動保存并提交答卷。自動交卷單元503的設(shè)置,有效地避免了學(xué)生用戶不能按時提交考試從而丟失考試數(shù)據(jù)的情況。在js文件中,只要把“提交試卷”按鈕click事件所綁定的代碼封裝成一個函數(shù),在倒計時結(jié)束之后,再調(diào)用該函數(shù),此時,相當(dāng)于單擊該按鈕,就可以實現(xiàn)自動提交試卷功能。閱卷單元504用于系統(tǒng)自動評閱答卷的客觀題以及教師用戶評閱答卷的主觀題,并將已評閱試卷發(fā)送至統(tǒng)計單元505。其中,系統(tǒng)自動評閱答卷的客觀題的實現(xiàn)方式如下:struts攔截“提交試卷”請求之后,跳轉(zhuǎn)到countscoreaction類的docountscore方法,該方法中首先獲取session里的當(dāng)前登錄學(xué)生的學(xué)號,調(diào)用temptableservice組件的gettotalscore方法,而temptableservice的gettotalscore方法調(diào)用dao組件中的方法,在dao方法中通過sum函數(shù)編寫hql語言,從臨時表中查詢統(tǒng)計各題型的得分和總分并以list類型返回,再用for語句轉(zhuǎn)換為字符串類型,同時用分隔符“,”將各題型的得分和總分組合成string類型的字符串,執(zhí)行完service和dao之后,查詢到的數(shù)據(jù)信息返回在action中,聲明學(xué)生成績實體對象,調(diào)用其setter方法把數(shù)據(jù)注入為它的屬性值,值得注意的是,在把學(xué)生成績保存到真實表之前,應(yīng)該先調(diào)用sturesultservice組件的findsturesult方法查詢成績表,判斷是否已經(jīng)存在當(dāng)前學(xué)生所考科目的成績記錄,若存在,則先刪除后再保存,否則直接執(zhí)行保存操作。統(tǒng)計單元505用于計算每份已評閱試卷的最終成績以及每道試題的錯誤率,并將計算結(jié)果發(fā)送至成績查詢單元506。成績查詢單元506用于學(xué)生用戶查詢考試成績和試題的正確答案以及教師用戶查詢每道試題的錯誤率。在js文件中,為該“查詢”按鈕設(shè)置了click事件,在事件代碼中首先判斷輸入文本框的值是否不為空,如果不為空,利用“window.location.href”跳轉(zhuǎn)到checksturesultaction類,該類中根據(jù)傳遞的學(xué)號作為參數(shù),調(diào)用sturesultservice組件的getsturesultbycardno方法,而此方法調(diào)用了sturesultdao組件的findbycardno方法到學(xué)生成績表中查詢,并以list<sturesult>類型返回信息,執(zhí)行完service之后,把數(shù)據(jù)信息賦值給action里聲明的該類型的屬性變量sturesult,最后action返回“success”,struts根據(jù)返回信息,跳轉(zhuǎn)到choicescore.jsp頁面,在jsp頁面中,通過struts標(biāo)簽迭代action中的“sturesult”變量。單擊“答案解析”按鈕之后可以在本次考試試卷的每道題目下方顯示學(xué)生的答案和正確答案。在js文件中,為該按鈕設(shè)置了“click”事件,并在事件中設(shè)置代碼為跳轉(zhuǎn)到struts配置的名為“answeranalysisaction”所在的類,在該類中首先設(shè)置通過依賴注入的學(xué)生成績業(yè)務(wù)組件sturesultservice和試卷業(yè)務(wù)組件taotiservice的setter方法,然后調(diào)用組件中的方法獲取試卷題目信息和學(xué)生成績信息,并賦值給該action中聲明的各屬性變量,最后action返回“success”,struts根據(jù)返回信息跳轉(zhuǎn)到答案解析頁面startexama.jsp,同時顯示題目信息和學(xué)生成績信息。如圖1、7所示,答疑模塊6包括問題反饋單元601以及問題解答單元602,問題反饋單元601用于學(xué)生用戶反饋需要答疑的問題,并將問題發(fā)送至問題解答單元602。問題解答單元602用于教師用戶接收學(xué)生用戶的問題,并對問題進(jìn)行解答。教師用戶通過攝像頭9記錄問題講解的過程,攝像頭9生成問題解答的視頻信息并通過教師用戶終端7將視頻信息發(fā)送至問題解答單元602以供所有學(xué)生用戶查看。優(yōu)選地,攝像頭9為便攜式攝像頭9。便攜式攝像頭9便于記錄教師用戶在教師用戶終端7上演示的解題過程以及標(biāo)注的重點內(nèi)容,使教師用戶的講解更加詳細(xì)、清楚,增強學(xué)生用戶的學(xué)習(xí)效果。教師用戶終端7還連接有寫字板11,寫字板11用于教師用戶編輯文字信息,并將文字信息傳送至所述教師用戶終端7。寫字板11的設(shè)置,便于教師用戶輸入問題講解需要的內(nèi)容,大大節(jié)約了教師用戶的輸入時間。如圖8所示,一種基于j2ee的考試系統(tǒng)的使用方法,包括以下步驟:a.教師用戶登陸教師終端系統(tǒng)2。b.教師用戶編輯科目信息并通過試卷制定單元402制定試卷。c.學(xué)生用戶登陸學(xué)生終端系統(tǒng)3。d.學(xué)生用戶通過答題單元501獲取試卷并作答。e.作答完成,學(xué)生用戶通過提交單元502提交答卷,或者考試時間到,自動交卷單元503提交試卷。f.系統(tǒng)自動評閱答卷的客觀題,教師用戶通過閱卷單元504評閱答卷的主觀題。g.統(tǒng)計單元505計算每份已評閱試卷的最終成績以及每道試題的錯誤率。h.學(xué)生用戶查詢考試成績以及試題的正確答案,教師用戶查詢每道試題的錯誤率。i.學(xué)生用戶通過問題反饋單元601向教師提問需要答疑的問題。j.教師用戶通過攝像頭9記錄問題講解的過程,并將錄制的視頻信息發(fā)送至問題解答單元602以供所有學(xué)生用戶查看。上述說明是針對本發(fā)明較佳可行實施例的詳細(xì)說明,但實施例并非用以限定本發(fā)明的專利申請范圍,凡本發(fā)明所提示的技術(shù)精神下所完成的同等變化或修飾變更,均應(yīng)屬于本發(fā)明所涵蓋專利范圍。當(dāng)前第1頁12當(dāng)前第1頁12