Thiết kế hệ thống:
I. Thiết kế phần mềm:
- Phần mềm được thiết kế theo cấu trúc chung của 1 dự án theo framework laravel (version 5.4).
- Tìm hiểu thêm về laravel: https://laravel.com/.
- Mô hình MVC của sản phẩm (hay cũng chính là mô hình MVC của 1 dự án laravel 5):
- Trong sản phẩm của nhóm:
- Các Route được định nghĩa trong thư mục routes.
- Các Controller được đặt trong thư mục Controllers.
- Các View được đặt trong thư mục resources.
II. Thiết kế cơ sở dữ liệu:
Cơ sở dữ liệu gồm 3 bảng:
Bảng users: Lưu thông tin người quản trị web.
Bảng questions: Lưu các câu hỏi không bao gồm ảnh.
Bẳng ques_imgs: Lưu các câu hỏi bao gồm ảnh.
III. Thiết kế các modules:
Module 1: Tạo đề với câu hỏi ngẫu nhiên từ CSDL.
Khi người dùng bấm nút bắt đầu thi đề ngẫu nhiên, route "/doExam" được gọi và thực hiện controller (gọi trong DoExamController hàm doexam). Hàm tạo đề từ các câu hỏi ngẫu nhiên bằng cách dùng hàm ramdom chọn theo số thứ tự câu hỏi trong cơ sở dữ liệu (có kiểm tra để không bị lặp).
Giới hạn sau khi chọn đủ 10 câu, dữ liệu đc truyền vào file mã nguồn (doExamPage.blade.php) của trang thi để hiển thị cho người dùng làm bài.
Module 2: Tạo đề với các câu hỏi định trước trong CSDL.
Khi người dùng bấm nút bắt đầu thi đề ngẫu nhiên, route "/chooseexam" được gọi và trình duyệt hiển thị trang chọn bộ đề. Người dùng bấm chọn bộ đề. Route "/doExam/{id}" (với id bằng số thứ tự bộ đề trừ 1) được gọi và thực hiện controller (gọi trong DoExamController hàm doexamwithid). Đề sẽ được tạo từ các câu hỏi với id tương ứng với mã đề. Vd: đề 1 thì tương ứng với từ câu 1 đến câu 8 bên các câu không ảnh và 2 câu 9, 10 bên các câu có hình ảnh.
Sau khi lấy đủ 10 câu của đề, dữ liệu đc truyền vào file mã nguồn (doExamPage.blade.php) của trang thi để hiển thị cho người dùng làm bài.
Module 3: Chấm bài
- Người dùng làm bài trên trang thi xong có thể bấm nộp bài hoặc khi đồng hồ chạy hết giờ. Dữ liệu về các lựa chọn của người dùng được đưa vào 1 mảng và kiểm tra bằng hàm showresults trong DoExamController. Sau đó kết quả được trả về trang hiển thị kết quả để hiển thị lên cho người thi xem.