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

Khóa Luận Tốt Nghiệp Đề Tài Xây Dựng Website Kinh Doanh Khóa Học Online.pdf

246 1 0

Đ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 Kinh Doanh Khóa Học Online
Tác giả Nguyễn Ngọc Trung, Nguyễn Phúc Thanh Toàn
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 Tp. Hồ Chí Minh
Chuyên ngành Công nghệ Thông tin
Thể loại Khóa luận tốt nghiệp
Năm xuất bản 2023
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 246
Dung lượng 6,29 MB

Cấu trúc

  • 1. TÍNH C Ấ P THI Ế T C ỦA ĐỀ TÀI (24)
  • 2. ĐỐI TƯỢ NG NGHIÊN C Ứ U (24)
  • 3. PH Ạ M VI NGHIÊN C Ứ U (25)
  • 4. M ỤC TIÊU ĐỀ TÀI (25)
  • 5. Ý NGHĨA KHOA HỌ C VÀ TH Ự C TI Ễ N (25)
  • CHƯƠNG 1: CƠ SỞ LÝ THUY Ế T (26)
    • 1.1 SPRING BOOT FRAMEWORK (7)
      • 1.1.1 Khái ni ệ m (26)
      • 1.1.2 Kiến trúc và cách hoạt động của Spring Boot (26)
      • 1.1.3 Ưu điể m c ủ a Spring Boot (27)
      • 1.1.4 Nhược điể m c ủ a Spring Boot (28)
    • 1.2 SPRING SECURITY (7)
      • 1.2.1 Khái ni ệ m (28)
      • 1.2.2 Cơ chế ho ạt độ ng c ủ a Spring Security (28)
      • 1.2.3 Ưu điể m c ủ a Spring Security (29)
    • 1.3 MYSQL (7)
      • 1.3.1 Khái ni ệ m (29)
      • 1.3.2 Cách ho ạt độ ng c ủ a MYSQL (29)
      • 1.3.3 Ưu điể m c ủ a MySQL (30)
      • 1.3.4 Nhược điể m c ủ a MySQL (30)
    • 1.4 RESTFUL API (7)
      • 1.4.1 Khái ni ệ m (30)
      • 1.4.2 Cách ho ạt độ ng c ủ a RESTFUL API (31)
    • 1.5 JSON WEB TOKEN (JWT) (7)
      • 1.5.1 Khái ni ệ m JWT (31)
      • 1.5.2 Các thành ph ầ n c ủ a JWT (31)
      • 1.5.3 Ưu điể m c ủ a JWT (32)
    • 1.6 AWS S3 BUCKET (7)
      • 1.6.1 AWS S3 là gì? (33)
      • 1.6.2 Cách t ổ ch ứ c d ữ li ệ u c ủ a AWS S3 (33)
    • 1.7 REACTJS (7)
      • 1.7.1 Gi ớ i thi ệ u v ề ReactJS (33)
      • 1.7.2 Các thành ph ầ n c ủ a React (34)
      • 1.7.3 Ưu và nhược điể m c ủ a ReactJS (34)
    • 1.8 REDUX (7)
      • 1.8.1 Gi ớ i thi ệ u v ề Redux (36)
      • 1.8.2 Nguyên t ắ c (36)
      • 1.8.3 Ưu điể m c ủ a Redux (36)
    • 1.9 MATERIAL UI (7)
      • 1.9.1 Gi ớ i thi ệ u (37)
      • 1.9.2 Ưu điể m (37)
      • 1.9.3 Nhược điể m (37)
    • 1.10 BOOTSTRAP (7)
      • 1.10.1 Gi ớ i thi ệ u (37)
      • 1.10.2 Ưu điể m (37)
  • CHƯƠNG 2: KHẢ O SÁT HI Ệ N TR Ạ NG VÀ MÔ HÌNH HÓA YÊU C Ầ U (39)
    • 2.1 KH Ả O SÁT HI Ệ N TR Ạ NG (7)
      • 2.1.1 Các website kh ả o sát (39)
      • 2.1.2 Yêu c ầ u bài toán c ủa đề tài (41)
    • 2.2 XÁC ĐỊ NH YÊU C Ầ U (7)
      • 2.2.1 Yêu c ầ u ch ức năng (41)
      • 2.2.2 Yêu c ầ u phi ch ức năng (43)
    • 2.3 MÔ HÌNH HÓA YÊU C Ầ U (44)
      • 2.3.1 Lược đồ Use Case (44)
      • 2.3.2 Đặ c t ả Use Case (47)
  • CHƯƠNG 3: THIẾ T K Ế H Ệ TH Ố NG (122)
    • 3.1 THI Ế T K Ế CƠ SỞ D Ữ LI Ệ U (8)
      • 3.1.1 Lược đồ th ự c th ể (122)
      • 3.1.2 Mô t ả chi ti ế t b ả ng d ữ li ệ u (123)
    • 3.2 THI Ế T K Ế GIAO DI Ệ N (8)
      • 3.2.1 Giao di ệ n cho Admin và Teacher (145)
      • 4.1.2 Giao di ện cho ngườ i dùng (Student, Teacher) (170)
  • CHƯƠNG 4: CÀI ĐẶ T VÀ KI Ể M TH Ử (193)
    • 4.1 CÀI ĐẶ T PH Ầ N M Ề M (8)
      • 4.1.1 Cài đặ t ứ ng d ụng, thư việ n c ầ n thi ế t (193)
      • 4.1.2 Cài đặ t phía Backend (194)
      • 4.1.3 Cài đặ t phía Frontend (195)
    • 4.2 KI Ể M TH Ử PH Ầ N M Ề M (8)
      • 4.2.3 K ế ho ạ ch ki ể m th ử (197)
      • 4.2.4 Các trườ ng h ợ p ki ể m th ử (198)
    • 1. K Ế T QU Ả ĐẠT ĐƯỢ C (0)
    • 2. ƯU ĐIỂ M (3)
    • 3. NHƯỢC ĐIỂ M (0)
    • 4. HƯỚ NG PHÁT TRI Ể N (0)

Nội dung

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

Hiện nay, việc xây dựng và ứng dụng công nghệ thông tin vào đời sống đã trở thành mục tiêu cấp thiết của toàn xã hội Bởi nó không chỉ giúp đẩy nhanh tốc độ phát triển của xã hội mà còn góp phần khắc phục những khó khăn về khoảng cách, nhân lực và hiệu năng Đặc biệt trong thời buổi dịch bệnh Covid hiện nay, việc ứng dụng công nghệ thông tin vào đời sống còn góp phần hạn chế dịch bệnh Tuy nhiên, vẫn còn nhiều khó khăn, bất cập trong việc đưa công nghệ thông tin vào từng mảng của đời sống cũng như trong kết nối giữa người cung và người cầu Nắm bắt được điều đó, nhóm chọn nghiên cứu đề tài “Xây dựng website kinh doanh khóa học online” Với đề tài, nhóm hy vọng vừa góp phần thúc đẩy việc phát triển công nghệ thông tin vừa tạo ra một trang web giúp kết nối giữa người bán và người mua Đây sẽ là nơi, mà người mua được quyền xem xét, lựa chọn những khóa học online mà mình cần thiết mà không cần phải qua trung gian người tư vấn nào cả Còn người bán sẽ có cơ hội giới thiệu về những ưu điểm của khóa học cung cấp, cách thức liên hệ, ưu đãi, … Mà không cần tốn phí cho c ác tr ang quảng cáo Đặc biệt, nhóm mong rằng trang web này sẽ phát thêm một tín hiệu tích cực trong việc đưa người Việt Nam đến việc học online một cách dễ dàng và hiệu quả hơn.

ĐỐI TƯỢ NG NGHIÊN C Ứ U

Đối với đề tài này, đối tượng nghiên cứu dựa trên nhu cầu học tập mọi lúc, mọi nơi của người dùng, không bị giới hạn về thời gian cũng như địa điểm, chỉ cần thiết bị thông minh có thể truy cập được Internet là có thể học được Đồng thời, đề tài cũng nghiên cứu các công nghệ để hoàn thiện sản phẩm một cách hoàn chỉnh nhất, bao gồm:

- Spring Boot kết hợp với Spring Security, Spring Data JPA để xây dựng phần server cho website

- Thư viện ReactJS để thiết kế và xây dựng giao diện cho người dùng.

- Cơ sở dữ liệu MySQL để lưu trữ dữ liệu cho hệ thống.

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

- JSON Web Token (JWT) để làm lớp bảo mật cho hệ thống Để gọi đến các API có yêu cầu xác thực, ứng dụng phải cung cấp JWT trong header của request.

- AWS S3 Bucket để lưu trữ các video khóa học, tài liệu và hình ảnh.

PH Ạ M VI NGHIÊN C Ứ U

Trong đề tài tiểu luận chuyên ngành, chủ yếu tập trung vào xử lý nghiệp vụ của một trang web chuyên kinh doanh các khóa học online như: xem và tìm kiếm các khóa học, mua khóa học và cho phép người dùng học trực tiếp trên trang web cũng như các tính năng bổ trợ cho việc học như tạo ghi chú, tạo các bình luận để thảo luận bên dưới các video của khóa học, trao đổi thông tin với chatbot sử dụng ChatGPT, thêm lịch nhắc học và thanh toán, kiểm tra các khóa học đã mua.

Phần quản trị sẽ tập trung vào các nghiệp vụ như quản lý sản phẩm, quản lý các khóa học, giáo viên trên hệ thống, quản lý doanh thu, duyệt nội dung khóa học đăng ký mới, xử lý các yêu cầu trở thành giảng viên của người dùng,

M ỤC TIÊU ĐỀ TÀI

Trong quá trình hoàn thiện đề tài, nhóm thực hiện đã đặt ra những mục tiêu sau:

- Xây dựng một trang kinh doanh khóa học online với những chức năng cơ bản cho người dùng và giáo viên của các khóa học.

- Xây dựng được giao diện thân thiện với người sử dụng, dễ sử dụng và thao tác

- Áp dụng được các hình thức thanh toán như VNPAY vào hệ thống website

- Áp dụng được dịch vụ AWS S3 để lưu trữ dữ liệu cho hệ thống

Ý NGHĨA KHOA HỌ C VÀ TH Ự C TI Ễ N

Đề tài hướng đến khả năng tiếp thu, nâng cao kỹ năng lập trình, nghiên cứu công nghệ mới và đáp ứng nhu cầu học online của người dùng Mục đích giúp tạo ra một hệ thống có thể giúp cho việc học tập thông qua Internet trở nên ngày càng thuận lời Đồng thời, cung cấp một nơi kết nối các giảng viên , cùng chia sẻ các kiến thức trên nhiều lĩnh vực

CƠ SỞ LÝ THUY Ế T

BOOTSTRAP

2 Chương 2: KHẢO SÁT HIỆN TRẠNG VÀ MÔ HÌNH HÓA YÊU CẦU

2.3 Mô hình hoá yêu cầu

3 Chương 3: THIẾT KẾ HỆ THỐNG

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

4 Chương 4: CÀI ĐẶT VÀ KIỂM THỬ

STT Thời gian thực hiện Công việc Ghi chú

Thiết kế usecase và mô hình hóa yêu cầu

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

Tìm hiểu thư viện ReactJS, Material UI Tìm hiểu framework Spring Boot Tìm hiểu Spring Security, JWT

Tiến hành tổ chức cấu trúc project Xây dựng các tables của cơ sở dử liệu

Tạo các Entities trong Spring Boot và mapping với cơ sở dữ liệu

Xây dựng API cho các chức năng cơ bản dành cho người dùng có phân quyền là User

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Tp Hồ Chí Minh, ngày tháng năm 2023 Ý 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)

Xây dựng Giao diện người dùng cho hệ thống

Kết hợp các phần đã xây dựng (giao diện, APIs, database)

Xây dựng giao diện cho trang Admin

Tiến hàng tạo các APIs cho Admin

Xây dựng chức năng nâng cao là các tool học tập cho người dùng Tiến hàng code tính năng cho phép có thêm bài Test, file bài giảng cho các khoá học

Xây dựng tính năng quản lý khoá học cho giảng viên

Xây dựng tính năng phê duyệt khoá học, đăng ký khoá học mới

Tìm hiểu quá trình deploy sản phẩm

Viết script CI/CD Tìm hiểu AWS CloudFront

Tiến hành deploy sản phẩm

9 16/06/2023 – 21/06/2023 Kiểm thử chương trình và tiến hành sửa lỗi

10 22/06/2023 – 07/07/2023 Viết và hoàn thiện báo cáo

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

5 Ý NGHĨA KHOA HỌ C VÀ TH Ự C TI Ễ N 2

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

1.1.2 Kiến trúc và cách hoạt động của Spring Boot 3

1.2.2 Cơ chế ho ạt độ ng c ủ a Spring Security 5

1.3.2 Cách ho ạt độ ng c ủ a MYSQL 6

1.4.2 Cách ho ạt độ ng c ủ a RESTFUL API 8

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

1.7.3 Ưu và nhược điể m c ủ a ReactJS 11

CHƯƠNG 2: KHẢ O SÁT HI Ệ N TR Ạ NG VÀ MÔ HÌNH HÓA YÊU C Ầ U 16

2.1 KH Ả O SÁT HI Ệ N TR Ạ NG 16

2.1.2 Yêu c ầ u bài toán c ủa đề tài 18

2.2.2 Yêu c ầ u phi ch ức năng 20

3.1.2 Mô t ả chi ti ế t b ả ng d ữ li ệ u 100

3.2.1 Giao di ệ n cho Admin và Teacher 122

4.1.2 Giao di ện cho ngườ i dùng (Student, Teacher) 147

CHƯƠNG 4: CÀI ĐẶ T VÀ KI Ể M TH Ử 170

4.1.1 Cài đặ t ứ ng d ụng, thư việ n c ầ n thi ế t 170

4.2.4 Các trườ ng h ợ p ki ể m th ử 175

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Hình 1: Ki ế n trúc phân l ớ p c ủ a SpringBoot 3

Hình 3: Cơ chế ho ạt độ ng c ủ a Spring Security 5

Hình 6: T ổ ch ứ c d ữ li ệ u trên AWS S3 10

Hình 7: Giao di ệ n website kh ả o sát Unica 16

Hình 8: Giao di ệ n Website kh ả o sát F8 – H ọ c l ập trình để đi làm 17

Hình 9: Use Case cho Admin 21

Hình 10: Use Case cho Teacher 22

Hình 11: Use Case cho ngườ i có phân quy ề n là Reviewer 22

Hình 12: Use Case cho ngườ i có phân quy ề n là User 23

Hình 13: : Sequence Diagram cho ch ức năng gử i yêu c ầ u duy ệ t khoá h ọ c m ớ i 24

Hình 14: Sequence Diagram thêm lo ạ i khoá h ọ c m ớ i 26

Hình 15: Sequence Diagram ch ức năng thêm mớ i mã khuy ế n mãi 28

Hình 16: Sequence Diagram ch ức năng cậ p nh ậ t thông tin mã khuy ế n mãi 30

Hình 17: Sequence Diagram xem l ị ch s ử đơn hàng 32

Hình 18: Sequence Diagram ch ức năn g g ử i k ế t qu ả phê duy ệ t yêu c ầ u tr ở thành gi ả ng viên 33

Hình 19: Sequence Diagram cho ch ức năng thêm khoá họ c vào gi ỏ hàng 35

Hình 20: Sequence Diagram đánh giá khoá học đã mua 36

Hình 21: Sequence Diagram ch ức năng đă ng xu ấ t 38

Hình 22: Sequence Diagram ch ức năng đăng nhậ p 39

Hình 23: Sequence Diagram ch ức năng đăng ký tài khoả n 41

Hình 24: Sequence Diagram ch ức năng thanh toán 43

Hình 25: Sequence Diagram ch ức năng xem đánh giá khoá họ c 46

Hình 26: Sequence Diagram tìm ki ế m các khoá h ọ c 47

Hình 27: Sequence Diagram yêu c ầ u tr ở thành gi ả ng viên 49

Hình 28: Sequence Diagram xoá khoá h ọ c kh ỏ i gi ỏ hàng 51

Hình 29: Sequence Diagram ch ức năng trao đổ i thông tin v ớ i chatBot 52

Hình 30: Sequence Diagram t ạ o l ị ch nh ắ c h ẹ n h ọ c t ậ p 54

Hình 31: Sequence Diagram ch ức năng tạ o câu h ỏ i th ả o lu ậ n 55

Hình 32: Sequence Diagram ch ức năng xem danh sách bài giả ng 57

Hình 33: Sequence Diagram ch ức năng trả l ờ i th ả o lu ậ n trong bài h ọ c 59

Hình 34: Sequence Diagram ch ức năng xoá thả o lu ậ n trong bài gi ả ng 60

Hình 35: Sequence Diagram ch ức năn g xem thông báo t ừ gi ả ng viên 63

Hình 36:Sequence Diagram ch ức năng 64

Hình 37: Sequence Diagram thêm ghi chú cho bài gi ả ng 66

Hình 38: Sequence Diagram cho ch ức năng xoá ghi chú 68

Hình 39: Sequence Diagram ch ức năng thự c hi ệ n bài Test 70

Hình 40: Sequence Diagram ch ức năng đá nh d ấ u bài h ọ c là hoàn thành 72

Hình 41: Sequence Diagram ch ức năng bỏ đánh dầ u hoàn thành bài h ọ c 74

Hình 42: Sequence Diagram ch ức năng xem danh sách giả ng viên 76

Hình 43: Sequence Dìagram ch ức năng xem danh sách re viewers 77

Hình 44: Sequence Diagram ch ức năng xem bài giả ng 78

Hình 45:Sequence Diagram ch ức năng thêm khoá họ c vào danh sách yêu thích 80

Hình 46: Sequence Diagram ch ức năng xem danh sách khoá họ c yêu thích 81

Hình 47: Sequence Diagram xoá khoá h ọ c kh ỏ i danh sách yêu thích 82

Hình 48:Sequence Diagram ch ức năng xem danh sách yêu câu phê duyệ t tr ở thành gi ả ng viên 84

Hình 49: Sequence Diagram đăng ký account reviewer 86

Hình 50: Sequence Diagram ch ức năng xem danh sách reviewer 88

Hình 51: Sequence Diagram ch ức năng xem danh sách khoá học chưa đượ c duy ệ t 89

Hình 52: Sequence Diagram ch ức năng nhậ n task ki ể m duy ệ t 91

Hình 53: Sequence Diagram ch ức năng duyệ t yêu c ầ u t ạ o m ớ i khoá h ọ c 93

Hình 54: Sequence Diagram ch ức năng cậ p nh ậ t bài gi ả ng 95

Hình 55: Sequence Diagram xem danh sách mã khuy ế n mãi 97

Hình 57: Giao di ện trang đăng nhậ p 122

Hình 58: Giao di ệ n trang quên m ậ t kh ẩ u 123

Hình 59: Giao di ệ n trang Dashboard 124

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Hình 60: Giao di ệ n trang DashBoard th ể hi ệ n doanh thu 124

Hình 61: Giao di ệ n trang qu ả n lý khoá h ọ c 125

Hình 62: Giao di ệ n trang ch ỉ nh s ử a thông tin t ổ ng quan khoá h ọ c 127

Hình 63: Giao di ệ n trang ch ỉ nh s ử a n ộ i dung bài h ọ c 127

Hình 64: Giao di ệ n tr ạ ng thêm m ớ i chapter 129

Hình 65: Giao di ệ n trang ch ỉ nh s ử a bài h ọ c 130

Hình 66: Giao di ệ n trang qu ả n lý yêu c ầ u phê duy ệ t khoá h ọ c 131

Hình 67: Giao di ện trang đăng kí thông tin khoá họ c m ớ i 132

Hình 68: Giao di ện trang đăng ký nộ i dung khoá h ọ c m ớ i 132

Hình 69: Giao di ệ n trang xem l ạ i n ộ i dung khoá h ọ c m ớ i 132

Hình 70: Giao di ệ n trang qu ả n lý bình lu ậ n 134

Hình 71: Giao di ệ n trang thêm m ớ i bình lu ậ n 135

Hình 72: Giao di ệ n trang qu ản lý đơn hàng 135

Hình 73: Giao di ệ n trang qu ả n lý coupon 136

Hình 74: Giao di ệ n trang thêm m ớ i coupon 137

Hình 75: Giao di ệ n trang ch ỉ nh s ử a coupon 137

Hình 76: Giao di ệ n trang qu ả n lý thông tin tài kho ả n 138

Hình 77: Giao di ện trang thay đổ i m ậ t kh ẩ u 139

Hình 78: Giao di ệ n trang qu ả n lý khóa h ọ c 140

Hình 79: Giao di ệ n trang thêm m ớ i và s ử a lo ạ i khóa h ọ c 141

Hình 80: Giao di ệ n trang qu ản lý phương thứ c thanh toán 142

Hình 81: Giao di ệ n trang thêm m ớ i và ch ỉ nh s ửa phương thứ c thanh toán 143

Hình 82: Giao di ệ n trang phê duy ệ t yêu c ầ u tr ở thành gi ả ng viên 144

Hình 83: Giao di ệ n trang qu ản lý ngườ i ki ể m duy ệ t 145

Hình 84: Giao di ệ n trang thêm m ới ngườ i ki ể m duy ệ t 146

Hình 85: Giao di ện trang đăng nhậ p 147

Hình 86: Giao di ện trang đăng ký tài khoả n 148

Hình 87: Giao di ệ n trang quên m ậ t kh ẩ u 149

Hình 90: Giao di ệ n top 4 khóa h ọ c 151

Hình 91: Giao di ện ngườ i t ạ o web 152

Hình 93: Giao di ệ n trang danh sách khóa h ọ c 153

Hình 94: Giao di ệ n trang chi ti ế t khóa h ọ c 154

Hình 95: Giao di ệ n trang chi ti ế t khóa h ọ c 155

Hình 96: Giao di ệ n trang phòng h ọ c 156

Hình 97: Giao di ệ n ch ức năng note trong khóa họ c 157

Hình 98: Giao di ệ n ch ức năng hỏi đáp trong khóa họ c 158

Hình 99: Giao di ệ n ch ức năng phả n h ồ i câu h ỏ i 159

Hình 100: Giao di ệ n ch ức năng thêm lị ch h ọ c 160

Hình 101: Giao di ệ n ch ức năng hiể n th ị thông báo c ủ a gi ả ng viên 161

Hình 102: Giao di ệ n ch ức năng hỏi đáp vớ i AI 162

Hình 103: Giao di ệ n trang thông tin cá nhân 163

Hình 104: Giao di ệ n trang l ị ch s ử mua hàng 164

Hình 105: Giao di ệ n trang l ị ch s ử mua hàng 164

Hình 106: Giao di ệ n trang danh sách gi ả ng viên 165

Hình 107: Giao di ệ n trang chi ti ế t gi ả ng viên 166

Hình 108: Giao di ệ n trang gi ỏ hàng 167

Hình 109: Giao di ệ n trang khóa h ọ c c ủ a tôi (Tab khóa h ọc đã mua) 168

Hình 110: Giao di ệ n trang khóa h ọ c c ủ a tôi (Tab khóa h ọ c yêu thích) 168

Hình 111: C ấu trúc thư mụ c Front End (User) 172

Hình 112: C ấu trúc thư mụ c Front End (Admin, Teacher, Reviewer) 173

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

B ảng 1: Đặ c t ả UseCase g ử i yêu c ầ u phê duy ệ t khoá h ọ c m ớ i 24

B ảng 2: Đặ c t ả Use Case thêm lo ạ i khóa h ọ c 26

B ảng 3: Đặ c t ả Use Case thêm m ớ i mã khuy ế n mãi 28

B ảng 4: Đặ c t ả Use Case s ử a thông tin mã khuy ế n mãi 30

B ảng 5: Đặ c t ả Use Case xem l ị ch s ử đơn hàng 32

B ảng 6: Đặ c t ả Use Case ch ấ p nh ậ n yêu c ầ u tr ở thành gi ả ng viên 33

B ảng 7: Đặ c t ả Use Case thêm khoá h ọ c vào gi ỏ hàng 35

B ảng 8: Đặ c t ả Use Case đánh giá khóa học đã mua 36

B ảng 9: Đặ c t ả Use Case ch ức năng đăng xuấ t 38

B ảng 10: Đặ c t ả Use Case đăng nhậ p 39

B ảng 11: Đặ c t ả Use Case đăng ký tài khoả n 41

B ảng 12: Đặ c t ả Use Case thanh toán đơn hàng 43

B ảng 13: Đặ c t ả Use Case xem đánh giá khóa họ c 46

B ảng 14: Đặ c t ả Use Case ch ức năng tìm kiế m khoá h ọ c 47

B ảng 15: : Đặ c t ả Use Case yêu c ầ u tr ở thành gi ả ng viên 49

B ảng 16: Đặ c t ả UseCase xoá khoá h ọ c kh ỏ i gi ỏ hàng 51

B ảng 17: Đặ c t ả UseCase trao đổ i thông tin v ớ i ChatBot 52

B ảng 18: Đặ c t ả UseCase t ạ o l ị ch nh ắ c h ẹ n h ọ c t ậ p 54

B ảng 19: Đặ c t ả Use Case t ạ o câu h ỏ i th ả o lu ậ n 56

B ảng 20: Đặ c t ả Use ch ức năng xem danh sách t h ả o lu ậ n 57

B ảng 21 Đặ c t ả UseCase ch ứuc năng trả l ờ i th ả o lu ậ n 59

B ảng 22: Đặ c t ả Use Case ch ức năng xoá thả o lu ậ n trong bài gi ả ng 61

B ảng 23: Đặ c t ả Use Case xem thông báo t ừ gi ả ng viên 63

B ảng 24: Đặ c t ả UseCase ch ức năng xem danh sách ghi chú 64

B ảng 25: Đặ c t ả Use Case thêm ghi chú 66

B ảng 26: Đặ c t ả Usecase ch ức năng xoá ghi chú 68

B ảng 27: Đặ c t ả Use Case th ự c hi ệ n bài Quiz 70

B ảng 28: Đặ c t ả Use Case ch ức năng đánh dấ u hoàn thành bài h ọ c 73

B ả ng 29: Đặ c t ả Use Case b ỏ đánh dấ u hoàn thành khoá h ọ c 75

B ảng 30: Đặ c t ả Use case xem danh sách gi ả ng viên 76

B ảng 31: Đặ c t ả Use Case xem thông tin chi ti ế t gi ả ng viên 77

B ảng 32: Đặ c t ả Use Case xem bài gi ả ng 79

B ảng 33: Đặ c t ả Use Case năng thêm khoá họ c vào danh sách yêu thích 80

B ảng 34: Đặ c t ả UseCase ch ức năng xem danh sách khoá họ c yêu thích 81

B ảng 35: Đặ c t ả Use Case xoá khoá h ọ c kh ỏ i danh sách yêu thích 82

B ảng 36: Đặ c t ả Use Case xem danh sách yêu c ầ u phê duy ệ t thành gi ả ng viên 84

B ảng 37: Đặ c t ả Use Case đăng ký reviewer 86

B ảng 38: Đặ c t ả Use Case xem danh sách reviewer 88

B ảng 39: Đặ c t ả Use Case xem danh sách khoá h ọc chưa đưa duyệ t 89

B ảng 40: Đặ c t ả Use Case nh ậ n task ki ể m duy ệ t 91

B ảng 41: Đặ c t ả Use Case g ử i kêt qu ả yêu c ầ u duy ệ t khoá h ọ c 93

B ảng 42: Đặ c t ả Use Case c ậ p nh ậ t bài gi ả ng 95

B ảng 43; Đặ c t ả Use Case xem mã khuy ế n mãi 97

B ả ng 44: Mô t ả chi ti ế t b ả ng Account 100

B ả ng 45: Mô t ả chi ti ế t b ả ng UserDetail 100

B ả ng 46: Mô t ả chi ti ế t b ả ng Cart 101

B ả ng 47: Mô t ả chi ti ế t b ả ng Cart Detail 101

B ả ng 49: Mô t ả chi ti ế t b ả ng Chapters 102

B ả ng 50: Mô t ả chi ti ế t b ả ng Coupon 103

B ả ng 51: Mô t ả chi ti ế t b ả ng courses 104

B ả ng 52: Mô t ả chi ti ế t b ả ng courses_paid 105

B ả ng 53: Mô t ả chi ti ế t b ả ng Courses Video 105

B ả ng 54: Mô t ả chi ti ế t b ả ng Note 106

B ả ng 55: Mô t ả chi ti ế t b ả ng Orders 106

B ả ng 56: Mô t ả chi ti ế t b ả ng Order Detail 107

B ả ng 57: Mô t ả chi t ế t b ả ng Payment 108

B ả ng 58: Mô t ả chi ti ế t b ả ng Register_Teacher_Form 108

B ả ng 59: Mô t ả chi ti ế t b ả ng ResourceCourses 109

B ả ng 60: Mô t ả chi ti ế t b ả ng reviews 109

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

B ả ng 61: Mô tả chi tiết b ảng role 109

B ả ng 62: Mô t ả chi ti ế t b ả ng token 110

B ả ng 63: Mô t ả chi ti ế t b ả ng Announcement 110

B ả ng 64: Mô t ả chi ti ế t b ả ng course_summary_info_register 111

B ả ng 65: Mô t ả chi ti ế t b ả ng discuss 112

B ả ng 66: Mô t ả chi ti ế t b ả ng learning_process 113

B ả ng 67: Mô t ả chi ti ế t b ả ng learning_process_learned_lectures 114

B ả ng 68: Mô t ả chi ti ế t b ả ng lectures 114

B ả ng 69: Mô t ả chi ti ế t b ả ng quiz_answer 115

B ả ng 70: Mô t ả chi ti ế t b ả ng quiz_question 116

B ả ng 71: Mô t ả chi ti ế t b ả ng quiz_stat 116

B ả ng 72: Mô t ả chi ti ế t b ả ng register_chapter 117

B ả ng 73: Mô t ả chi ti ế t b ả ng register_course_session 118

B ả ng 74: Mô t ả chi ti ế t b ả ng register_lectures 119

B ả ng 75: Mô t ả chi ti ế t b ả ng reviewer_role 120

B ả ng 76: Mô t ả chi ti ế t b ả ng teacher_profile 120

B ả ng 77: Mô t ả chi ti ế t b ả ng wish_list 121

B ả ng 78: Mô t ả trang đăng nhậ p 122

B ả ng 79: Mô t ả trang quên m ậ t kh ẩ u 123

B ả ng 81: Mô t ả trang qu ả n lý khoá h ọ c 125

B ả ng 82: Mô t ả giao di ệ n trang ch ỉ nh s ử a khoá h ọ c 127

B ả ng 83: Mô t ả trang thêm m ớ i chapter 129

B ả ng 84: Mô t ả trang ch ỉ nh s ử a bài h ọ c 130

B ả ng 85: Mô t ả giao di ệ n trang qu ả n lý yêu c ầ u phê duy ệ t khoá h ọ c 131

B ả ng 86: Mô t ả chi ti ết trang đăng ký khoá họ c m ớ i 132

B ả ng 87: Mô t ả chi ti ế t trang qu ả n lý bình lu ậ n 134

B ả ng 88: Mô t ả chi ti ế t trang thêm m ớ i bình lu ậ n 135

B ả ng 89: Mô t ả chi ti ế t trang qu ản lý đơn hàng 136

B ả ng 90: Mô t ả chi ti ế t trang qu ả n lý coupon 136

B ả ng 91: Mô t ả chi ti ế t trang thêm m ớ i và s ử a coupon 137

B ả ng 92: Mô t ả chi ti ế t trang qu ả n lý thông tin tài kho ả n 138

B ả ng 93: Mô t ả chi ti ết trang thay đổ i m ậ t kh ẩ u 139

B ả ng 94: Mô t ả chi ti ế t trang qu ả n lý khóa h ọ c 140

B ả ng 95: Mô t ả chi ti ế t trang thêm m ớ i và s ử a lo ạ i khóa h ọ c 141

B ả ng 96: Mô t ả chi ti ế t trang qu ản lý phương thứ c thanh toán 142

B ả ng 97: Mô t ả chi ti ế t trang thêm m ớ i và ch ỉ nh s ửa phương thứ c thanh toán 143

B ả ng 98: Mô t ả chi ti ế t trang phê duy ệ t yêu c ầ u tr ở thành gi ả ng viên 144

B ả ng 99: Mô t ả chi ti ế t trang qu ản lý ngườ i ki ể m duy ệ t 145

B ả ng 100: Mô t ả chi ti ế t trang thêm m ới ngườ i ki ể m duy ệ t 146

B ả ng 101: Mô t ả chi ti ết trang đăng nhậ p 147

B ả ng 102: Mô t ả chi ti ết trang đăng ký tài khoả n 148

B ả ng 103: Mô t ả chi ti ế t trang quên m ậ t kh ẩ u 149

B ả ng 104: Mô t ả chi ti ế t Header 150

B ả ng 105: Mô t ả chi ti ế t Banner 151

B ả ng 106: Mô t ả chi ti ế t top 4 khóa h ọ c 151

B ả ng 107: Mô t ả chi ti ết ngườ i t ạ o web 152

B ả ng 108: Mô t ả chi ti ế t Footer 153

B ả ng 109: Mô t ả chi ti ế t trang danh sách khóa h ọ c 154

B ả ng 110: Mô t ả chi ti ế t trang chi ti ế t khóa h ọ c 155

B ả ng 111: Mô t ả chi ti ế t trang phòng h ọ c 156

B ả ng 112: Mô t ả chi ti ế t ch ức năng note trong khóa họ c 157

B ả ng 113: Mô t ả chi ti ế t ch ức năng hỏi đáp 158

B ả ng 114: Mô t ả chi ti ế t ch ức năng phả n h ồ i câu h ỏ i 159

B ả ng 115: Mô t ả chi ti ế t ch ức năng tạ o l ị ch h ọ c 160

B ả ng 116: Mô t ả chi ti ế t ch ức năng hiể n th ị thông báo c ủ a gi ả ng viên 161

B ả ng 117: Mô t ả chi ti ế t ch ức năng hỏi đáp vớ i AI 162

B ả ng 118: Mô t ả chi ti ế t trang thông tin cá nhân 163

B ả ng 119: Mô t ả chi ti ế t trang l ị ch s ử mua hàng 164

B ả ng 120: Mô t ả chi ti ế t trang danh sách gi ả ng viên 165

B ả ng 121: Mô t ả chi ti ế t trang chi ti ế t gi ả ng viên 166

B ả ng 122: Mô t ả chi ti ế t trang gi ỏ hàng 167

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

B ả ng 123: Mô t ả chi ti ế t trang khóa h ọ c c ủ a tôi 168

B ả ng 124: Các ph ầ n m ề n c ần cài đặ t 170

B ả ng 125: Ki ể m th ử ch ức năng đăng nhậ p v ới trườ ng h ợp không điề n username 175

B ả ng 126: Ki ể m th ử ch ức năng đăng nhậ p v ới trườ ng h ợ p username không có trong h ệ th ố ng 176

B ả ng 127: Ki ể m th ử ch ức năng đăng nhậ p v ới trườ ng h ợp password không đúng 177

B ả ng 128: : Ki ể m th ử ch ức năng đăng nhập trườ ng h ợ p d ữ li ệu đúng 178

B ả ng 129: Ki ể m th ử ch ức năng đăng ký với username đã có t rên th ệ th ố ng 179

B ả ng 130: Ki ể m th ử ch ức năng đăng ký vớ i b ộ d ữ li ệu đúng 180

B ả ng 131: Ki ể m th ử ch ức năng tìm kiế m khóa h ọ c 181

B ả ng 132: Ki ể m th ử ch ức năng thay đổ i ảnh đạ i di ệ n 182

B ả ng 133: Ki ể m th ử ch ức năng thanh toán 183

B ả ng 134: Ki ể m th ử ch ức năng thanh toán với trườ ng h ợ p không ch ọ n s ả n ph ẩ m nào trong gi ỏ hàng 184

B ả ng 135: Ki ể m th ử ch ức năng xóa sả n ph ẩ m kh ỏ i gi ỏ hàng 185

B ả ng 136: Ki ể m th ử ch ức năng thêm sả n ph ẩ m vào gi ỏ hàng 186

B ả ng 137: Ki ể m th ử ch ức năng thêm sả n ph ẩ m vào gi ỏ hàng trườ ng h ợ p s ả n ph ẩm đã có trong gi ỏ hàng 187

B ả ng 138: Ki ể m th ử ch ức năng đánh giá khóa học đã mua 188

B ả ng 139: Ki ể m th ử ch ức năng đánh giá khóa học đã mua 189

B ả ng 140: Ki ể m th ử ch ức năng xóa đánh giá 190

B ả ng 141: Ki ể m th ử ch ức năng thêm vào danh sách yêu thích 191

B ả ng 142: Ki ể m th ử ch ức năng xóa khóa họ c kh ỏ i danh sách yêu thích 192

B ả ng 143: Ki ể m th ử ch ức năng thêm ghi chú 193

B ả ng 144: Ki ể m th ử ch ức năng xóa ghi chú 194

B ả ng 145: Ki ể m th ử ch ức năng thêm câu hỏ i 195

B ả ng 146: Ki ể m th ử ch ức năng xóa câu hỏ i 196

B ả ng 147: Ki ể m th ử ch ức năng trả l ờ i câu h ỏ i 197

B ả ng 148: Ki ể m th ử ch ức năng hỏ i đáp vớ i AI 199

B ả ng 149: Ki ể m th ử ch ức năng đánh dấ u hoàn thành bài h ọ c 200

B ả ng 150: Ki ể m th ử ch ức năng bỏ đánh dấ u hoàn thành bài h ọ c 201

B ả ng 151: Ki ể m th ử ch ức năng gử i yêu c ầ u tr ở thành gi ả ng viên 202

B ả ng 152: Ki ể m th ử ch ức năng duyệ t yêu c ầ u tr ở thành gi ả ng viên 204

B ả ng 153: Ki ể m th ử ch ức năng đăng ký tạ o khóa h ọ c 205

B ả ng 154: Ki ể m th ử ch ức năng phê duyệ t khóa h ọc trườ ng h ợ p khóa h ọ c c ầ n ch ỉ nh s ử a l ại để đượ c duy ệ t 206

B ả ng 155: Ki ể m th ử ch ức năng đăng ký tạ o khóa h ọc trườ ng h ợp đã đượ c yêu c ầ u ch ỉ nh s ửa để đượ c phê duy ệ t 207

B ả ng 156: Ki ể m th ử ch ức năng phê duyệ t khóa h ọc trườ ng h ợ p khóa h ọc đượ c phép duy ệ t 209

B ả ng 157: Ki ể m th ử ch ức năng phê duyệ t khóa h ọc trườ ng h ợ p khóa h ọ c b ị t ừ ch ố i 210

B ả ng 158: Ki ể m th ử ch ức năng xóa khóa họ c 211

B ả ng 159: Ki ể m th ử ch ức năng chỉ nh s ử a khóa h ọc trườ ng h ợ p s ửa trườ ng public 212

B ả ng 160: Ki ể m th ử ch ức năng chỉ nh s ử a khóa h ọc trườ ng h ợ p s ửa trườ ng public 213

B ả ng 161: Ki ể m th ử ch ức năng thay đổ i th ứ t ự chapter trong khóa h ọ c 214

B ả ng 162: Ki ể m th ử ch ức năng thêm mớ i bài h ọc trườ ng h ợ p bài h ọ c là video 215

B ả ng 163: Ki ể m th ử ch ức năng thê m m ớ i bài h ọc trườ ng h ợ p bài h ọ c là quiz 217

B ả ng 164: Ki ể m th ử ch ức năng xóa bài họ c 219

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

DANH MỤC CÁC TỪ VIẾT TẮT

STT Từ viết tắt Ý nghĩa

4 CORS Cross-origin resource sharing

5 CSRF Cross-site Request Forgery

8 RDMS Relational Database Management System

9 CSDL Cơ sở dữ liệu

11 HAMC A hashed message authentication code

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

Hiện nay, việc xây dựng và ứng dụng công nghệ thông tin vào đời sống đã trở thành mục tiêu cấp thiết của toàn xã hội Bởi nó không chỉ giúp đẩy nhanh tốc độ phát triển của xã hội mà còn góp phần khắc phục những khó khăn về khoảng cách, nhân lực và hiệu năng Đặc biệt trong thời buổi dịch bệnh Covid hiện nay, việc ứng dụng công nghệ thông tin vào đời sống còn góp phần hạn chế dịch bệnh Tuy nhiên, vẫn còn nhiều khó khăn, bất cập trong việc đưa công nghệ thông tin vào từng mảng của đời sống cũng như trong kết nối giữa người cung và người cầu Nắm bắt được điều đó, nhóm chọn nghiên cứu đề tài “Xây dựng website kinh doanh khóa học online” Với đề tài, nhóm hy vọng vừa góp phần thúc đẩy việc phát triển công nghệ thông tin vừa tạo ra một trang web giúp kết nối giữa người bán và người mua Đây sẽ là nơi, mà người mua được quyền xem xét, lựa chọn những khóa học online mà mình cần thiết mà không cần phải qua trung gian người tư vấn nào cả Còn người bán sẽ có cơ hội giới thiệu về những ưu điểm của khóa học cung cấp, cách thức liên hệ, ưu đãi, … Mà không cần tốn phí cho c ác tr ang quảng cáo Đặc biệt, nhóm mong rằng trang web này sẽ phát thêm một tín hiệu tích cực trong việc đưa người Việt Nam đến việc học online một cách dễ dàng và hiệu quả hơn.

2 ĐỐI TƯỢ NG NGHIÊN C Ứ U Đối với đề tài này, đối tượng nghiên cứu dựa trên nhu cầu học tập mọi lúc, mọi nơi của người dùng, không bị giới hạn về thời gian cũng như địa điểm, chỉ cần thiết bị thông minh có thể truy cập được Internet là có thể học được Đồng thời, đề tài cũng nghiên cứu các công nghệ để hoàn thiện sản phẩm một cách hoàn chỉnh nhất, bao gồm:

- Spring Boot kết hợp với Spring Security, Spring Data JPA để xây dựng phần server cho website

- Thư viện ReactJS để thiết kế và xây dựng giao diện cho người dùng.

- Cơ sở dữ liệu MySQL để lưu trữ dữ liệu cho hệ thống.

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

- JSON Web Token (JWT) để làm lớp bảo mật cho hệ thống Để gọi đến các API có yêu cầu xác thực, ứng dụng phải cung cấp JWT trong header của request.

- AWS S3 Bucket để lưu trữ các video khóa học, tài liệu và hình ảnh.

Trong đề tài tiểu luận chuyên ngành, chủ yếu tập trung vào xử lý nghiệp vụ của một trang web chuyên kinh doanh các khóa học online như: xem và tìm kiếm các khóa học, mua khóa học và cho phép người dùng học trực tiếp trên trang web cũng như các tính năng bổ trợ cho việc học như tạo ghi chú, tạo các bình luận để thảo luận bên dưới các video của khóa học, trao đổi thông tin với chatbot sử dụng ChatGPT, thêm lịch nhắc học và thanh toán, kiểm tra các khóa học đã mua.

Phần quản trị sẽ tập trung vào các nghiệp vụ như quản lý sản phẩm, quản lý các khóa học, giáo viên trên hệ thống, quản lý doanh thu, duyệt nội dung khóa học đăng ký mới, xử lý các yêu cầu trở thành giảng viên của người dùng,

Trong quá trình hoàn thiện đề tài, nhóm thực hiện đã đặt ra những mục tiêu sau:

- Xây dựng một trang kinh doanh khóa học online với những chức năng cơ bản cho người dùng và giáo viên của các khóa học.

- Xây dựng được giao diện thân thiện với người sử dụng, dễ sử dụng và thao tác

- Áp dụng được các hình thức thanh toán như VNPAY vào hệ thống website

- Áp dụng được dịch vụ AWS S3 để lưu trữ dữ liệu cho hệ thống

5 Ý NGHĨA KHOA HỌ C VÀ TH Ự C TI Ễ N Đề tài hướng đến khả năng tiếp thu, nâng cao kỹ năng lập trình, nghiên cứu công nghệ mới và đáp ứng nhu cầu học online của người dùng Mục đích giúp tạo ra một hệ thống có thể giúp cho việc học tập thông qua Internet trở nên ngày càng thuận lời Đồng thời, cung cấp một nơi kết nối các giảng viên , cùng chia sẻ các kiến thức trên nhiều lĩnh vực

PH Ầ N N Ộ I DUNG CHƯƠNG 1: CƠ SỞ LÝ THUY Ế T

Spring Boot là m ột extension của Spring Framework giúp loại bỏ các bước cấu hình phức tạp mà Spring bắt buộc Spring Boot là dự án phát triển bởi ngôn ngữ Java và được dùng để phát triển các ứng dụng thuộc dạng stand -alone và production-grade

1.1.2 Kiến trúc và cách hoạt động của Spring Boot

Spring Boot tuân theo kiến trúc phân lớp, trong đó mỗi lớp giao tiếp với lớp ngay bên dưới hoặc bên trên của nó.

Presentation Layer : Đây là tầng trên cùng của một ứng dụng Spring Boot, nó được sử dụng để xử lý các HTTP request, xác thực, chuyển đổi các JSON sang Java Object và ngược lại.

Business Layer : Layer này chịu trách nhiệm xử lý các nghiệp vụ của dự án, thực hiện các lệnh kiểm tra để đảm bảo tính đúng đắng của dự liệu, logic, etc.

Persistence Layer: Nó bao gồm tất cả các xử lý về thao tác với database như lưu trữ, cập nhật, truy vấn hoặc xoá dữ liệu.

Database Layer: Nó có thể bao gồm nhiều cơ sở dữ liệu, nghĩa là một thao tác với dữ liệu có thể đồng bộ với nhiều database server khác nhau

Hình 1: Ki ế n trúc phân l ớ p c ủ a SpringBoot

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Kiến trúc Spring Boot dựa trên Spring framework Vì vậy, nó chủ yếu sử dụng tất cả các tính năng và module của Spring MVC, Spring Core, v.v.,

Khi có một HTTP request đến server, Controller sẽ xử lý và gọi các Service tương ứng để xử lý business.

T rong Service Layer sẽ bao gồm tất cả các xử lý về business logic, thao tác với dữ liệu thông qua các Repository và ánh xạ dữ liệu từ database sang model class

- Phát triển các ứng dụng dựa trên Spring một cách tiết kiệm thời gian và dễ dàng.

- Tự động cấu hình tất cả các components cho một ứng dụng Spring

- Các máy chủ nhúng được tạo sẵn (Tomcat, Jetty và Undertow), dẫn đến việc triển khai ứng dụng được tăng tốc và hiệu quả hơn.

- Không có cấu hình XML.

- Nhiều lựa chọn bổ sung, hỗ trợ nhà phát triển làm việc với cơ sở dữ liệu được nhúng vào trong bộ nhớ.

- Dễ dàng truy cập cơ sở dữ liệu và các dịch vụ hàng đợi như MySQL, Oracle, MongoDB, Redis, ActiveMQ và các dịch vụ khác.

- Có nhiều plugins để phát triển bằng các công cụ như Maven hoặc Gradl e

Bên cạnh những ưu điểm trên, thì Spring Boot vẫn có một số các nhược điểm như:

- Spring Boot tạo ra nhiều phụ thuộc không được sử dụng dẫn đến kích thước tệp triển khai lớn.

- Quá trình chuyển đổi các dự án Spring cũ hoặc dự án Spring hiện có thành các ứng dụng Spring Boot nhiều khó khăn và tốn thời gian.

Spring Security là một trong những core feature quan trọng của Spring Framework, giúp phân quyền và xác thực người dùng trước khi cho phép họ truy cập và o các tài nguyên của hệ thống.

1.2.2 Cơ chế ho ạt độ ng c ủ a Spring Security

Mỗi request vào hệ thống sẽ được trải qua một tập các Filter, tập các filter này được quản lý bởi một springSecurityFilterChain Bản chất fillterProxy này giữ một tập các filter đã được định nghĩa trước và lần lượt cho request đi qua từng filter một

Hình 3: Cơ chế ho ạt độ ng c ủ a Spring Security

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Với mỗi Filter, sẽ có một authenticationProvider phù hợp tương ứng Mỗi AuthenticationProvider sẽ chịu trách nhiệm cho một phương cách xác thực của hệ thống

AuthentionProvider sẽ kết hợp với userDetailsService của hệ thống để lấy ra các thông tin liên quan đến User bao gồm các thông tin cơ bản và thông tin mang tính phần quyền của user Các thông tin này được gói gọn lại trong một cài đặt cụ thể của

KHẢ O SÁT HI Ệ N TR Ạ NG VÀ MÔ HÌNH HÓA YÊU C Ầ U

XÁC ĐỊ NH YÊU C Ầ U

2.3 Mô hình hoá yêu cầu

3 Chương 3: THIẾT KẾ HỆ THỐNG

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

4 Chương 4: CÀI ĐẶT VÀ KIỂM THỬ

STT Thời gian thực hiện Công việc Ghi chú

Thiết kế usecase và mô hình hóa yêu cầu

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

Tìm hiểu thư viện ReactJS, Material UI Tìm hiểu framework Spring Boot Tìm hiểu Spring Security, JWT

Tiến hành tổ chức cấu trúc project Xây dựng các tables của cơ sở dử liệu

Tạo các Entities trong Spring Boot và mapping với cơ sở dữ liệu

Xây dựng API cho các chức năng cơ bản dành cho người dùng có phân quyền là User

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Tp Hồ Chí Minh, ngày tháng năm 2023 Ý 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)

Xây dựng Giao diện người dùng cho hệ thống

Kết hợp các phần đã xây dựng (giao diện, APIs, database)

Xây dựng giao diện cho trang Admin

Tiến hàng tạo các APIs cho Admin

Xây dựng chức năng nâng cao là các tool học tập cho người dùng Tiến hàng code tính năng cho phép có thêm bài Test, file bài giảng cho các khoá học

Xây dựng tính năng quản lý khoá học cho giảng viên

Xây dựng tính năng phê duyệt khoá học, đăng ký khoá học mới

Tìm hiểu quá trình deploy sản phẩm

Viết script CI/CD Tìm hiểu AWS CloudFront

Tiến hành deploy sản phẩm

9 16/06/2023 – 21/06/2023 Kiểm thử chương trình và tiến hành sửa lỗi

10 22/06/2023 – 07/07/2023 Viết và hoàn thiện báo cáo

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

5 Ý NGHĨA KHOA HỌ C VÀ TH Ự C TI Ễ N 2

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

1.1.2 Kiến trúc và cách hoạt động của Spring Boot 3

1.2.2 Cơ chế ho ạt độ ng c ủ a Spring Security 5

1.3.2 Cách ho ạt độ ng c ủ a MYSQL 6

1.4.2 Cách ho ạt độ ng c ủ a RESTFUL API 8

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

1.7.3 Ưu và nhược điể m c ủ a ReactJS 11

CHƯƠNG 2: KHẢ O SÁT HI Ệ N TR Ạ NG VÀ MÔ HÌNH HÓA YÊU C Ầ U 16

2.1 KH Ả O SÁT HI Ệ N TR Ạ NG 16

2.1.2 Yêu c ầ u bài toán c ủa đề tài 18

2.2.2 Yêu c ầ u phi ch ức năng 20

3.1.2 Mô t ả chi ti ế t b ả ng d ữ li ệ u 100

3.2.1 Giao di ệ n cho Admin và Teacher 122

4.1.2 Giao di ện cho ngườ i dùng (Student, Teacher) 147

CHƯƠNG 4: CÀI ĐẶ T VÀ KI Ể M TH Ử 170

4.1.1 Cài đặ t ứ ng d ụng, thư việ n c ầ n thi ế t 170

4.2.4 Các trườ ng h ợ p ki ể m th ử 175

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Hình 1: Ki ế n trúc phân l ớ p c ủ a SpringBoot 3

Hình 3: Cơ chế ho ạt độ ng c ủ a Spring Security 5

Hình 6: T ổ ch ứ c d ữ li ệ u trên AWS S3 10

Hình 7: Giao di ệ n website kh ả o sát Unica 16

Hình 8: Giao di ệ n Website kh ả o sát F8 – H ọ c l ập trình để đi làm 17

Hình 9: Use Case cho Admin 21

Hình 10: Use Case cho Teacher 22

Hình 11: Use Case cho ngườ i có phân quy ề n là Reviewer 22

Hình 12: Use Case cho ngườ i có phân quy ề n là User 23

Hình 13: : Sequence Diagram cho ch ức năng gử i yêu c ầ u duy ệ t khoá h ọ c m ớ i 24

Hình 14: Sequence Diagram thêm lo ạ i khoá h ọ c m ớ i 26

Hình 15: Sequence Diagram ch ức năng thêm mớ i mã khuy ế n mãi 28

Hình 16: Sequence Diagram ch ức năng cậ p nh ậ t thông tin mã khuy ế n mãi 30

Hình 17: Sequence Diagram xem l ị ch s ử đơn hàng 32

Hình 18: Sequence Diagram ch ức năn g g ử i k ế t qu ả phê duy ệ t yêu c ầ u tr ở thành gi ả ng viên 33

Hình 19: Sequence Diagram cho ch ức năng thêm khoá họ c vào gi ỏ hàng 35

Hình 20: Sequence Diagram đánh giá khoá học đã mua 36

Hình 21: Sequence Diagram ch ức năng đă ng xu ấ t 38

Hình 22: Sequence Diagram ch ức năng đăng nhậ p 39

Hình 23: Sequence Diagram ch ức năng đăng ký tài khoả n 41

Hình 24: Sequence Diagram ch ức năng thanh toán 43

Hình 25: Sequence Diagram ch ức năng xem đánh giá khoá họ c 46

Hình 26: Sequence Diagram tìm ki ế m các khoá h ọ c 47

Hình 27: Sequence Diagram yêu c ầ u tr ở thành gi ả ng viên 49

Hình 28: Sequence Diagram xoá khoá h ọ c kh ỏ i gi ỏ hàng 51

Hình 29: Sequence Diagram ch ức năng trao đổ i thông tin v ớ i chatBot 52

Hình 30: Sequence Diagram t ạ o l ị ch nh ắ c h ẹ n h ọ c t ậ p 54

Hình 31: Sequence Diagram ch ức năng tạ o câu h ỏ i th ả o lu ậ n 55

Hình 32: Sequence Diagram ch ức năng xem danh sách bài giả ng 57

Hình 33: Sequence Diagram ch ức năng trả l ờ i th ả o lu ậ n trong bài h ọ c 59

Hình 34: Sequence Diagram ch ức năng xoá thả o lu ậ n trong bài gi ả ng 60

Hình 35: Sequence Diagram ch ức năn g xem thông báo t ừ gi ả ng viên 63

Hình 36:Sequence Diagram ch ức năng 64

Hình 37: Sequence Diagram thêm ghi chú cho bài gi ả ng 66

Hình 38: Sequence Diagram cho ch ức năng xoá ghi chú 68

Hình 39: Sequence Diagram ch ức năng thự c hi ệ n bài Test 70

Hình 40: Sequence Diagram ch ức năng đá nh d ấ u bài h ọ c là hoàn thành 72

Hình 41: Sequence Diagram ch ức năng bỏ đánh dầ u hoàn thành bài h ọ c 74

Hình 42: Sequence Diagram ch ức năng xem danh sách giả ng viên 76

Hình 43: Sequence Dìagram ch ức năng xem danh sách re viewers 77

Hình 44: Sequence Diagram ch ức năng xem bài giả ng 78

Hình 45:Sequence Diagram ch ức năng thêm khoá họ c vào danh sách yêu thích 80

Hình 46: Sequence Diagram ch ức năng xem danh sách khoá họ c yêu thích 81

Hình 47: Sequence Diagram xoá khoá h ọ c kh ỏ i danh sách yêu thích 82

Hình 48:Sequence Diagram ch ức năng xem danh sách yêu câu phê duyệ t tr ở thành gi ả ng viên 84

Hình 49: Sequence Diagram đăng ký account reviewer 86

Hình 50: Sequence Diagram ch ức năng xem danh sách reviewer 88

Hình 51: Sequence Diagram ch ức năng xem danh sách khoá học chưa đượ c duy ệ t 89

Hình 52: Sequence Diagram ch ức năng nhậ n task ki ể m duy ệ t 91

Hình 53: Sequence Diagram ch ức năng duyệ t yêu c ầ u t ạ o m ớ i khoá h ọ c 93

Hình 54: Sequence Diagram ch ức năng cậ p nh ậ t bài gi ả ng 95

Hình 55: Sequence Diagram xem danh sách mã khuy ế n mãi 97

Hình 57: Giao di ện trang đăng nhậ p 122

Hình 58: Giao di ệ n trang quên m ậ t kh ẩ u 123

Hình 59: Giao di ệ n trang Dashboard 124

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Hình 60: Giao di ệ n trang DashBoard th ể hi ệ n doanh thu 124

Hình 61: Giao di ệ n trang qu ả n lý khoá h ọ c 125

Hình 62: Giao di ệ n trang ch ỉ nh s ử a thông tin t ổ ng quan khoá h ọ c 127

Hình 63: Giao di ệ n trang ch ỉ nh s ử a n ộ i dung bài h ọ c 127

Hình 64: Giao di ệ n tr ạ ng thêm m ớ i chapter 129

Hình 65: Giao di ệ n trang ch ỉ nh s ử a bài h ọ c 130

Hình 66: Giao di ệ n trang qu ả n lý yêu c ầ u phê duy ệ t khoá h ọ c 131

Hình 67: Giao di ện trang đăng kí thông tin khoá họ c m ớ i 132

Hình 68: Giao di ện trang đăng ký nộ i dung khoá h ọ c m ớ i 132

Hình 69: Giao di ệ n trang xem l ạ i n ộ i dung khoá h ọ c m ớ i 132

Hình 70: Giao di ệ n trang qu ả n lý bình lu ậ n 134

Hình 71: Giao di ệ n trang thêm m ớ i bình lu ậ n 135

Hình 72: Giao di ệ n trang qu ản lý đơn hàng 135

Hình 73: Giao di ệ n trang qu ả n lý coupon 136

Hình 74: Giao di ệ n trang thêm m ớ i coupon 137

Hình 75: Giao di ệ n trang ch ỉ nh s ử a coupon 137

Hình 76: Giao di ệ n trang qu ả n lý thông tin tài kho ả n 138

Hình 77: Giao di ện trang thay đổ i m ậ t kh ẩ u 139

Hình 78: Giao di ệ n trang qu ả n lý khóa h ọ c 140

Hình 79: Giao di ệ n trang thêm m ớ i và s ử a lo ạ i khóa h ọ c 141

Hình 80: Giao di ệ n trang qu ản lý phương thứ c thanh toán 142

Hình 81: Giao di ệ n trang thêm m ớ i và ch ỉ nh s ửa phương thứ c thanh toán 143

Hình 82: Giao di ệ n trang phê duy ệ t yêu c ầ u tr ở thành gi ả ng viên 144

Hình 83: Giao di ệ n trang qu ản lý ngườ i ki ể m duy ệ t 145

Hình 84: Giao di ệ n trang thêm m ới ngườ i ki ể m duy ệ t 146

Hình 85: Giao di ện trang đăng nhậ p 147

Hình 86: Giao di ện trang đăng ký tài khoả n 148

Hình 87: Giao di ệ n trang quên m ậ t kh ẩ u 149

Hình 90: Giao di ệ n top 4 khóa h ọ c 151

Hình 91: Giao di ện ngườ i t ạ o web 152

Hình 93: Giao di ệ n trang danh sách khóa h ọ c 153

Hình 94: Giao di ệ n trang chi ti ế t khóa h ọ c 154

Hình 95: Giao di ệ n trang chi ti ế t khóa h ọ c 155

Hình 96: Giao di ệ n trang phòng h ọ c 156

Hình 97: Giao di ệ n ch ức năng note trong khóa họ c 157

Hình 98: Giao di ệ n ch ức năng hỏi đáp trong khóa họ c 158

Hình 99: Giao di ệ n ch ức năng phả n h ồ i câu h ỏ i 159

Hình 100: Giao di ệ n ch ức năng thêm lị ch h ọ c 160

Hình 101: Giao di ệ n ch ức năng hiể n th ị thông báo c ủ a gi ả ng viên 161

Hình 102: Giao di ệ n ch ức năng hỏi đáp vớ i AI 162

Hình 103: Giao di ệ n trang thông tin cá nhân 163

Hình 104: Giao di ệ n trang l ị ch s ử mua hàng 164

Hình 105: Giao di ệ n trang l ị ch s ử mua hàng 164

Hình 106: Giao di ệ n trang danh sách gi ả ng viên 165

Hình 107: Giao di ệ n trang chi ti ế t gi ả ng viên 166

Hình 108: Giao di ệ n trang gi ỏ hàng 167

Hình 109: Giao di ệ n trang khóa h ọ c c ủ a tôi (Tab khóa h ọc đã mua) 168

Hình 110: Giao di ệ n trang khóa h ọ c c ủ a tôi (Tab khóa h ọ c yêu thích) 168

Hình 111: C ấu trúc thư mụ c Front End (User) 172

Hình 112: C ấu trúc thư mụ c Front End (Admin, Teacher, Reviewer) 173

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

B ảng 1: Đặ c t ả UseCase g ử i yêu c ầ u phê duy ệ t khoá h ọ c m ớ i 24

B ảng 2: Đặ c t ả Use Case thêm lo ạ i khóa h ọ c 26

B ảng 3: Đặ c t ả Use Case thêm m ớ i mã khuy ế n mãi 28

B ảng 4: Đặ c t ả Use Case s ử a thông tin mã khuy ế n mãi 30

B ảng 5: Đặ c t ả Use Case xem l ị ch s ử đơn hàng 32

B ảng 6: Đặ c t ả Use Case ch ấ p nh ậ n yêu c ầ u tr ở thành gi ả ng viên 33

B ảng 7: Đặ c t ả Use Case thêm khoá h ọ c vào gi ỏ hàng 35

B ảng 8: Đặ c t ả Use Case đánh giá khóa học đã mua 36

B ảng 9: Đặ c t ả Use Case ch ức năng đăng xuấ t 38

B ảng 10: Đặ c t ả Use Case đăng nhậ p 39

B ảng 11: Đặ c t ả Use Case đăng ký tài khoả n 41

B ảng 12: Đặ c t ả Use Case thanh toán đơn hàng 43

B ảng 13: Đặ c t ả Use Case xem đánh giá khóa họ c 46

B ảng 14: Đặ c t ả Use Case ch ức năng tìm kiế m khoá h ọ c 47

B ảng 15: : Đặ c t ả Use Case yêu c ầ u tr ở thành gi ả ng viên 49

B ảng 16: Đặ c t ả UseCase xoá khoá h ọ c kh ỏ i gi ỏ hàng 51

B ảng 17: Đặ c t ả UseCase trao đổ i thông tin v ớ i ChatBot 52

B ảng 18: Đặ c t ả UseCase t ạ o l ị ch nh ắ c h ẹ n h ọ c t ậ p 54

B ảng 19: Đặ c t ả Use Case t ạ o câu h ỏ i th ả o lu ậ n 56

B ảng 20: Đặ c t ả Use ch ức năng xem danh sách t h ả o lu ậ n 57

B ảng 21 Đặ c t ả UseCase ch ứuc năng trả l ờ i th ả o lu ậ n 59

B ảng 22: Đặ c t ả Use Case ch ức năng xoá thả o lu ậ n trong bài gi ả ng 61

B ảng 23: Đặ c t ả Use Case xem thông báo t ừ gi ả ng viên 63

B ảng 24: Đặ c t ả UseCase ch ức năng xem danh sách ghi chú 64

B ảng 25: Đặ c t ả Use Case thêm ghi chú 66

B ảng 26: Đặ c t ả Usecase ch ức năng xoá ghi chú 68

B ảng 27: Đặ c t ả Use Case th ự c hi ệ n bài Quiz 70

B ảng 28: Đặ c t ả Use Case ch ức năng đánh dấ u hoàn thành bài h ọ c 73

B ả ng 29: Đặ c t ả Use Case b ỏ đánh dấ u hoàn thành khoá h ọ c 75

B ảng 30: Đặ c t ả Use case xem danh sách gi ả ng viên 76

B ảng 31: Đặ c t ả Use Case xem thông tin chi ti ế t gi ả ng viên 77

B ảng 32: Đặ c t ả Use Case xem bài gi ả ng 79

B ảng 33: Đặ c t ả Use Case năng thêm khoá họ c vào danh sách yêu thích 80

B ảng 34: Đặ c t ả UseCase ch ức năng xem danh sách khoá họ c yêu thích 81

B ảng 35: Đặ c t ả Use Case xoá khoá h ọ c kh ỏ i danh sách yêu thích 82

B ảng 36: Đặ c t ả Use Case xem danh sách yêu c ầ u phê duy ệ t thành gi ả ng viên 84

B ảng 37: Đặ c t ả Use Case đăng ký reviewer 86

B ảng 38: Đặ c t ả Use Case xem danh sách reviewer 88

B ảng 39: Đặ c t ả Use Case xem danh sách khoá h ọc chưa đưa duyệ t 89

B ảng 40: Đặ c t ả Use Case nh ậ n task ki ể m duy ệ t 91

B ảng 41: Đặ c t ả Use Case g ử i kêt qu ả yêu c ầ u duy ệ t khoá h ọ c 93

B ảng 42: Đặ c t ả Use Case c ậ p nh ậ t bài gi ả ng 95

B ảng 43; Đặ c t ả Use Case xem mã khuy ế n mãi 97

B ả ng 44: Mô t ả chi ti ế t b ả ng Account 100

B ả ng 45: Mô t ả chi ti ế t b ả ng UserDetail 100

B ả ng 46: Mô t ả chi ti ế t b ả ng Cart 101

B ả ng 47: Mô t ả chi ti ế t b ả ng Cart Detail 101

B ả ng 49: Mô t ả chi ti ế t b ả ng Chapters 102

B ả ng 50: Mô t ả chi ti ế t b ả ng Coupon 103

B ả ng 51: Mô t ả chi ti ế t b ả ng courses 104

B ả ng 52: Mô t ả chi ti ế t b ả ng courses_paid 105

B ả ng 53: Mô t ả chi ti ế t b ả ng Courses Video 105

B ả ng 54: Mô t ả chi ti ế t b ả ng Note 106

B ả ng 55: Mô t ả chi ti ế t b ả ng Orders 106

B ả ng 56: Mô t ả chi ti ế t b ả ng Order Detail 107

B ả ng 57: Mô t ả chi t ế t b ả ng Payment 108

B ả ng 58: Mô t ả chi ti ế t b ả ng Register_Teacher_Form 108

B ả ng 59: Mô t ả chi ti ế t b ả ng ResourceCourses 109

B ả ng 60: Mô t ả chi ti ế t b ả ng reviews 109

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

B ả ng 61: Mô tả chi tiết b ảng role 109

B ả ng 62: Mô t ả chi ti ế t b ả ng token 110

B ả ng 63: Mô t ả chi ti ế t b ả ng Announcement 110

B ả ng 64: Mô t ả chi ti ế t b ả ng course_summary_info_register 111

B ả ng 65: Mô t ả chi ti ế t b ả ng discuss 112

B ả ng 66: Mô t ả chi ti ế t b ả ng learning_process 113

B ả ng 67: Mô t ả chi ti ế t b ả ng learning_process_learned_lectures 114

B ả ng 68: Mô t ả chi ti ế t b ả ng lectures 114

B ả ng 69: Mô t ả chi ti ế t b ả ng quiz_answer 115

B ả ng 70: Mô t ả chi ti ế t b ả ng quiz_question 116

B ả ng 71: Mô t ả chi ti ế t b ả ng quiz_stat 116

B ả ng 72: Mô t ả chi ti ế t b ả ng register_chapter 117

B ả ng 73: Mô t ả chi ti ế t b ả ng register_course_session 118

B ả ng 74: Mô t ả chi ti ế t b ả ng register_lectures 119

B ả ng 75: Mô t ả chi ti ế t b ả ng reviewer_role 120

B ả ng 76: Mô t ả chi ti ế t b ả ng teacher_profile 120

B ả ng 77: Mô t ả chi ti ế t b ả ng wish_list 121

B ả ng 78: Mô t ả trang đăng nhậ p 122

B ả ng 79: Mô t ả trang quên m ậ t kh ẩ u 123

B ả ng 81: Mô t ả trang qu ả n lý khoá h ọ c 125

B ả ng 82: Mô t ả giao di ệ n trang ch ỉ nh s ử a khoá h ọ c 127

B ả ng 83: Mô t ả trang thêm m ớ i chapter 129

B ả ng 84: Mô t ả trang ch ỉ nh s ử a bài h ọ c 130

B ả ng 85: Mô t ả giao di ệ n trang qu ả n lý yêu c ầ u phê duy ệ t khoá h ọ c 131

B ả ng 86: Mô t ả chi ti ết trang đăng ký khoá họ c m ớ i 132

B ả ng 87: Mô t ả chi ti ế t trang qu ả n lý bình lu ậ n 134

B ả ng 88: Mô t ả chi ti ế t trang thêm m ớ i bình lu ậ n 135

B ả ng 89: Mô t ả chi ti ế t trang qu ản lý đơn hàng 136

B ả ng 90: Mô t ả chi ti ế t trang qu ả n lý coupon 136

B ả ng 91: Mô t ả chi ti ế t trang thêm m ớ i và s ử a coupon 137

B ả ng 92: Mô t ả chi ti ế t trang qu ả n lý thông tin tài kho ả n 138

B ả ng 93: Mô t ả chi ti ết trang thay đổ i m ậ t kh ẩ u 139

B ả ng 94: Mô t ả chi ti ế t trang qu ả n lý khóa h ọ c 140

B ả ng 95: Mô t ả chi ti ế t trang thêm m ớ i và s ử a lo ạ i khóa h ọ c 141

B ả ng 96: Mô t ả chi ti ế t trang qu ản lý phương thứ c thanh toán 142

B ả ng 97: Mô t ả chi ti ế t trang thêm m ớ i và ch ỉ nh s ửa phương thứ c thanh toán 143

B ả ng 98: Mô t ả chi ti ế t trang phê duy ệ t yêu c ầ u tr ở thành gi ả ng viên 144

B ả ng 99: Mô t ả chi ti ế t trang qu ản lý ngườ i ki ể m duy ệ t 145

B ả ng 100: Mô t ả chi ti ế t trang thêm m ới ngườ i ki ể m duy ệ t 146

B ả ng 101: Mô t ả chi ti ết trang đăng nhậ p 147

B ả ng 102: Mô t ả chi ti ết trang đăng ký tài khoả n 148

B ả ng 103: Mô t ả chi ti ế t trang quên m ậ t kh ẩ u 149

B ả ng 104: Mô t ả chi ti ế t Header 150

B ả ng 105: Mô t ả chi ti ế t Banner 151

B ả ng 106: Mô t ả chi ti ế t top 4 khóa h ọ c 151

B ả ng 107: Mô t ả chi ti ết ngườ i t ạ o web 152

B ả ng 108: Mô t ả chi ti ế t Footer 153

B ả ng 109: Mô t ả chi ti ế t trang danh sách khóa h ọ c 154

B ả ng 110: Mô t ả chi ti ế t trang chi ti ế t khóa h ọ c 155

B ả ng 111: Mô t ả chi ti ế t trang phòng h ọ c 156

B ả ng 112: Mô t ả chi ti ế t ch ức năng note trong khóa họ c 157

B ả ng 113: Mô t ả chi ti ế t ch ức năng hỏi đáp 158

B ả ng 114: Mô t ả chi ti ế t ch ức năng phả n h ồ i câu h ỏ i 159

B ả ng 115: Mô t ả chi ti ế t ch ức năng tạ o l ị ch h ọ c 160

B ả ng 116: Mô t ả chi ti ế t ch ức năng hiể n th ị thông báo c ủ a gi ả ng viên 161

B ả ng 117: Mô t ả chi ti ế t ch ức năng hỏi đáp vớ i AI 162

B ả ng 118: Mô t ả chi ti ế t trang thông tin cá nhân 163

B ả ng 119: Mô t ả chi ti ế t trang l ị ch s ử mua hàng 164

B ả ng 120: Mô t ả chi ti ế t trang danh sách gi ả ng viên 165

B ả ng 121: Mô t ả chi ti ế t trang chi ti ế t gi ả ng viên 166

B ả ng 122: Mô t ả chi ti ế t trang gi ỏ hàng 167

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

B ả ng 123: Mô t ả chi ti ế t trang khóa h ọ c c ủ a tôi 168

B ả ng 124: Các ph ầ n m ề n c ần cài đặ t 170

B ả ng 125: Ki ể m th ử ch ức năng đăng nhậ p v ới trườ ng h ợp không điề n username 175

B ả ng 126: Ki ể m th ử ch ức năng đăng nhậ p v ới trườ ng h ợ p username không có trong h ệ th ố ng 176

B ả ng 127: Ki ể m th ử ch ức năng đăng nhậ p v ới trườ ng h ợp password không đúng 177

B ả ng 128: : Ki ể m th ử ch ức năng đăng nhập trườ ng h ợ p d ữ li ệu đúng 178

B ả ng 129: Ki ể m th ử ch ức năng đăng ký với username đã có t rên th ệ th ố ng 179

B ả ng 130: Ki ể m th ử ch ức năng đăng ký vớ i b ộ d ữ li ệu đúng 180

B ả ng 131: Ki ể m th ử ch ức năng tìm kiế m khóa h ọ c 181

B ả ng 132: Ki ể m th ử ch ức năng thay đổ i ảnh đạ i di ệ n 182

B ả ng 133: Ki ể m th ử ch ức năng thanh toán 183

B ả ng 134: Ki ể m th ử ch ức năng thanh toán với trườ ng h ợ p không ch ọ n s ả n ph ẩ m nào trong gi ỏ hàng 184

B ả ng 135: Ki ể m th ử ch ức năng xóa sả n ph ẩ m kh ỏ i gi ỏ hàng 185

B ả ng 136: Ki ể m th ử ch ức năng thêm sả n ph ẩ m vào gi ỏ hàng 186

B ả ng 137: Ki ể m th ử ch ức năng thêm sả n ph ẩ m vào gi ỏ hàng trườ ng h ợ p s ả n ph ẩm đã có trong gi ỏ hàng 187

B ả ng 138: Ki ể m th ử ch ức năng đánh giá khóa học đã mua 188

B ả ng 139: Ki ể m th ử ch ức năng đánh giá khóa học đã mua 189

B ả ng 140: Ki ể m th ử ch ức năng xóa đánh giá 190

B ả ng 141: Ki ể m th ử ch ức năng thêm vào danh sách yêu thích 191

B ả ng 142: Ki ể m th ử ch ức năng xóa khóa họ c kh ỏ i danh sách yêu thích 192

B ả ng 143: Ki ể m th ử ch ức năng thêm ghi chú 193

B ả ng 144: Ki ể m th ử ch ức năng xóa ghi chú 194

B ả ng 145: Ki ể m th ử ch ức năng thêm câu hỏ i 195

B ả ng 146: Ki ể m th ử ch ức năng xóa câu hỏ i 196

B ả ng 147: Ki ể m th ử ch ức năng trả l ờ i câu h ỏ i 197

B ả ng 148: Ki ể m th ử ch ức năng hỏ i đáp vớ i AI 199

B ả ng 149: Ki ể m th ử ch ức năng đánh dấ u hoàn thành bài h ọ c 200

B ả ng 150: Ki ể m th ử ch ức năng bỏ đánh dấ u hoàn thành bài h ọ c 201

B ả ng 151: Ki ể m th ử ch ức năng gử i yêu c ầ u tr ở thành gi ả ng viên 202

B ả ng 152: Ki ể m th ử ch ức năng duyệ t yêu c ầ u tr ở thành gi ả ng viên 204

B ả ng 153: Ki ể m th ử ch ức năng đăng ký tạ o khóa h ọ c 205

B ả ng 154: Ki ể m th ử ch ức năng phê duyệ t khóa h ọc trườ ng h ợ p khóa h ọ c c ầ n ch ỉ nh s ử a l ại để đượ c duy ệ t 206

B ả ng 155: Ki ể m th ử ch ức năng đăng ký tạ o khóa h ọc trườ ng h ợp đã đượ c yêu c ầ u ch ỉ nh s ửa để đượ c phê duy ệ t 207

B ả ng 156: Ki ể m th ử ch ức năng phê duyệ t khóa h ọc trườ ng h ợ p khóa h ọc đượ c phép duy ệ t 209

B ả ng 157: Ki ể m th ử ch ức năng phê duyệ t khóa h ọc trườ ng h ợ p khóa h ọ c b ị t ừ ch ố i 210

B ả ng 158: Ki ể m th ử ch ức năng xóa khóa họ c 211

B ả ng 159: Ki ể m th ử ch ức năng chỉ nh s ử a khóa h ọc trườ ng h ợ p s ửa trườ ng public 212

B ả ng 160: Ki ể m th ử ch ức năng chỉ nh s ử a khóa h ọc trườ ng h ợ p s ửa trườ ng public 213

B ả ng 161: Ki ể m th ử ch ức năng thay đổ i th ứ t ự chapter trong khóa h ọ c 214

B ả ng 162: Ki ể m th ử ch ức năng thêm mớ i bài h ọc trườ ng h ợ p bài h ọ c là video 215

B ả ng 163: Ki ể m th ử ch ức năng thê m m ớ i bài h ọc trườ ng h ợ p bài h ọ c là quiz 217

B ả ng 164: Ki ể m th ử ch ức năng xóa bài họ c 219

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

DANH MỤC CÁC TỪ VIẾT TẮT

STT Từ viết tắt Ý nghĩa

4 CORS Cross-origin resource sharing

5 CSRF Cross-site Request Forgery

8 RDMS Relational Database Management System

9 CSDL Cơ sở dữ liệu

11 HAMC A hashed message authentication code

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

Hiện nay, việc xây dựng và ứng dụng công nghệ thông tin vào đời sống đã trở thành mục tiêu cấp thiết của toàn xã hội Bởi nó không chỉ giúp đẩy nhanh tốc độ phát triển của xã hội mà còn góp phần khắc phục những khó khăn về khoảng cách, nhân lực và hiệu năng Đặc biệt trong thời buổi dịch bệnh Covid hiện nay, việc ứng dụng công nghệ thông tin vào đời sống còn góp phần hạn chế dịch bệnh Tuy nhiên, vẫn còn nhiều khó khăn, bất cập trong việc đưa công nghệ thông tin vào từng mảng của đời sống cũng như trong kết nối giữa người cung và người cầu Nắm bắt được điều đó, nhóm chọn nghiên cứu đề tài “Xây dựng website kinh doanh khóa học online” Với đề tài, nhóm hy vọng vừa góp phần thúc đẩy việc phát triển công nghệ thông tin vừa tạo ra một trang web giúp kết nối giữa người bán và người mua Đây sẽ là nơi, mà người mua được quyền xem xét, lựa chọn những khóa học online mà mình cần thiết mà không cần phải qua trung gian người tư vấn nào cả Còn người bán sẽ có cơ hội giới thiệu về những ưu điểm của khóa học cung cấp, cách thức liên hệ, ưu đãi, … Mà không cần tốn phí cho c ác tr ang quảng cáo Đặc biệt, nhóm mong rằng trang web này sẽ phát thêm một tín hiệu tích cực trong việc đưa người Việt Nam đến việc học online một cách dễ dàng và hiệu quả hơn.

2 ĐỐI TƯỢ NG NGHIÊN C Ứ U Đối với đề tài này, đối tượng nghiên cứu dựa trên nhu cầu học tập mọi lúc, mọi nơi của người dùng, không bị giới hạn về thời gian cũng như địa điểm, chỉ cần thiết bị thông minh có thể truy cập được Internet là có thể học được Đồng thời, đề tài cũng nghiên cứu các công nghệ để hoàn thiện sản phẩm một cách hoàn chỉnh nhất, bao gồm:

- Spring Boot kết hợp với Spring Security, Spring Data JPA để xây dựng phần server cho website

- Thư viện ReactJS để thiết kế và xây dựng giao diện cho người dùng.

- Cơ sở dữ liệu MySQL để lưu trữ dữ liệu cho hệ thống.

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

- JSON Web Token (JWT) để làm lớp bảo mật cho hệ thống Để gọi đến các API có yêu cầu xác thực, ứng dụng phải cung cấp JWT trong header của request.

- AWS S3 Bucket để lưu trữ các video khóa học, tài liệu và hình ảnh.

Trong đề tài tiểu luận chuyên ngành, chủ yếu tập trung vào xử lý nghiệp vụ của một trang web chuyên kinh doanh các khóa học online như: xem và tìm kiếm các khóa học, mua khóa học và cho phép người dùng học trực tiếp trên trang web cũng như các tính năng bổ trợ cho việc học như tạo ghi chú, tạo các bình luận để thảo luận bên dưới các video của khóa học, trao đổi thông tin với chatbot sử dụng ChatGPT, thêm lịch nhắc học và thanh toán, kiểm tra các khóa học đã mua.

Phần quản trị sẽ tập trung vào các nghiệp vụ như quản lý sản phẩm, quản lý các khóa học, giáo viên trên hệ thống, quản lý doanh thu, duyệt nội dung khóa học đăng ký mới, xử lý các yêu cầu trở thành giảng viên của người dùng,

Trong quá trình hoàn thiện đề tài, nhóm thực hiện đã đặt ra những mục tiêu sau:

- Xây dựng một trang kinh doanh khóa học online với những chức năng cơ bản cho người dùng và giáo viên của các khóa học.

- Xây dựng được giao diện thân thiện với người sử dụng, dễ sử dụng và thao tác

- Áp dụng được các hình thức thanh toán như VNPAY vào hệ thống website

- Áp dụng được dịch vụ AWS S3 để lưu trữ dữ liệu cho hệ thống

5 Ý NGHĨA KHOA HỌ C VÀ TH Ự C TI Ễ N Đề tài hướng đến khả năng tiếp thu, nâng cao kỹ năng lập trình, nghiên cứu công nghệ mới và đáp ứng nhu cầu học online của người dùng Mục đích giúp tạo ra một hệ thống có thể giúp cho việc học tập thông qua Internet trở nên ngày càng thuận lời Đồng thời, cung cấp một nơi kết nối các giảng viên , cùng chia sẻ các kiến thức trên nhiều lĩnh vực

PH Ầ N N Ộ I DUNG CHƯƠNG 1: CƠ SỞ LÝ THUY Ế T

Spring Boot là m ột extension của Spring Framework giúp loại bỏ các bước cấu hình phức tạp mà Spring bắt buộc Spring Boot là dự án phát triển bởi ngôn ngữ Java và được dùng để phát triển các ứng dụng thuộc dạng stand -alone và production-grade

1.1.2 Kiến trúc và cách hoạt động của Spring Boot

Spring Boot tuân theo kiến trúc phân lớp, trong đó mỗi lớp giao tiếp với lớp ngay bên dưới hoặc bên trên của nó.

Presentation Layer : Đây là tầng trên cùng của một ứng dụng Spring Boot, nó được sử dụng để xử lý các HTTP request, xác thực, chuyển đổi các JSON sang Java Object và ngược lại.

Business Layer : Layer này chịu trách nhiệm xử lý các nghiệp vụ của dự án, thực hiện các lệnh kiểm tra để đảm bảo tính đúng đắng của dự liệu, logic, etc.

Persistence Layer: Nó bao gồm tất cả các xử lý về thao tác với database như lưu trữ, cập nhật, truy vấn hoặc xoá dữ liệu.

Database Layer: Nó có thể bao gồm nhiều cơ sở dữ liệu, nghĩa là một thao tác với dữ liệu có thể đồng bộ với nhiều database server khác nhau

Hình 1: Ki ế n trúc phân l ớ p c ủ a SpringBoot

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Kiến trúc Spring Boot dựa trên Spring framework Vì vậy, nó chủ yếu sử dụng tất cả các tính năng và module của Spring MVC, Spring Core, v.v.,

Khi có một HTTP request đến server, Controller sẽ xử lý và gọi các Service tương ứng để xử lý business.

T rong Service Layer sẽ bao gồm tất cả các xử lý về business logic, thao tác với dữ liệu thông qua các Repository và ánh xạ dữ liệu từ database sang model class

- Phát triển các ứng dụng dựa trên Spring một cách tiết kiệm thời gian và dễ dàng.

- Tự động cấu hình tất cả các components cho một ứng dụng Spring

- Các máy chủ nhúng được tạo sẵn (Tomcat, Jetty và Undertow), dẫn đến việc triển khai ứng dụng được tăng tốc và hiệu quả hơn.

- Không có cấu hình XML.

- Nhiều lựa chọn bổ sung, hỗ trợ nhà phát triển làm việc với cơ sở dữ liệu được nhúng vào trong bộ nhớ.

- Dễ dàng truy cập cơ sở dữ liệu và các dịch vụ hàng đợi như MySQL, Oracle, MongoDB, Redis, ActiveMQ và các dịch vụ khác.

- Có nhiều plugins để phát triển bằng các công cụ như Maven hoặc Gradl e

Bên cạnh những ưu điểm trên, thì Spring Boot vẫn có một số các nhược điểm như:

- Spring Boot tạo ra nhiều phụ thuộc không được sử dụng dẫn đến kích thước tệp triển khai lớn.

- Quá trình chuyển đổi các dự án Spring cũ hoặc dự án Spring hiện có thành các ứng dụng Spring Boot nhiều khó khăn và tốn thời gian.

Spring Security là một trong những core feature quan trọng của Spring Framework, giúp phân quyền và xác thực người dùng trước khi cho phép họ truy cập và o các tài nguyên của hệ thống.

1.2.2 Cơ chế ho ạt độ ng c ủ a Spring Security

Mỗi request vào hệ thống sẽ được trải qua một tập các Filter, tập các filter này được quản lý bởi một springSecurityFilterChain Bản chất fillterProxy này giữ một tập các filter đã được định nghĩa trước và lần lượt cho request đi qua từng filter một

Hình 3: Cơ chế ho ạt độ ng c ủ a Spring Security

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Với mỗi Filter, sẽ có một authenticationProvider phù hợp tương ứng Mỗi AuthenticationProvider sẽ chịu trách nhiệm cho một phương cách xác thực của hệ thống

AuthentionProvider sẽ kết hợp với userDetailsService của hệ thống để lấy ra các thông tin liên quan đến User bao gồm các thông tin cơ bản và thông tin mang tính phần quyền của user Các thông tin này được gói gọn lại trong một cài đặt cụ thể của

MÔ HÌNH HÓA YÊU C Ầ U

Hình 9: Use Case cho Admin

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Hình 10: Use Case cho Teacher

Hình 11 : Use Case cho ngườ i có phân quy ề n là Reviewer

Hình 12 : Use Case cho ngườ i có phân quy ề n là User

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

2.3.2.1 Use Case gửi yêu cầu phê duyệt khoá học mới

B ả ng 1 : Đặ c t ả UseCase g ử i yêu c ầ u phê duy ệ t khoá h ọ c m ớ i

UC01 Đăng ký khóa học mới

Brief description Teacher đăng ký tạo mới một khóa học

Pre-conditions Tác nhân đăng nhập thành công và có quyền đăng ký tạo khóa học

Hình 13: : Sequence Diagram cho ch ức năng gử i yêu c ầ u duy ệ t khoá h ọ c m ớ i

Post-conditions Hệ thống lưu dữ liệu và thông báo gửi yêu cầu phê duyệt khoá học mới thành công

Use case bắt đầu khi người dùng nhấn nút “Thêm mới” ở trang danh sách đăng ký khóa học

1 Người dùng nhấn nút “Thêm mới” ở trang danh sách đăng ký khóa học

2 Hệ thống chuyển sang trang thêm mới khóa học

3 Người dùng nhập thông tin khóa học ở form đăng ký thông tin tổng quát khoá học

5 Hệ thống chuyển sang form đăng ký nội dung bài giảng khoá học

6 Người dùng nhập thông tin nội dung bài giảng của khóa học

8 Hệ thống chuyển sang form xem lại lại thông tin tổng quát và nội dung bài giảng

10 Hệ thống thông báo lưu thành công và cập nhật dữ liệu

4.(1) Khi người dùng nhập sai thông tin hệ thống sẽ thông báo lỗi và Use case quay lại Bước 3

7.(1) Khi người dùng nhập sai thông tin hệ thống sẽ thông báo lỗi và Use case quay lại Bước 6

Extension point 7.(1) Người dùng nhấn “Prev” use case quay lại Bước

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

9.(1) Người dùng nhấn “Prev” use case quay lại Bước

Business Rule Tên khóa học, loại khóa học, ngôn ngữ, giá, mô tả không được để trống

2.3.2.2 Use Case thêm loại khóa học

B ả ng 2: Đặ c t ả Use Case thêm lo ạ i khóa h ọ c

UC02 Thêm loại khóa học

Brief description Người dùng tạo mới một loại khóa học

Hình 14: Sequence Diagram thêm lo ạ i khoá h ọ c m ớ i

Pre-conditions Người dùng đăng nhập thành công và có quyền thêm loại khóa học

Post-conditions Hệ thống lưu dữ liệu và thông báo thêm thành công

Use case bắt đầu khi người dùng nhấn nút “Thêm” ở trang danh sách loại khóa học

1 Người dùng nhấn nút thêm loại khóa học ở trang danh sách loại khóa học

2 Hệ thống chuyển sang trang thêm mới loại khóa học

3 Người dùng nhập thông tin loại khóa học

5 Hệ thống thông báo lưu thành công và cập nhật dữ liệu

Alternative flow Khi người dùng nhập sai thông tin hệ thống sẽ thông báo lỗi và Use case quay lại Bước 3

Extension point 4.(1) Người dùng nhấn “Hủy” use case kết thúc

Business Rule Tên loại khóa học không được để trống

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

2.3.2.3 Use Case thêm khuyến mãi, giảm giá

Bảng 3: Đặc tả Use Case thêm mới mã khuyến mãi

Brief description Tác nhân tạo mới một mã khuyến mãi

Pre-conditions Tác nhân đăng nhập thành công và có quyền thêm mã khuyến mãi

Post-conditions Hệ thống lưu dữ liệu và thông báo thêm thành công

Basic flow Use case bắt đầu khi người dùng nhấn nút “Thêm” ở trang danh sách khuyến mãi

Hình 15: Sequence Diagram ch ức năng thêm mớ i mã khuy ế n mãi

1 Người dùng nhấn nút “Thêm” ở trang danh sách khuyến mãi

2 Hệ thống chuyển sang trang thêm mới khuyến mãi

3 Người dùng nhập thông tin khuyến mãi

5 Hệ thống thông báo lưu thành công và cập nhật dữ liệu

Alternative flow Khi người dùng nhập sai thông tin hệ thống sẽ thông báo lỗi và Usecase quay lại Bước 3

Extension point 4.(1) Người dùng nhấn “Hủy” usecase kết thúc

Code, Tên Coupon, giá trị, loại, tổng số lượng, số lượng còn lại, ngày bắt đầu, ngày kết thúc, mô tả không được bỏ trống

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

2.3.2.4 Use Case cập nhật thông tin mã khuyến mãi

Hình 16: Sequence Diagram ch ức năng cậ p nh ậ t thông tin mã khuy ế n mãi

B ả ng 4: Đặ c t ả Use Case s ử a thông tin mã khuy ế n mãi

UC04 Sửa thông tin khuyến mãi

Brief description Tác nhân sửa thông tin của một mã khuyến mãi

Pre-conditions Tác nhân đăng nhập thành công và có quyền sửa mã khuyến mãi

Post-conditions Hệ thống lưu dữ liệu và thông báo cập nhật thành công

Basic flow Use case bắt đầu khi người dùng nhấn “Sửa” trong nút

“Action” ở mỗi dòng trong bảng danh sách khuyến mãi

1 Người dùng nhấn Action ở mỗi dòng dữ liệu trong danh sách khuyến mãi sau đó ấn nút sửa

2 Hệ thống chuyển sang trang chi tiết khuyến mãi

3 Người dùng nhập thông tin cần thay đổi

5 Hệ thống thông báo lưu thành công và cập nhật dữ liệu

Alternative flow Khi người dùng nhập sai thông tin hệ thống sẽ thông báo lỗi và Use case quay lại Bước 3

Extension point 4.(1) Người dùng nhấn “Hủy” use case kết thúc

Code, Tên Coupon, giá trị, loại, tổng số lượng, số lượng còn lại, ngày bắt đầu, ngày kết thúc, mô tả không được bỏ trống

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

2.3.2.5 Use Case Xem lịch sử đơn hàng

B ả ng 5 : Đặ c t ả Use Case xem l ị ch s ử đơn hàng

UC05 Xem lịch sử đơn hàng

Brief description Tác nhân xem lịch sử một đơn hàng

Pre-conditions Tác nhân đăng nhập thành công và có quyền xem lịch sử đơn hàng

Use case bắt đầu khi người dùng nhấn “Xem” trong nút

“Action” ở mỗi dòng trong bảng danh sách đơn hàng

1 Người dùng nhấn Action ở mỗi dòng dữ liệu trong danh sách đơn hàng sau đó ấn nút xem.

Hình 17: Sequence Diagram xem l ị ch s ử đơn hàng

2 Hệ thống chuyển sang trang chi tiết đơn hàng

2.3.2.6 Use Case phê duy ệ t yêu c ầ u tr ở thành gi ả ng viên

B ả ng 6: Đặ c t ả Use Case ch ấ p nh ậ n yêu c ầ u tr ở thành gi ả ng viên

UC06 Chấp nhận yêu cầu trở thành giáo viên

Brief description Tác nhân chấp nhận một yêu cầu trở thành giáo viên

Hình 18: Sequence Diagram ch ức năng gử i k ế t qu ả phê duy ệ t yêu c ầ u tr ở thành gi ả ng viên

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Pre-conditions Tác nhân đăng nhập thành công và có quyền duyệt yêu cầu trở thành giáo viên

Post-conditions Hệ thống lưu dữ liệu và thông báo duyệt thành công

Use case bắt đầu khi người dùng nhấn nút “Chấp nhận” hoặc “Từ chối” ở trang danh sách yêu cầu trở thành giáo viên ở tab “Chưa xử lý”

1 Người dùng nhấn Action ở mỗi dòng dữ liệu trong danh sách khóa học sau đó ấn nút chấp nhận yêu cầu

2 Hệ thống thông báo thành công và cập nhật dữ liệu

2.3.2.7 Use Case thêm khóa học vào giỏ hàng

B ả ng 7 : Đặ c t ả Use Case thêm khoá h ọ c vào gi ỏ hàng

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

Brief description User hoặc Teacher thêm khóa học vào giỏ hàng

Pre-conditions Tác nhân đã có tài khoản và đã đăng nhập vào hệ thống thành công

Post-conditions Khóa học được thêm vào giỏ hàng của người dùng

Use Case bắt đầu khi người dùng đăng nhập thành công, và bấm nút “Thêm vào giỏ hàng” trong chi tiết khóa học :

1 Người dùng chọn tab “Courses” trên thanh điều hướng phía trên

Hình 19: Sequence Diagram cho ch ức năng thêm khoá h ọ c vào gi ỏ hàng

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

2 Hệ thống hiển thị các danh sách khóa học

3 Người dùng bấm nút “thêm vào giỏ hàng” tại khóa học muốn thêm

4 Hệ thống lưu và cập nhật lại giỏ hàng

2.3.2.8 Use Case đánh giá khóa học đã mua

B ả ng 8: Đặ c t ả Use Case đánh giá khóa học đã mua

UC08 Đánh giá khóa học đã mua

Brief description User hoặc Teacher đánh giá khóa học đã mua

Pre-conditions Người dùng đã có tài khoản và đã đăng nhập vào hệ thống thành công, người dùng đã mua khóa học

Hình 20 : Sequence Diagram đánh giá khoá học đã mua

Post-conditions Hệ thống lưu lại thông tin đánh giá của người dùng

Use Case bắt đầu khi người dùng đăng nhập thành công, và truy cập vào trang chi tiết khóa học:

1 Người dùng chọn tab “Đánh giá” trong trang chi tiết khóa học

2 Hệ thống hiển thị danh sách các đánh giá và ô nhập đánh giá cho người dùng

3 Người dùng nhập đánh giá

4 Nhấn nút “Đánh giá” để gửi đánh giá khóa học

5 Hệ thống lưu lại đánh giá của người dùng và hiển thị lại danh sách các đánh giá

Business Rule Bình luận không được chứa các từ phản cảm

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

B ả ng 9 : Đặ c t ả Use Case ch ức năng đăng xuấ t

UC09 Đăng xuất tài khoản

Brief description Người dùng đăng xuất tài khoản đã đăng nhập

Pre-conditions Người dùng đã có tài khoản và đã đăng nhập vào hệ thống thành công

Post-conditions Hệ thống xóa phiên đăng nhập của người dùng, access token không còn hiệu lực

Basic flow Use Case diễn ra khi người dùng thực hiện việc đăng xuất:

1 Tác nhân bấm nút “Đăng xuất” trên Header

Hình 21: Sequence Diagram ch ức năng đăng xuấ t

2 Hệ thống xử lý đăng xuất tài khoản

B ả ng 10: Đặ c t ả Use Case đăng nhậ p

UC10 Đăng nhập tài khoản

Brief description Tác nhân đăng nhập tài khoản đã có trên hệ thống

Hình 22: Sequence Diagram ch ức năng đăng nhậ p

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Pre-conditions Tác nhân đã có tài khoản trên hệ thống

Post-conditions Hệ thống tạo được access token và lưu phiên đăng nhập của người dùng

Tác nhân thực hiện đăng nhập vào trang web của cửa hàng

3 Tác nhấn bấm nút “Đăng nhập” trên Header

4 Hệ thống hiển thị ra trang nhập thông tin đăng nhập

5 Tác nhân nhập username và mật khẩu đã có trên hệ thống

6 Nhấn nút “Đăng nhập” để gửi thông tin đăng nhập cho hệ thống

7 Hệ thống xác thực thông tin đăng nhập của tác nhân (1)

8 Hệ thống lưu lại access token của tác nhân vào cookie, thông báo đăng nhập thành công và chuyển sang trang chủ

Alternative flow 7.(1) Sai thông tin hệ thống báo lỗi và Use case quay lại

2.3.2.11 Use Case đăng ký tài khoản

B ả ng 11: Đặ c t ả Use Case đăng ký tài khoả n

Brief description User đăng kí tài khoản trên hệ thống

Pre-conditions Người dùng chưa có tài khoản trên hệ thống

Post-conditions Hệ thống lưu lại thông tin tài khoản của người dùng

Tác nhân thực hiện đăng ký tài khoản vào trang web của cửa hàng

1 Tác nhấn bấm nút “Đăng ký” trên Header

2 Hệ thống hiển thị ra trang nhập thông tin đăng ký tài khoản

Hình 23: Sequence Diagram ch ức năng đăng ký tài khoả n

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

3 Tác nhân nhập các thông tin đăng ký mà hệ thống yêu cầu: họ tên, email, số điện thoại, giới tính, ngày sinh, tên đăng nhập, mật khẩu

4 Nhấn nút “Đăng ký” để gửi thông tin đăng ký cho hệ thống (1)

5 Hệ thống xác thực thông tin đăng ký của tác nhân

6 Hệ thống lưu lại thông tin đăng ký, tạo tài khoản cho người dùng

7 Hệ thống chuyển người dùng sang trang “Đăng nhập”

4.(1) Thông tin tác nhân điền không đầy đủ theo biểu mẫu yêu cầu:

Hiển thị thông báo các trường còn chưa nhập dữ liệu, và bắt người dùng nhập tiếp các thông tin còn thiếu

5.(1) Tài khoản đăng nhập đã tồn tại:

Hiển thị thông báo tên đăng nhập đã tồn tại trên hệ thống, cho người dùng nhập lại tên đăng nhập khác

5.(2) Password ít hơn 6 ký tự

Hiển thị thông báo password phải đủ 8 ký tự, bắt người dùng nhập lại mật khẩu

5.(3) Số điện thoại không đúng mẫu

Hiển thị thông báo số điện thoại phải là số, không được chứa ký tự chữ cái, ký tự đặc biệt

5.(4) Email đã tồn tại trên hệ thống

Hiển thị thông báo email đã tồn tại trên hệ thống, vui lòng chọn email khác

2.3.2.12 Use Case thanh toán đơn hàng

B ả ng 12: Đặ c t ả Use Case thanh toán đơn hàng

UC12 Thanh toán đơn hàng

Brief description Tác nhân thanh toán đơn hàng trong giỏ hàng

Pre-conditions Tác nhân có tài khoản và đã đăng nhập vào hệ thống thành công

Hình 24: Sequence Diagram ch ức năng thanh toán

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Post-conditions Hệ thống cập nhật đơn hàng cho tác nhân

Use Case diễn ra khi tác nhân bấm nút “Thanh toán” trong trang giỏ hàng:

1 Tác nhấn bấm nút “Thanh toán” trên trang giỏ hàng

2 Hệ thống kiểm tra thông tin sản phẩm cần mua của tác nhân (1) (2)

3 Hệ thống gửi yêu cầu thanh toán sang trang thanh toán VNPAY (1)

4 Hệ thống chuyển người dùng sang cổng thanh toán của VNPAY

5 Người dùng chọn hình thức thanh toán được VNPAY hỗ trợ và nhập thông tin theo yêu cầu

6 Người dùng bấm nút thanh toánđể thanh toán đơn hàng

7 Hệ thống nhận kết quả thanh toán của VNPAY, kiểm tra dữ liệu và cập nhật đơn hàng (1)

8 Hệ thống gửi mail thông báo đến người dùng mua hàng thành công

9 Hệ thống chuyển người dùng đến trang kết quả thanh toán đơn hàng

2.(1) Không có sản phẩm nào trong yêu cầu được gửi lên

Hiển thị thông báo không có sản phẩm nào cần thanh toán Use Case quay lại Bước 1

2.(2) Người dùng nhập mã giảm giá nhưng mã giảm giá không hợp lệ

Hiển thị thông báo mã giảm giá không hợp lệ, yêu cầu chọn lại mã giảm giá Use Case quay lại Bước 1

3.(1) Hệ thống gửi yêu cầu thanh toán sang VNPAY thất bại

Hiển thị thông báo có lỗi xảy ra trong quá trình thanh toán

4.(1) Tài khoản đăng nhập không tồn tại:

Hiển thị thông báo tài khoản này không tồn tại trên hệ thống

Use Case quay lại Bước 1

5.(1) Tài khoản đã có token để reset mật khẩu trước đó và còn hiệu lực

Hiển thị thông báo đã gửi yêu cầu reset mật khẩu trước đó, chờ 5 phút để thực hiện lại yêu cầu Use Case quay lại Bước 1

7.(1) Thanh toán đơn hàng không thành công

Chuyển người dùng sang trang kết quả thanh toán đơn hàng không thành công

Use Case quay lại Bước 1

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

2.3.2.13 Use Case xem đánh giá khóa học

B ả ng 13: Đặ c t ả Use Case xem đánh giá khóa họ c

UC13 Xem đánh giá khóa học

Brief description Tác nhân thực hiện việc xem đánh giá khóa học

Actor(s) User, Teacher, Admin, Unauthorized User

Post-conditions Hệ thống hiển thị đánh giá khóa học cho người dùng

Use Case diễn ra khi tác nhân bấm nút “Xem đánh giá” trong trang chi tiết khóa học:

1 Tác nhân chọn “Xem đánh giá” trong trang chi tiết khóa học

Hình 25: Sequence Diagram ch ức năng xem đánh giá khoá họ c

2 Hệ thống hiển thị danh sách đánh giá của khóa học cho tác nhân

2.3.2.14 Use Case tìm ki ế m các khóa h ọ c

B ả ng 14 : Đặ c t ả Use Case ch ức năng tìm kiế m khoá h ọ c

UC14 Tìm kiếm các khóa học

Brief description Tác nhân thực hiện việc tìm kiếm các khóa học

Actor(s) User, Teacher, Admin, Unauthorized User

Post-conditions Hệ thống hiển thị các khóa học theo bộ lọc

Hình 26: Sequence Diagram tìm ki ế m các khoá h ọ c

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Use Case diễn ra khi tác nhân bấm nút “Tìm kiếm” trong trang chi tiết khóa học:

1 Tác nhân chọn tìm kiếm khóa học theo giá, theo loại hoặc theo tên khóa học

2 Hệ thống hiển thị danh sách các khóa học theo yêu cầu

2.3.2.15 Use Case yêu cầu trở thành giảng viên

Bảng 15: : Đặc tả Use Case yêu cầu trở thành giảng viên

UC15 Yêu cầu trở thành giảng viên

Brief description Tác nhân yêu cầu trở thành giảng viên của hệ thống

Pre-conditions Tác nhân có tài khoản và đã đăng nhập vào hệ thống thành công

Post-conditions Hệ thống lưu lại yêu cầu của người dùng

Use Case diễn ra khi tác nhân chọn “Yêu cầu trở thành giảng viên” trong trang thông tin cá nhân:

1 Tác nhân chọn nút “Yêu cầu trở thành giảng viên” trong trang thông tin cá nhân

Hình 27: Sequence Diagram yêu c ầ u tr ở thành gi ả ng viên

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

2 Hệ thống hiển thị form nhập dữ liệu cho tác nhân

3 Tác nhân nhập các thông tin hệ thống yêu cầu: số điện thoại, nghề nghiệp hiện tai, kinh nghiệm giảng dạy, chủ đề giảng dạy

4 Tác nhân bấm nút “Lưu” để nộp yêu cầu cho hệ thống (1)

5 Hệ thống xác thực các thông tin (1)

6 Hệ thống gửi mail thông báo đã tiếp nhận yêu cầu cho người đùng

7 Hệ thống gửi thông báo lưu yêu cầu thành công

4.(1) Tác nhân chưa nhập đủ thông tin theo yêu cầu

Hiển thị thông báo còn thiếu dữ liệu và bắt tác nhân nhập lại

Use Case quay lại bước 3

5.(1) Số điện thoại nhập chưa đúng

Hiển thị thông báo số điện thoại chưa đúng, chỉ được chứa chữ số

Use Case quay lại bước 3

Số điện thoại không được để trống, chỉ chứ 10 ký tự số Chủ đề giảng dạy không được để trống

Kinh nghiệm giảng dạykhông được để trốngNghề nghiệp hiện tại không được để trống

2.3.2.16 Use Case xoá khoá học khỏi giỏ hàng

B ả ng 16 : Đặ c t ả UseCase xoá khoá h ọ c kh ỏ i gi ỏ hàng

UC16 Xoá khoá học khỏi giỏ hàng

Brief description Tác nhân thực hiện việc xoá khoá học đã thêm ra khỏi giỏ hàng

Pre-conditions User đã đăng nhập thành công vào hệ thống

Post-conditions Hệ thống xoá khoá học khỏi giỏ hàng và hiển thị thông báo xoá khoá học ra khỏi giỏ hàng thành công

Use Case diễn ra khi tác nhân nhấn nút xoá khoá học trong trang giỏ hàng:

1 Tác nhân chọn khoá học muốn xoá khỏi giỏ hàng

Hình 28: Sequence Diagram xoá khoá h ọ c kh ỏ i gi ỏ hàng

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

2.3.2.17 Use Case ch ức năng trao đổ i thông tin v ớ i ChatBot

Hình 29: Sequence Diagram ch ức năng trao đổ i thông tin v ớ i chatBot

B ả ng 17 : Đặ c t ả UseCase trao đổ i thông tin v ớ i ChatBot

2 Tác nhân nhấn nút “xoá” để xoá khoá học

3 Hệ thống cập nhật dữ liệu và thông báo xoá thành công

UC17 Trao đổi thông tin với chatbot

Brief description Tác nhân thực hiện việc nhắn tin, trao đổi thông tin với chatbot

Pre-conditions User đã đăng nhập thành công vào hệ thống

Post-conditions Hệ thống trả lời lại câu hỏi do người dùng đặt ra trong chatbot

Use Case diễn ra khi tác nhân nhập nội dung và nhấn nút gửi trong tab chatbot ở trang xem bài giảng

1 Tác nhân chọn tab ChatBot trong trang xem bài giảng

2 Tác nhân nhập nội dung tin nhắn muốn gửi tới chatbot và nhấn nút gửi

3 Hệ thống gọi sang ChatGPTService để nhận được câu trả lời cho câu hỏi của người dùng

4 Hệ thống lưu lại tin nhắn của người dùng và phản hòi của chatGPT

5 Hệ thống trả về câu trả lời cho người dùng

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

2.3.2.18 Use Case tạo lịch nhắc hẹn học tập

Hình 30: Sequence Diagram t ạ o l ị ch nh ắ c h ẹ n h ọ c t ậ p

B ả ng 18 : Đặ c t ả UseCase t ạ o l ị ch nh ắ c h ẹ n h ọ c t ậ p

UC18 Tạo lịch nhắc hẹn học tập

Brief description Tác nhân thực hiện việc tạo lịch nhắc hẹn học tập

Pre-conditions User đã đăng nhập thành công vào hệ thống

Post-conditions Hệ thống tạo lịch nhắc hẹn trên Google Calendar của

User và thông báo thành công

Basic flow Use Case diễn ra khi tác nhấn nút thêm lịch học trong trang xem bài bài giảng

2.3.2.19 Use Case t ạ o câu h ỏ i th ả o lu ậ n

Hình 31: Sequence Diagram ch ức năng tạ o câu h ỏ i th ả o lu ậ n

1 Tác nhân chọn tab Lịchtrong trang xem bài giảng

2 Tác nhân nhập nội dung lịch nhắc hẹn và thời gian gửi thông báo nhắc hẹn

3 Tác nhân đăng nhập và cấp quyền cho hệ thống có thể truy cập vào Google Calendar của user

4 Hệ thống gửi yêu cầu được phép truy cập vào Google Calendar của user tới Google Service

5 Hệ thống gửi yêu cầu thêm lịch học nhắc hẹn tới Google Service

6 Hệ thống thông báo thành công

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

B ả ng 19: Đặ c t ả Use Case t ạ o câu h ỏ i th ả o lu ậ n

UC19 Tạo câu hỏi thảo luận

Brief description Tác nhân thực hiện việc tạo câu hỏi thảo luận

Pre-conditions User đã đăng nhập thành công vào hệ thống và đã mua khoá học muốn tạo câu hỏi

Post-conditions Hệ thống tạo lưu lại dữ liệu và thông báo thành công

Use Case diễn ra khi tác nhân điền nội dung câu hỏi và nhấn nút “thêm câu hỏi”

1 Tác nhân chọn tab Q&A trong trang xem bài giảng

2 Tác nhân nhập nội dung lịch câu hỏi

3 Tách nhân nhấn nút “thêm câu hỏi”

4 Hệ thống lưu lại câu hỏi

5 Hệ thống thông báo lưu câu hỏi thành công

Extension point Ở bước 4, nếu hệ thống lưu lại câu hỏi không thành công thì sẽ thực hiện các câu việc sau:

1 Thông báo lưu lại câu hỏi không thành công cho người dùng

2.3.2.20 Use Case chức năng xem danh sách thảo luận trong bài học

B ả ng 20 : Đặ c t ả Use ch ức năng xem danh sách thả o lu ậ n

UC20 Tạo câu hỏi thảo luận

Brief description Tác nhân thực hiện việc xem danh sách thảo luận trong bài học

Pre-conditions User đã đăng nhập thành công vào hệ thống và đã mua khoá học muốn xem câu hỏi

Post-conditions Hệ thống hiển thị danh thảo luận cho người dùng

Use Case diễn ra khi tác nhân chọn tab Q&A

1 Tác nhân chọn tab Q&A trong trang xem bài giảng

2 Hệ thống lấy danh sách các câu thảo luận có trong bài học

Hình 32: Sequence Diagram ch ức năng xem danh sá ch bài gi ả ng

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

3 Hệ thống hiển thị danh sách các câu hỏi cho người dùng

2.3.2.21 Use Case trả lời thảo luận trong bài học

B ả ng 21 Đặ c t ả UseCase ch ứuc năng trả l ờ i th ả o lu ậ n

UC21 Tạo câu hỏi thảo luận

Brief description Tác nhân thực hiện trả lời thảo luận trong bài học

Pre-conditions User đã đăng nhập thành công vào hệ thống và đã mua khoá học muốn xem câu hỏi

Post-conditions Hệ thống lưu lại câu trả lời và cho thông báo thêm câu trả lời thành công

Use Case diễn ra khi tác nhân thực hiện việc thêm câu trả lời cho câu thảo luận

1 Tác nhân chọn tab Q&A trong trang xem bài giảng

Hình 33: Sequence Diagram ch ức năng trả l ờ i th ả o lu ậ n trong bài h ọ c

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

2.3.2.22 Use Case chức năng xoá thảo luận trong bài giảng

Hình 34: Sequence Diagram ch ức năng xoá thả o lu ậ n trong bài gi ả ng

2 Tác nhân chọn câu thảo luận muốn trả lời

3 Tác nhân nhấn nút “Reply”

4 Tác nhân nhập nội dung câu trả lời

5 Tác nhân bấm nút “Lưu”

6 Hệ thống lưu lại câu trả lời

7 Hệ thống thông báo lưu câu trả lời thành công

Alternative flow Ở bước 6, nếu hệ thống lưu không thành công thì sẽ thực hiện các công việc sau:

1 Thông báo lưu câu trả lời thất bại

B ả ng 22 : Đặ c t ả Use Case ch ức năng xoá thả o lu ậ n trong bài gi ả ng

UC22 Tạo câu hỏi thảo luận

Brief description Tác nhân thực hiện việc xoá câu thảo luận của mình trong bài học

Pre-conditions User đã đăng nhập thành công vào hệ thống và đã mua khoá học muốn xem câu hỏi

Post-conditions Hệ thống cập nhật lại dữ liệu và cho thông báo xoá câu trả lời thành công

Use Case diễn ra khi tác nhân thực hiện việc xoá câu trả lời cho câu thảo luận

1 Tác nhân chọn tab Q&A trong trang xem bài giảng

2 Tác nhân chọn câu thảo luận muốn xoá

3 Tác nhân nhấn nút xoá

4 Hệ thống kiểm tra xem có câu thảo luận bị xoá có phải của user hay không

5 Hệ thống cập nhật dữ liệu

6 Hệ thống thông báo xoá câu trả lời thành công

Alternative flow Ở bước 4, nếu hệ thống kiểm tra câu thảo luận không phải của người dùng thì sẽ thực hiện các công việc sau:

1 Thông báo xoá câu thảo luận không phải của người dùng

2 Use case quay lại bước 1 Ở bước 5, nếu hệ thống cập nhật dữ liệu không thành công thì sẽ thực hiện các công việc sau:

1 Thông báo xoá câu trả lời thất bại

2 Use case quay lại bước 1

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

2.3.2.23 Use Case xem thông báo từ giảng viên

B ả ng 23 : Đặ c t ả Use Case xem thông báo t ừ gi ả ng viên

UC23 Xem thông báo từ giảng viên

Brief description Tác nhân thực hiện xem danh sách thông báo từ giảng viên trong khoá học

Pre-conditions User đã đăng nhập thành công vào hệ thống và đã mua khoá học muốn xem câu hỏi

Post-conditions Hệ thống lấy danh sách thông báo cho user

Use Case diễn ra khi tác nhân thực hiện việc xoá câu trả lời cho câu thảo luận

1 Tác nhân chọn tab thông báo trong trang xem bài giảng

Hình 35: Sequence Diagram ch ức năng xem thông báo từ gi ả ng viên

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

2.3.2.24 Use Case xem danh sách ghi chú c ủ a user

B ả ng 24 : Đặ c t ả UseCase ch ức năng xem danh sách ghi chú

2 Hệ thống lấy danh sách các thông bảo từ giảng viên trong khoá học

3 Hệ thống hiển thị danh sách thông báo

UC34 Xem danh sách ghi chú

Brief description Tác nhân thực hiện xem danh sách ghi chú trong khoá học

Hình 36:Sequence Diagram ch ức năng

Pre-conditions User đã đăng nhập thành công vào hệ thống và đã mua khoá học muốn xem câu hỏi

Post-conditions Hệ thống lấy danh sách ghi chú cho user

Use Case diễn ra khi tác nhân thực hiện việc xoá câu trả lời cho câu thảo luận

1 Tác nhân chọn tab Note trong trang xem bài giảng

2 Hệ thống lấy danh sách các ghi chú của người dùng

3 Hệ thống hiển thị danh sách thông báo

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

2.3.2.25 Use Case thêm ghi chú trong bài giảng

B ả ng 25 : Đặ c t ả Use Case thêm ghi chú

Brief description Tác nhân thực hiện thêm ghi chú trong khoá học

Pre-conditions User đã đăng nhập thành công vào hệ thống và đã mua khoá học muốn xem câu hỏi

Post-conditions Hệ thống lưu lại ghi chú và thông báo thêm ghi chú thành công

Use Case diễn ra khi tác nhân thực hiện việc thêm ghi chú cho bài giảng

1 Tác nhân chọn tab Note trong trang xem bài giảng

2 Tác nhân chọn nút “thêm ghi chú”

3 Tác nhân nhập nội dung ghi chú

Hình 37: Sequence Diagram thêm ghi chú cho bài gi ả ng

4 Tác nhân bấm nút lưu

5 Hệ thống lưu lại ghi chú của người dùng

6 Hệ thống thông báo lưu thành công

Extension point Ở bước 5, nếu hệ thống lưu ghi chú thất bại thì sẽ thực hiện các bước sau:

1 Hệ thống thông báo tạo ghi chú thất bại

2 Use case quay lại bước 3

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

2.3.2.26 Use Case chức năng xoá ghi chú

B ả ng 26 : Đặ c t ả Usecase ch ức năng xoá ghi chú

Brief description Tác nhân thực hiện xoá ghi chú trong khoá học

Pre-conditions User đã đăng nhập thành công vào hệ thống và đã mua khoá học muốn xem câu hỏi

Post-conditions Hệ thống cập nhật lại dữ liệu và thông báo kết quả

Use Case diễn ra khi tác nhân thực hiện việc xoá ghi chú cho bài giảng

1 Tác nhân chọn tab Note trong trang xem bài giảng

Hình 38: Sequence Diagram cho ch ức năng xoá ghi chú

2 Tác nhân chọn ghi chú cần xoá

3 Tác nhân bấm nút “Xoá”

4 Hệ thống xoá ghi chú của người dùng

5 Hệ thống thông báo lưu thành công

Extension point Ở bước 4, nếu hệ thống xoá ghi chú thất bại thì sẽ thực hiện các bước sau:

3 Hệ thống thông báo xoá ghi chú thất bại

4 Use case quay lại bước 2

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

2.3.2.27 Use Case thực hiện bài test trắc nghiệm

B ả ng 27 : Đặ c t ả Use Case th ự c hi ệ n bài Quiz

UC27 Thực hiện bài Quiz

Brief description Tác nhân thực hiện việc làm bài test trong khoá học

Pre-conditions User đã đăng nhập thành công vào hệ thống và đã mua khoá học muốn xem câu hỏi

Hình 39: Sequence Diagram ch ức năng thự c hi ệ n bài Test

Post-conditions Hệ thống hiển thị danh sách câu hỏi trong bài và chấm bài làm sau khi người dùng nộp bài

Use Case diễn ra khi tác nhân thực hiện bài test trong khoá học đã mua:

1 Tác nhân chọn bài test ở phần danh sách bài giảng

2 Tác nhân nhấn nút “Start Quiz” để thực hiện bài test

3 Hệ thống lấy danh sách các câu hỏi và lựa chọn của bài test hiển thị cho người dùng

4 Tác nhân chọn đáp án cho từng câu hỏi

5 Tác nhân nhấn nút nộp bài test

6 Hệ thống kiểm tra đáp án của từng câu hỏi và tính toán kết quả bài test

7 Hệ thống lưu lại kết quả bài test

8 Hệ thống thông báo kết quả bài test cho người dùng

Extension point Ởbước 5, nếu người dùng chưa làm chọn đáp án cho tất cả các câu thì sẽ thực hiện các bước sau:

1 Hệ thống thông báo người dùng chưa làm xong bài test

2 Use case quay lại bước 4

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

2.3.2.28 Use Case đánh dấu hoàn thành bài học

Hình 40: Sequence Diagram ch ức năng đánh dấ u bài h ọ c là hoàn thành

B ả ng 28 : Đặ c t ả Use Case ch ức năng đánh dấ u hoàn thành bài h ọ c

UC28 Đánh dấuhoàn thành bài học

Brief description Tác nhân thực hiện việc đánh dấu hoàn thành bài học trong khoá học

Pre-conditions User đã đăng nhập thành công vào hệ thống và đã mua khoá học muốn xem câu hỏi

Post-conditions Hệ thống lưu lại bài học được đánh dấu hoàn thành và thông báo cập nhật thành công

Use Case diễn ra khi tác nhân thực hiện việc thêm ghi chú cho bài giảng

1 Tác nhân click vào ô checkbox đánh dấu hoàn thành khoá học ở bài học cần đánh dấu

2 Hệ thống cập nhật lại tiến độ học tập của người dùng tại khoá học đó

3 Hệ thống thông báo cập nhật tiến độ thành công

Extension point Ở bước 2, nếu hệ thống lưu ghi chú thất bại thì sẽ thực hiện các bước sau:

1 Hệ thống thông báo cập nhật tiến độ thất bại

2 Use case quay lại bước 1

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

2.3.2.29 Use Case bỏ đánh dấu bài học đã được học

Hình 41: Sequence Diagram ch ức năng bỏ đánh dầ u hoàn thành bài h ọ c

B ả ng 29: Đặ c t ả Use Case b ỏ đánh dấ u hoàn thành khoá h ọ c

UC29 Bỏ đánh dấu hoàn thành bài học

Brief description Tác nhân thực hiện việc bỏ đánh dấu hoàn thành bài học trong khoá học

Pre-conditions User đã đăng nhập thành công vào hệ thống và đã mua khoá học muốn xem câu hỏi

Post-conditions Hệ thống lưu lại tiến độ học tập và thông báo cập nhật thành công

Use Case diễn ra khi tác nhân thực hiện

1 Tác nhân click vào ô checkbox để bỏ đánh dấu hoàn thành khoá học ở bài học cần bỏ đánh dấu

2 Hệ thống cập nhật lại tiến độ học tập của người dùng tại khoá học đó

3 Hệ thống thông báo cập nhật tiến độ thành công

Extension point Ở bước 2, nếu hệ thống lưu ghi chú thất bại thì sẽ thực hiện các bước sau:

3 Hệ thống thông báo cập nhật tiến độ thất bại

4 Use case quay lại bước 1

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

2.3.2.30 Use Case xem danh sách giảng viên

B ả ng 30 : Đặ c t ả Use case xem danh sách gi ả ng viên

UC30 Xem danh sách giảng viên

Brief description Tác nhân thực hiện việc xem danh sách giảng viên có trên hệ thống

Pre-conditions Tác nhân có tài khoản với quyền Admin và đã đăng nhập vào hệ thống thành công

Post-conditions Hệ thống hiển thị danh sách giảng viên

Use Case diễn ra khi tác nhân chọn quản lý giảng viên ở menu:

1 Tác nhân chọn menu quản lý giảng viên

2 Hệ thống lấy danh sách giảng viên có trên hệ thống

3 Hệ thống hiển thị danh sách giảng viên

Hình 42: Sequence Diagram ch ức năng xem danh sách giả ng viên

2.3.2.31 Use Case chức năng xem danh sách reviewers

B ả ng 31 : Đặ c t ả Use Case xem thông tin chi ti ế t gi ả ng viên

UC31 Xem thông tin chi tiết giảng viên Brief description Tác nhân thực hiện việc xem thông tin chi tiết giảng viên

Pre-conditions Tác nhân có tài khoản và đã đăng nhập vào hệ thống thành công

Post-conditions Hệ thống hiển thị thông tin chi tiết của giảng viên

Hình 43: Sequence Dìagram ch ức năng xem danh sách reviewers

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Use Case diễn ra khi tác nhân nhấn tên giảng viên dưới mỗi khóa học

1 Tác nhân nhấn tên giảng viên dưới mỗi khóa học

2 Hệ thống chuyển sang trang chi tiết giảng viên

3 Hệ thống lấy dữ liệu và hiển thị trên trang chi tiết giảng viên

2.3.2.32 Use Case xem bài giảng của khoá học đã mua

Hình 44: Sequence Diagram ch ức năng xem bài giả ng

B ả ng 32 : Đặ c t ả Use Case xem bài gi ả ng

Brief description Tác nhân thực hiện việc xem bài giảng trong khóa học

Pre-conditions Tác nhân có tài khoản và đã đăng nhập vào hệ thống thành công

Post-conditions Hệ thống hiển thị thông tin danh sách bài giảng trong khóa học

Use Case diễn ra khi tác nhân nhấn vào “Học ngay” trong trang danh sách khóa học đã mua

1 Tác nhân nhấn “Học ngay” trong trang danh sách khóa học đã mua

2 Hệ thống chuyển sang trang phòng học

3 Hệ thống lấy dữ liệu và hiển thị nội dung khóa học gồm các bài giảng trên trang phòng học

Business Rule Tác nhân đã mua khóa học

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

2.3.2.33 UseCase thêm khoá học vào danh sách yêu thích

Bảng 33: Đặc tả Use Case năng thêm khoá học vào danh sách yêu thích

UC33 Thêm khóa học vào danh sách yêu thích

Brief description Tác nhân thực hiện việc thêm khóa học vào danh sách yêu thích

Pre-conditions Tác nhân có tài khoản và đã đăng nhập vào hệ thống thành công

Post-conditions Hệ thống hiển thị thông báo thêm thành công

Use Case diễn ra khi tác nhân nhấn vào nút hình “Trái tim” trong trang danh sách khóa học

1 Tác nhân nhấn nút hình “Trái tim” trong trang danh sách khóa học

2 Hệ thống lưu lại dữ liệu và hiển thị thông báo thêm thành công

Hình 45:Sequence Diagram ch ức năng thêm khoá họ c vào danh sách yêu thích

Business Rule Khóa học này chưa thuộc danh sách yêu thích trước đó

2.3.2.34 Use Case xem danh sách khoá học yêu thích

B ả ng 34 : Đặ c t ả UseCase ch ức năng xem danh sách khoá họ c yêu thích UC34 Xem danh sách khóa học yêu thích

Brief description Tác nhân thực hiện việc xem danh sách khóa học yêu thích

Pre-conditions Tác nhân có tài khoản và đã đăng nhập vào hệ thống thành công

Post-conditions Hệ thống hiển thị thông tin danh sách khóa học yêu thích

Hình 46: Sequence Diagram ch ức năng xem danh sách khoá họ c yêu thích

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Use Case diễn ra khi tác nhân nhấn vào tab “Khóa học yêu thích” trong trang khóa học của tôi

1 Tác nhân nhấn tab “Khóa học yêu thích” trong trang khóa học của tôi

2 Hệ thống chuyển sang trang khóa học yêu thích

3 Hệ thống lấy dữ liệu và hiển thị danh sách khóa học yêu thích

2.3.2.35 Use Case xoá khoá học khỏi danh sách yêu thích

B ả ng 35 : Đặ c t ả Use Case xoá khoá h ọ c kh ỏ i danh sách yêu thích UC35 Xóa khóa học khỏi danh sách yêu thích

Brief description Tác nhân thực hiện việc xóa khóa học khỏi danh sách yêu thích

Hình 47: Sequence Diagram xoá khoá h ọ c kh ỏ i danh sách yêu thích

Pre-conditions Tác nhân có tài khoản và đã đăng nhập vào hệ thống thành công

Post-conditions Hệ thống hiển thị thông báo và lưu lại dữ liệu

Use Case diễn ra khi tác nhân bấm nút hình “Trái tim” trong trang danh sách khóa học yêu thích:

1 Tác nhân nhấn nút hình “Trái tim” trong trang danh sách khóa học yêu thích

2 Hệ thống lưu lại thông tin và hiển thị thông báo xóa khỏi danh sách thành công

Business Rule Khóa học phải nằm trong danh sách yêu thích trước đó

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

2.3.2.36 Use Case xem danh sách yêu cầu phê duyệt thành giảng viên

B ả ng 36 : Đặ c t ả Use Case xem danh sách yêu c ầ u phê duy ệ t thành gi ả ng viên

UC36 Xem danh sách yêu cầu phê duyệt thành giảng viên

Brief description Tác nhân thực hiện việc xem danh sách yêu cầu phê duyệt thành giảng viên

Pre-conditions Tác nhân có tài khoản và đã đăng nhập vào hệ thống thành công

Post-conditions Hệ thống hiển thị danh sách yêu cầu

Hình 48:Sequence Diagram ch ức năng xem danh sách yêu câu phê duyệ t tr ở thành gi ả ng viên

Use Case diễn ra khi tác nhân nhấn “Danh sách yêu cầu trở thành giảng viên” trong sidebar của web

1 Tác nhân nhấn nút “Danh sách yêu cầu trở thành giảng viên” trong sidebar của web

2 Hệ thống lấy dữ liệu và hiển thị danh sách yêu cầu trở thành giảng viên

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

2.3.2.37 Use Case đăng ký account reviewer

B ả ng 37 : Đặ c t ả Use Case đăng ký revie wer

UC37 Đăng ký account reviewer

Brief description Tác nhân thực hiện việc đăng ký tài khoản reviewer

Pre-conditions Tác nhân có tài khoản và đã đăng nhập vào hệ thống thành công

Post-conditions Hệ thống lưu lại dữ liệu và thông báo thêm thành công

Basic flow Use Case diễn ra khi tác nhân nhấn “Thêm mới” trong trang danh sách người kiểm duyệt

Hình 49 : Sequence Diagram đăng ký account reviewer

1 Tác nhân nhấn nút “Thêm mới” trong trang danh sách người kiểm duyệt

2 Hệ thống chuyển sang trang thêm mới người kiểm duyệt

3 Tác nhân điền thông tin yêu cầu

4 Tác nhân nhấn nút “Lưu” (1)

5 Hệ thống xác thực dữ liệu

6 Hệ thống thông báo thêm thành công và lưu lại dữ liệu

Alternative flow Hệ thống xác thực thông tin không chính xác và Use

Extension point 4.(1) Tác nhân nhấn nút “Hủy” Use Case kết thúc

Business Rule Username, password, Họ tên, ngày sinh, giới tính, sdt, email là những trường bắt buộc nhập

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

2.3.2.38 Use Case xem danh sách reviewer

B ả ng 38 : Đặ c t ả Use Case xem danh sách reviewer

UC38 Xem danh sách reviewer

Brief description Tác nhân thực hiện việc xem danh sách reviewer

Pre-conditions Tác nhân có tài khoản và đã đăng nhập vào hệ thống thành công

Post-conditions Hệ thống hiển thị danh sách reviewer

Basic flow Use Case diễn ra khi tác nhân nhấn “Quản lý người kiểm duyệt” trong sidebar của web

Hình 50: Sequence Diagram ch ức năng xem danh sách reviewer

1 Tác nhân nhấn nút “Quản lý người kiểm duyệt” trong sidebar của web

2 Hệ thống lấy dữ liệu và hiển thị danh sách người kiểm duyệt

2.3.2.39 Use Case xem danh sách khoá học chưa được duyệt

B ả ng 39 : Đặ c t ả Use Case xem danh sách khoá h ọc chưa đưa duyệ t

UC39 Xem danh sách khóa học chưa được duyệt

Brief description Tác nhân thực hiện việc xem danh sách khóa học chưa được duyệt

Pre-conditions Tác nhân có tài khoản và đã đăng nhập vào hệ thống thành công

Hình 51: Sequence Diagram ch ức năng xem danh sách khoá h ọc chưa đượ c duy ệ t

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Post-conditions Hệ thống hiển thị danh sách khóa học chưa được duyệt

Use Case diễn ra khi tác nhân nhấn “Phê duyệt khóa học” trong sidebar của web

1 Tác nhân nhấn nút “Phê duyệt khóa học” trong sidebar của web

2 Hệ thống lấy dữ liệu và hiển thị danh sách các khóa học chưa được duyệt

Business Rule Khóa học phải thuộc chuyên môn của người duyệt

2.3.2.40 Use Case nhận task kiểm duyệt yêu cầu tạo khoá học cho reviewer

B ả ng 40 : Đặ c t ả Use Case nh ậ n task ki ể m duy ệ t

UC40 Nhận task kiểm duyệt yêu cầu tạo khóa học

Brief description Tác nhân thực hiện việc nhận nhiệm vụ kiểm duyệt yêu cầu tạo khóa học

Pre-conditions Tác nhân có tài khoản và đã đăng nhập vào hệ thống thành công

Post-conditions Hệ thống lưu lại dữ liêu và hiển thị thông báo nhận thành công

Hình 52: Sequence Diagram ch ức năng nhậ n task ki ể m duy ệ t

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Use Case diễn ra khi tác nhân nhấn “Nhận nhiệm vụ” trong trang chi tiết yêu cầu phê duyệt khóa học

1 Tác nhân nhấn nút “Nhận nhiệm vụ” trong trang chi tiết yêu cầu phê duyệt khóa học

2 Hệ thống lưu dữ liệu và thông báo nhận thành công

Business Rule Khóa học phải thuộc chuyên môn của người duyệt

2.3.2.41 Use Case gửi kết quả phê duyệt khoá học

B ả ng 41 : Đặ c t ả Use Case g ử i kêt qu ả yêu c ầ u duy ệ t khoá h ọ c

UC41 Duyệt yêu cầu tạo khóa học

Brief description Tác nhân thực hiện việc duyệt yêu cầu tạo khóa học

Pre-conditions Tác nhân có tài khoản và đã đăng nhập vào hệ thống thành công

Post-conditions Hệ thống lưu lại dữ liêu và hiển thị thông báo duyệt thành công

Hình 53: Sequence Diagram ch ức năng duyệ t yêu c ầ u t ạ o m ớ i khoá h ọ c

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Use Case diễn ra khi tác nhân nhấn “Duyệt” trong trang chi tiết yêu cầu phê duyệt khóa học

1 Tác nhân nhấn nút “Duyệt” trong trang chi tiết yêu cầu phê duyệt khóa học

2 Hệ thống hiển thị thông báo xác nhận duyệt khóa học

4 Hệ thống lưu dữ liệu và hiển thị thông báo duyệt thành công

Extension point 3.(1) Tác nhân nhấn “Hủy” Use Case kết thúc

Business Rule Khóa học phải thuộc chuyên môn của người duyệt

2.3.2.42 Use Case cập nhật nhật bài giảng

B ả ng 42 : Đặ c t ả Use Case c ậ p nh ậ t bài gi ả ng

UC42 Cập nhật bài giảng

Brief description Tác nhân thực hiện việc cập nhật bài giảng trong khóa học

Pre-conditions Tác nhân có tài khoản và đã đăng nhập vào hệ thống thành công

Post-conditions Hệ thống lưu lại dữ liêu và hiển thị thông báo cập nhật thành công

Use Case diễn ra khi tác nhân nhấn “Sửa” trong trang quản lý khóa học

1 Tác nhân nhấn nút “sửa” trong trang quản lý khóa học

Hình 54: Sequence Diagram ch ức năng cậ p nh ậ t bài gi ả ng

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

2 Hệ thống chuyển sang trang chi tiết khóa học

3 Tác nhân chỉnh sửa thông tin bài học

5 Hệ thống xác thực dữ liệu

6 Hệ thống hiển thị thông báo cập nhật thành công

Alternative flow Hệ thống xác thực dữ liệu không hợp lệ và Use Case quay lại bước 3

Extension point 4.(1) Tác nhân nhấn “Hủy” Use Case kết thúc

2.3.2.43 Use Case xem danh sách mã khuyến mãi

B ả ng 43; Đặ c t ả Use Case xem mã khuy ế n mãi

UC43 Xem danh sách khóa mã khuyến mãi

Brief description Tác nhân thực hiện việc xem danh sách mã khuyến mãi

Pre-conditions Tác nhân có tài khoản và đã đăng nhập vào hệ thống thành công

Post-conditions Hệ thống hiển thị danh sách mã khuyến mãi

Use Case diễn ra khi tác nhân nhấn “Coupons” trong sidebar của web

1 Tác nhân nhấn nút “Coupons” trong sidebar của web

2 Hệ thống lấy dữ liệu và hiển thị danh sách các mã khuyến mãi

Hình 55: Sequence Diagram xem danh sách mã khuy ế n mãi

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

THIẾ T K Ế H Ệ TH Ố NG

THI Ế T K Ế GIAO DI Ệ N

4 Chương 4: CÀI ĐẶT VÀ KIỂM THỬ

STT Thời gian thực hiện Công việc Ghi chú

Thiết kế usecase và mô hình hóa yêu cầu

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

Tìm hiểu thư viện ReactJS, Material UI Tìm hiểu framework Spring Boot Tìm hiểu Spring Security, JWT

Tiến hành tổ chức cấu trúc project Xây dựng các tables của cơ sở dử liệu

Tạo các Entities trong Spring Boot và mapping với cơ sở dữ liệu

Xây dựng API cho các chức năng cơ bản dành cho người dùng có phân quyền là User

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Tp Hồ Chí Minh, ngày tháng năm 2023 Ý 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)

Xây dựng Giao diện người dùng cho hệ thống

Kết hợp các phần đã xây dựng (giao diện, APIs, database)

Xây dựng giao diện cho trang Admin

Tiến hàng tạo các APIs cho Admin

Xây dựng chức năng nâng cao là các tool học tập cho người dùng Tiến hàng code tính năng cho phép có thêm bài Test, file bài giảng cho các khoá học

Xây dựng tính năng quản lý khoá học cho giảng viên

Xây dựng tính năng phê duyệt khoá học, đăng ký khoá học mới

Tìm hiểu quá trình deploy sản phẩm

Viết script CI/CD Tìm hiểu AWS CloudFront

Tiến hành deploy sản phẩm

9 16/06/2023 – 21/06/2023 Kiểm thử chương trình và tiến hành sửa lỗi

10 22/06/2023 – 07/07/2023 Viết và hoàn thiện báo cáo

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

5 Ý NGHĨA KHOA HỌ C VÀ TH Ự C TI Ễ N 2

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

1.1.2 Kiến trúc và cách hoạt động của Spring Boot 3

1.2.2 Cơ chế ho ạt độ ng c ủ a Spring Security 5

1.3.2 Cách ho ạt độ ng c ủ a MYSQL 6

1.4.2 Cách ho ạt độ ng c ủ a RESTFUL API 8

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

1.7.3 Ưu và nhược điể m c ủ a ReactJS 11

CHƯƠNG 2: KHẢ O SÁT HI Ệ N TR Ạ NG VÀ MÔ HÌNH HÓA YÊU C Ầ U 16

2.1 KH Ả O SÁT HI Ệ N TR Ạ NG 16

2.1.2 Yêu c ầ u bài toán c ủa đề tài 18

2.2.2 Yêu c ầ u phi ch ức năng 20

3.1.2 Mô t ả chi ti ế t b ả ng d ữ li ệ u 100

3.2.1 Giao di ệ n cho Admin và Teacher 122

4.1.2 Giao di ện cho ngườ i dùng (Student, Teacher) 147

CHƯƠNG 4: CÀI ĐẶ T VÀ KI Ể M TH Ử 170

4.1.1 Cài đặ t ứ ng d ụng, thư việ n c ầ n thi ế t 170

4.2.4 Các trườ ng h ợ p ki ể m th ử 175

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Hình 1: Ki ế n trúc phân l ớ p c ủ a SpringBoot 3

Hình 3: Cơ chế ho ạt độ ng c ủ a Spring Security 5

Hình 6: T ổ ch ứ c d ữ li ệ u trên AWS S3 10

Hình 7: Giao di ệ n website kh ả o sát Unica 16

Hình 8: Giao di ệ n Website kh ả o sát F8 – H ọ c l ập trình để đi làm 17

Hình 9: Use Case cho Admin 21

Hình 10: Use Case cho Teacher 22

Hình 11: Use Case cho ngườ i có phân quy ề n là Reviewer 22

Hình 12: Use Case cho ngườ i có phân quy ề n là User 23

Hình 13: : Sequence Diagram cho ch ức năng gử i yêu c ầ u duy ệ t khoá h ọ c m ớ i 24

Hình 14: Sequence Diagram thêm lo ạ i khoá h ọ c m ớ i 26

Hình 15: Sequence Diagram ch ức năng thêm mớ i mã khuy ế n mãi 28

Hình 16: Sequence Diagram ch ức năng cậ p nh ậ t thông tin mã khuy ế n mãi 30

Hình 17: Sequence Diagram xem l ị ch s ử đơn hàng 32

Hình 18: Sequence Diagram ch ức năn g g ử i k ế t qu ả phê duy ệ t yêu c ầ u tr ở thành gi ả ng viên 33

Hình 19: Sequence Diagram cho ch ức năng thêm khoá họ c vào gi ỏ hàng 35

Hình 20: Sequence Diagram đánh giá khoá học đã mua 36

Hình 21: Sequence Diagram ch ức năng đă ng xu ấ t 38

Hình 22: Sequence Diagram ch ức năng đăng nhậ p 39

Hình 23: Sequence Diagram ch ức năng đăng ký tài khoả n 41

Hình 24: Sequence Diagram ch ức năng thanh toán 43

Hình 25: Sequence Diagram ch ức năng xem đánh giá khoá họ c 46

Hình 26: Sequence Diagram tìm ki ế m các khoá h ọ c 47

Hình 27: Sequence Diagram yêu c ầ u tr ở thành gi ả ng viên 49

Hình 28: Sequence Diagram xoá khoá h ọ c kh ỏ i gi ỏ hàng 51

Hình 29: Sequence Diagram ch ức năng trao đổ i thông tin v ớ i chatBot 52

Hình 30: Sequence Diagram t ạ o l ị ch nh ắ c h ẹ n h ọ c t ậ p 54

Hình 31: Sequence Diagram ch ức năng tạ o câu h ỏ i th ả o lu ậ n 55

Hình 32: Sequence Diagram ch ức năng xem danh sách bài giả ng 57

Hình 33: Sequence Diagram ch ức năng trả l ờ i th ả o lu ậ n trong bài h ọ c 59

Hình 34: Sequence Diagram ch ức năng xoá thả o lu ậ n trong bài gi ả ng 60

Hình 35: Sequence Diagram ch ức năn g xem thông báo t ừ gi ả ng viên 63

Hình 36:Sequence Diagram ch ức năng 64

Hình 37: Sequence Diagram thêm ghi chú cho bài gi ả ng 66

Hình 38: Sequence Diagram cho ch ức năng xoá ghi chú 68

Hình 39: Sequence Diagram ch ức năng thự c hi ệ n bài Test 70

Hình 40: Sequence Diagram ch ức năng đá nh d ấ u bài h ọ c là hoàn thành 72

Hình 41: Sequence Diagram ch ức năng bỏ đánh dầ u hoàn thành bài h ọ c 74

Hình 42: Sequence Diagram ch ức năng xem danh sách giả ng viên 76

Hình 43: Sequence Dìagram ch ức năng xem danh sách re viewers 77

Hình 44: Sequence Diagram ch ức năng xem bài giả ng 78

Hình 45:Sequence Diagram ch ức năng thêm khoá họ c vào danh sách yêu thích 80

Hình 46: Sequence Diagram ch ức năng xem danh sách khoá họ c yêu thích 81

Hình 47: Sequence Diagram xoá khoá h ọ c kh ỏ i danh sách yêu thích 82

Hình 48:Sequence Diagram ch ức năng xem danh sách yêu câu phê duyệ t tr ở thành gi ả ng viên 84

Hình 49: Sequence Diagram đăng ký account reviewer 86

Hình 50: Sequence Diagram ch ức năng xem danh sách reviewer 88

Hình 51: Sequence Diagram ch ức năng xem danh sách khoá học chưa đượ c duy ệ t 89

Hình 52: Sequence Diagram ch ức năng nhậ n task ki ể m duy ệ t 91

Hình 53: Sequence Diagram ch ức năng duyệ t yêu c ầ u t ạ o m ớ i khoá h ọ c 93

Hình 54: Sequence Diagram ch ức năng cậ p nh ậ t bài gi ả ng 95

Hình 55: Sequence Diagram xem danh sách mã khuy ế n mãi 97

Hình 57: Giao di ện trang đăng nhậ p 122

Hình 58: Giao di ệ n trang quên m ậ t kh ẩ u 123

Hình 59: Giao di ệ n trang Dashboard 124

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Hình 60: Giao di ệ n trang DashBoard th ể hi ệ n doanh thu 124

Hình 61: Giao di ệ n trang qu ả n lý khoá h ọ c 125

Hình 62: Giao di ệ n trang ch ỉ nh s ử a thông tin t ổ ng quan khoá h ọ c 127

Hình 63: Giao di ệ n trang ch ỉ nh s ử a n ộ i dung bài h ọ c 127

Hình 64: Giao di ệ n tr ạ ng thêm m ớ i chapter 129

Hình 65: Giao di ệ n trang ch ỉ nh s ử a bài h ọ c 130

Hình 66: Giao di ệ n trang qu ả n lý yêu c ầ u phê duy ệ t khoá h ọ c 131

Hình 67: Giao di ện trang đăng kí thông tin khoá họ c m ớ i 132

Hình 68: Giao di ện trang đăng ký nộ i dung khoá h ọ c m ớ i 132

Hình 69: Giao di ệ n trang xem l ạ i n ộ i dung khoá h ọ c m ớ i 132

Hình 70: Giao di ệ n trang qu ả n lý bình lu ậ n 134

Hình 71: Giao di ệ n trang thêm m ớ i bình lu ậ n 135

Hình 72: Giao di ệ n trang qu ản lý đơn hàng 135

Hình 73: Giao di ệ n trang qu ả n lý coupon 136

Hình 74: Giao di ệ n trang thêm m ớ i coupon 137

Hình 75: Giao di ệ n trang ch ỉ nh s ử a coupon 137

Hình 76: Giao di ệ n trang qu ả n lý thông tin tài kho ả n 138

Hình 77: Giao di ện trang thay đổ i m ậ t kh ẩ u 139

Hình 78: Giao di ệ n trang qu ả n lý khóa h ọ c 140

Hình 79: Giao di ệ n trang thêm m ớ i và s ử a lo ạ i khóa h ọ c 141

Hình 80: Giao di ệ n trang qu ản lý phương thứ c thanh toán 142

Hình 81: Giao di ệ n trang thêm m ớ i và ch ỉ nh s ửa phương thứ c thanh toán 143

Hình 82: Giao di ệ n trang phê duy ệ t yêu c ầ u tr ở thành gi ả ng viên 144

Hình 83: Giao di ệ n trang qu ản lý ngườ i ki ể m duy ệ t 145

Hình 84: Giao di ệ n trang thêm m ới ngườ i ki ể m duy ệ t 146

Hình 85: Giao di ện trang đăng nhậ p 147

Hình 86: Giao di ện trang đăng ký tài khoả n 148

Hình 87: Giao di ệ n trang quên m ậ t kh ẩ u 149

Hình 90: Giao di ệ n top 4 khóa h ọ c 151

Hình 91: Giao di ện ngườ i t ạ o web 152

Hình 93: Giao di ệ n trang danh sách khóa h ọ c 153

Hình 94: Giao di ệ n trang chi ti ế t khóa h ọ c 154

Hình 95: Giao di ệ n trang chi ti ế t khóa h ọ c 155

Hình 96: Giao di ệ n trang phòng h ọ c 156

Hình 97: Giao di ệ n ch ức năng note trong khóa họ c 157

Hình 98: Giao di ệ n ch ức năng hỏi đáp trong khóa họ c 158

Hình 99: Giao di ệ n ch ức năng phả n h ồ i câu h ỏ i 159

Hình 100: Giao di ệ n ch ức năng thêm lị ch h ọ c 160

Hình 101: Giao di ệ n ch ức năng hiể n th ị thông báo c ủ a gi ả ng viên 161

Hình 102: Giao di ệ n ch ức năng hỏi đáp vớ i AI 162

Hình 103: Giao di ệ n trang thông tin cá nhân 163

Hình 104: Giao di ệ n trang l ị ch s ử mua hàng 164

Hình 105: Giao di ệ n trang l ị ch s ử mua hàng 164

Hình 106: Giao di ệ n trang danh sách gi ả ng viên 165

Hình 107: Giao di ệ n trang chi ti ế t gi ả ng viên 166

Hình 108: Giao di ệ n trang gi ỏ hàng 167

Hình 109: Giao di ệ n trang khóa h ọ c c ủ a tôi (Tab khóa h ọc đã mua) 168

Hình 110: Giao di ệ n trang khóa h ọ c c ủ a tôi (Tab khóa h ọ c yêu thích) 168

Hình 111: C ấu trúc thư mụ c Front End (User) 172

Hình 112: C ấu trúc thư mụ c Front End (Admin, Teacher, Reviewer) 173

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

B ảng 1: Đặ c t ả UseCase g ử i yêu c ầ u phê duy ệ t khoá h ọ c m ớ i 24

B ảng 2: Đặ c t ả Use Case thêm lo ạ i khóa h ọ c 26

B ảng 3: Đặ c t ả Use Case thêm m ớ i mã khuy ế n mãi 28

B ảng 4: Đặ c t ả Use Case s ử a thông tin mã khuy ế n mãi 30

B ảng 5: Đặ c t ả Use Case xem l ị ch s ử đơn hàng 32

B ảng 6: Đặ c t ả Use Case ch ấ p nh ậ n yêu c ầ u tr ở thành gi ả ng viên 33

B ảng 7: Đặ c t ả Use Case thêm khoá h ọ c vào gi ỏ hàng 35

B ảng 8: Đặ c t ả Use Case đánh giá khóa học đã mua 36

B ảng 9: Đặ c t ả Use Case ch ức năng đăng xuấ t 38

B ảng 10: Đặ c t ả Use Case đăng nhậ p 39

B ảng 11: Đặ c t ả Use Case đăng ký tài khoả n 41

B ảng 12: Đặ c t ả Use Case thanh toán đơn hàng 43

B ảng 13: Đặ c t ả Use Case xem đánh giá khóa họ c 46

B ảng 14: Đặ c t ả Use Case ch ức năng tìm kiế m khoá h ọ c 47

B ảng 15: : Đặ c t ả Use Case yêu c ầ u tr ở thành gi ả ng viên 49

B ảng 16: Đặ c t ả UseCase xoá khoá h ọ c kh ỏ i gi ỏ hàng 51

B ảng 17: Đặ c t ả UseCase trao đổ i thông tin v ớ i ChatBot 52

B ảng 18: Đặ c t ả UseCase t ạ o l ị ch nh ắ c h ẹ n h ọ c t ậ p 54

B ảng 19: Đặ c t ả Use Case t ạ o câu h ỏ i th ả o lu ậ n 56

B ảng 20: Đặ c t ả Use ch ức năng xem danh sách t h ả o lu ậ n 57

B ảng 21 Đặ c t ả UseCase ch ứuc năng trả l ờ i th ả o lu ậ n 59

B ảng 22: Đặ c t ả Use Case ch ức năng xoá thả o lu ậ n trong bài gi ả ng 61

B ảng 23: Đặ c t ả Use Case xem thông báo t ừ gi ả ng viên 63

B ảng 24: Đặ c t ả UseCase ch ức năng xem danh sách ghi chú 64

B ảng 25: Đặ c t ả Use Case thêm ghi chú 66

B ảng 26: Đặ c t ả Usecase ch ức năng xoá ghi chú 68

B ảng 27: Đặ c t ả Use Case th ự c hi ệ n bài Quiz 70

B ảng 28: Đặ c t ả Use Case ch ức năng đánh dấ u hoàn thành bài h ọ c 73

B ả ng 29: Đặ c t ả Use Case b ỏ đánh dấ u hoàn thành khoá h ọ c 75

B ảng 30: Đặ c t ả Use case xem danh sách gi ả ng viên 76

B ảng 31: Đặ c t ả Use Case xem thông tin chi ti ế t gi ả ng viên 77

B ảng 32: Đặ c t ả Use Case xem bài gi ả ng 79

B ảng 33: Đặ c t ả Use Case năng thêm khoá họ c vào danh sách yêu thích 80

B ảng 34: Đặ c t ả UseCase ch ức năng xem danh sách khoá họ c yêu thích 81

B ảng 35: Đặ c t ả Use Case xoá khoá h ọ c kh ỏ i danh sách yêu thích 82

B ảng 36: Đặ c t ả Use Case xem danh sách yêu c ầ u phê duy ệ t thành gi ả ng viên 84

B ảng 37: Đặ c t ả Use Case đăng ký reviewer 86

B ảng 38: Đặ c t ả Use Case xem danh sách reviewer 88

B ảng 39: Đặ c t ả Use Case xem danh sách khoá h ọc chưa đưa duyệ t 89

B ảng 40: Đặ c t ả Use Case nh ậ n task ki ể m duy ệ t 91

B ảng 41: Đặ c t ả Use Case g ử i kêt qu ả yêu c ầ u duy ệ t khoá h ọ c 93

B ảng 42: Đặ c t ả Use Case c ậ p nh ậ t bài gi ả ng 95

B ảng 43; Đặ c t ả Use Case xem mã khuy ế n mãi 97

B ả ng 44: Mô t ả chi ti ế t b ả ng Account 100

B ả ng 45: Mô t ả chi ti ế t b ả ng UserDetail 100

B ả ng 46: Mô t ả chi ti ế t b ả ng Cart 101

B ả ng 47: Mô t ả chi ti ế t b ả ng Cart Detail 101

B ả ng 49: Mô t ả chi ti ế t b ả ng Chapters 102

B ả ng 50: Mô t ả chi ti ế t b ả ng Coupon 103

B ả ng 51: Mô t ả chi ti ế t b ả ng courses 104

B ả ng 52: Mô t ả chi ti ế t b ả ng courses_paid 105

B ả ng 53: Mô t ả chi ti ế t b ả ng Courses Video 105

B ả ng 54: Mô t ả chi ti ế t b ả ng Note 106

B ả ng 55: Mô t ả chi ti ế t b ả ng Orders 106

B ả ng 56: Mô t ả chi ti ế t b ả ng Order Detail 107

B ả ng 57: Mô t ả chi t ế t b ả ng Payment 108

B ả ng 58: Mô t ả chi ti ế t b ả ng Register_Teacher_Form 108

B ả ng 59: Mô t ả chi ti ế t b ả ng ResourceCourses 109

B ả ng 60: Mô t ả chi ti ế t b ả ng reviews 109

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

B ả ng 61: Mô tả chi tiết b ảng role 109

B ả ng 62: Mô t ả chi ti ế t b ả ng token 110

B ả ng 63: Mô t ả chi ti ế t b ả ng Announcement 110

B ả ng 64: Mô t ả chi ti ế t b ả ng course_summary_info_register 111

B ả ng 65: Mô t ả chi ti ế t b ả ng discuss 112

B ả ng 66: Mô t ả chi ti ế t b ả ng learning_process 113

B ả ng 67: Mô t ả chi ti ế t b ả ng learning_process_learned_lectures 114

B ả ng 68: Mô t ả chi ti ế t b ả ng lectures 114

B ả ng 69: Mô t ả chi ti ế t b ả ng quiz_answer 115

B ả ng 70: Mô t ả chi ti ế t b ả ng quiz_question 116

B ả ng 71: Mô t ả chi ti ế t b ả ng quiz_stat 116

B ả ng 72: Mô t ả chi ti ế t b ả ng register_chapter 117

B ả ng 73: Mô t ả chi ti ế t b ả ng register_course_session 118

B ả ng 74: Mô t ả chi ti ế t b ả ng register_lectures 119

B ả ng 75: Mô t ả chi ti ế t b ả ng reviewer_role 120

B ả ng 76: Mô t ả chi ti ế t b ả ng teacher_profile 120

B ả ng 77: Mô t ả chi ti ế t b ả ng wish_list 121

B ả ng 78: Mô t ả trang đăng nhậ p 122

B ả ng 79: Mô t ả trang quên m ậ t kh ẩ u 123

B ả ng 81: Mô t ả trang qu ả n lý khoá h ọ c 125

B ả ng 82: Mô t ả giao di ệ n trang ch ỉ nh s ử a khoá h ọ c 127

B ả ng 83: Mô t ả trang thêm m ớ i chapter 129

B ả ng 84: Mô t ả trang ch ỉ nh s ử a bài h ọ c 130

B ả ng 85: Mô t ả giao di ệ n trang qu ả n lý yêu c ầ u phê duy ệ t khoá h ọ c 131

B ả ng 86: Mô t ả chi ti ết trang đăng ký khoá họ c m ớ i 132

B ả ng 87: Mô t ả chi ti ế t trang qu ả n lý bình lu ậ n 134

B ả ng 88: Mô t ả chi ti ế t trang thêm m ớ i bình lu ậ n 135

B ả ng 89: Mô t ả chi ti ế t trang qu ản lý đơn hàng 136

B ả ng 90: Mô t ả chi ti ế t trang qu ả n lý coupon 136

B ả ng 91: Mô t ả chi ti ế t trang thêm m ớ i và s ử a coupon 137

B ả ng 92: Mô t ả chi ti ế t trang qu ả n lý thông tin tài kho ả n 138

B ả ng 93: Mô t ả chi ti ết trang thay đổ i m ậ t kh ẩ u 139

B ả ng 94: Mô t ả chi ti ế t trang qu ả n lý khóa h ọ c 140

B ả ng 95: Mô t ả chi ti ế t trang thêm m ớ i và s ử a lo ạ i khóa h ọ c 141

B ả ng 96: Mô t ả chi ti ế t trang qu ản lý phương thứ c thanh toán 142

B ả ng 97: Mô t ả chi ti ế t trang thêm m ớ i và ch ỉ nh s ửa phương thứ c thanh toán 143

B ả ng 98: Mô t ả chi ti ế t trang phê duy ệ t yêu c ầ u tr ở thành gi ả ng viên 144

B ả ng 99: Mô t ả chi ti ế t trang qu ản lý ngườ i ki ể m duy ệ t 145

B ả ng 100: Mô t ả chi ti ế t trang thêm m ới ngườ i ki ể m duy ệ t 146

B ả ng 101: Mô t ả chi ti ết trang đăng nhậ p 147

B ả ng 102: Mô t ả chi ti ết trang đăng ký tài khoả n 148

B ả ng 103: Mô t ả chi ti ế t trang quên m ậ t kh ẩ u 149

B ả ng 104: Mô t ả chi ti ế t Header 150

B ả ng 105: Mô t ả chi ti ế t Banner 151

B ả ng 106: Mô t ả chi ti ế t top 4 khóa h ọ c 151

B ả ng 107: Mô t ả chi ti ết ngườ i t ạ o web 152

B ả ng 108: Mô t ả chi ti ế t Footer 153

B ả ng 109: Mô t ả chi ti ế t trang danh sách khóa h ọ c 154

B ả ng 110: Mô t ả chi ti ế t trang chi ti ế t khóa h ọ c 155

B ả ng 111: Mô t ả chi ti ế t trang phòng h ọ c 156

B ả ng 112: Mô t ả chi ti ế t ch ức năng note trong khóa họ c 157

B ả ng 113: Mô t ả chi ti ế t ch ức năng hỏi đáp 158

B ả ng 114: Mô t ả chi ti ế t ch ức năng phả n h ồ i câu h ỏ i 159

B ả ng 115: Mô t ả chi ti ế t ch ức năng tạ o l ị ch h ọ c 160

B ả ng 116: Mô t ả chi ti ế t ch ức năng hiể n th ị thông báo c ủ a gi ả ng viên 161

B ả ng 117: Mô t ả chi ti ế t ch ức năng hỏi đáp vớ i AI 162

B ả ng 118: Mô t ả chi ti ế t trang thông tin cá nhân 163

B ả ng 119: Mô t ả chi ti ế t trang l ị ch s ử mua hàng 164

B ả ng 120: Mô t ả chi ti ế t trang danh sách gi ả ng viên 165

B ả ng 121: Mô t ả chi ti ế t trang chi ti ế t gi ả ng viên 166

B ả ng 122: Mô t ả chi ti ế t trang gi ỏ hàng 167

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

B ả ng 123: Mô t ả chi ti ế t trang khóa h ọ c c ủ a tôi 168

B ả ng 124: Các ph ầ n m ề n c ần cài đặ t 170

B ả ng 125: Ki ể m th ử ch ức năng đăng nhậ p v ới trườ ng h ợp không điề n username 175

B ả ng 126: Ki ể m th ử ch ức năng đăng nhậ p v ới trườ ng h ợ p username không có trong h ệ th ố ng 176

B ả ng 127: Ki ể m th ử ch ức năng đăng nhậ p v ới trườ ng h ợp password không đúng 177

B ả ng 128: : Ki ể m th ử ch ức năng đăng nhập trườ ng h ợ p d ữ li ệu đúng 178

B ả ng 129: Ki ể m th ử ch ức năng đăng ký với username đã có t rên th ệ th ố ng 179

B ả ng 130: Ki ể m th ử ch ức năng đăng ký vớ i b ộ d ữ li ệu đúng 180

B ả ng 131: Ki ể m th ử ch ức năng tìm kiế m khóa h ọ c 181

B ả ng 132: Ki ể m th ử ch ức năng thay đổ i ảnh đạ i di ệ n 182

B ả ng 133: Ki ể m th ử ch ức năng thanh toán 183

B ả ng 134: Ki ể m th ử ch ức năng thanh toán với trườ ng h ợ p không ch ọ n s ả n ph ẩ m nào trong gi ỏ hàng 184

B ả ng 135: Ki ể m th ử ch ức năng xóa sả n ph ẩ m kh ỏ i gi ỏ hàng 185

B ả ng 136: Ki ể m th ử ch ức năng thêm sả n ph ẩ m vào gi ỏ hàng 186

B ả ng 137: Ki ể m th ử ch ức năng thêm sả n ph ẩ m vào gi ỏ hàng trườ ng h ợ p s ả n ph ẩm đã có trong gi ỏ hàng 187

B ả ng 138: Ki ể m th ử ch ức năng đánh giá khóa học đã mua 188

B ả ng 139: Ki ể m th ử ch ức năng đánh giá khóa học đã mua 189

B ả ng 140: Ki ể m th ử ch ức năng xóa đánh giá 190

B ả ng 141: Ki ể m th ử ch ức năng thêm vào danh sách yêu thích 191

B ả ng 142: Ki ể m th ử ch ức năng xóa khóa họ c kh ỏ i danh sách yêu thích 192

B ả ng 143: Ki ể m th ử ch ức năng thêm ghi chú 193

B ả ng 144: Ki ể m th ử ch ức năng xóa ghi chú 194

B ả ng 145: Ki ể m th ử ch ức năng thêm câu hỏ i 195

B ả ng 146: Ki ể m th ử ch ức năng xóa câu hỏ i 196

B ả ng 147: Ki ể m th ử ch ức năng trả l ờ i câu h ỏ i 197

B ả ng 148: Ki ể m th ử ch ức năng hỏ i đáp vớ i AI 199

B ả ng 149: Ki ể m th ử ch ức năng đánh dấ u hoàn thành bài h ọ c 200

B ả ng 150: Ki ể m th ử ch ức năng bỏ đánh dấ u hoàn thành bài h ọ c 201

B ả ng 151: Ki ể m th ử ch ức năng gử i yêu c ầ u tr ở thành gi ả ng viên 202

B ả ng 152: Ki ể m th ử ch ức năng duyệ t yêu c ầ u tr ở thành gi ả ng viên 204

B ả ng 153: Ki ể m th ử ch ức năng đăng ký tạ o khóa h ọ c 205

B ả ng 154: Ki ể m th ử ch ức năng phê duyệ t khóa h ọc trườ ng h ợ p khóa h ọ c c ầ n ch ỉ nh s ử a l ại để đượ c duy ệ t 206

B ả ng 155: Ki ể m th ử ch ức năng đăng ký tạ o khóa h ọc trườ ng h ợp đã đượ c yêu c ầ u ch ỉ nh s ửa để đượ c phê duy ệ t 207

B ả ng 156: Ki ể m th ử ch ức năng phê duyệ t khóa h ọc trườ ng h ợ p khóa h ọc đượ c phép duy ệ t 209

B ả ng 157: Ki ể m th ử ch ức năng phê duyệ t khóa h ọc trườ ng h ợ p khóa h ọ c b ị t ừ ch ố i 210

B ả ng 158: Ki ể m th ử ch ức năng xóa khóa họ c 211

B ả ng 159: Ki ể m th ử ch ức năng chỉ nh s ử a khóa h ọc trườ ng h ợ p s ửa trườ ng public 212

B ả ng 160: Ki ể m th ử ch ức năng chỉ nh s ử a khóa h ọc trườ ng h ợ p s ửa trườ ng public 213

B ả ng 161: Ki ể m th ử ch ức năng thay đổ i th ứ t ự chapter trong khóa h ọ c 214

B ả ng 162: Ki ể m th ử ch ức năng thêm mớ i bài h ọc trườ ng h ợ p bài h ọ c là video 215

B ả ng 163: Ki ể m th ử ch ức năng thê m m ớ i bài h ọc trườ ng h ợ p bài h ọ c là quiz 217

B ả ng 164: Ki ể m th ử ch ức năng xóa bài họ c 219

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

DANH MỤC CÁC TỪ VIẾT TẮT

STT Từ viết tắt Ý nghĩa

4 CORS Cross-origin resource sharing

5 CSRF Cross-site Request Forgery

8 RDMS Relational Database Management System

9 CSDL Cơ sở dữ liệu

11 HAMC A hashed message authentication code

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

Hiện nay, việc xây dựng và ứng dụng công nghệ thông tin vào đời sống đã trở thành mục tiêu cấp thiết của toàn xã hội Bởi nó không chỉ giúp đẩy nhanh tốc độ phát triển của xã hội mà còn góp phần khắc phục những khó khăn về khoảng cách, nhân lực và hiệu năng Đặc biệt trong thời buổi dịch bệnh Covid hiện nay, việc ứng dụng công nghệ thông tin vào đời sống còn góp phần hạn chế dịch bệnh Tuy nhiên, vẫn còn nhiều khó khăn, bất cập trong việc đưa công nghệ thông tin vào từng mảng của đời sống cũng như trong kết nối giữa người cung và người cầu Nắm bắt được điều đó, nhóm chọn nghiên cứu đề tài “Xây dựng website kinh doanh khóa học online” Với đề tài, nhóm hy vọng vừa góp phần thúc đẩy việc phát triển công nghệ thông tin vừa tạo ra một trang web giúp kết nối giữa người bán và người mua Đây sẽ là nơi, mà người mua được quyền xem xét, lựa chọn những khóa học online mà mình cần thiết mà không cần phải qua trung gian người tư vấn nào cả Còn người bán sẽ có cơ hội giới thiệu về những ưu điểm của khóa học cung cấp, cách thức liên hệ, ưu đãi, … Mà không cần tốn phí cho c ác tr ang quảng cáo Đặc biệt, nhóm mong rằng trang web này sẽ phát thêm một tín hiệu tích cực trong việc đưa người Việt Nam đến việc học online một cách dễ dàng và hiệu quả hơn.

2 ĐỐI TƯỢ NG NGHIÊN C Ứ U Đối với đề tài này, đối tượng nghiên cứu dựa trên nhu cầu học tập mọi lúc, mọi nơi của người dùng, không bị giới hạn về thời gian cũng như địa điểm, chỉ cần thiết bị thông minh có thể truy cập được Internet là có thể học được Đồng thời, đề tài cũng nghiên cứu các công nghệ để hoàn thiện sản phẩm một cách hoàn chỉnh nhất, bao gồm:

- Spring Boot kết hợp với Spring Security, Spring Data JPA để xây dựng phần server cho website

- Thư viện ReactJS để thiết kế và xây dựng giao diện cho người dùng.

- Cơ sở dữ liệu MySQL để lưu trữ dữ liệu cho hệ thống.

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

- JSON Web Token (JWT) để làm lớp bảo mật cho hệ thống Để gọi đến các API có yêu cầu xác thực, ứng dụng phải cung cấp JWT trong header của request.

- AWS S3 Bucket để lưu trữ các video khóa học, tài liệu và hình ảnh.

Trong đề tài tiểu luận chuyên ngành, chủ yếu tập trung vào xử lý nghiệp vụ của một trang web chuyên kinh doanh các khóa học online như: xem và tìm kiếm các khóa học, mua khóa học và cho phép người dùng học trực tiếp trên trang web cũng như các tính năng bổ trợ cho việc học như tạo ghi chú, tạo các bình luận để thảo luận bên dưới các video của khóa học, trao đổi thông tin với chatbot sử dụng ChatGPT, thêm lịch nhắc học và thanh toán, kiểm tra các khóa học đã mua.

Phần quản trị sẽ tập trung vào các nghiệp vụ như quản lý sản phẩm, quản lý các khóa học, giáo viên trên hệ thống, quản lý doanh thu, duyệt nội dung khóa học đăng ký mới, xử lý các yêu cầu trở thành giảng viên của người dùng,

Trong quá trình hoàn thiện đề tài, nhóm thực hiện đã đặt ra những mục tiêu sau:

- Xây dựng một trang kinh doanh khóa học online với những chức năng cơ bản cho người dùng và giáo viên của các khóa học.

- Xây dựng được giao diện thân thiện với người sử dụng, dễ sử dụng và thao tác

- Áp dụng được các hình thức thanh toán như VNPAY vào hệ thống website

- Áp dụng được dịch vụ AWS S3 để lưu trữ dữ liệu cho hệ thống

5 Ý NGHĨA KHOA HỌ C VÀ TH Ự C TI Ễ N Đề tài hướng đến khả năng tiếp thu, nâng cao kỹ năng lập trình, nghiên cứu công nghệ mới và đáp ứng nhu cầu học online của người dùng Mục đích giúp tạo ra một hệ thống có thể giúp cho việc học tập thông qua Internet trở nên ngày càng thuận lời Đồng thời, cung cấp một nơi kết nối các giảng viên , cùng chia sẻ các kiến thức trên nhiều lĩnh vực

PH Ầ N N Ộ I DUNG CHƯƠNG 1: CƠ SỞ LÝ THUY Ế T

Spring Boot là m ột extension của Spring Framework giúp loại bỏ các bước cấu hình phức tạp mà Spring bắt buộc Spring Boot là dự án phát triển bởi ngôn ngữ Java và được dùng để phát triển các ứng dụng thuộc dạng stand -alone và production-grade

1.1.2 Kiến trúc và cách hoạt động của Spring Boot

Spring Boot tuân theo kiến trúc phân lớp, trong đó mỗi lớp giao tiếp với lớp ngay bên dưới hoặc bên trên của nó.

Presentation Layer : Đây là tầng trên cùng của một ứng dụng Spring Boot, nó được sử dụng để xử lý các HTTP request, xác thực, chuyển đổi các JSON sang Java Object và ngược lại.

Business Layer : Layer này chịu trách nhiệm xử lý các nghiệp vụ của dự án, thực hiện các lệnh kiểm tra để đảm bảo tính đúng đắng của dự liệu, logic, etc.

Persistence Layer: Nó bao gồm tất cả các xử lý về thao tác với database như lưu trữ, cập nhật, truy vấn hoặc xoá dữ liệu.

Database Layer: Nó có thể bao gồm nhiều cơ sở dữ liệu, nghĩa là một thao tác với dữ liệu có thể đồng bộ với nhiều database server khác nhau

Hình 1: Ki ế n trúc phân l ớ p c ủ a SpringBoot

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Kiến trúc Spring Boot dựa trên Spring framework Vì vậy, nó chủ yếu sử dụng tất cả các tính năng và module của Spring MVC, Spring Core, v.v.,

Khi có một HTTP request đến server, Controller sẽ xử lý và gọi các Service tương ứng để xử lý business.

T rong Service Layer sẽ bao gồm tất cả các xử lý về business logic, thao tác với dữ liệu thông qua các Repository và ánh xạ dữ liệu từ database sang model class

- Phát triển các ứng dụng dựa trên Spring một cách tiết kiệm thời gian và dễ dàng.

- Tự động cấu hình tất cả các components cho một ứng dụng Spring

- Các máy chủ nhúng được tạo sẵn (Tomcat, Jetty và Undertow), dẫn đến việc triển khai ứng dụng được tăng tốc và hiệu quả hơn.

- Không có cấu hình XML.

- Nhiều lựa chọn bổ sung, hỗ trợ nhà phát triển làm việc với cơ sở dữ liệu được nhúng vào trong bộ nhớ.

- Dễ dàng truy cập cơ sở dữ liệu và các dịch vụ hàng đợi như MySQL, Oracle, MongoDB, Redis, ActiveMQ và các dịch vụ khác.

- Có nhiều plugins để phát triển bằng các công cụ như Maven hoặc Gradl e

Bên cạnh những ưu điểm trên, thì Spring Boot vẫn có một số các nhược điểm như:

- Spring Boot tạo ra nhiều phụ thuộc không được sử dụng dẫn đến kích thước tệp triển khai lớn.

- Quá trình chuyển đổi các dự án Spring cũ hoặc dự án Spring hiện có thành các ứng dụng Spring Boot nhiều khó khăn và tốn thời gian.

Spring Security là một trong những core feature quan trọng của Spring Framework, giúp phân quyền và xác thực người dùng trước khi cho phép họ truy cập và o các tài nguyên của hệ thống.

1.2.2 Cơ chế ho ạt độ ng c ủ a Spring Security

Mỗi request vào hệ thống sẽ được trải qua một tập các Filter, tập các filter này được quản lý bởi một springSecurityFilterChain Bản chất fillterProxy này giữ một tập các filter đã được định nghĩa trước và lần lượt cho request đi qua từng filter một

Hình 3: Cơ chế ho ạt độ ng c ủ a Spring Security

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Với mỗi Filter, sẽ có một authenticationProvider phù hợp tương ứng Mỗi AuthenticationProvider sẽ chịu trách nhiệm cho một phương cách xác thực của hệ thống

AuthentionProvider sẽ kết hợp với userDetailsService của hệ thống để lấy ra các thông tin liên quan đến User bao gồm các thông tin cơ bản và thông tin mang tính phần quyền của user Các thông tin này được gói gọn lại trong một cài đặt cụ thể của

CÀI ĐẶ T VÀ KI Ể M TH Ử

KI Ể M TH Ử PH Ầ N M Ề M

STT Thời gian thực hiện Công việc Ghi chú

Thiết kế usecase và mô hình hóa yêu cầu

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

Tìm hiểu thư viện ReactJS, Material UI Tìm hiểu framework Spring Boot Tìm hiểu Spring Security, JWT

Tiến hành tổ chức cấu trúc project Xây dựng các tables của cơ sở dử liệu

Tạo các Entities trong Spring Boot và mapping với cơ sở dữ liệu

Xây dựng API cho các chức năng cơ bản dành cho người dùng có phân quyền là User

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Tp Hồ Chí Minh, ngày tháng năm 2023 Ý 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)

Xây dựng Giao diện người dùng cho hệ thống

Kết hợp các phần đã xây dựng (giao diện, APIs, database)

Xây dựng giao diện cho trang Admin

Tiến hàng tạo các APIs cho Admin

Xây dựng chức năng nâng cao là các tool học tập cho người dùng Tiến hàng code tính năng cho phép có thêm bài Test, file bài giảng cho các khoá học

Xây dựng tính năng quản lý khoá học cho giảng viên

Xây dựng tính năng phê duyệt khoá học, đăng ký khoá học mới

Tìm hiểu quá trình deploy sản phẩm

Viết script CI/CD Tìm hiểu AWS CloudFront

Tiến hành deploy sản phẩm

9 16/06/2023 – 21/06/2023 Kiểm thử chương trình và tiến hành sửa lỗi

10 22/06/2023 – 07/07/2023 Viết và hoàn thiện báo cáo

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

5 Ý NGHĨA KHOA HỌ C VÀ TH Ự C TI Ễ N 2

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

1.1.2 Kiến trúc và cách hoạt động của Spring Boot 3

1.2.2 Cơ chế ho ạt độ ng c ủ a Spring Security 5

1.3.2 Cách ho ạt độ ng c ủ a MYSQL 6

1.4.2 Cách ho ạt độ ng c ủ a RESTFUL API 8

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

1.7.3 Ưu và nhược điể m c ủ a ReactJS 11

CHƯƠNG 2: KHẢ O SÁT HI Ệ N TR Ạ NG VÀ MÔ HÌNH HÓA YÊU C Ầ U 16

2.1 KH Ả O SÁT HI Ệ N TR Ạ NG 16

2.1.2 Yêu c ầ u bài toán c ủa đề tài 18

2.2.2 Yêu c ầ u phi ch ức năng 20

3.1.2 Mô t ả chi ti ế t b ả ng d ữ li ệ u 100

3.2.1 Giao di ệ n cho Admin và Teacher 122

4.1.2 Giao di ện cho ngườ i dùng (Student, Teacher) 147

CHƯƠNG 4: CÀI ĐẶ T VÀ KI Ể M TH Ử 170

4.1.1 Cài đặ t ứ ng d ụng, thư việ n c ầ n thi ế t 170

4.2.4 Các trườ ng h ợ p ki ể m th ử 175

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Hình 1: Ki ế n trúc phân l ớ p c ủ a SpringBoot 3

Hình 3: Cơ chế ho ạt độ ng c ủ a Spring Security 5

Hình 6: T ổ ch ứ c d ữ li ệ u trên AWS S3 10

Hình 7: Giao di ệ n website kh ả o sát Unica 16

Hình 8: Giao di ệ n Website kh ả o sát F8 – H ọ c l ập trình để đi làm 17

Hình 9: Use Case cho Admin 21

Hình 10: Use Case cho Teacher 22

Hình 11: Use Case cho ngườ i có phân quy ề n là Reviewer 22

Hình 12: Use Case cho ngườ i có phân quy ề n là User 23

Hình 13: : Sequence Diagram cho ch ức năng gử i yêu c ầ u duy ệ t khoá h ọ c m ớ i 24

Hình 14: Sequence Diagram thêm lo ạ i khoá h ọ c m ớ i 26

Hình 15: Sequence Diagram ch ức năng thêm mớ i mã khuy ế n mãi 28

Hình 16: Sequence Diagram ch ức năng cậ p nh ậ t thông tin mã khuy ế n mãi 30

Hình 17: Sequence Diagram xem l ị ch s ử đơn hàng 32

Hình 18: Sequence Diagram ch ức năn g g ử i k ế t qu ả phê duy ệ t yêu c ầ u tr ở thành gi ả ng viên 33

Hình 19: Sequence Diagram cho ch ức năng thêm khoá họ c vào gi ỏ hàng 35

Hình 20: Sequence Diagram đánh giá khoá học đã mua 36

Hình 21: Sequence Diagram ch ức năng đă ng xu ấ t 38

Hình 22: Sequence Diagram ch ức năng đăng nhậ p 39

Hình 23: Sequence Diagram ch ức năng đăng ký tài khoả n 41

Hình 24: Sequence Diagram ch ức năng thanh toán 43

Hình 25: Sequence Diagram ch ức năng xem đánh giá khoá họ c 46

Hình 26: Sequence Diagram tìm ki ế m các khoá h ọ c 47

Hình 27: Sequence Diagram yêu c ầ u tr ở thành gi ả ng viên 49

Hình 28: Sequence Diagram xoá khoá h ọ c kh ỏ i gi ỏ hàng 51

Hình 29: Sequence Diagram ch ức năng trao đổ i thông tin v ớ i chatBot 52

Hình 30: Sequence Diagram t ạ o l ị ch nh ắ c h ẹ n h ọ c t ậ p 54

Hình 31: Sequence Diagram ch ức năng tạ o câu h ỏ i th ả o lu ậ n 55

Hình 32: Sequence Diagram ch ức năng xem danh sách bài giả ng 57

Hình 33: Sequence Diagram ch ức năng trả l ờ i th ả o lu ậ n trong bài h ọ c 59

Hình 34: Sequence Diagram ch ức năng xoá thả o lu ậ n trong bài gi ả ng 60

Hình 35: Sequence Diagram ch ức năn g xem thông báo t ừ gi ả ng viên 63

Hình 36:Sequence Diagram ch ức năng 64

Hình 37: Sequence Diagram thêm ghi chú cho bài gi ả ng 66

Hình 38: Sequence Diagram cho ch ức năng xoá ghi chú 68

Hình 39: Sequence Diagram ch ức năng thự c hi ệ n bài Test 70

Hình 40: Sequence Diagram ch ức năng đá nh d ấ u bài h ọ c là hoàn thành 72

Hình 41: Sequence Diagram ch ức năng bỏ đánh dầ u hoàn thành bài h ọ c 74

Hình 42: Sequence Diagram ch ức năng xem danh sách giả ng viên 76

Hình 43: Sequence Dìagram ch ức năng xem danh sách re viewers 77

Hình 44: Sequence Diagram ch ức năng xem bài giả ng 78

Hình 45:Sequence Diagram ch ức năng thêm khoá họ c vào danh sách yêu thích 80

Hình 46: Sequence Diagram ch ức năng xem danh sách khoá họ c yêu thích 81

Hình 47: Sequence Diagram xoá khoá h ọ c kh ỏ i danh sách yêu thích 82

Hình 48:Sequence Diagram ch ức năng xem danh sách yêu câu phê duyệ t tr ở thành gi ả ng viên 84

Hình 49: Sequence Diagram đăng ký account reviewer 86

Hình 50: Sequence Diagram ch ức năng xem danh sách reviewer 88

Hình 51: Sequence Diagram ch ức năng xem danh sách khoá học chưa đượ c duy ệ t 89

Hình 52: Sequence Diagram ch ức năng nhậ n task ki ể m duy ệ t 91

Hình 53: Sequence Diagram ch ức năng duyệ t yêu c ầ u t ạ o m ớ i khoá h ọ c 93

Hình 54: Sequence Diagram ch ức năng cậ p nh ậ t bài gi ả ng 95

Hình 55: Sequence Diagram xem danh sách mã khuy ế n mãi 97

Hình 57: Giao di ện trang đăng nhậ p 122

Hình 58: Giao di ệ n trang quên m ậ t kh ẩ u 123

Hình 59: Giao di ệ n trang Dashboard 124

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Hình 60: Giao di ệ n trang DashBoard th ể hi ệ n doanh thu 124

Hình 61: Giao di ệ n trang qu ả n lý khoá h ọ c 125

Hình 62: Giao di ệ n trang ch ỉ nh s ử a thông tin t ổ ng quan khoá h ọ c 127

Hình 63: Giao di ệ n trang ch ỉ nh s ử a n ộ i dung bài h ọ c 127

Hình 64: Giao di ệ n tr ạ ng thêm m ớ i chapter 129

Hình 65: Giao di ệ n trang ch ỉ nh s ử a bài h ọ c 130

Hình 66: Giao di ệ n trang qu ả n lý yêu c ầ u phê duy ệ t khoá h ọ c 131

Hình 67: Giao di ện trang đăng kí thông tin khoá họ c m ớ i 132

Hình 68: Giao di ện trang đăng ký nộ i dung khoá h ọ c m ớ i 132

Hình 69: Giao di ệ n trang xem l ạ i n ộ i dung khoá h ọ c m ớ i 132

Hình 70: Giao di ệ n trang qu ả n lý bình lu ậ n 134

Hình 71: Giao di ệ n trang thêm m ớ i bình lu ậ n 135

Hình 72: Giao di ệ n trang qu ản lý đơn hàng 135

Hình 73: Giao di ệ n trang qu ả n lý coupon 136

Hình 74: Giao di ệ n trang thêm m ớ i coupon 137

Hình 75: Giao di ệ n trang ch ỉ nh s ử a coupon 137

Hình 76: Giao di ệ n trang qu ả n lý thông tin tài kho ả n 138

Hình 77: Giao di ện trang thay đổ i m ậ t kh ẩ u 139

Hình 78: Giao di ệ n trang qu ả n lý khóa h ọ c 140

Hình 79: Giao di ệ n trang thêm m ớ i và s ử a lo ạ i khóa h ọ c 141

Hình 80: Giao di ệ n trang qu ản lý phương thứ c thanh toán 142

Hình 81: Giao di ệ n trang thêm m ớ i và ch ỉ nh s ửa phương thứ c thanh toán 143

Hình 82: Giao di ệ n trang phê duy ệ t yêu c ầ u tr ở thành gi ả ng viên 144

Hình 83: Giao di ệ n trang qu ản lý ngườ i ki ể m duy ệ t 145

Hình 84: Giao di ệ n trang thêm m ới ngườ i ki ể m duy ệ t 146

Hình 85: Giao di ện trang đăng nhậ p 147

Hình 86: Giao di ện trang đăng ký tài khoả n 148

Hình 87: Giao di ệ n trang quên m ậ t kh ẩ u 149

Hình 90: Giao di ệ n top 4 khóa h ọ c 151

Hình 91: Giao di ện ngườ i t ạ o web 152

Hình 93: Giao di ệ n trang danh sách khóa h ọ c 153

Hình 94: Giao di ệ n trang chi ti ế t khóa h ọ c 154

Hình 95: Giao di ệ n trang chi ti ế t khóa h ọ c 155

Hình 96: Giao di ệ n trang phòng h ọ c 156

Hình 97: Giao di ệ n ch ức năng note trong khóa họ c 157

Hình 98: Giao di ệ n ch ức năng hỏi đáp trong khóa họ c 158

Hình 99: Giao di ệ n ch ức năng phả n h ồ i câu h ỏ i 159

Hình 100: Giao di ệ n ch ức năng thêm lị ch h ọ c 160

Hình 101: Giao di ệ n ch ức năng hiể n th ị thông báo c ủ a gi ả ng viên 161

Hình 102: Giao di ệ n ch ức năng hỏi đáp vớ i AI 162

Hình 103: Giao di ệ n trang thông tin cá nhân 163

Hình 104: Giao di ệ n trang l ị ch s ử mua hàng 164

Hình 105: Giao di ệ n trang l ị ch s ử mua hàng 164

Hình 106: Giao di ệ n trang danh sách gi ả ng viên 165

Hình 107: Giao di ệ n trang chi ti ế t gi ả ng viên 166

Hình 108: Giao di ệ n trang gi ỏ hàng 167

Hình 109: Giao di ệ n trang khóa h ọ c c ủ a tôi (Tab khóa h ọc đã mua) 168

Hình 110: Giao di ệ n trang khóa h ọ c c ủ a tôi (Tab khóa h ọ c yêu thích) 168

Hình 111: C ấu trúc thư mụ c Front End (User) 172

Hình 112: C ấu trúc thư mụ c Front End (Admin, Teacher, Reviewer) 173

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

B ảng 1: Đặ c t ả UseCase g ử i yêu c ầ u phê duy ệ t khoá h ọ c m ớ i 24

B ảng 2: Đặ c t ả Use Case thêm lo ạ i khóa h ọ c 26

B ảng 3: Đặ c t ả Use Case thêm m ớ i mã khuy ế n mãi 28

B ảng 4: Đặ c t ả Use Case s ử a thông tin mã khuy ế n mãi 30

B ảng 5: Đặ c t ả Use Case xem l ị ch s ử đơn hàng 32

B ảng 6: Đặ c t ả Use Case ch ấ p nh ậ n yêu c ầ u tr ở thành gi ả ng viên 33

B ảng 7: Đặ c t ả Use Case thêm khoá h ọ c vào gi ỏ hàng 35

B ảng 8: Đặ c t ả Use Case đánh giá khóa học đã mua 36

B ảng 9: Đặ c t ả Use Case ch ức năng đăng xuấ t 38

B ảng 10: Đặ c t ả Use Case đăng nhậ p 39

B ảng 11: Đặ c t ả Use Case đăng ký tài khoả n 41

B ảng 12: Đặ c t ả Use Case thanh toán đơn hàng 43

B ảng 13: Đặ c t ả Use Case xem đánh giá khóa họ c 46

B ảng 14: Đặ c t ả Use Case ch ức năng tìm kiế m khoá h ọ c 47

B ảng 15: : Đặ c t ả Use Case yêu c ầ u tr ở thành gi ả ng viên 49

B ảng 16: Đặ c t ả UseCase xoá khoá h ọ c kh ỏ i gi ỏ hàng 51

B ảng 17: Đặ c t ả UseCase trao đổ i thông tin v ớ i ChatBot 52

B ảng 18: Đặ c t ả UseCase t ạ o l ị ch nh ắ c h ẹ n h ọ c t ậ p 54

B ảng 19: Đặ c t ả Use Case t ạ o câu h ỏ i th ả o lu ậ n 56

B ảng 20: Đặ c t ả Use ch ức năng xem danh sách t h ả o lu ậ n 57

B ảng 21 Đặ c t ả UseCase ch ứuc năng trả l ờ i th ả o lu ậ n 59

B ảng 22: Đặ c t ả Use Case ch ức năng xoá thả o lu ậ n trong bài gi ả ng 61

B ảng 23: Đặ c t ả Use Case xem thông báo t ừ gi ả ng viên 63

B ảng 24: Đặ c t ả UseCase ch ức năng xem danh sách ghi chú 64

B ảng 25: Đặ c t ả Use Case thêm ghi chú 66

B ảng 26: Đặ c t ả Usecase ch ức năng xoá ghi chú 68

B ảng 27: Đặ c t ả Use Case th ự c hi ệ n bài Quiz 70

B ảng 28: Đặ c t ả Use Case ch ức năng đánh dấ u hoàn thành bài h ọ c 73

B ả ng 29: Đặ c t ả Use Case b ỏ đánh dấ u hoàn thành khoá h ọ c 75

B ảng 30: Đặ c t ả Use case xem danh sách gi ả ng viên 76

B ảng 31: Đặ c t ả Use Case xem thông tin chi ti ế t gi ả ng viên 77

B ảng 32: Đặ c t ả Use Case xem bài gi ả ng 79

B ảng 33: Đặ c t ả Use Case năng thêm khoá họ c vào danh sách yêu thích 80

B ảng 34: Đặ c t ả UseCase ch ức năng xem danh sách khoá họ c yêu thích 81

B ảng 35: Đặ c t ả Use Case xoá khoá h ọ c kh ỏ i danh sách yêu thích 82

B ảng 36: Đặ c t ả Use Case xem danh sách yêu c ầ u phê duy ệ t thành gi ả ng viên 84

B ảng 37: Đặ c t ả Use Case đăng ký reviewer 86

B ảng 38: Đặ c t ả Use Case xem danh sách reviewer 88

B ảng 39: Đặ c t ả Use Case xem danh sách khoá h ọc chưa đưa duyệ t 89

B ảng 40: Đặ c t ả Use Case nh ậ n task ki ể m duy ệ t 91

B ảng 41: Đặ c t ả Use Case g ử i kêt qu ả yêu c ầ u duy ệ t khoá h ọ c 93

B ảng 42: Đặ c t ả Use Case c ậ p nh ậ t bài gi ả ng 95

B ảng 43; Đặ c t ả Use Case xem mã khuy ế n mãi 97

B ả ng 44: Mô t ả chi ti ế t b ả ng Account 100

B ả ng 45: Mô t ả chi ti ế t b ả ng UserDetail 100

B ả ng 46: Mô t ả chi ti ế t b ả ng Cart 101

B ả ng 47: Mô t ả chi ti ế t b ả ng Cart Detail 101

B ả ng 49: Mô t ả chi ti ế t b ả ng Chapters 102

B ả ng 50: Mô t ả chi ti ế t b ả ng Coupon 103

B ả ng 51: Mô t ả chi ti ế t b ả ng courses 104

B ả ng 52: Mô t ả chi ti ế t b ả ng courses_paid 105

B ả ng 53: Mô t ả chi ti ế t b ả ng Courses Video 105

B ả ng 54: Mô t ả chi ti ế t b ả ng Note 106

B ả ng 55: Mô t ả chi ti ế t b ả ng Orders 106

B ả ng 56: Mô t ả chi ti ế t b ả ng Order Detail 107

B ả ng 57: Mô t ả chi t ế t b ả ng Payment 108

B ả ng 58: Mô t ả chi ti ế t b ả ng Register_Teacher_Form 108

B ả ng 59: Mô t ả chi ti ế t b ả ng ResourceCourses 109

B ả ng 60: Mô t ả chi ti ế t b ả ng reviews 109

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

B ả ng 61: Mô tả chi tiết b ảng role 109

B ả ng 62: Mô t ả chi ti ế t b ả ng token 110

B ả ng 63: Mô t ả chi ti ế t b ả ng Announcement 110

B ả ng 64: Mô t ả chi ti ế t b ả ng course_summary_info_register 111

B ả ng 65: Mô t ả chi ti ế t b ả ng discuss 112

B ả ng 66: Mô t ả chi ti ế t b ả ng learning_process 113

B ả ng 67: Mô t ả chi ti ế t b ả ng learning_process_learned_lectures 114

B ả ng 68: Mô t ả chi ti ế t b ả ng lectures 114

B ả ng 69: Mô t ả chi ti ế t b ả ng quiz_answer 115

B ả ng 70: Mô t ả chi ti ế t b ả ng quiz_question 116

B ả ng 71: Mô t ả chi ti ế t b ả ng quiz_stat 116

B ả ng 72: Mô t ả chi ti ế t b ả ng register_chapter 117

B ả ng 73: Mô t ả chi ti ế t b ả ng register_course_session 118

B ả ng 74: Mô t ả chi ti ế t b ả ng register_lectures 119

B ả ng 75: Mô t ả chi ti ế t b ả ng reviewer_role 120

B ả ng 76: Mô t ả chi ti ế t b ả ng teacher_profile 120

B ả ng 77: Mô t ả chi ti ế t b ả ng wish_list 121

B ả ng 78: Mô t ả trang đăng nhậ p 122

B ả ng 79: Mô t ả trang quên m ậ t kh ẩ u 123

B ả ng 81: Mô t ả trang qu ả n lý khoá h ọ c 125

B ả ng 82: Mô t ả giao di ệ n trang ch ỉ nh s ử a khoá h ọ c 127

B ả ng 83: Mô t ả trang thêm m ớ i chapter 129

B ả ng 84: Mô t ả trang ch ỉ nh s ử a bài h ọ c 130

B ả ng 85: Mô t ả giao di ệ n trang qu ả n lý yêu c ầ u phê duy ệ t khoá h ọ c 131

B ả ng 86: Mô t ả chi ti ết trang đăng ký khoá họ c m ớ i 132

B ả ng 87: Mô t ả chi ti ế t trang qu ả n lý bình lu ậ n 134

B ả ng 88: Mô t ả chi ti ế t trang thêm m ớ i bình lu ậ n 135

B ả ng 89: Mô t ả chi ti ế t trang qu ản lý đơn hàng 136

B ả ng 90: Mô t ả chi ti ế t trang qu ả n lý coupon 136

B ả ng 91: Mô t ả chi ti ế t trang thêm m ớ i và s ử a coupon 137

B ả ng 92: Mô t ả chi ti ế t trang qu ả n lý thông tin tài kho ả n 138

B ả ng 93: Mô t ả chi ti ết trang thay đổ i m ậ t kh ẩ u 139

B ả ng 94: Mô t ả chi ti ế t trang qu ả n lý khóa h ọ c 140

B ả ng 95: Mô t ả chi ti ế t trang thêm m ớ i và s ử a lo ạ i khóa h ọ c 141

B ả ng 96: Mô t ả chi ti ế t trang qu ản lý phương thứ c thanh toán 142

B ả ng 97: Mô t ả chi ti ế t trang thêm m ớ i và ch ỉ nh s ửa phương thứ c thanh toán 143

B ả ng 98: Mô t ả chi ti ế t trang phê duy ệ t yêu c ầ u tr ở thành gi ả ng viên 144

B ả ng 99: Mô t ả chi ti ế t trang qu ản lý ngườ i ki ể m duy ệ t 145

B ả ng 100: Mô t ả chi ti ế t trang thêm m ới ngườ i ki ể m duy ệ t 146

B ả ng 101: Mô t ả chi ti ết trang đăng nhậ p 147

B ả ng 102: Mô t ả chi ti ết trang đăng ký tài khoả n 148

B ả ng 103: Mô t ả chi ti ế t trang quên m ậ t kh ẩ u 149

B ả ng 104: Mô t ả chi ti ế t Header 150

B ả ng 105: Mô t ả chi ti ế t Banner 151

B ả ng 106: Mô t ả chi ti ế t top 4 khóa h ọ c 151

B ả ng 107: Mô t ả chi ti ết ngườ i t ạ o web 152

B ả ng 108: Mô t ả chi ti ế t Footer 153

B ả ng 109: Mô t ả chi ti ế t trang danh sách khóa h ọ c 154

B ả ng 110: Mô t ả chi ti ế t trang chi ti ế t khóa h ọ c 155

B ả ng 111: Mô t ả chi ti ế t trang phòng h ọ c 156

B ả ng 112: Mô t ả chi ti ế t ch ức năng note trong khóa họ c 157

B ả ng 113: Mô t ả chi ti ế t ch ức năng hỏi đáp 158

B ả ng 114: Mô t ả chi ti ế t ch ức năng phả n h ồ i câu h ỏ i 159

B ả ng 115: Mô t ả chi ti ế t ch ức năng tạ o l ị ch h ọ c 160

B ả ng 116: Mô t ả chi ti ế t ch ức năng hiể n th ị thông báo c ủ a gi ả ng viên 161

B ả ng 117: Mô t ả chi ti ế t ch ức năng hỏi đáp vớ i AI 162

B ả ng 118: Mô t ả chi ti ế t trang thông tin cá nhân 163

B ả ng 119: Mô t ả chi ti ế t trang l ị ch s ử mua hàng 164

B ả ng 120: Mô t ả chi ti ế t trang danh sách gi ả ng viên 165

B ả ng 121: Mô t ả chi ti ế t trang chi ti ế t gi ả ng viên 166

B ả ng 122: Mô t ả chi ti ế t trang gi ỏ hàng 167

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

B ả ng 123: Mô t ả chi ti ế t trang khóa h ọ c c ủ a tôi 168

B ả ng 124: Các ph ầ n m ề n c ần cài đặ t 170

B ả ng 125: Ki ể m th ử ch ức năng đăng nhậ p v ới trườ ng h ợp không điề n username 175

B ả ng 126: Ki ể m th ử ch ức năng đăng nhậ p v ới trườ ng h ợ p username không có trong h ệ th ố ng 176

B ả ng 127: Ki ể m th ử ch ức năng đăng nhậ p v ới trườ ng h ợp password không đúng 177

B ả ng 128: : Ki ể m th ử ch ức năng đăng nhập trườ ng h ợ p d ữ li ệu đúng 178

B ả ng 129: Ki ể m th ử ch ức năng đăng ký với username đã có t rên th ệ th ố ng 179

B ả ng 130: Ki ể m th ử ch ức năng đăng ký vớ i b ộ d ữ li ệu đúng 180

B ả ng 131: Ki ể m th ử ch ức năng tìm kiế m khóa h ọ c 181

B ả ng 132: Ki ể m th ử ch ức năng thay đổ i ảnh đạ i di ệ n 182

B ả ng 133: Ki ể m th ử ch ức năng thanh toán 183

B ả ng 134: Ki ể m th ử ch ức năng thanh toán với trườ ng h ợ p không ch ọ n s ả n ph ẩ m nào trong gi ỏ hàng 184

B ả ng 135: Ki ể m th ử ch ức năng xóa sả n ph ẩ m kh ỏ i gi ỏ hàng 185

B ả ng 136: Ki ể m th ử ch ức năng thêm sả n ph ẩ m vào gi ỏ hàng 186

B ả ng 137: Ki ể m th ử ch ức năng thêm sả n ph ẩ m vào gi ỏ hàng trườ ng h ợ p s ả n ph ẩm đã có trong gi ỏ hàng 187

B ả ng 138: Ki ể m th ử ch ức năng đánh giá khóa học đã mua 188

B ả ng 139: Ki ể m th ử ch ức năng đánh giá khóa học đã mua 189

B ả ng 140: Ki ể m th ử ch ức năng xóa đánh giá 190

B ả ng 141: Ki ể m th ử ch ức năng thêm vào danh sách yêu thích 191

B ả ng 142: Ki ể m th ử ch ức năng xóa khóa họ c kh ỏ i danh sách yêu thích 192

B ả ng 143: Ki ể m th ử ch ức năng thêm ghi chú 193

B ả ng 144: Ki ể m th ử ch ức năng xóa ghi chú 194

B ả ng 145: Ki ể m th ử ch ức năng thêm câu hỏ i 195

B ả ng 146: Ki ể m th ử ch ức năng xóa câu hỏ i 196

B ả ng 147: Ki ể m th ử ch ức năng trả l ờ i câu h ỏ i 197

B ả ng 148: Ki ể m th ử ch ức năng hỏ i đáp vớ i AI 199

B ả ng 149: Ki ể m th ử ch ức năng đánh dấ u hoàn thành bài h ọ c 200

B ả ng 150: Ki ể m th ử ch ức năng bỏ đánh dấ u hoàn thành bài h ọ c 201

B ả ng 151: Ki ể m th ử ch ức năng gử i yêu c ầ u tr ở thành gi ả ng viên 202

B ả ng 152: Ki ể m th ử ch ức năng duyệ t yêu c ầ u tr ở thành gi ả ng viên 204

B ả ng 153: Ki ể m th ử ch ức năng đăng ký tạ o khóa h ọ c 205

B ả ng 154: Ki ể m th ử ch ức năng phê duyệ t khóa h ọc trườ ng h ợ p khóa h ọ c c ầ n ch ỉ nh s ử a l ại để đượ c duy ệ t 206

B ả ng 155: Ki ể m th ử ch ức năng đăng ký tạ o khóa h ọc trườ ng h ợp đã đượ c yêu c ầ u ch ỉ nh s ửa để đượ c phê duy ệ t 207

B ả ng 156: Ki ể m th ử ch ức năng phê duyệ t khóa h ọc trườ ng h ợ p khóa h ọc đượ c phép duy ệ t 209

B ả ng 157: Ki ể m th ử ch ức năng phê duyệ t khóa h ọc trườ ng h ợ p khóa h ọ c b ị t ừ ch ố i 210

B ả ng 158: Ki ể m th ử ch ức năng xóa khóa họ c 211

B ả ng 159: Ki ể m th ử ch ức năng chỉ nh s ử a khóa h ọc trườ ng h ợ p s ửa trườ ng public 212

B ả ng 160: Ki ể m th ử ch ức năng chỉ nh s ử a khóa h ọc trườ ng h ợ p s ửa trườ ng public 213

B ả ng 161: Ki ể m th ử ch ức năng thay đổ i th ứ t ự chapter trong khóa h ọ c 214

B ả ng 162: Ki ể m th ử ch ức năng thêm mớ i bài h ọc trườ ng h ợ p bài h ọ c là video 215

B ả ng 163: Ki ể m th ử ch ức năng thê m m ớ i bài h ọc trườ ng h ợ p bài h ọ c là quiz 217

B ả ng 164: Ki ể m th ử ch ức năng xóa bài họ c 219

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

DANH MỤC CÁC TỪ VIẾT TẮT

STT Từ viết tắt Ý nghĩa

4 CORS Cross-origin resource sharing

5 CSRF Cross-site Request Forgery

8 RDMS Relational Database Management System

9 CSDL Cơ sở dữ liệu

11 HAMC A hashed message authentication code

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

Hiện nay, việc xây dựng và ứng dụng công nghệ thông tin vào đời sống đã trở thành mục tiêu cấp thiết của toàn xã hội Bởi nó không chỉ giúp đẩy nhanh tốc độ phát triển của xã hội mà còn góp phần khắc phục những khó khăn về khoảng cách, nhân lực và hiệu năng Đặc biệt trong thời buổi dịch bệnh Covid hiện nay, việc ứng dụng công nghệ thông tin vào đời sống còn góp phần hạn chế dịch bệnh Tuy nhiên, vẫn còn nhiều khó khăn, bất cập trong việc đưa công nghệ thông tin vào từng mảng của đời sống cũng như trong kết nối giữa người cung và người cầu Nắm bắt được điều đó, nhóm chọn nghiên cứu đề tài “Xây dựng website kinh doanh khóa học online” Với đề tài, nhóm hy vọng vừa góp phần thúc đẩy việc phát triển công nghệ thông tin vừa tạo ra một trang web giúp kết nối giữa người bán và người mua Đây sẽ là nơi, mà người mua được quyền xem xét, lựa chọn những khóa học online mà mình cần thiết mà không cần phải qua trung gian người tư vấn nào cả Còn người bán sẽ có cơ hội giới thiệu về những ưu điểm của khóa học cung cấp, cách thức liên hệ, ưu đãi, … Mà không cần tốn phí cho c ác tr ang quảng cáo Đặc biệt, nhóm mong rằng trang web này sẽ phát thêm một tín hiệu tích cực trong việc đưa người Việt Nam đến việc học online một cách dễ dàng và hiệu quả hơn.

2 ĐỐI TƯỢ NG NGHIÊN C Ứ U Đối với đề tài này, đối tượng nghiên cứu dựa trên nhu cầu học tập mọi lúc, mọi nơi của người dùng, không bị giới hạn về thời gian cũng như địa điểm, chỉ cần thiết bị thông minh có thể truy cập được Internet là có thể học được Đồng thời, đề tài cũng nghiên cứu các công nghệ để hoàn thiện sản phẩm một cách hoàn chỉnh nhất, bao gồm:

- Spring Boot kết hợp với Spring Security, Spring Data JPA để xây dựng phần server cho website

- Thư viện ReactJS để thiết kế và xây dựng giao diện cho người dùng.

- Cơ sở dữ liệu MySQL để lưu trữ dữ liệu cho hệ thống.

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

- JSON Web Token (JWT) để làm lớp bảo mật cho hệ thống Để gọi đến các API có yêu cầu xác thực, ứng dụng phải cung cấp JWT trong header của request.

- AWS S3 Bucket để lưu trữ các video khóa học, tài liệu và hình ảnh.

Trong đề tài tiểu luận chuyên ngành, chủ yếu tập trung vào xử lý nghiệp vụ của một trang web chuyên kinh doanh các khóa học online như: xem và tìm kiếm các khóa học, mua khóa học và cho phép người dùng học trực tiếp trên trang web cũng như các tính năng bổ trợ cho việc học như tạo ghi chú, tạo các bình luận để thảo luận bên dưới các video của khóa học, trao đổi thông tin với chatbot sử dụng ChatGPT, thêm lịch nhắc học và thanh toán, kiểm tra các khóa học đã mua.

Phần quản trị sẽ tập trung vào các nghiệp vụ như quản lý sản phẩm, quản lý các khóa học, giáo viên trên hệ thống, quản lý doanh thu, duyệt nội dung khóa học đăng ký mới, xử lý các yêu cầu trở thành giảng viên của người dùng,

Trong quá trình hoàn thiện đề tài, nhóm thực hiện đã đặt ra những mục tiêu sau:

- Xây dựng một trang kinh doanh khóa học online với những chức năng cơ bản cho người dùng và giáo viên của các khóa học.

- Xây dựng được giao diện thân thiện với người sử dụng, dễ sử dụng và thao tác

- Áp dụng được các hình thức thanh toán như VNPAY vào hệ thống website

- Áp dụng được dịch vụ AWS S3 để lưu trữ dữ liệu cho hệ thống

5 Ý NGHĨA KHOA HỌ C VÀ TH Ự C TI Ễ N Đề tài hướng đến khả năng tiếp thu, nâng cao kỹ năng lập trình, nghiên cứu công nghệ mới và đáp ứng nhu cầu học online của người dùng Mục đích giúp tạo ra một hệ thống có thể giúp cho việc học tập thông qua Internet trở nên ngày càng thuận lời Đồng thời, cung cấp một nơi kết nối các giảng viên , cùng chia sẻ các kiến thức trên nhiều lĩnh vực

PH Ầ N N Ộ I DUNG CHƯƠNG 1: CƠ SỞ LÝ THUY Ế T

Spring Boot là m ột extension của Spring Framework giúp loại bỏ các bước cấu hình phức tạp mà Spring bắt buộc Spring Boot là dự án phát triển bởi ngôn ngữ Java và được dùng để phát triển các ứng dụng thuộc dạng stand -alone và production-grade

1.1.2 Kiến trúc và cách hoạt động của Spring Boot

Spring Boot tuân theo kiến trúc phân lớp, trong đó mỗi lớp giao tiếp với lớp ngay bên dưới hoặc bên trên của nó.

Presentation Layer : Đây là tầng trên cùng của một ứng dụng Spring Boot, nó được sử dụng để xử lý các HTTP request, xác thực, chuyển đổi các JSON sang Java Object và ngược lại.

Business Layer : Layer này chịu trách nhiệm xử lý các nghiệp vụ của dự án, thực hiện các lệnh kiểm tra để đảm bảo tính đúng đắng của dự liệu, logic, etc.

Persistence Layer: Nó bao gồm tất cả các xử lý về thao tác với database như lưu trữ, cập nhật, truy vấn hoặc xoá dữ liệu.

Database Layer: Nó có thể bao gồm nhiều cơ sở dữ liệu, nghĩa là một thao tác với dữ liệu có thể đồng bộ với nhiều database server khác nhau

Hình 1: Ki ế n trúc phân l ớ p c ủ a SpringBoot

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Kiến trúc Spring Boot dựa trên Spring framework Vì vậy, nó chủ yếu sử dụng tất cả các tính năng và module của Spring MVC, Spring Core, v.v.,

Khi có một HTTP request đến server, Controller sẽ xử lý và gọi các Service tương ứng để xử lý business.

T rong Service Layer sẽ bao gồm tất cả các xử lý về business logic, thao tác với dữ liệu thông qua các Repository và ánh xạ dữ liệu từ database sang model class

- Phát triển các ứng dụng dựa trên Spring một cách tiết kiệm thời gian và dễ dàng.

- Tự động cấu hình tất cả các components cho một ứng dụng Spring

- Các máy chủ nhúng được tạo sẵn (Tomcat, Jetty và Undertow), dẫn đến việc triển khai ứng dụng được tăng tốc và hiệu quả hơn.

- Không có cấu hình XML.

- Nhiều lựa chọn bổ sung, hỗ trợ nhà phát triển làm việc với cơ sở dữ liệu được nhúng vào trong bộ nhớ.

- Dễ dàng truy cập cơ sở dữ liệu và các dịch vụ hàng đợi như MySQL, Oracle, MongoDB, Redis, ActiveMQ và các dịch vụ khác.

- Có nhiều plugins để phát triển bằng các công cụ như Maven hoặc Gradl e

Bên cạnh những ưu điểm trên, thì Spring Boot vẫn có một số các nhược điểm như:

- Spring Boot tạo ra nhiều phụ thuộc không được sử dụng dẫn đến kích thước tệp triển khai lớn.

- Quá trình chuyển đổi các dự án Spring cũ hoặc dự án Spring hiện có thành các ứng dụng Spring Boot nhiều khó khăn và tốn thời gian.

Spring Security là một trong những core feature quan trọng của Spring Framework, giúp phân quyền và xác thực người dùng trước khi cho phép họ truy cập và o các tài nguyên của hệ thống.

1.2.2 Cơ chế ho ạt độ ng c ủ a Spring Security

Mỗi request vào hệ thống sẽ được trải qua một tập các Filter, tập các filter này được quản lý bởi một springSecurityFilterChain Bản chất fillterProxy này giữ một tập các filter đã được định nghĩa trước và lần lượt cho request đi qua từng filter một

Hình 3: Cơ chế ho ạt độ ng c ủ a Spring Security

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Với mỗi Filter, sẽ có một authenticationProvider phù hợp tương ứng Mỗi AuthenticationProvider sẽ chịu trách nhiệm cho một phương cách xác thực của hệ thống

AuthentionProvider sẽ kết hợp với userDetailsService của hệ thống để lấy ra các thông tin liên quan đến User bao gồm các thông tin cơ bản và thông tin mang tính phần quyền của user Các thông tin này được gói gọn lại trong một cài đặt cụ thể của

ƯU ĐIỂ M

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

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

Giáo viên hướng dẫn(Ký & ghi rõ họ tên) ĐH SƯ PHẠM KỸ THUẬT TP HCM

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ẢNG VIÊN PHẢN BIỆN

H ọ và tên Sinh viên 1: Nguy ễ n Phúc Thanh Toàn MSSV 1: 19110479

H ọ và tên Sinh viên 2: Nguy ễ n Ng ọ c Trung MSSV 2: 19110490

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

Tên đề tài: Xây dựng website kinh doanh khoá học online

Họ và tên Giảng viên phản biện: ThS Mai Anh Thơ

1 Về nội dung đề tài và khối lượng thực hiện:

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

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

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

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Lời đầu tiên nhóm xin phép được gửi lời cảm ơn chân thành và sâu sắc nhất đến với Khoa Công Nghệ Thông Tin – 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 được học tập, phát triển nền tảng kiến thức sâu sắc và thực hiện đề tài này.

Bên cạnh đó nhóm thực hiện xin gửi đến thầy Nguyễn Minh Đạo lời cảm ơn sâu sắc nhất Trải qua một quá trình dài học tập và thực hiện đề tài trong thời gian qua Thầy đã tận tâm chỉ bảo nhiệt tình nhóm thực hiện trong suốt quá trình từ lúc bắt đầu cũng như kết thúc đề tài này.

Nhờ có những nền tảng kiến thức chuyên ngành vững chắc cộng thêm với những kinh nghiệm và yêu cầu thực tế ngoài xã hội thông qua việc học ở trường và thực tập ở các công ty Tập thể các thầy cô Khoa Công Nghệ Thông Tin và đặc biệt thầy Nguyễn Minh Đạo đã tặng cho nhóm một khối lượng kiến thức và kinh nghiệm khổng lồ về chuyên ngành và công việc trong tương lai Đặc biệt điều này đã giúp và thôi thúc nhóm hoàn thành được đề tài Đây sẽ là hành trang vô cùng lớn của cho nhóm trước khi bước ra một cuộc sống mới.

Tuy nhiên lượng kiến thức là vô tận và với khả năng hạn hẹp nhóm thực hiện đã rất cố gắng để hoàn thành một cách tốt nhất Chính vì vậy việc xảy ra những thiếu sót là điều khó có thể tránh khỏi Nhóm thực hiện hi vọng nhận được sự góp ý tận tình của quý thầy (cô) qua đó nhóm có thể rút ra được bài học kinh nghiệm và hoàn thiện và cải thiện nâng cấp lại sản phẩm của mình một cách tốt nhất có thể.

Nhóm thực hiện xin chân thành cảm ơn!

Nhóm thực hiện Nguyễn Phúc Thanh Toàn – 19110479 Nguyễn Ngọc Trung – 19110490 ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP

Họ và tên Sinh viên 1: Nguyễn Phúc Thanh Toàn MSSV 1: 19110479

Họ và tên Sinh viên 2: Nguyễn Ngọc Trung MSSV 2: 19110490 Thời gian làm luận văn: 14/03/2023 – 10/07/2023

Chuyên ngàn h: Công nghệ phần mềm

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

Giáo viên hướng dẫn: ThS Nguyễn Minh Đạo

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

Tìm hiểu về các công nghệ: Spring Boot, Spring Security, React JS, Restful API, Redux Toolkit, Json Web Token (JWT)

- Sử dụng Restful API, Spring Boot để viết APIs cho các module trong hệ thống.

- Sử dụng MySQL để lưu trữ dữ liệu người dùng của hệ thống.

- Sử dụng dịch vụ AWS S3 Bucket cho việc lưu trữ video, tài liệu, hình ảnh ch o hệ thống.

- Sử dụng Json Web Token kết hợp với Spring Security để xác thực và ủy quyền cho hệ thống APIs hoạt động tốt và hiệu quả.

- Sử dụng React JS làm Framework để thiết kế và xử lý giao diện web cho người dùng thao tác.

- Sử dụng VNPAY API cho người dùng thanh toán khi mua khóa học trên hệ thống.

- Sử dụng AWS CloudFront và Ubuntu Server trên Digital Ocean để de ploy hệ thống

Downloaded by NHIM BIEN (nhimbien1@gmail.com) Đề cương viết luận vă n:

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

1.5 Ý nghĩa khoa học và thực tiễn

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

2 Chương 2: KHẢO SÁT HIỆN TRẠNG VÀ MÔ HÌNH HÓA YÊU CẦU

2.3 Mô hình hoá yêu cầu

3 Chương 3: THIẾT KẾ HỆ THỐNG

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

4 Chương 4: CÀI ĐẶT VÀ KIỂM THỬ

STT Thời gian thực hiện Công việc Ghi chú

Thiết kế usecase và mô hình hóa yêu cầu

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

Tìm hiểu thư viện ReactJS, Material UI Tìm hiểu framework Spring Boot Tìm hiểu Spring Security, JWT

Tiến hành tổ chức cấu trúc project Xây dựng các tables của cơ sở dử liệu

Tạo các Entities trong Spring Boot và mapping với cơ sở dữ liệu

Xây dựng API cho các chức năng cơ bản dành cho người dùng có phân quyền là User

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Tp Hồ Chí Minh, ngày tháng năm 2023 Ý 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)

Xây dựng Giao diện người dùng cho hệ thống

Kết hợp các phần đã xây dựng (giao diện, APIs, database)

Xây dựng giao diện cho trang Admin

Tiến hàng tạo các APIs cho Admin

Xây dựng chức năng nâng cao là các tool học tập cho người dùng Tiến hàng code tính năng cho phép có thêm bài Test, file bài giảng cho các khoá học

Xây dựng tính năng quản lý khoá học cho giảng viên

Xây dựng tính năng phê duyệt khoá học, đăng ký khoá học mới

Tìm hiểu quá trình deploy sản phẩm

Viết script CI/CD Tìm hiểu AWS CloudFront

Tiến hành deploy sản phẩm

9 16/06/2023 – 21/06/2023 Kiểm thử chương trình và tiến hành sửa lỗi

10 22/06/2023 – 07/07/2023 Viết và hoàn thiện báo cáo

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

5 Ý NGHĨA KHOA HỌ C VÀ TH Ự C TI Ễ N 2

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

1.1.2 Kiến trúc và cách hoạt động của Spring Boot 3

1.2.2 Cơ chế ho ạt độ ng c ủ a Spring Security 5

1.3.2 Cách ho ạt độ ng c ủ a MYSQL 6

1.4.2 Cách ho ạt độ ng c ủ a RESTFUL API 8

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

1.7.3 Ưu và nhược điể m c ủ a ReactJS 11

CHƯƠNG 2: KHẢ O SÁT HI Ệ N TR Ạ NG VÀ MÔ HÌNH HÓA YÊU C Ầ U 16

2.1 KH Ả O SÁT HI Ệ N TR Ạ NG 16

2.1.2 Yêu c ầ u bài toán c ủa đề tài 18

2.2.2 Yêu c ầ u phi ch ức năng 20

3.1.2 Mô t ả chi ti ế t b ả ng d ữ li ệ u 100

3.2.1 Giao di ệ n cho Admin và Teacher 122

4.1.2 Giao di ện cho ngườ i dùng (Student, Teacher) 147

CHƯƠNG 4: CÀI ĐẶ T VÀ KI Ể M TH Ử 170

4.1.1 Cài đặ t ứ ng d ụng, thư việ n c ầ n thi ế t 170

4.2.4 Các trườ ng h ợ p ki ể m th ử 175

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Hình 1: Ki ế n trúc phân l ớ p c ủ a SpringBoot 3

Hình 3: Cơ chế ho ạt độ ng c ủ a Spring Security 5

Hình 6: T ổ ch ứ c d ữ li ệ u trên AWS S3 10

Hình 7: Giao di ệ n website kh ả o sát Unica 16

Hình 8: Giao di ệ n Website kh ả o sát F8 – H ọ c l ập trình để đi làm 17

Hình 9: Use Case cho Admin 21

Hình 10: Use Case cho Teacher 22

Hình 11: Use Case cho ngườ i có phân quy ề n là Reviewer 22

Hình 12: Use Case cho ngườ i có phân quy ề n là User 23

Hình 13: : Sequence Diagram cho ch ức năng gử i yêu c ầ u duy ệ t khoá h ọ c m ớ i 24

Hình 14: Sequence Diagram thêm lo ạ i khoá h ọ c m ớ i 26

Hình 15: Sequence Diagram ch ức năng thêm mớ i mã khuy ế n mãi 28

Hình 16: Sequence Diagram ch ức năng cậ p nh ậ t thông tin mã khuy ế n mãi 30

Hình 17: Sequence Diagram xem l ị ch s ử đơn hàng 32

Hình 18: Sequence Diagram ch ức năn g g ử i k ế t qu ả phê duy ệ t yêu c ầ u tr ở thành gi ả ng viên 33

Hình 19: Sequence Diagram cho ch ức năng thêm khoá họ c vào gi ỏ hàng 35

Hình 20: Sequence Diagram đánh giá khoá học đã mua 36

Hình 21: Sequence Diagram ch ức năng đă ng xu ấ t 38

Hình 22: Sequence Diagram ch ức năng đăng nhậ p 39

Hình 23: Sequence Diagram ch ức năng đăng ký tài khoả n 41

Hình 24: Sequence Diagram ch ức năng thanh toán 43

Hình 25: Sequence Diagram ch ức năng xem đánh giá khoá họ c 46

Hình 26: Sequence Diagram tìm ki ế m các khoá h ọ c 47

Hình 27: Sequence Diagram yêu c ầ u tr ở thành gi ả ng viên 49

Hình 28: Sequence Diagram xoá khoá h ọ c kh ỏ i gi ỏ hàng 51

Hình 29: Sequence Diagram ch ức năng trao đổ i thông tin v ớ i chatBot 52

Hình 30: Sequence Diagram t ạ o l ị ch nh ắ c h ẹ n h ọ c t ậ p 54

Hình 31: Sequence Diagram ch ức năng tạ o câu h ỏ i th ả o lu ậ n 55

Hình 32: Sequence Diagram ch ức năng xem danh sách bài giả ng 57

Hình 33: Sequence Diagram ch ức năng trả l ờ i th ả o lu ậ n trong bài h ọ c 59

Hình 34: Sequence Diagram ch ức năng xoá thả o lu ậ n trong bài gi ả ng 60

Hình 35: Sequence Diagram ch ức năn g xem thông báo t ừ gi ả ng viên 63

Hình 36:Sequence Diagram ch ức năng 64

Hình 37: Sequence Diagram thêm ghi chú cho bài gi ả ng 66

Hình 38: Sequence Diagram cho ch ức năng xoá ghi chú 68

Hình 39: Sequence Diagram ch ức năng thự c hi ệ n bài Test 70

Hình 40: Sequence Diagram ch ức năng đá nh d ấ u bài h ọ c là hoàn thành 72

Hình 41: Sequence Diagram ch ức năng bỏ đánh dầ u hoàn thành bài h ọ c 74

Hình 42: Sequence Diagram ch ức năng xem danh sách giả ng viên 76

Hình 43: Sequence Dìagram ch ức năng xem danh sách re viewers 77

Hình 44: Sequence Diagram ch ức năng xem bài giả ng 78

Hình 45:Sequence Diagram ch ức năng thêm khoá họ c vào danh sách yêu thích 80

Hình 46: Sequence Diagram ch ức năng xem danh sách khoá họ c yêu thích 81

Hình 47: Sequence Diagram xoá khoá h ọ c kh ỏ i danh sách yêu thích 82

Hình 48:Sequence Diagram ch ức năng xem danh sách yêu câu phê duyệ t tr ở thành gi ả ng viên 84

Hình 49: Sequence Diagram đăng ký account reviewer 86

Hình 50: Sequence Diagram ch ức năng xem danh sách reviewer 88

Hình 51: Sequence Diagram ch ức năng xem danh sách khoá học chưa đượ c duy ệ t 89

Hình 52: Sequence Diagram ch ức năng nhậ n task ki ể m duy ệ t 91

Hình 53: Sequence Diagram ch ức năng duyệ t yêu c ầ u t ạ o m ớ i khoá h ọ c 93

Hình 54: Sequence Diagram ch ức năng cậ p nh ậ t bài gi ả ng 95

Hình 55: Sequence Diagram xem danh sách mã khuy ế n mãi 97

Hình 57: Giao di ện trang đăng nhậ p 122

Hình 58: Giao di ệ n trang quên m ậ t kh ẩ u 123

Hình 59: Giao di ệ n trang Dashboard 124

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Hình 60: Giao di ệ n trang DashBoard th ể hi ệ n doanh thu 124

Hình 61: Giao di ệ n trang qu ả n lý khoá h ọ c 125

Hình 62: Giao di ệ n trang ch ỉ nh s ử a thông tin t ổ ng quan khoá h ọ c 127

Hình 63: Giao di ệ n trang ch ỉ nh s ử a n ộ i dung bài h ọ c 127

Hình 64: Giao di ệ n tr ạ ng thêm m ớ i chapter 129

Hình 65: Giao di ệ n trang ch ỉ nh s ử a bài h ọ c 130

Hình 66: Giao di ệ n trang qu ả n lý yêu c ầ u phê duy ệ t khoá h ọ c 131

Hình 67: Giao di ện trang đăng kí thông tin khoá họ c m ớ i 132

Hình 68: Giao di ện trang đăng ký nộ i dung khoá h ọ c m ớ i 132

Hình 69: Giao di ệ n trang xem l ạ i n ộ i dung khoá h ọ c m ớ i 132

Hình 70: Giao di ệ n trang qu ả n lý bình lu ậ n 134

Hình 71: Giao di ệ n trang thêm m ớ i bình lu ậ n 135

Hình 72: Giao di ệ n trang qu ản lý đơn hàng 135

Hình 73: Giao di ệ n trang qu ả n lý coupon 136

Hình 74: Giao di ệ n trang thêm m ớ i coupon 137

Hình 75: Giao di ệ n trang ch ỉ nh s ử a coupon 137

Hình 76: Giao di ệ n trang qu ả n lý thông tin tài kho ả n 138

Hình 77: Giao di ện trang thay đổ i m ậ t kh ẩ u 139

Hình 78: Giao di ệ n trang qu ả n lý khóa h ọ c 140

Hình 79: Giao di ệ n trang thêm m ớ i và s ử a lo ạ i khóa h ọ c 141

Hình 80: Giao di ệ n trang qu ản lý phương thứ c thanh toán 142

Hình 81: Giao di ệ n trang thêm m ớ i và ch ỉ nh s ửa phương thứ c thanh toán 143

Hình 82: Giao di ệ n trang phê duy ệ t yêu c ầ u tr ở thành gi ả ng viên 144

Hình 83: Giao di ệ n trang qu ản lý ngườ i ki ể m duy ệ t 145

Hình 84: Giao di ệ n trang thêm m ới ngườ i ki ể m duy ệ t 146

Hình 85: Giao di ện trang đăng nhậ p 147

Hình 86: Giao di ện trang đăng ký tài khoả n 148

Hình 87: Giao di ệ n trang quên m ậ t kh ẩ u 149

Hình 90: Giao di ệ n top 4 khóa h ọ c 151

Hình 91: Giao di ện ngườ i t ạ o web 152

Hình 93: Giao di ệ n trang danh sách khóa h ọ c 153

Hình 94: Giao di ệ n trang chi ti ế t khóa h ọ c 154

Hình 95: Giao di ệ n trang chi ti ế t khóa h ọ c 155

Hình 96: Giao di ệ n trang phòng h ọ c 156

Hình 97: Giao di ệ n ch ức năng note trong khóa họ c 157

Hình 98: Giao di ệ n ch ức năng hỏi đáp trong khóa họ c 158

Hình 99: Giao di ệ n ch ức năng phả n h ồ i câu h ỏ i 159

Hình 100: Giao di ệ n ch ức năng thêm lị ch h ọ c 160

Hình 101: Giao di ệ n ch ức năng hiể n th ị thông báo c ủ a gi ả ng viên 161

Hình 102: Giao di ệ n ch ức năng hỏi đáp vớ i AI 162

Hình 103: Giao di ệ n trang thông tin cá nhân 163

Hình 104: Giao di ệ n trang l ị ch s ử mua hàng 164

Hình 105: Giao di ệ n trang l ị ch s ử mua hàng 164

Hình 106: Giao di ệ n trang danh sách gi ả ng viên 165

Hình 107: Giao di ệ n trang chi ti ế t gi ả ng viên 166

Hình 108: Giao di ệ n trang gi ỏ hàng 167

Hình 109: Giao di ệ n trang khóa h ọ c c ủ a tôi (Tab khóa h ọc đã mua) 168

Hình 110: Giao di ệ n trang khóa h ọ c c ủ a tôi (Tab khóa h ọ c yêu thích) 168

Hình 111: C ấu trúc thư mụ c Front End (User) 172

Hình 112: C ấu trúc thư mụ c Front End (Admin, Teacher, Reviewer) 173

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

B ảng 1: Đặ c t ả UseCase g ử i yêu c ầ u phê duy ệ t khoá h ọ c m ớ i 24

B ảng 2: Đặ c t ả Use Case thêm lo ạ i khóa h ọ c 26

B ảng 3: Đặ c t ả Use Case thêm m ớ i mã khuy ế n mãi 28

B ảng 4: Đặ c t ả Use Case s ử a thông tin mã khuy ế n mãi 30

B ảng 5: Đặ c t ả Use Case xem l ị ch s ử đơn hàng 32

B ảng 6: Đặ c t ả Use Case ch ấ p nh ậ n yêu c ầ u tr ở thành gi ả ng viên 33

B ảng 7: Đặ c t ả Use Case thêm khoá h ọ c vào gi ỏ hàng 35

B ảng 8: Đặ c t ả Use Case đánh giá khóa học đã mua 36

B ảng 9: Đặ c t ả Use Case ch ức năng đăng xuấ t 38

B ảng 10: Đặ c t ả Use Case đăng nhậ p 39

B ảng 11: Đặ c t ả Use Case đăng ký tài khoả n 41

B ảng 12: Đặ c t ả Use Case thanh toán đơn hàng 43

B ảng 13: Đặ c t ả Use Case xem đánh giá khóa họ c 46

B ảng 14: Đặ c t ả Use Case ch ức năng tìm kiế m khoá h ọ c 47

B ảng 15: : Đặ c t ả Use Case yêu c ầ u tr ở thành gi ả ng viên 49

B ảng 16: Đặ c t ả UseCase xoá khoá h ọ c kh ỏ i gi ỏ hàng 51

B ảng 17: Đặ c t ả UseCase trao đổ i thông tin v ớ i ChatBot 52

B ảng 18: Đặ c t ả UseCase t ạ o l ị ch nh ắ c h ẹ n h ọ c t ậ p 54

B ảng 19: Đặ c t ả Use Case t ạ o câu h ỏ i th ả o lu ậ n 56

B ảng 20: Đặ c t ả Use ch ức năng xem danh sách t h ả o lu ậ n 57

B ảng 21 Đặ c t ả UseCase ch ứuc năng trả l ờ i th ả o lu ậ n 59

B ảng 22: Đặ c t ả Use Case ch ức năng xoá thả o lu ậ n trong bài gi ả ng 61

B ảng 23: Đặ c t ả Use Case xem thông báo t ừ gi ả ng viên 63

B ảng 24: Đặ c t ả UseCase ch ức năng xem danh sách ghi chú 64

B ảng 25: Đặ c t ả Use Case thêm ghi chú 66

B ảng 26: Đặ c t ả Usecase ch ức năng xoá ghi chú 68

B ảng 27: Đặ c t ả Use Case th ự c hi ệ n bài Quiz 70

B ảng 28: Đặ c t ả Use Case ch ức năng đánh dấ u hoàn thành bài h ọ c 73

B ả ng 29: Đặ c t ả Use Case b ỏ đánh dấ u hoàn thành khoá h ọ c 75

B ảng 30: Đặ c t ả Use case xem danh sách gi ả ng viên 76

B ảng 31: Đặ c t ả Use Case xem thông tin chi ti ế t gi ả ng viên 77

B ảng 32: Đặ c t ả Use Case xem bài gi ả ng 79

B ảng 33: Đặ c t ả Use Case năng thêm khoá họ c vào danh sách yêu thích 80

B ảng 34: Đặ c t ả UseCase ch ức năng xem danh sách khoá họ c yêu thích 81

B ảng 35: Đặ c t ả Use Case xoá khoá h ọ c kh ỏ i danh sách yêu thích 82

B ảng 36: Đặ c t ả Use Case xem danh sách yêu c ầ u phê duy ệ t thành gi ả ng viên 84

B ảng 37: Đặ c t ả Use Case đăng ký reviewer 86

B ảng 38: Đặ c t ả Use Case xem danh sách reviewer 88

B ảng 39: Đặ c t ả Use Case xem danh sách khoá h ọc chưa đưa duyệ t 89

B ảng 40: Đặ c t ả Use Case nh ậ n task ki ể m duy ệ t 91

B ảng 41: Đặ c t ả Use Case g ử i kêt qu ả yêu c ầ u duy ệ t khoá h ọ c 93

B ảng 42: Đặ c t ả Use Case c ậ p nh ậ t bài gi ả ng 95

B ảng 43; Đặ c t ả Use Case xem mã khuy ế n mãi 97

B ả ng 44: Mô t ả chi ti ế t b ả ng Account 100

B ả ng 45: Mô t ả chi ti ế t b ả ng UserDetail 100

B ả ng 46: Mô t ả chi ti ế t b ả ng Cart 101

B ả ng 47: Mô t ả chi ti ế t b ả ng Cart Detail 101

B ả ng 49: Mô t ả chi ti ế t b ả ng Chapters 102

B ả ng 50: Mô t ả chi ti ế t b ả ng Coupon 103

B ả ng 51: Mô t ả chi ti ế t b ả ng courses 104

B ả ng 52: Mô t ả chi ti ế t b ả ng courses_paid 105

B ả ng 53: Mô t ả chi ti ế t b ả ng Courses Video 105

B ả ng 54: Mô t ả chi ti ế t b ả ng Note 106

B ả ng 55: Mô t ả chi ti ế t b ả ng Orders 106

B ả ng 56: Mô t ả chi ti ế t b ả ng Order Detail 107

B ả ng 57: Mô t ả chi t ế t b ả ng Payment 108

B ả ng 58: Mô t ả chi ti ế t b ả ng Register_Teacher_Form 108

B ả ng 59: Mô t ả chi ti ế t b ả ng ResourceCourses 109

B ả ng 60: Mô t ả chi ti ế t b ả ng reviews 109

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

B ả ng 61: Mô tả chi tiết b ảng role 109

B ả ng 62: Mô t ả chi ti ế t b ả ng token 110

B ả ng 63: Mô t ả chi ti ế t b ả ng Announcement 110

B ả ng 64: Mô t ả chi ti ế t b ả ng course_summary_info_register 111

B ả ng 65: Mô t ả chi ti ế t b ả ng discuss 112

B ả ng 66: Mô t ả chi ti ế t b ả ng learning_process 113

B ả ng 67: Mô t ả chi ti ế t b ả ng learning_process_learned_lectures 114

B ả ng 68: Mô t ả chi ti ế t b ả ng lectures 114

B ả ng 69: Mô t ả chi ti ế t b ả ng quiz_answer 115

B ả ng 70: Mô t ả chi ti ế t b ả ng quiz_question 116

B ả ng 71: Mô t ả chi ti ế t b ả ng quiz_stat 116

B ả ng 72: Mô t ả chi ti ế t b ả ng register_chapter 117

B ả ng 73: Mô t ả chi ti ế t b ả ng register_course_session 118

B ả ng 74: Mô t ả chi ti ế t b ả ng register_lectures 119

B ả ng 75: Mô t ả chi ti ế t b ả ng reviewer_role 120

B ả ng 76: Mô t ả chi ti ế t b ả ng teacher_profile 120

B ả ng 77: Mô t ả chi ti ế t b ả ng wish_list 121

B ả ng 78: Mô t ả trang đăng nhậ p 122

B ả ng 79: Mô t ả trang quên m ậ t kh ẩ u 123

B ả ng 81: Mô t ả trang qu ả n lý khoá h ọ c 125

B ả ng 82: Mô t ả giao di ệ n trang ch ỉ nh s ử a khoá h ọ c 127

B ả ng 83: Mô t ả trang thêm m ớ i chapter 129

B ả ng 84: Mô t ả trang ch ỉ nh s ử a bài h ọ c 130

B ả ng 85: Mô t ả giao di ệ n trang qu ả n lý yêu c ầ u phê duy ệ t khoá h ọ c 131

B ả ng 86: Mô t ả chi ti ết trang đăng ký khoá họ c m ớ i 132

B ả ng 87: Mô t ả chi ti ế t trang qu ả n lý bình lu ậ n 134

B ả ng 88: Mô t ả chi ti ế t trang thêm m ớ i bình lu ậ n 135

B ả ng 89: Mô t ả chi ti ế t trang qu ản lý đơn hàng 136

B ả ng 90: Mô t ả chi ti ế t trang qu ả n lý coupon 136

B ả ng 91: Mô t ả chi ti ế t trang thêm m ớ i và s ử a coupon 137

B ả ng 92: Mô t ả chi ti ế t trang qu ả n lý thông tin tài kho ả n 138

B ả ng 93: Mô t ả chi ti ết trang thay đổ i m ậ t kh ẩ u 139

B ả ng 94: Mô t ả chi ti ế t trang qu ả n lý khóa h ọ c 140

B ả ng 95: Mô t ả chi ti ế t trang thêm m ớ i và s ử a lo ạ i khóa h ọ c 141

B ả ng 96: Mô t ả chi ti ế t trang qu ản lý phương thứ c thanh toán 142

B ả ng 97: Mô t ả chi ti ế t trang thêm m ớ i và ch ỉ nh s ửa phương thứ c thanh toán 143

B ả ng 98: Mô t ả chi ti ế t trang phê duy ệ t yêu c ầ u tr ở thành gi ả ng viên 144

B ả ng 99: Mô t ả chi ti ế t trang qu ản lý ngườ i ki ể m duy ệ t 145

B ả ng 100: Mô t ả chi ti ế t trang thêm m ới ngườ i ki ể m duy ệ t 146

B ả ng 101: Mô t ả chi ti ết trang đăng nhậ p 147

B ả ng 102: Mô t ả chi ti ết trang đăng ký tài khoả n 148

B ả ng 103: Mô t ả chi ti ế t trang quên m ậ t kh ẩ u 149

B ả ng 104: Mô t ả chi ti ế t Header 150

B ả ng 105: Mô t ả chi ti ế t Banner 151

B ả ng 106: Mô t ả chi ti ế t top 4 khóa h ọ c 151

B ả ng 107: Mô t ả chi ti ết ngườ i t ạ o web 152

B ả ng 108: Mô t ả chi ti ế t Footer 153

B ả ng 109: Mô t ả chi ti ế t trang danh sách khóa h ọ c 154

B ả ng 110: Mô t ả chi ti ế t trang chi ti ế t khóa h ọ c 155

B ả ng 111: Mô t ả chi ti ế t trang phòng h ọ c 156

B ả ng 112: Mô t ả chi ti ế t ch ức năng note trong khóa họ c 157

B ả ng 113: Mô t ả chi ti ế t ch ức năng hỏi đáp 158

B ả ng 114: Mô t ả chi ti ế t ch ức năng phả n h ồ i câu h ỏ i 159

B ả ng 115: Mô t ả chi ti ế t ch ức năng tạ o l ị ch h ọ c 160

B ả ng 116: Mô t ả chi ti ế t ch ức năng hiể n th ị thông báo c ủ a gi ả ng viên 161

B ả ng 117: Mô t ả chi ti ế t ch ức năng hỏi đáp vớ i AI 162

B ả ng 118: Mô t ả chi ti ế t trang thông tin cá nhân 163

B ả ng 119: Mô t ả chi ti ế t trang l ị ch s ử mua hàng 164

B ả ng 120: Mô t ả chi ti ế t trang danh sách gi ả ng viên 165

B ả ng 121: Mô t ả chi ti ế t trang chi ti ế t gi ả ng viên 166

B ả ng 122: Mô t ả chi ti ế t trang gi ỏ hàng 167

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

B ả ng 123: Mô t ả chi ti ế t trang khóa h ọ c c ủ a tôi 168

B ả ng 124: Các ph ầ n m ề n c ần cài đặ t 170

B ả ng 125: Ki ể m th ử ch ức năng đăng nhậ p v ới trườ ng h ợp không điề n username 175

B ả ng 126: Ki ể m th ử ch ức năng đăng nhậ p v ới trườ ng h ợ p username không có trong h ệ th ố ng 176

B ả ng 127: Ki ể m th ử ch ức năng đăng nhậ p v ới trườ ng h ợp password không đúng 177

B ả ng 128: : Ki ể m th ử ch ức năng đăng nhập trườ ng h ợ p d ữ li ệu đúng 178

B ả ng 129: Ki ể m th ử ch ức năng đăng ký với username đã có t rên th ệ th ố ng 179

B ả ng 130: Ki ể m th ử ch ức năng đăng ký vớ i b ộ d ữ li ệu đúng 180

B ả ng 131: Ki ể m th ử ch ức năng tìm kiế m khóa h ọ c 181

B ả ng 132: Ki ể m th ử ch ức năng thay đổ i ảnh đạ i di ệ n 182

B ả ng 133: Ki ể m th ử ch ức năng thanh toán 183

B ả ng 134: Ki ể m th ử ch ức năng thanh toán với trườ ng h ợ p không ch ọ n s ả n ph ẩ m nào trong gi ỏ hàng 184

B ả ng 135: Ki ể m th ử ch ức năng xóa sả n ph ẩ m kh ỏ i gi ỏ hàng 185

B ả ng 136: Ki ể m th ử ch ức năng thêm sả n ph ẩ m vào gi ỏ hàng 186

B ả ng 137: Ki ể m th ử ch ức năng thêm sả n ph ẩ m vào gi ỏ hàng trườ ng h ợ p s ả n ph ẩm đã có trong gi ỏ hàng 187

B ả ng 138: Ki ể m th ử ch ức năng đánh giá khóa học đã mua 188

B ả ng 139: Ki ể m th ử ch ức năng đánh giá khóa học đã mua 189

B ả ng 140: Ki ể m th ử ch ức năng xóa đánh giá 190

B ả ng 141: Ki ể m th ử ch ức năng thêm vào danh sách yêu thích 191

B ả ng 142: Ki ể m th ử ch ức năng xóa khóa họ c kh ỏ i danh sách yêu thích 192

B ả ng 143: Ki ể m th ử ch ức năng thêm ghi chú 193

B ả ng 144: Ki ể m th ử ch ức năng xóa ghi chú 194

B ả ng 145: Ki ể m th ử ch ức năng thêm câu hỏ i 195

B ả ng 146: Ki ể m th ử ch ức năng xóa câu hỏ i 196

B ả ng 147: Ki ể m th ử ch ức năng trả l ờ i câu h ỏ i 197

B ả ng 148: Ki ể m th ử ch ức năng hỏ i đáp vớ i AI 199

B ả ng 149: Ki ể m th ử ch ức năng đánh dấ u hoàn thành bài h ọ c 200

B ả ng 150: Ki ể m th ử ch ức năng bỏ đánh dấ u hoàn thành bài h ọ c 201

B ả ng 151: Ki ể m th ử ch ức năng gử i yêu c ầ u tr ở thành gi ả ng viên 202

B ả ng 152: Ki ể m th ử ch ức năng duyệ t yêu c ầ u tr ở thành gi ả ng viên 204

B ả ng 153: Ki ể m th ử ch ức năng đăng ký tạ o khóa h ọ c 205

B ả ng 154: Ki ể m th ử ch ức năng phê duyệ t khóa h ọc trườ ng h ợ p khóa h ọ c c ầ n ch ỉ nh s ử a l ại để đượ c duy ệ t 206

B ả ng 155: Ki ể m th ử ch ức năng đăng ký tạ o khóa h ọc trườ ng h ợp đã đượ c yêu c ầ u ch ỉ nh s ửa để đượ c phê duy ệ t 207

B ả ng 156: Ki ể m th ử ch ức năng phê duyệ t khóa h ọc trườ ng h ợ p khóa h ọc đượ c phép duy ệ t 209

B ả ng 157: Ki ể m th ử ch ức năng phê duyệ t khóa h ọc trườ ng h ợ p khóa h ọ c b ị t ừ ch ố i 210

B ả ng 158: Ki ể m th ử ch ức năng xóa khóa họ c 211

B ả ng 159: Ki ể m th ử ch ức năng chỉ nh s ử a khóa h ọc trườ ng h ợ p s ửa trườ ng public 212

B ả ng 160: Ki ể m th ử ch ức năng chỉ nh s ử a khóa h ọc trườ ng h ợ p s ửa trườ ng public 213

B ả ng 161: Ki ể m th ử ch ức năng thay đổ i th ứ t ự chapter trong khóa h ọ c 214

B ả ng 162: Ki ể m th ử ch ức năng thêm mớ i bài h ọc trườ ng h ợ p bài h ọ c là video 215

B ả ng 163: Ki ể m th ử ch ức năng thê m m ớ i bài h ọc trườ ng h ợ p bài h ọ c là quiz 217

B ả ng 164: Ki ể m th ử ch ức năng xóa bài họ c 219

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

DANH MỤC CÁC TỪ VIẾT TẮT

STT Từ viết tắt Ý nghĩa

4 CORS Cross-origin resource sharing

5 CSRF Cross-site Request Forgery

8 RDMS Relational Database Management System

9 CSDL Cơ sở dữ liệu

11 HAMC A hashed message authentication code

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

Hiện nay, việc xây dựng và ứng dụng công nghệ thông tin vào đời sống đã trở thành mục tiêu cấp thiết của toàn xã hội Bởi nó không chỉ giúp đẩy nhanh tốc độ phát triển của xã hội mà còn góp phần khắc phục những khó khăn về khoảng cách, nhân lực và hiệu năng Đặc biệt trong thời buổi dịch bệnh Covid hiện nay, việc ứng dụng công nghệ thông tin vào đời sống còn góp phần hạn chế dịch bệnh Tuy nhiên, vẫn còn nhiều khó khăn, bất cập trong việc đưa công nghệ thông tin vào từng mảng của đời sống cũng như trong kết nối giữa người cung và người cầu Nắm bắt được điều đó, nhóm chọn nghiên cứu đề tài “Xây dựng website kinh doanh khóa học online” Với đề tài, nhóm hy vọng vừa góp phần thúc đẩy việc phát triển công nghệ thông tin vừa tạo ra một trang web giúp kết nối giữa người bán và người mua Đây sẽ là nơi, mà người mua được quyền xem xét, lựa chọn những khóa học online mà mình cần thiết mà không cần phải qua trung gian người tư vấn nào cả Còn người bán sẽ có cơ hội giới thiệu về những ưu điểm của khóa học cung cấp, cách thức liên hệ, ưu đãi, … Mà không cần tốn phí cho c ác tr ang quảng cáo Đặc biệt, nhóm mong rằng trang web này sẽ phát thêm một tín hiệu tích cực trong việc đưa người Việt Nam đến việc học online một cách dễ dàng và hiệu quả hơn.

2 ĐỐI TƯỢ NG NGHIÊN C Ứ U Đối với đề tài này, đối tượng nghiên cứu dựa trên nhu cầu học tập mọi lúc, mọi nơi của người dùng, không bị giới hạn về thời gian cũng như địa điểm, chỉ cần thiết bị thông minh có thể truy cập được Internet là có thể học được Đồng thời, đề tài cũng nghiên cứu các công nghệ để hoàn thiện sản phẩm một cách hoàn chỉnh nhất, bao gồm:

- Spring Boot kết hợp với Spring Security, Spring Data JPA để xây dựng phần server cho website

- Thư viện ReactJS để thiết kế và xây dựng giao diện cho người dùng.

- Cơ sở dữ liệu MySQL để lưu trữ dữ liệu cho hệ thống.

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

- JSON Web Token (JWT) để làm lớp bảo mật cho hệ thống Để gọi đến các API có yêu cầu xác thực, ứng dụng phải cung cấp JWT trong header của request.

- AWS S3 Bucket để lưu trữ các video khóa học, tài liệu và hình ảnh.

Trong đề tài tiểu luận chuyên ngành, chủ yếu tập trung vào xử lý nghiệp vụ của một trang web chuyên kinh doanh các khóa học online như: xem và tìm kiếm các khóa học, mua khóa học và cho phép người dùng học trực tiếp trên trang web cũng như các tính năng bổ trợ cho việc học như tạo ghi chú, tạo các bình luận để thảo luận bên dưới các video của khóa học, trao đổi thông tin với chatbot sử dụng ChatGPT, thêm lịch nhắc học và thanh toán, kiểm tra các khóa học đã mua.

Phần quản trị sẽ tập trung vào các nghiệp vụ như quản lý sản phẩm, quản lý các khóa học, giáo viên trên hệ thống, quản lý doanh thu, duyệt nội dung khóa học đăng ký mới, xử lý các yêu cầu trở thành giảng viên của người dùng,

Trong quá trình hoàn thiện đề tài, nhóm thực hiện đã đặt ra những mục tiêu sau:

- Xây dựng một trang kinh doanh khóa học online với những chức năng cơ bản cho người dùng và giáo viên của các khóa học.

- Xây dựng được giao diện thân thiện với người sử dụng, dễ sử dụng và thao tác

- Áp dụng được các hình thức thanh toán như VNPAY vào hệ thống website

- Áp dụng được dịch vụ AWS S3 để lưu trữ dữ liệu cho hệ thống

5 Ý NGHĨA KHOA HỌ C VÀ TH Ự C TI Ễ N Đề tài hướng đến khả năng tiếp thu, nâng cao kỹ năng lập trình, nghiên cứu công nghệ mới và đáp ứng nhu cầu học online của người dùng Mục đích giúp tạo ra một hệ thống có thể giúp cho việc học tập thông qua Internet trở nên ngày càng thuận lời Đồng thời, cung cấp một nơi kết nối các giảng viên , cùng chia sẻ các kiến thức trên nhiều lĩnh vực

PH Ầ N N Ộ I DUNG CHƯƠNG 1: CƠ SỞ LÝ THUY Ế T

Spring Boot là m ột extension của Spring Framework giúp loại bỏ các bước cấu hình phức tạp mà Spring bắt buộc Spring Boot là dự án phát triển bởi ngôn ngữ Java và được dùng để phát triển các ứng dụng thuộc dạng stand -alone và production-grade

1.1.2 Kiến trúc và cách hoạt động của Spring Boot

Spring Boot tuân theo kiến trúc phân lớp, trong đó mỗi lớp giao tiếp với lớp ngay bên dưới hoặc bên trên của nó.

Presentation Layer : Đây là tầng trên cùng của một ứng dụng Spring Boot, nó được sử dụng để xử lý các HTTP request, xác thực, chuyển đổi các JSON sang Java Object và ngược lại.

Business Layer : Layer này chịu trách nhiệm xử lý các nghiệp vụ của dự án, thực hiện các lệnh kiểm tra để đảm bảo tính đúng đắng của dự liệu, logic, etc.

Persistence Layer: Nó bao gồm tất cả các xử lý về thao tác với database như lưu trữ, cập nhật, truy vấn hoặc xoá dữ liệu.

Database Layer: Nó có thể bao gồm nhiều cơ sở dữ liệu, nghĩa là một thao tác với dữ liệu có thể đồng bộ với nhiều database server khác nhau

Hình 1: Ki ế n trúc phân l ớ p c ủ a SpringBoot

Downloaded by NHIM BIEN (nhimbien1@gmail.com)

Kiến trúc Spring Boot dựa trên Spring framework Vì vậy, nó chủ yếu sử dụng tất cả các tính năng và module của Spring MVC, Spring Core, v.v.,

Khi có một HTTP request đến server, Controller sẽ xử lý và gọi các Service tương ứng để xử lý business.

Ngày đăng: 09/04/2024, 22:01

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w