1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng website học trực tuyến

114 8 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 114
Dung lượng 10,13 MB

Nội dung

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 1

THÀ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 2

TRƯỜ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 3

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 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 4

ii

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 5

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 đề 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 6

iv

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 7

LỜ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 9

tự độ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 10

viii

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 11

TP.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 12

x

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 13

2.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 14

xii

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 15

DANH 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 16

xiv

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 17

Bả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 18

xvi

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 19

1 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 20

sẽ 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 21

Hỗ 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 22

4

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 23

API 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 24

Nhiề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 25

2.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 26

8

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 27

Giao 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 28

10

2.14 TECHNICAL STACK

Hình 2.1: Hình mô tả Technical stack

Trang 29

3 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 30

3.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 31

3.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 32

Bả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 33

3.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 34

16

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 35

3.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 36

18

3.3 MÔ HÌNH HÓA YÊU CẦU CHỨC NĂNG

3.3.1 Lược đồ Usecase

Trang 37

trê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 38

4.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 40

22

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

Ngày đăng: 19/11/2024, 09:04

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN