李天賜,余海情
(湖北工業大學計算機學院,湖北 武漢 430068)
隨著互聯網技術的飛速發展、電子商務迅速崛起和Web應用迅速發展,Web在各類網站,跨平臺電子商務系統,大數據,云計算等熱門技術領域都得到了廣泛應用[1]。在傳統試題中題量不斷的增大給傳統紙質試題庫帶來了一系列問題,比如存儲和試題查找調用等,都需要耗費巨大人力物力來完成,針對此問題,需要開發一種試題管理系統來解決這些問題。當前流行的開發框架有很多,本文設計了一種基于 SSH框架的試題管理系統,利用成熟的SSH框架搭建的信息系統具有可伸縮性、靈活性、易于維護等特點[2]。
本文設計的試題管理系統以Web形式展現,系統以數據庫的形式保存并且以樹的方式分類成不同的試題,使得學員可以方便有針對性地進行練習。學員可以修改個人信息和密碼并且隨時利用閑暇時間通過計算機網絡訪問題庫進行題目訓練;在答完題目后就能立刻顯示答案并給出答案解析方便學員查漏補缺。系統的期望需求是可以收藏疑難問題方便之后學員進行強化訓練;對有疑問的題目可以進行評論;并可以下載題庫課件。系統主要功能模塊如圖1所示。
本文系統是以 MVC(模型 Model, 視圖 View和控制 Controller)架構中經典的 SSH框架進行開發。前端是以JSP技術顯示界面,Bootstrap技術實現快捷開發界面,JavaScript和 JQuery技術實現動態加載,EL表達式簡化前端代碼,Ajax技術實現局部刷新功能。JSP把點擊事件后,事件根據strut2找到相應的 Action進行業務處理。Action調用Service, Service調用Dao方法訪問數據庫進行數據訪問。其工作流程如SSH工作流程圖2所示。

圖1 系統主要功能模塊Fig.1 Main functional modules of the system

圖2 SSH工作流程圖Fig.2 SSH workflow diagram
在系統設計開發過程中,數據庫設計一定要遵循相關理論和范式。本系統采用的是關系型數據庫,使得數據庫中數據表之間實現數據的一致性,保證數據安全[3-5]。圖 3是 NaviCat For MySQL軟件中E-R圖標下的局部數據庫,表1是用戶表。
系統根據用戶種類的不同設置了等級權限,使用Struts2的過濾器技術,對訪問頁面的用戶進行身份驗證。在struts2-ExamCenter.xml文件中添加過濾器棧時,需要填寫自定義的過濾器棧及相應參數和默認過濾器棧。
這使得普通用戶,管理員,超級管理員三者有著不同的業務頁面,不能相互訪問,如果越界訪問則會強制退出。三種不同的用戶有著不同的分工,以下是對普通用戶‘進入題庫答題’功能實現的簡單介紹。
普通用戶進入題庫功能:系統通過用戶編號查找已購買的題庫,選擇題庫后根據題庫編號查找到的考試項目進行選擇,選擇考試項目后再通過考試項目編號查詢到課程進行選擇,選擇課程后根據課程的編號查找到相應的專題訓練。這里是根據數據結構中樹的存取思路,根節點有著指向子節點的內容,子節點有著指向葉節點的內容。首先查找項目,再查找課程,最后再查找專題訓練。就像日常生活中查用字典一樣,根據拼音的首字母查找拼音,再根據拼音查找具體的字。在進入題庫時,系統需要多次建立連接查詢數據庫,而SSH框架中Hibernate的持久化對象技術可以減少對數據庫連接的次數,避免出現系統異常。
在進入題庫后,專題訓練又分為三個部分,每個章節的在線練習、模擬考試、疑難題庫強化練習。以下是對在線練習的實現介紹以及模擬考試和疑難題庫強化練習的簡要實現介紹:
1)在線練習:在用戶選擇某一個章節的在線練習時,JSP頁面會把選中的章節練習編號以表單(form)的形式提交給后臺系統。依據表單中Exam_Practice. action的信息轉發給在 Action包中找到ExamCenterAction.java。java文件中Practice()方法調用Service接口包中examCenterService類的方法。在Service的實現包ServiceImpl中,調用接口包DAO中的方法。DAOImpl是對DAO包接口的實現,依托hibernate技術訪問數據庫取出根據章節編號查詢到的信息。DAO把信息傳遞給 Service,Service把信息傳遞給Action。Action又對查取出的信息進行業務處理,最后把處理結束的信息根據setAttribute()存儲到 request中并返回一個字符串。Strut包依據ExamCenterAction.java中發送出來的字符串信息,系統把業務處理結束的信息發送到相應的JSP頁面。因為每個章節的題目數量不是很多,JSP頁面則利用假分頁的技術處理數據并能夠很快的顯示題目,選項,答案,解析等。在線練習界面,如下圖4所示。
2)模擬考試是在每個章節中隨機抽選題目,在題目上方還有計時功能,方便用戶控制時間作答題目。抽選題目是在Action層由隨機數Random rd =new Random(System.currentTimeMillis());進行隨機取值,再傳送回JSP頁面顯示。計時是采用setInterval()方法。
3)疑難題庫是在線練習時,用戶通過‘添加到疑難題庫’按鍵標記題目或者是模擬考試的錯誤題目,依托用戶編號和題號添加到疑難題庫中。疑難題庫存儲著在線答題收集的疑難題目和模擬考試的錯誤題目,在疑難題庫界面的右上角按鍵可以取消題目在疑難題庫中。
在以上三個題庫中都用到 JavaScript技術來更改前端HTML代碼,以達到背景色切換夜間或者白天模式,提高用戶答題時的舒適度。在最后為了方便移動端用戶的體驗,在訪問界面時,頁面會根據界面大小對頁面進行了一些樣式調整方便移動用戶體驗。以下圖5和圖6是對不同頁面大小進行自適應的圖。
軟件系統完成交付前,系統需要開發者根據系統的功能進行黑盒和白盒測試。在本文系統中,系統測試是黑盒測試為主,白盒測試為輔。在測試進入題庫時,主要是測試系統能否快速準確地查找出用戶所購買的題庫,再根據題庫編號查找到課程編號,再依據選擇的課程編號查找到訓練題編號[6]。在測試結果中,整個跳轉查找的時間符合系統實現的要求。除此之外,還需要對注冊,登錄,下載課件,評論等功能進行測試。

圖4 在線練習界面Fig.4 Online practice interface

圖5 界面較大Fig.5 Large interface

圖6 界面較小Fig.6 Small interface
本文圍繞著基于SSH框架的試題管理系統,對系統開發進行了需求分析,設計方面對框架選取和數據庫設計進行分析,以及對普通用戶進入題庫功能和在線練習的實現進行介紹[7-8]。雖然試題管理系統在不同用戶需求下不盡相同,但本文所介紹的試題系統對普遍教學試題管理分析和設計有一定的幫助。時代在前行,用戶對試題管理的需求也在不斷變化,試題管理系統也需要進行變更控制,不斷進行系統上的更新與維護。