Bối cảnh và vấn đề nghiên cứu

Khóa luận tốt nghiệp "Xây dựng website dạy và học trực tuyến" được thực hiện bởi sinh viên Nguyễn Hoàng Tuấn và Tiêu Khánh Duy, dưới sự hướng dẫn của ThS. Cao Tiến Thành tại Khoa Công nghệ Thông tin, Trường Đại học Ngoại ngữ - Tin học TP.HCM (năm 2019).

Lý do chọn đề tài xuất phát từ thực tế xã hội hiện đại: nhịp sống bận rộn khiến con người gặp nhiều trở ngại trong việc sắp xếp thời gian đến trường lớp truyền thống, cũng như gặp khó khăn về di chuyển dẫn đến tình trạng đi học muộn, tiếp thu bài giảng gián đoạn và thiếu hụt kiến thức. Cùng với sự phát triển của hạ tầng Internet, giải pháp dạy và học trực tuyến qua website được lựa chọn nhằm cung cấp phương thức học tập linh hoạt về thời gian, địa điểm, đồng thời mang lại sự đa dạng về các mảng kiến thức đáp ứng nhu cầu trang bị năng lực của người học.

Theo văn bản khóa luận, mục tiêu và các nhiệm vụ nghiên cứu cốt lõi được xác định bao gồm 6 yêu cầu:

  1. Cho phép người dùng đăng ký tài khoản, cập nhật thông tin cá nhân và mua các khóa học trực tuyến.
  2. Xây dựng diễn đàn thảo luận trong từng khóa học để các nhóm người dùng trao đổi, gia tăng sự tương tác giữa học viên với giảng viên và giữa các học viên với nhau.
  3. Thiết lập trang quản trị (Admin) riêng biệt nhằm quản lý người dùng theo phân cấp quyền hạn (Admin, Teacher, Student), quản trị danh mục khóa học và theo dõi lịch sử người dùng ghi danh.
  4. Xây dựng giao diện hiển thị bài giảng hỗ trợ nhúng video từ YouTube (embed video), video trực tiếp kèm theo hình thức hỏi đáp tương tác, theo dõi tiến trình học tập và giao bài tập cho từng buổi học.
  5. Thiết kế giao diện website hỗ trợ tính năng Responsive, đảm bảo khả năng hiển thị tương thích trên các thiết bị kết nối Internet.
  6. Tự xây dựng toàn bộ hệ thống từ nền tảng framework, tuyệt đối không sử dụng mã nguồn mở dựng sẵn (turnkey open-source CMS).

Đối tượng hướng tới của đề tài bao gồm bốn nhóm: người dùng có nhu cầu tiếp thu kiến thức mới hoặc củng cố kiến thức sẵn có; người dùng hạn chế về quỹ thời gian cố định hoặc gặp trở ngại di chuyển; người dùng có nhu cầu trao đổi chuyên môn; và người dạy có khóa học muốn đăng ký kinh doanh, công khai nội dung đào tạo trên nền tảng. Phạm vi nghiên cứu giới hạn trong việc xây dựng một hệ thống website hoàn chỉnh, tập trung giải quyết các bài toán thực tiễn về quản lý đào tạo, thanh toán điện tử và tương tác trực tuyến giữa các bên tham gia.

Cơ sở lý thuyết và công nghệ nền tảng

Hệ thống được phát triển dựa trên ngôn ngữ lập trình PHP và nền tảng Laravel Framework, sử dụng công cụ soạn thảo mã nguồn Visual Studio Code. Nền tảng PHP được lựa chọn do tính chất mã nguồn mở, miễn phí, hỗ trợ đa nền tảng (Linux, Windows, MacOS), tốc độ xử lý nhanh và sở hữu cộng đồng hỗ trợ lớn. Laravel Framework được chọn nhờ thiết kế theo mô hình MVC (Model - View - Controller), khả năng hỗ trợ xây dựng Web API, tính năng bảo mật tích hợp và hệ sinh thái gói mở rộng phong phú.

Tác giả đã lập bảng đối chiếu thông số kỹ thuật giữa ba framework PHP phổ biến gồm Laravel, Symfony và Zend để làm căn cứ lựa chọn giải pháp công nghệ:

Tiêu chí kỹ thuật Laravel Symfony Zend
Bản đồ quan hệ đối tượng (ORM) Eloquent ORM Propel ORM Không nêu
Công cụ tạo mẫu (Template Engine) Blade, PHP Twig, PHP Không nêu
Chống tấn công CSRF Có Có Có
Chống tấn công SQL Injection Có Có Có
Quy mô cộng đồng Lớn Lớn Lớn
Số lượng Package hỗ trợ 16.900 7.500 6.000

Kiến trúc Laravel được hệ thống hóa qua 10 thư mục gốc (Root Directories):

  • app: Chứa mã nguồn cốt lõi của ứng dụng (Models, Controllers, Services).
  • bootstrap: Chứa các tập tin khởi động và cấu hình giao diện cơ bản.
  • config: Lưu trữ các tập tin thiết lập thông số hệ thống (app.php...).
  • database: Chứa các tập tin khởi tạo cấu trúc cơ sở dữ liệu (migrations), dữ liệu mẫu (model factories, seeds).
  • public: Điểm bắt đầu ứng dụng (index.php, .htaccess) và chứa tài nguyên tĩnh (CSS, JavaScript, hình ảnh).
  • resources: Chứa các tệp giao diện (Views) và tài nguyên ngôn ngữ chưa biên dịch.
  • routes: Quản lý các tuyến đường dẫn của ứng dụng, phân định thành 4 tệp chuyên biệt:
    • web.php: Tuyến đường dẫn có trạng thái session, mã hóa cookie và cơ chế chống CSRF.
    • api.php: Tuyến đường dẫn không trạng thái (stateless) dành cho RESTful API, xác thực bằng Token.
    • console.php: Tuyến đường dẫn quản lý các lệnh console dạng Closure tương tác qua nhập xuất.
    • channels.php: Tuyến đường dẫn đăng ký các kênh truyền phát sự kiện (event broadcasting).
  • storage: Lưu trữ tập tin tạm, bộ nhớ đệm (cache), phiên làm việc (session) và nhật ký hệ thống (logs).
  • tests: Chứa các kịch bản kiểm thử đơn vị (Unit tests) để đánh giá tính logic của mã nguồn.
  • vendor: Chứa các thư viện phụ thuộc của bên thứ ba được cài đặt qua Composer.

Thiết kế và triển khai hệ thống

Cơ sở dữ liệu của website được xây dựng trên hệ quản trị cơ sở dữ liệu MySQL với định danh cơ sở dữ liệu là tuhoctru_onlinecourse. Cấu trúc dữ liệu bao gồm 15 bảng quan hệ:

Tên bảng Khóa chính / Khóa ngoại liên kết Chức năng lưu trữ dữ liệu
the_loai_khoa_hoc id Danh mục thể loại lớn của các khóa học
mang_khoa_hoc id, khóa ngoại #TheLoaiKH_id liên kết the_loai_khoa_hoc.id Mảng chuyên ngành chi tiết thuộc từng thể loại
khoa_hoc id, #MangKH_id, #GiangVien_id Thông tin khóa học, giá tiền, giảm giá, thành tiền, đánh giá, lượt xem, trạng thái duyệt (0: chưa duyệt, 1: đã duyệt)
bai_giang id, khóa ngoại #KhoaHoc_id liên kết khoa_hoc.id Tên bài học, tóm tắt mô tả và liên kết nhúng video (EmbededURL)
cau_hoi id, khóa ngoại #BaiGiang_id, #user_id Tiêu đề, nội dung và hình ảnh câu hỏi của học viên trong từng bài giảng
code_khoa_hoc id, khóa ngoại #KhoaHoc_id Mã kích hoạt 10 ký tự (unique), trạng thái (1: chưa dùng, 0: đã dùng, -1: đã sở hữu nhưng chưa kích hoạt)
comment id, khóa ngoại #user_id, #KhoaHoc_id Ý kiến phản hồi và trao đổi của người dùng dưới mỗi khóa học
danh_gia id, khóa ngoại #HoaDon_id Tiêu đề, nội dung và điểm đánh giá thang điểm 1 đến 5 sao
giang_vien id, khóa ngoại #user_id, #ThoiHanGV_id Hồ sơ giảng viên, số lượng học viên, số lượng khóa học, ngày hết hạn và trạng thái hoạt động
hoa_don id, #KhoaHoc_id, #user_id, #ThanhToan_id, #MaCode_id Tổng tiền thanh toán, trạng thái kích hoạt mã (0: chưa nhập code, 1: đã nhập code)
level id Cấp bậc phân quyền: 1 (Admin), 2 (Giảng viên), 3 (Người dùng thường)
ngan_hang id Danh mục tên các ngân hàng thương mại
tai_khoan_ngan_hang id, khóa ngoại #user_id, #NganHang_id Số tài khoản ngân hàng (16 đến 19 chữ số), chủ tài khoản, chi nhánh ngân hàng
thanh_toan id Phương thức giao dịch: 1 (Chuyển khoản), 2 (Ship COD)
user id, khóa ngoại #level_id mặc định là 3 Hồ sơ thành viên, mật khẩu tối thiểu 6 ký tự, thông tin mạng xã hội (provider, provider_id), mã api_token

Hệ thống định nghĩa 22 ca sử dụng (Use Case) cụ thể phân bổ cho 3 nhóm tác nhân chính:

  1. Phân hệ Học viên / Người dùng: Xem và tìm kiếm khóa học theo tên/nội dung; đăng ký tài khoản (hệ thống tự động phát sinh api_token định dạng JSON và gửi email xác thực tài khoản); đăng nhập qua tài khoản Local hoặc tài khoản Google OAuth; khôi phục mật khẩu qua email; quản lý thông tin cá nhân (họ tên, ngày sinh, điện thoại, ảnh đại diện); bình luận và đặt câu hỏi kèm hình ảnh trong bài giảng; thực hiện giao dịch mua khóa học qua cổng thanh toán trung gian Ngân Lượng; tiếp nhận mã kích hoạt 10 ký tự gửi qua email; nhập mã kích hoạt để mở khóa bài giảng; quản lý mục "Khóa học của tôi"; tra cứu lịch sử thanh toán; chấm điểm đánh giá khóa học từ 1 đến 5 điểm.
  2. Phân hệ Giảng viên: Đăng ký trở thành giảng viên; khai báo thông tin tài khoản ngân hàng (gồm tên ngân hàng, số tài khoản từ 16 đến 19 số, chủ tài khoản, chi nhánh); đăng tải thông tin khóa học mới (tên, tóm tắt, giá, giảm giá, ảnh đại diện, danh sách bài giảng nhúng liên kết YouTube) và gửi vào hàng đợi chờ duyệt; quản lý danh sách khóa học chờ duyệt; xem danh sách khóa học đang giảng dạy; theo dõi lịch sử bán khóa học và số lượng học viên ghi danh.
  3. Phân hệ Quản trị viên (Admin): Xem xét nội dung bài giảng và duyệt khóa học (TrangThai = 1); nhập danh sách mã code kích hoạt từ tập tin bảng tính Excel (Code.xlsx); trích xuất báo cáo doanh thu hóa đơn ra tệp Excel (HoaDon.xlsx) và xuất báo cáo tồn kho mã code ra tệp Excel (CodeKH.xlsx).

Nội dung chính theo từng chương

Chương 1. Giới thiệu hệ thống website dạy và học trực tuyến

Chương 1 trình bày tổng quan về thực trạng nhu cầu học tập trong bối cảnh xã hội công nghiệp hóa, chỉ rõ những hạn chế của phương thức giáo dục truyền thống về mặt thời gian và di chuyển. Tác giả xác định đối tượng người dùng mục tiêu, đồng thời thiết lập 6 yêu cầu kỹ thuật cho hệ thống: vận hành trên môi trường web tương thích đa thiết bị, hỗ trợ phân quyền người dùng (Admin, Teacher, Student), nhúng video bài giảng, tích hợp cổng thanh toán trực tuyến và phát triển trên nền framework mã nguồn mở không dùng CMS dựng sẵn.

Chương 2. Tiền xử lý

Chương 2 phân tích công cụ và môi trường công nghệ. Nội dung tập trung giải trình việc lựa chọn PHP và Laravel Framework, so sánh các chỉ số giữa Laravel (16.900 packages, Eloquent ORM, Blade), Symfony (7.500 packages, Propel ORM, Twig) và Zend (6.000 packages). Chương này mô tả chi tiết 10 thư mục cấu trúc gốc của Laravel cùng 4 tuyến đường dẫn chức năng (web.php, api.php, console.php, channels.php) làm nền tảng tổ chức mã nguồn và bảo mật (chống CSRF, SQL Injection, cookie encryption).

Chương 3. Mô hình website dạy và học trực tuyến

Chương 3 thiết lập thiết kế logic và vật lý của hệ thống. Tác giả thiết kế cơ sở dữ liệu tuhoctru_onlinecourse gồm 15 bảng liên kết bằng khóa ngoại với các ràng buộc RESTRICT khi cập nhật và CASCADE khi xóa dữ liệu. Bên cạnh đó, chương này cung cấp sơ đồ Use Case Diagram tổng thể và 22 bảng đặc tả Use Case chi tiết, xác định rõ điều kiện tiên quyết, luồng sự kiện thực thi và điều kiện kết thúc cho từng tác vụ của Học viên, Giảng viên và Quản trị viên.

Chương 4. Hiện thực hóa xử lý

Chương 4 mô tả chi tiết quá trình lập trình chức năng kèm theo hình ảnh giao diện và các đoạn mã nguồn xử lý thực tế:

  • Module xác thực: Xử lý đăng ký người dùng gắn liền với việc sinh mã api_token trả về định dạng JSON; xử lý đăng nhập Local và Google OAuth; quy trình gửi email xác thực tài khoản có chứa liên kết kích hoạt.
  • Module thương mại và kích hoạt: Kết nối giỏ hàng với cổng thanh toán điện tử Ngân Lượng; thuật toán gửi mã kích hoạt 10 ký tự về hộp thư người dùng sau khi giao dịch thành công; giao diện nhập mã code để mở khóa học và cập nhật trạng thái trong bảng hoa_don.
  • Module giảng viên: Xử lý giao diện tạo bài giảng với trường EmbededURL nhúng video YouTube; biểu mẫu khai báo số tài khoản ngân hàng (16 đến 19 số); danh sách khóa học chờ duyệt và lịch sử doanh thu của giảng viên.
  • Module quản trị: Chức năng duyệt bài giảng; cơ chế đọc và nhập dữ liệu mã code từ tệp Excel (Code.xlsx); chức năng kết xuất dữ liệu báo cáo hóa đơn (HoaDon.xlsx) và báo cáo mã code (CodeKH.xlsx).

Đánh giá kết quả và hướng phát triển (Trang 69)

Nội dung tổng kết lại các yêu cầu chính và yêu cầu phụ đã hoàn thành, ghi nhận các điểm tồn tại trong quá trình triển khai thực tế và đề xuất các định hướng nâng cấp hệ thống trong giai đoạn tiếp theo.

Kết quả và đóng góp

Hệ thống đã hiện thực hóa đầy đủ các cấu phần kỹ thuật đặt ra theo hồ sơ thiết kế:

  • Xây dựng thành công cơ sở dữ liệu quan hệ gồm 15 bảng chuẩn hóa trên MySQL, hỗ trợ lưu trữ toàn diện dữ liệu người dùng, phân cấp 3 cấp bậc quyền hạn (level_id: 1 - Admin, 2 - Giảng viên, 3 - Học viên), quản lý nội dung bài giảng, lịch sử giao dịch và đánh giá khóa học.
  • Triển khai hoàn chỉnh 22 Use Case nghiệp vụ từ đăng ký, đăng nhập đa kênh (Local, Google), gửi email kích hoạt, đặt câu hỏi, đánh giá (1-5 điểm), đến quản trị nội dung.
  • Tích hợp cổng thanh toán trực tuyến trung gian Ngân Lượng, vận hành cơ chế phát hành và quản lý mã kích hoạt khóa học gồm 10 ký tự độc bản (unique).
  • Hỗ trợ quản trị viên thao tác dữ liệu hàng loạt thông qua tệp bảng tính Excel: nạp mã code kích hoạt từ file Code.xlsx, trích xuất báo cáo hóa đơn doanh thu (HoaDon.xlsx) và báo cáo tồn kho mã khóa học (CodeKH.xlsx).

Về mặt đóng góp, đề tài chứng minh tính khả thi của việc xây dựng một hệ sinh thái E-learning thương mại điện tử tự chủ bằng Laravel Framework mà không phụ thuộc vào các nền tảng CMS mã nguồn mở có sẵn. Hệ thống kết hợp được cả hai mô hình phân phối: thanh toán trực tuyến qua cổng trung gian và quản lý kích hoạt nội dung qua mã code tự động gửi qua email.

Hạn chế và hướng nghiên cứu tiếp

Căn cứ theo mục "Những vấn đề chưa làm được" và phạm vi ban đầu của văn bản:

  • Tính năng hiển thị khóa học dưới dạng truyền phát video trực tiếp (live video) và cơ chế tự động giao bài tập, theo dõi chi tiết tiến trình học của người dùng cho mỗi buổi học chưa được thể hiện đầy đủ ở phần hiện thực hóa mã nguồn (hệ thống hiện tại chủ yếu tập trung vào cơ chế nhúng liên kết video từ YouTube qua trường EmbededURL).
  • Các phương thức thanh toán truyền thống như Chuyển khoản trực tiếp và Ship COD (được định nghĩa trong bảng thanh_toan) chưa được tự động hóa quy trình đối soát tương tự như cổng thanh toán Ngân Lượng.

Hướng phát triển của đề tài bao gồm việc nghiên cứu tích hợp công nghệ truyền phát video trực tiếp chuyên dụng, xây dựng hệ thống quản lý bài tập và kiểm tra trắc nghiệm đánh giá tiến độ học viên tự động, đồng thời hoàn thiện thêm các cổng thanh toán điện tử bổ trợ.

Giá trị tham khảo

Khóa luận là tài liệu tham khảo phù hợp cho sinh viên chuyên ngành Công nghệ thông tin, Kỹ thuật phần mềm và các nhà phát triển web đang nghiên cứu ứng dụng PHP/Laravel trong bài toán thương mại điện tử kết hợp đào tạo trực tuyến.

Các phần có giá trị thực tiễn cao trong văn bản gồm có:

  • Cấu trúc thiết kế 15 bảng cơ sở dữ liệu quan hệ, thể hiện rõ ràng các ràng buộc khóa ngoại, tính toàn vẹn dữ liệu (RESTRICT, CASCADE) và cơ chế quản lý trạng thái mã kích hoạt.
  • Hệ thống 22 bảng đặc tả Use Case chi tiết với các luồng sự kiện rõ ràng, là mẫu tài liệu phân tích thiết kế hệ thống phần mềm hoàn chỉnh.
  • Mã nguồn và quy trình xử lý thực tế về tích hợp cổng thanh toán Ngân Lượng, cơ chế xác thực Token qua Web API, cùng module đọc/ghi dữ liệu báo cáo bằng tệp Excel trong Laravel Framework.

Câu hỏi thường gặp

1. Cơ sở dữ liệu của hệ thống gồm bao nhiêu bảng và tên định danh là gì?

Cơ sở dữ liệu của hệ thống được xây dựng trên MySQL với tên gọi tuhoctru_onlinecourse, bao gồm đúng 15 bảng: the_loai_khoa_hoc, mang_khoa_hoc, khoa_hoc, bai_giang, cau_hoi, code_khoa_hoc, comment, danh_gia, giang_vien, hoa_don, level, ngan_hang, tai_khoan_ngan_hang, thanh_toan và user.

2. Quy trình thanh toán và kích hoạt khóa học của học viên diễn ra như thế nào?

Học viên chọn khóa học vào giỏ hàng, sau đó chuyển sang cổng trung gian Ngân Lượng để thực hiện thanh toán trực tuyến. Khi giao dịch thành công, hệ thống tự động gửi một email chứa mã code kích hoạt gồm 10 ký tự độc bản. Học viên đăng nhập vào website, truy cập mục "Nhập Code", điền mã nhận được để kích hoạt khóa học và xem toàn bộ bài giảng trong mục "Khóa học của tôi".

3. Giảng viên cần đáp ứng những điều kiện gì để được phép đăng bán khóa học trên website?

Người dùng phải là thành viên đã xác thực email, tiến hành đăng ký trở thành giảng viên bằng cách cung cấp tên hiển thị và tóm tắt bản thân, đồng thời bắt buộc phải khai báo tài khoản ngân hàng (gồm tên ngân hàng, số tài khoản từ 16 đến 19 số, tên chủ tài khoản và chi nhánh). Khi tạo khóa học, nội dung phải trải qua quá trình kiểm duyệt của Admin trước khi được mở bán chính thức.

4. Hệ thống phân quyền người dùng thành mấy cấp bậc và quản lý qua bảng nào?

Hệ thống phân quyền người dùng thành 3 cấp bậc được định nghĩa trong bảng level: Cấp 1 là Quản trị viên (Admin), Cấp 2 là Giảng viên (Teacher) và Cấp 3 là Người dùng thường/Học viên (Student). Khi người dùng đăng ký tài khoản mới qua bảng user, trường level_id được gán mặc định là 3.

5. Quản trị viên (Admin) quản lý kho mã khóa học và trích xuất dữ liệu bằng phương thức nào?

Admin nạp danh sách mã kích hoạt hàng loạt cho các khóa học thông qua việc tải lên tệp bảng tính Excel có tên Code.xlsx. Khi cần thống kê, Admin sử dụng chức năng kết xuất hệ thống để tải về hai tệp báo cáo dạng Excel riêng biệt: tệp HoaDon.xlsx (báo cáo doanh thu) và tệp CodeKH.xlsx (báo cáo số lượng mã code tồn kho).

Kết luận

Khóa luận tốt nghiệp của Nguyễn Hoàng Tuấn và Tiêu Khánh Duy đã hoàn thành việc xây dựng một hệ thống website dạy và học trực tuyến hoàn chỉnh trên nền tảng PHP và Laravel Framework. Đề tài giải quyết bài bản từ khâu phân tích 22 ca sử dụng, thiết kế cơ sở dữ liệu quan hệ 15 bảng đến triển khai các tính năng then chốt như xác thực API Token, tích hợp cổng thanh toán Ngân Lượng và quản lý kích hoạt bài giảng qua mã code. Đây là tài liệu kỹ thuật có giá trị tham khảo rõ ràng cho sinh viên và lập trình viên trong việc nghiên cứu mô hình ứng dụng web đào tạo trực tuyến thương mại hóa.