李常寶
(山西警官職業學院,山西 太原 030027)
當前,常用的傳統在線題庫組卷系統一般有三種模式:傳統Web系統,單機版系統,手工Excel操作。
傳統Web系統的安全性比較差,網址中,網頁中容易泄露一些試題敏感數據;單機版系統缺少網絡功能,對于不同地域的用戶來說,很不方便;手工Excel操作,人工操作容易出錯,而且安全性也不高。
綜合以上幾點,本文所開發的在線題庫組卷系統能夠有效解決上述問題。采用Rest標準格式的WebAPI能夠隱藏服務器資源路徑及參數,提高安全性;采用HUSH FrameWork[1],可以有效提高開發效率;采用B/S結構,可以充分發揮網絡的便捷性,不同地域的用戶也可以使用。隨機出題算法,也可以根據用戶需求,靈活調整與設置,保證公平與合理。
本論文所研究的在線題庫組卷系統是基于以下技術實現:
(1)基于Rest標準格式開發的一套WebAPI。 Rest是一套互聯網應用程序的API設計 規范。它的核心原則是將你的API拆分為邏輯上的資源。這些資源通過HTTP被操作(GET, POST, PUT, DELETE)。比 如:在本系統中,資源歸類為試題、用戶、課程等資源。各種操作歸類為GET, DELETE, ADD,MODIFY等操作。舉例:http://localhost:8001/ course/GetAllSt, http://localhost:8001/course/ DeleteStByNo/st001。
(2)前臺使用HTML+CSS+JQuery+Smarty3。HTML+CSS+JQuery+Smarty3是當前主流的Web應用程序前端開發套裝。HTML+CSS是網頁最基本的組成。jQuery是一個快速、簡潔的JavaScript框架,使用它可以加速開發進程。Smarty3是一個PHP模板引擎技術,它分離了邏輯代碼和外在的內容,提供了一種易于管理和使用的方法,用來將原本與HTML代碼混雜在一起PHP代碼邏輯分離,使用它,可以讓代碼更加簡潔,層次分明。
(3)后臺使用基于HUSH FrameWork的PHP框架。當前Web應用程序后端開發有很多流行的框架,而本人選取的是HUSH FrameWork[2],它是一個基于ZendFramework[3]和Smarty的強大的面向企業應用的PHP框架,是一個簡化版的ZendFramework,正好適用于中小型的Web應用程序。
(4)HTTP服務器使用XAMPP的Apache。XAMPP是一個基于Windows操作系統的后臺軟件工具集。其中的apache是用于網站發布的一個Web服務器軟件。
(5)數據庫服務器使用XAMPP的Mysql。本系統使用的后臺數據庫管理系統是mysql。
所謂三層軟件體系架構,就是在客戶端瀏覽器與服務器的數據庫之間加入了一個“中間層”,也叫組件層。這里所說的三層結構,不是指物理上機器上的三層,不是簡單地放置三臺計算機就是三層軟件體系架構,也不僅僅有瀏覽器才是三層軟件體系架構,三層是指邏輯的三層,即使這三層都放置到一臺機器上。
本系統的表現層主要由后臺管理和前臺管理兩部分網頁組成。其中,后臺表示層主要由六大菜單項組成:系統概況、試題管理、組卷管理、用戶管理、成績管理、智能閱卷。
主要是處理業務方面的邏輯,如判斷用戶輸入的內容是否符合要求,負責把用戶輸入的數據傳輸給數據訪問層,并把來自數據訪問層的數據返回給用戶。其中:
(1)系統概況:由系統模塊SystemService.php提供本系統的各項基本參數的設定。
(2)試題管理:由系統模塊ShitiService.pph提供對本系統中試題的增刪改查功能的設定。
(3)組卷管理:由試題模塊StService.php提供本系統試題導入,組卷方式的設置、組卷、導出為word文檔等功能。
(4)用戶管理:由系統模塊UserService.pph提供對本系統中各種角色用戶的增刪改查的操作以及權限的設定。
(5)成績管理:由系統模塊ScoreService.pph提供對本系統中用戶成績的操作。
(6)智能閱卷:由系統模塊StaticService.pph提供對本系統中考生成績的統計與分析操作。
主要是對原始數據的操作層,只有它能夠直接訪問數據庫,對數據庫進行增、刪、改、查的操作,上面的兩個層(表現 層和邏輯層)都不能直接訪問數據庫。數據訪問層主要使用的是HUSH FrameWork中的數據庫操作類庫和XAMPP中的mysql數據庫。
4.1.1 試題統計
主要是將本系統中各種類型、各種難度、各種模塊的試題進行統計。
具體實現步驟如下:
(1)數據訪問層:試題本身存在類型、難度、模塊的區別,在數據庫中相應地創建對應的數據表,而在試題表中,每道試題都有對應的外鍵進行管理。
(2)邏輯層:在stService.php中創建getStNu mberB ByType(),getStNumberBydifficult(),getStN umberByModule()方法相應地統計類型,難度和 模塊的試題數量。
(3)表現層:創建sysinfo.html頁面,在這個頁面里,使用圖表的方式顯示數據,這樣更加直觀。
4.2.1 用戶注冊
新增用戶的功能,具體實現步驟如下:
(1)在本系統的數據訪問層中,也就是數據庫EXAM中,創建用戶表user。
(2)在本系統的邏輯層,新建針對用戶表user的操作類userService.php。并在其中創建AddNewUser Action(),實現新增用戶的功能,要求用戶輸入2次密碼,并保持一致,而且要MD5加密后保存在數據表中。
(3)在本系統的表現層,新建registry.html,提供面向用戶的圖形界面接口,用于注冊新用戶。
4.2.2 用戶登錄
實現用戶登錄系統的功能。具體實現步驟如下:
(1)在本系統的數據訪問層中,已經創建了用戶表user,要求其中有示例數據。
(2)在本系統的邏輯層,在userService.php中創建LoginAction(),將用戶輸入的用戶名和密碼與數據表中的用戶逐個對比,如果有相同的,則正常登錄系統;如果沒有相同的,則提示用戶名或者密碼有誤。
(3)在本系統的表現層,新建login.html,提供面向用戶的圖形界面接口,用于實現用戶登錄。
4.2.3 用戶查詢
實現根據用戶名查詢用戶的功能。
具體實現步驟如下:
(1)在本系統的數據訪問層中,已經創建了用戶表user,要求其中有示例數據。
(2)在本系統的邏輯層中,在userService.php中創建SearchUserByNameAction(),將用戶輸入的用戶名和數據表中的用戶逐個對比,如果有相同的,則將該用戶信息顯示到網頁中;如果沒有相同的,則提示無此用戶。
(3)在本系統的表現層,新建searchUserBy Name.html,提供面向用戶的圖形界面接口,用于實現用戶查找。
4.2.4 用戶刪除
實現根據用戶名刪除用戶的功能。
具體實現步驟如下:
(1)在本系統的數據訪問層中,已經創建了用戶表user,要求其中有示例數據。
(2)在本系統的邏輯層,在userService.php 中創建DeleteUserByNameAction(),將用戶輸入的用戶名和數據表中的用戶逐個對比,如果有相同的,則將該用戶從數據表中刪除,并將刪除成功的提示信息顯示到網頁中;如果沒有相同的,則提示無此用戶。
(3)在本系統的表現層,新建deleteUserBy Name.html,提供面向用戶的圖形界面接口,用于實現用戶刪除。
4.3.1 試題導入
主要是將用戶提供的Excel模板的題庫導入到本系統的mysql數據庫中。
具體實現步驟如下:
(1)在本系統的mysql數據庫中創建數據庫EXAM,創建試題表st、課程表course、系統信息表sysinfo、試卷表exampaper。
(2)在本系統的邏輯層,新建針對試題庫的數據庫操作類stService.php。并在其中使用PHPExcel 類庫,創建導入試題的方法importStFromExcel()。
(3)在表現層,創建inport_excel_exam.html 文件,讓用戶瀏覽資源管理器,找到excel格式的試題庫,實現導入。
4.3.2 組卷設置
主要是將用戶提供的組卷方式提供可視化的網頁操作界面,方便用戶設置。
具體操作步驟如下:
在表現層新建網頁exam_setting.html,創建設置所需的控件。
在邏輯層的stService.php中增加組卷設置方法exampaperAction.php。
在表現層創建exam.html,設置組卷規則,讓用戶根據需求選擇。
4.3.3 生成和導出試卷
主要是根據組卷方式生成統一格式的Word試卷,方便用戶打印。
具體操作步驟如下:
(1)在網站相應的文件夾內,設計一個統一格式的Word試卷模板,在相應試卷的試題位置設置 PHP替換變量。
(2)在邏輯層的stService.php中增加試卷生成方法outputWord.php,實現試題獲取,組卷,導入模板,生成試卷的功能。
(3)在表現層,創建output_word_exam.html 文件,實現導出功能,直接將Word格式的試卷,從服務器端下載到瀏覽器設定的目錄位置。
4.4.1 在線考試
主要是根據用戶的在線考試需求,生成相應的在線考試試卷,并允許考生考試。
具體實現步驟如下:
(1)在本系統的數據訪問層中,已經創建了試卷表exampater,其中存放用戶生成的在線考試試卷。
(2)在本系統的邏輯層,新建針對試卷表的數據庫操作類examonlineService.php。該類的主要功能根據用戶在表現層的需求,隨機抽取試題,并生成在線試卷。
(3)在表現層,創建exam_online.html文件,根據用戶輸入的考試名稱,考試時間及試題,生成頁面,并要求考生逐題回答。
4.4.2 成績統計
主要是根據用戶的在線考試情況,統計成績。
具體實現步驟如下:
(1)在本系統的數據訪問層中,創建試卷成績表score,用于存放考生的試卷成績。
(2)在本系統的邏輯層,新建針對成績表的數據庫操作類scoreService.php。該類的主要功能根據用戶在線考試情況,計算成績。
(3)在表現層,創建score.html文件,輸出用戶的成績。
在線題庫組卷系統的設計流程和實現方法及框架還有幾點需要改進。
(1)智能閱卷功能仍然不夠強大,對試題的分析仍然僅限于簡單的計數。下一步,需要增加圖形化的統計與分析功能。
(2)試卷的出題策略,還有待于進一步完善。