謝亦才++王靜++鐘劍++劉波林
摘要:廉政文化考試是響應(yīng)習(xí)總書記提出的全面依法治國的舉措之一。本考試系統(tǒng)以MVC為開發(fā)模式,采用JSP為前臺頁面開發(fā)技術(shù)、servlet開發(fā)頁面跳轉(zhuǎn)等流程控制的控制器,Java語言開發(fā)業(yè)務(wù)邏輯等模型,以SQL SERVER2008為數(shù)據(jù)庫,tomcat為WEB服務(wù)器。開發(fā)了用戶管理、試卷格式設(shè)置、題庫導(dǎo)入、在線考試、考試數(shù)據(jù)統(tǒng)計(jì)和成績查詢等功能模塊。實(shí)現(xiàn)了廉政文化考試的無紙化,提高了考試的公正性和科學(xué)性。
關(guān)鍵詞:廉政文化;考試系統(tǒng);MVC
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2015)25-0045-02
習(xí)近平總書記提出的“四個全面”之一就有全面依法治國。為此,全國上下都要加強(qiáng)法制教育,而廉政文化考試是法制教育的重要環(huán)節(jié)。傳統(tǒng)的廉政文化考試使用紙質(zhì)試卷,將師生集中在指定教室,分發(fā)試卷考試,最后將試卷上交,再由相關(guān)人員閱卷、打分、統(tǒng)計(jì)成績和匯總數(shù)據(jù)等。
這種考試程序復(fù)雜,浪費(fèi)人力、物力和財力,效率低。如今可以利用計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)使傳統(tǒng)的紙質(zhì)考試方式向網(wǎng)絡(luò)化和無紙化方向發(fā)展。廉政文化考試系統(tǒng)就是因此而設(shè)計(jì)和開發(fā)的。本文根據(jù)廉政文化考試的實(shí)際業(yè)務(wù)需求,設(shè)計(jì)并實(shí)現(xiàn)了一套在線考試系統(tǒng)。系統(tǒng)采用MVC架構(gòu),使用JSP做前臺WEB頁面、SQL Server2008 作為后臺數(shù)據(jù)庫、JAVA編程實(shí)現(xiàn)業(yè)務(wù)邏輯。系統(tǒng)有隨機(jī)抽卷、自動交卷、成績查看、試卷設(shè)計(jì)等功能,同時支持 1000 多人在線考試。本系統(tǒng)的使用大大節(jié)省了學(xué)校的人力、物力等資源,提高了組織考試的效率。
1系統(tǒng)架構(gòu)
為了使系統(tǒng)有更好的可擴(kuò)展性,便于后期的維護(hù),本考試系統(tǒng)采用MVC架構(gòu)。MVC 設(shè)計(jì)模式的核心是實(shí)現(xiàn)三層甚至多層的松散耦合,它將應(yīng)用程序抽象為模型、控制器以及視圖3個部分,三者既分工又合作地完成用戶提交的任務(wù)[1]。實(shí)現(xiàn)了視圖層、業(yè)務(wù)層和模型層的分離,如圖1所示。
1)視圖層(View):提供用戶交互界面,包括登錄界面、試卷設(shè)計(jì)界面、考試界面等。它依據(jù)模型數(shù)據(jù)創(chuàng)建的,可以從 Model 訪問數(shù)據(jù),并指定如何表示數(shù)據(jù)。當(dāng)模型狀態(tài)發(fā)生變化時,視圖應(yīng)該得到通知,以便更新視圖。視圖層把用戶動作傳遞給控制層。
2)控制器(Controller):是應(yīng)用程序中處理用戶交互的部分,定義應(yīng)用程序的行為,解釋用戶的動作,負(fù)責(zé)從視圖讀取數(shù)據(jù),并向模型發(fā)送數(shù)據(jù),然后根據(jù)用戶動作和 Model 處理的結(jié)果,選擇一個 視圖作為這個用戶請求響應(yīng)的一部分。
3)模型層 (Model):應(yīng)用程序的核心,通常模型對象負(fù)責(zé)在數(shù)據(jù)庫中存取數(shù)據(jù),用于處理應(yīng)用程序業(yè)務(wù)邏輯,也為 Controller 提供了訪問被 Model 封裝了的某些應(yīng)用功能的能力,比如登錄認(rèn)證、生成試卷樣式、導(dǎo)入題目、抽題、改卷等。
2 功能設(shè)計(jì)
考試系統(tǒng)的功能主要有管理員系統(tǒng)和考試子系統(tǒng)兩大模塊,其中管理員系統(tǒng)的功能包括用戶管理、試卷格式(如試卷標(biāo)題、題型及其數(shù)量和分值、考試范圍、適用考試對象等)設(shè)置、考試子系統(tǒng)維護(hù)(如導(dǎo)入題庫等)、考試數(shù)據(jù)統(tǒng)計(jì)等;考試子系統(tǒng)的功能包括在線組卷、在線考試和成績查詢等功能。功能圖1所示:
3 數(shù)據(jù)庫設(shè)計(jì)
依據(jù)系統(tǒng)功能模塊, 按照數(shù)據(jù)庫設(shè)計(jì)規(guī)范[2],數(shù)據(jù)庫主要有用戶表、試卷格式表、單項(xiàng)選擇題表、多項(xiàng)選擇題表、判斷題表等。其中以用戶表和單項(xiàng)選擇題表為例如表1和表2所示:
表1 用戶表
[字段名稱\&數(shù)據(jù)類型\&備注\&ID\&int\&用戶編號\&name\&varchar(50)\&用戶姓名\&password\&varchar(50)\&用戶密碼\&department\&varchar(50)\&用戶所在部門\&role\&varchar(50)\&用戶角色(管理員或者考生)\&shijuanID\&int\&考生所考試的試卷編號\&score\&float\&考生考試的分?jǐn)?shù)\&]
4 系統(tǒng)實(shí)現(xiàn)
根據(jù)系統(tǒng)功能和數(shù)據(jù)庫設(shè)計(jì)分析,實(shí)現(xiàn)系統(tǒng)的總體工作流程如圖2所示:
圖3 系統(tǒng)總體流程圖
4.1 系統(tǒng)開發(fā)工具
本系統(tǒng)總體采用MVC開發(fā)模式,用JSP技術(shù)開發(fā)視圖層,Java語言開發(fā)模型層,Servlet開發(fā)控制層。采用SQL SERVER2008做數(shù)據(jù)庫,TOMCAT做WEB服務(wù)器。
4.2 導(dǎo)入題庫
為了使題目可以逐題添加到數(shù)據(jù)庫,也可以批量導(dǎo)入到數(shù)據(jù)庫,系統(tǒng)設(shè)計(jì)了供管理員在后臺逐個加題進(jìn)數(shù)據(jù)庫的WEB頁面,也設(shè)計(jì)了可以導(dǎo)入excel表格的批量題目進(jìn)數(shù)據(jù)庫的功能。Excel表格的每一列的列名與數(shù)據(jù)庫中相關(guān)的數(shù)據(jù)庫表的字段相同。Java利用poi[3]包解析excel表,逐行逐個單元格讀出excel表格中的題目信息,然后寫入到數(shù)據(jù)庫中對應(yīng)的數(shù)據(jù)庫表中。部分核心代碼如下:
XSSFWorkbook xwb = new XSSFWorkbook(is);
for(int numSheet = 0; numSheet < xwb.getNumberOfSheets(); numSheet++)
{ XSSFSheet xSheet = xwb.getSheetAt(numSheet);
if(xSheet == null){ continue; }
for(int rowNum = 1; rowNum <= xSheet.getLastRowNum(); rowNum++)
{ XSSFRow xRow = xSheet.getRow(rowNum);
if(xRow == null){ continue; }
yuanRowCount++;
psm.setInt(1, yuanRowCount);
for(int cellNum = 0; cellNum <=xRow.getLastCellNum(); cellNum++)
{ XSSFCell xCell = xRow.getCell(cellNum);
if(xCell == null){ continue; }
if(daoruFile.trim().equals("單項(xiàng)選擇題.xlsx"))
{String CellValue=xCell.getStringCellValue();
psm.setString(cellNum+2, xCell.getStringCellValue());}
if(daoruFile.trim().equals("多項(xiàng)選擇題.xlsx"))
{psm.setString(cellNum+2, xCell.getStringCellValue()); }
if(daoruFile.trim().equals("判斷題.xlsx"))
{psm.setString(cellNum+2, xCell.getStringCellValue());}}
psm.executeUpdate(); } }
}catch (Exception ex)
{ex.printStackTrace();
}
finally
{this.closed(); }
return true;
}
4.3 設(shè)置試卷樣式
系統(tǒng)管理員根據(jù)每次考試的要求,設(shè)定本次考試的考試對象(老師或者學(xué)生)、考試范圍(哪本書的哪些章節(jié))、題型及其分值和題目數(shù)量等。設(shè)置界面如圖3所說。
這個功能的實(shí)現(xiàn)主要是在web層的admin.jsp中通過一個form表單制作界面,提交表單后流程跳到shezhigeshi.java(一個servlet)控制器,再由控制器獲取表單的各項(xiàng)數(shù)據(jù),然后跳轉(zhuǎn)到geshiToDB.java的model,同時攜帶這些數(shù)據(jù)給這個model,最后由model負(fù)責(zé)把數(shù)據(jù)寫入試卷樣式數(shù)據(jù)庫。
4.4 組合試卷策略
根據(jù)管理員設(shè)置的試卷標(biāo)題、適用考試對象、考試范圍、題型及其分值和數(shù)量,自動隨機(jī)生成一套試卷供考生考試,確保每一個考生的試卷不完全雷同。組合試卷策略步驟如下:
第一、讀取試卷格式數(shù)據(jù);
第二、根據(jù)第一步的數(shù)據(jù)設(shè)置好試卷標(biāo)題;
第三、根據(jù)第一步獲得的數(shù)據(jù)中的考試對象、考試范圍、題型,把題庫中所有符合條件的試題的編號讀出并保存到一維數(shù)組中;
第四、判斷數(shù)組的長度length是否大于或等于題型對應(yīng)的數(shù)量N,如果為真,隨機(jī)生成[1, length]中的N個數(shù);
第五、把隨機(jī)生成的N個數(shù)的一維數(shù)組下標(biāo)所對應(yīng)的數(shù)組元素(即題號)讀出;
第六、按照抽到的題號到數(shù)據(jù)庫中抽取對應(yīng)的題目,推送到頁面上,生成試卷。
5 結(jié)束語
基于MVC模式開發(fā)的高校廉政文化考試系統(tǒng),有效地提高了考試公平性和科學(xué)性,從根本上解決了傳統(tǒng)紙質(zhì)考試工作量大、效率低、資源浪費(fèi)的問題。同時保障了廉政文化宣傳教育效果的鞏固和提升。
參考文獻(xiàn):
[1] 邊霞,趙奎,胡曉勤,等.基于MVC的文件備份后臺管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與技術(shù),2011,32(9):3196.
[2] 亓永剛.SQL Server數(shù)據(jù)庫管理與開發(fā)兵書[M].北京: 電子工業(yè)出版社,2013.
[3] POI經(jīng)典書籍[EB/OL].http://wenku.it168.com/d_000524404.shtml.