2.1 YÊU CẦU CỦA KHÁCH HÀNGSau cuộc trao đổi yêu cầu, dự án đã tổng hợp được các nội dung như sau:Đăng nhập Đăng kíQuên mật khẩu Tìm kiếm khóa họcXem chi tiếtTrải nghiệm thử khóa họcQuản
GIỚI THIỆU ĐỀ TÀI
Giới thiệu dự án
Trong bối cảnh cuộc sống ngày nay đòi hỏi sự linh hoạt và tiện lợi, việc phát triển một trang web bán khóa học không chỉ là xu hướng mà còn là cầu nối giữa người học và nguồn kiến thức Dự án CMaster không chỉ tập trung vào việc cung cấp nền tảng giữa Giảng Viên và Học Viên mà còn chú trọng đến trải nghiệm người dùng, sự tương tác cao, khả năng tiếp cận mọi lúc, mọi nơi Sự kết hợp giữa công nghệ và giáo dục không chỉ mở ra những cơ hội mới mẻ mà còn định hình lại cách chúng ta hiểu về việc học và phát triển bản thân.
Ban dự án
Back-end Front-end Document
Fullstack Database design Đặng Thế Huy
Back-end Front-end Designer Tester
KHẢO SÁT – CMASTER
Yêu cầu của khách hàng
Sau cuộc trao đổi yêu cầu, dự án đã tổng hợp được các nội dung như sau: Đăng nhập Đăng kí
Trải nghiệm thử khóa học
Thi và nhận chứng chỉ
Thông báo qua email Đảm bảo tương đối về bảo mật
Ví tiền Báo cáo bình luận, người dùng Quản lý người dùng
Xét duyệt khóa họcXét duyệt giao dịchLịch sử giao dịchXem trạng thái hóa đơn Thống kê doanh thuTùy chỉnh ngôn ngữ (Đa dạng)
Thiết Kế Dự Án
Xác định yêu cầu chính của dự án, gồm các chức năng cần có, giao diện người dùng, và yêu cầu bảo mật.
- Xây Dựng Sơ Đồ Dự Án:
Xây dựng sơ đồ kiến trúc hệ thống và xác định các thành phần chính như server, database,
Sử dụng Spring để phân chia task giữa các thành viên nhóm, đặt ưu tiên cho các công việc quan trọng nhất.
- Tạo Wireframes và Thiết Kế Giao Diện:
Sử dụng công cụ thiết kế để tạo wireframes và thiết kế giao diện người dùng để có cái nhìn rõ ràng về cấu trúc và trải nghiệm người dùng.
Xác định cấu trúc database, bao gồm bảng, mối quan hệ, và các trường cần thiết.
DỰ ÁN TỐT NGHIỆP TRANG 8 WEBSITE THƯƠNG MẠI KHÓA HỌC COURSE MASTER
Code Front-end
Bắt đầu việc lập kế hoạch và thiết kế front-end dựa trên wireframes và giao diện đã được xác định trước đó.
- Xây Dựng Giao Diện Người Dùng:
Sử dụng HTML + Bootstrap để xây dựng giao diện người dùng, kết hợp với các thư viện và framework AngularJS.
Code Back-end
Xác định các API và endpoints cần thiết cho ứng dụng, đảm bảo tính mở rộng và tái sử dụng.
- Xây Dựng Logic Back-end:
Sử dụng Spring boot để triển khai logic back-end, bao gồm xử lý yêu cầu, quản lý người dùng, và gửi và nhận dữ liệu từ database.
Test
Thực hiện kiểm thử đơn vị cho từng thành phần riêng lẻ để đảm bảo chức năng đúng đắn.
Thực hiện kiểm thử hệ thống để đảm bảo tất cả các thành phần tương tác với nhau một cách chính xác.
Kiểm tra liên kết và tương tác giữa front-end và back-end để đảm bảo tính đồng bộ, hiệu suất.
Thực hiện kiểm thử bảo mật để đảm bảo an toàn cho dữ liệu và người dùng.
Triển Khai và Phát Hành
Triển khai ứng dụng lên môi trường internet sử dụng công cụ triển khai Docker.Phát hành trang web cho người dùng và đảm bảo rằng tất cả các tính năng đều khả dụng và ổn định.
PHÂN TÍCH - ANALYSIS
Sơ đồ Use Cases
3.2.1 U SE C ASES DÀNH CHO G IẢNG VIÊN
3.2.2 U SE C ASES DÀNH CHO HỌC VIÊN (N GƯỜI DÙNG THÔNG THƯỜNG )
3.2.3 U SE C ASES DÀNH CHO N GƯỜI DÙNG VÃNG LAI
3.2.4 U SE C ASES DÀNH CHO A DMIN /M OD
LUỒNG HOẠT ĐỘNG – ACTIVITY DIAGRAM
Tạo, xử lý yêu cầu trở thành Giảng viên
Tạo, cập nhật ví tiền Xử lý yêu cầu
Xuất bản / Tái bản khoá học
Tạo yêu cầu Xét duyệt yêu cầu
THIẾT KẾ - DESIGN
Thiết kế giao diện
Phác thảo giao diện cho các chức năng và mô tả hoạt động cho các tương tác của người sử dụng lên giao diện.
Giao diện đăng nhập/đăng ký
Giao diện khoá học/học tập
Giao diện tìm kiếm Giao diện giỏ hàng
Giao diện trang cá nhân/ví tiền
Price Max_Viewer Viewer TINYINT
ID_Lecturer ID_Category ID_Moder Name Thumbnail
Description Price Score Time_Upload Discount
ID_Use r ID_Cat e INT INT
BIGINT DATETIME DATETIME VARCHAR(32) NVARCHAR(1024) BIT
Time_Start Time_End Status
Email Password Name Avatar SigInToken SigInDevice SigInTime SigUpTime
VARCHAR(72) NVARCHAR(32) VARCHAR(256) VARCHAR(64) VARCHAR(32)
* ID_Course Process Certif_Mark Certif_Date Vote_Star Vote_Cmt Exam_Mark Exam_Date Exam_Exit Shared
FLOAT DATE DECIMAL(2,1) NVARCHAR(256) FLOAT
Email Password Name Gender Birthday Avatar CCCDfront CCCDback SigInToken SigInDevice
VARCHAR(72) NVARCHAR(32) BIT DATE VARCHAR(256) VARCHAR(256) VARCHAR(256) VARCHAR(64) VARCHAR(32) DATETIME DATETIME
Type Time Amount Content Status ID_TransPayment
VARCHAR(64) BIGINT NVARCHAR(256) DATETIME BIT
Giao diện giảng viên Giao diện admin
Thiết kế dữ liệu
T HUỘC TÍNH K IỂU M Ô TẢ R ÀNG BUỘC
ID_Old Int ID khóa học phiên bản cũ FK, NULL
ID Int ID khóa học PK, Tự tăng
ID_Lecturer Int ID giảng viên sở hữu FK, NOT NULL ID_Category Int ID phân loại khóa học FK, NOT NULL
ID_Moder Int ID moder phê duyệt FK, NOT NULL
Name Nvarchar Tên khóa học NOT NULL
Thumbnail Varchar Link ảnh thu nhỏ NULL
Description Nvarchar Mô tả khóa học NULL
Price Bigint Giá tiền khóa học NOT NULL
Score Tinyint Thang điểm NOT NULL
Time_Upload Datetime Thời điểm đăng khóa học NOT NULL
Discount Bigint Giảm giá NULL
Time_Start Datetime Thời điểm bắt đầu giảm giá NULL
Time_End Datetime Thời điểm kết thúc giảm giá NULL
Status Varchar Trạng thái khóa học NOT NULL
Cancel Nvarchar Lý do không được duyệt NULL
Activated Bit Trạng thái kích hoạt NULL
T HUỘC TÍNH K IỂU M Ô TẢ R ÀNG BUỘC
ID_Old Varchar ID tài nguyên bản cũ FK, NULL
ID Varchar ID tài nguyên PK, NOT NULL
ID_Course Int ID khóa học FK, NOT NULL
Name Nvarchar Tên hiển thị NOT NULL
Content Ntext Nội dung NOT NULL
Preview Varchar Thời gian xem thử NULL
T HUỘC TÍNH K IỂU M Ô TẢ R ÀNG BUỘC
ID Varchar ID câu hỏi PK, NOT NULL
ID_Course Int ID khóa học FK, NOT NULL
ID_Level Nvarchar ID thang điểm FK, NOT NULL
Content Ntext Nội dung câu hỏi NOT NULL
T HUỘC TÍNH K IỂU M Ô TẢ R ÀNG BUỘC
ID Varchar ID đáp án PK, NOT NULL
ID_Question Varchar ID câu hỏi FK, NOT NULL
Content Nvarchar Nội dung đáp án NOT NULL
Correct Bit Đáp án đúng/sai NOT NULL
T HUỘC TÍNH K IỂU M Ô TẢ R ÀNG BUỘC
ID Int Id tài khoản PK, Tự tăng
Email Varchar Tài khoản NOT NULL
Password Varchar Mật khẩu NOT NULL
Name Nvarchar Tên người dùng NULL
Avatar Varchar Ảnh đại diện NULL
SignInToken Varchar Mã đăng nhập UNIQUE
SignInDevice Varchar Thiết bị đăng nhập NULL
SignInTime Datetime Thời điểm đăng nhập NULL
SignUpTime Datetime Thời điểm đăng kí NOT NULL
Admin Bit Moder hay Admin NULL
Activated Bit Trạng thái tài khoản NOT NULL
T HUỘC TÍNH K IỂU M Ô TẢ R ÀNG BUỘC
ID Bigint ID sở hữu PK, Tự tăng
ID_User Int ID người dùng sở hữu FK, NOT NULL
ID_Course Int ID khóa học được sở hữu FK, NOT NULL
Certif_Mark Float Số điểm chứng chỉ NULL
Certif_Date Datetime Thời điểm đạt chứng chỉ NULL
Vote_Star Decimal Số sao người dùng đánh giá NULL
Vote_Cmt Nvarchar Đánh giá của người dùng NULL
Exam_Mark Float Số điểm thi NULL
Exam_Date Datetime Ngày thi NULL
Exam_Exit Int Số lần thoát trang lúc thi NULL
Shared Bit Có công khai hay không NOT NULL
T HUỘC TÍNH K IỂU M Ô TẢ R ÀNG BUỘC
ID Bigint ID hóa đơn NOT NULL
ID_User Int ID người dùng NOT NULL
Time Datetime Thời điểm thanh toán NOT NULL
Status Bit Trạng thái hóa đơn NULL
T HUỘC TÍNH K IỂU M Ô TẢ R ÀNG BUỘC
ID_Invoice Bigint ID hóa đơn FK, NOT NULL
ID_Own Bigint ID sở hữu FK, NOT NULL
Amount Bigint Số tiền thanh toán NOT NULL
Discount Bigint Số tiền giảm khi mua NULL
T HUỘC TÍNH K IỂU M Ô TẢ R ÀNG BUỘC
ID Int Id tài khoản PK, Tự tăng
Email Varchar Tài khoản NOT NULL
Password Varchar Mật khẩu NOT NULL
Name Nvarchar Tên người dùng NULL
Gender Bit Giới tính NULL
Birthday Date Ngày sinh NULL
Avatar Varchar Ảnh đại diện NULL
CCCDfront Varchar CCCD mặt trước NULL
CCCDback Varchar CCCD mặt sau NULL
SignInToken Varchar Mã đăng nhập UNIQUE
SignInDevice Varchar Thiết bị đăng nhập NULL
SignInTime Datetime Thời điểm đăng nhập NULL
SignUpTime Datetime Thời điểm đăng kí NOT NULL
Wallet Int ID ví tiền FK, NULL
Lecturer Bit Học viên hay Giảng viên NULL
Activated Bit Trạng thái tài khoản NOT NULL
T HUỘC TÍNH K IỂU M Ô TẢ R ÀNG BUỘC
ID Int Id phân loại PK, NOT NULL
Name Nvarchar Tên phân loại NOT NULL
T HUỘC TÍNH K IỂU M Ô TẢ R ÀNG BUỘC
ID_User Int Id người dùng FK, NOT NULL
ID_Cate Int Id phân loại FK, NOT NULL
T HUỘC TÍNH K IỂU M Ô TẢ R ÀNG BUỘC
ID Bigint ID bình luận PK, Tự tăng
ID_Own Bigint ID khoá học sở hữu của người dùng FK, NOT NULL ID_Resource Varchar ID tài nguyên người dùng bình luận FK, NOT NULL
ID_Parent Bigint ID bình luận phản hồi NULL
Content Nvarchar Nội dung bình luận NOT NULL
Time Datetime Thời điểm đăng bình luận NOT NULL
Activated Bit Trạng thái hiển thị NOT NULL
T HUỘC TÍNH K IỂU M Ô TẢ R ÀNG BUỘC
ID Tinyint ID danh mục báo cáo PK, Tự tăng
Name Nvarchar Tên hiển thị NOT NULL
Content Nvarchar Nội dung danh mục NOT NULL
T HUỘC TÍNH K IỂU M Ô TẢ R ÀNG BUỘC
ID Bigint ID báo cáo PK, Tự tăng
ID_RepoCate Tinyint ID danh mục báo cáo FK, NOT NULL
ID_User Int ID người gửi báo cáo FK, NOT NULL
ID_Comment Bigint ID bình luận bị báo FK, NOT NULL
Content Nvarchar Nội dung mô tả NULL
Time Datetime Thời điểm gửi báo cáo NOT NULL
Status Bit Trạng thái xử lí NULL
ID_Moder Int ID kiểm duyệt viên NULL
T HUỘC TÍNH K IỂU M Ô TẢ R ÀNG BUỘC
ID Tinyint ID gói quảng cáo PK, Tự tăng
Name Nvarchar Tên gói quảng cáo NOT NULL
Price Bigint Giá tiền gói quảng cáo NOT NULL
Expiry Int Thời hạn gói quảng cáo NOT NULL
Max_Viewer Int Số lượt hiển thị NOT NULL
T HUỘC TÍNH K IỂU M Ô TẢ R ÀNG BUỘC
ID_Pack Tinyint ID gói quảng cáo đã mua NOT NULL
ID_Course Int ID khóa học quảng cáo NOT NULL
Time Datetime Thời điểm mua gói quảng cáo NOT NULL Expiry Datetime Thời điểm hết hạn quảng cáo NOT NULL
Price Bigint Số tiền mua gói quảng cáo NOT NULL
Max_Viewer Int Số lượt hiển thị tối đa NOT NULL
Viewer Int Số lượt hiển thị đã tiếp cận NOT NULL
T HUỘC TÍNH K IỂU M Ô TẢ R ÀNG BUỘC
ID Varchar ID gói ngôn ngữ PK, NOT NULL
Name Nvarchar Tên hiển thị NOT NULL
T HUỘC TÍNH K IỂU M Ô TẢ R ÀNG BUỘC
ID Varchar ID khóa ngôn ngữ FK, NOT NULL
ID_Pack Varchar ID gói ngôn ngữ FK, NOT NULL
Value Nvarchar Giá trị hiển thị NOT NULL
T HUỘC TÍNH K IỂU M Ô TẢ R ÀNG BUỘC
ID Varchar ID thang điểm PK, NOT NULL
ID_Course Int ID khóa học FK, NOT NULL
Name Nvarchar Tên thang điểm NULL
Mark Tinyint Số điểm của thang điểm NOT NULL
T HUỘC TÍNH K IỂU M Ô TẢ R ÀNG BUỘC
ID Int ID ví tiền PK, Tự tăng
Password Varchar Mật khẩu ví NOT NULL
Bank_bin Int Mã số ngân hàng NOT NULL
Bank_num Varchar Số tài khoản thụ hưởng NOT NULL Bank_holder Varchar Tên người thụ hưởng NOT NULL
Balance Bigint Số dư ví NOT NULL
Activated Bit Trạng thái kích hoạt NOT NULL
T HUỘC TÍNH K IỂU M Ô TẢ R ÀNG BUỘC
ID Bigint ID giao dịch PK, Tự tăng
ID_Sender Int ID ví người gửi FK, NULL
ID_Receiver Int ID ví người nhận FK, NULL
Type Varchar Loại giao dịch NOT NULL
Time Datetime Thời điểm thực hiện NOT NULL
Amount Bigint Số tiền NOT NULL
Content Varchar Nội dung NULL
Status Varchar Trạng thái chuyển khoản NOT NULLID_TransPayment Varchar Mã giao dịch ngân hàng NULL
THỰC HIỆN – IMPLEMENT
Layout
TT Điều khiển Sự kiện Mô tả hoạt động
1 Cửa sổ Initialize Hiển thị trang chủ
2 Header Initialize Hiển thị thanh header
3 “Button” Khám Phá Click Hiển thị trang tìm kiếm
4 “Button” Giảng dạy Click Hiển thị trang giảng dạy
5 “Option” Tài khoản Click Hiện menu tài khoản
6 “Option” Ngôn ngữ Click Hiển thị menu ngôn ngữ
(Nếu là quản trị viên )
Click Hiển thị menu quản trị
8 “Link” Carousel (Khóa học) Click Hiển thị trang chi tiết khóa học
9 “Link” List Course (Khóa học)
Click Chuyển đến trang chi tiết khóa học
10 “Button” Khám phá thêm Click Hiển thị trang tìm kiếm
11 “Button” Explorer Click Hiển thị trang tìm kiếm
12 “Option” Câu hỏi nhanh Click Hiển thị câu trả lời cho câu hỏi thường gặp
13 Footer Initialize Hiển thị thanh Footer
TT Điều khiển Sự kiện Mô tả hoạt động
1 Cửa sổ Initialize Hiển thị trang đăng nhập
2 “Input” Địa chỉ email KeyType Thay đổi thông tin email
3 “Input” Mật khẩu KeyType Thay đổi thông tin mật khẩu
4 “Button” Đăng nhập Click Thực hiện chức năng đăng nhập
5 “Button” Ghi nhớ tôi ? Click Ghi nhớ phiên đăng nhập
6 “Button” Quản trị viên ? Click Thực hiện chức năng đăng nhập vào trang quản trị viên
TT Điều khiển Sự kiện Mô tả hoạt động
1 Cửa sổ Initialize Hiển thị trang đăng ký
2 “Input” Họ và tên KeyType Thay đổi thông tin họ và tên
3 “Input” Địa chỉ email KeyType Thay đổi thông tin email
4 “Button” Send Click Gửi mã OTP về email đã nhập
5 “Input” OPT KeyType Thay đổi mã OPT
6 “Input” Mật khẩu KeyType Thay đổi mật khẩu
7 Button” Đăng kí KeyType Thực hiện chức năng đăng kí tài khoản
Giao diện nhập email quên mật khẩu
TT Điều khiển Sự kiện Mô tả hoạt động
1 Cửa sổ Initialize Hiển thị trang quên mật khẩu
2 “Input” Email KeyType Nhập Email mật khẩu để được gửi mã khôi phục mật khẩu
3 “Button” Quản trị viên ? Click Nhập Email mật khẩu để được gửi mã khôi phục mật khẩu theo mail quản trị viên
4 “Input” OPT KeyType Thay đổi mã OPT
5 “Button” Xác nhận Click Hiển thị trang thay đổi mật khẩu
6 “Input” Mật khẩu mới KeyType Thay đổi mật khẩu mới
7 “Input” Xác nhận mật khẩu Click Xác nhận mật khẩu mới
8 “Button” Đổi mật khẩu Click Thực hiện chức năng đổi mật khẩu
9 “Button” Trở về Click Trở về giao diện nhập OTP
TT Điều khiển Sự kiện Mô tả hoạt động
1 Cửa sổ Initialize Hiển thị trang thông tin tài khoản
2 “Option” Tiêu chí tìm kiếm Click Hiện tiêu chí tìm kiếm
3 “Input” Tìm kiếm KeyType Thay đổi thông tin tìm kiếm
4 “Button” Tìm kiếm Click Thực hiện chức năng tìm kiếm
5 “Link” List Course (Khóa học) Click Chuyển đến trang chi tiết khóa học
Giao diện chi tiết Chi Tiết Khóa Học
TT Điều khiển Sự kiện Mô tả hoạt động
1 Cửa sổ Initialize Hiển thị trang chi tiết khóa học
2 “Option” Nội dung khóa học
Initialize Hiển thị các bài học của khóa học
3 “Button” Xem trước Click Hiển thị bài học được trải nghiệm thử
4 “Button” Được tạo bởi Click Hiển thị trang cá nhân giảng viên sở hữu khóa học
5 “Button” Thêm vào giỏ hàng
Click Thêm khóa học vào giỏ hàng
6 “Option” Tất cả lượt đánh giá
Click Hiển thị lựa chọn lọc đánh giá theo sao
7 “Comment” Bình luận Initialize Hiển thị bình luận
TT Điều khiển Sự kiện Mô tả hoạt động
1 Cửa sổ Initialize Hiển thị trang giỏ hàng
2 “Link” (Course) Click Chuyến đến trang chi tiết của khóa học
3 “Radio Button” Click Chọn khóa học để thanh toán
4 “Button” Thanh toán Click Chuyển đến trang thanh toán khóa học
TT Điều khiển Sự kiện Mô tả hoạt động
1 Cửa sổ Initialize Hiển thị trang tài khoản
2 “Tab” Khóa học sở hữu(Giảng viên) Click Hiện các khóa học đang sở hữu
3 “Tab” Chứng chỉ Click Hiện các chứng chỉ đang sở hữu
4 “Tab” Khóa học đang học Click Hiện các khóa học đang học
5 “Tab” Tài khoản Click Hiện thông tin cá nhân
6 “Tab” Trở thành giảng viên Click Hiển thị trang trở thành giảng viên
Giao diện Khóa Học Của Tôi (Nếu là Giảng Viên)
TT Điều khiển Sự kiện Mô tả hoạt động
1 Cửa sổ Initialize Hiển thị tất cả các khóa học sở hữu
2 “Input” Tìm kiếm Click Thay đổi thông tin tìm kiếm khóa học
3 “Button” Tạo Click Chuyển đến trang tạo khóa học
4 “Button” Course Click Chuyển đến trang chỉnh sửa khóa học đã chọn
TT Điều khiển Sự kiện Mô tả hoạt động
1 Cửa sổ Initialize Hiển thị trang ví tiền
2 “Option” Ngân hàng thụ hưởng Click Chọn ngân hàng thụ hưởng
3 “Input” Số tài khoản thụ hưởng KeyType Chọn loại áo theo từng sản phẩm
4 “Input” Mật khẩu ví KeyType Thay đổi mật khẩu ví
5 “Link” Quên mật khẩu Click Hiện giao diện nhập OPT để đổi mật khẩu
6 “Button” Cập nhật Click Cập nhật thông tin ví tiền
7 “Input” Số tiền KeyType Thay đổi số tiền
8 “Button” Nạp tiền Click Dẫn đến trang nạp số tiền đã nhập
9 “Button” Rút tiền Click Thực hiện chức năng gửi yêu cầu rút tiền
10 “List” Số dư hiện tại Initialize Hiện số dư, lịch sử giao dịch
Giao diện Mua Quảng Cáo
TT Điều khiển Sự kiện Mô tả hoạt động
1 Cửa sổ Initialize Hiển thị trang quảng cáo
2 “Tab” Khóa học đang chạy quảng cáo Click Hiển thị các khóa học đang chạy quảng cáo
3 “Options” Các khóa học quảng cáo Click Lọc theo các khóa học đang chạy quảng cáo, lịch sử quảng cáo
4 “Tab” Thiết lập quảng cáo Click Hiển thị các khóa học có thể mua quảng cáo
5 “Button” Course Click Hiện thị Modal chứa các gói quảng cáo có thể mua
Giao diện Quản Trị Viên – Duyệt khóa học
TT Điều khiển Sự kiện Mô tả hoạt động
1 Cửa sổ Initialize Hiển thị trang kiểm duyệt khóa học
2 “Option” Trạng thái Click Chọn trạng thái khóa học
3 “Link” Course Click Dẫn đến trang chi tiết duyệt khóa học
4 “Button” Từ chối Click Từ chối phê duyệt khóa học
5 “Button” Phê duyệt Click Đồng ý phê duyệt khóa học
6 “Link” Click HIển thị bài học được chọn
7 “Button” Vào Thi Click Vào xem bài thi
Giao diện Thống Kê (Nếu là giảng viên)
TT Điều khiển Sự kiện Mô tả hoạt động
1 Cửa sổ Initialize Hiển thị trang Thống Kê
2 “Tab” Doanh thu bán khóa học Click Hiện biểu đồ doanh thu bán khóa học
3 “Tab” Thống kê bán chạy Click Hiện thống kê theo khóa học bán chạy
Giao diện Quản Trị Viên (Moder/Admin) – Quản lý Người Dùng
TT Điều khiển Sự kiện Mô tả hoạt động
1 Cửa sổ Initialize Hiển thị trang quản lí người dùng
2 “Input” Tìm kiếm Keytype Thay đổi thông tin tìm kiếm
3 “Option” Vai trò Click Hiển thị danh mục vai trò
4 “Option” Trạng thái Click Hiển thị danh mục trạng thái
5 “Option” Giới tính Click Hiển thị danh mục giới tính
Giao diện Quản Trị Viên (Nếu là Admin) – Quản lí đa ngôn ngữ
TT Điều khiển Sự kiện Mô tả hoạt động
1 Cửa sổ Initialize Hiển thị trang quản lí đa ngôn ngữ
2 “Input” Tìm kiếm KeyType Thay đổi thông tin tìm kiếm
3 “Input” ID ngôn ngữ KeyType Nhập ID ngôn ngữ
4 “Input” Gói ngôn ngữ KeyType Thay đổi ngôn ngữ
Giao diện Quản Trị Viên (Nếu là Admin) – Thống kê
TT Điều khiển Sự kiện Mô tả hoạt động
1 Cửa sổ Initialize Hiển thị trang thống kê
2 “Input” KeyType Nhập tên sản phẩm
3 “Button” Tổng khóa học Click Hiển thị biểu đồ theo tổng doanh thu khóa học
4 “Button” Tổng hoa hồng Click Hiển thị biểu đồ theo tổng hoa hồng
5 “Button” Tổng tiền bán quảng cáo
Click Hiển thị biểu đồ theo tổng tiền bán quảng cáo
6 “Option” Mốc thời gian Click Chọn mốc thời gian để hiển thị
Sơ đồ kiến trúc công nghệ
Tổ chức server Tổ chức client
API
URL(“/api/courses”) Mô tả hoạt động
GetMapping(“/view”) Hàm truy vấn trang xem chi tiết khóa học
GetMapping(“/recommend”) Hàm truy vấn khóa học để gợi ý cho người dùng GetMapping(“/search”) Hàm tìm kiếm theo bộ lọc của người dùng GetMapping(“/users”) Hàm truy vấn danh sách học viên đã tham gia GetMapping(“/by”) Hàm lấy thông tin về khóa học của giảng viên GetMapping(“/by-lecturer”) Hàm lấy danh sách toàn bộ khóa học giảng viên PostMapping(“/create”) Hàm xử lý tạo khóa học
PostMapping(“/republishCourse”) Hàm xử lý tái bản một khóa học
PutMapping(“/update/{courseId}”) Hàm xử lý cập nhật khóa học
DeleteMapping(“/delete/{courseId}”) Hàm xử lý xóa khóa học
GetMapping("/getcoursebylecturer") Hàm lấy những khóa học mua quảng cáo
GetMapping("/getAllCourseNoAdsBuyByLecturer") Hàm lấy tất cả khóa học không có quảng cáo PostMapping(“/buyadspack”) Hàm mua gói quảng cáo cho khóa học
GetMapping("/getcourseyctaibanxuatban") Hàm lấy khóa học theo yêu cầu tái bản, xuất bản PostMapping("/tuchoiduyet") Hàm từ chối duyệt khóa học
PostMapping("/xacnhanduyet") Hàm duyệt khóa học xuất bản – tái bản
URL(“/api/adspack”) Mô tả hoạt động
PostMapping(“/addadspack”) Hàm thêm gói quảng cáo
PostMapping(“/updateadspack”) Hàm cập nhật gói quảng cáo
GetMapping(“/getAllAdsPack”) Hàm lấy tất cả gói quảng cáo
GetMapping(“/getkhmuaqc”) Hàm lấy khóa học mua quảng cáo theo gói
URL(“/api/cart”) Mô tả hoạt động
GetMapping() Truy vấn các khóa học trong giỏ hàng của người dùng PostMapping() Thêm khóa học vào giỏ hàng
DeleteMapping() Xóa khóa học khỏi giỏ hàng
PostMapping(“/paymentcourses”) Thanh toán khóa học
URL(“/api/categories”) Mô tả hoạt động
GetMapping() Lấy danh sách tất cả phân loại khóa học
URL(“/api/cloudinary”) Mô tả hoạt động
PostMapping(“/upload”) Hàm xử lí upload tài nguyên lên cloudinary
URL(“/api/invoice”) Mô tả hoạt động
GetMapping("/{idInvoice}") Hàm lấy hóa đơn
URL(“/api/language”) Mô tả hoạt động
GetMapping() Hàm lấy gói ngôn ngữ theo ID gói
GetMapping(“/pack”) Hàm lấy các gói ngôn ngữ
GetMapping(“/all”) Hàm lấy tất cả ngôn ngữ
PostMapping("/savekey") Hàm lưu khóa ngôn ngữ
DeleteMapping(“/delepack”) Hàm xóa gói ngôn ngữ
URL(“/api/moder”) Mô tả hoạt động
GetMapping() Hàm xử lý truy vấn thông tin profile của kiểm duyệt viên GetMapping(“/users”) Hàm xử lý truy vấn danh sách người dùng
GetMapping(“/moders”) Hàm xử lý truy vấn danh sách kiểm duyệt viên
PostMapping(“/signup”) Hàm xử lý đăng ký tài khoản kiểm duyệt viên
PostMapping(“/signin”) Hàm xử lý đăng nhập tài khoản kiểm duyệt viên
PostMapping(“/forgot”) Hàm xử lý quên mật khẩu tài khoản kiểm duyệt viên
PostMapping(“/verify/pass”) Hàm xử lý xác thực mật khẩu tài khoản kiểm duyệt viên
PostMapping(“/verify/opt”) Hàm xử lý xác thực OTP tài khoản kiểm duyệt viên
PostMapping(“/update”) Hàm xử lý cập nhật thông tin tài khoản kiểm duyệt viên
PostMapping(“/activated”) Hàm xử lý kích tài khoản kiểm duyệt viên
GetMapping(“/lecturer”) Hàm truy vấn danh sách người dùng với trạng thái giảng viên PostMapping(“/lecturer”) Hàm xử lý xét duyệt tài khoản người dùng thành giảng viên
URL(“/api/transactions”) Mô tả hoạt động
GetMapping (“/getAllTransactions”) Hàm lấy tất cả transaction của người dùng đang đăng nhập GetMapping (“/gettransruttien”) Hàm lấy tất cà transaction của giảng viên yêu cầu rút tiền GetMapping (“/updatestatus”) Hàm cập nhật trạng thái xử lý rút tiền của Admin
URL(“/api/question”) Mô tả hoạt động
GetMapping () Hàm xử lý truy vấn các câu hỏi thi cho người dùng thi
GetMapping (“/exam”) Hàm xử lý lấy bài thi trong khóa học cho giảng viên
PostMapping (“/exam”) Hàm xử lý lưu bài thi trong khóa học cho giảng viên
URL(“/api/user”) Mô tả hoạt động
GetMapping () Hàm xử lý truy vấn thông tin profile của người dùng PostMapping (“/signup”) Hàm xử lý đăng ký tài khoản người dùng
PostMapping (“/signin”) Hàm xử lý đăng nhập tài khoản người dùng
PostMapping (“/forgot”) Hàm xử lý quên mật khẩu tài khoản người dùng
PostMapping (“/verify/pass”) Hàm xử lý xác thực mật khẩu tài khoản người dùng PostMapping (“/verify/otp”) Hàm xử lý xác thực mã OTP
PostMapping (“/update”) Hàm xử lý cập nhật thông tin người dùng
PostMapping (“/activated”) Hàm xử lý hủy kích hoạt tài khoản người dùng
PostMapping (“/lecturer”) Hàm xử lý tạo yêu cầu thành giảng viên
URL(“/api/report”) Mô tả hoạt động
GetMapping (“/cates”) Hàm truy vấn danh mục báo cáo
PostMapping () Hàm nộp báo cáo
GetMapping () Hàm lấy các báo cáo
PostMapping("/process") Hàm xử lý báo cáo
URL(“/api/resource”) Mô tả hoạt động
GetMapping () Hàm xử lý truy vấn khóa học – tài nguyên GetMapping (“/by - resource/{courseId}”) Hàm lấy danh sách tài nguyên thuộc khóa học PostMapping("/create") Hàm xử lý tạo tài nguyên
PostMapping("/update") Hàm xử lý cập nhật tài nguyên
DeleteMapping("/delete") Hàm xử lý xoá tài nguyên
URL(“/api/own”) Mô tả hoạt động
PostMapping (“/vote”) Hàm đăng đánh giá khóa học
PostMapping (“/exam”) Hàm nộp bài thi
PostMapping (“/certf”) Hàm chứng nhận chứng chỉ
PostMapping("/view") Hàm thay đổi quyền chia sẻ khóa học
URL(“/api/wallet”) Mô tả hoạt động
PostMapping (“/create”) Hàm xử lý tạo ví tiền
PostMapping (“/update”) Hàm xử lý cập nhật ví tiền
PostMapping (“/changepass”) Hàm xử lý thay đổi mật khẩu ví
PostMapping (“/balance”) Hàm xử lý lấy số dư ví theo mã token và thiết bị đăng nhập PostMapping (“/naptien”) Hàm xử lý nạp tiền vào ví giảng viên
PostMapping (“/ruttien”) Hàm xử lý rút tiền ví giảng viên
PostMapping (“/huyruttien”) Hàm xử lý hủy yêu cầu rút tiền
URL(“/api/statistical”) Mô tả hoạt động
GetMapping (“/addoanhthuhoahong”) Lấy doanh thu từ hoa hồng
GetMapping (“/tkgoiquangcao”) Lấy thống kê gói quảng cáo
GetMapping (“/gvdoanhthusokh”) Lấy doanh thu khoá học cho giảng viên
GetMapping (“/gvtopkhbanchay”) Lấy top khoá học bán chạy của giảng viên
PaymentAPI: Dự án CMaster sử dụng các API thanh toán hoàn toàn miễn phí:
- API cổng thanh toán trên môi trường sandbox của VNPay
DEPLOY
Dự án CMaster sử dụng các dịch vụ hosting hoàn toàn miễn phí đến từ render.com
Bước 1: Tạo 1 trang tĩnh (Static Site)
Bước 2: Chọn kho lưu trữ chứa source code của dự án
Bước 3: Cấu hình Tên(3.1), Nhánh code triển khai(3.2)
Bước 1: Tạo 1 dịch vụ web (Web Service) từ kho lưu trữ git (Git repository)
Bước 2: Chọn kho lưu trữ chứa source code của dự án
Bước 3: Cấu hình Tên(3.1), Vị trí(3.2), Nhánh code triển khai(3.3), Runtime(3.4), Phí dịch vụ(3.5)
Chức năng tạo khoá học
Tên test case Dữ liệu test Các bước test Kết quả mong muốn
Người test Để trống dữ liệu khi thêm có báo lỗi không?
2, Hiện Modal thêm khóa học (để trống các input)
3, Hiện các báo lỗi tương ứng dưới input mỗi trường
Có hiện thông báo Pass
Tạo khóa học khi chưa tạo ví
1 Nhập liệu các trường tương ứng
2, Hiện thông báo tạo khóa học thất bài và Đảm bảo rằng ví tiền đã được tạo
3, Chuyển sang trang tạo ví
Có hiện thông báo "tạo khóa học thất bài và Đảm bảo rằng ví tiền đã được tạo"
Vẫn còn ở trang tạo khóa học
Tạo khóa học khi đã có ví
1, Nhập liệu các trường tương ứng
2, Hiện thông báo tạo khóa học thành công
3, Chuyển sang trang chi tiết khóa học của giảng viên
Có hiện thông báo Pass Nguyễn
Kiểm tra trạng thái của khóa học khi vừa tạo
1, Mở trang quản lý khóa học
2, Xem trạng thái của khóa học
2, Khóa học phải ở trạng thái "Chỉnh sửa và chưa được kích hoạt
Hiện đúng trạng thái Pass Để trống các trường dữ liệu của khóa học chi tiết. Ảnh: ""
1, Để trống các trường tương ứng
2, Chọn xuất bản khóa học
2, Hiện các báo lỗi tương ứng dưới input mỗi trường
Có hiện thông báo Pass
Xuất bản khóa học khi chưa tạo tài nguyên
Chưa có bất kì tài nguyên nào của khóa học
1, Chọn xuất bản khóa học
"Vui lòng tạo tài nguyên cho bài học"
Có hiện thông báo Pass Nguyễn
Xuất bản khóa học thành công Đã có tài nguyên của khóa học Ảnh:
1, Chọn xuất bản khóa học
1, Hiện thông báo xuất bản thành công
2, Các input của khóa học bị khóa và nút Thêm và Xóa biến mất
Có hiện thông báo Pass
Kiểm tra trạng thái khóa học vừa xuất bản None
1, Mở trang quản lý khóa học
2, Xem trạng thái của khóa học
2, Khóa học phải ở trạng thái "Đã gửi yêu cầu và chưa được kích hoạt
Hiện đúng trạng thái Pass
Kiểm tra khóa học khi đã được MODER duyệt
1, Mở trang quản lý khóa học
2, Xem trạng thái của khóa học
2, Khóa học phải ở trạng thái "Đã được duyệt và Đã kích hoạt
Hiện đúng trạng thái Pass
Kiểm tra khóa học khi bị
MODER từ chối Đã có tài nguyên của khóa học Ảnh:
Mô tả: "đây là khóa học lập trình"
1 Xem lý do từ chối (Ảnh không phù hợp)
3, Nhấn nút gửi lại yêu cầu
1, Hiện thông báo gửi lại yêu cầu thành công
2, Các input của khóa học bị khóa và nút Thêm và Xóa biến mất
Có hiện thông báo Pass
Khi khóa học đã được giảng viên mua quảng cáo thì có được xóa không?
Khóa học đã mua quảng cáo
1, Mở trang chi tiết khóa học
2, Xem trạng thái của nút xóa
2, Nút xóa ẩn đi và hiện nút Tạm khóa khóa học nút xóa bị ẩn và nút tạm khóa xuất hiện
Khi khóa học đã được học viên mua thì có được xóa không?
Khóa học đã có người mua
1, Mở trang chi tiết khóa học
2, Xem trạng thái của nút xóa
2, Nút xóa ẩn đi và hiện nút Tạm khóa khóa học nút xóa bị ẩn và nút tạm khóa xuất hiện
Xóa khóa học thành công
Khóa học chưa mua quảng cáo hoặc chưa có bất kì hóa đơn mua nào
1, Mở trang chi tiết khóa học
2, Nhấn nút xóa khóa học
2, Hiện thông báo xóa khóa học thành công
3, Chuyển về trang quản lý khóa học
Có hiện trạng thái Pass Nguyễn
Thực hiện tạm khóa khóa học
Khóa học đã có người mua hoặc đã mua quảng cáo
1, Mở trang chi tiết khóa học
2, Nhấn nút tạm khóa khóa học
2, Hiện thông báo tạm khóa khóa học thành công
Có hiện thông báo Pass
Kiểm tra trạng thái của khóa học đã tạm khóa
1, Mở trang quản lý khóa học
2, Xem trạng thái của khóa học
2, Khóa học phải ở trạng thái "khóa học tạm ngưng bán"
Hiện đúng trạng thái Pass
Tái bản khóa học thành công None
1, Mở trang chi tiết khóa học
2, Nhấn vào nút tái bản khóa học
2, Tạo ra bảo sao của khóa học vừa tái bản
3, Vào trang quản lý khóa học thấy khóa học vừa tái bản có kèm (Tái Bản)
Khóa học được tái bản thành công và hiện đúng trạng thái tái bản
Tái bản khóa học thất bại
Khóa học cần tái bản đã được tái bản
1, Mở trang chi tiết khóa học
2, xem trạng thái nút tái bản
2, Nút tái bản bị disabled và hiện chữ khóa học đã được tái bản
Hiện đúng trạng thái Pass
Nguyễn Hữu Hoàng Đăng nhập
Tên test case Dữ liệu test Các bước test
None 1 Nhập URL 1 Các button, textbox, đúng mockup Đúng Pass Đặng Thế Huy
Yêu cầu đăng nhập với tài khoản
Check vào ô CheckBox: "Ghi nhớ tôi" và không chấp nhận cookie
2 Nhập liệu Username và Password
3 Click vào button Đăng Nhập
1 Mã Hash khớp với trong CSDL
3 Thông tin được ghi nhớ bằng cookie
4 Chuyển hướng về Bảng điều khiển. Đăng nhập thành công, không thể ghi nhớ vì chưa chấp nhận cookie
Check vào ô CheckBox: "Ghi nhớ tôi" và chấp nhận cookie
2 Nhập liệu Username và Password
3 Click vào button Đăng Nhập
1 Mã Hash khớp với trong CSDL
3 Thông tin được ghi nhớ bằng cookie
4 Chuyển hướng về Bảng điều khiển. Đúng Pass Đặng
Yêu cầu đăng nhập với tài khoản sai thông tin
2 Không nhập Username và Password
3 Click vào button Đăng Nhập
1 Mã Hash không khớp với trong CSDL
2 Đăng nhập không thành công
3 Hiện thông báo thông tin đăng nhập không chính xác. hiển thị:"thông tin đăng nhập không hợp lệ" mã hash không khớp với csdl
Pass Đặng Thế Huy Đăng nhập với tài khoản
Check vào ô CheckBox: "Ghi nhớ tôi" và chấp nhận cookie
2 Nhập liệu Username và Password
3 Click vào button Đăng Nhập
1 Mã Hash khớp với trong CSDL
3 Thông tin được ghi nhớ bằng cookie
4 Chuyển hướng về Bảng điều khiển.
5.Hiện thị các chức năng phân quyền Giảng viên Đăng nhập không thành công
Check vào ô CheckBox: "Ghi nhớ tôi" và chấp nhận cookie
2 Nhập liệu Username và Password
3 Click vào button Đăng Nhập
1 Mã Hash khớp với trong CSDL
3 Thông tin được ghi nhớ bằng cookie
4 Chuyển hướng về Bảng điều khiển.
5.Hiện thị các chức năng phân quyền Giảng viên Đúng Pass Đặng Thế Huy Đăng nhập với tài khoản
Giảng viên sai thông tin
Check vào ô CheckBox: "Ghi nhớ tôi" và chấp nhận cookie
2 Nhập liệu Username và Password
3 Click vào button Đăng Nhập
1 Đăng nhập không thành công và báo lỗi về phía người dùng Đúng Pass Đặng Thế Huy Đăng nhập với tài khoản
Check button Admintrator để đăng nhập cho phân quyền mod/admin
Check vào ô CheckBox: "Ghi nhớ tôi" và chấp nhận cookie
2 Nhập liệu Username và Password
3 Click vào button Đăng Nhập
1 Mã Hash khớp với trong CSDL
3 Thông tin được ghi nhớ bằng cookie
4 Chuyển hướng về Bảng điều khiển.
5.Hiện thị các chức năng phân quyền Kiểm duyệt viên Đúng Pass Đặng Thế Huy
Check button Admintrator để đăng nhập cho phân quyền mod/admin
Check vào ô CheckBox: "Ghi nhớ tôi" và chấp nhận cookie
2 Nhập liệu Username và Password
3 Click vào button Đăng Nhập
1 Thông tin không hợp lệ, báo lỗi đăng nhập không thành công Đúng Pass Đặng
Thế Huy Đăng nhập với tài khoản
Check button Admintrator để đăng nhập cho phân quyền mod/admin
Check vào ô CheckBox: "Ghi nhớ tôi" và chấp nhận cookie
2 Nhập liệu Username và Password
3 Click vào button Đăng Nhập
1 Mã Hash khớp với trong CSDL
3 Thông tin được ghi nhớ bằng cookie
4 Chuyển hướng về Bảng điều khiển.
5.Hiện thị các chức năng phân quyền Quản trị viên Đúng Pass Đặng Thế Huy
Check button Admintrator để đăng nhập cho phân quyền mod/admin
Check vào ô CheckBox: "Ghi nhớ tôi" và chấp nhận cookie
2 Nhập liệu Username và Password
3 Click vào button Đăng Nhập
1 Thông tin không hợp lệ, báo lỗi đăng nhập không thành công Đúng Pass Đặng Thế Huy
Trong thời gian làm việc chúng em đã rút cho nhóm nói chung cũng như bản thân nói riêng những kinh nghiệm quý giá khi hoạt động nhóm, thực hiện dự án.
Chúng em cảm ơn thầy hướng dẫn Trần Quang Bình đã góp ý, giúp đỡ chúng em hoàn thành đồ án này và được ra bảo vệ tốt nghiệp trước hội đồng nhà trường.
-Cải thiện khả năng phân tích, xây dựng Database dự án.
-Cải thiện khả năng làm việc nhóm giữa các thành viên.
-Tiếp xúc nhiều vấn đề thực tế xảy ra khi thực hiện dự án và đúc kết kinh nghiệm HẠN CHẾ
- Lần đầu tiếp cận đề tài nên còn hạn chế về các tương tác người dùng.
- Thời gian dự án có hạn - chưa thể hoàn thiện các chức năng cần phát triển thêm.
- Kinh phí duy trì hosting nên trải nghiệm người dùng chưa được mượt mà.
Với những chức năng còn thiếu sót hoặc chưa hoàn thiện sẽ được phát triển để có thể ứng dụng vào thực tế. Ứng dụng blockchain để tạo ra NFT cho chứng chỉ học của người dùng
TỔNG KẾT
Trong thời gian làm việc chúng em đã rút cho nhóm nói chung cũng như bản thân nói riêng những kinh nghiệm quý giá khi hoạt động nhóm, thực hiện dự án.
Chúng em cảm ơn thầy hướng dẫn Trần Quang Bình đã góp ý, giúp đỡ chúng em hoàn thành đồ án này và được ra bảo vệ tốt nghiệp trước hội đồng nhà trường.
-Cải thiện khả năng phân tích, xây dựng Database dự án.
-Cải thiện khả năng làm việc nhóm giữa các thành viên.
-Tiếp xúc nhiều vấn đề thực tế xảy ra khi thực hiện dự án và đúc kết kinh nghiệm HẠN CHẾ
- Lần đầu tiếp cận đề tài nên còn hạn chế về các tương tác người dùng.
- Thời gian dự án có hạn - chưa thể hoàn thiện các chức năng cần phát triển thêm.
- Kinh phí duy trì hosting nên trải nghiệm người dùng chưa được mượt mà.
Với những chức năng còn thiếu sót hoặc chưa hoàn thiện sẽ được phát triển để có thể ứng dụng vào thực tế. Ứng dụng blockchain để tạo ra NFT cho chứng chỉ học của người dùng