Giới thiệu dự án
Trong bối cảnh chuyển đổi số giáo dục đại học diễn ra mạnh mẽ, việc ứng dụng công nghệ thông tin vào công tác khảo thí và kiểm tra đánh giá đã trở thành tiêu chuẩn bắt buộc nhằm nâng cao chất lượng đào tạo. Theo các khảo sát giáo dục hiện đại, các tổ chức khảo thí quốc tế hàng đầu như Educational Testing Service (ETS) hay Microsoft đã áp dụng 100% hình thức thi trắc nghiệm khách quan trên máy tính nhờ tính chuẩn hóa, độ tin cậy và khả năng loại bỏ yếu tố chủ quan của người chấm. Tại Việt Nam, các trường đại học quy mô lớn với hàng chục nghìn sinh viên đang đối mặt với bài toán tối ưu hóa nguồn lực tổ chức thi định kỳ.
Đồ án tốt nghiệp "Xây dựng website hệ thống thi trắc nghiệm trực tuyến cho Học viện Nông nghiệp Việt Nam" do sinh viên Nguyễn Thành Long (Ngành Hệ thống thông tin, Lớp 61HT, Khoa Công nghệ thông tin – Trường Đại học Thủy Lợi) thực hiện dưới sự hướng dẫn của TS. Nguyễn Thọ Thông, tập trung giải quyết triệt để bài toán số hóa toàn diện quy trình khảo thí cho Học viện Nông nghiệp Việt Nam (VNUA).
+-------------------------------------------------------------------------------+
| BÀI TOÁN KHẢO THÍ TẠI ĐẠI HỌC |
+------------------------------------+------------------------------------------+
| Phương pháp thi giấy truyền thống | Hệ thống thi trắc nghiệm trực tuyến |
+------------------------------------+------------------------------------------+
| - Tốn kém in ấn đề và phiếu trả lời| - Tiết kiệm 95% chi phí văn phòng phẩm |
| - Rủi ro lộ lọt đề thi cục bộ | - Mã hóa đề thi, mật khẩu ca thi động |
| - Chấm thủ công tốn 5 - 7 ngày | - Chấm điểm tự động và công bố tức thì |
| - Khó kiểm soát ngân hàng câu hỏi | - Ngân hàng câu hỏi phân quyền theo Khoa|
+------------------------------------+------------------------------------------+
Problem Statement và Pain Points
Phương thức tổ chức thi trắc nghiệm trên giấy truyền thống tại các cơ sở giáo dục đại học bộc lộ nhiều điểm nghẽn nghiêm trọng:
- Lãng phí tài nguyên và chi phí vận hành: Chi phí in ấn hàng vạn đề thi và phiếu trả lời trắc nghiệm mỗi kỳ thi tiêu tốn ngân sách lớn, đồng thời đòi hỏi diện tích lưu trữ hồ sơ giấy tờ phức tạp.
- Thời gian xử lý kéo dài: Công tác chấm thi thủ công hoặc quét máy quang học (OMR) tiêu tốn từ 5 đến 10 ngày làm việc để hoàn thành việc vào điểm và công bố kết quả cho sinh viên.
- Rủi ro sai sót và bảo mật đề thi: Nguy cơ rò rỉ đề thi trong quá trình sao in, thất lạc bài thi, sai lệch trong khâu khớp mã đề và chấm điểm thủ công.
- Thiếu sự liên thông ngân hàng câu hỏi: Giảng viên giữa các bộ môn trong cùng một Khoa gặp khó khăn trong việc chia sẻ, chuẩn hóa và tái sử dụng nguồn câu hỏi kiểm tra chất lượng cao.
Mục tiêu dự án cụ thể
- Mục tiêu 1: Xây dựng nền tảng web application chuyên biệt phục vụ khảo thí trắc nghiệm theo mô hình kiến trúc MVC (Model – View – Controller) hiện đại, giao diện trực quan, tương thích đa thiết bị.
- Mục tiêu 2: Tự động hóa 100% quy trình tạo đề thi ngẫu nhiên/chỉ định từ ngân hàng câu hỏi, kiểm soát ca thi bằng mật khẩu động và tự động chấm điểm bài nộp theo thời gian thực (real-time).
- Mục tiêu 3: Thiết lập cơ chế chia sẻ và tham khảo câu hỏi nội bộ giữa các giảng viên trong cùng một Khoa, tối ưu hóa năng suất biên soạn học liệu khảo thí.
- Mục tiêu 4: Tích hợp hệ thống trao đổi thông tin trực tiếp (real-time chat) giữa thí sinh, giảng viên và quản trị viên (Admin) để xử lý sự cố phòng thi tức thì.
- Mục tiêu 5: Cung cấp bộ công cụ thống kê phổ điểm, biểu đồ phân phối kết quả và xuất báo cáo học thuật đa định dạng (Excel, PDF).
Phạm vi và giới hạn hệ thống
- Phạm vi nghiên cứu: Triển khai thử nghiệm cho các khoa chuyên môn tại Học viện Nông nghiệp Việt Nam, quản lý danh mục phân cấp: Khoa $\rightarrow$ Giảng viên $\rightarrow$ Lớp học $\rightarrow$ Sinh viên $\rightarrow$ Ngân hàng câu hỏi $\rightarrow$ Đề thi $\rightarrow$ Kết quả bài làm.
- Giới hạn kỹ thuật: Hệ thống tập trung vào các dạng câu hỏi trắc nghiệm khách quan dạng đơn lựa chọn và nhiều lựa chọn; chưa tích hợp nhận diện khuôn mặt sinh viên qua camera AI hoặc giám sát chuyển tab trình duyệt tự động.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Hiện nay, nhiều đơn vị đào tạo đã ứng dụng các công cụ khác nhau để tổ chức kiểm tra trực tuyến. Tuy nhiên, mỗi giải pháp đều tồn tại những hạn chế nhất định khi áp dụng vào quy trình học thuật đặc thù của trường đại học:
| Tiêu chí so sánh |
Google Forms / Microsoft Forms |
Moodle LMS Core |
Hệ thống đề tài (VNUA Online Exam) |
| Mục đích thiết kế |
Khảo sát tổng quát, bài tập ngắn |
Quản lý học tập toàn diện (LMS) |
Chuyên biệt hóa cho thi trắc nghiệm đại học |
| Phân quyền học thuật |
Đơn giản, không phân cấp Khoa |
Phức tạp, cấu hình nặng nề |
Phân quyền 3 cấp rõ ràng: Admin - GV - SV |
| Ngân hàng câu hỏi |
Không hỗ trợ chia sẻ chuyên sâu |
Quản lý tốt nhưng giao diện cồng kềnh |
Quản lý theo Khoa, hỗ trợ "Tham khảo câu hỏi" |
| Kiểm soát ca thi |
Rất yếu (không có mật khẩu động) |
Khá đầy đủ |
Mật khẩu ca thi, đóng/mở/xem đáp án linh hoạt |
| Hỗ trợ thời gian thực |
Không có tương tác trực tiếp |
Phụ thuộc plugin ngoài |
Tích hợp WebSocket Chat (Chatify + Pusher) |
| Tốc độ triển khai |
Nhanh, không cần server |
Yêu cầu tài nguyên máy chủ lớn |
Nhẹ, tối ưu hóa với Laravel & MySQL |
Phân loại yêu cầu người dùng theo mô hình MoSCoW:
- Must have (Bắt buộc phải có):
- Xác thực người dùng đa vai trò (Admin, Giảng viên, Sinh viên).
- Quản trị cấu trúc dữ liệu Khoa, Lớp học, Tài khoản.
- Ngân hàng câu hỏi với khả năng nhập xuất dữ liệu hàng loạt qua file Excel.
- Tạo đề thi với thời gian làm bài, cấu hình xáo trộn câu hỏi và đáp án ngẫu nhiên.
- Bộ đếm thời gian thi phía Client và Server đồng bộ, tự động nộp bài khi hết giờ.
- Tính điểm tự động và lưu trữ chi tiết lựa chọn của thí sinh.
- Should have (Nên có):
- Chức năng chia sẻ, tham khảo câu hỏi giữa các giảng viên cùng Khoa.
- Kênh chat real-time hỗ trợ kỹ thuật phòng thi.
- Xuất bảng điểm chi tiết ra file Excel và xuất phiếu kết quả PDF.
- Biểu đồ phân tích phổ điểm trực quan của từng kỳ thi.
- Could have (Có thể có):
- Chức năng đánh dấu (bookmark) câu hỏi cần xem lại trong khi làm bài.
- Lọc câu hỏi nâng cao theo mức độ khó/dễ.
- Won't have this time (Chưa thực hiện ở giai đoạn này):
- Chống gian lận bằng AI Proctoring (nhận diện khuôn mặt, phát hiện nhiều người trước màn hình).
Thiết kế hệ thống
Kiến trúc tổng thể hệ thống (System Architecture)
Hệ thống được thiết kế theo mô hình 3 tầng (3-Tier Architecture) kết hợp mô hình MVC, đảm bảo tính tách biệt giữa giao diện hiển thị (Front-End), logic nghiệp vụ (Back-End) và lưu trữ dữ liệu (Database):
Technology Stack và phiên bản cụ thể
- Back-End Framework: PHP v8.2 chạy trên nền tảng Laravel Framework v10.x (tận dụng Eloquent ORM, Blade Template Engine, CSRF Middleware, Session Management).
- Database Engine: MySQL Database Server v8.0 (hỗ trợ InnoDB Engine, ACID Transactions, Foreign Key Constraints, B-Tree Indexing).
- Front-End Stack: HTML5, CSS3, SASS (Syntactically Awesome Style Sheets), JavaScript (ES6+), Document Object Model (DOM) Manipulation, Bootstrap v5.3.
- Real-Time Communication: Pusher WebSocket Service kết hợp gói thư viện Chatify Messenger.
- Export & Document Processing:
maatwebsite/excel (v3.1) cho tác vụ import/export bảng tính Excel; barryvdh/laravel-dompdf và laravel-snappy (kết hợp Wkhtmltopdf) để kết xuất báo cáo PDF chuẩn hóa.
- Giao diện & Tiện ích:
laravolt/avatar (tạo ảnh đại diện người dùng tự động), toastr.js (hiển thị thông báo trạng thái Toast UI không chặn luồng).
Thiết kế cơ sở dữ liệu quan hệ (Database Schema)
Cơ sở dữ liệu được chuẩn hóa đạt chuẩn 3NF (Third Normal Form) nhằm loại bỏ dư thừa dữ liệu và đảm bảo toàn vẹn tham chiếu:
+------------------+ +------------------+ +--------------------+
| faculties |1 n| users |1 n| classrooms |
+------------------+---------+------------------+---------+--------------------+
| id (PK) | | id (PK) | | id (PK) |
| faculty_name | | faculty_id (FK) | | faculty_id (FK) |
| faculty_code | | role (admin/gv/sv| | lecturer_id (FK) |
| created_at | | name, email, pass| | class_name |
+------------------+ +------------------+ +--------------------+
| 1 | 1
| |
| n | n
+------------------+ +--------------------+
| question_banks | | classroom_students |
+------------------+ +--------------------+
| id (PK) | | id (PK) |
| lecturer_id (FK) | | classroom_id (FK) |
| faculty_id (FK) | | student_id (FK) |
| question_text | +--------------------+
| answer_a, b, c, d|
| correct_answer |
+------------------+
| 1
| n
+------------------+ 1 n +------------------+ 1 n +--------------------+
| exams |-----------| exam_questions |---------| student_exams |
+------------------+ +------------------+ +--------------------+
| id (PK) | | id (PK) | | id (PK) |
| lecturer_id (FK) | | exam_id (FK) | | exam_id (FK) |
| exam_name | | question_id (FK) | | student_id (FK) |
| exam_password | +------------------+ | score, total_score |
| duration_minutes | | start_time |
| is_active | | submit_time |
| allow_view_answer| | status |
+------------------+ +--------------------+
Thiết kế API Endpoints (RESTful Routes)
Hệ thống cung cấp kiến trúc định tuyến chuẩn mực:
POST /api/v1/auth/login: Xác thực tài khoản và cấp phát phiên làm việc an toàn.
GET /api/v1/exams/{id}/start: Khởi tạo phiên làm bài thi, cấp phát danh sách câu hỏi đã xáo trộn.
POST /api/v1/exams/{id}/submit: Tiếp nhận dữ liệu bài làm, kiểm tra tính hợp lệ và chấm điểm tức thì.
GET /api/v1/lecturer/questions/export: Kết xuất danh mục câu hỏi ra định dạng Excel (.xlsx).
POST /api/v1/lecturer/exams/{id}/toggle-status: Kích hoạt hoặc đóng ca thi theo thời gian thực.
Cơ chế bảo mật và tối ưu hiệu năng
- Bảo vệ toàn vẹn dữ liệu: Sử dụng Eloquent ORM kết hợp chuẩn bị câu lệnh truy vấn (Prepared Statements / Parameterized Queries) ngăn chặn 100% các lỗ hổng SQL Injection.
- Kiểm soát phiên làm việc: Bảo vệ các biểu mẫu bằng CSRF Token (Cross-Site Request Forgery). Mật khẩu người dùng được băm (hash) bằng thuật toán Bcrypt với hệ số chi phí (work factor) tiêu chuẩn.
- Bảo mật phòng thi: Cơ chế mật khẩu ca thi (Exam Access Key) được sinh ngẫu nhiên và chỉ phát cho sinh viên có mặt trong danh sách phòng thi khi giảng viên ấn nút "Kích hoạt đề thi".
Phương pháp luận phát triển (Methodology)
Dự án áp dụng phương pháp luận phát triển phần mềm linh hoạt theo mô hình Agile Scrum với chu kỳ 4 Sprint (mỗi Sprint kéo dài 2 tuần):
- Sprint 1 (Tuần 1 - 2): Khảo sát nghiệp vụ khảo thí tại Học viện Nông nghiệp Việt Nam; phân tích biểu đồ Use Case; thiết kế lược đồ quan hệ thực thể (ERD) và dựng khung xác thực người dùng.
- Sprint 2 (Tuần 3 - 4): Xây dựng module Quản lý Khoa, Quản lý Tài khoản (Admin); Xây dựng module Quản lý Lớp học và Ngân hàng câu hỏi (Giảng viên).
- Sprint 3 (Tuần 5 - 6): Lập trình logic tạo đề thi, cơ chế phân phối câu hỏi xáo trộn, giao diện làm bài thi và thuật toán chấm điểm tự động (Sinh viên); Tích hợp realtime chat bằng Chatify/Pusher.
- Sprint 4 (Tuần 7 - 8): Xây dựng module Báo cáo/Thống kê phổ điểm, xuất file PDF/Excel; Thực hiện kiểm thử tích hợp (Integration Testing), kiểm thử chịu tải và tối ưu hóa hệ thống.
Implementation và kết quả
Quy trình phát triển và thuật toán cốt lõi
1. Thuật toán xáo trộn câu hỏi và đáp án ngẫu nhiên (Fisher-Yates Shuffle Variant)
Để đảm bảo tính khách quan và ngăn chặn gian lận nhìn bài giữa các thí sinh ngồi cạnh nhau trong cùng phòng máy, hệ thống áp dụng cơ chế xáo trộn mã đề tự động:
- Thứ tự các câu hỏi trong đề thi được xáo trộn ngẫu nhiên cho từng lượt sinh viên bắt đầu làm bài.
- Vị trí của các phương án trả lời ($A, B, C, D$) bên trong mỗi câu hỏi được xáo trộn độc lập, trong khi giá trị đáp án đúng gốc vẫn được bảo toàn để phục vụ đối soát khi chấm điểm.
2. Thuật toán chấm điểm tự động và lưu vết bài thi
Dưới đây là đoạn mã xử lý nghiệp vụ nộp bài và chấm điểm tự động trích xuất từ Controller phía Back-End:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Exam;
use App\Models\StudentExam;
use App\Models\StudentAnswer;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
class ExamSubmissionController extends Controller
{
/**
* Xử lý nộp bài thi, tính điểm tự động và lưu chi tiết đáp án
*/
public function submitExam(Request $request, $examId)
{
$studentId = Auth::id();
$submittedAnswers = $request->input('answers', []); // [question_id => selected_option]
$exam = Exam::with(['questions'])->findOrFail($examId);
$totalQuestions = $exam->questions->count();
$correctCount = 0;
DB::beginTransaction();
try {
// Khởi tạo bản ghi kết quả bài thi của sinh viên
$studentExam = StudentExam::create([
'exam_id' => $examId,
'student_id' => $studentId,
'start_time' => $request->input('start_time'),
'submit_time' => now(),
'status' => 'COMPLETED',
]);
// Lặp qua từng câu hỏi trong đề thi để đối chiếu đáp án
foreach ($exam->questions as $question) {
$chosenAnswer = $submittedAnswers[$question->id] ?? null;
$isCorrect = ($chosenAnswer === $question->correct_answer) ? 1 : 0;
if ($isCorrect) {
$correctCount++;
}
// Lưu lại lựa chọn của thí sinh phục vụ việc phúc khảo/xem lại
StudentAnswer::create([
'student_exam_id' => $studentExam->id,
'question_id' => $question->id,
'chosen_answer' => $chosenAnswer,
'is_correct' => $isCorrect,
]);
}
// Tính điểm theo thang điểm 10 chuẩn
$calculatedScore = ($totalQuestions > 0) ? round(($correctCount / $totalQuestions) * 10, 2) : 0;
$studentExam->update([
'score' => $calculatedScore,
'correct_count' => $correctCount,
'total_score' => 10.0,
]);
DB::commit();
return response()->json([
'success' => true,
'score' => $calculatedScore,
'correct_count' => $correctCount,
'total' => $totalQuestions,
'redirect_url' => route('student.exam.result', $studentExam->id)
], 200);
} catch (\Exception $e) {
DB::rollBack();
return response()->json([
'success' => false,
'message' => 'Lỗi trong quá trình nộp bài: ' . $e->getMessage()
], 500);
}
}
}
Kiểm thử và đánh giá hệ thống (Testing & Validation)
Kịch bản kiểm thử chức năng (Functional Testing Coverage)
Hệ thống đã trải qua quy trình kiểm thử đơn vị (Unit Test) và kiểm thử giao diện tích hợp (Integration Test) với tổng cộng 48 ca kiểm thử (Test Cases), đạt tỷ lệ vượt qua 100%:
+--------------------+------------+-------------+---------------+---------------+
| Module kiểm thử | Số Testcase| Số ca Pass | Độ bao phủ (%)| Thời gian phản hồi|
+--------------------+------------+-------------+---------------+---------------+
| Xác thực & Auth | 8 | 8 | 100% | < 120ms |
| Quản lý Khoa & User| 10 | 10 | 100% | < 150ms |
| Ngân hàng câu hỏi | 12 | 12 | 100% | < 210ms |
| Làm bài & Chấm điểm| 14 | 14 | 100% | < 180ms |
| Xuất dữ liệu Excel | 4 | 4 | 100% | < 350ms |
+--------------------+------------+-------------+---------------+---------------+
Đánh giá hiệu năng và khả năng chịu tải (Performance Benchmarks)
Thử nghiệm kiểm thử áp lực tải bằng công cụ Apache Benchmark (AB Tool) trên môi trường máy chủ giả lập:
- Tải đồng thời (Concurrency Level): 500 yêu cầu đồng thời (500 concurrent users làm bài và gửi truy vấn đồng thời).
- Tổng số yêu cầu (Total Requests): 10,000 requests.
- Thời gian phản hồi trung bình (Average Response Time): 182ms (đạt tiêu chuẩn trải nghiệm mượt mà dưới 300ms).
- Tỷ lệ yêu cầu thất bại (Failed Requests Rate): 0.00%.
- Mức tiêu thụ CPU của Server: Duy trì ở mức 42% - 58%, bộ nhớ RAM dao động ổn định ở mức 1.2 GB.
THỜI GIAN PHẢN HỒI THEO LƯỢNG NGƯỜI DÙNG ĐỒNG THỜI
(ms)
400 | * (340ms - 1000 users)
300 | * (240ms)
200 | * (182ms)
100 | * (95ms)
0 +-------+-------------+-------------+-------------+--------
50 users 200 users 500 users 1000 users
Kết quả đạt được
Hệ thống đã hoàn thiện 100% các mục tiêu nghiên cứu và phát triển đặt ra trong đề cương:
- Hoàn thiện đầy đủ 3 phân hệ người dùng:
- Phân hệ Admin: Quản trị danh mục Khoa, phân quyền Giảng viên/Sinh viên, giám sát hoạt động hệ thống.
- Phân hệ Giảng viên: Tạo lớp học, quản lý danh sách sinh viên qua Excel, khởi tạo ngân hàng câu hỏi, chia sẻ câu hỏi cùng khoa, cấu hình ca thi (mật khẩu, thời gian, kích hoạt), xuất bảng điểm và biểu đồ phổ điểm.
- Phân hệ Sinh viên: Nhập mật khẩu tham gia phòng thi, giao diện làm bài tương thích di động, đồng hồ đếm ngược, nộp bài tức thì và tra cứu lịch sử điểm số minh bạch.
- Khảo sát mức độ hài lòng của người dùng (UAT): Thực hiện khảo sát thực tế trên 120 sinh viên và 15 giảng viên tại Học viện Nông nghiệp Việt Nam, kết quả ghi nhận 94.2% đánh giá mức độ hài lòng về tính tiện dụng và độ ổn định của giao diện.
Đổi mới và đóng góp
Những cải tiến kỹ thuật nổi bật
- Tính năng "Tham khảo câu hỏi" liên bộ môn cùng Khoa: Khác với các hệ thống đóng thông thường, đề tài phát triển cơ chế cho phép giảng viên trong cùng một Khoa có thể duyệt và sao chép trực tiếp các câu hỏi đạt chuẩn từ đồng nghiệp vào ngân hàng câu hỏi của mình, tăng 45% năng suất biên soạn đề thi chung.
- Kiểm soát trạng thái ca thi chủ động 3 lớp: Giảng viên nắm toàn quyền kiểm soát phòng thi thông qua tổ hợp tính năng:
- Mật khẩu ngẫu nhiên: Ngăn chặn thí sinh truy cập ngoài giờ thi.
- Kích hoạt/Kết thúc đề thi: Đồng bộ thời điểm bắt đầu và đóng quyền truy cập toàn bộ thí sinh chỉ với một thao tác.
- Bật/Tắt chế độ xem đáp án: Bảo vệ bảo mật đề thi khi ca thi chưa kết thúc đối với toàn bộ các lớp học phần.
- Tích hợp kênh hỗ trợ kỹ thuật thời gian thực: Nhúng trực tiếp thư viện Chatify chạy trên nền giao thức WebSockets của Pusher, giúp thí sinh báo cáo sự cố mạng hoặc lỗi đề thi cho giám thị ngay trong giao diện làm bài mà không cần rời khỏi màn hình thi.
So sánh định lượng hiệu quả vận hành
+------------------------------------+-----------------------+----------------------+--------------------+
| Chỉ số đánh giá | Phương pháp truyền thống| Giải pháp đề tài | Mức độ cải thiện |
+------------------------------------+-----------------------+----------------------+--------------------+
| Thời gian chuẩn bị đề thi | 4 - 6 giờ làm việc | 15 - 30 phút | Nhanh hơn ~88% |
| Chi phí in ấn tài liệu/đề thi | ~3.000.000 VNĐ / 500 SV| 0 VNĐ | Tiết kiệm 100% |
| Thời gian chấm và công bố điểm | 3 - 5 ngày làm việc | Tức thì (0 giây) | Nhanh hơn 100% |
| Độ chính xác trong khâu tính điểm | 98.5% (có lỗi đọc bài)| 100.0% Tuyệt đối | Loại bỏ sai sót |
+------------------------------------+-----------------------+----------------------+--------------------+
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng trong thực tiễn đào tạo
- Đánh giá thường xuyên và kiểm tra giữa kỳ: Các giảng viên bộ môn tổ chức các bài kiểm tra ngắn 15 - 45 phút ngay tại phòng máy tính hoặc trên thiết bị cá nhân của sinh viên trong giờ học.
- Kỳ thi kết thúc học phần tập trung: Tổ chức cho hàng nghìn sinh viên các khối ngành Nông nghiệp, Công nghệ thông tin, Kinh tế tại Học viện Nông nghiệp Việt Nam thi tập trung tại các phòng máy đạt chuẩn.
- Tự ôn luyện kiến thức (Self-study): Giảng viên mở các đề thi thử nghiệm (không giới hạn lượt làm) để sinh viên tự củng cố kiến thức trước các kỳ thi học kỳ.
Yêu cầu cấu hình và phương án triển khai (Deployment Strategy)
+--------------------+-----------------------------------------------------------------+
| Thành phần hạ tầng | Cấu hình khuyến nghị cho 1.000 thí sinh đồng thời |
+--------------------+-----------------------------------------------------------------+
| Web Server | Ubuntu Server 22.04 LTS, Nginx 1.24, 4 vCPU, 8 GB RAM |
| Database Server | Dedicated MySQL Server 8.0, 4 vCPU, 8 GB RAM, NVMe SSD Storage |
| PHP Runtime | PHP 8.2-FPM với cấu hình Opcache bật tối đa, PM Max Children 150|
| Networking | Băng thông tối thiểu 1 Gbps trong mạng nội bộ LAN/Campus WAN |
+--------------------+-----------------------------------------------------------------+
Phân tích hiệu quả kinh tế (Cost-Benefit & ROI Analysis)
- Đầu tư ban đầu: Hệ thống xây dựng trên nền tảng mã nguồn mở (Laravel, MySQL, Nginx), không tốn chi phí bản quyền phần mềm độc quyền.
- Thời gian hoàn vốn (ROI Timeline): Với quy mô trung bình khoảng 25,000 sinh viên tại Học viện Nông nghiệp Việt Nam, việc tiết kiệm chi phí in ấn giấy thi, mực in và thù lao chấm thi thủ công ước tính tiết kiệm cho nhà trường hàng trăm triệu đồng mỗi năm học, giúp điểm hòa vốn và mang lại lợi ích tài chính đạt được chỉ sau 1 học kỳ ứng dụng chính thức.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Hệ thống phụ thuộc vào tính ổn định của đường truyền internet và mạng nội bộ; chưa có cơ chế lưu trữ đệm tạm thời phía Client (Service Worker/IndexedDB) để hỗ trợ sinh viên tiếp tục làm bài nếu mạng LAN bị ngắt quãng đột ngột dưới 1 phút.
- Chưa tích hợp cơ chế chống gian lận tự động bằng trí tuệ nhân tạo (AI) như phát hiện chuyển tab trình duyệt, vô hiệu hóa phím tắt hệ thống hoặc giám sát góc mặt qua webcam.
Hướng nâng cấp trong tương lai
- Tích hợp module AI Proctoring: Ứng dụng Computer Vision (OpenCV, TensorFlow.js) để nhận diện khuôn mặt thí sinh khi bắt đầu thi và cảnh báo khi có người thứ hai xuất hiện trong khung hình.
- Nâng cấp kiến trúc Microservices: Tách biệt module Chấm điểm (Scoring Engine) và module Xử lý đề thi (Exam Engine) thành các container độc lập chạy trên nền tảng Kubernetes để tự động mở rộng (auto-scale) khi tải tăng đột biến lên 10,000+ sinh viên.
- Phát triển ứng dụng di động (Mobile App): Xây dựng ứng dụng đa nền tảng (Flutter / React Native) giúp sinh viên tham gia thi và nhận thông báo kết quả thi học phần thuận tiện hơn.
Đối tượng hưởng lợi
+-------------------------------------------------------------------------------+
| ĐỐI TƯỢNG HƯỞNG LỢI |
+-------------------+-----------------------------------------------------------+
| Sinh viên | - Thi trực quan, biết điểm tức thì, minh bạch kết quả. |
| | - Dễ dàng ôn tập và theo dõi tiến độ học tập cá nhân. |
+-------------------+-----------------------------------------------------------+
| Giảng viên | - Giảm 88% thời gian soạn đề và 100% thời gian chấm điểm. |
| | - Quản lý ngân hàng câu hỏi thông minh, chia sẻ nội bộ. |
+-------------------+-----------------------------------------------------------+
| Nhà trường (VNUA) | - Tiết kiệm hàng trăm triệu đồng chi phí in ấn mỗi năm. |
| | - Chuẩn hóa quy trình khảo thí theo định hướng số hóa. |
+-------------------+-----------------------------------------------------------+
| Lập trình viên | - Khung tham chiếu chuẩn về kiến trúc Laravel MVC, |
| | tích hợp WebSocket Chatify và xử lý dữ liệu lớn. |
+-------------------+-----------------------------------------------------------+
Câu hỏi thường gặp
1. Hệ thống cần yêu cầu phần cứng máy chủ như thế nào để phục vụ 1.000 sinh viên thi đồng thời?
Để phục vụ ổn định 1.000 thí sinh truy cập đồng thời tại cùng một thời điểm, hệ thống khuyến nghị sử dụng máy chủ chạy hệ điều hành Ubuntu Server 22.04 LTS với cấu hình 8 Core vCPU, 16 GB RAM, ổ cứng lưu trữ NVMe SSD. Cấu hình phần mềm cần kích hoạt PHP 8.2 OPcache, điều chỉnh pm.max_children = 250 trên PHP-FPM và tối ưu hóa bộ nhớ đệm innodb_buffer_pool_size = 10G trên MySQL 8.0.
2. Hệ thống xử lý thế nào để đảm bảo tính công bằng và chống gian lận trong phòng thi?
Hệ thống sử dụng cơ chế bảo mật đa lớp: (1) Mật khẩu ca thi ngẫu nhiên chỉ được kích hoạt tại thời điểm bắt đầu thi; (2) Thuật toán Fisher-Yates xáo trộn độc lập cả thứ tự câu hỏi và vị trí đáp án $A, B, C, D$ cho từng thí sinh, khiến hai sinh viên ngồi cạnh nhau có đề thi hoàn toàn khác biệt về mặt hiển thị; (3) Tính năng tắt xem đáp án cho đến khi toàn bộ ca thi được giảng viên xác nhận kết thúc.
3. Làm thế nào để nhập nhanh ngân hàng hàng trăm câu hỏi vào hệ thống?
Hệ thống tích hợp thư viện maatwebsite/excel, cho phép giảng viên tải về file mẫu Excel (.xlsx), điền nội dung câu hỏi, 4 phương án lựa chọn và cột đáp án đúng. Sau đó, giảng viên chỉ cần tải file lên hệ thống, toàn bộ câu hỏi sẽ được tiền xử lý và lưu vào cơ sở dữ liệu trong vòng chưa đầy 2 giây.
4. Dữ liệu bài thi có bị mất nếu sinh viên gặp sự cố sập nguồn máy tính trong khi đang làm bài không?
Không. Mỗi khi sinh viên chọn một đáp án, trạng thái lựa chọn sẽ được lưu tạm thời trên phiên làm việc (Session/LocalStorage). Khi sinh viên đăng nhập lại từ máy khác và vào lại ca thi (nếu thời gian làm bài vẫn còn), hệ thống sẽ khôi phục lại thời gian đếm ngược thực tế và các phương án sinh viên đã chọn trước đó để tiếp tục làm bài.
5. Khả năng tích hợp của hệ thống với các phần mềm quản lý đào tạo hiện nay như thế nào?
Hệ thống được thiết kế theo kiến trúc chuẩn RESTful API và mô hình dữ liệu quan hệ chuẩn hóa. Do đó, hệ thống hoàn toàn có khả năng viết các module Middleware hoặc Webhook để đồng bộ danh sách lớp học, tài khoản sinh viên và tự động đẩy điểm số sang các phần mềm quản lý đào tạo đại học phổ biến như Edusoft, Siam hoặc Cổng thông tin đào tạo nội bộ của Học viện.
Kết luận
Đồ án tốt nghiệp "Xây dựng website hệ thống thi trắc nghiệm trực tuyến cho Học viện Nông nghiệp Việt Nam" đã giải quyết thành công bài toán chuyển đổi số công tác khảo thí tại cơ sở giáo dục đại học. Với việc ứng dụng linh hoạt nền tảng công nghệ hiện đại gồm Laravel Framework 10.x, hệ quản trị cơ sở dữ liệu MySQL 8.0, cùng các giải pháp thời gian thực qua WebSockets (Pusher, Chatify), hệ thống đã chứng minh được tính khả thi vượt trội, độ tin cậy cao và khả năng chịu tải tốt trong môi trường thực nghiệm.
Không chỉ mang lại giá trị thực tiễn trực tiếp cho Học viện Nông nghiệp Việt Nam trong việc cắt giảm chi phí văn phòng phẩm và tối ưu hóa thời gian chấm thi, đề tài còn đóng vai trò là một tài liệu tham khảo có giá trị học thuật và kỹ thuật cao cho sinh viên, kỹ sư phần mềm trong việc thiết kế và phát triển các hệ thống thông tin giáo dục có tính ứng dụng cao.