高中 ✦ 程式教學平台

Coding Tutor

一站式程式語言學習管理系統,整合課程管理、互動測驗、線上程式評測與師生進度追蹤, 讓教學與學習都更有效率。

三種角色 階層式課程結構 Python / PHP / C / C++ / Java 即時進度追蹤 Google 帳號登入 課程打包與匯入 轉移授課教師
系統架構

整體運作方式

學生
瀏覽課程 · 作答 · 繳交程式碼
教師
管理課程 · 出題 · 查看成績
管理員
管理帳號 · 系統統計
SESSION 驗證
角色路由
PDO 資料庫
Judge 評測
MySQL · coding_tutor
users
courses
chapters
question_bank
coding_challenges
challenge_testcases
challenge_submissions
quizzes
quiz_questions
quiz_results
技術選型
  • PHP 7+ (無框架)
    每個 .php 同時處理路由、商業邏輯與 HTML 輸出
  • Bootstrap 5.3
    CDN 載入,搭配自訂 style.css(主色 #04AA6D)
  • MySQL / MariaDB
    PDO 連線,全程使用 Prepared Statement
  • Ace Editor + TinyMCE
    程式碼高亮輸入 + 富文字課程內容編輯
學生角色

學習功能

課程目錄

首頁列出所有課程,依開放模式顯示狀態。

  • 公開無須登入即可瀏覽
  • 自由選修登入後一鍵加選
  • 手動加選等待教師指定加入
階層章節導覽

課程分為「章」與「節」兩層,側邊欄手風琴展開,可自由跳轉。

📁 第一章:基礎語法
📄 1-1 變數與型別
📄 1-2 運算子
📁 第二章:流程控制
📄 2-1 條件判斷
互動測驗

章節末附測驗,AJAX 即時回饋,可重複作答。

填充題 輸入文字,字串比對
單選題 單選 radio button
多選題 多個 checkbox
線上程式挑戰

使用 Ace Editor 撰寫 Python / PHP / C / C++ / Java 程式碼,提交後系統自動評測。

✓ Accepted ✗ Wrong Answer ⚠ Runtime Error
支援多筆公開 / 隱藏測資,可反覆提交直到全通過。
提交前工具: 語法檢查不執行、不計次數  |  測試執行自訂 stdin 試跑、不計次數
Runtime Error 時自動顯示中文錯誤說明區塊(💡)
左下角浮動 ? 按鈕可隨時查看功能說明
個人進度

課程頁顯示挑戰通過率進度條,點開可查看各挑戰詳情與嘗試次數。

3 / 5 個挑戰已通過(60%)
正式線上測驗

獨立於章節之外的正式評量,支援嚴格的安全控測。

  • 設定起訖時間與作答時限
  • 測驗期間自動隱藏章節內容(防止作弊)
  • 支援從題庫中選取填充、單複選與挑戰題
  • 自動計算總分,教師即時查看作答分析
章節附件與資源

教師可在章節附上教材,學生直接在課程頁下載。

支援格式:doc / docx / xls / xlsx / ppt / pptx / pdf, 每章最多 3 個附件,單檔上限 10 MB。
相容性更新:
所有附件與圖片路徑均已實現「課程 ID 隔離」,課程複製時會同步遷移實體檔案,確保連結永不失效。
學生典型學習流程
1
登入 / 自動加選課程
支援帳號密碼或 Google 帳號(限學校 Email 網域)一鍵登入,自由選修課程一鍵加入
2
瀏覽課程 → 選取章節
側邊欄展開章節目錄,點擊進入閱讀內容
3
完成章節測驗
填充 / 單選 / 多選,即時獲得對錯回饋
4
進入程式挑戰
閱讀題目、瀏覽公開測資,在編輯器撰寫程式
5
提交前確認(語法檢查 / 測試執行)
語法檢查確認無拼寫錯誤;測試執行自訂 stdin 試跑。兩者均不計入提交次數
6
正式提交批改
Judge 跑所有測資(含隱藏),結果記錄並通知教師
7
查看評測結果與錯誤說明
Runtime Error 自動附加中文說明(💡);可反覆修正重試直到全通過
教師角色

教學管理功能

課程 & 章節管理
  • 建立課程,設定開放模式與起訖日期
  • 新增「章」與「節」(兩層結構),可拖曳排序(Sortable.js)
  • TinyMCE 富文字編輯器撰寫章節內容(含圖片嵌入)
  • 一鍵複製課程:包含章節、物理檔案、題目與測驗關聯
  • 每章節上傳最多 3 個教材附件(PDF / Office)
  • 隨時調整課程設定(開放模式 / 日期 / 隱藏狀態)
測驗題庫
  • 建立分類管理(可新增 / 重命名 / 刪除分類)
  • 四種題型:填充、單選、多選、牛刀小試(程式執行)
  • 測驗排程管理:設定起訖時間、時限與各種內容鎖定規則
  • 自動計分與詳細作答分析表格
  • 在章節編輯頁直接將題目「掛入」指定章節
程式挑戰庫
  • 建立程式挑戰(Python / PHP / C / C++),設定題目說明與初始程式碼範本
  • 每題設定多筆測資(Input / Expected Output)
  • 測資可設為「公開」(學生作答前可見)或「隱藏」(私有考驗)
  • 挑戰庫跨課程共用,在章節中選入指定挑戰
  • 事後可繼續在編輯頁追加 / 刪除測資
選課名單管理
  • 依班級篩選 / 關鍵字搜尋學生
  • 勾選多名學生批次加入課程
  • 建課時可指定班級自動批次加選
  • 檢視目前正式名單(含班級、座號、學號)
  • 隨時單筆移除學生
全班進度矩陣

在課程管理頁開啟「全班進度」,以表格呈現所有學生(列)× 所有挑戰(欄), 色塊直觀顯示每位學生的通過 / 嘗試 / 未作答狀態。

Accepted Wrong 未嘗試
點擊儲格 → 彈出視窗查看學生程式碼與評測詳情
即時教學實驗室 Live Lab

教師專屬的即時程式碼執行環境,可在課堂當場示範演算法,不需離開平台。

  • Ace Editor 程式碼編輯器(語法高亮)
  • 支援 Python / PHP / C / C++ / Java 語言執行與預覽
  • Stdin 輸入模擬:可隨時輸入測試資料以測試互動式程式
  • 點擊「執行」後 stdout 即時顯示於右側終端機
管理員角色

系統管理功能

系統儀表板

即時顯示系統總覽數字:

👥
總使用者數
📚
總課程數
💡
教師人數
📝
提交總次數
使用者管理
  • 新增 / 編輯 / 刪除所有角色帳號
  • 搜尋姓名、帳號、學號
  • 學生專屬欄位:班級 / 座號 / 學號
  • 編輯時密碼選填(留空則不更改)
  • 無法刪除自己(防止誤操作)
進階課程控制 NEW

支援跨系統的課程打包與轉移機制。

  • 課程打包 (Export):一鍵生成 ZIP 檔,含題目與實體檔案
  • 課程匯入 (Import):自動重建關聯並修正內文路徑
  • 教師轉移:隨時將課程擁有權指派給其他教師
CSV 批次匯入 批量

一次匯入整班學生帳號,大幅節省建帳時間。

username,password,full_name,class,seat,student_no
s001,1234,王小明,301,1,1110301001
自動處理 UTF-8 BOM,帳號已存在者跳過不覆蓋。
核心模組

Online Judge 評測引擎

安全沙箱執行學生程式碼,自動比對測資輸出

評測流程
1
接收程式碼
學生提交的 Python / PHP / C / C++ / Java 程式碼
2
寫入暫存檔
/tmp 建立隨機命名暫存檔案
3
沙箱執行
時間 5s 上限 · 記憶體限制 · 停用危險函式
4
逐筆比對測資
stdin 餵入 Input,stdout 與 Expected Output 比對
5
回傳結果
記錄通過筆數、狀態,寫入 challenge_submissions
中文錯誤說明系統(error-hints.js
Runtime Error 發生時,終端機自動顯示藍色「💡 錯誤說明」區塊,以中文說明原因與修正建議。 涵蓋 Python / C / C++ / Java / PHP 數十種常見例外(NameError、Segmentation Fault、NullPointerException…)。 Python 3.10+ 另支援「Did you mean: 'xxx'?」拼字建議,以綠色高亮顯示。 適用於「提交批改」、「語法檢查」、「測試執行」與章節頁「牛刀小試」。
安全限制
時間限制:5 秒 / 8 秒超時
PHP 記憶體:256 MB
Python 記憶體:128 MB
最大輸出:1 MB
PHP 停用函式:exec, shell_exec, system, passthru, popen, file_get_contents, fopen…
Python:使用 python3 -I 隔離模式
Accepted
全部測資通過
Wrong Answer
輸出與預期不符
Runtime Error
程式執行時發生錯誤
Security Violation
使用被禁止的函式
快速啟動

開始使用

1. 啟動伺服器
php -S localhost:8000
2. 初始化資料庫
php init.php
建立資料表與預設帳號
3. 登入測試
Adminadmin /
教師teacher1 /
學生student1 /
字體 100%