李淑玲 朱彤
(1.西安歐亞學院 陜西 西安 710065; 2.西安中興新軟件有限責任公司陜西 西安 710000)
隨著我國教育體系的不斷完善,各個高校的教學形式也變得多種多樣并劃分成了多個環(huán)節(jié),如理論教學、實踐教學、教學評測、教學答疑等。其中,教學評測是衡量學生每個階段對知識的掌握程度、教師教學質(zhì)量的重要手段[1]。該系統(tǒng)能實現(xiàn)教師與教師之間題庫共享,改善教學評測的質(zhì)量,具有試題、試卷管理能力,試卷能夠得到有效的保存與反復利用。該系統(tǒng)具有自動判分和人工判分兩個功能,自動判分下,教師能夠第一時間得到考試反饋,并利用該系統(tǒng)的成績分析功能對此次考試結果進行分析,保證考試的公平、公正的同時提高了工作效率。
系統(tǒng)的功能要求在RESTful 架構的基礎上采用前后端分離的方式開發(fā)在線測試系統(tǒng)[2],系統(tǒng)界面美觀、便于用戶操作。運用Node.js 和MongoDB 技術應對可能遇到的高并發(fā)情況[3-4]。具體功能需求分析如下。
1.1.1 學生端
學生可以通過前臺注冊賬號,并在登錄后對個人信息進行修改、上傳頭像等。在考試規(guī)定時間段內(nèi)參加自己分院、專業(yè)、班級的在線考試,亦可參加在線練習。答題后可以在公布成績時間之后查看到該場考試自己的得分。超過考試時間或者已經(jīng)參加過某場考試,將不能再次參加此場考試。
1.1.2 教師端
教師可以通過后臺登錄系統(tǒng),對個人信息進行修改,通過后臺對題庫、題目、試卷、考試進行增刪改查。系統(tǒng)實現(xiàn)選擇題自動判分,教師可以通過后臺對學生試卷選擇題部分進行復查,對學生試卷簡答題部分可以進行人工評閱。對于每一場在線考試或者在線練習,后臺都可以進行成績統(tǒng)計分析,將統(tǒng)計后的柱狀圖和餅狀圖呈現(xiàn)在教師的面前。超級管理員可以增加教師的數(shù)量并分配教師管理權限,教師賬號僅由超級管理員分配,不支持自行注冊。
該系統(tǒng)是在RESTful 架構的基礎上采用前后端分離的方式進行開發(fā)。前端負責頁面數(shù)據(jù)展示,請求后端數(shù)據(jù)[4]。后端負責接收前端請求,處理業(yè)務邏輯。該系統(tǒng)模式為B/S 模式,只需要一個瀏覽器就可以完成一系列操作,很大程度上節(jié)省了使用成本。
在線考試系統(tǒng)角色、權限需求具體如表1所示。
該系統(tǒng)采用RESTful 架構,Server 統(tǒng)一提供一套RESTful API、web+ios+android 作為公共調(diào)用的API,各個客戶端都采用自己比較成熟的前端框架來幫開發(fā)者事半功倍[5-6]。
Server 提供的RESTful API 中,URL 中只使用名詞來指定資源,原則上不使用動詞?!百Y源”是REST架構或者說整個網(wǎng)絡處理的核心。本系統(tǒng)的API定義如表2所示。
表2 API表
表3 考試表
用HTTP協(xié)議里的動詞來實現(xiàn)資源的添加、修改、刪除等操作。即通過HTTP 動詞來實現(xiàn)資源的狀態(tài)扭轉(zhuǎn):GET用來獲取資源;POST用來新建資源(也可以用于更新資源);PUT用來更新資源;Delete用來刪除資源。
在線測試系統(tǒng)需學生端和教師端兩個模塊共同實現(xiàn)。
學生端實現(xiàn)注冊、登錄、修改個人信息、參加在線練習、參加在線考試和查看考試成績等功能。
教師端實現(xiàn)對題庫、題目、試卷、考試的管理,包括基本的增刪改的操作。不同的教師之間可以查看彼此創(chuàng)建的題庫和題目,但是只能對自己創(chuàng)建的題庫和題目進行增刪改操作。教師端可用功能詳見圖1。
圖1 教師端功能圖
本系統(tǒng)采用的是MongoDB 數(shù)據(jù)庫,是面向文檔的數(shù)據(jù)庫。相對于關系型數(shù)據(jù)庫,其有豐富的數(shù)據(jù)模型、容易擴展、能夠存儲Json格式數(shù)據(jù)等諸多優(yōu)勢。
該在線答題系統(tǒng)需要建立8 張表,分別是用戶表(user)、題庫表(Question Bank)、選擇題表(Select Question)、簡答題表(Short Answer Question)、試卷表(Exam Paper)、考試表(Exam)、成績表(Exam Score)、學生答案表(Student Exam Answer)。由于MongoDB是非關系型數(shù)據(jù)庫,所以向數(shù)據(jù)庫存儲數(shù)據(jù)無須提前建表,數(shù)據(jù)對象都以json的形式存儲,以考試表為例進行說明表的結構。
由于該系統(tǒng)采用的RESTful 架構,因此所有的客戶端請求都屬于對資源的操作。
當用戶填寫完賬號、密碼點擊登錄后,相當于客戶端對Server 中用戶session 資源的請求,當Server 返回201 狀態(tài)碼時代表登錄成功,400 或401 狀態(tài)碼則代表請求資源失敗,即登錄失敗。
3.1.1 首頁頁面
該頁面由頂部導航欄、首頁模塊、底部版權信息組成。頂部導航欄由首頁、試題練習、在線考試和個人中心4個導航項組成。點擊不同的導航項系統(tǒng)將跳轉(zhuǎn)到相對應的頁面。用戶登錄成功后導航欄右側會顯示登錄用戶的姓名和退出按鈕。
3.1.2 在線測試頁面
該頁面由考試列表組成,列表只會顯示與登錄用戶所在分院、專業(yè)和班級相同的考試,由考試名稱、開始時間、結束時間和操作組成。如果當前時間超過考試結束時間,該場考試的操作欄將顯示已過期的圖標,用戶不能參加這場考試。
點擊參加考試按鈕,如果當前系統(tǒng)時間不在考試時間段內(nèi),系統(tǒng)將彈出提示信息:“不在考試時間段內(nèi),不能參加考試。”如果考試次數(shù)超過考試規(guī)定參加次數(shù),系統(tǒng)將彈出提示。例如:教師設置某場考試只能參加一次,當用戶參加過這場考試后再次點擊參加考試,系統(tǒng)將彈出提示:“您已經(jīng)參加過1 次該考試,這場考試只允許參加一次?!?/p>
教師登錄界面與學生端登錄界面風格基本一致,登錄成功后進入教師首頁,首頁由左側菜單欄和右側主頁面組成。右側會展示登錄教師的姓名和頭像,首頁默認為試題管理頁面,主頁面顯示的是題庫列表。
3.2.1 試題管理頁面
試題管理頁面可以修改該題庫的名稱,可以新增選擇題和簡答題。教師只對自己添加的題庫和題目有修改和刪除權限,其他教師添加的題庫和題目只有只讀權限。
點擊新增選擇題按鈕,系統(tǒng)跳轉(zhuǎn)到選擇題添加頁面。點擊查看按鈕,系統(tǒng)顯示題目詳細信息。
試卷管理頁面只會顯示自己創(chuàng)建的試卷,對試卷可以進行查看、新增和刪除操作。點擊新增,系統(tǒng)進入到新增頁面,可以點擊預覽題庫,從而新增選擇題和填空題。點擊查看,系統(tǒng)進入試卷詳情頁,可以對試卷基本信息進行修改操作。點擊“預覽題庫”,系統(tǒng)將彈出題庫列表。
3.2.2 考試管理頁面
在此頁面可以看到包含所有教師創(chuàng)建的考試列表,但只有對于自己創(chuàng)建的考試才有修改和刪除權限。列表呈現(xiàn)考試名稱、考試類型、狀態(tài)、發(fā)布時間、所屬分院、專業(yè)、班級和操作信息。
成績分析頁面首先會展示一個考試列表,供教師選擇要分析的考試,點擊分析按鈕,系統(tǒng)將自動統(tǒng)計每個分數(shù)段成績的人數(shù),并以柱狀圖和餅狀圖的形式展示出來。
為了提前預防系統(tǒng)bug 的出現(xiàn)與及時修復,系統(tǒng)測試是一個重要的環(huán)節(jié)。通過系統(tǒng)測試可以及時發(fā)現(xiàn)軟件在使用過程中會出現(xiàn)的問題,便于及時修復和完善,對軟件質(zhì)量起著至關重要的作用。
以注冊為例,編寫后臺API單元測試代碼,命令行運行jasmine。
如果測試通過時,命令行將顯示一個綠點,并提示通過測試的數(shù)量:“1 spec”表示通過的測試數(shù)量,“1 failure”表示未通過的測試數(shù)量。未通過時,命令行將顯示一個紅色“F”,以及錯誤信息。
針對在線答題系統(tǒng)中的各功能模塊進行單元測試,對比測試結果是否達到預期的結果,如果出現(xiàn)bug應及時修復和完善。每個功能模塊采用功能測試用例進行測試,以考試評閱功能測試用例進行說明,如表4、表5所示。
表4 考試評閱功能測試用例
表5 考試評閱功能測試結果
本系統(tǒng)遵循RESTful API的設計,后端提供數(shù)據(jù)接口,前端采用異步的形式請求后端資源,采用 Node.js和MongoDB 技術配合React 前端框架進行開發(fā)。學生端完成了登錄、注冊、修改個人信息、參加考試和查看成績的功能,教師端完成了對題庫、題目、試卷、考試的管理,并且可以選擇系統(tǒng)自動閱卷或者人工閱卷,系統(tǒng)將對每場考試學生的成績進行統(tǒng)計,統(tǒng)計結果將以柱狀圖和餅狀圖的形式呈現(xiàn)。經(jīng)過一段時間運行,系統(tǒng)功能基本達到了設計目的,運行穩(wěn)定,能夠滿足學生與教師的考試需求。當然,系統(tǒng)還有很多地方需要進一步完善,如可以嘗試React與Redux配合、Redux負責管理邏輯狀態(tài)、React負責頁面渲染等。