摘要:隨著在線教育與編程教學的快速發展,自動化測評系統成為提升教學效率的重要工具。當前,Python編程作業批改主要依賴人工,存在效率低、主觀性強、反饋不足等問題,難以滿足大規模在線教學的需求。為此,文章設計并實現了一種基于Django與Vue.js的Python編程題在線測評系統。該系統采用動態測評技術,從可運行性、輸出匹配、函數調用及邏輯覆蓋四個維度對學生作業代碼進行自動化評估。這一方法支持教師高效批改作業,顯著提升了評分效率與準確性,降低了人工批改負擔。同時,系統為編程教學提供了可擴展的技術解決方案。
關鍵詞:Python;在線測評系統;Django;Vue
中圖分類號:TP311
文獻標識碼:A
文章編號:1009-3044(2025)14-0054-03
0引言
隨著互聯網和在線教育的快速普及,編程教育在計算機科學教學中的地位日益提升。Python語言憑借其簡潔性、易讀性以及豐富的生態系統,已成為高校教學和職業培訓中的主流編程語言。然而,當前Python編程作業的批改仍主要依賴人工審核,這與編程教育的快速發展不相適應。教師需要逐行檢查代碼邏輯、驗證測試用例并統計通過率,存在效率低下、反饋周期長等問題。針對上述挑戰,本文提出了一種基于Django框架和Vue.js前端技術的在線測評系統,通過動態測評技術實現對學生代碼的多維度自動化評估,顯著提升了評分的準確性和效率。
1架構設計
系統采用前后端分離的B/S[1]架構,后端基于Django[2]框架,前端基于Vue.js[3]框架,充分發揮各自的技術優勢,提高了開發效率和系統的可維護性。系統包含題目管理、用戶管理、提交管理和班級管理等模塊。用戶管理模塊負責管理用戶信息及權限配置,支持教師創建班級并添加學生。題目管理模塊允許教師創建編程題目并配置測試用例。提交管理模塊記錄學生的代碼提交記錄,支持多次提交和成績查詢。各模塊之間的關系如圖1所示,展示了系統的整體架構和數據流向。
2數據庫設計
數據庫設計是系統設計過程中不可或缺的關鍵環節[4],一個功能完善且結構合理的數據庫能夠幫助系統更高效、便捷地管理各項數據。在數據庫設計中,ER模型(實體關系模型)作為一種重要的建模工具,能夠有效改善開發人員與用戶之間的溝通,準確描述數據的特性及其相互之間的約束關系,是一種典型的概念性設計方法。通過ORM[5]技術實現Model層與數據庫的映射,生成數據表。此外,EER[6]模型(增強實體關系模型)在ER模型的基礎上進行了進一步細化,將其轉換為關系模型,并與具體的數據庫管理系統相關聯。系統的EER模型如圖2所示。
2.1用戶表
用戶表主要用于存儲用戶的相關信息,包括賬號、密碼、郵箱、用戶昵稱、手機號及權限配置等,其詳細字段如表1所示。
2.2編程題目表
該表用于管理編程題目,主要存儲由任課教師創建的編程題目及其對應的測試用例,包括題目名稱、題目描述、難度等級(簡單、中等、困難)、創建者信息以及測試用例的輸入和輸出字段。其詳細字段如表2所示。
2.3代碼提交表
該表用于管理用戶的代碼提交信息,主要存儲用戶提交的相關數據,包括代碼內容、提交時間、提交人、得分、總分、通過的測試用例數量、總測試用例數量以及測試結果等。其詳細字段如表3所示。
3關鍵技術
該系統關鍵技術主要是為學生作業代碼進行測評,其中測評技術是本系統實現自動化代碼評估的核心模塊,通過可運行性、輸出匹配、函數調用和邏輯覆蓋等四種多維度測評方法對用戶提交的Python作業代碼進行綜合評測。針對使用simpleguitk庫進行游戲開發的Python課程特點,本系統設計了4種測評方法:可運行性測評、輸出匹配測評、函數調用測評和邏輯覆蓋測評。
3.1可運行性
可運行性是代碼評測的基礎環節,主要用于驗證學生提交的代碼是否具備正確的語法結構,以及能否在標準運行環境中正常啟動與執行。通過在沙盒環境中運行代碼,檢測其是否能夠正常運行。如果代碼運行報錯,則直接評估為0分。由于程序中使用了simpleguitk庫,直接運行程序時會彈出GUI界面,進程阻塞且無法退出,從而影響后續評估。針對這一問題,本測評方法采用替換代碼的方式,將彈出GUI界面的代碼部分替換為pass,以確保程序能夠順利運行。
3.2輸出匹配
對于部分要求在終端輸出特定結果的編程作業,輸出匹配測試至關重要。系統模擬用戶的真實運行環境,捕獲代碼的輸出內容,并將其與預設的標準輸出進行嚴格比對。輸出比對不僅包括內容的完整性,還會檢查輸出的格式與順序是否完全一致,以確保學生作業符合題目得分要求。具體的測評如表5所示。
3.3函數調用
函數是Python編程中的重要組成部分,函數調用測試用于檢查學生代碼中函數的正確性。系統會自動分析代碼結構,尋找關鍵的函數定義,并通過模擬不同的輸入參數調用這些函數,驗證其返回的結果是否符合預期。系統預設了多組測試用例,涵蓋各種邊界條件、異常情況以及常見輸入場景,通過對比函數的實際返回值與預設的標準值,來判定函數的邏輯是否正確,是否存在潛在的邏輯錯誤。具體的測評如表6所示。
3.4邏輯覆蓋
在編程作業中,部分學生可能會采取投機取巧的方式,編寫僅能滿足正常運行功能的代碼,而缺乏作業實際要求的實現。例如,作業要求實現3個按鈕和1個輸入框的界面代碼,針對GUI代碼測評設計了邏輯覆蓋測評方法。通過對代碼結構的深入分析,系統會精確統計代碼中各類語句的數量,確保代碼符合作業要求。具體的邏輯覆蓋測評如表7所示。
4系統實現
4.1題庫配置界面
教師創建題目時,需要填寫題目的基礎代碼、配置測試用例、設定題目名稱、選擇難度等級以及編寫題目描述。圖3展示了題庫配置界面,教師可以在此創建和編輯題目。
4.2答題界面
系統提供在線代碼編輯器,答題界面如圖4所示。該部分采用分屏式布局設計,劃分為三個獨立交互區域:左側為全幅題目描述區;右側采用垂直分割設計,上層配置代碼編輯區,下層整合控制臺輸出區。支持用戶通過拖拽操作進行橫向/縱向尺寸調整,并可通過區域最大化功能實現焦點內容的沉浸式展示。
4.3成績管理界面
教師在查看學生成績時,主要可查看的信息包括所獲得的分數、通過的測試用例數量、總測試用例數量以及提交時間。成績管理界面的設計如圖5所示。
5結論
本文系統通過動態測評技術解決了傳統編程作業批改效率低的問題,其創新性體現在對simpleguitk庫的特殊處理和多維度評估方法的綜合應用。研究表明,系統顯著提升了教學效率,并為學生提供了精準反饋。未來工作將擴展對多語言的支持,并探索智能評估算法的集成。參考文獻:
[1]孫鋒志.基于B/S的程序編程競賽自動測評系統設計[J].電子技術,2021,50(10):94-95.
[2]牛寧.基于Django的智慧園區平臺系統設計與實現[D].成都:電子科技大學,2019.
[3]李曉薇.vue.js前端應用技術分析[J].網絡安全技術與應用,2022(4):44-45.
[4]迪力夏提·多力昆,張太紅,馮向萍.LabelMe標注核對系統的設計與實現[J].計算機技術與發展,2022,32(3):214-220.
[5]李婷婷,張金玉,馬鳳乾.基于ORM的數據管理序列化實現方法[C]//天津市電子工業協會.天津市電子工業協會2024年年會論文集.天津七一二通信廣播股份有限公司,2024:5.DOI:10.26914/c.cnkihy.2024.009945.
[6]CHIANGR,BARRONT,STOREYV.Reverseengineeringofre?lationaldatabases:extractionofanEERmodelfromarelationaldatabase[J].Dataamp;KnowledgeEngineering,1994,12(2):107-142.
【通聯編輯:謝媛媛】