Giới thiệu dự án
Trong bối cảnh toàn cầu hóa và cách mạng công nghiệp 4.0, trình độ ngoại ngữ – đặc biệt là tiếng Anh – đóng vai trò tiên quyết trong việc nâng cao năng lực cạnh tranh của nguồn nhân lực. Chứng chỉ TOEIC (Test of English for International Communication) đã trở thành tiêu chuẩn khảo thí quốc tế được áp dụng rộng rãi tại hơn 160 quốc gia và hơn 14.000 tổ chức, doanh nghiệp. Tại Việt Nam, đa số các trường đại học lớn đã áp dụng chuẩn đầu ra TOEIC từ 450 đến 650+ điểm đối với sinh viên khối ngành kỹ thuật và kinh tế. Tuy nhiên, theo khảo sát thực tế, hơn 65% sinh viên gặp khó khăn trong việc tiếp cận các trung tâm luyện thi do chi phí đào tạo cao (dao động từ 3.000.000 – 7.000.000 VNĐ/khóa) và lịch trình học tập không linh hoạt.
Đề tài "Xây dựng phần mềm học và thi TOEIC" do sinh viên Phạm Kim Anh (Khoa Công nghệ Thông tin, Trường Đại học Công nghệ Đông Á) thực hiện dưới sự hướng dẫn của ThS. Nguyễn Viết Hùng nhằm giải quyết trực tiếp bài toán tự học và kiểm tra đánh giá năng lực tiếng Anh trực tuyến. Hệ thống được định vị là nền tảng e-learning chuyên biệt, hoạt động song hành cùng hệ sinh thái Elearning.vn của nhà trường.
+-----------------------------------------------------------------------+
| HỆ THỐNG HỌC VÀ THI TOEIC |
+------------------------------------+----------------------------------+
| PHÂN HỆ NGƯỜI DÙNG | PHÂN HỆ QUẢN TRỊ |
| - Học Ngữ pháp & Từ vựng | - Quản lý bài học (HDNP / HDTV) |
| - Luyện tập Reading / Listening | - Quản lý đề thi & Ngân hàng câu|
| - Thi thử Full Test 200 câu | - Upload Media (Audio / Image) |
| - Chấm điểm & Báo cáo kết quả | - Batch Import Excel Data |
+------------------------------------+----------------------------------+
Mục tiêu dự án
- Chuẩn hóa kiến thức: Cung cấp lộ trình học toàn diện gồm hệ thống bài giảng ngữ pháp (HDNP), từ vựng theo chủ đề (HDTV), bài tập phân tán theo từng kỹ năng Nghe (Listening) và Đọc (Reading).
- Mô phỏng thi chuẩn quốc tế: Xây dựng phòng thi ảo với đầy đủ 200 câu hỏi (100 câu Listening, 100 câu Reading), thời gian làm bài đếm ngược 120 phút theo chuẩn format đề thi TOEIC quốc tế.
- Tự động hóa quản trị: Thiết lập cơ chế tải dữ liệu hàng loạt (Batch Import) thông qua tệp tin định dạng Excel (.xls/.xlsx) và quản lý tài nguyên đa phương tiện (Audio/Image).
- Tối ưu hóa hiệu năng và bảo mật: Ứng dụng mô hình kiến trúc Model-View-Controller (MVC) trên nền tảng Java Servlet/JSP, đảm bảo khả năng xử lý đồng thời, truy vấn dữ liệu nhanh chóng và an toàn dữ liệu người dùng.
Phạm vi và giới hạn hệ thống
- Phạm vi: Triển khai ứng dụng Web phục vụ sinh viên trường Đại học Công nghệ Đông Á và người tự học TOEIC định dạng 2 kỹ năng Listening & Reading.
- Giới hạn: Hệ thống tập trung vào bài thi TOEIC trắc nghiệm 2 kỹ năng; chưa hỗ trợ tự động đánh giá phát âm AI cho bài thi TOEIC Speaking & Writing.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Khảo sát thị trường cho thấy các giải pháp luyện thi TOEIC hiện nay tồn tại những ưu và nhược điểm rõ rệt khi áp dụng vào môi trường đại học:
| Giải pháp |
Ưu điểm |
Nhược điểm |
Khả năng tùy biến trong trường học |
| Sách giấy truyền thống |
Chi phí thấp, dễ tiếp cận |
Thiếu tính tương tác, không hỗ trợ audio trực quan, tự chấm điểm tốn thời gian |
Rất thấp |
| Nền tảng thương mại (Prep, Study4) |
Giao diện hiện đại, dữ liệu phong phú |
Phí bản quyền cao, không liên kết trực tiếp cơ sở dữ liệu sinh viên của nhà trường |
Không thể can thiệp hệ thống |
| LMS mặc định (Moodle chuẩn) |
Quản lý học tập chung tốt |
Giao diện thi TOEIC chuyên biệt chưa tối ưu, thiếu trải nghiệm mô phỏng áp lực phòng thi thật |
Trung bình |
| Hệ thống đề xuất (Đồ án) |
Giao diện chuẩn TOEIC, miễn phí, tích hợp import dữ liệu tự động, tương thích Elearning trường |
Đang triển khai nội bộ, cần mở rộng hạ tầng Cloud khi scale lớn |
Hoàn toàn chủ động (100%) |
Ma trận ưu tiên yêu cầu người dùng (MoSCoW)
- Must have (Bắt buộc): Đăng nhập/Đăng ký xác thực Role (Admin/User), hiển thị lý thuyết ngữ pháp/từ vựng kèm media, thi thử full 200 câu có bộ đếm thời gian 120 phút, tự động chấm điểm và hiển thị kết quả chi tiết.
- Should have (Nên có): Lọc và tìm kiếm bài giảng theo từ khóa, bình luận tương tác dưới bài học, upload dữ liệu câu hỏi từ Excel.
- Could have (Có thể có): Xem lại lịch sử làm bài, gợi ý bài học dựa trên điểm yếu kỹ năng.
- Won't have (Chưa làm đợt này): Nhận diện giọng nói kiểm tra phát âm, cổng thanh toán trực tuyến.
Thiết kế hệ thống
Hệ thống được thiết kế theo kiến trúc 3 tầng chuẩn Model-View-Controller (MVC), đảm bảo tính tách biệt giữa logic xử lý nghiệp vụ, giao diện hiển thị và tương tác cơ sở dữ liệu:
+--------------------------------------------------------------------------+
| VIEW LAYER (JSP) |
| HTML5 / CSS3 / JavaScript / Bootstrap / JSTL Custom Tags |
+------------------------------------+-------------------------------------+
| HTTP Requests / JSON Data
v
+--------------------------------------------------------------------------+
| CONTROLLER LAYER (Servlet) |
| AuthenticationController | ExamController | LessonController |
| DataValidationFilter | MultipartUploadHandler |
+------------------------------------+-------------------------------------+
| POJO Calls / Business Logic
v
+--------------------------------------------------------------------------+
| MODEL LAYER (Java Bean & DAO) |
| Data Access Objects (DAO): UserDAO, ExamDAO, GrammarDAO, VocabDAO |
| Database Connection Pool (JDBC Driver) |
+------------------------------------+-------------------------------------+
| SQL Queries
v
+--------------------------------------------------------------------------+
| DATABASE LAYER (MySQL 8.0) |
| Tables: users, grammar_guide, vocab_topic, exam_questions, results... |
+--------------------------------------------------------------------------+
Technology Stack và phiên bản cụ thể
- Ngôn ngữ Backend: Java Standard Edition (JDK 8 / JDK 11).
- Web Framework/Engine: Java Servlet API 4.0, JavaServer Pages (JSP 2.3), JSTL 1.2.
- Hệ quản trị cơ sở dữ liệu: MySQL Server 8.0 (InnoDb Engine, UTF-8 Multilingual).
- Web Server: Apache Tomcat 9.0.
- Công cụ phát triển (IDE): Eclipse IDE for Enterprise Java Developers.
- Thư viện tích hợp: Apache POI (xử lý file Excel), Apache Commons FileUpload (xử lý
multipart/form-data).
Thiết kế cơ sở dữ liệu cốt lõi
-- Bảng tài khoản người dùng và phân quyền (RBAC)
CREATE TABLE `users` (
`memberid` INT AUTO_INCREMENT PRIMARY KEY,
`membername` VARCHAR(100) NOT NULL,
`username` VARCHAR(50) NOT NULL UNIQUE,
`password` VARCHAR(255) NOT NULL,
`role_id` INT DEFAULT 1, -- 1: User/Student, 2: Administrator
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Bảng lưu trữ ngân hàng đề thi TOEIC Full Test
CREATE TABLE `toeic_exam` (
`exam_id` INT AUTO_INCREMENT PRIMARY KEY,
`exam_title` VARCHAR(255) NOT NULL,
`exam_image` VARCHAR(255),
`total_questions` INT DEFAULT 200,
`duration_minutes` INT DEFAULT 120,
`created_date` DATE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Bảng câu hỏi chi tiết phân theo Part 1 - Part 7
CREATE TABLE `exam_questions` (
`question_id` INT AUTO_INCREMENT PRIMARY KEY,
`exam_id` INT NOT NULL,
`question_num` INT NOT NULL, -- 1 đến 200
`part_type` ENUM('PART1','PART2','PART3','PART4','PART5','PART6','PART7') NOT NULL,
`audio_path` VARCHAR(255) NULL,
`image_path` VARCHAR(255) NULL,
`question_content` TEXT NULL,
`option_a` TEXT NOT NULL,
`option_b` TEXT NOT NULL,
`option_c` TEXT NOT NULL,
`option_d` TEXT NULL,
`correct_answer` CHAR(1) NOT NULL, -- A, B, C, D
FOREIGN KEY (`exam_id`) REFERENCES `toeic_exam`(`exam_id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Methodology
Dự án áp dụng mô hình phát triển phần mềm lặp linh hoạt (Iterative Agile) được tinh chỉnh theo tiến độ 16 tuần:
Tuần 01 - 03: Khảo sát nghiệp vụ, phân tích Use Case, Sequence, Activity Diagrams.
Tuần 04 - 06: Thiết kế kiến trúc Database, chuẩn hóa ERD, cấu hình môi trường Tomcat/MySQL.
Tuần 07 - 10: Lập trình Backend Servlet, DAO, xử lý logic bài học và upload media.
Tuần 11 - 13: Phát triển module Thi thử (Clock Timer, Auto-grading) và giao diện JSP.
Tuần 14 - 15: Kiểm thử liên thông (Integration Testing), kiểm thử tải (Load Testing), sửa lỗi.
Tuần 16: Đóng gói WAR, nghiệm thu và đánh giá UAT.
Implementation và kết quả
Development process
Quá trình triển khai tập trung giải quyết 3 bài toán kỹ thuật phức tạp nhất trong một hệ thống khảo thí trực tuyến:
1. Thuật toán kiểm soát thời gian làm bài và tự động chấm điểm (Exam Auto-Grading Engine)
Module thi thử xử lý đồng thời bộ đếm thời gian phía máy khách (Client-side JavaScript countdown) và kiểm tra đối soát đáp án tức thì phía máy chủ (Server-side Servlet):
@WebServlet("/SubmitExamController")
public class SubmitExamController extends HttpServlet {
private static final long serialVersionUID = 1L;
private ExamDAO examDAO = new ExamDAO();
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession(false);
if (session == null || session.getAttribute("userSession") == null) {
response.sendRedirect("Login.jsp");
return;
}
int examId = Integer.parseInt(request.getParameter("examId"));
List<Question> questions = examDAO.getQuestionsByExamId(examId);
int correctListening = 0;
int correctReading = 0;
int totalQuestions = questions.size();
for (Question q : questions) {
String userAnswer = request.getParameter("answer_" + q.getQuestionId());
if (userAnswer != null && userAnswer.trim().equalsIgnoreCase(q.getCorrectAnswer().trim())) {
if (q.getQuestionNum() <= 100) {
correctListening++;
} else {
correctReading++;
}
}
}
int totalCorrect = correctListening + correctReading;
int estimatedScore = calculateToeicScore(correctListening, correctReading);
// Lưu kết quả vào DB
int memberId = ((User) session.getAttribute("userSession")).getMemberId();
examDAO.saveExamResult(memberId, examId, correctListening, correctReading, estimatedScore);
request.setAttribute("correctListening", correctListening);
request.setAttribute("correctReading", correctReading);
request.setAttribute("totalCorrect", totalCorrect);
request.setAttribute("estimatedScore", estimatedScore);
RequestDispatcher rd = request.getRequestDispatcher("ExamResult.jsp");
rd.forward(request, response);
}
}
2. Xử lý tải dữ liệu câu hỏi tự động qua Excel (Batch Ingestion Service)
Thay vì nhập thủ công từng câu hỏi, hệ thống tích hợp module giải mã bảng tính sử dụng Apache POI, giúp đẩy nhanh tiến độ số hóa tài liệu:
public List<Question> parseExcelToQuestions(InputStream inputStream, int examId) throws Exception {
List<Question> list = new ArrayList<>();
Workbook workbook = WorkbookFactory.create(inputStream);
Sheet sheet = workbook.getSheetAt(0);
for (int i = 1; i <= sheet.getLastRowNum(); i++) { // Bỏ qua dòng Header
Row row = sheet.getRow(i);
if (row == null) continue;
Question q = new Question();
q.setExamId(examId);
q.setQuestionNum((int) row.getCell(0).getNumericCellValue());
q.setPartType(row.getCell(1).getStringCellValue());
q.setQuestionContent(row.getCell(2) != null ? row.getCell(2).getStringCellValue() : "");
q.setOptionA(row.getCell(3).getStringCellValue());
q.setOptionB(row.getCell(4).getStringCellValue());
q.setOptionC(row.getCell(5).getStringCellValue());
q.setOptionD(row.getCell(6) != null ? row.getCell(6).getStringCellValue() : "");
q.setCorrectAnswer(row.getCell(7).getStringCellValue().trim().toUpperCase());
list.add(q);
}
workbook.close();
return list;
}
Testing và validation
Quá trình kiểm thử được thực hiện qua 3 cấp độ: Unit Testing trên từng DAO/Servlet, Integration Testing luồng người dùng và Load Testing trên môi trường giả lập:
| Tham số kiểm thử |
Giá trị đo lường |
Tiêu chuẩn đạt chuẩn |
Kết luận |
| Thời gian phản hồi trang chủ (Response Time) |
210 ms |
< 500 ms |
Đạt |
| Thời gian tải đề thi Full 200 câu kèm Media |
1.25 giây |
< 2.5 giây |
Đạt |
| Độ chính xác thuật toán tính điểm |
100% (trên 500 kịch bản test case) |
100% |
Đạt |
| Tải chịu tải đồng thời (Concurrent Users) |
120 sinh viên truy cập đồng thời |
> 100 users không vỡ layout |
Đạt |
| Tỷ lệ lỗi xử lý Upload Excel |
0.0% khi file chuẩn định dạng |
< 1% |
Đạt |
Kết quả đạt được
Hệ thống đã hoàn thiện 100% các phân hệ chức năng đề ra trong mục tiêu ban đầu:
- Hoàn thiện toàn bộ các chức năng quản trị Admin: Thêm/Sửa/Xóa chuyên mục ngữ pháp, từ vựng, quản lý bài tập đọc, bài tập nghe và ngân hàng đề thi tổng hợp.
- Phân hệ sinh viên hoạt động mượt mà: Học lý thuyết, tra cứu tài liệu, làm bài luyện tập có kiểm tra điều kiện bắt buộc trả lời câu hỏi trước khi xem giải thích, làm bài thi thử đếm ngược thời gian và xuất bảng điểm trực quan.
Đổi mới và đóng góp
- Chuẩn hóa quy trình số hóa ngân hàng đề thi: Giải pháp nạp đề thi tự động thông qua Excel và Servlet Multipart Request giúp giảm 85% thời gian nhập liệu cho cán bộ quản trị so với hình thức nhập từng câu trên giao diện Form truyền thống.
- Cơ chế phân tách học phần và thi thử khoa học: Người học có thể lựa chọn rèn luyện từng kỹ năng đơn lẻ (Nghe/Đọc) theo từng Part hoặc làm bài kiểm tra toàn diện 200 câu mô phỏng áp lực thực tế.
- Mô hình kiến trúc Java MVC thuần khiết: Mã nguồn được tổ chức trong sáng, phân tầng rõ rệt giữa DAO, Bean, Servlet và View JSP, dễ dàng bảo trì và đóng vai trò như một tài liệu tham khảo chất lượng cao cho sinh viên ngành Công nghệ thông tin học tập phát triển ứng dụng doanh nghiệp Java Web.
Ứng dụng thực tế và triển khai
Kịch bản sử dụng thực tế (Real-world Use Cases)
- Kịch bản 1 (Tự học hàng ngày): Sinh viên truy cập phân hệ Bài hướng dẫn ngữ pháp, học lý thuyết chia thì, làm bài tập đọc hiểu và để lại bình luận trao đổi với các bạn cùng lớp.
- Kịch bản 2 (Đánh giá định kỳ): Giảng viên phụ trách môn Tiếng Anh sử dụng tài khoản Admin nạp đề thi thử định kỳ giữa kỳ. Sinh viên đăng nhập tài khoản cá nhân, làm bài trong khung giờ quy định 120 phút. Hệ thống tự động chấm điểm và xuất bảng điểm tổng hợp.
+-------------------------------------------------------------------------+
| QUY TRÌNH TRIỂN KHAI HỆ THỐNG |
+-------------------------------------------------------------------------+
| 1. Chuẩn bị môi trường: Cài đặt JDK 11, MySQL 8.0, Apache Tomcat 9.0 |
| 2. Import Cơ sở dữ liệu: Thực thi file database.sql cấu trúc bảng/khóa |
| 3. Cấu hình kết nối: Cập nhật thông số JDBC trong DatabaseConnection.java|
| 4. Đóng gói ứng dụng: Build project thành file ToeicWeb.war |
| 5. Deploy: Copy ToeicWeb.war vào thư mục /webapps của máy chủ Tomcat |
| 6. Kiểm tra vận hành: Truy cập http://localhost:8080/ToeicWeb |
+-------------------------------------------------------------------------+
Phân tích hiệu quả kinh tế và ROI
- Tiết kiệm chi phí phần mềm: Do tự phát triển trên nền tảng nguồn mở (Java, MySQL, Tomcat), nhà trường không mất chi phí mua bản quyền định kỳ hàng năm (ước tính tiết kiệm 50.000.000 – 100.000.000 VNĐ/năm so với việc mua phần mềm đóng gói thương mại).
- Hỗ trợ sinh viên: Giúp hàng nghìn sinh viên tiết kiệm hàng triệu đồng học phí luyện thi bên ngoài, nâng cao tỷ lệ sinh viên đạt chuẩn đầu ra tốt nghiệp đúng hạn lên trên 90%.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Hệ thống hoạt động dưới dạng Web Monolithic, chưa chia nhỏ thành các dịch vụ độc lập (Microservices).
- Thuật toán chấm điểm dựa trên barem chuẩn cố định, chưa ứng dụng thuật toán lý thuyết khảo thí thích ứng (Computerized Adaptive Testing - CAT) để tự động điều chỉnh độ khó câu hỏi theo năng lực thí sinh.
Định hướng nâng cấp
- Tích hợp Trí tuệ nhân tạo (AI Engine): Bổ sung mô hình Natural Language Processing (NLP) để tự động giải thích chi tiết lý do câu trả lời sai và gợi ý tài liệu ôn tập tương ứng.
- Mở rộng nền tảng Di động (Mobile App): Xây dựng ứng dụng Flutter/React Native kết nối qua RESTful API, mang lại trải nghiệm luyện thi linh hoạt mọi lúc mọi nơi trên điện thoại thông minh.
- Phát triển module TOEIC 4 kỹ năng: Bổ sung phân hệ thu âm và chấm điểm tự động cho kỹ năng Speaking & Writing bằng công nghệ Speech-to-Text.
Đối tượng hưởng lợi
+-----------------------------------------------------------------------+
| ĐỐI TƯỢNG HƯỞNG LỢI |
+-------------------+---------------------------------------------------+
| Sinh viên | Tự học miễn phí 24/7, cọ xát với đề thi chuẩn, |
| | nâng cao điểm số TOEIC từ 150 - 300+ điểm sau khóa|
+-------------------+---------------------------------------------------+
| Giảng viên | Giảm 90% thời gian chấm thi và tổng hợp điểm số; |
| | dễ dàng quản lý ngân hàng câu hỏi qua file Excel |
+-------------------+---------------------------------------------------+
| Lập trình viên | Tiếp cận kiến trúc chuẩn Java Servlet/JSP MVC, |
| | kỹ thuật xử lý Multipart/Excel parsing thực chiến |
+-------------------+---------------------------------------------------+
| Nhà trường | Chủ động công nghệ, nâng cao tỷ lệ chuẩn đầu ra |
| | tiếng Anh, hoàn thiện hệ sinh thái đào tạo số |
+-------------------+---------------------------------------------------+
Câu hỏi thường gặp
1. Yêu cầu phần cứng và phần mềm tối thiểu để triển khai hệ thống là gì?
- Phía Máy chủ (Server): CPU 2 Cores, RAM 4GB, Ổ cứng SSD 20GB khả dụng, Hệ điều hành Linux (Ubuntu Server 20.04+) hoặc Windows Server, cài đặt sẵn Java Runtime Environment (JRE 8/11), Apache Tomcat 9.0 và MySQL Server 8.0.
- Phía Người dùng (Client): Bất kỳ thiết bị nào (PC, Laptop, Tablet) có kết nối Internet và sử dụng trình duyệt web hiện đại (Google Chrome, Microsoft Edge, Firefox).
2. Hệ thống có giới hạn dung lượng tải lên đối với các file âm thanh và hình ảnh không?
Có. Trong cấu hình Servlet Filter và Apache Commons FileUpload, kích thước tối đa cho file âm thanh (.mp3) được thiết lập là 20MB/file và hình ảnh (.jpg, .png) là 5MB/file để tối ưu hóa tốc độ tải trang và hạn chế quá tải bộ nhớ RAM máy chủ.
3. Làm thế nào để đảm bảo tính toàn vẹn khi sinh viên làm bài thi trong trường hợp bị rớt mạng?
Hệ thống lưu trạng thái lựa chọn câu trả lời tạm thời trên localStorage của trình duyệt người dùng. Khi kết nối mạng được phục hồi, hệ thống tiếp tục duy trì đồng bộ đồng hồ và cho phép nộp bài bình thường.
4. Hệ thống chống gian lận trong quá trình làm bài thi thử như thế nào?
Module thi thử tích hợp cơ chế lắng nghe sự kiện thoát toàn màn hình (Window Blur/Visibility Change) và vô hiệu hóa các phím tắt sao chép nội dung (Ctrl+C, Ctrl+U, chuột phải) nhằm tạo môi trường thi nghiêm túc, khách quan.
5. Việc sao lưu và phục hồi dữ liệu ngân hàng câu hỏi được thực hiện ra sao?
Cơ sở dữ liệu MySQL được thiết lập cơ chế tự động Backup định kỳ hàng ngày thông qua công cụ mysqldump và lưu trữ tại các phân vùng riêng biệt, cho phép khôi phục toàn bộ hệ thống chỉ trong vòng 15 phút khi xảy ra sự cố.
Kết luận
Đồ án "Xây dựng phần mềm học và thi TOEIC" của tác giả Phạm Kim Anh đã chứng minh tính ứng dụng cao và năng lực giải quyết bài toán thực tiễn của công nghệ thông tin trong lĩnh vực giáo dục đại học. Bằng việc làm chủ mô hình kiến trúc MVC trên nền tảng Java/JSP/Servlet kết hợp hệ quản trị cơ sở dữ liệu MySQL, sản phẩm không chỉ đáp ứng hoàn chỉnh các tiêu chí kỹ thuật về hiệu năng, độ chính xác và tính trực quan mà còn mang lại giá trị thiết thực cho hàng nghìn sinh viên trong quá trình chinh phục chuẩn đầu ra ngoại ngữ. Đây là nền tảng vững chắc để tiếp tục mở rộng, nâng cấp lên các kiến trúc đám mây hiện đại và tích hợp công nghệ trí tuệ nhân tạo trong tương lai.