GIỚI THIỆU ĐỀ TÀI
Giới thiệu chung
Trong kỷ nguyên công nghệ thông tin phát triển mạnh mẽ, việc sử dụng nền tảng giáo dục trực tuyến đã trở thành xu hướng phổ biến Các khoá học trực tuyến ngày càng được ưa chuộng, trở thành lựa chọn hàng đầu cho việc học tập và đào tạo, mang lại sự thuận tiện và tiết kiệm thời gian cho người học.
Trong bối cảnh chia sẻ tri thức, mạng xã hội đã trở thành công cụ phổ biến cho nhiều người muốn đóng góp kiến thức Tuy nhiên, việc này thường dẫn đến sự phân mảng và thiếu tổ chức, gây khó khăn cho việc tìm kiếm và sử dụng thông tin một cách đáng tin cậy.
Khóa luận tốt nghiệp với đề tài "Xây dựng hệ thống quản lý khóa học trực tuyến" được chọn nhằm giải quyết các vấn đề hiện tại trong giáo dục Mục tiêu chính của khóa luận là phát triển một hệ thống quản lý khóa học trực tuyến hiệu quả, đáp ứng nhu cầu ngày càng tăng của học viên và giảng viên.
Lý do chọn đề tài
Khoá luận này được lựa chọn vì sự thịnh hành và tiềm năng phát triển của khoá học trực tuyến Nhu cầu học tập từ xa ngày càng gia tăng, việc tích hợp hệ thống quản lý khoá học trực tuyến sẽ mang lại nhiều lợi ích cho cả tổ chức giáo dục và người học.
Việc áp dụng máy móc và internet trong quản lý khóa học trực tuyến mang lại nhiều lợi ích, bao gồm quản lý tư liệu học tập, tạo điều kiện giao tiếp trực tuyến giữa giảng viên và sinh viên, đánh giá thành tích học tập, và phân tích dữ liệu nhằm nâng cao chất lượng giảng dạy Để đáp ứng các yêu cầu và mục tiêu của các bên liên quan, cần có một hệ thống quản lý chuyên nghiệp và tối ưu.
Phạm vi nghiên cứu và ưu nhược điểm
Khóa luận này tập trung vào việc xây dựng hệ thống quản lý khóa học online với các tính năng quan trọng như quản lý tài liệu, tương tác giữa giảng viên và sinh viên, đánh giá kết quả học tập và phân tích dữ liệu Đề tài nhấn mạnh phát triển hệ thống quản lý khóa học qua internet cho môi trường di động, nhằm đáp ứng nhu cầu ngày càng cao của người học Việc triển khai hệ thống trên nền tảng mobile không chỉ mang lại khả năng truy cập linh hoạt mà còn nâng cao tính tương tác, từ đó cải thiện trải nghiệm học tập cho sinh viên.
Trong quá trình triển khai, khoá luận đã phát hiện ra một số điểm sáng của hệ thống quản lý khoá học thông qua internet, bao gồm:
Sự tổ chức và cấu trúc tri thức đóng vai trò quan trọng trong việc giúp người học tiếp cận thông tin một cách rõ ràng và có hệ thống, từ đó tạo điều kiện cho việc học tập hiệu quả hơn Việc tổ chức này không chỉ giúp người học đi từng bước một mà còn đảm bảo rằng họ có phương pháp và kế hoạch học tập hợp lý.
Chất lượng kiến thức trong hệ thống quản lý được đảm bảo nhờ vào việc các bài giảng được thiết kế và phát triển bởi các chuyên gia hàng đầu trong lĩnh vực, từ đó mang đến tri thức chính xác và chất lượng cao cho người học.
Hệ thống quản lý khoá học trực tuyến tạo điều kiện cho sự tương tác hiệu quả giữa giảng viên và sinh viên, giúp nâng cao hỗ trợ và giao tiếp trong quá trình học tập.
Hệ thống đánh giá thành tích học tập cung cấp công cụ hữu ích cho việc theo dõi tiến trình học tập của sinh viên, đồng thời đánh giá hiệu quả của các khóa học.
Mặc dù hệ thống quản lý khoá học trực tuyến mang lại nhiều lợi ích, nhưng nó cũng đối mặt với một số nhược điểm:
− Khả năng sử dụng công nghệ của người dung bị hạn chế
− Khó khăn và tốn kém trong việc thay đổi, nâng cấp hệ thống
− Khả năng tương tác giới hạn
Khoá luận này nhằm phát triển một hệ thống quản lý khoá học trực tuyến trên nền tảng di động, tận dụng tính linh hoạt và tiện lợi của công nghệ để khắc phục những hạn chế trong việc chia sẻ tri thức qua mạng xã hội Hệ thống sẽ cung cấp tổ chức, cấu trúc, tương tác và đánh giá thành tích học tập một cách hiệu quả Chúng tôi tin rằng nghiên cứu và phát triển hệ thống này sẽ nâng cao chất lượng giáo dục và cải thiện việc truyền đạt tri thức qua các khoá học trực tuyến.
Chức năng chính
Hệ thống quản lý khoá học trực tuyến được xây dựng sẽ bao gồm các chức năng chính sau:
+ Đăng nhập: Người dùng có thể sử dụng tài khoản đã đăng ký trước đó để đăng nhập vào hệ thống
+ Đăng ký: Người dùng chưa từng sử dụng hệ thống có thể đăng ký tài khoản để truy cập vào ứng dụng
Người dùng có thể dễ dàng thay đổi mật khẩu hiện tại của mình và cập nhật thông tin cá nhân một cách linh hoạt.
− Quản lý trang cá nhân:
+ Xem lượt học viên đã tham gia khoá học: Hiển thị thông tin về số lượng học viên đã tham gia vào một khoá học cụ thể
+ Xem danh sách các khoá học hiện có: Người dùng có thể xem danh sách các khoá học đang được cung cấp trên hệ thống
+ Xem danh sách các khoá học đã tham gia: Người dùng có thể xem danh sách các khoá học mà họ đã đăng ký và tham gia học
+ Xem, thêm, xoá, sửa khoá học: Quản trị viên có quyền xem, thêm, xoá và chỉnh sửa thông tin về các khoá học trong hệ thống
− Tính năng về bài giảng:
+ Xem, thêm, xoá, sửa bài giảng: Người dùng có thể xem danh sách bài giảng trong khoá học, thêm mới, xoá hoặc chỉnh sửa các bài giảng
− Tính năng tương tác với khóa học:
+ Bình luận: Người dùng có thể gửi nhận xét và phản hồi về nội dung của khoá học
+ Đánh giá khoá học: Người dùng có thể đánh giá và đưa ra đánh giá về chất lượng và trải nghiệm của khoá học
− Tính năng về các bài kiểm tra:
Người dùng có khả năng tạo và cập nhật các bài kiểm tra cho khóa học, trong khi đó, học viên có thể thực hiện các bài kiểm tra để đánh giá kiến thức đã tiếp thu.
− Chia sẻ livestream: Cho phép người dùng chia sẻ và tham gia vào các buổi trực tiếp trên hệ thống
− Recommendation system gợi ý khoá học: Hệ thống sẽ đề xuất các khoá học dựa trên đánh giá và sở thích của người dung dựa trên thuật toán Collaborative filtering
− Thanh toán khóa học qua các cổng thanh toán: Hỗ trợ người dùng thanh toán phí khóa học thông qua các cổng thanh toán trực tuyến
Ứng dụng cung cấp thông tin chi tiết về các quy định và chính sách, cùng với hỗ trợ cho người dùng trong quá trình sử dụng Hệ thống quản lý khóa học trực tuyến tích hợp nhiều chức năng, bao gồm quản lý tài khoản, quản lý khóa học, và tương tác với nội dung khóa học, nhằm mang đến trải nghiệm học tập toàn diện cho người dùng.
Công nghệ sử dụng
Trong quá trình xây dựng hệ thống quản lý khoá học trực tuyến, khoá luận sử dụng các công nghệ sau:
Khoá luận sử dụng Flutter làm công nghệ front-end chính, một framework phát triển ứng dụng di động đa nền tảng do Google phát triển Flutter cho phép xây dựng ứng dụng di động trên cả Android và iOS từ một mã nguồn duy nhất, mang lại khả năng phát triển nhanh chóng, giao diện đẹp mắt và hiệu suất cao cho các ứng dụng di động.
The thesis utilizes NestJS as the primary backend technology, which is a server-side application framework built on Node.js and Express.js It offers an architecture similar to Angular and employs TypeScript, enabling the development of a robust, structured, and maintainable backend system Additionally, Python is chosen for implementing the Collaborative Filtering algorithm in the recommendation system.
Khoá luận sử dụng MongoDB và Firebase để lưu trữ dữ liệu, với MongoDB là hệ quản trị cơ sở dữ liệu phi quan hệ (NoSQL) linh hoạt và mở rộng, cho phép lưu trữ và truy vấn dữ liệu hiệu quả Firebase cung cấp nền tảng phát triển ứng dụng di động đám mây, bao gồm cơ sở dữ liệu thời gian thực và các dịch vụ liên quan, giúp việc xây dựng ứng dụng di động trở nên nhanh chóng và dễ dàng.
Quản lý mã nguồn là yếu tố quan trọng trong phát triển hệ thống, và khoá luận này sử dụng Github để thực hiện điều đó Github cung cấp môi trường hợp tác hiệu quả, cho phép nhóm phát triển làm việc cùng nhau, theo dõi các thay đổi và quản lý phiên bản mã nguồn một cách dễ dàng.
Việc áp dụng Figma, Flutter, NestJS, MongoDB, Firebase và Github trong khoá luận giúp xây dựng hệ thống quản lý khoá học trực tuyến một cách hiệu quả và linh hoạt, đồng thời đảm bảo tính ổn định, tương thích và khả năng mở rộng của hệ thống.
Cấu trúc khoá luận
Khóa luận này được cấu trúc thành các chương chính, mỗi chương tập trung vào một khía cạnh thiết yếu trong việc phát triển hệ thống quản lý khóa học trực tuyến Dưới đây là tóm tắt nội dung từng chương.
Chương 1: Giới thiệu đề tài
Chương 1 của khoá luận trình bày bối cảnh, mục tiêu, phạm vi và phương pháp nghiên cứu, cung cấp cái nhìn tổng quan về vấn đề nghiên cứu và giải pháp đề xuất Ngoài ra, chương này còn giới thiệu công nghệ sử dụng và cấu trúc tổng quan của khoá luận.
Chương 2: Cơ sở lý thuyết
Chương 2 trình bày cơ sở lý thuyết cần thiết cho việc xây dựng hệ thống quản lý khóa học trực tuyến, bao gồm các khái niệm và khung lý thuyết về quản lý khóa học, công nghệ ứng dụng, cơ sở dữ liệu, cũng như các yếu tố quan trọng khác liên quan đến việc triển khai hệ thống hiệu quả.
Chương 3: Recommendation System cho tính năng đề xuất khoá học dựa trên Collaborative Filtering
Chương 3 tập trung vào việc xây dựng Hệ thống Đề xuất (Recommendation System) cho tính năng gợi ý khóa học dựa trên phương pháp Collaborative Filtering Bài viết đã trình bày tổng quan về Hệ thống Đề xuất và phương pháp Collaborative Filtering, giúp người dùng tìm kiếm và khám phá các khóa học phù hợp Phương pháp này dựa trên thông tin đánh giá và thói quen học tập của người dùng để đưa ra những gợi ý khóa học tương tự Quy trình triển khai Hệ thống Đề xuất bao gồm việc xác định người dùng, tìm kiếm người dùng tương tự và đề xuất khóa học, với các bước này đóng vai trò quan trọng trong việc xây dựng một hệ thống đề xuất hiệu quả và chính xác.
Chương 4: Phân tích và thiết kế
Chương 4 tập trung vào thiết kế hệ thống quản lý khóa học trực tuyến, bao gồm thiết kế dữ liệu và giao diện từng màn hình Chương này đóng vai trò quan trọng trong việc xác định cấu trúc dữ liệu và giao diện người dùng cho hệ thống, đồng thời cung cấp hướng dẫn cho việc triển khai và phát triển hệ thống.
- Chương 5: Kết luận tổng hợp kết quả và thành tựu quan trọng trong thời gian triển khai nghiên cứu
CƠ SỞ LÝ THUYẾT
Learning Management System (Hệ thống quản lý học tập)
2.1.1 Giới thiệu chung về LMS – Hệ thống Quản lý Học tập
Hệ thống Quản lý Học tập (LMS) là phần mềm hỗ trợ quản lý và cung cấp tài liệu học tập, cho phép người dùng tương tác trong quá trình học trực tuyến LMS đóng vai trò quan trọng trong giáo dục, tạo điều kiện thuận lợi cho giảng viên, học sinh và quản trị viên tương tác và tiếp cận tài liệu học tập một cách linh hoạt.
Hệ thống Quản lý Học tập (LMS) là nền tảng phần mềm hỗ trợ tổ chức giáo dục trong việc tạo, tổ chức và quản lý các khóa học trực tuyến Nó cung cấp công cụ và tài nguyên cần thiết để phát triển nội dung học tập, tương tác với học viên, theo dõi tiến độ học tập và đánh giá kết quả học tập.
Trong thời đại công nghệ số, Hệ thống Quản lý Học tập (LMS) đã trở thành công cụ quan trọng trong giáo dục, giúp việc học trực tuyến trở nên phổ biến và tiện lợi LMS tạo điều kiện cho học tập linh hoạt, giảm thiểu thời gian và khoảng cách địa lý, đồng thời tăng cường khả năng tương tác giữa giảng viên và học viên.
Việc sử dụng Hệ thống Quản lý Học tập (LMS) trong giảng dạy và học tập mang lại nhiều lợi ích đáng kể cho cả giảng viên và học viên Một số ưu điểm nổi bật bao gồm tiết kiệm thời gian và công sức trong quản lý khóa học, tính linh hoạt cho học viên khi truy cập tài liệu từ bất kỳ đâu, khả năng tương tác và phản hồi giữa giảng viên và học viên, quản lý tiến độ học tập và đánh giá kết quả hiệu quả, cũng như việc tiếp cận và chia sẻ tài liệu học tập một cách nhanh chóng Hơn nữa, LMS còn tăng cường tính tương tác và cộng tác giữa các thành viên trong cộng đồng học tập.
Hệ thống Quản lý Học tập (LMS) là công cụ quan trọng trong việc nâng cao chất lượng giáo dục trực tuyến Nhờ vào công nghệ tiên tiến, LMS tạo ra môi trường học tập thuận lợi, giúp cải thiện trải nghiệm giảng dạy và học tập, đồng thời phát triển kiến thức cho cộng đồng.
2.1.2 Các thành phần cấu tạo
Hệ thống Quản lý Học tập (LMS) bao gồm nhiều thành phần quan trọng, tạo ra môi trường học tập trực tuyến linh hoạt và đầy đủ chức năng Những thành phần này hỗ trợ việc cung cấp, quản lý và tương tác với nội dung học tập, đồng thời giúp quản lý học viên và đánh giá kết quả học tập Một trong những thành phần nền tảng là Giao diện người dùng (UI), đóng vai trò quan trọng trong việc mang lại trải nghiệm học tập dễ dàng và thân thiện, bao gồm các phần như trang chủ, trang khóa học, trang bài giảng, trang tương tác, và các công cụ hỗ trợ khác.
Giao diện người dùng của hệ thống quản lý học tập (LMS) cần được thiết kế trực quan và thân thiện, đảm bảo tính tương thích trên nhiều thiết bị và trình duyệt, giúp học viên tiếp cận nội dung học tập một cách hiệu quả Cơ sở dữ liệu (Database) trong LMS đóng vai trò quan trọng trong việc quản lý và lưu trữ thông tin về khóa học, học viên, tài liệu và kết quả học tập Để đảm bảo tính khả dụng, xác thực và an toàn dữ liệu, hệ thống LMS cần sử dụng các hệ quản trị cơ sở dữ liệu hiệu suất cao như MongoDB, PostgreSQL hay MySQL Cơ sở dữ liệu không chỉ lưu trữ mà còn tổ chức các thông tin liên quan đến người dùng, khóa học, bài giảng và bài kiểm tra, góp phần quan trọng vào sự thành công của hệ thống LMS.
Cơ sở dữ liệu của LMS lưu trữ thông tin người dùng như tên, địa chỉ email, mật khẩu và quyền truy cập Nhờ vào cơ sở dữ liệu này, hệ thống có thể xác thực và quản lý thông tin người dùng một cách hiệu quả.
Cơ sở dữ liệu LMS lưu trữ thông tin chi tiết về khóa học như tiêu đề, mô tả, ngày bắt đầu và kết thúc, tác giả, tài liệu học tập, cùng các thông tin liên quan khác, giúp quản lý khóa học một cách chính xác và tiện lợi.
Cơ sở dữ liệu LMS lưu trữ thông tin chi tiết về các bài giảng, bao gồm tiêu đề, nội dung, tác giả, thời gian tạo và các thông tin liên quan khác, giúp hệ thống quản lý và hiển thị bài giảng một cách hiệu quả và thuận tiện.
Hệ thống quản lý học tập (LMS) lưu trữ thông tin bài kiểm tra, bao gồm nội dung câu hỏi, đáp án, độ khó, thời gian và điểm số, giúp theo dõi sự tiến bộ của người học Hệ thống quản lý và xử lý dữ liệu đóng vai trò quan trọng trong việc tổ chức và quản lý dữ liệu, với các chức năng như lưu trữ, truy xuất, cập nhật và xóa dữ liệu, đồng thời xử lý các yêu cầu từ người dùng LMS cung cấp nhiều tính năng hỗ trợ quản lý khóa học, tương tác học tập và đánh giá sự tiến bộ của người tham gia.
▪ Quản lý khóa học: cho phép người có quyền được tạo mới, chỉnh sửa và xoá các nội dung của khóa học, quản lý danh sách học viên
▪ Tương tác học tập: bao gồm bài giảng trực tuyến, diễn đàn thảo luận, tư vấn trực tuyến, bài tập và bài kiểm tra trực tuyến
Hệ thống Quản lý Học tập cho phép đánh giá và theo dõi tiến trình học tập của học viên, cung cấp phản hồi và ghi nhận kết quả Các thành phần cấu thành của hệ thống này đóng vai trò quan trọng trong việc tạo ra môi trường học tập trực tuyến linh hoạt, đáp ứng nhu cầu của người dùng Sự liên kết giữa các thành phần đảm bảo việc cung cấp, quản lý và tương tác trong quá trình học tập một cách hiệu quả và thuận tiện.
2.1.3 Mô hình triển khai và quản lý LMS
2.1.3.1 Mô hình triển khai truyền thống
Mô hình triển khai truyền thống của hệ thống Quản lý Học tập thường được phát triển trên hệ thống riêng của tổ chức Trong mô hình
29 này, các máy chủ và cơ sở dữ liệu được triển khai và quản lý trong môi trường nội bộ của tổ chức Ưu điểm:
• Kiểm soát hoàn toàn về an ninh và quyền riêng tư
• Tùy chỉnh và điều chỉnh hệ thống theo nhu cầu cụ thể của tổ chức
• Đáp ứng nhanh chóng các yêu cầu và thay đổi của tổ chức
• Đòi hỏi đầu tư cao cho cơ sở hạ tầng và phần cứng
• Yêu cầu kiến thức kỹ thuật cao để triển khai và quản lý hệ thống
• Giới hạn về khả năng mở rộng và độ linh hoạt
2.1.3.2 Mô hình triển khai dựa trên đám mây
Mô hình triển khai LMS dựa trên đám mây sử dụng dịch vụ đám mây để quản lý hệ thống, có thể triển khai trên nền tảng đám mây công cộng hoặc riêng tư Ưu điểm của mô hình này bao gồm tính linh hoạt, khả năng mở rộng và tiết kiệm chi phí cho tổ chức.
• Linh hoạt và mở rộng dễ dàng theo nhu cầu
• Chi phí đầu tư và nâng cấp có thể dễ dàng kiểm soát, giảm bớt
• Dễ dàng tham gia từ bất kỳ công cụ và địa điểm nào có kết nối Internet
• Phụ thuộc vào dịch vụ đám mây và nhà cung cấp
• Hạn chế về tùy chỉnh và điều chỉnh hệ thống theo nhu cầu cụ thể của tổ chức
• Quản lý an ninh và quyền riêng tư dựa trên chính sách của nhà cung cấp đám mây
2.1.3.3 Quản lý và bảo trì hệ thống LMS
Quản lý và bảo trì hệ thống LMS là quá trình thiết yếu để đảm bảo hoạt động ổn định, hiệu suất cao và khả năng mở rộng của hệ thống Các hoạt động này bao gồm việc theo dõi hiệu suất, cập nhật phần mềm, sửa chữa lỗi và tối ưu hóa tài nguyên để hệ thống luôn hoạt động hiệu quả.
Giám sát hệ thống LMS là quá trình theo dõi và kiểm tra các thành phần cùng tài nguyên của hệ thống để đảm bảo hoạt động ổn định và xử lý sự cố một cách kịp thời.
Flutter
Flutter là một framework mã nguồn mở và miễn phí do Google phát triển từ tháng 5 năm 2017, cho phép xây dựng ứng dụng di động gốc bằng một cơ sở mã duy nhất Điều này giúp lập trình viên sử dụng cùng một ngôn ngữ và cấu trúc mã để phát triển ứng dụng trên cả iOS và Android, mang lại sự đơn giản và hiệu quả trong quá trình phát triển.
− Flutter bao gồm hai phần quan trọng:
Bộ công cụ phát triển phần mềm (SDK) cung cấp các công cụ cần thiết để phát triển ứng dụng SDK bao gồm trình biên dịch, giúp chuyển đổi mã nguồn của chúng ta thành mã máy gốc cho các hệ điều hành iOS và Android.
Flutter cung cấp một thư viện giao diện người dùng với tính tái sử dụng cao, bao gồm nhiều thành phần như nút, hộp văn bản và thanh trượt Người dùng có thể dễ dàng cá nhân hóa các thành phần này để đáp ứng nhu cầu cụ thể của ứng dụng.
Để phát triển ứng dụng với Flutter, chúng ta sử dụng ngôn ngữ lập trình Dart, được Google giới thiệu vào tháng 10 năm 2011 và đã trải qua nhiều cải tiến Dart chú trọng vào việc phát triển giao diện người dùng, cho phép xây dựng ứng dụng web và di động Đối với những ai đã quen thuộc với lập trình, Dart dễ dàng tiếp cận nhờ vào thiết kế hướng đối tượng (OOP) và cú pháp tương tự như JavaScript.
Hình 2.1: Cấu trúc code dart cơ bản
NestJs
Trong chương Cơ sở lý thuyết, khoá luận trình bày về NestJS, một framework mạnh mẽ và hiệu quả cho phát triển ứng dụng Node.js NestJS được xây dựng dựa trên Express.js và sử dụng TypeScript, mang lại một phương pháp hướng đối tượng cho phát triển backend.
Khoá luận này khám phá các tính năng và lợi ích nổi bật của NestJS trong việc phát triển hệ thống quản lý khoá học trực tuyến, nhấn mạnh khả năng mở rộng, hiệu suất cao và kiến trúc linh hoạt mà framework này mang lại.
NestJS khuyến khích việc áp dụng kiến trúc hướng đối tượng (OOP) để phân chia ứng dụng thành các module, controller và service, từ đó giúp tổ chức mã nguồn một cách có cấu trúc, rõ ràng và dễ bảo trì.
NestJS cung cấp cấu trúc mã đồng nhất và mô-đun hóa cho ứng dụng, giúp triển khai và bảo trì nhanh chóng, đồng thời mở rộng khả năng phát triển ứng dụng một cách dễ dàng.
Dependency Injection (DI) trong NestJS giúp quản lý phụ thuộc giữa các thành phần của ứng dụng một cách linh hoạt và dễ dàng, từ đó hỗ trợ kiểm tra đơn vị và tạo ra các thành phần tái sử dụng hiệu quả.
NestJS cung cấp middleware và pipes để quản lý các yêu cầu trước và sau khi chúng đi qua các route, giúp dễ dàng thực hiện xác thực, ghi nhật ký và kiểm tra dữ liệu đầu vào một cách có tổ chức.
NestJS cho phép tích hợp dễ dàng với các công nghệ phổ biến như TypeORM, MongoDB, Redis và GraphQL, mang lại sự thuận tiện và linh hoạt trong việc làm việc với cơ sở dữ liệu và các công cụ khác.
Trong hệ thống quản lý khoá học trực tuyến, việc sử dụng NestJS để triển khai các module, controller và service cho quản lý khoá học, người dùng và bình luận mang lại sự tổ chức mã nguồn rõ ràng NestJS không chỉ giúp mở rộng tính năng mà còn tạo điều kiện thuận lợi cho việc tích hợp với các công nghệ khác.
Với NestJS, việc phát triển hệ thống quản lý khóa học trực tuyến trở nên hiệu quả hơn, giúp các lập trình viên tập trung vào việc cải tiến tính năng và cung cấp một ứng dụng ổn định, mạnh mẽ và dễ dàng bảo trì.
Web Socket, Socket.IO
Web Socket là giao thức hai chiều (full-duplex) cho phép thiết lập kết nối liên tục và tương tác hiệu quả giữa máy khách và máy chủ trên mạng web.
Nó cho phép truyền dữ liệu theo thời gian thực qua kết nối liên tục, nâng cao khả năng tương tác và đồng bộ giữa hai bên.
Trong chương Cơ sở lý thuyết, khoá luận trình bày về Web Socket và khả năng của nó trong phát triển hệ thống quản lý khoá học trực tuyến Bài viết giải thích cách Web Socket hoạt động, giao thức trao đổi thông điệp, và những lợi ích của việc sử dụng Web Socket trong ứng dụng Việc sử dụng Web Socket cho phép thiết lập kết nối liên tục giữa client và server, giúp truyền tải thông tin nhanh chóng và hiệu quả Điều này đặc biệt quan trọng trong hệ thống quản lý khoá học, nơi cần cập nhật thông tin, thông báo và tương tác real-time giữa học viên và giảng viên.
Trong khoá luận này, chúng tôi đã sử dụng Socket.IO để triển khai tính năng bình luận trong hệ thống quản lý khoá học trực tuyến Socket.IO là một thư viện mã nguồn mở giúp tạo và quản lý kết nối WebSocket một cách hiệu quả trên các ứng dụng web.
Socket.IO trong khoá luận cho phép thiết lập kết nối hai chiều giữa client và server, hỗ trợ truyền tải thông điệp thời gian thực Nhờ vào Socket.IO, khoá luận đã phát triển một hệ thống bình luận đa người dùng, cho phép người dùng gửi và nhận thông điệp mà không cần làm mới trang.
Socket.IO cho phép người dùng gửi bình luận, truyền tải thông điệp đến máy chủ và phát trực tiếp đến những người dùng khác trên trang web Điều này mang lại trải nghiệm tương tác và giao tiếp thời gian thực, giúp người dùng nhận thấy và phản hồi ngay lập tức.
Trong các chương tiếp theo, khoá luận sẽ hướng dẫn chi tiết cách sử dụng Socket.IO để triển khai tính năng bình luận trong hệ thống quản lý khóa học trực tuyến Bài viết sẽ mô tả quy trình cài đặt và cấu hình Socket.IO, xác định các sự kiện và trạng thái liên quan đến tính năng bình luận, cũng như cách xử lý và truyền thông điệp giữa các người dùng.
Web RTC
Trong chương Cơ sở lý thuyết, khoá luận trình bày về WebRTC (Web Real-Time Communication) và ứng dụng của nó trong việc triển khai tính năng chia sẻ livestream cho hệ thống quản lý khoá học trực tuyến WebRTC là công nghệ mã nguồn mở, cho phép truyền tải dữ liệu trực tiếp và thời gian thực giữa các trình duyệt web và ứng dụng di động, mang lại trải nghiệm tương tác tốt hơn cho người dùng.
Khóa luận khám phá khả năng của WebRTC trong việc thiết lập kết nối peer-to-peer giữa các máy khách, cho phép truyền tải âm thanh, video và dữ liệu trực tuyến Nhờ vào WebRTC, khóa luận có thể triển khai tính năng chia sẻ livestream, giúp giảng viên truyền trực tiếp nội dung giảng dạy và học viên theo dõi nội dung đó một cách thời gian thực.
Thông qua WebRTC, giảng viên có thể bắt đầu livestream, cho phép truyền tải trực tiếp dữ liệu âm thanh và video từ máy giảng viên đến các máy học viên Điều này giúp hiển thị nội dung livestream ngay lập tức, tạo ra trải nghiệm tham gia hấp dẫn cho người học.
37 gia lớp học trực tuyến tương tự như lớp học truyền thống, nâng cao tính tương tác và tiếp cận thông tin ngay trong thời gian thực
Dưới đây là các bước tổng quát về cách sử dụng WebRTC mà khoá luận sử dụng để triển khai tính năng livestream:
1 Xác định vai trò và nhiệm vụ của các thành phần: a Giảng viên: Sẽ chia sẻ livestream từ máy tính hoặc thiết bị di động b Học viên: Sẽ xem livestream trên máy tính hoặc thiết bị di động
2 Cài đặt & cấu hình WebRTC:
Tạo một kết nối WebRTC giữa máy giảng viên và các máy học viên bằng cách sử dụng API WebRTC trong trình duyệt web
Xác định các thông tin cần thiết như địa chỉ IP, cổng, và giao thức truyền thông để tạo kết nối
3 Truyền dữ liệu âm thanh và video từ giảng viên đến học viên:
Giảng viên sử dụng camera và microphone để ghi âm và video
Sử dụng API WebRTC để truyền dữ liệu âm thanh và video từ giảng viên đến các học viên đang kết nối
Các học viên sẽ nhận và hiển thị dữ liệu âm thanh và video trong thời gian thực
4 Xử lý đồng bộ và tương tác giữa giảng viên và học viên:
Để đảm bảo sự đồng bộ giữa giảng viên và học viên, cần xử lý hiệu quả việc truyền tải thông tin livestream, giúp các học viên nhận được nội dung cùng một lúc mà không gặp phải độ trễ lớn.
Xây dựng các chức năng tương tác như chat, hỏi đáp, và đánh giá giúp học viên kết nối trực tiếp với giảng viên trong quá trình livestream, tạo ra một trải nghiệm học tập sinh động và hiệu quả hơn.
Hình 2.2.1.5 : Thành phần của Web RTC
Firebase Storage
Firebase Storage là dịch vụ lưu trữ đám mây mạnh mẽ và dễ sử dụng từ Firebase, cho phép người dùng lưu trữ và quản lý an toàn nhiều loại dữ liệu đa phương tiện cũng như các tệp tin khác trên đám mây của Google.
Firebase Storage cung cấp nhiều lợi ích quan trọng khi sử dụng trong hệ thống quản lý khoá học trực tuyến Dưới đây là một số điểm nổi bật:
• Dễ dàng tích hợp: Firebase Storage tích hợp tốt với các dịch vụ Firebase khác, cho phép chúng ta sử dụng chung các tài khoản, xác thực người dùng
39 và quản lý dự án Điều này giúp đơn giản hóa việc phát triển và quản lý ứng dụng của chúng ta
Firebase Storage cung cấp tính bảo mật cao với các tính năng như quyền truy cập dựa trên vai trò, kiểm soát chia sẻ tài nguyên và xác thực người dùng Những tính năng này đảm bảo rằng chỉ những người được ủy quyền mới có quyền truy cập và tải xuống tệp tin.
Firebase Storage sử dụng hạ tầng mạng toàn cầu của Google, mang đến tốc độ truy cập nhanh và độ tin cậy cao cho người dùng.
Dữ liệu của chúng ta được lưu trữ trên nhiều vị trí vật lý để luôn được sẵn sàng và khả năng chịu lỗi
Mở rộng linh hoạt cho phép chúng ta dễ dàng tăng cường dung lượng lưu trữ, chỉ phải trả tiền cho những tài nguyên thực sự sử dụng.
Firebase Storage là giải pháp lý tưởng để lưu trữ tệp tin ảnh và video trong hệ thống quản lý khoá học trực tuyến Khi giảng viên tải lên các tệp tin này, chúng sẽ được lưu trữ an toàn trên Firebase Storage, cho phép học viên dễ dàng truy cập và xem thông qua ứng dụng di động hoặc trang web của hệ thống.
Firebase Storage giúp quản lý và truy xuất tệp tin đa phương tiện trong hệ thống quản lý khóa học trực tuyến một cách dễ dàng và đáng tin cậy.
MongoDB
Trong chương Cơ sở lý thuyết, khoá luận trình bày về MongoDB, một hệ quản trị cơ sở dữ liệu phi quan hệ mã nguồn mở, nổi bật với tính linh hoạt MongoDB được phát triển để lưu trữ và xử lý dữ liệu không có cấu trúc, đồng thời có khả năng mở rộng quy mô hiệu quả.
Khoá luận này khám phá các đặc điểm nổi bật và lợi ích của MongoDB trong việc phát triển hệ thống quản lý khoá học trực tuyến, nhấn mạnh khả năng mở rộng, tính linh hoạt và hiệu suất cao của cơ sở dữ liệu này.
MongoDB hỗ trợ lưu trữ dữ liệu không có cấu trúc (NoSQL), giúp đơn giản hóa quá trình phát triển và mở rộng hệ thống một cách hiệu quả.
Chúng ta không cần định nghĩa cấu trúc bảng trước và có thể linh hoạt thêm hoặc xóa các trường dữ liệu
MongoDB cung cấp khả năng mở rộng linh hoạt, cho phép người dùng dễ dàng thêm các node mới vào cụm để xử lý khối lượng dữ liệu lớn Điều này giúp đáp ứng nhu cầu tải cao mà không làm gián đoạn dịch vụ, đảm bảo hiệu suất ổn định cho các ứng dụng.
MongoDB nổi bật với tính linh hoạt, cho phép thực hiện nhiều loại truy vấn và tìm kiếm phong phú Người dùng có thể thực hiện các truy vấn phức tạp và tìm kiếm dựa trên tiêu chí linh hoạt, giúp truy xuất dữ liệu một cách hiệu quả.
MongoDB dễ dàng tích hợp với các ngôn ngữ lập trình phổ biến như JavaScript, Node.js và Python, cho phép phát triển ứng dụng và tương tác hiệu quả với cơ sở dữ liệu Trong hệ thống quản lý khoá học trực tuyến, MongoDB lưu trữ thông tin về người dùng, khoá học, bình luận và tài liệu khác Với dữ liệu không có cấu trúc, MongoDB mang lại tính linh hoạt cao trong việc thêm, sửa đổi và truy xuất thông tin liên quan đến khoá học và người dùng.
Với MongoDB, việc phát triển hệ thống quản lý khóa học trực tuyến trở nên đơn giản và hiệu quả, giúp lưu trữ và truy xuất dữ liệu linh hoạt và nhanh chóng.
Tích hợp cổng thanh toán VNPAY
Trong chương Cơ sở lý thuyết, khoá luận trình bày quá trình tích hợp cổng thanh toán VNPAY vào hệ thống quản lý khoá học trực tuyến VNPAY, một trong những cổng thanh toán hàng đầu tại Việt Nam, mang đến giải pháp thanh toán trực tuyến an toàn và tiện lợi cho cả doanh nghiệp và người dùng.
Về cơ bản, việc sử dụng tích hợp vnpay được diễn ra như sau:
Hình 2.8.1: Sơ đồ tuần tự VNPay
Sơ đồ tuần tự của VNPAY là biểu đồ mô tả quá trình giao tiếp và xử lý dữ liệu giữa các thành phần trong hệ thống thanh toán Biểu đồ này giúp người dùng hiểu rõ cách các thành phần tương tác và truyền thông tin để thực hiện giao dịch thanh toán hiệu quả.
Sơ đồ tuần tự của VNPAY thường bao gồm các bước chính như sau:
1 Người dùng tạo yêu cầu thanh toán trên ứng dụng hoặc trang web
2 Yêu cầu thanh toán được gửi tới VNPAY qua giao thức HTTP(S)
3 VNPAY tiếp nhận yêu cầu và xác thực thông tin người dùng và giao dịch
4 Sau khi xác thực thành công, VNPAY tạo và gửi URL thanh toán cho người dùng
5 Người dùng truy cập URL thanh toán để tiến hành thanh toán
6 Người dùng điền thông tin thanh toán (số thẻ, mã CVV, mật khẩu, v.v.) trên trang thanh toán của VNPAY
7 Thông tin thanh toán được gửi tới VNPAY để xử lý
8 VNPAY thực hiện các bước xử lý thanh toán, bao gồm kiểm tra và xác thực thông tin, truy vấn ngân hàng để xác nhận giao dịch, và gửi yêu cầu thanh toán tới ngân hàng
9 Ngân hàng xử lý yêu cầu thanh toán và gửi lại kết quả cho VNPAY
10 VNPAY nhận kết quả từ ngân hàng và thông báo kết quả cho người dùng
11 Người dùng nhận thông báo kết quả thanh toán và hoàn tất quá trình thanh toán
Sơ đồ tuần tự là công cụ quan trọng giúp làm rõ quy trình giao tiếp và xử lý dữ liệu giữa các thành phần trong hệ thống thanh toán của VNPAY, đồng thời hỗ trợ xác định và khắc phục các vấn đề có thể phát sinh trong quá trình thanh toán.
Để tích hợp cổng thanh toán VNPAY vào hệ thống, cần thực hiện các bước sau: Đầu tiên, đăng ký và cấu hình tài khoản VNPAY, bao gồm việc thiết lập thông tin tài khoản và khai báo các thông tin liên quan như URL callback, mã đơn vị thanh toán và khóa bí mật Tiếp theo, xây dựng giao diện thanh toán trên trang web hoặc ứng dụng để người dùng có thể chọn phương thức thanh toán và nhập thông tin cần thiết Khi người dùng hoàn tất, hệ thống sẽ tạo yêu cầu thanh toán và gửi đến VNPAY, bao gồm thông tin về số tiền, mô tả giao dịch và mã đơn hàng Cuối cùng, xử lý phản hồi từ VNPAY qua URL callback để nhận kết quả thanh toán cho hệ thống.
VNPAY cung cấp 43 kết quả thanh toán để xác nhận trạng thái giao dịch và cập nhật thông tin liên quan Trong quá trình tích hợp VNPAY, việc đảm bảo xác thực và bảo mật là rất quan trọng Cần mã hóa và xác thực các yêu cầu cũng như phản hồi thanh toán để bảo vệ an toàn cho giao dịch.
Khi tích hợp cổng thanh toán VNPAY vào hệ thống quản lý khóa học trực tuyến, việc hiểu rõ các khái niệm và API liên quan là rất quan trọng Dưới đây là những khái niệm và phương thức cần lưu ý trong quá trình tích hợp.
VNPAY cung cấp nhiều phương thức thanh toán đa dạng, bao gồm thẻ ngân hàng, ví điện tử, QR Code và thẻ Visa/MasterCard Việc xác định và lựa chọn các phương thức thanh toán phù hợp với hệ thống của bạn là rất quan trọng.
URL callback là địa chỉ mà VNPAY sử dụng để gửi kết quả thanh toán và thông báo liên quan đến giao dịch Việc cung cấp URL callback là cần thiết để hệ thống của chúng ta có thể nhận và xử lý các thông tin từ VNPAY một cách hiệu quả.
Mã đơn vị thanh toán (Merchant ID) là mã duy nhất do VNPAY cấp cho từng đối tác, giúp xác định và xác thực tài khoản khi tương tác với VNPAY.
Khóa bí mật là chuỗi ký tự quan trọng được sử dụng để mã hóa và xác thực dữ liệu giao dịch giữa hệ thống của chúng ta và VNPAY Để đảm bảo an toàn thông tin, cần bảo mật khóa bí mật và không tiết lộ cho bất kỳ ai.
VNPAY cung cấp một bộ API đa dạng để tương tác với hệ thống của họ, cho phép người dùng thực hiện các yêu cầu thanh toán, xác thực giao dịch, truy vấn trạng thái thanh toán và nhiều hoạt động khác.
44 khác Chúng ta cần tìm hiểu và sử dụng các API phù hợp để tích hợp VNPAY vào hệ thống của mình
Để tích hợp cổng thanh toán VNPAY thành công, cần tham khảo tài liệu hướng dẫn của VNPAY, hiểu rõ các khái niệm liên quan và sử dụng các API được cung cấp để gửi yêu cầu và nhận phản hồi từ hệ thống.
Tích hợp cổng thanh toán VNPAY vào hệ thống quản lý khóa học trực tuyến mang lại sự tiện lợi và an toàn cho người dùng khi thanh toán Việc cung cấp nhiều phương thức thanh toán như VNPAY không chỉ nâng cao tính chuyên nghiệp mà còn tạo dựng niềm tin cho người dùng trong việc sử dụng dịch vụ của chúng ta.
Chương Cơ sở lý thuyết cung cấp nền tảng kiến thức quan trọng cho việc xây dựng hệ thống quản lý khóa học trực tuyến, bao gồm giới thiệu về các công nghệ như Flutter, NestJS, MongoDB, Firebase Storage và VNPAY Những khái niệm và nguyên lý này sẽ được áp dụng trong các chương tiếp theo của khóa luận để phân tích, thiết kế và triển khai hệ thống một cách hiệu quả.
RECOMMENDATION SYSTEM CHO TÍNH NĂNG ĐỀ XUẤT KHOÁ HỌC DỰA TRÊN COLLABORATIVE FILTERING
Giới thiệu về Recommendation System và Collaborative Filtering
Hệ thống gợi ý (Recommendation System) và Collaborative Filtering là hai khái niệm then chốt trong lĩnh vực hệ thống gợi ý Hệ thống gợi ý là phần mềm hoặc công cụ dự đoán và đề xuất các mục mà người dùng có thể quan tâm, giúp tìm kiếm và lọc thông tin từ cơ sở dữ liệu lớn Mục tiêu của hệ thống này là cung cấp trải nghiệm cá nhân hóa và tối ưu cho người dùng thông qua các gợi ý phù hợp.
A clear example of Collaborative Filtering in practice is Netflix's movie recommendation system Netflix employs Collaborative Filtering techniques to generate personalized suggestions for its users.
47 phim cho người dùng dựa trên sở thích và hành vi của họ cũng như của những người dùng khác
Giả sử có hai người dùng A và B trên Netflix, trong đó A đã xem và đánh giá một số phim, còn B đã xem và đánh giá một tập phim khác Hệ thống Collaborative Filtering sẽ phân tích sự tương đồng giữa A và B dựa trên các đánh giá và sở thích của họ Nếu A và B có sự tương đồng cao trong việc đánh giá và yêu thích phim, hệ thống sẽ gợi ý cho người dùng A những bộ phim mà người dùng B đã xem và yêu thích.
Collaborative Filtering là phương pháp gợi ý phim dựa trên sở thích của người dùng Nếu người dùng A yêu thích thể loại hành động và khoa học viễn tưởng, và người dùng B cũng có sở thích tương tự, hệ thống sẽ đề xuất cho người dùng A những bộ phim hành động và khoa học viễn tưởng mà người dùng B đã xem và đánh giá cao.
Phương pháp Collaborative Filtering giúp Netflix nhận diện mối quan hệ giữa người dùng và phim ảnh, từ đó cung cấp những gợi ý phù hợp Điều này không chỉ nâng cao trải nghiệm người dùng mà còn hỗ trợ họ khám phá những bộ phim mới và tìm kiếm nội dung phù hợp với sở thích cá nhân.
3.1.1 Khái niệm về Recommendation System
Trong thời đại số hóa và dữ liệu lớn, Hệ thống đề xuất (Recommendation System) đã trở thành công nghệ quan trọng, cung cấp gợi ý và đề xuất cá nhân hóa cho người dùng Công nghệ này không chỉ nâng cao trải nghiệm người dùng mà còn giúp khám phá nội dung mới và tăng cường tương tác, đặc biệt trong lĩnh vực hệ thống quản lý học tập.
3.1.2 Collaborative Filtering và vai trò trong Recommendation System
Collaborative Filtering là phương pháp quan trọng trong hệ thống gợi ý, dựa vào việc khai thác hành vi và tương tác của người dùng để đề xuất nội dung phù hợp Phương pháp này sử dụng thông tin từ nhóm người dùng tương đồng nhằm cung cấp những gợi ý cá nhân hóa, giúp nâng cao trải nghiệm người dùng.
3.1.3 Ưu điểm và hạn chế của Collaborative Filtering
Collaborative Filtering mang lại nhiều lợi ích quan trọng trong việc đề xuất khóa học trên hệ thống quản lý học tập trực tuyến Nó có khả năng xử lý dữ liệu lớn và cung cấp những đề xuất chính xác dựa trên sự tương tác giữa người dùng Bên cạnh đó, Collaborative Filtering cũng tạo ra những gợi ý cá nhân hóa, giúp người dùng khám phá các khóa học mới phù hợp với sở thích của họ.
Mặc dù Collaborative Filtering mang lại nhiều lợi ích, nhưng nó cũng tồn tại một số nhược điểm đáng lưu ý Một trong những hạn chế chính là sự phụ thuộc vào thông tin và tương tác giữa người dùng Khi thiếu dữ liệu hoặc sự tương tác không đủ lớn, khả năng đưa ra các đề xuất chính xác và phù hợp của phương pháp này sẽ bị ảnh hưởng.
Cơ sở lý thuyết về Collaborative Filtering
Lý thuyết về Collaborative Filtering đóng vai trò quan trọng trong việc hiểu hệ thống gợi ý, giúp xác định và khai thác sự tương đồng giữa người dùng và các mục tiêu để cung cấp gợi ý cá nhân hóa hiệu quả.
Lý thuyết về Collaborative Filtering dựa trên giả định rằng người dùng thường có hành vi và sở thích tương tự nhau Nếu hai người dùng có sự tương đồng trong đánh giá, mua sắm hoặc tương tác với các sản phẩm, khả năng cao là họ sẽ chia sẻ những sở thích và quan tâm tương tự đối với các sản phẩm khác.
3.2.1 Đánh giá và xếp hạng trong hệ thống đánh giá người dùng
Trong hệ thống đề xuất và đánh giá người dùng, đánh giá và xếp hạng đóng vai trò quan trọng trong việc hiểu sở thích và quan điểm của người dùng Chúng giúp thu thập thông tin về chất lượng, sự hài lòng và tương tác của người dùng với các khóa học trong LMS Dựa trên những thông tin này, Collaborative Filtering sẽ cung cấp các đề xuất và gợi ý phù hợp cho người dùng.
3.2.1.1 Hình thức đánh giá người dùng
Người dùng có thể đánh giá khoá học thông qua hệ thống xếp hạng từ 1 đến 5 hoặc bằng cách sử dụng hình thức sao, nhằm phản ánh mức độ hài lòng và chất lượng của khoá học.
Người dùng có thể viết nhận xét, phản hồi hoặc bình luận về khóa học, giúp chia sẻ ý kiến và trải nghiệm của họ Việc đánh giá dựa trên nhận xét này không chỉ cung cấp thông tin quý giá cho người học khác mà còn góp phần nâng cao chất lượng khóa học.
3.2.1.2 Xếp hạng và mức độ quan trọng
Xếp hạng người dùng được phân loại thành các mức độ như rất kém, kém, trung bình, tốt và rất tốt Dựa trên các xếp hạng này, phương pháp Collaborative Filtering sẽ khai thác thông tin để đưa ra những đề xuất phù hợp với sở thích của người dùng.
Mức độ quan trọng của các tiêu chí trong khóa học, như độ khó, tính ứng dụng, chất lượng giảng dạy và sự hỗ trợ, có thể được người dùng xác định Thông tin này sẽ được sử dụng bởi Collaborative Filtering để đề xuất các khóa học tương tự một cách hiệu quả hơn.
3.2.1.3 Xử lý dữ liệu đánh giá
Chuẩn bị dữ liệu là bước quan trọng trong quá trình Collaborative Filtering, nơi dữ liệu đánh giá từ người dùng được thu thập và xử lý Các thuật toán và quy trình tiền xử lý sẽ giúp loại bỏ nhiễu, điều chỉnh trọng số và chuẩn hóa dữ liệu Đánh giá và xếp hạng trong hệ thống là yếu tố then chốt để hiểu sở thích và quan điểm của người dùng Bằng cách áp dụng các phương pháp và công cụ thích hợp, Collaborative Filtering có thể sử dụng dữ liệu này để đưa ra các đề xuất và gợi ý khóa học phù hợp trong hệ thống quản lý học tập trực tuyến.
Phân loại Collaborative Filtering là một phương pháp quan trọng trong hệ thống gợi ý, giúp đề xuất các mục tiêu phù hợp cho người dùng dựa trên sự tương đồng giữa người dùng và các mục tiêu Phương pháp này được chia thành hai loại chính: Collaborative Filtering dựa trên người dùng (User -Based) và Collaborative Filtering dựa trên mục tiêu (Item-Based).
Lọc cộng tác dựa trên người dùng (User -Based Collaborative Filtering) là một phương pháp xác định sự tương đồng giữa người dùng thông qua lịch sử đánh giá và sở thích của họ Khi người dùng có tương tác mới, hệ thống tìm kiếm những người dùng tương tự để đề xuất các khóa học mà họ đã đánh giá cao Phương pháp này thường được áp dụng khi tập dữ liệu người dùng lớn hơn so với tập dữ liệu khóa học.
Item-Based Collaborative Filtering là một phương pháp lọc cộng tác dựa trên sự tương đồng giữa các mục, thường áp dụng cho các khóa học Phương pháp này xác định mối liên hệ giữa các mục dựa trên lịch sử đánh giá của người dùng Khi người dùng có một tương tác mới, hệ thống sẽ tìm kiếm các khóa học tương tự để đề xuất Phương pháp này thường được sử dụng khi tập dữ liệu về các mục lớn hơn so với tập dữ liệu về người dùng, giúp tối ưu hóa trải nghiệm cá nhân hóa.
Cả User-Based Collaborative Filtering và Item-Based Collaborative Filtering đều sử dụng thông tin tương đồng để đưa ra đề xuất cho người dùng, nhưng cách tiếp cận và tính toán sự tương đồng giữa hai phương pháp này khác nhau Việc lựa chọn giữa User-Based và Item-Based Collaborative Filtering phụ thuộc vào quy mô, tính chất của tập dữ liệu, cũng như yêu cầu và mục tiêu của hệ thống quản lý học tập trực tuyến Hiện tại, khoá luận đang áp dụng User-Based Collaborative Filtering.
Cách thức hoạt động của Collaborative Filtering
Collaborative Filtering là phương pháp nổi bật trong hệ thống gợi ý, giúp đề xuất các mục tiêu phù hợp cho người dùng dựa trên hành vi và sở thích của họ cũng như của nhóm người dùng tương đồng Phương pháp này hoạt động qua các bước cụ thể để phân tích và so sánh dữ liệu người dùng.
3.3.1 Xây dựng ma trận đánh giá người dùng
Các hệ thống Collaborative Filtering hoạt động bằng cách thu thập thông tin đánh giá và xếp hạng từ người dùng Để bắt đầu, hệ thống cần thu thập dữ liệu về hành vi của người dùng.
Dữ liệu từ 51 vi của người dùng, bao gồm lịch sử đánh giá, sở thích, và các mục tiêu đã thực hiện, cung cấp thông tin quan trọng để xác định độ tương đồng giữa người dùng Ma trận đánh giá người dùng được xây dựng nhằm biểu diễn các tương tác giữa người dùng và các item (khóa học), trong đó chứa thông tin về đánh giá và xếp hạng của người dùng đối với các mặt hàng, với giá trị có thể là xếp hạng số hoặc các ký hiệu khác biệt.
Ví dụ trong khoá luận này sử dụng 3 thành phần dữ liệu là user, course và ratings (1), cụ thể:
• Users: là danh sách người dùng
• Courses: là danh sách các khoá học, mỗi phim có thể kèm theo thông tin mô tả
Đánh giá (ratings) là số điểm mà người dùng dành cho các bộ phim Để lưu trữ dữ liệu này, chúng ta sử dụng ma trận 2 chiều gọi là "ma trận user – course", biểu diễn mức độ quan tâm của người dùng đối với từng khoá học Việc xây dựng ma trận user – course được thực hiện dựa trên dữ liệu có sẵn.
Trong ma trận người dùng - khóa học, tồn tại nhiều giá trị chưa được xác định do người dùng chưa đánh giá các khóa học Hệ thống cần sử dụng dữ liệu lịch sử trong ma trận để dự đoán các giá trị còn thiếu cho người dùng hiện tại thông qua mô hình đã phát triển Kết quả dự đoán sẽ được sắp xếp theo thứ tự giảm dần, từ đó hệ thống gợi ý cho người dùng Top-N khóa học có xếp hạng cao nhất.
Bảng 3.2.1: Ma trận rating user - course
User 0 User 1 User 2 User 3 User 4 User 5 User 6
3.3.2 Tính toán sự tương đồng giữa các khoá học
Sau khi xây dựng ma trận đánh giá người dùng, các phương pháp tính toán sự tương đồng như độ tương đồng cosin và Jaccard sẽ được áp dụng để xác định mức độ tương tự giữa người dùng hoặc các item Để sử dụng mảng 2 chiều user-course với giá trị đánh giá, cần thay thế các dấu '?' bằng một giá trị cụ thể, thường là '0' hoặc '2,5', nhưng phương pháp này có thể không chính xác Thay vào đó, nên sử dụng giá trị trung bình của đánh giá của mỗi người dùng, bằng cách trừ giá trị đánh giá của họ cho giá trị trung bình tương ứng, và thay thế các ô chưa được tính bằng 0 để phản ánh đúng sự quan tâm của người dùng.
Cách xử lý này phân loại đánh giá thành hai loại: giá trị nhỏ hơn 0 cho thấy người dùng không thích khóa học, trong khi giá trị lớn hơn 0 cho thấy người dùng thích khóa học Các giá trị bằng 0 đại diện cho những item chưa được đánh giá Việc thay thế các giá trị chưa tính toán được bằng 0 cho phép sử dụng ma trận thưa, giúp tối ưu hóa lưu trữ dữ liệu, đặc biệt khi số chiều của ma trận lớn nhưng lượng điểm đánh giá đã biết lại ít hơn nhiều so với dữ liệu của ma trận.
Tóm lại, có thể chuẩn hoá ma trận dữ liệu với 3 bước sau:
Bước đầu tiên là tính trung bình cộng điểm đánh giá của từng khóa học từ người dùng Mặc dù có thể sử dụng giá trị trung bình này để thay thế cho dấu (?) trong bảng, nhưng phương pháp này có độ chính xác thấp Để cải thiện độ chính xác cho thuật toán, chúng ta sẽ chuyển sang bước thứ hai.
Bảng 3.2.2.1: Ma trận tính trung bình rating user - course
User 0 User 1 User 2 User 3 User 4 User 5 User 6
Bước 2: Trừ các giá trị của ma trận với giá trị trung bình
Bảng 3.2.2.2: Ma trận tính giá trị trừ với trung bình rating user - course
User 0 User 1 User 2 User 3 User 4 User 5 User 6 Course 0 1.75 2.25 -0.5 -1.33 -1.5 ? ?
Bước 3: Thay dấu (?) bằng giá trị 0
Bảng 3.2.2.3: Ma trận thế giá trị 0 rating user - course
User 0 User 1 User 2 User 3 User 4 User 5 User 6 Course 0 1.75 2.25 -0.5 -1.33 -1.5 0 0
Sau khi đã chuẩn hóa ma trận, chúng ta tiến hành tính toán độ tương đồng giữa các người dùng Đây là công thức tính độ tương đồng cosine:
Trong đó, r_{u,i} là rating của người dùng u cho mục i, I là tập các mục đã được đánh giá
Theo công thức trên, có thể tính được bảng như sau:
Bảng 3.2.2.4: Ma trận tính similarity
User 0 User 1 User 2 User 3 User 4 User 5 User 6 User 0 1 0.83 -0.58 -0.79 -0.82 0.2 -0.38
Ví dụ ô User 1 – User 0 được tính như sau:
Kết quả độ tương đồng được thể hiện dưới dạng một con số trong khoảng từ -1 đến 1, với giá trị càng lớn thì độ tương đồng càng cao.
3.3.3 Dự đoán xếp hạng cho khoá học chưa xem/khám phá
Dựa trên sự tương đồng giữa các khoá học, Collaborative Filtering có khả năng dự đoán xếp hạng cho những khoá học chưa được người dùng xem Quá trình này thường sử dụng trung bình hoặc trọng số của các xếp hạng đã có từ các khoá học khác Dự đoán này hỗ trợ trong việc đưa ra các đề xuất khoá học phù hợp với sở thích của người dùng Để ước lượng điểm đánh giá của người dùng cho một khoá học, kỹ thuật Collaborative Filtering có thể được áp dụng thông qua phương pháp K-nearest neighbors (KNN) Ví dụ, chúng ta có thể đoán giá trị xếp hạng đã được chuẩn hóa của người dùng u1 cho mục i1 bằng cách lựa chọn k người dùng gần nhất.
Bước 1: Xác định những người dùng đã đánh giá cho khoá học thứ 1, đó là người dùng 0, người dùng 3, người dùng 5
Để xác định độ tương đồng giữa người dùng 1 với người dùng 0, 3 và 5, ta có kết quả lần lượt là: {0,83, -0,4, -0,23} Với k = 2, ta chọn hai giá trị lớn nhất là 0,83 và -0,23, tương ứng với người dùng 0 và 5 Hai người dùng này có giá trị xếp hạng đã được chuẩn hoá với khoá học 1 lần lượt là 0,75 và 0,5.
Bước 3: Tính giá trị xếp hạng đã được chuẩn hoá theo công thức: normalized_rating_u1_i1 = (similarity_u0_u1 * rating_u0_i1 + similarity_u5_u1 * rating_u5_i1) / (|similarity_u0_u1| +
Vậy giá trị xếp hạng đã được chuẩn hoá của người dùng 1 cho khoá học
Để dự đoán cho các trường hợp chưa có đánh giá, chúng ta sử dụng ma trận đánh giá đã được chuẩn hoá và thêm giá trị đánh giá trung bình vào từng cột Kết quả là một ma trận hoàn thiện với các dự đoán cho các trường hợp này, với giá trị 1 khoảng 0.4783.
Bảng 3.2.2.4: Ma trận hoàn thiện user-course rating
User 0 User 1 User 2 User 3 User 4 User 5 User 6 Course 0 1.75 2.25 -0.5 -1.33 -1.5 0.18 -0.63
Sau khi thu được ma trận hoàn thiện, có thể lấy ra được top đánh giá những khoá học mà người dùng có thể thích
Collaborative Filtering hoạt động dựa trên việc sử dụng thông tin đánh giá và sự tương đồng giữa người dùng hoặc mặt hàng để đưa ra đề xuất phù hợp Bằng cách xây dựng ma trận đánh giá và tính toán sự tương đồng, phương pháp này có khả năng dự đoán xếp hạng, từ đó cung cấp các khóa học dựa trên sự tương tự và mối quan tâm của người dùng trong hệ thống quản lý học tập trực tuyến.
Đánh giá và cải tiến Recommendation System
Đánh giá và cải tiến hệ thống gợi ý là quá trình thiết yếu để nâng cao hiệu suất và chất lượng của nó Trong bối cảnh số hóa và thông tin phong phú hiện nay, hệ thống gợi ý giúp người dùng khám phá và tìm kiếm nội dung phù hợp với sở thích và nhu cầu của họ.
Trong đánh giá hệ thống gợi ý, chúng ta cần xem xét độ chính xác, tỷ lệ gợi ý chấp nhận, tỷ lệ phủ và thời gian phản hồi Những yếu tố này giúp định lượng và đánh giá hiệu suất cũng như chất lượng của hệ thống, từ đó xác định khả năng cung cấp gợi ý phù hợp và được người dùng chấp nhận.
Quá trình đánh giá chỉ là bước khởi đầu trong việc cải tiến và tối ưu hóa Hệ thống Gợi ý Để nâng cao độ chính xác và chất lượng của gợi ý, cần áp dụng các thuật toán tiên tiến, tăng cường thông tin người dùng và kết hợp nhiều phương pháp Phản hồi từ người dùng cũng đóng vai trò quan trọng trong việc cải thiện hệ thống Bên cạnh đó, việc tối ưu hóa hiệu suất, tăng tốc độ xử lý và thời gian phản hồi là cần thiết để mang đến trải nghiệm gợi ý tốt nhất cho người dùng.
Đánh giá và cải tiến hệ thống gợi ý là một quá trình liên tục, đòi hỏi nghiên cứu và cập nhật thường xuyên để theo kịp sự phát triển của ngành và nhu cầu người dùng ngày càng tăng Chỉ thông qua việc liên tục đánh giá và cải tiến, chúng ta mới có thể đảm bảo hệ thống gợi ý hoạt động hiệu quả, mang đến trải nghiệm gợi ý tuyệt vời cho người dùng.
3.4.1 Đánh giá hiệu suất và chất lượng của Recommendation System Độ chính xác (Accuracy): Đánh giá khả năng của hệ thống trong việc đưa ra những đề xuất chính xác và phù hợp với sở thích của người dùng
Tỷ lệ gợi ý chấp nhận được (Precision): Xác định tỷ lệ các gợi ý được người dùng chấp nhận và tương tác với
Tỷ lệ phủ (Recall) đánh giá khả năng của hệ thống trong việc gợi ý tất cả các mục phù hợp với người dùng Bên cạnh đó, việc đánh giá thời gian phản hồi cũng rất quan trọng, bởi nó xem xét khoảng thời gian từ khi yêu cầu được tạo ra cho đến khi các đề xuất hiển thị cho người dùng.
3.4.2 Cải tiến và tối ưu hóa hệ thống
Áp dụng các thuật toán và phương pháp tiên tiến nhằm nâng cao khả năng gợi ý và cải thiện chất lượng của hệ thống.
Tăng cường thông tin người dùng bằng cách thu thập và sử dụng chi tiết về sở thích và lịch sử tương tác, nhằm nâng cao độ chính xác của các gợi ý.
Combining various approaches, such as Collaborative Filtering, Content-Based Filtering, and Hybrid Recommendation methods, enhances the diversity and quality of recommendations.
Để nâng cao độ chính xác và sự hài lòng của người dùng, việc thu thập phản hồi từ họ là rất quan trọng Những ý kiến này sẽ giúp cải thiện hệ thống gợi ý, tạo ra trải nghiệm tốt hơn cho người dùng.
Tối ưu hóa hiệu suất hệ thống là điều cần thiết để nâng cao tốc độ xử lý và thời gian phản hồi, từ đó cung cấp gợi ý nhanh chóng và liên tục cho người dùng.
Ứng dụng của Recommendation System trong tính năng đề xuất khoá học 59 1 Thiết kế giao diện đề xuất khoá học
Trong việc phát triển hệ thống gợi ý khóa học, thiết kế giao diện hiển thị các đề xuất là yếu tố then chốt Giao diện không chỉ giúp trình bày thông tin một cách hấp dẫn mà còn đảm bảo người dùng dễ dàng tiếp cận và hiểu rõ nội dung gợi ý.
Khi thiết kế giao diện đề xuất khoá học, có một số yếu tố đã được xem xét:
Danh sách khoá học đề xuất cần được hiển thị rõ ràng trên giao diện, cho phép người dùng dễ dàng tìm kiếm và lựa chọn Các khoá học có thể được sắp xếp và phân loại theo tiêu chí như độ phù hợp, mức độ quan tâm và các yếu tố khác, giúp người dùng nhanh chóng tìm thấy những lựa chọn phù hợp nhất.
Mỗi khóa học cần được trình bày rõ ràng và ngắn gọn để thu hút người dùng nhanh chóng Giao diện nên hiển thị thông tin như tên khóa học, phân loại, hình ảnh, chương trình, giảng viên, đánh giá và các thông tin khác, giúp người dùng có cái nhìn tổng quan về khóa học.
Giao diện thân thiện và tương thích là yếu tố quan trọng, giúp người dùng dễ dàng truy cập và tương tác với tính năng đề xuất khóa học Việc thiết kế giao diện phù hợp với nhiều thiết bị và nền tảng khác nhau đảm bảo sự tiện lợi và linh hoạt cho người sử dụng.
Thiết kế giao diện đề xuất khóa học cần chú trọng đến việc cung cấp thông tin rõ ràng và trải nghiệm tốt cho người dùng, giúp họ dễ dàng khám phá và lựa chọn các khóa học phù hợp với sở thích và nhu cầu Để nâng cao trải nghiệm người dùng, giao diện đã được xây dựng với các hiệu ứng mượt mà, thu hút sự chú ý của người dùng khi lướt qua.
Hình 3.5.1.5 : Giao diện đề xuất khoá học
3.5.2 Quy trình đề xuất khoá học
3.5.2.1 Xác định người dùng đang xem/khám phá khoá học
Trong quy trình đề xuất khóa học, bước đầu tiên là xác định người dùng đang xem hoặc khám phá khóa học Việc này có thể thực hiện bằng cách theo dõi hành vi của người dùng trên nền tảng học tập hoặc thông qua thông tin đăng ký của họ.
3.5.2.2 Tìm kiếm những người dùng có sở thích tương tự
Sau khi xác định người dùng hiện tại, hệ thống sẽ tiến hành tìm kiếm những người dùng khác có sở thích tương tự, dựa trên việc phân tích hành vi và dữ liệu người dùng Quá trình này bao gồm việc xem xét lịch sử học tập, đánh giá khóa học, cũng như các quan tâm và nhận xét của người dùng.
3.5.2.3 Đề xuất khoá học dựa trên sự tương đồng của người dùng
Hệ thống sẽ đề xuất các khoá học phù hợp dựa trên sự tương đồng của người dùng và sở thích cá nhân Bằng cách tìm kiếm các khoá học có đánh giá cao hoặc nội dung tương tự, Recommendation System áp dụng các thuật toán để tính toán độ tương đồng và đưa ra những gợi ý khoá học tốt nhất cho người dùng.
Quy trình đề xuất khóa học dựa trên Hệ thống Gợi ý giúp cung cấp lựa chọn học tập phù hợp với sở thích và nhu cầu của từng người dùng Điều này tạo ra trải nghiệm học tập cá nhân hóa, giúp người dùng dễ dàng khám phá và tiếp cận những khóa học giá trị mà họ có thể quan tâm.
Ưu điểm và thách thức của Recommendation System trong LMS
3.6.1 Ưu điểm của Recommendation System
Hệ thống gợi ý trong LMS giúp nâng cao trải nghiệm người dùng bằng cách đề xuất các khóa học phù hợp với sở thích và nhu cầu cá nhân Điều này cho phép người dùng dễ dàng tìm kiếm và tiếp cận các nội dung học tập mà họ quan tâm, từ đó tạo ra một trải nghiệm học tập cá nhân hóa, gia tăng sự hài lòng và hứng thú cho người học.
Hệ thống gợi ý (Recommendation System) trong LMS giúp nâng cao khả năng tìm kiếm và khám phá các khóa học, cho phép người dùng nhận được những đề xuất khóa học phù hợp với sở thích và hành vi học tập của họ Nhờ vậy, người dùng tiết kiệm được thời gian và công sức trong việc tìm kiếm các khóa học thích hợp.
Hệ thống gợi ý giúp tăng cường sự tương tác và tham gia của người dùng bằng cách cung cấp giao diện hấp dẫn, khuyến khích họ khám phá các khóa học phù hợp với sở thích Điều này tạo ra một môi trường học tập tích cực, nơi người dùng cảm thấy hứng thú và động lực để tham gia vào nhiều khóa học mới.
Bên cạnh những ưu điểm trên, Recommendation System cũng đối diện với một số thách thức, như sau
3.6.2 Thách thức và giải pháp
Vấn đề lượng dữ liệu đánh giá và thông tin người dùng:
Một trong những thách thức lớn của Hệ thống Đề xuất trong Hệ thống Quản lý Học tập (LMS) là thiếu dữ liệu đánh giá và thông tin người dùng để đưa ra các đề xuất chính xác Để khắc phục vấn đề này, cần xây dựng một hệ thống thu thập dữ liệu đánh giá từ người dùng, bao gồm đánh giá khóa học, bình luận và hành vi học tập Đồng thời, việc đảm bảo tính riêng tư và bảo mật dữ liệu người dùng là rất quan trọng để tạo dựng niềm tin và khuyến khích sự tham gia tích cực Hơn nữa, các hệ thống này cần phải đối mặt với sự cạnh tranh và đa dạng hóa các khóa học để đáp ứng nhu cầu người học.
Với sự phát triển nhanh chóng của các nền tảng học trực tuyến, hệ thống quản lý học tập (LMS) đang phải đối mặt với sự cạnh tranh và đa dạng hóa khóa học, điều này làm cho việc đề xuất khóa học phù hợp trở nên khó khăn Để giải quyết thách thức này, việc kết hợp các phương pháp hệ thống gợi ý như Collaborative Filtering, Content-based Filtering và Hybrid Filtering là cần thiết nhằm đảm bảo độ chính xác và sự đa dạng trong các đề xuất Hơn nữa, việc hợp tác với các tổ chức, trường đại học và chuyên gia giáo dục sẽ giúp làm phong phú nội dung học tập, mang đến những khóa học mới và hấp dẫn cho người dùng.
Bằng cách nhận diện các thách thức và triển khai giải pháp hiệu quả, hệ thống gợi ý trong LMS có khả năng cải thiện đáng kể hiệu suất và chất lượng, từ đó mang lại lợi ích tối ưu cho người dùng và xây dựng một môi trường học tập tốt hơn.
Tổng kết và Tầm nhìn về Recommendation System trong LMS
Hệ thống gợi ý trong LMS đã đạt được nhiều thành công, cải thiện trải nghiệm người dùng bằng cách đề xuất các khóa học phù hợp với sở thích và nhu cầu học tập Nó giúp người dùng dễ dàng tìm kiếm và khám phá khóa học mới, đồng thời tăng cường sự tương tác và tham gia trong quá trình học Recommendation System trở thành công cụ hữu ích, cung cấp gợi ý đa dạng và tùy chỉnh, giúp người dùng tiếp cận kiến thức và nâng cao kỹ năng.
Tầm nhìn và phát triển tương lai của Recommendation System trong LMS: 62 CHƯƠNG 4 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
Trong tương lai, hệ thống gợi ý trong LMS sẽ có tiềm năng phát triển mạnh mẽ nhờ vào sự tiến bộ của công nghệ và thuật toán Điều này sẽ cho phép đưa ra những đề xuất khóa học chính xác và đa dạng hơn Hệ thống sẽ cải thiện khả năng hiểu và phân tích ngữ cảnh của người dùng, từ đó cung cấp gợi ý phù hợp với mục tiêu học tập và ưu tiên cá nhân Hơn nữa, sự phát triển của học máy và trí tuệ nhân tạo sẽ tạo ra những hệ thống gợi ý thông minh, có khả năng học tập và tương tác hiệu quả với người dùng.
Tầm nhìn tương lai của hệ thống gợi ý bao gồm việc tích hợp các công nghệ tiên tiến như học sâu và học tăng cường nhằm nâng cao độ chính xác và hiệu suất Sự phát triển của kỹ thuật xử lý ngôn ngữ tự nhiên và khai thác dữ liệu ngữ cảnh sẽ là yếu tố then chốt trong việc tạo ra những gợi ý chất lượng cao và tùy chỉnh cho người dùng.
Hệ thống gợi ý trong LMS đã đạt được nhiều thành tựu đáng kể và hứa hẹn sẽ phát triển mạnh mẽ trong tương lai Nhờ vào việc áp dụng các công nghệ và phương pháp tiên tiến, hệ thống này sẽ tiếp tục cải thiện trải nghiệm học tập, giúp người dùng khám phá kiến thức và phát triển bản thân trong môi trường học trực tuyến.
Chương 4 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
Chương "Phân tích và thiết kế hệ thống" tập trung vào việc phân tích yêu cầu và thiết kế kiến trúc cho hệ thống quản lý khoá học trực tuyến Chương này sẽ làm rõ các yêu cầu chức năng và phi chức năng, đồng thời thiết kế một kiến trúc tổng quan cho hệ thống, bao gồm cấu trúc lớp, cơ sở dữ liệu và giao diện người dùng.
Chương này sẽ xem xét các yếu tố quan trọng của hệ thống, bao gồm việc xác định yêu cầu chức năng chi tiết cho từng chức năng chính và lựa chọn mô hình dữ liệu cùng cấu trúc cơ sở dữ liệu phù hợp Đây là bước thiết yếu trong phát triển hệ thống quản lý khóa học trực tuyến, nhằm xây dựng một kiến trúc mạnh mẽ và linh hoạt, đáp ứng đầy đủ các yêu cầu chức năng và phi chức năng của hệ thống.
Phân tích yêu cầu
Hệ thống cần cung cấp các chức năng chính để đáp ứng nhu cầu của người dùng, bao gồm việc liệt kê và mô tả chi tiết các tính năng cần thiết Những chức năng này sẽ giúp người dùng hiểu rõ hơn về khả năng của hệ thống và cách chúng hỗ trợ trong việc thực hiện các tác vụ cụ thể.
4.1.1.1 Đăng nhập và đăng ký tài khoản
▪ Người dùng có thể đăng nhập vào hệ thống bằng tài khoản đã đăng ký trước đó
▪ Người dùng mới có thể đăng ký tài khoản để truy cập vào hệ thống
4.1.1.2 Quản lý tài khoản người dùng
▪ Người dùng có thể thay đổi mật khẩu hiện tại của mình
▪ Người dùng có thể cập nhật và chỉnh sửa thông tin cá nhân của mình
4.1.1.3 Xem, tham gia và theo dõi khoá học
Người dùng có thể truy cập danh sách các khoá học có sẵn trong hệ thống, với khả năng sắp xếp theo thứ tự mới nhất, phổ biến nhất hoặc theo danh mục để dễ dàng tìm kiếm.
Người dùng có thể dễ dàng đăng ký và tham gia vào các khóa học trong hệ thống, đồng thời theo dõi tiến trình học tập và nhận thông báo về các hoạt động liên quan đến khóa học.
▪ Người dùng có thể xem danh sách các bài giảng có trong khoá học
Người dùng có thể truy cập nội dung chi tiết của từng bài giảng và tiến hành học tập một cách hiệu quả Hệ thống cần hỗ trợ hiển thị nội dung bài giảng rõ ràng và cho phép người dùng điều chỉnh các tùy chọn như âm lượng, tốc độ phát, và nhiều tính năng khác để nâng cao trải nghiệm học tập.
4.1.1.5 Bình luận và đánh giá khoá học
▪ Người dùng có thể bình luận và phản hồi về nội dung của khoá học
▪ Người dùng có thể đánh giá và đưa ra đánh giá về chất lượng và trải nghiệm của khoá học
▪ Người dùng có thể thanh toán phí khoá học thông qua các cổng thanh toán trực tuyến
▪ Người dùng có thể tạo và cập nhật các bài kiểm tra cho khoá học
▪ Người dùng có thể làm bài kiểm tra để kiểm tra kiến thức đã học
▪ Người dùng có thể chia sẻ buổi livestream với người khác trên hệ thống
▪ Người dùng có thể tham gia và theo dõi các buổi livestream trên hệ thống
▪ Hệ thống sẽ đề xuất các khoá học dựa trên điểm đánh giá khoá học của người dùng
4.1.1.11 Quản lý tài nguyên và dữ liệu
Hệ thống phải có chức năng quản lý tài liệu và tài nguyên liên quan đến khóa học và bài giảng, bao gồm tài liệu học tập, tài liệu tham khảo và bài tập Người dùng có thể dễ dàng xem, thêm, xóa hoặc sửa đổi các tài liệu này, cũng như tải xuống khi cần thiết.
4.1.1.12 Tìm kiếm và lọc khoá học
Người dùng có thể dễ dàng tìm kiếm và lọc các khóa học theo từ khóa và danh mục Hệ thống cần cung cấp chức năng tìm kiếm nâng cao, giúp người dùng nhanh chóng tìm ra những khóa học phù hợp nhất với nhu cầu của họ.
4.1.2 Yêu cầu phi chức năng
Phần này nêu rõ các yêu cầu không liên quan trực tiếp đến chức năng của hệ thống, bao gồm hiệu suất, bảo mật, khả năng mở rộng và khả năng bảo trì, nhằm đảm bảo hệ thống hoạt động hiệu quả và bền vững.
▪ Hệ thống cần đảm bảo độ ổn định và đáng tin cậy trong việc xử lý các yêu cầu từ người dùng
▪ Thời gian phản hồi của hệ thống cần nhanh chóng và không gây chờ đợi lâu cho người dùng
Dữ liệu người dùng cần được bảo vệ an toàn và không bị truy cập trái phép Hệ thống phải thực hiện các biện pháp bảo mật hiệu quả nhằm đảm bảo tính toàn vẹn và an ninh cho dữ liệu.
▪ Người dùng phải có các quyền truy cập và phân quyền phù hợp để đảm bảo an toàn thông tin
▪ Hệ thống cần có khả năng mở rộng để đáp ứng nhu cầu tăng trưởng của người dùng và số lượng khoá học
▪ Hệ thống cần hỗ trợ việc mở rộng cơ sở hạ tầng, bao gồm cơ sở dữ liệu, máy chủ và hệ thống mạng
4.1.2.4 Bảo trì và hỗ trợ
▪ Hệ thống cần có khả năng dễ dàng bảo trì và sửa chữa khi cần thiết
▪ Hỗ trợ kỹ thuật phải có sẵn để giải quyết các vấn đề và trả lời các câu hỏi từ người dùng
▪ Hệ thống cần hỗ trợ các hệ điều hành và nền tảng di động phổ biến để người dùng có thể truy cập từ các thiết bị di động
▪ Giao diện người dùng cần đơn giản, thân thiện và dễ sử dụng
▪ Hệ thống có thể cần cung cấp các hướng dẫn rõ ràng và gợi ý cho người dùng để giúp họ sử dụng hệ thống một cách dễ dàng
Hệ thống cần tích hợp hiệu quả với các dịch vụ và hệ thống khác, bao gồm hệ thống thanh toán, công cụ phân tích dữ liệu và hệ thống quản lý người dùng.
Kiến trúc tổng quan
Hệ thống quản lý khóa học trực tuyến được xây dựng theo kiến trúc ba lớp, giúp tách biệt và sắp xếp rõ ràng các thành phần, từ đó nâng cao hiệu quả quản lý và trải nghiệm người dùng.
Hình 4.2.2: Mô hình kiến trúc 3 lớp
Giao diện người dùng (Presentation Layer) là thành phần tương tác trực tiếp với người dùng, sử dụng Flutter để phát triển giao diện đa nền tảng, mang đến trải nghiệm dễ sử dụng cho việc tham gia, xem khoá học, bình luận, và đánh giá Lớp xử lý logic kinh doanh (Business Logic Layer) chứa các quy tắc và xử lý logic của hệ thống, được phát triển bằng NestJS, giúp xử lý yêu cầu từ giao diện người dùng và gọi các phương thức từ lớp miền (Domain Layer) để quản lý tài khoản, khoá học, bài giảng, bình luận, đánh giá, và thanh toán Lớp truy cập dữ liệu (Data Access Layer) tương tác với cơ sở dữ liệu, sử dụng MongoDB để lưu trữ thông tin về tài khoản, khoá học, bài giảng, bình luận và đánh giá, đồng thời cung cấp các phương thức và API để truy xuất, cập nhật và xử lý dữ liệu.
Kiến trúc ba lớp tách biệt các thành phần trong hệ thống, tạo điều kiện thuận lợi cho việc phát triển, bảo trì và mở rộng Nó đảm bảo tính linh hoạt và khả năng tái sử dụng mã nguồn, từ đó nâng cao tính ổn định và khả năng mở rộng của hệ thống Mỗi lớp có chức năng riêng và tương tác qua giao diện, giúp thay đổi ở một lớp không ảnh hưởng đến các lớp khác.
Hệ thống quản lý khoá học trực tuyến áp dụng Clean Architecture nhằm đảm bảo sự phân tách và độc lập giữa các lớp Logic, Presentation và Data Việc tách biệt này không chỉ giúp dễ dàng mở rộng mà còn nâng cao khả năng duy trì hệ thống hiệu quả.
Hình 4.2.3: Mô hình hệ thống
Khoá luận được triển khai dựa trên mô hình clean architecture, thường được biết đến gồm có bốn thành phần chính:
Entities là phần cốt lõi của ứng dụng, bao gồm logic kinh doanh và luật kinh doanh Chúng không phụ thuộc vào công nghệ cụ thể nào, giúp đảm bảo rằng các quy tắc kinh doanh của ứng dụng luôn độc lập và dễ dàng kiểm thử.
Các trường hợp sử dụng (Use Cases) là phần quan trọng chứa đựng những tình huống cụ thể liên quan đến yêu cầu và chức năng của ứng dụng Chúng tương tác với các thực thể (Entities) để thực hiện những tác vụ cần thiết, đảm bảo sự hoạt động hiệu quả của hệ thống.
Các bộ chuyển đổi giao diện (Interface Adapters) là thành phần quan trọng, bao gồm các adapter giúp tương tác với công nghệ bên ngoài như API, cơ sở dữ liệu và các thiết bị ngoại vi khác.
− Frameworks and Drivers (Các framework và trình điều khiển): Đây là thành phần chứa các công cụ liên quan đến cơ sở dữ liệu và các framework hỗ trợ
Trong quá trình phát triển ứng dụng, việc lựa chọn và sử dụng các công cụ phù hợp là rất quan trọng, mặc dù thường không cần thay đổi nhiều ở tầng này.
Trong khoá luận về hệ thống quản lý khoá học trực tuyến, Clean Architecture được áp dụng nhằm tạo ra một kiến trúc linh hoạt, dễ bảo trì và dễ mở rộng Ví dụ dưới đây minh họa cách Clean Architecture có thể được áp dụng trong khoá luận này.
Lớp domain trong hệ thống quản lý khoá học trực tuyến chứa logic kinh doanh cốt lõi, định nghĩa các quy tắc và đối tượng quan trọng như Tài khoản, Khoá học, Bài giảng và Bình luận Lớp này hoàn toàn độc lập với công nghệ cụ thể, không phụ thuộc vào framework hay cơ sở dữ liệu nào.
Lớp ứng dụng là cầu nối giữa Lớp trình bày và Lớp miền, chứa các use case như Đăng nhập, Đăng ký, Quản lý tài khoản, Quản lý khóa học, Xem bài giảng, Bình luận và Đánh giá Lớp này xử lý yêu cầu từ Lớp trình bày bằng cách gọi các phương thức trong Lớp miền và trả kết quả về cho Lớp trình bày.
Lớp cơ sở hạ tầng là phần quan trọng trong hệ thống, bao gồm các thành phần kỹ thuật và công nghệ cụ thể như NestJS cho Business Logic Layer và Flutter cho Presentation Layer Nó cũng cung cấp các công cụ và thư viện hỗ trợ, bao gồm Firebase Storage, Socket.IO, và API tích hợp cổng thanh toán, giúp tối ưu hóa hiệu suất và khả năng mở rộng của ứng dụng.
Sử dụng Clean Architecture giúp tách biệt các lớp logic và giảm sự phụ thuộc giữa các thành phần, từ đó tăng tính linh hoạt cho hệ thống Khi cần thay đổi framework hoặc cơ sở dữ liệu, chỉ cần điều chỉnh ở lớp cơ sở hạ tầng mà không ảnh hưởng đến các lớp khác Điều này làm cho việc phát triển, bảo trì và mở rộng hệ thống trở nên dễ dàng hơn.
Trong khoá luận này, Clean Architecture được áp dụng nhằm đảm bảo tính rõ ràng và dễ bảo trì cho hệ thống quản lý khoá học trực tuyến Việc áp dụng Clean Architecture giúp tách biệt logic kinh doanh và kỹ thuật, từ đó nâng cao khả năng mở rộng và linh hoạt của hệ thống.
Thiết kế hệ thống
Hình 4.2.33.1: Sơ đồ use-case tổng quát
4.3.2 Danh sách các use-case
Bảng 4.2.3: Danh sách các use-case chính
STT Tên use-case Ý nghĩa / Ghi chú
1 Đăng nhập Dùng tài khoản đã đăng ký để đăng nhập vào ứng dụng với thông tin tương ứng
2 Đăng ký Cho phép người dùng cung cấp thông tin cần thiết để đăng ký một tài khoản để truy cập vào ứng dụng
3 Đăng xuất Đăng xuất ra khỏi phiên hoạt động hiện tại
4 Xác thực email Gửi email về email mà người dùng đăng ký, người dùng nhấn đường link được cung cấp để có thể đăng nhập
5 Quên mật khẩu Người dùng thực hiện đổi mật khẩu của tài khoản
6 Xem danh sách khóa học Người dùng xem các danh sách của các khóa học được cung cấp trong ứng dụng
7 Xem chi tiết khóa học Người dùng xem chi tiết thông tin một khóa học
8 Tham gia khóa học Người dùng thực hiện thanh toán để tham gia tương tác với một khóa học
9 Bình luận bài học Người dùng tham gia thảo luận với bài học
10 Đánh giá khóa học Người dùng đánh giá khóa học đã tham gia
11 Nâng cấp tài khoản Nâng cấp tài khoản mặc định lên tài khoản nâng cao để sử dụng các tính năng giới hạn của ứng dụng
12 Làm bài kiểm tra Người dùng làm bài kiểm tra tương ứng với từng bài học
13 Tham gia Livestream Người dùng tham gia vào Livestream hiện có bằng mã code của phòng
14 Tương tác với người dùng khác
Người dùng tương tác với các người dùng khác
15 Tương tác với hệ thống Người dùng thực hiện tương tác với hệ thống, ví dụ như các dịch vụ hỗ trợ người dùng
16 Cập nhật hồ sơ Người dung cập nhật các thông tin cá nhân được lưu trữ trên hệ thống
17 Bắt đầu Livestream Giảng viên tạo một phòing mới để bắt đầu
18 Thêm mới khóa học Giảng viên khởi tạo một khóa học mới
19 Chỉnh sửa khóa học Giảng viên chỉnh sửa các thông tin hiện tại của khóa học
20 Xóa khóa học Giảng viên xóa khóa học hiện tại đang được chọn
21 Tạo mới bài kiểm tra Giảng viên tạo mới bài kiểm tra cho từng bài học tương ứng
22 Cập nhật bài kiểm tra Giảng viên chỉnh sửa thông tin của bài kiểm tra được chọn
23 Xóa bài kiểm tra Giảng viên xóa bài kiểm tra được chọn
Bảng 4.3.3.1: Đặc tả use-case người dùng [Đăng nhập] vào ứng dụng
Tên chức năng Đăng nhập
Chức năng đăng nhập vào hệ thống dành cho đối tượng học viên và giảng viên Để kích hoạt tính năng này, người dùng cần nhấn chọn “Đăng nhập” Điều kiện thực hiện use-case này là người dùng phải thực hiện đúng các bước đã quy định.
Tài khoản người dùng đã được tạo Tài khoản dã được xác thực email
Thiết bị được cung cấp đầy đủ yêu cầu khi sử dụng ứng dụng
Trạng thái hệ thống sau khi thực hiện use-case
Người dùng đăng nhập thành công vào hệ thống, được điều hướng đến màn hình “Home”
Có thể sử dụng các tính năng đã được phân quyền theo loại tài khoản
1 Hệ thống hiển thị form đăng nhập
2 Người dùng nhập tài khoản và mật khẩu (cả 2 trường này đều bắt buộc nhập) và nhấn “Đăng nhập”
3 Hệ thống kiểm tra thông tin đăng nhập
Dòng sự kiện thay thế Không
Dòng sự kiện ngoại lệ
2a Thông tin nhập vào không hợp lệ, hệ thống thôn báo cho người dùng
3a Hệ thống không xác thực được tài khoản và thông báo cho người dung
3a1 Người dùng hủy tiến trình đăng nhập, UC kết thúc
3a2 Người dùng chọn “Quên mật khẩu”, chuyển sang
Bảng 4.3.3.2: Đặc tả use-case người dùng [Đăng ký] tài khoản cho ứng dụng
Tên chức năng Đăng ký
Chức năng đăng ký vào hệ thống dành cho đối tượng học viên và giảng viên, yêu cầu người dùng nhấn chọn “Đăng ký” để kích hoạt Điều kiện thực hiện use-case này là việc người dùng thực hiện đúng các bước cần thiết trong quy trình đăng ký.
Thiết bị được cung cấp đầy đủ yêu cầu khi sử dụng ứng dụng
Trạng thái hệ thống sau khi thực hiện use-case
Người dùng đăng ký thành công tài khoản
Hệ thống gửi email để email đăng ký để thực hiện xác thực tài khoản
1 Hệ thống hiển thị form đăng ký
2 Người dùng nhập các thông tin: họ và tên, email, mật khẩu, xác thực mật khẩu, ngày tháng năm sinh, giới tính, vai trò sử dụng ứng dụng(các trường bắt buộc), số điện thoại(trường khôgn bắt buộc) và nhấn “Đăng ký”
3 Hệ thống tạo mới tài khoản
4 Hệ thống gửi email đến tài khoản đăng ký
Dòng sự kiện thay thế Không
Dòng sự kiện ngoại lệ
2a Các thông tin nhập vào không hợp lệ, hệ thống thông báo cho người dùng
3a Email đăng ký đã được sử dụng để đăng ký tài khoản khác Hệ thống thông báo cho người dung
3a1 Người dùng hủy tiến trình, UC kết thúc 3a2 Người dùng nhập vào email khác, UC tiếp tục từ bước 2
Bảng 4.3.3.3: Đặc tả use-case người dùng [Đăng xuất] khỏi ứng dụng
Tên chức năng Đăng xuất
Chức năng đăng xuất khỏi hệ thống cho phép học viên và giảng viên dễ dàng thoát khỏi tài khoản của mình Người dùng chỉ cần nhấn chọn “Đăng xuất” để kích hoạt tính năng này Điều kiện thực hiện use-case đảm bảo rằng việc đăng xuất diễn ra một cách thuận lợi và an toàn.
Tài khoản đang được đăng nhập vào ứng dụng
Thiết bị được cung cấp đầy đủ yêu cầu khi sử dụng ứng dụng
Trạng thái hệ thống sau khi thực hiện use-case
Người dùng đăng xuất khỏi hệ thống và điều hướng về trang đăng nhập
Dòng sự kiện chính 1 Người dùng sang trang “Profile”
2 Người dùng nhấn “Đăng xuất”
Dòng sự kiện thay thế Không
Dòng sự kiện ngoại lệ Không
4.3.3.4 Use-case “Xác thực email”
Bảng 4.3.3.4: Đặc tả use-case người dùng thực hiện [Xác thực email]
Tên chức năng Xác thực email
Chức năng xác thực tài khoản qua email dành cho học viên và giảng viên được kích hoạt ngay sau khi người dùng hoàn tất quá trình đăng ký tài khoản Điều này đảm bảo rằng người dùng có thể thực hiện các trường hợp sử dụng liên quan một cách hiệu quả.
Tiến trình đăng ký tài khoản đã được hoàn tất
Thiết bị được cung cấp đầy đủ yêu cầu khi sử dụng ứng dụng
Trạng thái hệ thống sau khi thực hiện use-case
Người dùng thành công xác thực tài khoản và có thể sử dụng tài khoản để đăng nhâp vào hệ thống
1 Hệ thống điều hướng người dùng sang trang “Identify Token” sau khi hoàn tất đăng ký
2 Người dùng nhập vào token được nhận thông qua email đăng ký và nhấn chọn “Xác thực”
Dòng sự kiện thay thế Không
Dòng sự kiện ngoại lệ 2a Mã Token sai, hệ thống thông báo cho người dùng
4.3.3.5 Use-case “Quên mật khẩu”
Bảng 4.3.3.5: Đặc tả use-case trường hợp người dùng [Quên mật khẩu]
Tên chức năng Quên mật khẩu
Chức năng thay đổi mật khẩu dành cho học viên và giảng viên được kích hoạt khi người dùng nhấn chọn "Quên mật khẩu?" để thực hiện quy trình lấy lại mật khẩu.
Thiết bị được cung cấp đầy đủ yêu cầu khi sử dụng ứng dụng
Trạng thái hệ thống sau khi thực hiện use-case
Tài khoản được thay đổi mật khẩu và người dùng bắt đầu đăng nhập vào tài khoản với mật khẩu mới
1 Người dùng nhấn chọn “Quên mật khẩu”
3 Hệ thống gửi email xác thực đến email được nhập vào
4.Người dùng nhập vào thông tin: Token, mật khẩu mới, xác thực mật khẩu(các trường đều bắt buộc) và nhấn chọn “Đổi mật khẩu”
5 Hệ thống cập nhật mật khẩu cho tài khoản và điều hướng người dùng đến trang “Sign In”
Dòng sự kiện thay thế Không
Dòng sự kiện ngoại lệ
2a Email nhập vào không hợp lệ và hệ thống thông báo đến người dùng
4a Các thông tin nhập vào không hợp lệ, hệ thôgns thông báo cho người dùng
4.3.3.6 Use-case “Xem danh sách khóa học”
Bảng 4.3.3.6: Đặc tả use-case người dùng thực hiện [Xem danh sách khóa học]
Tên chức năng Xem danh sách khóa học
Chức năng hiển thị danh sách các khóa học hiện có dành cho học viên và giảng viên sẽ được kích hoạt sau khi người dùng đăng nhập vào ứng dụng và truy cập vào trang "Home".
81 Điều kiện thực hiện use- case
Thiết bị được cung cấp đầy đủ yêu cầu khi sử dụng ứng dụng
Tài khoản đang được đăng nhập vào ứng dụng Phiên hoạt động của tài khoản còn hoạt động
Trạng thái hệ thống sau khi thực hiện use-case
Hệ thống hiển thị danh sách các khóa học hiện có trong ứng dụng cho người dùng
Dòng sự kiện chính 1 Người dùng vào trang “Home”
2 Hệ thống hiển thị danh sách các khóa học
Dòng sự kiện thay thế
2a1 Người dùng search các khóa học theo các cụm từ khác nhau Hệ thống hiển thị danh sách khóa học tương ứng
2a2 Người dùng chọn xem danh sách toàn bộ các khóa học hiện có
Dòng sự kiện ngoại lệ
2b Quá tình tải lên bị lỗi, hệ thống hiển thị tương ưng
2b1 Hệ thống không thể tải ảnh với đường dẫn tương ứng(đường dẫn bị lỗi hoặc đường dẫn bằng null), Widget chứa ảnh hiển thị ảnh tĩnh mặc định
2b2 Hệ thống không thể tải lên danh sách khóa học, Hiển thị thông tin lỗi tương ứng trong Widget danh sách
4.3.3.7 Use-case “Xem chi tiết khóa học”
Bảng 4.3.3.7: Đặc tả use-case người dùng thực hiện [Xem chi tiết khóa học]
Tên chức năng Xem chi tiết khóa học
Chức năng xem thông tin chi tiết của khóa học được thiết kế dành cho học viên và giảng viên Tính năng này sẽ được kích hoạt khi người dùng nhấn chọn một thẻ khóa học Điều kiện thực hiện use-case này là người dùng phải tương tác với giao diện để truy cập thông tin chi tiết.
Thiết bị được cung cấp đầy đủ yêu cầu khi sử dụng ứng dụng
Tài khoản đang được đăng nhập vào ứng dụng
Trạng thái hệ thống sau khi thực hiện use-case
Hệ thống hiển thị danh sách các khóa học hiện có trong ứng dụng cho người dùng
1 Người dùng vào trang “Home”
2 Người dùng nhấn chọn một thẻ khóa học bất kỳ và được điều hướng sang trang “CourseDetail”
Dòng sự kiện thay thế Không
Dòng sự kiện ngoại lệ
2a Quá tình tải lên bị lỗi, hệ thống hiển thị tương ưng
2a1 Hệ thống không thể tải ảnh với đường dẫn tương ứng (đường dẫn bị lỗi hoặc đường dẫn bằng null), Widget chứa ảnh hiển thị ảnh tĩnh mặc định
2a2 Hệ thống không thể tải lên danh thông tin khóa học, Hiển thị thông tin lỗi tương ứng
4.3.3.8 Use-case “Tham gia khóa học”
Bảng 4.3.3.8: Đặc tả use-case người dùng thực hiện [Tham gia khóa học]
Tên chức năng Tham gia khóa học
Tóm tắt Chức năng cho phép người dùng tham gia vào khóa học Đối tượng Học viên, Giảng viên
83 Điều kiện kích hoạt Sau khi người dùng nhấn chọn “Tham gia khóa học” Điều kiện thực hiện use- case
Thiết bị được cung cấp đầy đủ yêu cầu khi sử dụng ứng dụng
Người dùng đang trong trang chi tiết khóa học và chưa tham gia vào khóa học hiện có
Trạng thái hệ thống sau khi thực hiện use-case
Hệ thống ghi nhận việc người dùng tham gia vào khóa học, cho phép người dùng sử dụng các chức năng hạn chế
1 Người dùng vào trang “CourseDetail”
2 Người dùng nhấn chọn “Tham gia khóa học”
3 Hệ thống xử lý yêu cầu, nếu thành công cập nhật lại trạng thái trang và cho phép người dùng sử dụng các chức năng hạn chế
Dòng sự kiện thay thế Không
Dòng sự kiện ngoại lệ
3a Quá trình xử lý bị lỗi, hệ thống thông báo với người dùng
3a1 Người dùng hủy tiến trình, UC kết thúc 3a2 Người dùng thực hiện lại UC
4.3.3.9 Use-case “Bình luận khóa học”
Bảng 4.3.3.9: Đặc tả use-case người dùng tham gia [Bình luận khóa học]
Tên chức năng Bình luận khóa học
Chức năng bình luận cho phép học viên và giảng viên tương tác trong khóa học Để kích hoạt tính năng này, người dùng cần gửi đi bình luận Điều kiện thực hiện use-case này bao gồm việc người dùng hoàn thành bước gửi bình luận.
Thiết bị được cung cấp đầy đủ yêu cầu khi sử dụng ứng dụng
Người dùng đã tham gia vào khóa học hiện tại
Trạng thái hệ thống sau khi thực hiện use-case
Hệ thống ghi nhận bình luận của người dùng và hiển thị lên danh sách bình luận ở thời gian thực (real-time)
Dòng sự kiện chính 1 Người dùng vào tab “Comments”
2 Người dùng tham gia bình luận vào khóa học
3 Hệ thống xử lý yêu cầu, nếu thành công cập nhật bình luận vào danh sách bình luận để hiển thị với các người dùng khác ở thời gian thực
Dòng sự kiện thay thế Không
Dòng sự kiện ngoại lệ 3a Quá trình xử lý bị lỗi, hệ thống hiển thị biểu tượng lỗi ở bình luận tương ứng
4.3.3.10 Use-case “Đánh giá khóa học”
Bảng 4.3.3.10: Đặc tả use-case tham gia [Đánh giá khóa học]
Tên chức năng Đánh giá khóa học
Chức năng đánh giá khóa học được thiết kế cho học viên và giảng viên, nhằm thu thập phản hồi sau khi người dùng gửi đánh giá Điều kiện kích hoạt tính năng này là khi người dùng hoàn thành việc đánh giá khóa học.
Thiết bị được cung cấp đầy đủ yêu cầu khi sử dụng ứng dụng
Người dùng đã tham gia vào khóa học hiện tại
Trạng thái hệ thống sau khi thực hiện use-case Thông tin đánh giá của khóa học được cập nhật
1 Người dùng vào trang “CourseDetail”
2 Người dùng nhấn chọn Widget chứa thông tin đánh giá
3 Hệ thống hiển thị popup dialog cho phép người dùng gửi đánh giá cho khóa học
3 Hệ thống ghi nhận yêu cầu đánh giá, xử lý và cập nhật thông tin đánh giá của khóa học
Dòng sự kiện thay thế Không
Dòng sự kiện ngoại lệ
3a Quá trình xử lý bị lỗi, hệ thống không cập nhật lại dữ liệu 3a1 Người dùng thực hiện lại UC
4.3.3.11 Use-case “Nâng cấp tài khoản”
Bảng 4.3.3.11: Đặc tả use-case thực hiện [Nâng cấp tài khoản]
Tên chức năng Nâng cấp tài khoản
Chức năng nâng cấp tài khoản từ mặc định lên nâng cao dành cho học viên và giảng viên sẽ được kích hoạt sau khi người dùng hoàn tất thanh toán Điều này cho phép người dùng trải nghiệm nhiều tính năng và lợi ích hơn trong quá trình sử dụng.
Thiết bị được cung cấp đầy đủ yêu cầu khi sử dụng ứng dụng
Người dùng đã đăng nhập vào ứng dụng Tài khoản hiện đang đăng nhập là tài khoản mặc định
Trạng thái hệ thống sau khi thực hiện use-case
Hệ thống ghi nhận cập nhật của tài khoản và cho phép người dùng sử dụng các chức năng hạn chế
1 Người dùng vào trang “Profile”
2 Người dùng nhấn chọn trường “Nâng cấp tài khoản”
3 Hệ thống hiển thị browser được nhúg vào ứng dụng thể hiện tiến trình thanh toán
4 Người dùng thực hiện thanh toán bằng dịch vụ thanh toán VNPay
5 Người dùng thanh toán thành công, nhấn chọn thoát browser, hệ thống cập nhật dữ liệu, trạng thái tài khoản và cho phép người dùng sử dụng các tính năng hạn chế của ứng dụng
Dòng sự kiện thay thế Không
Dòng sự kiện ngoại lệ
4 Người dùng không hoàn tất tiến trình thanh toán, hệ thống không cập nhật lại dữ liệu
4a1 Nếu là lỗi dịch vụ VNPay, thông báo bằng trang trên browser
4a2 Nếu là lỗi hệ thống ứng dụng, hiển thị popup dialog với nội dung là lỗi tương ứng
4.3.3.12 Use-case “Làm bài kiểm tra”
Bảng 4.3.3.12: Đặc tả use-case thực hiện [Làm bài kiểm tra]
Tên chức năng Làm bài kiểm tra
Chức năng cho phép học viên và giảng viên thực hiện bài kiểm tra được kích hoạt khi người dùng chọn tham gia Điều này đảm bảo rằng người dùng có thể dễ dàng truy cập và thực hiện bài kiểm tra theo yêu cầu.
Thiết bị được cung cấp đầy đủ yêu cầu khi sử dụng ứng dụng
Người dùng đã đăng nhập vào ứng dụng Tài khoản đã tham gia vào khóa học
Trạng thái hệ thống sau khi thực hiện use-case
Hệ thống ghi nhận kết quả bài kiểm tra của tài khoản cho bài học tương ứng
1 Người dùng vào trang “LessonDetail”
2 Người dùng nhấn chọn làm bài kiểm tra
3 Người dùng làm và hoàn tất bài kiểm tra
4 Hệ thống ghi nhận kết quả bài kiểm tra
Dòng sự kiện thay thế Không
Dòng sự kiện ngoại lệ
Người dùng cần hoàn tất tiến trình kiểm tra để hệ thống lưu trữ kết quả Nếu không, hệ thống sẽ không lưu trữ kết quả bài kiểm tra và sẽ thông báo nội dung lỗi cho người dùng.
4.3.3.13 Use-case “Tham gia Livestream”
Bảng 4.3.3.13: Đặc tả use-case thực hiện việc [Tham gia livestream]
Tên chức năng Tham gia Livestream
Chức năng cho phép học viên và giảng viên tham gia vào livestream hiện có Để kích hoạt tính năng này, người dùng cần nhấn chọn "join room" Điều kiện để thực hiện use-case này là người dùng đã thực hiện bước kích hoạt.
Thiết bị được cung cấp đầy đủ yêu cầu khi sử dụng ứng dụng
Trạng thái hệ thống sau khi thực hiện use-case
Hệ thống cho phép người dùng tham gia vào phòng livestream theo id của room tương ứng
1 Người dùng vào trang “Livestream”
2 Người dùng nhập vào id của room và nhấn chọn
3 Hệ thống điều hướng người dùng sang phòng học tương ứng
Dòng sự kiện thay thế Không
Dòng sự kiện ngoại lệ 2a Hệ thống không xác thực được id của phòng, thông báo lỗi cho người dùng Activities Flow
4.3.3.14 Use-case “Tương tác với người dùng khác”
Bảng 4.3.3.14: Đặc tả use-case người dùng tham gia [Tương tác với người dùng khác]
Tên chức năng Tương tác với người dùng khác
Thiết kế dữ liệu
Hình 4.4.1.4.4.1: Sơ đồ logic dữ liệu Bảng 4.4.14.4.1: Danh sách các bảng dữ liệu
STT Tên bảng dữ liệu Diễn giải
1 User Thông tin tài khoản người dùng
2 Course Lưu thông tin khoá học
3 Section Thông tin của chương trong khoá học
4 Lesson Thông tin bài giảng trong từng chương
5 Exam Thông tin bài kiểm tra
6 Question Thông tin từng câu hỏi trong bài kiểm tra
7 Result Thông tin kết quả đạt được của người dùng trong bài kiểm tra
8 Comment Lưu bình luận của người dùng
9 Rate Lưu thông tin đánh giá của người dùng
10 History Lưu lịch sử học tập của người dùng
11 RecentCourse Lưu thông tin khoá học vừa học của người dùng
4.4.2 Mô tả chi tiết bảng dữ liệu
Bảng 4.4.2.1: Chi tiết bảng User
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/Ghi chú
1 userId string Khóa chính, Not null, sinh tự động
2 name string Không null Tên người dùng
3 password string Không null Mật khẩu
4 email string Không null Email
5 avatar string Không Mã avatar
6 birthday string Không Ngày sinh nhật
7 phone string Không Số điện thoại
8 role string Không null, là
9 gender string Không Giới tính
10 ratingScore number Không Điểm đánh giá
11 ratingNumber number Không Lượt đánh giá
12 isPremium boolean Mặc định là false User có phải premium hay không
13 startDateUsingPremium string Không Ngày user bắt đầu sử dụng gói Premium
Bảng 4.4.2.2: Chi tiết bảng Course
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/Ghi chú
1 courseId string Khóa chính, Not null, sinh tự động
2 title string Không null Tựa đề khoá học
3 description string Không null Mô tả khoá học
4 ratingScore number Không Điểm đánh giá khoá học
5 ratingNumber number Không Lượt đánh giá khoá học
6 image string Không null Mã hình ảnh khoá học
7 price number Không Giá khoá học
8 sale number Không Tỉ lệ giảm giá khoá học
9 teacherId string Không Tác giả khoá học
10 category string Không Phân loại khoá học
11 length number Không Độ dài thời gian khoá học
Bảng 4.4.2.3: Chi tiết bảng Section
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/Ghi chú
1 sectionId string Không null, mã chính, sinh tự động
Mã chương của khoá học
2 courseId string Không null Mã khoá học
3 title string Không Tựa đề chương
4 order number Không Thứ tự chương
5 lessons Array Không Danh sách mã bài học
Bảng 4.4.2.4: Chi tiết bảng Lesson
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/Ghi chú
1 lessonId string Không null, mã chính, tăng tự động
2 sectionId string Không null Mã chương học
3 date string Không null Thời gian tạo
4 url string Không null Đường dẫn
5 title string Không null Tựa đề bài học
6 order number Không null Thứ tự bài học
Bảng 4.4.2.5: Chi tiết bảng Exam
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/Ghi chú
1 examId string Không null, mã chính, sinh tự động
2 examTitle string Không null Tựa đề bài kiểm tra
3 lessonId string Không null Mã bài học
4 userId string Không null Mã người dùng tạo bài học
5 questions Array Không null Câu hỏi của bài giảng
6 results Array Không Kết quả làm bài
7 time number Không Thời gian làm bài
Bảng 4.4.2.6: Chi tiết bảng Question
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/Ghi chú
1 questionId string Không null, mã chính, sinh tự động
2 title string Không null Tựa đề câu hỏi
3 options Array Không null Các lựa chọn của câu hỏi
4 answer string Không null Đáp án của câu hỏi
Bảng 4.4.2.7: Chi tiết bảng Result
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/Ghi chú
1 userId string Không null Mã người dùng
2 score number Không null Điểm
Bảng 4.4.2.8: Chi tiết bảng Comment
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/Ghi chú
1 commentId string Không null, mã chính, sinh tự động
2 userId string Không null Mã người dùng
3 clientId string Không null Mã client tại server của socket
4 image string Không Hình ảnh
5 content string Không null Nội dung
6 createAt date Không null Ngày tạo
Bảng 4.4.2.9: Chi tiết bảng Rate
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/Ghi chú
1 rateId string Không null, mã chính, sinh tự động
2 userId string Không null Mã người dùng
3 courseId string Không null Mã khoá học
4 teacherId string Không null Mã người dùng là teacher
5 score number Không null Điểm đánh giá
6 comment string Không Nội dung đánh giá khoá học
Bảng 4.4.2.10: Chi tiết bảng History
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/Ghi chú
1 historyId string Không null, mã chính, sinh tự động
2 userId string Không null Mã người dùng
3 recentCourseId Array Không Khoá học vừa học
Bảng 4.4.2.11: Chi tiết bảng RecentCourse
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/Ghi chú
1 courseId String Không null, tăng tự động, mã chính
2 sectionId String Không null Mã chương
3 lessonId String Không null Mã bài học