1. Trang chủ
  2. » Giáo Dục - Đào Tạo

báo cáo dự án tốt nghiệp website thương mại khoá học online courses master

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

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Website thương mại khoá học online Courses Master
Tác giả Trương Thành Đạt, La Đặng Bình An, Trần Tiến Sỹ, Đặng Thế Huy, Nguyễn Hữu Hoàng
Người hướng dẫn Thầy Trần Quang Bình
Trường học Trường Cao Đẳng FPT Polytechnic
Chuyên ngành Ứng dụng phần mềm
Thể loại Báo cáo dự án tốt nghiệp
Năm xuất bản 2023
Thành phố Tp Hồ Chí Minh
Định dạng
Số trang 60
Dung lượng 11,27 MB

Cấu trúc

  • PHẦN 1: GIỚI THIỆU ĐỀ TÀI (6)
    • 1.1 Giới thiệu dự án (6)
    • 1.2 Ban dự án (6)
  • PHẦN 2: KHẢO SÁT – CMASTER (7)
    • 2.1 Yêu cầu của khách hàng (8)
    • 2.2 Kế hoạch dự án (8)
    • I. Thiết Kế Dự Án (8)
    • II. Code Front-end (9)
    • III. Code Back-end (9)
    • IV. Test (9)
    • V. Triển Khai và Phát Hành (9)
  • PHẦN 3: PHÂN TÍCH - ANALYSIS (10)
    • 3.1 Sơ đồ ERD (10)
    • 3.2 Sơ đồ Use Cases (10)
      • 3.2.1 Use Cases dành cho Giảng viên (11)
      • 3.2.2 Use Cases dành cho học viên (Người dùng thông thường) (11)
      • 3.2.3 Use Cases dành cho Người dùng vãng lai (12)
      • 3.2.4 Use Cases dành cho Admin/Mod (12)
  • PHẦN 4: LUỒNG HOẠT ĐỘNG – ACTIVITY DIAGRAM (13)
  • PHẦN 5: THIẾT KẾ - DESIGN (16)
    • 5.1 Mô hình công nghệ (16)
    • 5.2 Thiết kế giao diện (16)
    • 5.3 Thiết kế dữ liệu (20)
  • PHẦN 6: THỰC HIỆN – IMPLEMENT (28)
    • 6.1 Layout (28)
    • 6.2 Sơ đồ kiến trúc công nghệ (45)
    • 6.3 API (46)
    • 6.4 DEPLOY (51)
      • 6.4.1 Front-end (51)
      • 6.4.2 Back-end (52)
  • PHẦN 7: KiỀM THỬ - TESTING (0)
  • PHẦN 8: TỔNG KẾT (58)

Nội dung

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

Ngày đăng: 15/08/2024, 13:56

w