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 mua bán khoá học online

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

Tiêu đề Xây dựng website mua bán khóa học online
Tác giả Nguyễn Trương Nhân, Bùi Văn Hữu Phước
Người hướng dẫn ThS. Nguyễn Minh Đạo
Trường học Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh
Chuyên ngành Công nghệ Thông tin
Thể loại Đồ án tốt nghiệp
Năm xuất bản 2024
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 134
Dung lượng 13,19 MB

Nội dung

Đối với giáo viên và những đối tượng muốn chia sẻ những vốn kiến thức của mình với người khác, việc có một nền tảng để bán và quảng cáo khóa học của họ trực tuyến giúp tăng cơ hội kiế

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

XÂY DỰNG WEBSITE MUA BÁN

Trang 2

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM

KHOA CÔNG NGHỆ THÔNG TIN

GIÁO VIÊN HƯỚNG DẪN ThS NGUYỄN MINH ĐẠO

KHÓA 2020 – 2024

Trang 3

ĐH SƯ PHẠM KỸ THUẬT TP.HCM

KHOA CNTT

*******

CỘNG HOÀ 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 1: Nguyễn Trương Nhân MSSV 1: 20110690

Họ và tên Sinh viên 2: Bùi Văn Hữu Phước MSSV 2: 20110701

Ngành: Công nghệ Thông tin

Tên đề tài: Xây dựng website mua bán khóa học online Họ và tên Giáo viên hướng dẫn: ThS Nguyễn Minh Đạo NHẬN XÉT 1 Về nội dung đề tài & khối lượng thực hiện: ………

………

………

2 Ưu điểm: ………

………

………

3 Khuyết điểm: ………

………

………

4 Đề nghị cho bảo vệ hay không?

5 Đánh giá loại:

6 Điểm:

Tp Hồ Chí Minh, ngày tháng năm 202

(Ký & ghi rõ họ tên)

Trang 4

ĐH SƯ PHẠM KỸ THUẬT TP.HCM

KHOA CNTT

*******

CỘNG HOÀ 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 1: Nguyễn Trương Nhân MSSV 1: 20110690

Họ và tên Sinh viên 2: Bùi Văn Hữu Phước MSSV 2: 20110701

Ngành: Công nghệ Thông tin

Tên đề tài: Xây dựng website mua bán khóa học online Họ và tên Giáo viên phản biện: ThS Mai Anh Thơ NHẬN XÉT 1 Về nội dung đề tài & khối lượng thực hiện: ………

………

………

2 Ưu điểm: ………

………

………

3 Khuyết điểm: ………

………

………

4 Đề nghị cho bảo vệ hay không?

5 Đánh giá loại:

6 Điểm:

Tp Hồ Chí Minh, ngày tháng năm 202

(Ký & ghi rõ họ tên)

Trang 5

LỜI CẢM ƠN

Đầu tiên, chúng em muốn gửi lời cảm ơn sâu sắc tới thầy Nguyễn Minh Đạo trong thời gian thực hiện Khóa luận tốt nghiệp vừa qua Dưới sự chỉ dẫn tận tình của thầy, nhóm chúng em đã có những hướng đi để khám phá và tìm hiểu sâu sắc về chuyên ngành của mình, nắm bắt được những kiến thức quan trọng và áp dụng vào quá trình nghiên cứu

Bên cạnh đó, chúng em cũng muốn bày tỏ lòng biết ơn chân thành đến các anh trợ giảng, những người đã hỗ trợ chúng em hết mình trong suốt quá trình thực hiện dự án Sự hướng dẫn tận tình và những lời góp ý quý báu của các anh không chỉ giúp chúng em hoàn thiện tiểu luận mà còn là nguồn động viên lớn giúp chúng em phát triển bản thân Sự tận tâm của các anh đã giúp chúng em nắm vững kiến thức và kỹ năng cần thiết, từ

đó hoàn thiện dự án một cách tốt nhất

Nhóm chúng em đã tiến hành nghiên cứu và trình bày đề tài cùng báo cáo trong một khoảng thời gian ngắn Với sự hạn chế về kiến thức cũng như kinh nghiệm trong việc thực hiện dự án web, không thể tránh khỏi những thiếu sót trong quá trình nghiên cứu Chúng em rất mong nhận được những đóng góp quý báu từ thầy và các anh trợ giảng để

có thể nâng cao chất lượng kiến thức và thực hiện công việc tốt hơn trong các dự án tương lai

Một lần nữa, chúng em xin bày tỏ lòng biết ơn sâu sắc đối với sự hỗ trợ và hướng dẫn tận tâm của thầy và các anh trợ giảng Những kinh nghiệm và kiến thức chúng em đã học được sẽ là nền tảng quan trọng cho sự phát triển trong tương lai Mong rằng, những đóng góp của thầy và các anh sẽ tiếp tục lan tỏa và làm giàu thêm không khí học thuật tại trường

Trang 6

ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP

Họ và tên Sinh viên 1: Nguyễn Trương Nhân MSSV 1: 20110690

Họ và tên Sinh viên 2: Bùi Văn Hữu Phước MSSV 2: 20110701

Thời gian làm luận văn: Từ 01/03/2024 đến 09/07/2024

Ngành: Công nghệ Thông tin

Tên đề tài: Xây dựng website mua bán khóa học online

Họ và tên Giáo viên hướng dẫn: ThS Nguyễn Minh Đạo

Nhiệm vụ của luận văn:

1 Xây dựng Website với các công nghệ Nodejs, Reactjs, TypeScript, MySQL

- Xây dựng ứng dụng giao diện (frontend) sử dụng ReactJS, Typescript

- Xây dựng ứng dụng web service (backend) sử dụng Nodejs, ExpressJS

- Sử dụng Axios để giao tiếp giữa backend và frontend

- Sử dụng MySQL để lưu trữ dữ liệu, ORM Prisma để giao tiếp dữ liệu giữa Backend

và Database

- Sử dụng FFMPEG để xử lý chuyển đổi độ phân giải video

Đề cương chi tiết tiểu luận:

Trang 7

5 Kết quả dự kiến đạt được

- Tìm hiểu về NodeJS, ReactJS, FFMPEG

- Tham khảo các trang web về học tập online như Coursera, Udemy…

Bắt đầu khóa luận tốt nghiệp

- Thiết kế triển khai dự án

4 01/04/2024 –

10/04/2024

- Cài đặt database và tìm kiếm dữ liệu

Trang 8

- Thực hiện xây dựng và thiết kế giao diện trang web một cách chi tiết

Trang 9

Mục lục

MỞ ĐẦU 1

1 Tính cấp thiết của đề tài 1

2 Mục đích của đề tài 1

3 Cách tiếp cận và phương pháp nghiên cứu 2

4 Phân tích những công trình có liên quan 3

4.1 Udemy 3

4.2 Coursera 4

4.3 Kết luận 5

5 Kết quả dự kiến đạt được 6

NỘI DUNG 7

1 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 7

1.1 ReactJS 7

1.1.1 Tổng quan 7

1.1.2 Đặc điểm chính 7

1.1.3 Tại sao sử dụng 7

1.2 NodeJS 8

1.2.1 Tổng quan 8

1.2.2 Đặc điểm chính 8

1.2.3 Tại sao sử dụng 9

1.3 Express 9

1.3.1 Tổng quan 9

1.3.2 Đặc điểm chính 9

1.3.3 Tại sao sử dụng 10

1.4 MySQL 11

1.4.1 Tổng quan 11

1.4.2 Đặc điểm chính 11

1.4.3 Tại sao sử dụng 12

1.5 Typescript 12

1.5.1 Tổng quan 12

1.5.2 Đặc điểm chính 13

1.5.3 Tại sao sử dụng 13

1.6 Phương pháp nghiên cứu 14

1.6.1 Nghiên cứu tài liệu 14

1.6.2 Phân tích yêu cầu 14

1.6.3 Phân tích các trang web có liên quan 14

Trang 10

2 CHƯƠNG 2: THIẾT KẾ HỆ THỐNG 15

2.1 Lược đồ ERD 15

2.2 Use case Diagram 16

2.3 Đặc tả Use case 18

2.3.1 Tìm kiếm khóa học 18

2.3.2 Thêm khóa học vào giỏ hàng 19

2.3.3 Xóa khóa học khỏi giỏ hàng 21

2.3.4 Chuyển khóa học vào để dành sau 21

2.3.5 Thanh toán 22

2.3.6 Kiểm tra coupon 23

2.3.7 Kiểm tra, ghi nhận kết quả 24

2.3.8 Học tập, ghi nhận kết quả 25

2.3.9 Thêm xóa sửa khóa học 26

2.3.10 Thêm xóa sửa bài giảng 27

2.3.11 Cấp chứng chỉ cho người học 28

2.3.12 Báo cáo khóa học 28

2.3.13 Học thử 29

2.3.14 Yêu cầu duyệt khóa học 30

2.3.15 Tìm kiếm blog 30

2.3.16 Thống kê - giảng viên 31

2.3.17 Thống kê – người quản trị 31

2.3.18 Duyệt / ẩn khóa học 32

2.3.19 Ra quyết định trên khóa học 33

2.3.20 Thêm xóa sửa event 34

2.3.21 Chỉnh sửa tỉ lệ phần thưởng trong event 35

2.4 Class Diagram 37

2.5 Sequence Diagram 38

2.5.1 Tìm kiếm khóa học 38

2.5.2 Thêm khóa học vào giỏ hàng 38

2.5.3 Xóa khóa học khỏi giỏ hàng 38

2.5.4 Chuyển khóa học vào để dành sau 39

2.5.5 Thanh toán 39

2.5.6 Kiểm tra, ghi nhận kết quả 40

2.5.7 Học tập, ghi nhận kết quả 41

2.5.8 Thêm xóa sửa khóa học 41

Trang 11

2.5.10 Xóa bài giảng 44

2.5.11 Sửa bài giảng 44

2.5.12 Cấp chứng chỉ cho người học 45

2.5.13 Báo cáo khóa học 46

2.5.14 Học thử 46

2.5.15 Yêu cầu duyệt khóa học 47

2.5.16 Tìm kiếm blog 47

2.5.17 Thống kê - giảng viên 48

2.5.18 Thống kê – người quản trị 49

2.5.19 Duyệt ẩn khóa học 50

2.5.20 Ra quyết định trên khóa học 50

2.5.21 Thêm xóa sửa event 51

2.5.22 Chỉnh sửa tỉ lệ phần thưởng trong event 53

2.6 Thiết kế cơ sở dữ liệu 54

2.6.1 User 54

2.6.2 Cart 55

2.6.3 Cart_detail 55

2.6.4 Category 55

2.6.5 Course 55

2.6.6 Courses_categories 56

2.6.7 Enrolled 57

2.6.8 Invoice 57

2.6.9 Invoice_detail 57

2.6.10 Lesson 58

2.6.11 Rating 58

2.6.12 Section 58

2.6.13 Transaction 59

2.6.14 Feedback 59

2.6.15 Lecture 60

2.6.16 Quiz 60

2.6.17 Quiz_group 60

2.6.18 Quiz_answer 61

2.6.19 Test 61

2.6.20 Test_detail 62

2.6.21 Test_history 62

2.6.22 Test_history_detail 62

Trang 12

2.6.23 Approval 63

2.6.24 Blog 63

2.6.25 Blog_categories 63

2.6.26 Certificate 64

2.6.27 Comment_lecture 64

2.6.28 Coupon 64

2.6.29 Coupon_history 65

2.6.30 Coupon_owner 65

2.6.31 Decision 65

2.6.32 Dislike 66

2.6.33 Event 66

2.6.34 Like 66

2.6.35 Progress 66

2.6.36 Ratio 67

2.6.37 Reaction_blog 67

2.6.38 Reply_comment_lecture 67

2.6.39 Report 68

2.6.40 User_event 68

2.7 Thiết kế giao diện 69

3 CHƯƠNG 3: KIỂM THỬ 95

3.1 Lý thuyết kiểm thử 95

3.1.1 Kiểm thử đơn vị 95

3.1.2 Kiểm thử tích hợp 96

3.1.3 Kiểm thử hệ thống 97

3.1.4 Kiểm tra API 98

3.1.5 Tổng quan về selenium 100

3.2 Kiểm thử 102

3.3 Kiểm thử tự động hệ thống với Selenium WebDriver 106

3.3.1 Cài đặt công cụ 107

3.3.2 Kiểm thử với Selenium Webdriver 107

KẾT LUẬN 112

1 Kiến thức và kĩ năng 112

2 Hệ thống 113

3 Điểm mạnh 113

4 Điểm yếu 113

Trang 13

TÀI LIỆU THAM KHẢO 115PHỤ LỤC 116

Trang 14

Danh mục bảng

Bảng 2.1 UC_Tìm kiếm khóa học 18

Bảng 2.2 UC_Thêm khóa học vào giỏ hàng 19

Bảng 2.3 UC_Xóa khóa học khỏi giỏ hàng 21

Bảng 2.4 UC_Chuyển khóa học vào để dành sau 21

Bảng 2.5 UC_Thanh toán 22

Bảng 2.6 UC_Kiểm tra coupon 23

Bảng 2.7 UC_Kiểm tra, ghi nhận kết quả 24

Bảng 2.8 UC_Học tập ghi nhận kết quả 25

Bảng 2.9 UC_Thêm xóa sửa khóa học 26

Bảng 2.10 UC_Thêm xóa sửa bài giảng 27

Bảng 2.11 UC_Cấp chứng chỉ cho người học 28

Bảng 2.12 UC_Báo cáo khóa học 28

Bảng 2.13 UC_Học thử 29

Bảng 2.14 UC_Yêu cầu duyệt khóa học 30

Bảng 2.15 UC_Tìm kiếm blog 30

Bảng 2.16 UC_Thống kê – giảng viên 31

Bảng 2.17 UC_Thống kê – người quản trị 31

Bảng 2.18 UC_Duyệt ẩn khóa học 32

Bảng 2.19 UC_Ra quyết định trên khóa học 33

Bảng 2.20 UC_Thêm xóa sửa event 34

Bảng 2.21 UC_Chỉnh sửa tỉ lệ phần thưởng trong event 35

Bảng 2.22 User 54

Bảng 2.23 Cart 55

Bảng 2.24 Cart_detail 55

Bảng 2.25 Category 55

Bảng 2.26 Course 55

Bảng 2.27 Courses_categories 56

Bảng 2.28 Enrolled 57

Bảng 2.29 Invoice 57

Bảng 2.30 Invoice_detail 57

Bảng 2.31 Lesson 58

Bảng 2.32 Rating 58

Bảng 2.33 Section 58

Bảng 2.34 Transaction 59

Bảng 2.35 Feedback 59

Bảng 2.36 Lecture 60

Bảng 2.37 Quiz 60

Bảng 2.38 Quiz_group 60

Bảng 2.39 Quiz_answer 61

Bảng 2.40 Test 61

Bảng 2.41 Test_detail 62

Bảng 2.42 Test_history 62

Bảng 2.43 Test_history_detail 62

Bảng 2.44 Approval 63

Bảng 2.45 Blog 63

Trang 15

Bảng 2.47 Certificate 64

Bảng 2.48 Comment_lecture 64

Bảng 2.49 Coupon 64

Bảng 2.50 Coupon_history 65

Bảng 2.51 Coupon_owner 65

Bảng 2.52 Decision 65

Bảng 2.53 Dislike 66

Bảng 2.54 Event 66

Bảng 2.55 Like 66

Bảng 2.56 Progress 66

Bảng 2.57 Ratio 67

Bảng 2.58 Reaction_blog 67

Bảng 2.59 Reply_comment_lecture 67

Bảng 2.60 Report 68

Bảng 2.61 User_event 68

Bảng 3.1 Kết quả kiểm thử 102

Bảng 3.2 File helper.test.ts 108

Bảng 3.3 File test-selenium.test.ts 108

Bảng 3.4 File enrolled.test.ts 109

Trang 16

Danh mục hình

Hình 4.1 Trang chủ Udemy 3

Hình 4.2 Trang chủ Coursera 4

Hình 2.1 Lược đồ ERD 15

Hình 2.2 Use case diagram_Actor Guest 16

Hình 2.3 Use case diagram_Actor Student 17

Hình 2.4 Use case diagram_Actor Teacher 17

Hình 2.5 Use case diagram_Actor Admin 18

Hình 2.6 Class Diagram 37

Hình 2.7 SD_Tìm kiếm khóa học 38

Hình 2.8 SD_Thêm khóa học vào giỏ hàng 38

Hình 2.9 SD_Xóa khóa học khỏi giỏ hàng 39

Hình 2.10 SD_Chuyển khóa học vào để dành sau 39

Hình 2.11 SD_Thanh toán 39

Hình 2.12 SD_Kiểm tra, ghi nhận kết quả 40

Hình 2.13 SD_Học tập, ghi nhận kết quả 41

Hình 2.14 SD_Thêm khóa học 41

Hình 2.15 SD_Xóa khóa học 42

Hình 2.16 SD_Sửa khóa học 42

Hình 2.17 SD_Thêm bài giảng 43

Hình 2.18 SD_Xóa bài giảng 44

Hình 2.19 SD_Sửa bài giảng 45

Hình 2.20 SD_Cấp chứng chỉ cho người học 45

Hình 2.21 SD_Báo cáo khóa học 46

Hình 2.22 SD_Học thử 46

Hình 2.23 SD_Yêu cầu duyệt khóa học 47

Hình 2.24 SD_Tìm kiếm blog 47

Hình 2.25 SD_Thống kê – giảng viên 48

Hình 2.26 SD_Thống kê - người quản trị 49

Hình 2.27 SD_Duyệt ẩn khóa học 50

Hình 2.28 SD_Ra quyết định trên khóa học 50

Hình 2.29 SD_Thêm event 51

Hình 2.30 SD_Sửa event 51

Hình 2.31 SD_Xóa event 52

Hình 2.32 SD_Thêm tỉ lệ phần thưởng trong event 53

Hình 2.33 SD_Chỉnh sửa tỉ lệ phần thưởng trong event 53

Hình 2.34 Xóa tỉ lệ phần thưởng trong event 54

Hình 2.35 GD_Trang chủ - 1 69

Hình 2.36 GD_Trang chủ - 2 69

Hình 2.37 GD_Trang chủ - 3 70

Hình 2.38 GD_Trang Tất cả khóa học 71

Hình 2.39 GD_Trang Chi tiết khóa học 72

Hình 2.40 GD_Trang cá nhân của người khác 73

Hình 2.41 GD_Nội dung khóa học 74

Hình 2.42 GD_Trang Khóa học của tôi 75

Hình 2.43 GD_Trang Tạo khóa học mới 76

Trang 17

Hình 2.45 GD_Popup Tạo bộ câu hỏi mới 77

Hình 2.46 GD_Popup Tạo câu hỏi mới 78

Hình 2.47 GD_Trang Chỉnh sửa khóa học – Tổng quan khóa học 78

Hình 2.48 GD_Trang Chỉnh sửa khóa học – Chương trình giảng dạy 79

Hình 2.49 GD_Trang Chỉnh sửa khóa học – Tình trạng khóa học 79

Hình 2.50 GD_Trang Thống kê – giảng viên 79

Hình 2.51 GD_Trang Sự kiện 80

Hình 2.52 GD_Trang Giỏ hàng 81

Hình 2.53 GD_Trang Thanh toán 81

Hình 2.54 GD_Trang Kết quả thanh toán 82

Hình 2.55 GD_Trang Lịch sử giao dịch 82

Hình 2.56 GD_Trang Khóa học đã đăng ký của tôi 83

Hình 2.57 GD_Popup báo xấu khóa học 84

Hình 2.58 GD_Trang xem video bài học 84

Hình 2.59 GD_Trang làm bài kiểm tra 84

Hình 2.60 GD_Thông báo hoàn thành nội dung khóa học 84

Hình 2.61 GD_Thông báo hoàn thành bài kiểm tra toàn khóa học 84

Hình 2.62 GD_Phần Bình luận trong khóa học 85

Hình 2.63 GD_Email gửi chứng chỉ cho người dùng hoàn thành khóa học 85

Hình 2.64 GD_Trang chứng chỉ 86

Hình 2.65 GD_Chatbot 87

Hình 2.66 GD_Trang Thống kê_Tab Thống kê chính – người quản trị 88

Hình 2.67 GD_Trang Thống kê_Tab Xếp hạng giảng viên – người quản trị 88

Hình 2.68 GD_Trang Thống kê_Tab Xếp hạng khóa học – người quản trị 88

Hình 2.69 GD_Trang Quản lý danh mục 89

Hình 2.70 GD_Trang Quản lý người dùng 89

Hình 2.71 GD_Trang Thêm người dùng 89

Hình 2.72 GD_Trang Xét duyệt khóa học 90

Hình 2.73 GD_Trang Chi tiết khóa học – Duyệt khóa học 90

Hình 2.74 GD_Trang Chi tiết khóa học – Báo cáo khóa học 91

Hình 2.75 GD_Trang Quản lý phản hồi 91

Hình 2.76 GD_Trang Quản lý sự kiện 91

Hình 2.77 GD_Popup Thêm sự kiện 92

Hình 2.78 GD_Popup Chỉnh sửa tỉ lệ phần thưởng sự kiện 92

Hình 2.79 GD_Trang Quản lý coupon 93

Hình 2.80 GD_Popup Thêm coupon 94

Hình 3.1 Test case 1 và kết quả 102

Hình 3.2 Test case 2 và kết quả 103

Hình 3.3 Test case 3 và kết quả 104

Hình 3.4 Test case 4 và kết quả 105

Hình 3.5 Test case 5 và kết quả 106

Hình 3.6 Kết quả kiểm thử tự động với Selenium Webdriver 111

Trang 18

MỞ ĐẦU

1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI

Với sự phổ cập Internet ngày càng rộng rãi, nhu cầu học tập trực tuyến đã tăng lên đáng

kể Một trang web mua bán khóa học giúp tạo ra một nền tảng thuận tiện cho học viên

để truy cập và tham gia các khóa học mọi nơi, mọi lúc

Website mua bán khóa học trực tuyến giúp mở rộng khả năng tiếp cận đối tượng học viên Người học không còn bị giới hạn bởi địa lý, và do đó, trang web có thể hỗ trợ việc kết nối giữa giảng viên và học viên từ khắp mọi nơi trên thế giới

Đối với những người muốn học hỏi, việc có một trang web mua bán khóa học trực tuyến mang lại sự đa dạng trong nguồn tài nguyên học tập Họ có thể chọn lựa giữa các khóa học, chủ đề và những nội dung bài học khác nhau, tạo ra một trải nghiệm học tập phong phú

Đối với giáo viên và những đối tượng muốn chia sẻ những vốn kiến thức của mình với người khác, việc có một nền tảng để bán và quảng cáo khóa học của họ trực tuyến giúp tăng cơ hội kiếm thu nhập Điều này khích lệ sự chia sẻ kiến thức và kỹ năng, đồng thời thúc đẩy sự đổi mới trong lĩnh vực giáo dục

Xu hướng học tập liên tục thay đổi, và một trang web mua bán khóa học trực tuyến có thể linh hoạt thích ứng với những thay đổi này, bao gồm cả việc tích hợp công nghệ mới và phản hồi từ cộng đồng học viên

Tóm lại, xây dựng một trang web mua bán khóa học trực tuyến không chỉ đáp ứng nhu cầu ngày càng tăng của người học mà còn tạo ra cơ hội mới cho giảng viên và doanh nghiệp trong lĩnh vực giáo dục trực tuyến

2 MỤC ĐÍCH CỦA ĐỀ TÀI

Đề tài “Xây dựng website mua bán khóa học online” đặt ra các vấn đề trọng tâm về mục

Trang 19

Vấn đề đầu tiên được đưa ra về yếu tố lý thuyết, sinh viên thực hiện cần nghiên cứu chuyên môn, hiểu được tổng quan và khả năng ứng dụng những kiến thức đã học ở trường vào trong đề tài này Song song với công nghệ được lựa chọn để sử dụng, nhóm sinh viên cần tìm hiểu thêm cách xây dựng giao diện đẹp, thân thiện với người dùng Vấn đề thứ hai là nâng cao khả năng làm việc nhóm, tìm hiểu và thảo luận về đề tài, các vấn đề đưa ra từ dó tìm ra câu trả lời Xây dựng thái tích cực trong việc học, làm đồ án

3 CÁCH TIẾP CẬN VÀ PHƯƠNG PHÁP NGHIÊN CỨU

- Đối tượng nghiên cứu: Đối tượng của nghiên cứu này là việc xây dựng một hệ thống website mua bán khóa học trực tuyến, với sự tập trung vào cả phía frontend

và backend

- Phạm vi nghiên cứu: Nghiên cứu sẽ tập trung vào việc sử dụng các công nghệ và ngôn ngữ lập trình chủ chốt như ReactJS, TypeScript, Redux cho phần giao diện người dùng (frontend) và NodeJS, ExpressJS, TypeScript cho phần xử lý logic và dữ liệu (backend)

+ ReactJS và TypeScript: Sử dụng ReactJS để xây dựng giao diện người dùng, cùng với TypeScript để tăng tính kiểm soát và khả năng tái sử dụng

+ TypeScript: Sử dụng TypeScript để viết mã nguồn của backend, giúp kiểm soát kiểu và giảm thiểu lỗi trong quá trình phát triển

Trang 20

4 PHÂN TÍCH NHỮNG CÔNG TRÌNH CÓ LIÊN QUAN

4.1 UDEMY

Hình 4.1 Trang chủ Udemy

Udemy (https://www.udemy.com/) là nền tảng mua bán khóa học trực tuyến lớn và nổi tiếng khắp thế giới Mọi người có thể mua khóa học với tư cách là học viên, tham gia khóa học để nhận chứng chỉ cũng như đăng ký làm giáo viên để bán khóa học cho mọi người

Ưu điểm:

- Có đa dạng loại khóa học với nhiều chủ đề khác nhau, đa ngôn ngữ

- Tiện ích và nhanh chóng: Có thể kết nối ở bất kỳ đâu chỉ cần có kết nối mạng

- Giao diện hiện đại, trẻ trung

Nhược điểm:

- Vấn đề kết nối và hệ thống: Hệ thống hay gặp vấn đề kết nối làm cho người dùng không thể truy cập vào trang web một cách ổn định

- Các khóa học có giá khá đắt đỏ so với mức chi tiêu của người Việt

- Không thực sự có một bản chứng chỉ mà chỉ ghi nhận kết quả học tập của cá

Trang 21

4.2 COURSERA

Hình 4.2 Trang chủ Coursera

Coursera (https://www.coursera.org/) là nền tảng mua bán khóa học trực tuyến lớn và nổi tiếng khắp thế giới Mọi người có thể mua khóa học với tư cách là học viên, tham gia khóa học để nhận chứng chỉ cũng như đăng ký làm giáo viên để bán khóa học cho mọi người

Ưu điểm:

- Có đa dạng loại khóa học với nhiều chủ đề khác nhau, các khóa học được nhóm lại để phù hợp với các ngành nghề khác nhau

- Tiện ích và nhanh chóng: Có thể kết nối ở bất kỳ đâu chỉ cần có kết nối mạng

- Giao diện hàn lâm và nghiêm túc

Trang 22

- Hệ thống cần được cải thiện về tốc độ tải trang, trải nghiệm tìm kiếm, độ ổn định của các chức năng

- Các khóa học còn thiếu hụt sự tương tác giữa giáo viên với học sinh, giữa học sinh với nhau Giá của các khóa học còn khá mắc so với mức chi tiêu của người Việt

- Qua khảo sát và nghiên cứu, chúng em sẽ ghi nhận và cố gắng cải thiện, nâng cao trải nghiệm người dùng bằng cách cải thiện giao diện, tối ưu hóa quy trình tìm kiếm khóa học và đăng ký

Trang 23

5 KẾT QUẢ DỰ KIẾN ĐẠT ĐƯỢC

Giao diện người dùng thân thiện: thiết kế giao diện người dùng được xây dựng với sự tập trung đặc biệt vào trải nghiệm người dùng, tạo ra một giao diện thân thiện, dễ sử dụng và hấp dẫn

Hệ thống quản lý khóa học linh hoạt: xây dựng một hệ thống quản lý khóa học linh hoạt, cho phép người quản trị dễ dàng thêm, sửa đổi và xóa các khóa học một cách hiệu quả cũng như thống kê các số liệu liên quan tới khóa học

Tích hợp hệ thống thanh toán: hệ thống thanh toán được tích hợp một cách an toàn và linh hoạt, hỗ trợ nhiều phương thức thanh toán để tối ưu hóa trải nghiệm mua sắm của người học Kết hợp với các phiếu giảm giá có thể kiếm được thông qua các sự kiện

Hệ thống học tập: xây dựng hệ thống phù hợp cho việc học tập các khóa học của người dùng với các chức năng như ghi lại quá trình học, tùy chỉnh chất lượng video bài học phù hợp với các điều kiện mạng khác nhau

Hệ thống bài viết: xây dựng hệ thống các bài viết được tạo bởi người quản trị cho giúp cung cấp những thông tin cần thiết, bổ ích hoặc những góc nhìn của người đăng bài

Hệ thống đánh giá và phản hồi: đã tích hợp một hệ thống đánh giá và phản hồi, giúp người học đánh giá chất lượng khóa học, đồng thời cung cấp thông tin quan trọng cho việc cải thiện chất lượng dịch vụ Người dùng còn có thể phản ánh, báo xấu những khóa học không phù hợp để người quản trị thực hiện xử lý Đồng thời những nội dung bình luận của người dùng cũng được kiểm soát chặt chẽ về mức độ phù hợp

Hệ thống đăng ký và quản lý tài khoản người dùng: xây dựng hệ thống đăng ký và quản

lý tài khoản người dùng, đảm bảo tính bảo mật thông tin cá nhân và thuận tiện cho quá trình đăng nhập và học tập

Hệ thống chatbot: Cung cấp 1 chatbot hỗ trợ người dùng trong quá trình sử dụng website Thống kê: thống kê các nguồn tài nguyên của hệ thống

Trang 24

- Virtual DOM: React sử dụng để cải thiện hiệu suất Thay vì cập nhật toàn bộ DOM khi có thay đổi, React tạo một bản sao ảo của DOM (Virtual DOM) và so sánh với DOM thật, sau đó xác định và cập nhật những phần cần thiết Điều này giúp giảm tải cho trình duyệt và tăng tốc độ làm mới giao diện

- One-Way Data Binding: React sử dụng luồng dữ liệu một chiều (one-way data binding) từ component cha đến component con thông qua props, đồng thời component con không được phép thay đổi dữ liệu ngược về phía component cha giúp quản lý dữ liệu dễ dàng và tránh tình trạng rơi vào vòng lặp vô tận (infinite loop)

Trang 25

- React sử dụng ngôn ngữ Javascript là một ngôn ngữ lập trình dễ học và tiếp cận

- Hỗ trợ cho React Native: React có thể sử dụng để xây dựng cả ứng dụng di động thông qua React Native Việc sử dụng cùng một cơ sở mã nguồn cho cả ứng dụng web và di động giảm công sức phát triển và bảo trì

- Cập Nhật Liên Tục: React được duy trì và cập nhật thường xuyên bởi Facebook, đảm bảo rằng những tính năng mới và các sửa lỗi được thêm vào hệ sinh thái Cho thấy khả năng đáng tin tưởng và sự hỗ trợ lâu dài

- Lập trình và bảo trì dễ dàng: Nhờ vào virtual DOM cùng cách quản lí dữ liệu hiệu quả, cùng với mô hình phát triển dựa trên thành phần hỗ trợ cho lập trình và tái sử dụng, React có hiệu suất tốt và đáng tin cậy để phát triển ứng dụng web

1.2 NODEJS

1.2.1 Tổng quan

NodeJS được xây dựng trên V8 JavaScript engine của Chrome - V8 là một môi trường runtime chạy JavaScript đa nền tảng và có mã nguồn mở, được sử dụng để chạy các ứng dụng web bên ngoài trình duyệt của client Nền tảng này được phát triển bởi Ryan Dahl vào năm 2009, được xem là một giải pháp hoàn hảo cho các ứng dụng sử dụng nhiều dữ liệu nhờ vào mô hình hướng sự kiện (event-driven) không đồng bộ

1.2.2 Đặc điểm chính

- Lập trình hướng sự kiện và không đồng bộ: Toàn bộ API trong thư viện NodeJS đều không đồng bộ, hay không bị chặn Về cơ bản điều này có nghĩa là một server sử dụng NodeJS sẽ không bao giờ chờ một API trả về dữ liệu Server

sẽ chuyển sang API kế tiếp sau khi gọi API đó và cơ chế thông báo của Events trong NodeJS giúp server nhận được phản hồi từ lần gọi API trước

- Cực kỳ nhanh chóng: Được xây dựng trên Công cụ JavaScript V8 của Google Chrome, thư viện NodeJS có khả năng xử lý mã vô cùng nhanh

Trang 26

- Đơn luồng/Single thread nhưng có khả năng mở rộng cao: NodeJS sử dụng một mô hình luồng đơn với vòng lặp sự kiện/event Cơ chế event cho phép máy chủ phản hồi non-blocking và cũng cho phép khả năng mở rộng cao hơn so với các server truyền thống hỗ trợ giới hạn các thread để xử lý yêu cầu

1.2.3 Tại sao sử dụng

- Tốc độ cực nhanh: Được xây dựng dựa trên engine JavaScript V8 của Google Chrome, do đó các thư viện của nó có khả năng thực thi code rất nhanh

- Sử dụng Javascript, một ngôn ngữ lập trình dễ học và tiếp cận

- Cộng đồng lớn: Hệ thống các thư viện có sẵn lớn cùng với cộng đồng tích cực đang phát triển từng ngày giúp cho việc lập trình trở nên dễ dàng

- Phù hợp để phát triển các ứng dụng realtime, các ứng dụng yêu cầu tốc độ cao và ứng dụng IoT

1.3 EXPRESS

1.3.1 Tổng quan

Express là một framework web Node.js được thiết kế để xây dựng ứng dụng web và API một cách dễ dàng và linh hoạt Nó giúp giảm độ phức tạp của việc xây dựng và quản lý các ứng dụng web bằng cách cung cấp một lớp trừu tượng cho việc xử lý các yêu cầu và phản hồi HTTP

1.3.2 Đặc điểm chính

- Middleware: Middleware là các hàm được thực thi tuần tự khi có yêu cầu được gửi đến server Các middleware có thể thực hiện các chức năng như xử lý yêu cầu, kiểm soát quyền truy cập, ghi log, xử lý lỗi, và nhiều công việc khác Middleware giúp tách biệt logic xử lý thành các chức năng nhỏ, giúp mã nguồn trở nên dễ đọc, tái sử dụng và mở rộng

- Routing: Express cung cấp hệ thống định tuyến mạnh mẽ, cho phép xác định

Trang 27

lý và tổ chức ứng dụng một cách hiệu quả, tách biệt logic xử lý và tạo cấu trúc rõ ràng

- Template Engines: Express không buộc sử dụng một template engine cụ thể, nhưng nó hỗ trợ nhiều loại như EJS, Pug, và Handlebars để xây dựng giao diện người dùng Template engines giúp tạo ra trang web động và linh hoạt, cho phép nhúng dữ liệu vào các mẫu và tái sử dụng mã nguồn

- Xử Lý JSON và Dữ Liệu Form: Express cung cấp built-in middleware để xử

lý dữ liệu được gửi dưới dạng JSON và các biểu mẫu web (form data) Giúp dễ dàng xử lý dữ liệu đầu vào từ các yêu cầu, giúp đơn giản hóa việc xây dựng và

xử lý các biểu mẫu trên trang web

- Phản Hồi (Response): Express giúp quản lý phản hồi từ server đến client Bạn

có thể thiết lập các loại phản hồi, đặt header, và gửi dữ liệu về client Việc kiểm soát phản hồi giúp tối ưu hóa trải nghiệm người dùng và giúp tăng tính bảo mật của ứng dụng

- Điều Hướng Tĩnh (Static File Serving): Giải thích: Express có thể được cấu hình để phục vụ các tệp tĩnh (ví dụ: hình ảnh, tệp CSS) một cách dễ dàng Giúp tối ưu hóa hiệu suất và tăng tốc độ tải trang bằng cách cung cấp trực tiếp các tệp tĩnh từ server

1.3.3 Tại sao sử dụng

- Tốc Độ và Hiệu Suất: Express là một framework nhẹ, giúp giảm độ trễ và tăng hiệu suất của ứng dụng Nó tập trung vào việc cung cấp các tính năng cần thiết mà không làm giảm tốc độ xử lý của Node.js

- Cộng Đồng Phong Phú: Express có một cộng đồng lớn, đa dạng và tích cực Điều này mang lại nhiều lợi ích, bao gồm tài liệu phong phú, các module bổ sung, và sự hỗ trợ từ cộng đồng Khiến cho quá trình tiếp cận, lập trình trở nên dễ dàng

- Dễ Học và Sử Dụng: Express được thiết kế để dễ học và sử dụng, đặc biệt là đối với những người đã quen thuộc với JavaScript và Node.js

Trang 28

- Middleware và Phản Hồi Tùy Chỉnh: Middleware cho phép mở rộng chức năng một cách linh hoạt, và có thể tùy chỉnh các xử lý trung gian cho yêu cầu và phản hồi theo ý muốn của bạn

- Thích Hợp Cho Xây Dựng API: Express là một lựa chọn phổ biến để xây dựng các RESTful API do khả năng định tuyến và xử lý yêu cầu tốt

1.4 MYSQL

1.4.1 Tổng quan

MySQL là một hệ quản trị cơ sở dữ liệu (DBMS) phổ biến và mã nguồn mở Nó được

sử dụng rộng rãi trong phát triển ứng dụng web và nhiều hệ thống thông tin do tính ổn định, hiệu suất cao, và tính linh hoạt của nó MySQL hỗ trợ nhiều ngôn ngữ lập trình và cung cấp các tính năng mạnh mẽ để quản lý cơ sở dữ liệu

1.4.2 Đặc điểm chính

- Kiểu Dữ Liệu Đa Dạng: MySQL hỗ trợ nhiều kiểu dữ liệu như INTEGER, VARCHAR, TEXT, DATE, và nhiều kiểu dữ liệu khác, giúp lưu trữ và xử lý đa dạng loại dữ liệu

- Ngôn Ngữ SQL: MySQL sử dụng ngôn ngữ truy vấn SQL (Structured Query Language), giúp người phát triển thao tác dữ liệu một cách dễ dàng và mạnh mẽ

- Quản Lý Quyền Truy Cập: MySQL cung cấp hệ thống quản lý quyền truy cập mạnh mẽ, cho phép người quản trị xác định quyền và khả năng truy cập của người dùng đối với cơ sở dữ liệu

- Hiệu Suất Cao: MySQL được tối ưu hóa để đạt hiệu suất cao và xử lý tốt cả trong môi trường sử dụng có số lượng kết nối đồng thời lớn

- Replication và Sharding: MySQL hỗ trợ các kỹ thuật như Replication (sao chép dữ liệu giữa các máy chủ) và Sharding (chia nhỏ cơ sở dữ liệu) để cải thiện khả năng mở rộng và đảm bảo sự ổn định

Trang 29

- Cộng Đồng Lớn và Hỗ Trợ: Có một cộng đồng người dùng và phát triển lớn xung quanh MySQL, điều này có nghĩa là có nhiều tài liệu, diễn đàn và nguồn lực học tập khả dụng

1.4.3 Tại sao sử dụng

- Tính Ổn Định và Độ Tin Cậy: MySQL đã được thử nghiệm qua thời gian và được sử dụng rộng rãi trong nhiều dự án lớn Nó cung cấp tính ổn định và độ tin cậy cao

- Hiệu Suất Cao: MySQL được tối ưu hóa để đạt hiệu suất cao, giúp xử lý đồng thời nhiều truy vấn và kết nối một cách hiệu quả

- Khả Năng Mở Rộng: MySQL hỗ trợ các kỹ thuật như Replication và Sharding

để mở rộng khả năng chịu tải và quản lý lượng dữ liệu lớn

- Đa Nền Tảng: MySQL có sẵn trên nhiều nền tảng, bao gồm Windows, Linux, macOS, và có thể tích hợp dễ dàng vào nhiều loại ứng dụng

- Ngôn Ngữ SQL Tiêu Chuẩn: Việc sử dụng ngôn ngữ SQL tiêu chuẩn giúp di chuyển giữa các hệ thống quản trị cơ sở dữ liệu một cách dễ dàng và tiện lợi

- Cộng Đồng Mạnh Mẽ và Tài Nguyên Phong Phú: Sự phổ biến của MySQL đồng nghĩa với sự hỗ trợ mạnh mẽ từ cộng đồng, có nhiều tài liệu, diễn đàn, và nguồn học tập để hỗ trợ người phát triển

1.5 TYPESCRIPT

1.5.1 Tổng quan

TypeScript là một ngôn ngữ lập trình mã nguồn mở, được phát triển bởi Microsoft, nó

có thể được coi là một phiên bản nâng cao của Javascript, thêm vào đó các tính năng mới như kiểu dữ liệu tĩnh, lớp, và module TypeScript được thiết kế để giúp làm cho việc phát triển ứng dụng JavaScript lớn và phức tạp trở nên dễ dàng hơn bằng cách tăng tính dễ bảo trì và độ tin cậy

Trang 30

1.5.2 Đặc điểm chính

- Kiểu Dữ Liệu Tĩnh: TypeScript hỗ trợ kiểu dữ liệu tĩnh, giúp phát hiện lỗi và cung cấp thông tin rõ ràng về cấu trúc dữ liệu trong quá trình phát triển

- Lớp và Kế Thừa: TypeScript hỗ trợ lập trình hướng đối tượng với khả năng

sử dụng lớp, đối tượng, và kế thừa, giúp tổ chức mã nguồn một cách cấu trúc và

- IntelliSense và Kiểm Tra Lỗi Tốt: Công cụ phát triển như Visual Studio Code

hỗ trợ IntelliSense mạnh mẽ với TypeScript, cung cấp gợi ý và thông báo lỗi khi bạn nhập code

1.5.3 Tại sao sử dụng

- Kiểm Soát Lỗi Tại Thời Gian Biên Dịch: Kiểu dữ liệu tĩnh của TypeScript giúp phát hiện lỗi ngay khi bạn viết code, giảm số lượng lỗi trong quá trình thực thi

- Tăng Hiệu Suất và Dễ Bảo Trì: Kiểu dữ liệu tĩnh giúp tăng hiệu suất và làm cho code dễ bảo trì hơn IntelliSense và tính năng autocomplete cũng giúp tăng tốc độ phát triển

- Phát Triển Ứng Dụng Lớn và Phức Tạp: TypeScript thích hợp cho việc phát triển các ứng dụng lớn và phức tạp, nơi tính dễ bảo trì và tổ chức mã nguồn là quan trọng

Trang 31

- Hệ Sinh Thái Mạnh Mẽ: TypeScript có một cộng đồng lớn và đầy đủ tài liệu

Nó cũng được hỗ trợ rộng rãi trong các công cụ phát triển như Visual Studio Code

- Tương Thích Ngược và Ngược Ngôn Ngữ: TypeScript tương thích ngược với JavaScript, nghĩa là bạn có thể sử dụng mã nguồn JavaScript trong dự án TypeScript Điều này giúp dễ dàng tích hợp TypeScript vào dự án hiện tại

- Chuẩn Hóa Dự Án: TypeScript giúp chuẩn hóa cấu trúc dự án, giúp đảm bảo sự nhất quán và tính tổ chức trong mã nguồn

1.6 PHƯƠNG PHÁP NGHIÊN CỨU

1.6.1 Nghiên cứu tài liệu

- Tìm hiểu các công nghệ được sử dụng trong dự án (React, Redux, Node.js, MySQL, TypeScript)

- Xem xét các mô hình thiết kế phổ biến cho ứng dụng web

- Nghiên cứu các giải pháp tối ưu hóa hiệu suất và bảo mật cho trang web

1.6.2 Phân tích yêu cầu

- Xác định các yêu cầu chức năng (functional requirements) như đăng ký, đăng nhập, tìm kiếm khóa học, quản lý giỏ hàng, thanh toán…

- Xác định các yêu cầu phi chức năng (non-functional requirements) như hiệu suất, bảo mật, trải nghiệm người dùng, khả năng mở rộng và bảo trì

1.6.3 Phân tích các trang web có liên quan

- Nghiên cứu các trang web mua bán khóa học hiện có trên thị trường

- Xác định những điểm mạnh và yếu của các đối thủ để cải thiện dự án

Trang 32

2 CHƯƠNG 2: THIẾT KẾ HỆ THỐNG

2.1 LƯỢC ĐỒ ERD

Hình 2.1 Lược đồ ERD

Trang 33

2.2 USE CASE DIAGRAM

Hình 2.2 Use case diagram_Actor Guest

Trang 34

Hình 2.3 Use case diagram_Actor Student

Hình 2.4 Use case diagram_Actor Teacher

Trang 35

Hình 2.5 Use case diagram_Actor Admin

2.3 ĐẶC TẢ USE CASE

2.3.1 Tìm kiếm khóa học

Bảng 2.1 UC_Tìm kiếm khóa học

Use case: UC01_Tìm kiếm các khóa học

Trang 36

Mục đích: Cho phép người dùng tìm kiếm khóa học dựa trên tên

Mô tả: Cho phép người dùng tìm kiếm khóa học dựa trên tên Tác nhân: Người dùng

Điều kiện trước: Không có

Điều kiện sau: Danh sách khóa học được lọc và hiển thị dựa trên kết quả tìm kiếm Luồng sự kiện chính

(Basic flows)

Người dùng Hệ thống

1 Nhập vào input tìm

kiếm và nhấn Enter

2 Gửi thông tin về server để tìm kiếm khóa học liên quan

3 Lấy danh sách khóa học phù hợp với từ khóa tìm kiếm và cập nhật danh sách hiển thị

Luồng sự kiện phụ

(Alternative Flows):

2.3.2 Thêm khóa học vào giỏ hàng

Bảng 2.2 UC_Thêm khóa học vào giỏ hàng

Use case: UC02_Thêm khóa học vào giỏ hàng

Mục đích: Thêm khóa học vào giỏ hàng để chuẩn bị cho quá trình (mua)

Mô tả: Cho phép người dùng thêm khóa học vào giỏ hàng để chuẩn bị cho quá

trình xem giỏ hàng

Tác nhân: Người dùng

Điều kiện trước: Người dùng đã đăng nhập thành công vào hệ thống và đã chọn xem

thông tin chi tiết của một khóa học mà không phải khóa học của chính bản thân mình tạo ra

Điều kiện sau: Khóa học đã được thêm vào giỏ hàng của người dùng

Luồng sự kiện chính

(Basic flows)

Người dùng Hệ thống

1 Trong trang chi tiết khóa

học, nhấn vào nút “Get it”

Trang 37

4 Tại vị trí nút nhấn “Get it” sẽ biến thành nút “Go to cart”

Luồng sự kiện phụ

(Alternative Flows):

Trang 38

2.3.3 Xóa khóa học khỏi giỏ hàng

Bảng 2.3 UC_Xóa khóa học khỏi giỏ hàng

Use case: UC03_Xóa khóa học khỏi giỏ hàng

Mục đích: Xóa khóa học khỏi giỏ hàng

Mô tả: Cho phép người dùng xóa khóa học khỏi giỏ hàng

Tác nhân: Người dùng

Điều kiện trước: Người dùng đã đăng nhập thành công vào hệ thống và đã thêm ít nhất

một khóa học vào giỏ hàng và truy cập đến giỏ hàng của mình Điều kiện sau:

Luồng sự kiện

chính (Basic flows)

Người dùng Hệ thống

1 Ở trang hiển thị danh sách các

khóa học trong giỏ hàng, chọn Remove những khóa học nào mà

bản thân muốn xóa

.3 Xóa khóa học đó ra khỏi giỏ hàng trong database

4 Hiện thông báo Xóa khỏi giỏ hàng thành công

Luồng sự kiện phụ

(Alternative

Flows):

2.3.4 Chuyển khóa học vào để dành sau

Bảng 2.4 UC_Chuyển khóa học vào để dành sau

Use case: UC04_Chuyển khóa học vào để dành sau

Mục đích: Lưu khóa học vào danh sách để sau

Mô tả: Cho phép người dùng lưu khóa học vào danh sách để sau

Tác nhân: Người dùng

Điều kiện trước: Người dùng đã đăng nhập thành công vào hệ thống và đã thêm ít nhất một

khóa học vào giỏ hàng và truy cập đến giỏ hàng của mình Điều kiện sau:

Trang 39

Luồng sự kiện

chính (Basic

flows)

Người dùng Hệ thống

1 Ở trang hiển thị danh sách các khóa

học trong giỏ hàng, chọn Save for later những khóa học nào mà bản thân muốn lưu vào danh sách để sau

2 Đánh dấu khóa học dó đang ở trong trạng thái save for later trong database, đồng thời xóa khóa học

đó ra khỏi giỏ hàng

3 Thêm khóa học đó vào danh sách Save for later trên giao diện

4 Hiển thị thông báo Lưu vào danh sách để sau thành công

Luồng sự kiện phụ

Use case: UC05_Thanh toán

Mục đích: Đăng ký học (mua) khóa học của người khác

Mô tả: Cho phép người dùng mua khóa học của người khác bằng hình thức

thanh toán Vnpay Tác nhân: Người dùng

Điều kiện trước: Người dùng đã thêm tối thiểu ít nhất một khóa học vào giỏ hàng

Điều kiện sau:

Luồng sự kiện

chính (Basic

flows)

Người dùng Hệ thống

Trang 40

1 Trong trang giỏ hàng, chọn

chức năng "Check Out."

3.Kiểm tra thông tin trên bill

để đảm bảo đơn hàng chính xác

4 Chọn nút "Create Check Out"

6 Điền thông tin thanh toán trên trang VNPAY, bao gồm các thông tin thẻ ngân hàng hoặc thông tin thanh toán khác

7 Xác nhận thanh toán

2 Hiển thị trang xác nhận đơn hàng (bill) với các thông tin chi tiết về danh sách khóa học, giá cả, và tổng tiền cần thanh toán

5.Chuyển hướng người dùng đến trang thanh toán VNPAY

8 Nhận xác nhận thanh toán từ VNPAY và cập nhật trạng thái thanh toán trong hệ thống

9 Chuyển hướng người dùng đến trang xác nhận đơn hàng với thông báo thanh toán thành công và cung cấp lựa chọn

để quay lại trang chủ hoặc xem thông tin khóa học đã thanh toán

Luồng sự kiện phụ

(Alternative

Flows):

2.3.6 Kiểm tra coupon

Bảng 2.6 UC_Kiểm tra coupon

Use case: UC06_Kiểm tra coupon

Mục đích: Kiểm tra coupon để áp dụng coupon cho đơn hàng

Mô tả: Cho phép người dùng nhập hoặc lựa chọn từ những mã giảm giá săn

được để áp dụng cho tổng đơn hàng của mình trong quá trình thanh toán

Tác nhân: Người dùng

Điều kiện trước: Người dùng đang ở trang giỏ hàng

Điều kiện sau:

Ngày đăng: 19/11/2024, 08:52