NHIỆM VỤ THỰC HIỆN KHÓA LUẬN TỐT NGHIỆP Họ và tên sinh viên 1: Nguyễn Hữu Thắng MSSV: 20110568 Họ và tên sinh viên 2: Nguyễn Văn Giang MSSV: 20110463 Chuyên ngành: Công nghệ phần mềm Tên
Trang 1THÀNH PHỐ HỒ CHÍ MINH
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
Tp Hồ Chí Minh, tháng 7 năm 2024
GVHD: TS LÊ VĨNH THỊNH SVTH: NGUYỄN HỮU THẮNG
NGUYỄN VĂN GIANG
XÂY DỰNG WEBSITE HỌC TRỰC TUYẾN
S K L 0 1 3 8 2 4
ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ THÔNG TIN
Trang 2TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TPHCM
KHOA ĐÀO TẠO CHẤT LƯỢNG CAO
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
-🙦 🕮 🙤 -
BÁO CÁO KHÓA LUẬN TỐT NGHIỆP
ĐỀ TÀI: XÂY DỰNG WEBSITE HỌC TRỰC TUYẾN
GVHD: TS Lê Vĩnh Thịnh
Nguyễn Hữu Thắng 20110568 Nguyễn Văn Giang 20110463
TP Hồ Chí Minh, tháng 7 năm 2024
Trang 3CỘNG HÒA XÃ HỘI CHỦ NGHĨA
VIỆT NAM Độc lập – Tự do – Hạnh phúc
*******
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Họ và tên Sinh viên: MSSV:
Họ và tên Sinh viên: MSSV:
Ngành: Công nghệ thông tin
Tp Hồ Chí Minh, ngày tháng năm 20…
Giảng viên hướng dẫn
(Ký & ghi rõ họ tên)
Trang 4ii
CỘNG HÒA XÃ HỘI CHỦ NGHĨA
VIỆT NAM Độc lập – Tự do – Hạnh phúc
*******
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Họ và tên Sinh viên: MSSV:
Họ và tên Sinh viên: MSSV:
Ngành: Công nghệ thông tin
Tp Hồ Chí Minh, ngày tháng năm 20…
Giảng viên hướng dẫn
(Ký & ghi rõ họ tên)
Trang 5NHIỆM VỤ THỰC HIỆN KHÓA LUẬN TỐT NGHIỆP
Họ và tên sinh viên 1: Nguyễn Hữu Thắng MSSV: 20110568
Họ và tên sinh viên 2: Nguyễn Văn Giang MSSV: 20110463 Chuyên ngành: Công nghệ phần mềm
Tên đề tài: Xây dựng website học trực tuyến
Nội dung thực hiện:
- Xây dựng website học tập trực tuyến, với các tính năng chính như sau:
+ Cho phép học viên có thể xem thông tin khóa học, đăng ký khóa học, xem các video bài giảng trong mỗi khóa học, làm bài tập giữa các bài học (bài tập Quiz,
Code), có thể để lại đánh giá cho khóa học, có thể trò chuyện và chia sẻ kinh nghiệm
học tập của bản thân trên diễn đàn
+ Cho phép giảng viên có thể thêm khóa học, chỉnh sửa khóa học, thêm bài học, chỉnh sửa/ xóa bài học, xuất bản khóa học, xem/thêm/xóa các nội dung của khóa
học, thêm/xóa/sửa bài tập, có thể tạo bài tập bằng AI, tạo 1 diễn đàn học tập
+ Cho phép Admin có thể quản lý người dùng, khóa học
- Triển khai giao diện website với Tailwindcss, ShadcnUI
- Triển khai website với Docker, Nginx
- Kiểm thử các giao diện, chức năng của website
Thời gian thực hiện: 15 tuần (Bắt đầu từ 04/03/2024 đến 15/06/2024)
Chữ ký của SV: ………
Chữ ký của SV: ………
Trang 6iv
TP.HCM, Ngày… tháng… năm …
TRƯỞNG NGÀNH CNTT GIẢNG VIÊN HƯỚNG DẪN (Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên)
Trang 7LỜI CẢM ƠN
Lời đầu tiên, nhóm thực hiện xin phép được gửi lời cảm ơn chân thành đến với Khoa đào tạo Chất lượng cao – Trường Đại học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh đã tạo điều kiện cho nhóm chúng em được học tập, phát triển nền tảng kiến thức trong lĩnh vực Công nghệ thông tin nói chung và Khóa Luận Tốt Nghiệp nói riêng
Lời cảm ơn trân trọng nhất nhóm chúng em xin chân thành gửi đến thầy Lê Vĩnh Thịnh – người đã dùng mọi tâm huyết và tri thức của người Thầy, cùng đồng hành và trực tiếp giảng dạy, hướng dẫn và tạo mọi điều kiện thuận lợi giúp đỡ cho nhóm phát huy hết khả năng cũng như nâng cao kiến thức trong suốt quá trình thực hiện Khóa Luận
Trong thời gian qua nhóm chúng em đã cố gắng để hoàn thiện thật tốt đồ án này nhưng do thời gian có hạn, kỹ năng của bản thân còn hạn chế nên chắc chắn không tránh được những thiếu sót Chúng em chân thành được lắng nghe ý kiến góp ý của quý thầy
cô để qua đó rút ra được bài học kinh nghiệm để hoàn thiện và nâng cấp sản phẩm cùng với bản thân trong tương lai
Nhóm xin chân thành cảm ơn!
Nhóm thực hiện
Nguyễn Hữu Thắng – 20110568 Nguyễn Văn Giang – 20110463
Trang 8ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP
Họ và tên sinh viên 1: Nguyễn Hữu Thắng MSSV: 20110568
Họ và tên sinh viên 2: Nguyễn Văn Giang MSSV: 20110463
Thời gian làm luận văn: 15 tuần (Bắt đầu từ 04/03/2024 đến 15/06/2024)
1.1 Tính cấp thiết của đề tài:
Tính cấp thiết của việc xây dựng website học tập trực tuyến được thể hiện rõ qua nhu cầu ngày càng tăng về học tập linh hoạt và chất lượng Hiện nay, sinh viên gặp nhiều khó khăn trong việc tìm kiếm tài liệu lập trình đáng tin cậy và có lộ trình rõ ràng Website của chúng tôi cung cấp nội dung được biên soạn kỹ lưỡng bởi các giảng viên, giúp sinh viên tiết kiệm thời gian tìm kiếm tài liệu và tập trung vào việc học tập Tính năng tóm tắt nội dung video bài giảng và tạo phụ đề tự động giúp cải thiện trải nghiệm học tập, cho phép sinh viên nắm bắt nội dung nhanh chóng và hiệu quả Hơn nữa, website còn
hỗ trợ giảng viên bằng cách tiết kiệm thời gian chia sẻ kiến thức và tạo điều kiện cho sinh viên tự học trước khi bắt đầu học kỳ mới, từ đó nâng cao chất lượng giảng dạy và học tập
1.2 Mục đích của đề tài:
Mục đích của đề tài xây dựng website học tập trực tuyến là cung cấp một nền tảng hỗ trợ học tập hiệu quả và tiện lợi cho sinh viên và giảng viên Website hướng đến việc tạo ra một nguồn tài liệu lập trình chất lượng cao, được biên soạn kỹ lưỡng và có
lộ trình học tập rõ ràng từ các giảng viên chuyên môn Điều này giúp sinh viên tiết kiệm thời gian tìm kiếm tài liệu và tập trung vào việc học Ngoài ra, website còn cải thiện trải nghiệm học tập bằng các tính năng như tóm tắt nội dung video bài giảng và tạo phụ đề
Trang 9tự động, giúp người học dễ dàng nắm bắt nội dung và ôn tập một cách hiệu quả Đồng thời, nó cũng hỗ trợ giảng viên trong việc chia sẻ kiến thức và tạo điều kiện cho sinh viên tự học, góp phần nâng cao chất lượng giáo dục và thúc đẩy quá trình học tập tự chủ
1.3 Cách tiếp cận và phương pháp nghiên cứu:
- Đối tượng nghiên cứu:
+ Sinh viên: Những người gặp khó khăn trong việc tiếp cận và sử dụng tài
+ Công nghệ: Sử dụng các công nghệ hiện đại như trí tuệ nhân tạo (AI) cùng với các công cụ phát triển web tiên tiến để xây dựng và duy trì nền tảng học tập
1.4 Kết quả dự kiến đạt được:
Kết quả dự kiến đạt được từ việc xây dựng website học tập trực tuyến là cung cấp một nền tảng học tập chất lượng cao và tiện ích cho sinh viên và giảng viên Sinh viên sẽ có thể dễ dàng truy cập vào các tài liệu lập trình được biên soạn kỹ lưỡng và có
lộ trình học tập rõ ràng, giúp họ tiết kiệm thời gian tìm kiếm tài liệu và tập trung vào việc học Đối với giảng viên, website sẽ tạo điều kiện thuận lợi để chia sẻ kiến thức và
hỗ trợ sinh viên tự học, từ đó nâng cao chất lượng giảng dạy Tổng thể, website sẽ góp phần tạo ra một môi trường học tập hiện đại, tiện lợi và hiệu quả hơn cho cả sinh viên
và giảng viên
2 Phần Nội dung:
2.1 Chương 1: Tổng quan về đề tài
Đề tài xây dựng website học tập trực tuyến nhằm giải quyết vấn đề khó khăn trong việc tiếp cận tài liệu lập trình chất lượng và có lộ trình học tập rõ ràng Nền tảng
Trang 10viii
này cung cấp nội dung được biên soạn bởi các giảng viên chuyên môn, giúp sinh viên tiết kiệm thời gian tìm kiếm tài liệu và tập trung vào việc học
2.2 Chương 2: Cơ sở lý thuyết
Tìm hiểu các công nghệ hiện đại để áp dụng giúp xây dựng một nền tảng học tập trực tuyến hiện đại, đáp ứng nhu cầu học tập và giảng dạy của sinh viên và giảng viên
2.3 Chương 3: Phân tích và mô hình hóa yêu cầu
Khảo sát các website học tập khác để xác định những nhu cầu chính của người dùng và thiết kế các tính năng phù hợp
2.4 Chương 4: Thiết kế website
Tập trung vào thiết kế CSDL và UI, nhằm tạo ra một nền tảng học tập trực tuyến với hiệu suất cao, đáp ứng đầy đủ các nhu cầu của người dùng và mang lại trải nghiệm người dùng tốt nhất có thể
2.5 Chương 5: Kiểm thử hệ thống
Để đảm bảo tính ổn định và hiệu quả của hệ thống, thực hiện các bước kiểm thử chi tiết và toàn diện trước khi triển khai Các hoạt động kiểm thử bao gồm kiểm tra chức năng, kiểm thử tích hợp, kiểm thử đơn vị và kiểm thử hệ thống Chúng tôi sử dụng các
kỹ thuật kiểm thử tự động và thủ công để đảm bảo mọi tính năng hoạt động một cách nhất quán và không gặp lỗi Qua quá trình này, mong muốn cung cấp cho người dùng một nền tảng học tập trực tuyến đáng tin cậy và hiệu quả
2.6 Phần kết luận:
Phần kết luận thể hiện kết quả đạt được sau khi sản phẩm hoàn thành và cũng có những ưu điểm và những hạn chế Qua đó còn có hướng phát triển để hoàn thiện sản phẩm hơn
2.7 Tài liệu tham khảo:
Kế hoạch thực hiện:
STT Thời gian Công việc Ghi chú
Trang 11TP.HCM, Ngày….tháng… năm …
Ý KIẾN CỦA GIÁO VIÊN HƯỚNG DẪN NGƯỜI VIẾT ĐỀ CƯƠNG
(Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên)
Trang 12x
MỤC LỤC
1 CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI 1
1.1 LÝ DO CHỌN ĐỀ TÀI 1
1.2 MỤC TIÊU 1
1.3 CÔNG NGH Ệ SỬ DỤNG 2
2 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2
2.1 NESTJS 2
2.1.1 Giới thiệu 2
2.1.2 Các tính năng 2
2.2 NEXTJS 3
2.2.1 Giới thiệu 3
2.2.2 Các tính năng 3
2.3 PRISMA 3
2.3.1 Giới thiệu 3
2.3.2 Các tính năng 3
2.4 MONGODB 4
2.4.1 Giới thiệu 4
2.4.2 Các tính năng của MongoDB 4
2.5 SHADCNUI 4
2.5.1 Giới thiệu 4
2.5.2 Lý do sử dụng 4
2.6 GEMINIAI API 4
2.6.1 Giới thiệu 4
2.6.2 Lý do sử dụng 4
2.7 AMAZON S3 5
2.7.1 Giới thiệu 5
2.7.2 Lý do sử dụng 6
2.8 DOCKER 6
2.8.1 Giới thiệu 6
2.8.2 Lý do sử dụng 6
2.9 REDIS 7
2.9.1 Giới thiệu: 7
2.9.2 Lý do sử dụng: 7
2.10 ASSEMBLY API: 7
2.10.1 Giới thiệu 7
2.10.2 Lý do sử dụng 7
Trang 132.11 LIVEKIT 8
2.11.1 Giới thiệu 8
2.11.2 Lý do sử dụng 8
2.12 BOTPRESS 8
2.12.1 Giới thiệu 8
2.12.2 Lý do sử dụng 8
2.13 NGINX 9
2.13.1 Giới thiệu 9
2.13.2 Lý do sử dụng 9
2.14 TECHNICAL STACK 10
3 CHƯƠNG 3: PHÂN TÍCH VÀ MÔ HÌNH HÓA YÊU CẦU 11
3.1 KHẢO SÁT CÁC WEBSITE TƯƠNG TỰ 11
3.1.1 Udemy 11
3.1.2 Coursera 11
3.2 PHÂN TÍCH YÊU CẦU 12
3.2.1 Chức năng người dùng – Khách: 12
3.2.2 Chức năng người dùng – Học viên 13
3.2.3 Chức năng người dùng - giảng viên 14
3.2.4 Chức năng người dùng - Admin 16
3.3 MÔ HÌNH HÓA YÊU CẦU CHỨC NĂNG 18
3.3.1 Lược đồ Usecase 18
3.3.2 Đặc tả Usecase 19
3.4 LƯỢC ĐỒ TUẦN TỰ 47
3.4.1 Đăng ký tài khoản 47
3.4.2 Đăng nhập 48
3.4.3 Upload video bài giảng 49
3.4.4 Tự động tạo câu hỏi quizz 50
3.4.5 Tự động tạo phụ đề video 51
4 CHƯƠNG 4: THIẾT KẾ WEBSITE 52
4.1 THIẾT KẾ CƠ SỞ DỮ LIỆU 52
4.1.1 Sơ đồ thiết kế cơ sở dữ liệu 52
4.1.2 Mô tả thiết kế cơ sở dữ liệu 53
4.2 THIẾT KẾ GIAO DIỆN 66
4.2.1 Màn hình của quản trị viên 66
4.2.2 Màn hình của giảng viên 70
4.2.3 Màn hình của User 78
4.2.4 Màn hình của Học viên 83
Trang 14xii
5 CHƯƠNG 5: KIỂM THỬ HỆ THỐNG 87
5.1 THÔNG TIN CHUNG VỀ KIỂM THỬ 87
5.1.1 Test plan 87
5.1.2 Phương pháp tiếp cận 87
5.2 TEST CASE 87
5.2.1 Kiểm thử chức năng đăng ký tài khoản 87
5.2.2 Kiểm thử chức năng đăng nhập 88
5.2.3 Kiểm thử chức năng quên mật khẩu 88
5.2.4 Kiểm thử chức năng cập nhật thông tin người dùng 89
5.2.5 Kiểm thử chức năng đánh giá khóa học 90
5.2.6 Kiểm thử chức năng publish khóa học 90
5.2.7 Kiểm thử chức năng tạo khóa học 90
5.2.8 Kiểm thử chức năng chỉnh sửa khóa học 91
5.2.9 Kiểm thử chức năng xem thông tin khóa học 92
6 CHƯƠNG 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 92
6.1 KẾT QUẢ ĐẠT ĐƯỢC 92
6.2 ƯU ĐIỂM 92
6.3 HẠN CHẾ 93
6.4 HƯỚNG PHÁT TRIỂN 93
Trang 15DANH MỤC HÌNH ẢNH
Hình 2.1: Hình mô tả Technical stack 10
Hình 3.1: Hình lược đồ Usecase 19
Hình 3.2: Hình usecase đăng ký 19
Hình 3.3: Hình usecase đăng nhập 20
Hình 3.4: Hình usecase khôi phục mật khẩu 23
Hình 3.5: Hình usecase tìm kiếm khóa học 25
Hình 3.6: Hình usecase xem tổng quan khóa học 25
Hình 3.7: Hình usecase đăng ký khóa học 26
Hình 3.8: Hình usecase hỏi AI 27
Hình 3.9: Hình usecase quản lý thông tin cá nhân 29
Hình 3.10: Hình usecase xem chi tiết khóa học 31
Hình 3.11: Hình usecase đăng xuất 34
Hình 3.12: Hình usecase quản lý khóa học 35
Hình 3.13: Hình usecase quản lý bài tập 38
Hình 3.14: Hình usecase quản lý học viên 41
Hình 3.15: Hình usecase quản lý bài giảng 42
Hình 3.16: Hình usecase quản lý người dùng 45
Hình 3.17: Hình usecase quản lý khóa học 46
Hình 3.18: Hình lược đồ tuần tự người dùng đăng ký tài khoản 47
Hình 3.19: Hình lược đồ tuần tự người dùng đăng nhập 48
Hình 3.20: Hình lược đồ tuần tự giảng viên upload video bài giảng 49
Hình 3.21: Hình lược đồ tuần tự giảng viên tự động tạo câu hỏi quizz 50
Hình 3.22: Hình lược đồ tuần tự giảng viên tự động tạo phụ đề video 51
Hình 4.1: Hình các bảng trong cơ sở dữ liệu 53
Hình 4.2: SCA001:Trang quản lý khóa học 66
Hình 4.3: SCA002 Trang quản lý người dùng 67
Hình 4.4: SCA003 Trang xem thông tin người dùng 68
Hình 4.5: SCA004 Trang quản lý đăng ký giảng viên 68
Hình 4.6: SCA005 Trang chi tiết đăng ký giảng viên 69
Hình 4.7: SCI001 Trang quản lý khóa học của giảng viên 70
Hình 4.8: SCI002 Trang chỉnh sửa bài học 71
Hình 4.9: SCI003 Trang chỉnh sửa thông tin khóa học 73
Hình 4.10: SCI004 Trang chỉnh sửa chương 74
Hình 4.11: SCI006 Trang chỉnh sửa bài tập 75
Hình 4.12: SCI007 Trang chỉnh sửa câu hỏi 76
Hình 4.13: SCI008 Trang quản lý người dùng 77
Hình 4.14: SCI009 Trang biểu đồ thống kê người dùng 77
Hình 4.15: SCU001 Trang chính của hệ thống 78
Hình 4.16: SCU002 Trang đăng nhập 79
Hình 4.17: SCU003 Trang đăng ký 80
Hình 4.18: SCU004 Trăng quên mật khẩu 81
Hình 4.19: SCU005 Trang khôi phục mật khẩu 81
Hình 4.20: SCU006 Trang xem thông tin khóa học 1 82
Hình 4.21: SCHV001 Trang cá nhân 83
Hình 4.22: SCHV002 Trang xem video bài học 84
Hình 4.23: SCHV003 Trang trả lời Quiz 85
Hình 4.24: SCHV005 Trang hỏi đáp bài học 85
Trang 16xiv
Hình 4.25: SCHV007 Trang thay đổi mật khẩu 86
DANH MỤC BẢNG BIỂU Bảng 3.1: Bảng mô tả chức năng đăng ký tài khoản mới 12
Bảng 3.2: Bảng mô tả chức năng đăng nhập 12
Bảng 3.3: Bảng mô tả chức năng khôi phục mật khẩu 12
Bảng 3.4: Bảng mô tả chức năng quản lý thông tin cá nhân 13
Bảng 3.5: Bảng mô tả chức năng đăng ký tham gia vào khóa học 13
Bảng 3.6: Bảng mô tả chức năng học tập 13
Bảng 3.7: Bảng mô tả chức năng hỏi đáp 14
Bảng 3.8: Bảng mô tả chức năng bình luận khóa học 14
Bảng 3.9: Bảng mô tả chức năng quản lý khóa học 14
Bảng 3.10: Bảng mô tả chức năng quản lý bài giảng 15
Bảng 3.11: Bảng mô tả chức năng công khai khóa học 15
Bảng 3.12: Bảng mô tả chức năng quản lý bài tập 15
Bảng 3.13: Bảng mô tả chức năng quản lý học viên 16
Bảng 3.14: Bảng mô tả chức năng thống kê số lượng học viên 16
Bảng 3.15: Bảng mô tả chức năng quản lý người dùng 16
Bảng 3.16: Bảng mô tả chức năng quản lý khóa học 17
Bảng 3.17: Bảng đặc tả Usecase đăng ký 19
Bảng 3.18: Bảng đặc tả Usecase đăng nhập.bằng tài khoản 20
Bảng 3.19: Bảng đặc tả Usecase đăng nhập bằng google 21
Bảng 3.20: Bảng đặc tả Usecase đăng nhập bằng github 22
Bảng 3.21 Bảng đặc tả usecase khôi phục mật khẩu.: 23
Bảng 3.22: Bảng đặc tả usecase tìm kiếm khóa học 25
Bảng 3.23: Bảng đặc tả usecase xem tổng quan khóa học 26
Bảng 3.24: Bảng đặc tả usecase đăng ký khóa học 26
Bảng 3.25: Bảng đặc tả usecase tóm tắt khóa học 27
Bảng 3.26: Bảng đặc tả usecase trò chuyện 29
Bảng 3.27: Bảng đặc tả usecase thay đổi thông tin 29
Bảng 3.28: Bảng đặc tả usecase thay đổi mật khẩu 30
Bảng 3.29: Bảng đặc tả usecase xem bài giảng 31
Bảng 3.30: Bảng đặc tả usecase làm bài tập 32
Bảng 3.31: Bảng đặc tả usecase xem tài liệu 33
Bảng 3.32: Bảng đặc tả usecase đọc nội dung tóm tắt 33
Bảng 3.33: Bảng đặc tả usecase đăng xuất 34
Bảng 3.34: Bảng đặc tả usecase thêm khóa học 35
Bảng 3.35: Bảng đặc tả usecase cập nhật khóa học 36
Bảng 3.36: Bảng đặc tả usecase xóa khóa học 37
Bảng 3.37: Bảng đặc tả usecase thêm bài tập 38
Bảng 3.38: Bảng đặc tả usecase chỉnh sửa bài tập 39
Bảng 3.39: Bảng đặc tả usecase xóa bài tập 39
Bảng 3.40: Bảng đặc tả usecase quản lý học viên 41
Bảng 3.41: Bảng đặc tả usecase thêm bài giảng 42
Bảng 3.42: Bảng đặc tả usecase chỉnh sửa bài giảng 43
Bảng 3.43: Bảng đặc tả usecase xóa bài giảng 43
Bảng 3.44: Bảng đặc tả usecase tạo phụ đề tự động cho video 44
Bảng 3.45: Bảng đặc tả usecase cập nhật quyền 45
Trang 17Bảng 3.46: Bảng đặc tả usecase quản lý khóa học 46
Bảng 4.1: Bảng mô tả thuộc tính của User 53
Bảng 4.2: Bảng mô tả thuộc tính của PasswordResetToken 54
Bảng 4.3: Bảng mô tả thuộc tính của Topic 54
Bảng 4.4: Bảng mô tả thuộc tính của Course 54
Bảng 4.5: Bảng mô tả thuộc tính của Chapter 55
Bảng 4.6: Bảng mô tả thuộc tính của Lesson 56
Bảng 4.7: Bảng mô tả thuộc tính của Review 56
Bảng 4.8: Bảng mô tả thuộc tính của ReviewReply 57
Bảng 4.9: Bảng mô tả thuộc tính của Exercise 57
Bảng 4.10: Bảng mô tả thuộc tính của Quiz 57
Bảng 4.11: Bảng mô tả thuộc tính của UserProgress 58
Bảng 4.12: Bảng mô tả thuộc tính của UserProgressQuiz 58
Bảng 4.13: Bảng mô tả thuộc tính của Attachment 59
Bảng 4.14: Bảng mô tả thuộc tính của Level 59
Bảng 4.15: Bảng mô tả thuộc tính của AsyncVideo 59
Bảng 4.16: Bảng mô tả thuộc tính của Subtitle 59
Bảng 4.17: Bảng mô tả thuộc tính của Content 60
Bảng 4.18: Bảng mô tả thuộc tính của LabCode 60
Bảng 4.19: Bảng mô tả thuộc tính của FileCode 60
Bảng 4.20: Bảng mô tả thuộc tính của Code 60
Bảng 4.21: Bảng mô tả thuộc tính của FileTest 61
Bảng 4.22: Bảng mô tả thuộc tính của UserProgressCode 61
Bảng 4.23: Bảng mô tả thuộc tính của Server 61
Bảng 4.24: Bảng mô tả thuộc tính của Member 62
Bảng 4.25: Bảng mô tả thuộc tính của Channel 62
Bảng 4.26: Bảng mô tả thuộc tính của Message 62
Bảng 4.27: Bảng mô tả thuộc tính của Conversation 63
Bảng 4.28: Bảng mô tả thuộc tính của DirectMessage 63
Bảng 4.29: Bảng liệt kê các Role 63
Bảng 4.30: Bảng liệt kê các TypeExercise 64
Bảng 4.31: Bảng liệt kê các ContentType 64
Bảng 4.32: Bảng liệt kê các LanguageType 64
Bảng 4.33: Bảng liệt kê các MimeType 64
Bảng 4.34: Bảng liệt kê các LevelType 65
Bảng 4.35: Bảng liệt kê các QueueType 65
Bảng 4.36: Bảng liệt kê các ChannelType 65
Bảng 4.37: Bảng liệt kê các MemberRole 65
Bảng 4.38: Bảng mô tả Trang quản lý khóa học 66
Bảng 4.39: Bảng mô tả Trang quản lý người dùng 67
Bảng 4.40: Bảng mô tả Trang xem thông tin người dùng 68
Bảng 4.41: Bảng mô tả Trang quản lý đăng ký giảng viên 68
Bảng 4.42: Bảng mô tả Trang chi tiết đăng ký giảng viên 69
Bảng 4.43: Bảng mô tả Trang quản lý khóa học của giảng viên 70
Bảng 4.44: Bảng mô tả Trang chỉnh sửa bài học 71
Bảng 4.45: Bảng mô tả Trang chỉnh sửa thông tin khóa học 73
Bảng 4.46: Bảng mô tả Trang chỉnh sửa chương 74
Bảng 4.47: Bảng mô tả Trang chỉnh sửa bài tập 75
Bảng 4.48: Bảng mô tả Trang chỉnh sửa câu hỏi 76
Trang 18xvi
Bảng 4.49: Bảng mô tả Trang quản lý người dùng 77
Bảng 4.50: Bảng mô tả Trang biểu đồ thống kê người dùng 77
Bảng 4.51: Bảng mô tả Trang chính của hệ thống 78
Bảng 4.52: Bảng mô tả Trang đăng nhập 79
Bảng 4.53: Bảng mô tả Trang đăng ký 80
Bảng 4.54: Bảng mô tả chức năng quên mật khẩu 81
Bảng 4.55: Bảng mô tả Trang khôi phục mật khẩu 81
Bảng 4.56: Bảng mô tả Trang xem thông tin khóa học 1 82
Bảng 4.57: Bảng mô tả Trang cá nhân 83
Bảng 4.58: Bảng mô tả trang xem video bài học 84
Bảng 4.59: Bảng mô tả Trang trả lời Quiz 85
Bảng 4.60: Bảng mô tả Trang hỏi đáp bài học 85
Bảng 4.61: Bảng mô tả Trang thay đổi mật khẩu 86
Bảng 5.1: Bảng mô tả kiểm thử chức năng đăng ký tài khoản 87
Bảng 5.2: Bảng mô tả kiểm thử chức năng đăng nhập 88
Bảng 5.3: Bảng mô tả kiểm thử chức năng quên mật khẩu 88
Bảng 5.4: Bảng mô tả kiểm thử chức năng cập nhật thông tin người dùng 89
Bảng 5.5: Bảng mô tả kiểm thử chức năng đánh giá khóa học 90
Bảng 5.6: Bảng mô tả kiểm thử chức năng publish khóa học 90
Bảng 5.7: Bảng mô tả kiểm thử chức năng tạo khóa học 90
Bảng 5.8: Bảng mô tả kiểm thử chức năng chỉnh sửa khóa học 91
Bảng 5.9: Bảng mô tả kiểm thử chức năng xem thông tin khóa học 92
Trang 191 CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI
1.1 LÝ DO CHỌN ĐỀ TÀI
Trong thời đại chúng ta hiện nay, đời sống xã hội ngày càng phát triển và tiến bộ nhanh chóng, thúc giục mỗi cá nhân phải trang bị cho mình những kiến thức, kỹ năng phong phú để hòa nhập liền mạch với xã hội và góp phần mang lại hạnh phúc cho bản thân và những người thân yêu Do đó, tầm quan trọng của việc học tập luôn được tôn vinh và củng cố Với tầm quan trọng ngày càng tăng của giáo dục, điều tự nhiên là cách chúng ta tiếp thu kiến thức cũng đóng một vai trò quan trọng Điều này trở nên đặc biệt phù hợp trong thời đại có nhiều con đường học tập Do đó, sẽ thật thiếu sót nếu không thừa nhận sự phổ biến ngày càng tăng của các phương pháp học tập trực tuyến trên toàn cầu Với kết nối internet đơn giản trên mọi thiết bị, người học có thể tham gia vào các buổi học bất cứ lúc nào và từ bất kỳ địa điểm nào Học trực tuyến đã trở thành một lựa chọn phổ biến cho những người đang tìm kiếm một phương tiện tiếp thu kiến thức nhanh chóng, dễ tiếp cận và tiết kiệm chi phí Ngày nay, nó đã khẳng định mình là một sự hiện diện đáng kể trong một số lĩnh vực phát triển mạnh trên toàn cầu Hiện nay có rất nhiều trang học tập trực tuyến như Udemy, Coursera, W3Schools, Codecademy, hầu như các website này đều phải thu phí để của người học và cũng chưa có tính năng tương tác giữa các người học với nhau Vì vậy, Website này nhóm em xây dựng nhằm tạo một môi trường học tập miễn phí, mọi người có thể chia sẻ tài liệu và tương tác với nhau
ra các trải nghiệm học tập độc đáo và hiệu quả Người dùng sẽ có khả năng theo dõi tiến trình học tập của mình, môi trường học tập sẽ được thiết kế linh hoạt, cho phép người
Trang 20sẽ giúp người dùng ôn tập lại các kiến thức
Thiết kế giao diện thân thiện, và đạt hiệu suất hoạt động cao, ổn định, lâu dài Triển khai website với Docker, Nginx
1.3 CÔNG NGHỆ SỬ DỤNG
Front-end: NextJS, Tailwindcss, ShadcnUI
Back-end: NestJs
Database: MongoDB, Prisma, Redis
Các dịch vụ khác: AWS, GeminiAPI, LiveKit, Assembly API, AzureAI, BotPress, Nginx
2 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1 NESTJS
2.1.1 Giới thiệu
NestJS là một framework mã nguồn mở để phát triển ứng dụng server-side (backend applications) bằng ngôn ngữ TypeScript hoặc JavaScript Nó được xây dựng trên cơ sở của Node.js và sử dụng các khái niệm từ TypeScript để tạo ra một môi trường phát triển hiện đại và mạnh mẽ cho việc xây dựng các ứng dụng web và API (Hoàng, 2023)
2.1.2 Các tính năng
NestJS thúc đẩy sự phát triển của TypeScript
Mã nguồn mở của Node.js được phát triển mạnh mẽ trong thời gian gần đây
Sử dụng ngôn ngữ lập trình TypeScript và JavaScript
Không tốn nhiều thời gian cho việc cài đặt và nghiên cứu sử dụng
Phát triển mạnh mẽ nhờ giao diện của dòng lệnh CLI
Tài liệu phong phú, đa dạng, đầy đủ
Khả năng mở rộng, phát triển và bảo trì cơ sở mã được thực hiện
Trang 21Hỗ trợ các modules giúp ứng dụng được tích hợp các công nghệ và khái niệm như: Caching, WebSockets, Validation, TypeORM,… (Aptech, 2023)
2.2 NEXTJS
2.2.1 Giới thiệu
NextJS là framework mã nguồn mở được xây dựng trên nền tảng của React, cho phép chúng ta xây dựng các trang web tĩnh có tốc độ siêu nhanh và thân thiện với người dùng, cũng như xây dựng các ứng dụng web React (Hoang, 2023)
2.2.2 Các tính năng
Server-Side rendering (SSR)
Static site generation (SSG)
Single-Page application (SPA)
Development of faster application
Prisma Migrate: dùng để thay đổi cấu trúc của cơ sở dữ liệu theo thời gian, có thể tạo ra các file migration (di chuyển) từ Prisma Schema và sử dụng để truy vấn vào cơ
sở dữ liệu
Trang 224
Prisma Studio: là một giao diện web cho phép xem và chỉnh sửa dữ liệu trong
cơ sở dữ liệu, dùng để kiểm tra kết quả của các truy vấn và các thay đổi của Prisma Client và Prisma Migrate
2.4 MONGODB
2.4.1 Giới thiệu
MongoDB là một cơ sở dữ liệu hướng dữ liệu, một dạng NoSQL Database Về lịch sử, MongoDB được bắt đầu phát triển vào năm 2007 và vào năm 2009, công ty chủ quản đã biến MongoDB thành một open-source Hiện tại MongoDB là một source-available software Ta có thể thấy được MongoDB là cơ sở dữ liệu hàng đầu được rất nhiều người sử dụng và các ông lớn trong ngành đang hợp tác như Google, Amazon,
2.4.2 Các tính năng của MongoDB
Thực thi Javascript phía máy chủ
Giới hạn kích thước collection
Trang 23API này cho phép bạn khai thác sức mạnh của công nghệ trí tuệ nhân tạo tiên tiến để xây dựng các ứng dụng và dịch vụ thông minh
Tính năng chính của GEMINIAI API:
- Xử lý ngôn ngữ tự nhiên (NLP): Phân tích cú pháp và ngữ nghĩa của văn bản Nhận diện và phân loại thực thể trong văn bản Tạo văn bản tự động với chất lượng cao
- Học máy (Machine Learning): Tích hợp các mô hình học máy tùy chỉnh Hỗ trợ đào tạo và triển khai các mô hình dự đoán Phân tích dữ liệu để đưa ra các dự đoán và khuyến nghị
- Tương tác giọng nói (Speech Recognition): Chuyển đổi giọng nói thành văn bản với độ chính xác cao Tạo giọng nói tự động từ văn bản Phân tích và nhận diện giọng nói để cải thiện trải nghiệm người dùng
- Xử lý hình ảnh (Image Processing): Nhận diện và phân loại hình ảnh Phân tích nội dung hình ảnh và video Tích hợp với các ứng dụng thị giác máy tính
- Tích hợp và bảo mật: Hỗ trợ các phương thức xác thực và ủy quyền bảo mật Cung cấp các API RESTful dễ dàng tích hợp với các hệ thống hiện có Quản lý
dữ liệu và bảo vệ quyền riêng tư của người dùng Lợi ích của việc sử dụng GEMINIAI API:
2.7 AMAZON S3
2.7.1 Giới thiệu
Amazon Simple Storage Service là một dịch vụ lưu trữ đối tượng cung cấp khả năng thay đổi theo quy mô, tính khả dụng của dữ liệu, bảo mật và hiệu năng hàng đầu trong lĩnh vực Điều này có nghĩa là khách hàng thuộc mọi quy mô và lĩnh vực có thể
sử dụng dịch vụ này để lưu trữ và bảo vệ bất kỳ lượng dữ liệu nào cho nhiều trường hợp
Trang 24Nhiều lớn lưu trữ tiết kiệm chi phí
Bảo mật, tính tuân thủ và khả năng kiểm tra chưa từng có
Các công cụ quản lý dùng để kiểm soát dữ liệu chi tiết
Dịch vụ truy vấn dùng để kiểm soát dữ liệu chi tiết
Dịch vụ truy vấn tại chỗ cho phân tích
Dịch vụ lưu trữ đám mây được hỗ trợ nhiều nhất
2.8 DOCKER
2.8.1 Giới thiệu
Docker là nền tảng phần mềm cho phép người dùng xây dựng, kiểm thử và triển khai ứng dụng một cách nhanh chóng Docker đóng gói phần mềm vào các đơn vị tiêu chuẩn hóa được gọi là container có mọi thứ mà phần mềm cần để chạy, trong đó có thư viện, công cụ hệ thống, mã và thời gian chạy Bằng cách sử dụng Docker, bạn có thể nhanh chóng triển khai và thay đổi quy mô ứng dụng vào bất kỳ môi trường nào và biết chắc rằng mã của bạn sẽ chạy được (Docker là gì?, n.d.)
2.8.2 Lý do sử dụng
Dễ sử dụng: Docker rất dễ cho mọi người sử dụng từ lập trình viên, sysadmin,
nó tận dụng lợi thế của container để build, test nhanh chóng Có thể đóng gói ứng dụng trên laptop của họ và chạy trên public cloud, private cloud
Tốc độ: Docker container rất nhẹ và nhanh, bạn có thể tạo và chạy docker container trong vài giây
Môi trường chạy và khả năng mở rộng: có thể chia nhỏ những chức năng của ứng dụng thành các container riêng lẻ Docker, rất dễ để liên kết các container với nhau để tạo thành một ứng dụng, làm cho nó dễ dàng scale, update các thành phần độc lập với nhau (Minh, n.d.)
Trang 252.9 REDIS
2.9.1 Giới thiệu:
Redis là một cơ sở dữ liệu NoSQL mã nguồn mở, lưu trữ dữ liệu dưới dạng value và được sử dụng chủ yếu để lưu trữ dữ liệu trong bộ nhớ Điều này giúp Redis đạt được hiệu suất cao và khả năng xử lý dữ liệu nhanh chóng Redis hỗ trợ nhiều kiểu dữ liệu khác nhau như strings, hashes, lists, sets, sorted sets, bitmaps, hyperloglogs, và các kiểu dữ liệu không gian địa lý (geospatial indexes)
key-2.9.2 Lý do sử dụng:
Hiệu suất cao: Redis lưu trữ dữ liệu trong bộ nhớ, do đó có tốc độ truy cập và xử
lý rất nhanh Điều này đặc biệt hữu ích cho các ứng dụng yêu cầu hiệu suất cao và thời gian đáp ứng nhanh
Khả năng mở rộng: Redis hỗ trợ clustering và replication, giúp dễ dàng mở rộng quy mô hệ thống để đáp ứng nhu cầu tăng trưởng của ứng dụng
Đa dạng kiểu dữ liệu: Redis hỗ trợ nhiều kiểu dữ liệu phức tạp, cho phép lưu trữ
và xử lý các loại dữ liệu khác nhau một cách hiệu quả
Hỗ trợ pub/sub: Redis có tính năng publish/subscribe, giúp xây dựng các hệ thống thông báo real-time một cách dễ dàng
Khả năng sao lưu và khôi phục dữ liệu: Redis hỗ trợ snapshotting và AOF (Append-Only File), giúp sao lưu dữ liệu và khôi phục khi cần thiết
Dễ sử dụng: Redis có API đơn giản và dễ sử dụng, hỗ trợ nhiều ngôn ngữ lập trình phổ biến như Python, Java, C#, và nhiều ngôn ngữ khác
2.10 ASSEMBLY API:
2.10.1 Giới thiệu
Assembly API được thiết kế để hỗ trợ các ứng dụng có khả năng nhận dạng giọng nói, chuyển đổi văn bản thành giọng nói, phân tích cảm xúc, dịch thuật, và nhiều tính năng khác
Trang 268
Phân tích và hiểu ngữ cảnh: Assembly API có khả năng phân tích ngữ cảnh và cảm xúc trong văn bản và giọng nói, giúp tạo ra các ứng dụng có thể hiểu và phản hồi theo cách phù hợp với cảm xúc và ngữ cảnh của người dùng
Dễ tích hợp và sử dụng: Assembly API cung cấp các thư viện và tài liệu phong phú, giúp các nhà phát triển dễ dàng tích hợp và sử dụng trong các ứng dụng của họ Hỗ trợ nhiều ngôn ngữ lập trình và nền tảng khác nhau
2.11 LIVEKIT
2.11.1 Giới thiệu
Là một nền tảng mã nguồn mở, cung cấp các dịch vụ truyền thông thời gian thực như video, audio, và dữ liệu Được xây dựng dựa trên công nghệ WebRTC (Web Real-Time Communication), Livekit giúp các nhà phát triển dễ dàng tích hợp chức năng giao tiếp thời gian thực vào các ứng dụng web và di động
2.11.2 Lý do sử dụng
Video và Audio Streaming: Livekit cho phép streaming video và audio với độ trễ thấp, giúp người dùng có trải nghiệm tốt hơn khi sử dụng các dịch vụ như video call, hội nghị trực tuyến, hoặc streaming game
Scalability: Livekit được thiết kế để có thể mở rộng dễ dàng, từ việc hỗ trợ số lượng người dùng ít cho đến hàng triệu người dùng mà không làm giảm chất lượng dịch
Mã nguồn mở: Botpress là một nền tảng mã nguồn mở, có nghĩa là bạn có thể tự
do tải xuống, tùy chỉnh và triển khai theo nhu cầu của mình mà không phải trả phí bản quyền
Trang 27Giao diện người dùng thân thiện: Botpress cung cấp một giao diện người dùng
đồ họa dễ sử dụng, giúp việc xây dựng và quản lý chatbot trở nên đơn giản hơn, ngay
cả đối với những người không có nhiều kinh nghiệm về lập trình
Tính tùy chỉnh cao: Nền tảng này cho phép bạn tùy chỉnh gần như mọi khía cạnh của chatbot, từ giao diện người dùng, kịch bản trò chuyện cho đến các tích hợp với các
2.13.2 Lý do sử dụng
Có khả năng xử lý hơn 10.000 kết nối cùng lúc với bộ nhớ thấp
Phục vụ tập tin tĩnh (static files) và lập chỉ mục tập tin
Tăng tốc reverse proxy bằng bộ nhớ đệm (cache), cân bằng tải đơn giản và khả năng chịu lỗi
Hỗ trợ tăng tốc với bộ nhớ đệm của FastCGI, uwsgi, SCGI, và các máy chủ memcached
Kiến trúc modular, tăng tốc độ nạp trang bằng nén gzip tự động
Hỗ trợ mã hoá SSL và TLS
Cấu hình linh hoạt; lưu lại nhật ký truy vấn
Chuyển hướng lỗi 3XX-5XX
Rewrite URL (URL rewriting) dùng regular expressions
Hạn chế tỷ lệ đáp ứng truy vấn
Giới hạn số kết nối đồng thời hoặc truy vấn từ 1 địa chỉ
Khả năng nhúng mã PERL (TopDev, n.d.)
Trang 2810
2.14 TECHNICAL STACK
Hình 2.1: Hình mô tả Technical stack
Trang 293 CHƯƠNG 3: PHÂN TÍCH VÀ MÔ HÌNH HÓA YÊU CẦU
3.1 KHẢO SÁT CÁC WEBSITE TƯƠNG TỰ
3.1.1 Udemy
Udemy, Inc, là một nhà cung cấp khóa học trực tuyến mở (MOOC) lớn của Mỹ nhằm vào sinh viên và người lớn Nó được thành lập vào tháng 5 năm 2010 bởi Eren Bali, Gagan Biyani và Oktay Caglar (Theo Wikipedia)
y học, sinh học, khoa học xã hội, toán học, kinh tế học, khoa học máy tính và một số lĩnh vực khác (Theo Wikipedia)
Trang 303.2.1.1.2 Yêu cầu chức năng
Bảng 3.1: Bảng mô tả chức năng đăng ký tài khoản mới
Đăng ký tài khoản Đăng ký trở thành học viên
3.2.1.2 Chức năng đăng nhập
3.2.1.2.1 Mô tả
Chức năng đăng nhập để sử các chức năng chính của trang web 3.2.1.2.2 Yêu cầu chức năng
Bảng 3.2: Bảng mô tả chức năng đăng nhập
Bảng 3.3: Bảng mô tả chức năng khôi phục mật khẩu
Nhập email của tài khoản Nhập thông tin email được dùng để đăng nhận tài khoản Nhận url từ email Truy cập URL để điền mật khẩu mới vào form
Tạo mật khẩu mới Tạo mật khẩu mới cho tài khoản
Trang 313.2.2 Chức năng người dùng – Học viên
3.2.2.1 Chức năng quản lý thông tin cá nhân
3.2.2.1.1 Mô tả
Chức năng dùng để xem thông tin cá nhân
3.2.2.1.2 Yêu cầu chức năng
Bảng 3.4: Bảng mô tả chức năng quản lý thông tin cá nhân
Xem thông tin cá nhân Xem thông tin cá nhân của học viên
Chỉnh sửa thông tin cá
nhân
Chỉnh sửa thông tin cá nhân của học viên
Xem thông tin các khóa
học đã tham gia
Xem thông tin các khóa học đã tham gia và tiến hành học tập
Đổi mật khẩu Cập nhật mật khẩu mới
3.2.2.2 Chức năng đăng ký tham gia vào khóa học
3.2.2.2.1 Mô tả
Học viên đăng ký tham gia vào khóa học
3.2.2.2.2 Yêu cầu chức năng
Bảng 3.5: Bảng mô tả chức năng đăng ký tham gia vào khóa học
Xem danh sách khóa học Xem danh sách khóa học
Xem thông tin giới thiệu
khóa học
Xem thông tin giới thiệu về khóa học, bài học xem trước,
… Đăng ký khóa học Đăng ký tham gia khóa học để theo dõi bài học
3.2.2.3 Chức năng học tập
3.2.2.3.1 Mô tả
Học viên xem bài giảng của các khóa học đã tham gia
3.2.2.3.2 Yêu cầu chức năng
Bảng 3.6: Bảng mô tả chức năng học tập
Xem video bài giảng Xem các video bài giảng của khóa học đã tham gia
Trả lời các câu hỏi có trong
bài giảng
Trả lời các câu hỏi sau mỗi video bài giảng (nếu có) để xem video tiếp theo
Trang 32Bảng 3.7: Bảng mô tả chức năng hỏi đáp
Đặt câu hỏi Học viên đặt câu hỏi ở mỗi video bài học khi thắc mắc về
những kiến thức trong bài học đó Trả lời câu hỏi Các học viên đang tham gia khóa học hoặc giảng viên
giải đáp thắc mắc về câu hỏi được đặt ra trong bài học
3.2.2.5 Chức năng bình luận khóa học
3.2.2.5.1 Mô tả
Học viên bình luận khóa học khi đã đăng ký
3.2.2.5.2 Yêu cầu chức năng
Bảng 3.8: Bảng mô tả chức năng bình luận khóa học
Thêm bình luận Học viên thêm bình luận về khóa học
Sửa bình luận Học viên sửa lại bình luận trước đó
3.2.3 Chức năng người dùng - giảng viên
3.2.3.1 Chức năng quản lý khóa học
3.2.3.1.1 Mô tả
Chức năng xem, thêm và cập nhật khóa học của giảng viên 3.2.3.1.2 Yêu cầu chức năng
Bảng 3.9: Bảng mô tả chức năng quản lý khóa học
Xem thông tin khóa học Xem thông tin khóa học đã được tạo
Thêm khóa học mới Giảng viên tạo khóa học mới của mình
Cập nhật khóa học Giảng viên cập nhật các thông tin khóa học của chính
mình như: thay đổi ảnh bìa, tóm tắt nội dung, mô tả, phân loại, thẻ, yêu cầu trước khóa học, những điều đạt được sau khóa học,…
Trang 333.2.3.2 Chức năng quản lý bài giảng
3.2.3.2.1 Mô tả
Chức năng xem, thêm và cập nhật bài giảng của khóa học đã tạo 3.2.3.2.2 Yêu cầu chức năng
Bảng 3.10: Bảng mô tả chức năng quản lý bài giảng
Xem thông tin bài giảng Xem thông tin bài giảng đã được tạo
Thêm chương học mới Giảng viên tạo các chương trình học trong khóa học đã
được tạo của chính mình Thêm bài giảng mới Giảng viên tạo các bài giảng mới theo các chương học đã
tạo trong khóa học Cập nhập bài giảng Giảng viên cập nhật các thông tin về chương học và bài
giảng Xóa bài giảng đã tạo Giảng viên xóa chương học, bài giảng đã có
3.2.3.3 Chức năng công khai khóa học
3.2.3.3.1 Mô tả
Giảng viên công khai khóa học đã được tạo 3.2.3.3.2 Yêu cầu chức năng
Bảng 3.11: Bảng mô tả chức năng công khai khóa học
Công khai các khóa học đã
tạo
Giảng viên công khai khóa học đã được tạo
3.2.3.4 Chức năng quản lý bài tập
3.2.3.4.1 Mô tả
Chức năng xem, thêm và cập nhật bài tập 3.2.3.4.2 Yêu cầu chức năng
Bảng 3.12: Bảng mô tả chức năng quản lý bài tập
Xem thông tin bài tập Xem thông tin bài tập đã được tạo
Thêm bài tập mới Giảng viên tạo bài tập mới
Thêm loại bài tập Giảng viên chọn loại bài tập và thêm nội dung vào bài
tập
Trang 3416
Cập nhập bài tập Giảng viên cập nhật các thông tin về bài tập
Xóa bài tập Giảng viên xóa bài tập đã có
3.2.3.5 Chức năng quản lý học viên
3.2.3.5.1 Mô tả
Chức năng xem học viên trong từng khóa học 3.2.3.5.2 Yêu cầu chức năng
Bảng 3.13: Bảng mô tả chức năng quản lý học viên
Xem thông tin các học viên Xem thông tin các học viên trong từng khóa học
3.2.3.6 Chức năng thống kê số lượng học viên
3.2.3.6.1 Mô tả
Chức năng thống kê học viên 3.2.3.6.2 Yêu cầu chức năng
Bảng 3.14: Bảng mô tả chức năng thống kê số lượng học viên
Thống kê học viên Thống kê số lượng học viên theo dạng lược đồ đường
theo từng khóa học
3.2.4 Chức năng người dùng - Admin
3.2.4.1 Chức năng quản lý người dùng
3.2.4.1.1 Mô tả
Xem thông tin người dùng trong hệ thống, cập nhật quyền 3.2.4.1.2 Yêu cầu chức năng
Bảng 3.15: Bảng mô tả chức năng quản lý người dùng
Xem danh sách người dùng Xem danh sách người dùng trong hệ thống
Xem chi tiết người dùng Xem chi tiết người dùng được chọn
Cập nhật quyền Cập nhật lại quyền của người dùng
Thêm người dùng Thêm 1 người dùng mới vô hệ thống
3.2.4.2 Chức năng quản lý
3.2.4.2.1 Mô tả
Admin xem các khóa học được publish trong hệ thống
Trang 353.2.4.2.2 Yêu cầu chức năng
Bảng 3.16: Bảng mô tả chức năng quản lý khóa học
Xem danh sách các khóa
học
Xem danh sách các khóa học được publish trong hệ thống
Trang 3618
3.3 MÔ HÌNH HÓA YÊU CẦU CHỨC NĂNG
3.3.1 Lược đồ Usecase
Trang 37trên thanh điều hướng 2.Khách nhấn “Đăng ký”
3.Khách điền đầy đủ thông tin đăng ký bao gồm tên người dùng, email, password
4.2.Hệ thống tạo tài khoản mới
và lưu vào cơ sở dữ liệu
Trang 384.5.Hệ thống thông báo đăng ký thành công và chuyển hướng sang trang chủ
Hậu điều kiện Khách đã thành công trong việc đăng ký một tài khoản mới
Ngoại lệ 1 Thông tin đăng ký không hợp lệ, thông báo lỗi
2 Tài khoản đã tồn tại (email), thông báo lỗi
3.3.2.2 Đăng nhập
Hình 3.3: Hình usecase đăng nhập
Bảng 3.18: Bảng đặc tả Usecase đăng nhập.bằng tài khoản
Usecase đăng nhập bằng tài khoản
Mô tả Đăng nhập vào hệ thống với tài khoản web có sẵn
Tác nhân kích
hoạt
Khách
Trang 39Điền điều kiện Không có
Các bước thực
hiện
1.Khách nhấn “Đăng Nhập”
trên thanh điều hướng
2.Khách điền đầy đủ thông tin đăng nhập bao gồm email, password
3.2.Hệ thống lưu AccessToken và RefreshToken vào cookie của trình duyệt, thông báo đăng nhập thành công và chuyển hướng sang trang chủ
Hậu điều kiện Khách đã thành công trong việc đăng nhập
Ngoại lệ 1.Thông tin đăng nhập không hợp lệ, thông báo lỗi
2.Tài khoản không tồn tại, thông báo lỗi
Bảng 3.19: Bảng đặc tả Usecase đăng nhập bằng google
Usecase đăng nhập bằng google
Mô tả Đăng nhập vào hệ thống với tài khoản google
3.Khách chọn 1 tài khoản để đăng nhập
1.1.Hệ thống chuyển sang trang đăng nhập
2.1.Hệ thống chuyển sang trang đăng nhập của Google để người dùng chọn
1 tài khoản
3.1.Hệ thống kiểm tra email của người dùng Nếu email chưa có trong
Trang 4022
database thì hệ thống sẽ thêm người dùng đó vào database, nếu đã tồn tại thì tiếp tục
3.2.Hệ thống sẽ gửi email chào mừng người dùng (nếu người dùng lần đầu đăng nhập vào hệ thống)
3.3.Hệ thống tạo AccessToken và RefreshToken cho người dùng
3.2.Hệ thống lưu AccessToken và RefreshToken vào cookie của trình duyệt, thông báo đăng nhập thành công và chuyển hướng sang trang chủ
Hậu điều kiện Khách đã thành công trong việc đăng nhập
Ngoại lệ
Bảng 3.20: Bảng đặc tả Usecase đăng nhập bằng github
Usecase đăng nhập bằng github
Mô tả Đăng nhập vào hệ thống với tài khoản github
3.Khách chọn 1 tài khoản để đăng nhập
1.1.Hệ thống chuyển sang trang đăng nhập
2.1.Hệ thống chuyển sang trang đăng nhập của Github để người dùng chọn
1 tài khoản
3.1.Hệ thống kiểm tra email của người dùng Nếu email chưa có trong database thì hệ thống sẽ thêm người dùng đó vào database, nếu đã tồn tại thì tiếp tục