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

Báo Cáo Môn Project 3 Ngành Công Nghệ Thông Tin Thiết Kế Sàn Giao Dịch Nft Với Công Nghệ Blockchain.pdf

48 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 đề Thiết kế sàn giao dịch NFT với công nghệ Blockchain
Tác giả Trần Thanh Sơn
Người hướng dẫn ThS Nguyễn Văn Hiên, Đinh Thị Hà Ly
Trường học Trường Công nghệ Thông tin và Truyền thông, Đại học Bách khoa Hà Nội
Chuyên ngành Công nghệ Thông tin
Thể loại Project 3 (Dự án môn học)
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 48
Dung lượng 6,08 MB

Cấu trúc

  • CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI (6)
    • 1.1. Mục tiêu và phạm vi đề tài (0)
    • 1.2. Định hướng giải pháp (0)
    • 1.3. Bố cục báo cáo (0)
  • CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ BÀI TOÁN (11)
    • 2.1. Khảo sát hiện trạng (11)
      • 2.1.1. Về khách hàng (11)
      • 2.1.2. Về các hệ thống đã có (12)
      • 2.1.3. Về ứng dụng tương tự (12)
    • 2.2. Tổng quan chức năng (12)
      • 2.2.1. Biểu đồ UseCase tổng quan (12)
      • 2.2.2. Biểu đồ use case phân rã từng module (15)
      • 2.2.3. Biểu đồ hoạt đông (Activity diagram) (0)
      • 2.2.4. Đặc tả chức năng (0)
    • 2.3. Yêu cầu phi chức năng (0)
      • 2.3.1. Yêu cầu về hiệu năng (0)
      • 2.3.2. Yêu cầu về độ tin cậy (0)
      • 2.3.3. Yêu cầu về độ dễ dùng của website (0)
      • 2.3.4. Yêu cầu về tính dễ bảo trì (0)
  • CHƯƠNG 3: CÔNG NGHỆ VÀ THUẬT TOÁN SỬ DỤNG (0)
    • 3.1. Ngôn ngữ HTML và CSS (0)
    • 3.2. Ngôn ngữ kịch bản JavaScript (0)
      • 3.2.1. JavaScript là gì? (0)
      • 3.2.2. Ứng dụng nổi bật của JavaScript (0)
      • 3.2.3. Client-side rendering (CSR) vs Server-side rendering (SSR) (16)
      • 3.2.4. JavaScript Framework NextJs (19)
    • 3.3. Ngôn ngữ lập trình Java (19)
      • 3.3.1. Giới thiệu (19)
      • 3.3.2. Giới thiệu Spring Framework và Spring boot (21)
    • 3.4. Hệ quản trị cơ sở dữ liệu (23)
      • 3.4.1. Các khái niệm (23)
      • 3.4.2. Chức năng của hệ cơ sở dữ liệu (23)
      • 3.4.3. MySQL (24)
      • 3.4.4. MongoDB (25)
      • 3.4.5. So sánh SQL và NoSQL (26)
      • 3.4.6. RESTful API (27)
  • CHƯƠNG 4: PHÁT TRIỂN VÀ TRIỂN KHAI ỨNG DỤNG (29)
    • 4.1. Thiết kế kiến trúc (29)
      • 4.1.1. Lựa chọn kiến trúc phần mềm (29)
      • 4.1.2. Thiết kế tổng quan (32)
    • 4.2. Thiết kế chi tiết (33)
      • 4.2.1. Thiết kế giao diện (33)
      • 4.2.2. Thiết kế lớp (0)
      • 4.2.3. Thiết kế cơ sở dữ liệu (34)
    • 4.3. Xây dựng ứng dụng (40)
      • 4.3.1. Thư viện va công cụ sử dụng (40)
      • 4.3.2. Kết quả đạt được (40)
      • 4.3.3. Minh họa chức năng chính (0)
    • 4.4. Kiểm thử (45)
    • 4.5. Triển khai (46)
  • CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN (46)
    • 5.1. Kết quả đạt được (46)
    • 5.2. Kết luận (46)
    • 5.3. Hướng phát triển hệ thống giai đoạn tiếp theo (47)
  • TÀI LIỆU THAM KHẢO (48)

Nội dung

GIỚI THIỆU ĐỀ TÀI

PHÂN TÍCH THIẾT KẾ BÀI TOÁN

Khảo sát hiện trạng

Ngày càng có nhiều doanh nghiệp lựa chọn website dạng thương mại điện tử thay cho website truyền thống Những doanh nghiệp lớn đã ứng dụng dạng website này và gặt hái được con số ấn tượng về lượng truy cập và doanh thu: Thế Giới Di Động, Điện Máy Xanh, Bách Hóa Xanh Ngay cả các cửa hàng kinh doanh mỹ phẩm, nhà thuốc, thời trang cũng xây dựng website bán hàng có tích hợp tính năng và thanh toán.

Mục đích của việc thiết kế website dạng thương mại điện tử nhằm tránh lệ thuộc vào các sàn thương mại điện tử, cũng như tăng độ tiếp cận của doanh nghiệp đến với khách hàng Theo số liệu từ Statista, độ tuổi mua sắm trên sàn thương mại điện tử nhiều nhất là từ 25-34 Vì vậy, nếu đối tượng khách hàng tiềm năng của doanh nghiệp nằm trong phân khúc 25-34 thì việc thiết kế website thương mại điện tử là điều cực kỳ cần thiết.

Vậy hiện trạng nhu cầu của khách hàng hiện nay đã thay đổi như thế nào?

Và các hệ thống hiện tại đã và đang đáp ứng như thế nào đối với nhu cầu của người dùng? Chúng ta hãy cùng đi tìm hiểu.

2.1.1.Về khách hàng a Website cung cấp đầy đủ sản phẩm, dịch vụ và tiện ích

Khi khách hàng truy cập vào website là bạn đã nắm trong tay cơ hội biến

“người dùng” thành “khách mua hàng” Do đó sản phẩm và dịch vụ phải được sắp xếp theo từng danh mục rõ ràng Ngoài ra, khi khách hàng click vào để tìm hiểu bất kỳ sản phẩm nào thì sản phẩm đó phải có đầy đủ thông tin, thương hiệu, mô tả, xuất xứ, giá cả để khách hàng yên tâm lựa chọn mua hàng. b Giao diện thu hút khách hàng tiềm năng

Giao diện thu hút là một trong những yếu tố để người dùng dành nhiều thời gian để ở lại website của bạn Việc thiết kế giao diện phải dựa vào việc hiểu khách hàng tiềm năng Khách hàng ở độ tuổi nào, sở thích, thói quen mua sắm từ đó bạn sẽ thiết kế giao diện để thu hút khách hàng tiềm năng của bạn Nếu khách hàng tiềm năng không thấy giao diện của website bạn có sự thu hút, thì cho dù có nhiều người khen đẹp thì cũng không để tạo ra doanh thu tốt.

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly c Giao diện tương thích với thiết bị di động

Thiết bị di động ngày càng chiếm ưu thế hơn so với máy tính và laptop Do đó, khi thiết kế giao diện và hình ảnh cho website, bạn nên lưu ý kiểm tra lại một lần nữa xem đã hiển thị đúng kích thước trên thiết bị di động hay chưa Nếu khi hiển thị trên điện thoại hình ảnh bị sai tỷ lệ hoặc bố cục chữ bị rối mắt thì bạn nên điều chỉnh để tránh việc khách hàng cảm thấy khó chịu với giao diện và thoát ra ngoài.

2.1.2.Về các hệ thống đã có

Ngày càng có nhiều doanh nghiệp lựa chọn website dạng thương mại điện tử thay cho website truyền thống Những doanh nghiệp lớn đã ứng dụng dạng website này và gặt hái được con số ấn tượng về lượng truy cập và doanh thu: Thế Giới Di Động, Điện Máy Xanh, Bách Hóa Xanh Ngay cả các cửa hàng kinh doanh mỹ phẩm, nhà thuốc, thời trang cũng xây dựng website bán hàng có tích hợp các tính năng và thanh toán, theo dõi đơn hàng.

2.1.3.Về ứng dụng tương tự

Về các ứng dụng tương tự trên thị trường, cũng đã phát triển các tính năng và nhu cầu của khách hàng như:

- Cung cấp đầy đủ sản phẩm, dịch vụ và tiện ích.

- Thiết kế giao diện dễ dùng và hiện đại.

- Tích hợp đa dạng các phương thức thanh toán

- Tương thích với các thiết bị di động.

- Cung cấp đầy đủ thông tin của doanh nghiệp.

Tổng quan chức năng

2.2.1 Biểu đồ UseCase tổng quan

- Authentication: Cho phép khách hàng và quản trị viên đăng nhập bằng tài khoản đăng ký, đăng nhập bằng Facebook, thay đổi password, đăng xuất ra khỏi website.

- Quản lý user: Cho phép quản trị viên xem danh sách khách hàng, thêm/sửa/xóa tài khoản khách hàng.

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly

- Quản lý kho hàng: Cho quản trị viên theo dõi và quản lý kho hàng, có thể thêm/sửa/xóa các mặt hàng trong kho.

- Thêm vào giỏ hàng: Cho phép khách hàng thêm sản phẩm muốn mua vào giỏ hàng

- Tạo mới một đơn hàng: Cho phép khách hàng đặt một đơn hàng và hiển thị đơn hàng mới vào trang admin để quản lý.

Xác nhận các tác nhân tham gia hệ thống:

1 Admin Quản lý tài khoản khách hàng, quản lý kho, xem/thay đổi thông tin khách hàng, xem/thay đổi thông tin mặt hàng.

2 Customer Đăng ký tài khoản, đăng nhập, xem/thay đổi thông tin của mình, xem sản phẩm, thêm vào giỏ hàng.

PROJECT 2 Giáo viên hướng dẫn: Lê Th

Sơ đồ UseCase tổng quát của hệ thống

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly

1 Authentication Cho phép người dùng đăng ký, đăng nhập vào hệ thống website, thay đổi password.

2 Quản lí khách hàng Quản trị viên có thể xem danh sách khách hàng, Nhân viên thêm/sửa/xóa tài khoản khách hàng.

3 Quản lý kho hàng Quản trị viên có thể xem danh sách mặt hàng,

Có thể thêm/sửa/xóa mặt hàng trong kho hàng.

4 Thêm vào giỏ hàng Khách hàng xem danh sách sản phẩm, xem chi tiết sản phẩm, và chọn thêm vào giỏ hàng.

5 Khách hàng đặt hàng Khách hàng vào giỏ hàng, xem giỏ hàng và đặt đơn hàng đang có trong giỏ.

6 Quản lí đơn hàng Quản trị viên vào trang danh sách các đơn hàng, xem chi tiết/sửa/xóa đơn hàng

2.2.2 Biểu đồ use case phân rã từng module

2.2.2.1 Phân rã use case “Đăng nhập”

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly -Tính năng kiểm tra người dùng: Khi nhập tên người dùng mong muốn, Javascript có thể lập tức dò cơ sở dữ liệu xem lịch sử đặt trước của người dùng Tính năng này hoàn toàn tự động, không cần tải lại trang.

-Tính năng cập nhật liên tục: Không tốn thời gian tải lại, trang có thể tự động cập nhật.

-Tính năng gợi ý từ khóa trên khung tìm kiếm: Tự động nhận diện, tính toán xem bạn đang muốn gì và hiện ra list gợi ý liên quan nhất.

Mọi ứng dụng đều trở nên hữu ích và thú vị hơn khi chúng được kích hoạt tự động. Javascript cho phép thực hiện chuỗi hành động đã được lên kịch bản sẵn ngay khi người dùng mới truy cập vào trang.

3.2.3 Client-side rendering (CSR) vs Server-side rendering (SSR)

Theo truyền thống, khi xây dựng các trang web hay ứng dụng web đều có chiến lược chung là đó là server sẽ chuẩn bị sẵn các nội dung HTML để gửi xuống trình duyệt. Các nội dung này sẽ được trình duyệt kết hợp với CSS để tạo thành tranh web cho bạn sử dụng.

Sau này, xuất hiện các Javascript framework hiện đại như ReactJS, VueJS… đã làm thay đổi cách tiếp cận khi phát triển ứng dụng web, cách tiếp cận mới mang tới khả năng giảm gánh nặng cho server, xây dựng mô hình phân tán thay vì tập trung tại server. Đến đây, rất nhiều diễn đàn lại nảy sinh tranh luận gay gắt xem cách tiếp CSR hay SSR, cái nào tốt hơn, cái nào tối ưu?

Server Side Rendering (SSR) là gì? Đây là cơ chế cổ điển, được dùng rất phổ biến từ xưa đến nay rồi Gọi là Server Side Rendering vì mọi thứ sẽ được xử lý tập trung ở phía server.

Về cơ bản thì luồng của cơ chế này như hình bên dưới đây:

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly

Có thể tóm gọn lại gồm các bước như sau:

Khi trình duyệt gửi một request tới server, server sẽ xử lý logic, lấy dữ liệu trong database, làm bla bla… cuối cùng tạo sẵn nội dung HTMl và trả lại cho trình duyệt. Trình duyệt nhận được nội dung HTML, dựa vào nội dung HTML mà nó có thể tải thêm các file javascript hay CSS để hiển thị nội dung trang HTML

Có lẽ phần lớn các trang web kiểu như vnexpress, dantri, vntalking… đều đang sử dụng cách tiếp cận này.

Client Side rendering (CSR) là gì ?

Cách tiếp cận này thì hoàn toàn khác với cách SSR Hiểu đơn giản với cách tiếp cận này thì việc render HTML, CSS sẽ được thực hiện ở client Khi trình duyệt gửi yêu cầu tới server, máy chủ sẽ gửi một loạt tài nguyên cần thiết để khởi tạo và chạy ứng dụng web, từ đó việc render nội dung sẽ thực hiện trên trình duyệt.

Kiểu tiếp cận này khá phổ biến với các ứng dụng web kiểu Single Page (SPA – Single Page Application), ứng dụng sẽ lấy dữ liệu thông qua REST API.

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly

Các ứng dụng kiểu SPA sẽ không phải tải lại trang mỗi khi nội dung thay đổi Với các

JS framework hiện đại như React, Vue, Angular… đều hỗ trợ để xây dựng ứng dụng kiểu như vậy.

Vậy khi nào sử dụng SSR hay CSR?

- Client-side rendering Ứng dụng có giao diện phức tạp, tương tác nhiều với người dùng

Dữ liệu lớn và động

Tập trung vào các trang web phục vụ lượng lớn người dung

- Server-side rendering Đồ họa phức tạp, chuyên sâu vào tính toán, cần sức mạnh xử lý của server.

Dữ liệu nhỏ, ít thay đổi

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly

JavaScript Framework là thư viện được xây dựng dựa vào ngôn ngữ lập trình JavaScript Từ đó, mỗi framework được tạo ra để phục cho từng lĩnh vực khác nhau Hiện nay, có rất nhiều JavaScript Framework thông dụng như: NuxtJs, NextJs, VueJs, ReactJs, Angular…

Trong đó VueJs, ReactJs và Angular là những framework rất mạnh để tạo một trang web nhưng không mang lại khả năng tối ưu SEO cho một trang web bán hàng NextJs nổi lên là một framework có nhiều người và công ty tin tưởng sử dụng vì nhiều tính năng hữu ích, giúp nhanh chóng xây dựng một ứng dụng web bán hàng Next.js là một open-source React front-end framework được bổ sung các tính năng như Server Side Rendering (SSR) và Static Site Generation (SSG) Next.js được xây dựng dựa trên thư viện React có nghĩa là Next.js lấy những lợi thế của React và bổ sung các tính năng.

Server Side Rendering: SSR cho phép máy chủ access tất cả required data và xử lý javaScript để hiển thị lên trang web Theo cơ chế này thì hầu hết các xử lý logic đều ở phía máy chủ Trong đó, máy chủ thực hiện xử lý và tiến hành các thao tác với cơ sở dữ liệu để thông dịch (render) ra thành HTML, sau đó gửi phản hồi cho khách hàng Trình duyệt của khách hàng cũng sẽ chỉ hiển thị HTML này.

Search Engine Optimization (SEO): Sử dụng SSR cũng mang lại cho bạn lợi thế về

SEO, giúp trang web của bạn hiển thị cao hơn trên các trang kết quả của công cụ tìm kiếm SSR làm cho các trang web xếp hạng tốt hơn cho SEO vì chúng tải nhanh hơn và nhiều nội dung trang web có thể được quét bởi các trình theo dõi SEO.

Next.js cũng cho phép bạn chỉnh sửa thẻ của một trang web, điều mà bạn không thể thực hiện trong React Thẻ góp phần vào xếp hạng SEO của trang web.

3.3 Ngôn ngữ lập trình Java

Java là ngôn ngữ lập trình đa nền tảng (cross-platform), được phát triển bởi James Gosling tại Sun Microsystems (nay là Oracle Corporation) Ngôn ngữ lập trình này ra đời vào năm 1995 và được thiết kế để có thể chạy trên các nền tảng khác nhau, từ máy tính cá nhân đến thiết bị di động, các máy chủ và thiết bị nhúng.

Java sử dụng cấu trúc lập trình hướng đối tượng (object-oriented programming

- OOP) và được xây dựng trên cơ sở của ngôn ngữ lập trình C++ Nó cung cấp một môi trường chạy ảo (virtual machine) gọi là Java Virtual Machine (JVM),

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly giúp các chương trình Java có thể chạy trên nhiều nền tảng khác nhau mà không cần phải biên dịch lại.

Hiện tại, Java là một trong những ngôn ngữ lập trình phổ biến nhất hiện nay, được sử dụng rộng rãi trong các ứng dụng di động, phát triển web, lập trình trên các thiết bị nhúng, máy tính cá nhân, máy chủ, game và nhiều lĩnh vực khác. Các tính năng của Java:

CÔNG NGHỆ VÀ THUẬT TOÁN SỬ DỤNG

Ngôn ngữ lập trình Java

Java là ngôn ngữ lập trình đa nền tảng (cross-platform), được phát triển bởi James Gosling tại Sun Microsystems (nay là Oracle Corporation) Ngôn ngữ lập trình này ra đời vào năm 1995 và được thiết kế để có thể chạy trên các nền tảng khác nhau, từ máy tính cá nhân đến thiết bị di động, các máy chủ và thiết bị nhúng.

Java sử dụng cấu trúc lập trình hướng đối tượng (object-oriented programming

- OOP) và được xây dựng trên cơ sở của ngôn ngữ lập trình C++ Nó cung cấp một môi trường chạy ảo (virtual machine) gọi là Java Virtual Machine (JVM),

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly giúp các chương trình Java có thể chạy trên nhiều nền tảng khác nhau mà không cần phải biên dịch lại.

Hiện tại, Java là một trong những ngôn ngữ lập trình phổ biến nhất hiện nay, được sử dụng rộng rãi trong các ứng dụng di động, phát triển web, lập trình trên các thiết bị nhúng, máy tính cá nhân, máy chủ, game và nhiều lĩnh vực khác. Các tính năng của Java:

Java được thiết kế để có thể chạy trên nhiều nền tảng khác nhau, vì vậy nó rất phù hợp cho việc phát triển các ứng dụng đa nền tảng Java sử dụng một máy ảo (JVM - Java Virtual Machine) để chạy mã nguồn, vì vậy mã nguồn được viết một lần và có thể chạy trên nhiều hệ điều hành khác nhau mà không cần thay đổi.

- Quản lý bộ nhớ tự động

Java có tính năng tự động quản lý bộ nhớ, tức là nó tự động thu dọn các vùng nhớ không sử dụng nữa để giảm thiểu các lỗi bộ nhớ Điều này giúp cho các ứng dụng được viết bằng Java có thể chạy ổn định và tránh các lỗi liên quan đến bộ nhớ.

Java có thể xử lý đa luồng, cho phép chương trình thực hiện nhiều tác vụ cùng một lúc Điều này giúp cho các ứng dụng có thể chạy nhanh và hiệu quả hơn, đặc biệt là khi phải xử lý nhiều tác vụ cùng một lúc.

Java có các tính năng bảo mật như kiểm tra kiểu tĩnh và kiểm tra lỗi trên đường dẫn Java được thiết kế để giảm thiểu các lỗ hổng bảo mật và các vấn đề liên quan đến an ninh.

- Hỗ trợ các thư viện và công cụ phát triển mạnh mẽ

Java có các thư viện tiêu chuẩn và các công cụ phát triển như IDE (Integrated Development Environment) để giúp các nhà phát triển tạo ra các ứng dụng dễ dàng hơn Các thư viện và công cụ này cung cấp các tính năng như: tạo giao diện người dùng, xử lý dữ liệu, kết nối cơ sở dữ liệu và nhiều hơn nữa,

Java được sử dụng rộng rãi trong lĩnh vực di động bao gồm: các thư viện hỗ trợ việc phát triển ứng dụng di động, đóng gói ứng dụng thành các file jar hoặc apk, cung cấp các tính năng như xử lý đa nhiệm, kết nối mạng và tích hợp với các thiết bị phần cứng như máy ảnh.

- Tính độc lập với nền tảng

Java có thể chạy trên nhiều nền tảng khác nhau và không phụ thuộc vào bất kỳ nền tảng cụ thể nào Điều này giúp cho các ứng dụng Java có thể được triển khai trên nhiều hệ thống khác nhau mà không cần sửa đổi mã nguồn.

- Tính kế thừa và đa hình

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly Java là ngôn ngữ lập trình hướng đối tượng (OOP), vì vậy nó có các tính năng như kế thừa, đa hình và đóng gói Các tính năng này giúp cho mã nguồn được tái sử dụng và giảm thiểu sự trùng lặp trong mã nguồn.

Java có tính năng mở rộng, cho phép các nhà phát triển thêm các tính năng mới vào ngôn ngữ bằng cách tạo các thư viện và API riêng Điều này giúp cho Java có thể được sử dụng trong nhiều lĩnh vực khác nhau và được phát triển theo các hướng khác nhau. Ưu và nhược điểm của Java Ưu điểm của Java Độ tin cậy cao

Quản lý bộ nhớ tự động

Công cụ phát triển phong phú

Tốc độ chậm hơn so với các ngôn ngữ lập trình gần sát với phần cứng, chẳng hạn như C hoặc C++.

Java có thể chạy trên nhiều nền tảng khác nhau, nhưng ứng dụng này có thể cần đến một trình biên dịch hoặc máy ảo Java riêng biệt để có thể chạy trên các thiết bị di động.

Sử dụng bộ nhớ lớn hơn so với một số ngôn ngữ lập trình khác.

Cú pháp phức tạp hơn so với một số ngôn ngữ lập trình khác

3.3.2 Giới thiệu Spring Framework và Spring boot

Spring là một Framework phát triển các ứng dụng Java được sử dụng bởi hàng triệu lập trình viên Nó giúp tạo các ứng dụng có hiệu năng cao, dễ kiểm thử, sử dụng lại code…Spring nhẹ và trong suốt (nhẹ: kích thước nhỏ, version cơ bản chỉ khoảng 2MB; trong suốt: hoạt động một cách trong suốt với lập trình viên) Spring là một mã nguồn mở, được phát triển, chia sẻ và có cộng đồng người dùng rất lơn

Spring được chia làm nhiều module khác nhau, tùy theo mục đích phát triển ứng dụng mà ta dùng 1 trong các module đó

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly

Spring Boot là một dự án trong hệ sinh thái Spring Framework, được phát triển bởi Pivotal Team (hiện là một phần của VMware) Nó là một nền tảng phát triển ứng dụng Java dựa trên Spring Framework với mục tiêu đơn giản hóa việc xây dựng ứng dụng Java Dưới đây là một số điểm quan trọng về Spring Boot:

Kiến thức Nền tảng Spring Framework: Spring Boot sử dụng và mở rộng Spring Framework, nên nó đòi hỏi một kiến thức cơ bản về Spring.

Hệ quản trị cơ sở dữ liệu

Cơ sở dữ liệu (Database) là một tập hợp các dữ liệu có tổ chức, thường được lưu trữ và truy cập điện tử từ hệ thống máy tính Khi cơ sở dữ liệu phức tạp hơn, chúng thường được phát triển bằng cách sử dụng các kỹ thuật thiết kế và mô hình hóa chính thức.

Hệ quản trị cơ sở dữ liệu (Database Management System) là một phần mềm để lưu trữ và truy xuất dữ liệu của người dùng trong khi xem xét các biện pháp bảo mật thích hợp Nó bao gồm một nhóm các chương trình thao tác cơ sở dữ liệu Hệ quản trị cơ sở dữ liệu chấp nhận yêu cầu dữ liệu từ một ứng dụng và hướng dẫn hệ điều hành cung cấp dữ liệu cụ thể Trong các hệ thống lớn, nó giúp người dùng và phần mềm bên thứ ba lưu trữ và truy xuất dữ liệu.

3.4.2 Chức năng của hệ cơ sở dữ liệu

Cung cấp môi trường tạo lập cơ sở dữ liệu: Hệ quản trị CSDL đóng vai trò cung cấp cho người dùng một ngôn ngữ định nghĩa dữ liệu để mô tả, khai báo kiểu dữ liệu, các cấu trúc dữ liệu.

Cung cấp cách cập nhật và khai thác dữ liệu: Hệ quản trị CSDL cung cấp cho người dùng ngôn ngữ thao tác dữ liệu để diễn tả các yêu cầu, các thao tác cập nhật và

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly khai thác cơ sở dữ liệu: Cập nhật (nhập, sửa, xóa dữ liệu), Khai thác (tìm kiếm, kết xuất dữ liệu).

Cung cấp các công cụ kiểm soát, điều khiển các truy cập vào cơ sở dữ liệu: Nhằm đảm bảo thực hiện một số yêu cầu cơ bản của hệ cơ sở dữ liệu Bao gồm: Đảm bảo an ninh và ngăn chặn các truy cập bất hợp pháp; Duy trì tính nhất quán của dữ liệu

MySQL là hệ quản trị cơ sở dữ liệu sử dụng mã nguồn mở phổ biến nhất thế giới và được các chuyên gia lập trình rất ưa chuộng trong quá trình phát triển web, phát triển ứng dụng của mình Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên Internet MySQL có một số đặc điểm:

Hệ quản trị cơ sở dữ liệu MySQL chính là một trong những phần mềm quản trị CSDL dạng server based, hệ gần giống với SQL server.

MySQL là phần mềm quản lý dữ liệu thông qua CSDL Và mỗi một CSDL đều có bảng quan hệ chứa dữ liệu riêng biệt.

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly MySQL có cơ chế quản lý sử dụng riêng giúp cho mỗi người sử dụng đều có thể quản lý cùng lúc một hay nhiều CSDL khác nhau Và mỗi người dùng đều có 1 username và password để truy nhập và truy xuất đến CSDL

MySQL tương thích tốt với môi trường PHP, giúp hệ thống hoạt động mạnh mẽ.

MongoDB là một cơ sở dữ liệu mã nguồn mở và là cơ sở dữ liệu NoSQL(*) hàng đầu, được hàng triệu người sử dụng MongoDB được viết bằng C++.

(*) NoSQL là 1 dạng CSDL mã nguồn mở không sử dụng Transact-SQL để truy vấn thông tin NoSQL viết tắt bởi: None-Relational SQL, hay có nơi thường gọi là Not- Only SQL CSDL này được phát triển trên Javascript Framework với kiểu dữ liệu JSON (Cú pháp của JSON là “key:value”) NoSQL ra đời như là 1 mảnh vá cho những khuyết điểm và thiếu xót cũng như hạn chế của mô hình dữ liệu quan hệ RDBMS về tốc độ, tính năng, khả năng mở rộng, memory cache,

Ngoài ra, MongoDB là một cơ sở dữ liệu đa nền tảng, hoạt động trên các khái niệm Collection và Document, nó cung cấp hiệu suất cao, tính khả dụng cao và khả năng mở rộng dễ dàng.

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly

3.4.5 So sánh SQL và NoSQL

Tham số SQL NoSQL Định nghĩa Cơ sở dữ liệu SQL chủ yếu được gọi là RDBMS hoặc Cơ sở dữ liệu quan hệ

Cơ sở dữ liệu NoSQL chủ yếu được gọi là cơ sở dữ liệu không liên quan hoặc phân tán Design for RDBMS truyền thống sử dụng cú pháp và truy vấn SQL để phân tích và lấy dữ liệu để có thêm thông tin chi tiết Chúng được sử dụng cho các hệ thống OLAP.

Hệ thống cơ sở dữ liệu NoSQL bao gồm nhiều loại công nghệ cơ sở dữ liệu khác nhau Các cơ sở dữ liệu này được phát triển để đáp ứng nhu cầu trình bày cho sự phát triển của ứng dụng hiện đại.

(SQL) Không có ngôn ngữ query

Type SQL databases là cơ sở dữ liệu dựa trên bảng NoSQL databases có thể dựa trên tài liệu, cặp khóa-giá trị, cơ sở dữ liệu biểu đồ

Schema SQL databases có lược đồ được xác định trước NoSQL databases sử dụng lược đồ động cho dữ liệu phi cấu trúc.

Khả năng mở rộng SQL databases có thể mở rộng theo chiều dọc NoSQL databases có thể mở rộng theo chiều ngang

Ví dụ Oracle, Postgres, and MS-

Phù hợp cho Đây là 1 lựa chọn lý tưởng cho môi trường truy vấn phức tạp

Không phù hợp với truy vấn phức tạp

Năm phát triển Nó được phát triển vào những năm 1970 để giải quyết các vấn đề với lưu trữ tệp phẳng Được phát triển vào cuối những năm 2000 để khắc phục các vấn đề và hạn chế của SQL databases.

Open-source Một sự kết hợp của mã nguồn mở như Postgres & MySQL, và thương mại như Oracle

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly Được sử dụng tốt nhất cho

RDBMS database là tùy chọn thích hợp để giải quyết các vấn đề về ACID.

NoSQL được sử dụng tốt nhất để giải quyết các vấn đề về tính khả dụng của dữ liệu

Tầm quan trọng Nó nên được sử dụng khi hiệu lực dữ liệu là siêu quan trọng Sử dụng khi nó quan trọng hơn để có dữ liệu nhanh hơn dữ liệu chính xác

Lựa chọn tốt nhất Khi bạn cần hỗ trợ truy vấn động Sử dụng khi bạn cần mở rộng quy mô dựa trên yêu cầu thay đổi Tính năng tốt nhất Hỗ trợ đa nền tảng, Bảo mật và miễn phí Dễ sử dụng, hiệu suất cao và công cụ linh hoạt.

Performance SQL hoạt động tốt và nhanh thì việc desgin tốt là cực kì quan trọng và ngược lại.

PHÁT TRIỂN VÀ TRIỂN KHAI ỨNG DỤNG

Thiết kế kiến trúc

4.1.1.Lựa chọn kiến trúc phần mềm

- Em chọn mô hình MVC vì MVC (Model – View – Controller) là một kiến trúc phần mềm hay mô hình thiết kế được sử dụng trong kỹ thuật phần mềm Nó giúp cho các developer tách ứng dụng của họ ra 3 thành phần khác nhau Model, View và Controller Mỗi thành phần có một nhiệm vụ riêng biệt và độc lập với các thành phần khác.

- Các thành phần của MVC:

+Model: Đây là thành phần chứa tất cả các nghiệp vụ logic, phương thức xử lý, truy xuất database, đối tượng mô tả dữ liệu như các Class, hàm xử lý…

+View: Đảm nhận việc hiển thị thông tin, tương tác với người dùng, nơi chứa tất cả các đối tượng GUI như textbox, images…Hiểu một cách đơn giản, nó là tập hợp các form hoặc các file HTML

+Controller: Giữ nhiệm vụ nhận điều hướng các yêu cầu từ người dùng và gọi đúng những phương thức xử lý chúng… Chẳng hạn thành phần này sẽ nhận request từ url và form để thao tác trực tiếp với Model. Ưu điểm và nhược điểm của MVC:

- Ưu điểm Thể hiện tính chuyên nghiệp trong lập trình, phân tích thiết kế Do được chia thành các thành phần độc lập nên giúp phát triển ứng dụng nhanh, đơn giản, dễ nâng cấp, bảo trì

- Nhược điểm Đối với dự án nhỏ việc áp dụng mô hình MVC gây cồng kềnh, tốn thời gian trong quá trình phát triển Tốn thời gian trung chuyển dữ liệu của các thành phần.

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly

Kiến trúc Microservice (Microservice Architecture)

Microservice là một loại kiến trúc phần mềm hướng dịch vụ, tập trung vào việc xây dựng một loạt các thành phần tự quản lý tạo nên ứng dụng Không giống như các ứng dụng nguyên khối được xây dựng dưới dạng một đơn vị không thể chia tách, các ứng dụng microservice bao gồm nhiều thành phần độc lập output ra các API.

Cách tiếp cận microservice tập trung chủ yếu vào các độ ưu tiên của chức năng dành cho người dùng, trong khi cách tiếp cận nguyên khối được tổ chức xung quanh các lớp công nghệ, giao diện người dùng và cơ sở dữ liệu Cách tiếp cận microservice đã trở thành một xu hướng trong những năm gần đây khi ngày càng nhiều doanh nghiệp đang phát triển nhanh và sử dụng nhiều công nghệ DevOps.

Microservice rất quan trọng, đơn giản vì chúng đơn giản hóa sự phức tạp trong các hệ thống Bằng cách chia hệ thống hoặc ứng dụng thành nhiều phần nhỏ hơn, làm giảm trùng lặp, tăng sự gắn kết và dễ dàng kết nối giữa các bộ phận thông qua giao thức RESTFul API, do đó làm cho các thành phần hệ thống tổng thể dễ hiểu hơn, dễ mở rộng hơn và dễ thay đổi hơn.

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly Ưu điểm:

Các component có kết nối lỏng lẻo dẫn đến dễ cách ly, dễ test và khởi động nhanh.

Vòng đời phát triển nhanh hơn Tính năng mới được phát triển nhanh hơn và tính năng cũ được cấu trúc lại dễ hơn.

Các service có thể deploy độc lập nên ứng dụng dễ đọc, dễ tạo các bản vá hơn.

Những issue, ví dụ liên quan đến memry leak một trong các service, bị cô lập và có thể không làm sập ứng dụng.

Việc áp dụng các công nghệ mới dễ hơn Các component có thể được nâng cấp độc lập với nhau.

Các mô hình scale phức tạp và hiệu quả hơn có thể được thiết lập Các service quan trọng có thể scale hiệu quả hơn Các component riêng sẽ khởi động nhanh hơn và cải thiện thời gian khởi động của cả hệ thống.

Các team tham gia sẽ ít phụ thuộc lẫn nhau Kiến trúc này rất thích hợp cho các đội Agile.

Phức tạp hơn về mặt tổng thể vì các component khác nhau có các stack công nghệ khác nhau nên buộc team phải tập trung đầu tư thời gian để theo kịp công nghệ. Deploy toàn bộ ứng dụng phức tạp hơn vì có nhiều container và nền tảng ảo hóa liên quan. Ứng dụng được scale hiệu quả hơn nhưng thiết lập nâng cấp sẽ phức tạp hơn vì nó sẽ yêu cầu nâng cao nhiều tính năng như truy tìm dịch vụ (service discovery), định tuyến DNS,…

Yêu cầu một team-size lớn để maintain ứng dụng vì có nhiều component và công nghệ khác nhau.

Các thành viên trong team chia sẻ các skill khác nhau dựa trên component họ làm nên sẽ tạo ra sự khó khăn khi thay thế và chia sẻ kiến thức.

Stack công nghệ phức tạp và khó để học hơn.

Thời gian phát triển ban đầu là chậm nên thời gian để có thể làm marketing lâu hơn.

Yêu cầu cơ sở hạ tầng phức tạp Thông thường sẽ yêu cầu nhiều container (Docker) và nhiều máy JVM để chạy.

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly

Biểu đồ tổng quan của hệ thông

Các thành phần của hệ thống:

1 Client: Nơi gửi request đến hệ thống microservice.

Là nơi để chứa các metadata của các microservice instances (bao gồm vị trí location, host port,…) Các microservice instance được đăng ký với service registry khi khởi động và sẽ hủy đăng ký khi bị shut down Các thành phần khác cần tìm thông tin của một microservice nào đó thì sẽ tìm thông qua service registry.

Khi chúng ta gọi đến bất kỳ service nào từ browser, chúng ta không thể gọi trực tiếp bằng tên của chúng như ví dụ Product Service vì những tên service như vậy phải được bí mật và chỉ sử dụng trong nội bộ các service với nhau. Nếu chúng ta có nhiều instance của một service, mỗi instance lại sử dụng một port khác nhau Vậy làm thế nào chúng ta có thể gọi tất cả các service từ browser và phân tán những request đến các instance đó thông qua các cổng khác nhau? Câu trả lời là sử dụng một Gateway.

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly Một gateway là một entry point đơn trong hệ thống, được dùng để handle các request bằng cách định tuyến chúng đến các service tương ứng Nó cũng có thể được dùng để xác thực, giám sát và làm nhiều việc khác.

Chứa các nghiệp vụ và lưu trữ dữ liệu liên quan đến sản phẩm

Chứa các nghiệp vụ và lưu trữ dữ liệu liên quan đến đơn hàng

Chứa các nghiệp vụ và lưu trữ dữ liệu liên quan đến thanh toán

7 Giao tiếp giữa các Service

Thiết kế chi tiết

Một số thiết kế giao diện em hướng tới sử dụng trong website:

- Kích thước màn hinh: 24inch

- Số lượng màu sắc hỗ trợ: đen, trắng, đỏ, xanh…

- Vị trí hiển thị thông điệp phản hồi: hiển thị dưới dạng inline message

- Thiết kế nút: To, rõ ràng, màu xanh phối cùng chữ trắng …

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly

4.2.2 Biểu đồ thực thể liên kết ERD

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly

Hình 4.2.2 Biểu đô lớp tổng quan

Biểu đồ lớp gồm có:

- Thực thể User: id, first_name, last_name, avatar_url, public_id, email, password, phone_number, address_id, role, locked, enable, created_at, updated_at.

- Thực thể Address: id, full_address, city, user_id, created_at, updated_at, create_by, updated_by.

- Thực thể Review: id, note, user_id, product_id, create_date, created_at, updated_at, create_by, updated_by;

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly

- Thực thể Category: id, name, parent _id, icon, created_at, updated_at, create_by, updated_by.

- Thực thể Product: id, category_id, description, image_url, sku, price_unit, quantity, created_at, updated_at, create_by, updated_by.

- Thực thể Image: id, thumbnail_url, product_id, created_at, updated_at, create_by, updated_by.

- Thực thể Order: id, order_date, , total_price, payment_id, delivery_status, delivery_address ,status, user_id, created_at, updated_at, create_by, updated_by.

- Thực thể OrderItem: id, quantity, order_id, product_id, create_at, updated_at, create_by, updated_by.

- Thực thể Brand: id, name, image_url, public_id, create_at, updated_at, create_by, updated_by.

- Thực thể Banner: id, name, image_url, public_id, create_at, updated_at, create_by, updated_by.

Quan hệ giữa các lớp thực thể:

- User và Review có quan hệ 1 – n

- User và Order có quan hệ 1 – n

- User và Address có quan hệ 1 – 1

- Review và Product có quan hệ n – 1

- Product và Image có quan hệ 1 – n

- Order và Order Item có quan hệ 1-n

- Product và Category có quan hệ n – 1

- Product và Brand có quan hệ n – 1

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly

STT Tên trường Kiểu dữ liệu Ghi chú Ràng buộc

1 id String Khóa định danh Khóa chính

2 first_name String Họ người dùng

3 last_name String Tên người dùng

4 avatar_url String Link ảnh

7 phone_numbe r String Số điện thoại

10 enable String Trạng thái kích hoạt

STT Tên trường Kiểu dữ liệu Ghi chú Ràng buộc

1 id String Khóa định danh Khóa chính

3 user_id String Id user Khóa ngoại

4 product_id String Id product Khóa ngoại

5 Create_date String Ngày tạo

STT Tên trường Kiểu dữ liệu Ghi chú Ràng buộc

1 id String Khóa định danh Khóa chính

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly

2 name String Tên sản phẩm

4 image_id String Mã ảnh

8 category_id String Id Category Khóa ngoại

9 Sale_price Double Giá sau khi giảm

10 Brand_id String Mã thương hiệu

11 Category_id String Mã loại sản phẩm

12 Review_id String Mã đánh giá

STT Tên trường Kiểu dữ liệu Ghi chú Ràng buộc

1 id String Khóa định danh Khóa chính

2 full_address String Địa chỉ

3 city String Thành phố/Tỉnh

4 user_id String Id user Khóa ngoại

STT Tên trường Kiểu dữ liệu Ghi chú Ràng buộc

1 id String Khóa định danh Khóa chính

2 category_name String Tên loại sản phẩm

3 category_icon String Link icon

4 parent_category_id String Id loại sản phẩm cha Khóa ngoại

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly

STT Tên trường Kiểu dữ liệu Ghi chú Ràng buộc

1 id int Khóa định danh Khóa chính

2 first_name String Họ người dùng

3 last_name String Tên người dùng

5 phone_number String Số điện thoại

7 user_id String Id User Khóa ngoại

8 full_address String Địa chỉ đầy đủ

STT Tên trường Kiểu dữ liệu Ghi chú Ràng buộc

1 id int Khóa định danh Khóa chính

2 product_id String Mã sản phẩm

4 order_id String Id order Khóa ngoại

STT Tên trường Kiểu dữ liệu Ghi chú Ràng buộc

1 id int Khóa định danh Khóa chính

2 name String Tên thương hiệu

3 image_url String Link hình ảnh

4 public_id String Id public

STT Tên trường Kiểu dữ liệu Ghi chú Ràng buộc

1 id int Khóa định danh Khóa chính

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly

3 image_url String Link hình ảnh

4 public_id String Id public

Xây dựng ứng dụng

4.3.1 Thư viện va công cụ sử dụng

Danh sách thư viện và công cụ sử dụng:

Mục đích Công cụ Địa chỉ URL

IDE Lập trình Visual studio code https://code.visualstudio.com/

Envirement NodeJS https://nodejs.org/en/

IDE Lập trình Intellij https://www.jetbrains.com/idea/

Envirement JDK 17 https://www.oracle.com/in/java/technologies/downloads/

Kết quả đạt được bao gồm hoàn thiện các chức năng như authentication, quản lí người dùng, khách hàng thêm vào giỏ hàng, đặt hàng…

4.3.3 Một số giao diện thiết kế

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly

Trang xem thông tin chi tiết:

Trang danh sách sản phẩm:

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly

Trang giỏ hàng của khách hàng:

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly

4.3.4 Minh họa chức năng chính

- Người dùng nhập username và password để đăng nhập.

- Hệ thống sẽ kiểm tra username và password có tồn tại không.

- Nếu tồn tại, cho phép đăng nhập.

- Nếu không thì hiển thị thông báo lỗi.

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly Chức năng đăng ký

- Khách hàng chọn đăng ký

- Khách hàng điền đầy đủ thông tin cần thiết vào form đăng ký

- Hệ thống sẽ kiểm tra các trường trong form người dùng nhập có chuẩn không

- Hệ thống sẽ kiểm tra xem người đã tồn tại trong hệ thống chưa

- Hệ thống sẽ lưu người dùng vào cơ sở dữ liệu nếu tất cả các thông tin hợp lệ

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly Chức năng xem giỏ hàng

- Khách hàng đăng nhập thành công

- Khách hàng chọn vao trang giỏ hàng

- Hệ thống trả về danh sách giỏ hàng và hiển thị lên màn hình.

Kiểm thử

PROJECT 3 Giáo viên hướng dẫn: Đinh Thị Hà Ly

Ngày đăng: 18/06/2024, 17:07

HÌNH ẢNH LIÊN QUAN

Hình 1.1: Trang chủ sàn giao dịch OpenSea - Báo Cáo Môn Project 3 Ngành Công Nghệ Thông Tin Thiết Kế Sàn Giao Dịch Nft Với Công Nghệ Blockchain.pdf
Hình 1.1 Trang chủ sàn giao dịch OpenSea (Trang 7)
Hình 1.2: Trang chi tiết sản phẩm của OpenSea - Báo Cáo Môn Project 3 Ngành Công Nghệ Thông Tin Thiết Kế Sàn Giao Dịch Nft Với Công Nghệ Blockchain.pdf
Hình 1.2 Trang chi tiết sản phẩm của OpenSea (Trang 7)
Hình 1.3: Trang chủ sàn giao dịch Blur - Báo Cáo Môn Project 3 Ngành Công Nghệ Thông Tin Thiết Kế Sàn Giao Dịch Nft Với Công Nghệ Blockchain.pdf
Hình 1.3 Trang chủ sàn giao dịch Blur (Trang 8)
Hình 1.4: Trang chi tiết sản phẩm của Blur - Báo Cáo Môn Project 3 Ngành Công Nghệ Thông Tin Thiết Kế Sàn Giao Dịch Nft Với Công Nghệ Blockchain.pdf
Hình 1.4 Trang chi tiết sản phẩm của Blur (Trang 9)
Sơ đồ UseCase tổng quát của hệ thống - Báo Cáo Môn Project 3 Ngành Công Nghệ Thông Tin Thiết Kế Sàn Giao Dịch Nft Với Công Nghệ Blockchain.pdf
se Case tổng quát của hệ thống (Trang 14)
Hình 4.2.2. Biểu đô lớp tổng quan - Báo Cáo Môn Project 3 Ngành Công Nghệ Thông Tin Thiết Kế Sàn Giao Dịch Nft Với Công Nghệ Blockchain.pdf
Hình 4.2.2. Biểu đô lớp tổng quan (Trang 35)
Bảng User - Báo Cáo Môn Project 3 Ngành Công Nghệ Thông Tin Thiết Kế Sàn Giao Dịch Nft Với Công Nghệ Blockchain.pdf
ng User (Trang 37)
Bảng Address - Báo Cáo Môn Project 3 Ngành Công Nghệ Thông Tin Thiết Kế Sàn Giao Dịch Nft Với Công Nghệ Blockchain.pdf
ng Address (Trang 38)
Bảng Order Item - Báo Cáo Môn Project 3 Ngành Công Nghệ Thông Tin Thiết Kế Sàn Giao Dịch Nft Với Công Nghệ Blockchain.pdf
ng Order Item (Trang 39)
Bảng thống kê: - Báo Cáo Môn Project 3 Ngành Công Nghệ Thông Tin Thiết Kế Sàn Giao Dịch Nft Với Công Nghệ Blockchain.pdf
Bảng th ống kê: (Trang 40)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w