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.