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

xây dựng nhà sách online sử dụng golang và reactjs

120 2 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 đề Xây Dựng Nhà Sách Online Sử Dụng Golang Và ReactJS
Tác giả Nguyễn Minh Chiến, Nguyễn Minh Cương, Bùi Đình Xuân
Người hướng dẫn TS. Lê Văn Vinh
Trường học Trường Đại Học Sư Phạm Kỹ Thuật Tp.HCM
Chuyên ngành Công Nghệ Thông Tin
Thể loại Khóa Luận Tốt Nghiệp
Năm xuất bản 2023
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 120
Dung lượng 11,56 MB

Cấu trúc

  • 1. TÍNH CẤP THIẾT CỦA ĐỀ TÀI (0)
  • 2. MỤC TIÊU CỦA ĐỀ TÀI (14)
  • 3. ĐỐI TƯỢNG NGHIÊN CỨU (14)
  • 4. PHẠM VI NGHIÊN CỨU (15)
  • 5. Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN (15)
  • CHƯƠNG 1: CƠ SỞ LÝ THUYẾT (16)
    • 1.1. Golang là gì ? (16)
    • 1.2. Gin framework (16)
    • 1.3. ReactJS (17)
    • 1.4. PostgreSQL (17)
    • 1.5. ELK Stack (Elasticsearch, Logstash, Kibana) (18)
    • 2. Một số thư viện và ứng dụng hỗ trợ khác (18)
  • CHƯƠNG 2: KHẢO SÁT HIỆN TRẠNG VÀ ĐẶC TẢ YÊU CẦU PHẦN MỀM (20)
    • 2.1. Khảo sát hiện trạng (20)
    • 2.2. Kiến trúc chung của hệ thống (25)
    • 2.3. Đặc tả yêu cầu phần mềm (25)
    • 2.4. Yêu cầu đề tài (25)
  • CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG (0)
    • 3.1. Tác nhân hệ thống (28)
    • 3.2. Lược đồ Use case (29)
    • 3.3. Đặc tả Use case (33)
    • 3.4. Lược đồ ERD (59)
    • 3.5. Lược đồ tuần tự (59)
  • CHƯƠNG 4: THIẾT KẾ CƠ SỞ DỮ LIỆU (0)
    • 4.1. Lược đồ cơ sở dữ liệu (83)
    • 4.2. Mô tả dữ liệu bảng (84)
  • CHƯƠNG 5: THIẾT KẾ GIAO DIỆN (0)
    • 5.1. Màn hình giao diện phía người dùng vãng lai (Guest) (93)

Nội dung

2 Xem danh sách tất cả sản phẩm Tra cứu 3 Xem thông tin chi tiết sản phẩm Tra cứu 4 Xem giỏ hàng Tra cứu 5 Xem mục sản phẩm yêu thích Tra cứu 6 Xem đơn hàng Tra cứu 7 Thêm, sửa, xóa sản

MỤC TIÊU CỦA ĐỀ TÀI

Đề tài “Xây dựng trang web bán sách” hướng đến các mục tiêu sau:

- Xây dựng website cung cấp các thông tin về các sản phẩm về sách, bao gồm các chức năng tìm kiếm, xem thông tin, đặt hàng và thanh toán, đồng thời đánh giá các sản phẩm đã mua

- Xây dựng hệ thống quản lý và doanh thu cho người quản lý

- Giao diện thân thiện với người dùng ở mọi lứa tuổi

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

Sau khi hoàn thành đề tài, nhóm đã có thêm kinh nghiệm về việc thiết kế ứng dụng mua bán, quản lý sản phẩm thương mại điện tử

CƠ SỞ LÝ THUYẾT

Golang là gì ?

Golang (hay Go) là một ngôn ngữ lập trình mã nguồn mở được phát triển bởi Google, được thiết kế với mục tiêu là sử dụng đơn giản, hiệu quả để phát triển các ứng dụng phần mềm Được ra mắt vào năm 2009 khi các vi xử lý đa nhân (multi-core processors) đã được phát triển bởi Intel, đó là nguyên nhân tại sao mà Go được thiết kế và phát triển với việc thực thi đồng thời (concurrency), Go có goroutines thay cho threads Goroutines có growable segmented stacks - là một tính năng dùng để quản lý bộ nhớ stack cho các goroutine Giúp cho nó sử dụng nhiều bộ nhớ RAM hơn khi cần thiết Tính năng này giúp tối ưu việc sử dụng bộ nhớ và tránh lỗi tràn stack trong Golang, cho phép các goroutine sử dụng linh hoạt bộ nhớ stack mà không cần phải quan tâm đến kích thước cố định

Nguồn tham khảo: TopDev – “Golang là gì và tại sao bạn nên học Go?”

Link: https://topdev.vn/blog/golang-la-gi-va-tai-sao-ban-nen-hoc-go/

Gin framework

Gin là một framework phát triển ứng dụng web dựa trên ngôn ngữ lập trình Go (Golang) Được thiết kế để đơn giản hóa việc xây dựng các ứng dụng web nhanh chóng, hiệu quả Gin cung cấp các tính năng như routing, middleware, xử lý JSON, xử lý lỗi, và nhiều công cụ hỗ trợ phát triển khác Một trong những ưu điểm lớn của GIN là hiệu suất cao, vì được viết bằng Go, một ngôn ngữ lập trình được tối ưu hóa cho hiệu suất xử lý Gin sử dụng cấu trúc router nhanh và cơ chế pooling để quản lý các goroutine giúp xử lý các yêu cầu một cách hiệu quả Bên cạnh đó, Gin cũng hỗ trợ việc xây dựng các ứng dụng web Restful thông qua việc hỗ trợ các HTTP methods như GET, POST, PUT, DELETE, Đồng thời cung cấp các cơ chế xử lý lỗi, xác thực và phân quyền để giúp xây dựng các ứng dụng web an toàn và hiệu năng cao Nhìn chung, Gin là một lựa chọn khá tốt cho việc phát triển ứng dụng web trong Go

Nguồn tham khảo: sinhnx.dev – “BẮT ĐẦU VỚI GIN-GONIC FRAMEWORK” Link: https://sinhnx.dev/lap-trinh/bat-dau-voi-gin-gonic

ReactJS

ReactJS là một thư viện JavaScript được thiết kế bởi Facebook, được sử dụng để xây dựng giao diện người dùng (UI) cho các ứng dụng web ReactJS giúp cho việc thiết kế trang web mượt mà và nhanh, khả năng mở rộng cao React sử dụng cơ chế

"Component-Based Architecture" (kiến trúc dựa trên thành phần) để phân chia giao diện thành các thành phần độc lập, có thể tái sử dụng và quản lý từng trạng thái riêng Mỗi thành phần trong ReactJS có thể được xây dựng bằng JSX, một phần mở rộng của JavaScript cho phép viết mã HTML trong JavaScript

ReactJS sử dụng Virtual DOM (DOM ảo) để cải thiện hiệu suất và tối ưu hóa quá trình cập nhật giao diện Thay vì cập nhật toàn bộ DOM khi có thay đổi, ReactJS chỉ cập nhật những phần thay đổi trong DOM ảo, sau đó áp dụng các thay đổi đó lên DOM thực tế, giúp tăng tốc độ hiển thị giao diện và cải thiện trải nghiệm người dùng Nguồn tham khảo: TopDev – “ReactJS – Những điều bạn cần phải biết”

Link: https://topdev.vn/blog/reactjs-nhung-dieu-ban-can-phai-biet/

PostgreSQL

Là một hệ quản trị cơ sở dữ liệu quan hệ, PostgreSQL cung cấp mô hình dữ liệu quan hệ, trong đó dữ liệu được tổ chức thành các bảng, các mối quan hệ giữa các bảng được xác định thông qua các khóa ngoại và các truy vấn SQL được sử dụng để truy xuất và thao tác dữ liệu Ngoài ra, PostgreSQL cũng hỗ trợ các tính năng mở rộng khác như file JSON PostgreSQL được ứng dụng nhiều trong các dự án phát triển phần mềm, web và hệ thống thông tin do tính bảo mật, độ tin cậy cao và khả năng mở rộng tốt của nó

Nguồn tham khảo: FPT Cloud – “PostgreSQL là gì? Tìm hiểu về hệ quản trị cơ sở dữ liệu PostgreSQL”

Link: https://fptcloud.com/postgresql-la-gi/

ELK Stack (Elasticsearch, Logstash, Kibana)

ELK Stack là một tập hợp 3 phần mềm, phục vụ cho việc logging, tìm kiếm Ba phần mềm lần lượt là:

Elasticsearch: là một cơ sở dữ liệu để tìm kiếm, lưu trữ và query dữ liệu, có khả năng tìm kiếm nhanh chóng (near real time) thông qua giao thức RESTful Dễ dàng tích hợp vào hệ thống hiện có để phục vụ riêng cho việc tìm kiếm

Logstash: là công cụ thu thập dữ liệu từ các nguồn khác nhau, chuyển đổi dữ liệu và gửi đến điểm đích theo ý muốn

Kibana: Giao diện để quản lý, thống kê dữ liệu, đọc thông tin từ Elasticsearch

Là một trong những thuật toán cơ bản của hệ thống gợi ý Hệ thống sẽ tìm và gợi ý những sản phẩm có độ tương đồng nhất định với những sản phẩm đã được sử dụng trước đó Ví dụ khi người dùng mua sách có thể loại Trinh thám, hệ thống sẽ gợi ý những quyển sách tương tự thể loại Trinh thám Ưu điểm của thuật toán này là hoạt động tốt với những hệ thống có độ phức tạp dữ liệu thấp.

Một số thư viện và ứng dụng hỗ trợ khác

Redux là một thư viện quản lý trạng thái cho các ứng dụng được viết bằng Javascript

Redux hoạt động dựa trên kiến trúc Flux, nơi trạng thái của ứng dụng được lưu trữ trong một kho dữ liệu duy nhất gọi là "store" Store chứa tất cả các thông tin cần thiết để hiển thị giao diện người dùng và xử lý các sự kiện trong ứng dụng

Với Redux, các thành phần trong ứng dụng có thể truy cập và cập nhật trạng thái một cách dễ dàng, đồng thời giúp cho mã nguồn gọn nhẹ, dễ bảo trì, tạo điều kiện cho việc phát triển ứng dụng có cấu trúc rõ ràng

PASETO (Platform-Agnostic Security Tokens) là một chuẩn mã hóa token an toàn được sử dụng để xác thực và phân quyền trong các ứng dụng web ,tương tự như JWT - JSON Web Tokens nhưng khác ở một số điểm sau:

- Thuật toán mã hoá: PASETO sử dụng các thuật toán mã hóa hiện đại như AES-256 và HMAC-SHA384 để đảm bảo tính bảo mật Trong khi đó, JWT sử dụng các thuật toán mã hóa đối xứng (symmetric encryption) hoặc mã hóa bất đối xứng (asymmetric encryption) như RSA

- Độ tin cậy: PASETO tập trung vào tính toàn vẹn dữ liệu và bảo mật thông tin, trong khi JWT tập trung vào việc chứng thực (authentication) và phân quyền (authorization) Điều này giúp PASETO đảm bảo rằng dữ liệu không bị thay đổi trong quá trình truyền tải, trong khi JWT chỉ xác thực nguồn gốc và quyền truy cập của người dùng

- Cấu trúc token : PASETO sử dụng một chuỗi JSON trực tiếp (direct JSON) để lưu trữ thông tin, trong khi JWT sử dụng một chuỗi JSON được mã hóa Base64

- Độ tương thích cao: PASETO cung cấp các phiên bản (versions) để hỗ trợ các tính năng và cấu trúc khác nhau Mỗi phiên bản đảm bảo tính tương thích ngược với các phiên bản trước đó, giúp đảm bảo rằng các token đã tạo ra có thể được đọc và xác thực trong tương lai JWT không có khái niệm về phiên bản và không đảm bảo tính tương thích ngược Điểm khác biệt quan trọng của PASETO so với JWT là PASETO không sử dụng các thuật toán mã hóa đối xứng (symmetric encryption), mà chỉ sử dụng các thuật toán chứng thực (authentication) và chữ ký số (digital signatures) Điều này giúp tránh các lỗ hổng bảo mật có thể xảy ra trong JWT khi sử dụng thuật toán mã hóa đối xứng

Nguồn tham khảo: Viblo – “PASETO - một lựa chọn đáng cân nhắc cho bài toán Token Based Authentication” (Trần Văn Tùng – 16/04/2020)

Link:https://viblo.asia/p/paseto-mot-lua-chon-dang-can-nhac-cho-bai-toan- token-based-authentication-oOVlYk9QK8W

Docker là một nền tảng sử dụng cho việc tạo, triển khai và chạy các ứng dụng trong một môi trường độc lập và cô lập gọi là container Container là một đơn vị phần mềm chứa tất cả những gì cần thiết để chạy một ứng dụng, bao gồm mã nguồn, các thư viện, hệ điều hành và cấu hình Docker cho phép đóng gói ứng dụng và các thành phần liên quan vào một container duy nhất, đảm bảo tính nhất quán Container có thể chạy trên bất kỳ máy tính hoặc máy chủ nào hỗ trợ Docker, mà không cần quan tâm đến môi trường hoặc cấu hình của máy tính đó

Nguồn tham khảo: TopDev – “Docker là gì? Tìm hiểu về Docker”

Link: https://topdev.vn/blog/docker-la-gi/

Redis là một hệ thống cơ sở dữ liệu key-value, thường được sử dụng để lưu trữ dữ liệu tạm thời, caching, và quản lý các cấu trúc dữ liệu phức tạp như lists, sets, hashes, sorted sets và các chuỗi strings.

KHẢO SÁT HIỆN TRẠNG VÀ ĐẶC TẢ YÊU CẦU PHẦN MỀM

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

2.1.1 Nhà sách trực tuyến Fahasa.com - FAHASA.COM:

Website: https://www.fahasa.com

● Xem danh sách sản phẩm

● Xem danh mục sản phẩm

● Filter tìm kiếm sản phẩm

● Đăng nhập và đăng ký Ưu điểm:

● Giao diện thân thiện, dễ dàng sử dụng

● Hỗ trợ thanh toán trực tuyến

● Quy trình đặt hàng và thanh toán dễ dàng không cần đăng nhập

● Tốc độ tải trang không nhanh

● Không có sản phẩm đã xem

2.1.2 Mua Sách Online Nhanh Nhất | Bookbuy.vn:

● Xem danh sách sản phẩm

● Xem danh mục sản phẩm

● Filter tìm kiếm sản phẩm

● Đăng nhập và đăng ký Ưu điểm:

● Giao diện thân thiện, dễ dàng sử dụng

● Quy trình đặt hàng và thanh toán dễ dàng không cần đăng nhập

● Hỗ trợ thanh toán trực tuyến

● Có thể xem nhanh mô tả từ trang chủ khi giữ chuột trên sản phẩm

● Có sản phẩm đã xem

● Tốc độ tải trang không nhanh

Nếu có nhu cầu mua và tìm kiếm sách và tài liệu thì đây là trang web có thể đáp ứng được Tại website này, người dùng có thể tìm kiếm các loại sách từ những năm 2010 trở xuống

Hình 3: Trang web Phương Nam

● Xem danh sách sản phẩm

● Xem danh mục sản phẩm

● Filter tìm kiếm sản phẩm

● Đăng nhập và đăng ký Ưu điểm:

● Giao diện thân thiện, dễ dàng sử dụng

● Quy trình đặt hàng và thanh toán dễ dàng không cần đăng nhập

● Không hỗ trợ thanh toán trực tuyến

● Mức độ đa dạng sản phẩm thấp

● Không có sản phẩm đã xem

● Tốc độ tải trang không nhanh

2.1.4 Nhà Sách Tiki | Tiki.vn:

Website: https://tiki.vn/nha-sach-tiki

● Xem danh sách sản phẩm

● Xem danh mục sản phẩm

● Filter tìm kiếm sản phẩm

● Đăng nhập và đăng ký Ưu điểm:

● Giao diện thân thiện, đẹp, dễ dàng sử dụng

● Hỗ trợ thanh toán trực tuyến

● Tốc độ tải trang và phản hồi nhanh

● Số lượng sản phẩm đa dạng

● Không có sản phẩm đã xem

Kiến trúc chung của hệ thống

Hình 5: Kiến trúc chung của hệ thống

Đặc tả yêu cầu phần mềm

2.3.1 Mô tả tổng quát đề tài Ứng dụng được xây dựng nhằm tạo ra một nền tảng phục vụ cho cá nhân hoặc doanh nghiệp nhỏ có nhu cầu kinh doanh và quảng bá các sản phẩm về sách, đồng thời cung cấp các tính năng giúp cho trải nghiệm mua sách thuận tiện với nhiều đầu sách và giá thành khác nhau.

Yêu cầu đề tài

2.4.1 Thông tin đề tài và công nghệ sử dụng

- Tên ứng dụng: Xây dựng nhà sách online

- Database: PostgreSQL, Redis, ELK Stack, Python

2.4.2.1 Yêu cầu chức năng nghiệp vụ

STT Yêu cầu nghiệp vụ Loại yêu cầu Ghi chú

1 Tìm kiếm sản phẩm theo tên hoặc danh mục

2 Xem danh sách tất cả sản phẩm Tra cứu

3 Xem thông tin chi tiết sản phẩm Tra cứu

4 Xem giỏ hàng Tra cứu

5 Xem mục sản phẩm yêu thích Tra cứu

6 Xem đơn hàng Tra cứu

7 Thêm, sửa, xóa sản phẩm trong giỏ hàng

8 Thêm, sửa, xóa sản phẩm trong mục sản phẩm yêu thích

8 Đăng ký tài khoản Lưu trữ

9 Thêm đánh giá Lưu trữ

10 Xem đánh giá Tra cứu

11 Thích/Bỏ thích đánh giá Lưu trữ

12 Báo cáo đánh giá Lưu trữ

Bảng 1: Bảng mô tả yêu cầu chức năng của hệ thống phía user

STT Yêu cầu nghiệp vụ Loại yêu cầu Ghi chú

1 Tìm kiếm sản phẩm theo tên hoặc danh mục

2 Xem danh sách sản phẩm Tra cứu

3 Xem thông tin chi tiết sản phẩm Tra cứu

4 Thêm, sửa, xoá thông tin sản phẩm Lưu trữ

5 Thêm, sửa, xoá danh mục Lưu trữ

6 Xem đánh giá Tra cứu

7 Xoá đánh giá Lưu trữ

Bảng 2: Bảng mô tả yêu cầu chức năng của hệ thống phía admin

2.4.2.2 Yêu cầu chức năng hệ thống

STT Yêu cầu hệ thống Mô tả Ghi chú

1 Chức năng phân quyền Phân quyền phía quản trị gồm có admin Phía người dùng gồm có guest và user

2 Chức năng xác thực Xác thực phía người dùng thông qua email

3 Chức năng khôi phục mật khẩu Khôi phục thông qua gửi đường dẫn xác thực qua email

4 Chức năng thanh toán trực tuyến Thanh toán trực tuyến thông qua Stripe và Paypal

Bảng 3: Bảng mô tả yêu cầu chức năng của hệ thống

2.4.3 Yêu cầu phi chức năng

STT Yêu cầu phi chức năng Loại yêu cầu Ghi chú

1 Giao diện thân thiện với người dùng Tính tiện dụng

2 Tốc độ xử lý và tìm kiếm nhanh chóng, chính xác

3 Thông tin cá nhân của người dùng được bảo mật và mã hóa

4 Dễ dàng mở rộng quy mô Tính tiến hóa

Bảng 4: Bảng mô tả yêu cầu phi chức năng

PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG

Tác nhân hệ thống

Hệ thống website kinh doanh sách gồm 3 actor: Admin (Admin), User (người dùng) và Guest (người dùng vãng lai)

- Admin: là người quản lý trang web thông qua xem thống kê của website, quản lý danh mục sản phẩm, quản lý sản phẩm, xem thông tin người dùng, xem thông tin đơn hàng Qua đó giúp cho admin có cái nhìn tổng quan về tình hình kinh doanh của website

- User: là người dùng đã đăng ký với hệ thống, có thể tìm kiếm, xem sản phẩm, xem danh mục sản phẩm, tìm kiếm sản phẩm theo danh mục, quản lý giỏ hàng, quản lý danh sách sản phẩm yêu thích, đồng thời đặt hàng và thanh toán đơn hàng Đánh giá các sản phẩm đã mua thành công

- Guest: là người dùng chưa đăng ký với hệ thống, có thể tìm kiếm và xem sản phẩm của trang web mà không cần phải xác thực Nếu có nhu cầu mua hàng và trải nghiệm thêm nhiều tính năng, guest có thể đăng ký để sử dụng dịch vụ của trang web

Lược đồ Use case

3.2.1 Lược đồ Use case phía người dùng

Hình 6: Lược đồ Use case phía người dùng

3.2.2 Lược đồ Use case phía admin

Hình 7: Lược đồ Use case phía admin

3.2.3 Mô tả use case của hệ thống

Role Tên Usecase Mô tả

User Đăng nhập Người dùng sử dụng tên đăng nhập và mật khẩu đã đăng ký để đăng nhập Hệ thống đối chiếu thông tin để xác thực người dùng

Người dùng chọn sản phẩm để xem thông tin chi tiết của sản phẩm

Xem giỏ hàng Người dùng chọn biểu tượng giỏ hàng để xem các sản phẩm có trong giỏ hàng Xem danh sách sản phẩm yêu thích

Người dùng chọn biểu tượng yêu thích để xem các sản phẩm đã lưu trong danh sách sản phẩm yêu thích

Thêm sản phẩm vào giỏ hàng

Người dùng thêm sản phẩm muốn mua vào giỏ hàng bằng cách nhấn vào nút “Add to cart” tại trang chi tiết của sản phẩm

Thêm sản phẩm vào mục sản phẩm yêu thích

Người dùng thêm sản phẩm vào mục sản phẩm yêu thích bằng cách nhấn vào nút “Add to wishlist” tại trang chi tiết của sản phẩm

Người dùng có thể chỉnh sửa số lượng sản phẩm hoặc xoá sản phẩm ra khỏi giỏ hàng

Quản lý sản phẩm yêu thích

Người dùng có thể xoá sản phẩm ra khỏi mục yêu thích hoặc thêm sản phẩm vào giỏ hàng

Thanh toán Sau khi chọn thanh toán đơn hàng, người dùng sẽ thanh toán đơn hàng thông qua hình thức thanh toán online, sau khi thanh toán sẽ có thông báo thể hiện trạng thái thanh toán

Xem đơn hàng đã đặt

Người dùng có thể xem lại đơn hàng đặt

Tìm kiếm Người dùng có thể tìm kiếm sản phẩm thông qua thanh tìm kiếm hoặc thông qua các danh mục Đăng xuất Người dùng chọn nút “Log out” để đăng xuất thông tin tài khoản Đánh giá Sau khi mua sản phẩm, người dùng có thể đánh giá sản phẩm thông qua rating và bình luận

Quản lý địa chỉ Người dùng có thể thêm, sửa, xoá địa chỉ giao hàng Quên mật khẩu Người dùng quên mật khẩu có thể tạo mật khẩu mới thông qua xác thực email Guest Xem trang chủ Guest có thể xem trang chủ mà không cần đăng nhập hay đăng ký tài khoản Tra cứu sản phẩm

Guest chọn sản phẩm để xem thông tin chi tiết của sản phẩm

Tìm kiếm Guest có thể tìm kiếm sản phẩm thông qua thanh tìm kiếm hoặc thông qua các danh mục sản phẩm Đăng ký Guest muốn đăng ký thành User cần nhập các thông tin sau:

- Username (không trùng với tên user nào khác)

Admin Xem doanh thu Admin có thể xem được doanh thu theo thời gian của trang web Quản lý sản phẩm

Admin có thể quản lý sản phẩm với các chức năng thêm sửa xoá thông tin sản phẩm

Xem sản phẩm Admin xem được list các sản phẩm có trong trang web Đăng nhập Admin sử dụng tên đăng nhập và mật khẩu đã được cấp để đăng nhập

KHÓA LUẬN TỐT NGHIỆP 20 Đăng xuất Admin có thể đăng xuất thông tin bằng cách chọn nút “Log out”

Admin có thể quản lý sản phẩm với các chức năng thêm sửa xoá thông tin danh mục

Xem đơn hàng người dùng

Admin có thể xem chi tiết thông tin các đơn hàng mà người dùng đã đặt Bảng 5: Bảng mô tả Use case của hệ thống

Đặc tả Use case

Short Description Guest cần tạo tài khoản để đăng nhập và sử dụng các dịch vụ của website Actors Guest

Pre-Conditions Guest cần phải truy cập website và điền đầy đủ thông tin yêu cầu để thực hiện tạo tài khoản Post Conditions Guest tạo tài khoản thành công và đăng nhập được vào website Main Flow (1) Người dùng truy cập vào website

(2) Người dùng chọn vào mục Sign In/Sign up

(3) Người dùng chọn Sign up

(4) Người dùng điền thông tin yêu cầu đầy đủ

(5) Người dùng chọn Register để xác nhận tạo tài khoản [A1] [E1]

(6) Hệ thống hiển thị thông báo đăng ký tài khoản thành công

(7) Chuyển hướng đến trang đăng nhập Alternate Flow (A1) Guest huỷ đăng ký tài khoản và kết thúc quá trình đăng ký

Exception Flow (E1) Nếu tài khoản email hoặc tên tài khoản đã tồn tại trong hệ thống thì quay lại bước (3) Bảng 6: Bảng đặc tả Use case đăng ký

Short Description Người dùng đăng nhập thông qua tài khoản đã đăng ký với hệ thống Actors User

Pre-Conditions Thông tin của người dùng phải tồn tại trong website

Post Conditions Người dùng đăng nhập thành công vào website

Main Flow (1) Người dùng truy cập vào website

(2) Người dùng chọn vào mục Sign In/Sign up

(3) Người dùng điền thông tin đăng nhập

(4) Người dùng nhấn chọn Sign in

(5) Hệ thống xác thực thông tin đăng nhập [E1]

(5) Hệ thống hiển thị thông báo đăng nhập thành công

(6) Chuyển hướng đến trang chủ [A1]

Alternate Flow (A1) Hệ thống điều hướng tài khoản sang trang admin nếu tài khoản đăng nhập là admin

Exception Flow (E1) Nếu tài khoản hoặc mật khẩu không hợp lệ thì quay lại bước (3) Bảng 7: Bảng đặc tả Use case đăng nhập

Short Description Người dùng đăng xuất, xoá phiên đăng nhập hiện tại

Pre-Conditions Người dùng đã đăng nhập thành công vào website

Post Conditions Người dùng đăng xuất thành công

Main Flow (1) Người dùng nhấn vào hình ảnh đại diện trên thanh

(2) Người dùng chọn vào mục Log out

(3) Hệ thống hiển thị thông báo Log out

(4) Hệ thống điều hướng người dùng đến trang đăng nhập [A1]

Alternate Flow (A1) Hệ thống không điều hướng người dùng nếu người dùng đang tại các trang Home, Search Exception Flow

Bảng 8: Bảng đặc tả Use case đăng xuất

Use case Xem sản phẩm

Short Description Người dùng có thể xem các sản phẩm của website

Pre-Conditions Người dùng đã truy cập vào website

Post Conditions Người dùng có thể xem các sản phẩm có trên website

Main Flow (1) Chọn vào danh mục sản phẩm cần xem với quyền User hoặc chưa đăng nhập

(2) Hệ thống hiển thị thông tin danh sách các sản phẩm tương ứng

Bảng 9: Bảng đặc tả Use case Xem sản phẩm

3.3.5 Xem chi tiết sản phẩm

Use case Xem chi tiết sản phẩm

Short Description Người dùng có thể xem thông tin chi tiết của một sản phẩm bất kỳ có trên website Actors Admin, User, Guest

Post Conditions Người dùng có thể xem thông tin chi tiết của một sản phẩm bất kỳ có trên website Main Flow (1) Chọn vào sản phẩm cần xem thông tin chi tiết

(2) Hệ thống hiển thị thông tin chi tiết của sản phẩm

Bảng 10: Bảng đặc tả Use case Xem chi tiết sản phẩm

Use case Tìm kiếm sản phẩm

Short Description Người dùng tìm kiếm sản phẩm thông qua thanh tìm kiếm

Pre-Conditions Người dùng đã truy cập vào website

Post Conditions Người dùng có thể tìm thấy thông tin của sản phẩm cần tìm

(1) Người dùng nhấp chọn vào thanh tìm kiếm

(2) Người dùng nhập thông tin muốn tìm kiếm [A1]

(3) Người dùng nhấn biểu tượng tìm kiếm

(4) Hệ thống hiển thị danh sách các sản phẩm tìm được thông qua từ khóa người dùng vừa nhập [E1]

Alternate Flow (A1) Người dùng nhấp chọn ngoài khu vực thanh tìm kiếm và quay lại bước (1) Exception Flow (E1) Người dùng nhập thông tin sản phẩm không có trong hệ thống, hiển thị thông báo không có sản phẩm

Bảng 11: Bảng đặc tả Use case tìm kiếm sản phẩm

3.3.7 Thêm sản phẩm vào giỏ hàng

Use case Thêm sản phẩm vào giỏ hàng

Short Description Người dùng có thể thêm sản phẩm vào giỏ hàng

Pre-Conditions Người dùng đã đăng nhập vào website

Post Conditions Sản phẩm được thêm vào giỏ hàng thành công

Main Flow (1) Người dùng chọn vào sản phẩm mong muốn

(2) Hệ thống điều hướng đến trang thông tin chi tiết của sản phẩm

(3) Người dùng nhấp chọn số lượng sản phẩm mong muốn

(4) Người dùng nhấp chọn “Add to cart”

(5) Hệ thống thực hiện thêm sản phẩm vào giỏ hàng với số lượng tương ứng

(6) Hệ thống hiển thị thông báo thêm sản phẩm vào giỏ thành công

Bảng 12: Bảng đặc tả Use case thêm sản phẩm vào giỏ hàng

3.3.8 Chỉnh sửa số lượng sản phẩm trong giỏ hàng

Use case Chỉnh sửa số lượng sản phẩm có trong giỏ hàng

Short Description Người dùng có thể chỉnh sửa số lượng sản phẩm vào giỏ hàng Actors Admin, User

Pre-Conditions Người dùng đã đăng nhập vào website

Có ít nhất 1 sản phẩm trong giỏ hàng Post Conditions Số lượng sản phẩm trong giỏ hàng được chỉnh sửa thành công Main Flow (1) Người dùng nhấp chọn biểu tượng giỏ hàng

(2) Hệ thống điều hướng đến trang chi tiết giỏ hàng của người dùng

(3) Hệ thống hiển thị danh sách sản phẩm trong giỏ hàng

(4) Người dùng thực hiện chỉnh sửa số lượng sản phẩm trong giỏ hàng

(5) Hệ thống thực hiện lưu thông tin giỏ hàng Alternate Flow

Bảng 13: Bảng đặc tả Use case chỉnh sửa số lượng sản phẩm trong giỏ hàng

3.3.9 Xóa sản phẩm khỏi giỏ hàng

Use case Xóa sản phẩm khỏi giỏ hàng

Short Description Người dùng có thể xóa sản phẩm khỏi giỏ hàng

Pre-Conditions Người dùng đã đăng nhập vào website

Người dùng có ít nhất 1 sản phẩm trong giỏ hàng Post Conditions Sản phẩm được xóa khỏi giỏ hàng thành công

Main Flow (1) Người dùng nhấp chọn biểu tượng giỏ hàng

(2) Hệ thống điều hướng đến trang chi tiết giỏ hàng của người dùng

(3) Hệ thống hiển thị danh sách sản phẩm trong giỏ hàng

(4) Người dùng thực hiện xóa sản phẩm mong muốn

(5) Người dùng chọn xác nhận xóa sản phẩm [A1]

(6) Hệ thống thực hiện xóa sản phẩm khỏi giỏ hàng Alternate Flow (A1) Người dùng chọn huỷ và quay lại bước 2

Bảng 14: Bảng đặc tả Use case xóa sản phẩm khỏi giỏ hàng

Use case Xem sản phẩm trong giỏ hàng

Short Description Người dùng có thể xem sản phẩm trong giỏ hàng

Pre-Conditions Người dùng đã đăng nhập vào website

Post Conditions Người dùng có thể xem sản phẩm trong giỏ hàng

Main Flow (1) Người dùng nhấp chọn biểu tượng giỏ hàng

(2) Hệ thống điều hướng đến trang chi tiết giỏ hàng của người dùng

(3) Hệ thống hiển thị danh sách sản phẩm trong giỏ hàng [E1]

Exception Flow Nếu không có sản phẩm nào trong giỏ hàng, hiển thị thông báo không có sản phẩm trong giỏ hàng Bảng 15: Bảng đặc tả Use case xem thông tin giỏ hàng

3.3.11 Xem sản phẩm trong mục sản phẩm yêu thích

Use case Xem sản phẩm trong mục sản phẩm yêu thích

Short Description Người dùng có thể xem sản phẩm trong mục sản phẩm yêu thích Actors Admin, User

Pre-Conditions Người dùng đã đăng nhập vào website

Post Conditions Người dùng có thể xem sản phẩm trong mục sản phẩm yêu thích Main Flow (1) Người dùng nhấp chọn biểu tượng yêu thích

(2) Hệ thống điều hướng đến trang chi tiết danh sách sản phẩm yêu thích của người dùng

(3) Hệ thống hiển thị danh sách sản phẩm trong mục sản phẩm yêu thích [E1]

Exception Flow Nếu không có sản phẩm nào trong mục sản phẩm yêu thích, hiển thị thông báo không có sản phẩm trong mục sản phẩm yêu thích

Bảng 16: Bảng đặc tả Use case xem sản phẩm trong mục sản phẩm yêu thích

3.3.12 Thêm sản phẩm vào mục sản phẩm yêu thích

Use case Thêm sản phẩm vào mục sản phẩm yêu thích

Short Description Người dùng có thể thêm sản phẩm vào mục sản phẩm yêu thích Actors Admin, User

Pre-Conditions Người dùng đã đăng nhập vào website

Post Conditions Sản phẩm được thêm vào mục sản phẩm yêu thích thành công Main Flow (1) Người dùng chọn vào sản phẩm mong muốn

(2) Hệ thống điều hướng đến trang thông tin chi tiết của sản phẩm

(3) Người dùng nhấp chọn “Add to wishlist”, nút chuyển sang trạng thái “Already in wishlist”

(5) Hệ thống thực hiện thêm sản phẩm vào mục sản phẩm yêu thích

(6) Hệ thống hiển thị thông báo thêm sản phẩm vào mục sản phẩm yêu thích thành công

Bảng 17: Bảng đặc tả Use case thêm sản phẩm vào mục sản phẩm yêu thích

3.3.13 Xóa sản phẩm khỏi mục sản phẩm yêu thích

Use case Xóa sản phẩm khỏi mục sản phẩm yêu thích

Short Description Người dùng có thể xoá sản phẩm khỏi mục sản phẩm yêu thích Actors Admin, User

Pre-Conditions Người dùng đã đăng nhập vào website

Người dùng có ít nhất 1 sản phẩm trong mục sản phẩm yêu thích

Post Conditions Sản phẩm được xoá khỏi mục sản phẩm yêu thích thành công Main Flow (1) Người dùng nhấp chọn biểu tượng yêu thích

(2) Hệ thống điều hướng đến trang chi tiết giỏ hàng của người dùng

(3) Hệ thống hiển thị danh sách sản phẩm trong mục sản phẩm yêu thích

(4) Người dùng thực hiện xoá sản phẩm mong muốn

(5) Người dùng chọn xác nhận xoá sản phẩm [A1]

(6) Hệ thống thực hiện xoá sản phẩm khỏi mục sản phẩm yêu thích

Alternate Flow (A1) Người dùng chọn huỷ và quay lại bước 2

Bảng 18: Bảng đặc tả Use case xóa sản phẩm khỏi mục sản phẩm yêu thích

3.3.14 Thêm sản phẩm vào giỏ hàng từ mục sản phẩm yêu thích

Use case Thêm sản phẩm vào giỏ hàng từ mục sản phẩm yêu thích

Short Description Người dùng có thể thêm sản phẩm vào giỏ hàng từ mục sản phẩm yêu thích Actors Admin, User

Pre-Conditions Người dùng đã đăng nhập vào website

Người dùng có ít nhất 1 sản phẩm trong mục sản phẩm yêu thích

Post Conditions Sản phẩm được thêm vào giỏ hàng thành công

Main Flow (1) Người dùng nhấp chọn biểu tượng yêu thích

(2) Hệ thống điều hướng đến trang chi tiết giỏ hàng của người dùng

(3) Hệ thống hiển thị danh sách sản phẩm trong mục sản phẩm yêu thích

(4) Người dùng nhấp chọn biểu tượng thêm vào giỏ hàng và nút chuyển sang trạng thái đã tồn tại trong giỏ hàng

(5) Hệ thống thực hiện thêm sản phẩm vào giỏ hàng

(6) Hệ thống thông báo đã thêm sản phẩm vào giỏ hàng thành công

Bảng 19: Bảng đặc tả Use case thêm sản phẩm vào giỏ hàng từ mục sản phẩm yêu thích

3.3.15 Xem thông tin cá nhân

Use case Xem thông tin cá nhân

Short Description Người dùng có thể xem thông tin cá nhân

Pre-Conditions Người dùng đã đăng nhập vào website

Post Conditions Người dùng có thể xem được thông tin cá nhân

Main Flow (1) Người dùng nhấp chọn biểu tượng hình ảnh cá nhân

(2) Menu điều hướng thả xuống [A1]

(3) Người dùng nhấp chọn “My profile”

(4) Hệ thống điều hướng đến trang cá nhân của người dùng

(5) Hệ thống hiển thị các thông tin cá nhân của người dùng

(6) Biểu tượng thêm vào giỏ hàng chuyển thành biểu tượng túi hàng thông báo cho người dùng biết sản phẩm đã tồn tại trong giỏ hàng

Alternate Flow (A1) Người dùng bấm chọn biểu tượng hình ảnh cá nhân thêm 1 lần nữa để đóng Menu, quay lại bước 1

Bảng 20: Bảng đặc tả Use case xem thông tin cá nhân

3.3.16 Chỉnh sửa thông tin cá nhân

Use case Chỉnh sửa thông tin cá nhân

Short Description Người dùng có thể chỉnh sửa thông tin cá nhân

Pre-Conditions Người dùng đã đăng nhập vào website

Người dùng đã vào trang thông tin cá nhân Post Conditions Người dùng có thể chỉnh sửa được thông tin cá nhân

Main Flow (1) Người dùng thay đổi thông tin ở những trường thông tin có thể thay đổi

(2) Nhấp nút “Save changes” để lưu việc chỉnh sửa [A1]

(3) Người dùng nhấp chọn “My profile”

(4) Hệ thống xác nhận thông tin và lưu vào cơ sở dữ liệu [E1]

(5) Hệ thống hiển thị thông báo đã cập nhật thông tin thành công

Alternate Flow (A1) Người dùng thoát trang cá nhân, không có thông tin nào thay đổi Exception Flow (E1) Thông tin chỉnh sửa xung đột với dữ liệu bên dưới và quay lại bước (1) Bảng 21: Bảng đặc tả Use case chỉnh sửa thông tin cá nhân

Use case Thay đổi mật khẩu tài khoản

Short Description Người dùng có thể thay đổi mật khẩu tài khoản cá nhân Actors Admin, User

Pre-Conditions Người dùng đã đăng nhập vào website

Người dùng đã vào trang thông tin cá nhân Post Conditions Người dùng thay đổi mật khẩu thành công

Main Flow (1) Nhấn chọn “Change password”

(2) Nhập thông tin mật khẩu cũ, mật khẩu mới và xác nhận mật khẩu mới

(3) Người dùng nhấp chọn “Change password” [A1]

(4) Hệ thống xác nhận thông tin và lưu vào cơ sở dữ liệu [E1]

(5) Hệ thống hiển thị thông báo đã cập nhật thông tin thành công

Alternate Flow (A1) Người dùng ấn chọn “Cancel”, không có thông tin nào được lưu Exception Flow (E1) Mật khẩu cũ sai, hoặc mật khẩu mới và xác nhận mật khẩu mới không hợp lệ, quay lại bước (2) Bảng 22: Bảng đặc tả Use case thay đổi mật khẩu

Use case Quên mật khẩu tài khoản

Short Description Người dùng quên mật khẩu đăng nhập và muốn thay mật khẩu mới Actors Admin, User

Pre-Conditions Người dùng đã vào trang Log in

Post Conditions Người dùng đổi mật khẩu mới thành công

Main Flow (1) Người dùng nhấn chọn “Forgot password ? “

(3) Người dùng nhấn chọn “Send email” [A1] [E1]

(4) Hệ thống gửi gmail có chứa đường dẫn xác thực

(5) Người dùng nhấn đường link xác thực email [A2]

(6) Hệ thống chuyển tới trang nhập mật khẩu mới

(7) Người dùng nhập thông tin mật khẩu mới

(8) Nhấn chọn “Save new password” [A3] [E2]

(9) Hệ thống xác nhận và lưu thông tin xuống cơ sở dữ liệu Alternate Flow (A1) Người dùng thoát trang quên mật khẩu, không có thông tin nào thay đổi (A2) Người dùng không xác thực email, thời gian xác thực hết hạn, không có thông tin nào thay đổi

(A3) Người dùng không lưu mật khẩu mới, không có thông tin nào thay đổi

Exception Flow (E1) Email người dùng nhập không tồn tại trong hệ thống, không thể gửi email xác thực (E2) Trường mật khẩu mới và xác nhận mật khẩu không khớp nhau, quay lại bước 7

Bảng 23: Bảng đặc tả Use case quên mật khẩu

3.3.19 Xem đơn hàng đã đặt

Use case Xem đơn hàng đã đặt

Short Description Người dùng có thể xem lại đơn hàng đã đặt thành công Actors Admin, User

Pre-Conditions Người dùng đã vào trang thông tin cá nhân

Người dùng đã đặt ít nhất 1 đơn hàng Post Conditions Người dùng xem được đơn hàng đã đặt

Main Flow (1) Người dùng nhấp vào mục Order List

(2) Hệ thống hiển thị tab Order List

(3) Hệ thống hiển thị thông tin các đơn hàng đã đặt thành công của người dùng

Bảng 24: Bảng đặc tả Use case xem đơn hàng đã đặt

3.3.20 Đánh giá sản phẩm sau khi mua

Use case Đánh giá sản phẩm sau khi mua

Short Description Người dùng đánh giá và để lại bình luận sau khi mua sản phẩm Actors Admin, User

Pre-Conditions Người dùng đã đăng nhập vào hệ thống

Người dùng đã mua sản phẩm và chưa bình luận về sản phẩm

Post Conditions Đánh giá và bình luận sản phẩm đã mua

Main Flow (1) Người dùng vào trang cá nhân

(3) Hệ thống hiển thị các đơn hàng đã đặt của người dùng

(4) Người dùng nhấn vào sản phẩm cần đánh giá

(5) Hệ thống điều hướng tới trang chi tiết sản phẩm

(6) Người dùng nhập thông tin cần thiết

(8) Hệ thống lưu thông tin đánh giá xuống cơ sở dữ liệu

Alternate Flow (A1) Người dùng chọn “Cancel”, không có thông tin nào được lưu Exception Flow

Bảng 25: Bảng đặc tả Use case đánh giá sản phẩm sau khi mua

3.3.21 Xem danh mục sản phẩm

Use case Xem danh mục sản phẩm

Short Description Người dùng có thể xem danh mục sản phẩm

Pre-Conditions Người dùng truy cập vào trang web

Post Conditions Người dùng có thể xem được các danh mục của website Main Flow (1) Chọn vào Genres nếu đăng nhập với quyền Admin.

(2) Hệ thống hiển thị danh sách các danh mục của website [A1]

Alternate Flow (A1) Danh mục được hiển thị trên thanh điều hướng khi người dùng đăng nhập với vai trò User hoặc chưa đăng nhập

Bảng 26: Bảng đặc tả Use case xem danh mục sản phẩm

Use case Thêm danh mục sản phẩm

Short Description Admin có thể thêm danh mục sản phảm

Pre-Conditions Admin phải đăng nhập thành công vào hệ thống quản lý Post Conditions Admin có thể thêm được danh mục sản phẩm mới cho website Main Flow (1) Chọn vào Genres

(3) Nhập thông tin về danh mục.

(4) Chọn nút “Create” để tạo mới danh mục [A1]

(5) Hệ thống xác nhận thông tin và lưu vào cơ sở dữ liệu [E1]

Alternate Flow (A1) Admin chọn nút “Cancel” để huỷ tạo danh mục, không có thông tin nào được lưu Exception Flow (E1) Admin nhập thông tin không hợp lệ, quay lại bước 3

Bảng 27: Bảng đặc tả Use case thêm danh mục sản phẩm

Use case Sửa danh mục sản phẩm

Short Description Admin có thể chỉnh sửa tên danh mục sản phẩm

Pre-Conditions Admin phải đăng nhập thành công vào hệ thống quản lý Post Conditions Admin có thể chỉnh sửa tên danh mục sản phảm

Main Flow (1) Chọn vào Genres

(2) Chọn vào biểu tượng chỉnh sửa của danh mục cần chỉnh sửa

(3) Nhập thông tin mới cho danh mục

(4) Chọn nút “Update” để cập nhật thông tin mới cho danh mục [A1]

(5) Hệ thống xác nhận thông tin và lưu vào cơ sở dữ liệu [E1]

Alternate Flow (A1) Admin chọn nút “Cancel” để huỷ chỉnh sửa tên danh mục, không có thông tin nào được lưu Exception Flow (E1) Admin nhập thông tin không hợp lệ, quay lại bước 3

Bảng 28: Bảng đặc tả Use case chỉnh sửa danh mục

Use case Thêm sản phẩm

Short Description Admin có thể tạo sản phẩm mới cho website

Pre-Conditions Admin phải đăng nhập thành công vào hệ thống quản lý Post Conditions Admin tạo sản phẩm mới thành công

Main Flow (1) Chọn vào Dashboard

(2) Chọn vào nút “Create book”

(3) Nhập các thông tin của sản phẩm

(4) Chọn nút “Create” để xác nhận tạo sản phẩm mới [A1]

(5) Hệ thống xác nhận thông tin sản phẩm mới và lưu vào cơ sở dữ liệu [E1]

Alternate Flow Admin nhấn nút “Cancel” để huỷ tạo sản phẩm, không có thông tin nào được lưu Exception Flow (E1) Admin nhập thông tin sản phẩm không hợp lệ, quay lại bước 3 Bảng 29: Bảng đặc tả Use case thêm sản phẩm

Use case Chỉnh sửa sản phẩm

Short Description Admin có thể chỉnh sửa thông tin cho sản phẩm

Pre-Conditions Admin phải đăng nhập thành công vào hệ thống quản lý Post Conditions Admin chỉnh sửa thông tin sản phẩm thành công

Main Flow (1) Chọn vào Dashboard

(2) Chọn vào sản phẩm cần chỉnh sửa

(3) Nhập các thông tin cần chỉnh sửa của sản phẩm

(4) Chọn nút “Update” để xác nhận tạo sản phẩm mới [A1]

(5) Hệ thống xác nhận thông tin chỉnh sửa và lưu vào cơ sở dữ liệu [E1]

Alternate Flow (A1) Admin nhấn nút “Cancel” để huỷ tạo sản phẩm, không có thông tin nào được lưu Exception Flow (E1) Admin thông tin sản phẩm không hợp lệ, quay lại bước 3 Bảng 30: Bảng đặc tả Use case chỉnh sửa sản phẩm

Short Description Người dùng đặt và thanh toán đơn hàng

Pre-Conditions Người dùng đã đăng nhập thành công vào website

Người dùng có ít nhất 1 sản phẩm trong giỏ hàng Post Conditions Người dùng đặt hàng thành công

Main Flow (1) Người dùng chọn biểu tượng giỏ hàng

(2) Người dùng kiểm tra thông tin giỏ hàng

(3) Người dùng nhấn vào nút “Accept”

(4) Hệ thống điều hướng đến trang thanh toán [E1]

(5) Người dùng xác nhận thông tin cá nhân, địa chỉ giao hàng và nhập thông tin thanh toán [A1]

(6) Người dùng nhấn nút “Accept” để tạo đơn hàng và thanh toán đơn hàng [A2]

(7) Đơn hàng được tạo và thanh toán thành công, thông tin đơn hàng được lưu vào cơ sở dữ liệu

Alternate Flow (A1) Người dùng nhấn nút “Return” để quay lại trang giỏ hàng, huỷ tạo đơn hàng (A2) Người dùng nhập thông tin thanh toán sai, quay lại bước 5

Exception Flow (E1) Nếu người dùng chưa tạo địa chỉ giao hàng hoặc cập nhật thông tin cá nhân, hiển thị thông báo chưa có địa chỉ giao hàng, quay lại bước 3

Bảng 31: Bảng đặc tả Use case đặt hàng

Use case Xem doanh thu của website

Short Description Admin xem được doanh thu của trang web theo giờ, ngày, quý, năm

Pre-Conditions Admin phải đăng nhập thành công vào hệ thống quản lý Post Conditions Admin xem được doanh thu

Main Flow (1) Chọn vào Dashboard

(2) Hệ thống hiển thị doanh thu theo giờ, ngày, quý, năm

Bảng 32: Bảng đặc tả Use case xem doanh thu

Use case Thêm địa chỉ giao hàng

Short Description Người dùng có thể thêm địa chỉ giao hàng

Pre-Conditions Người dùng đã đăng nhập thành công vào website

Người dùng đã vào trang thông tin cá nhân Post Conditions Người dùng có thể thêm được địa chỉ mới vào website Main Flow (1) Chọn vào Address

(2) Chọn vào nút “Add Address”

(3) Nhập thông tin về địa chỉ

(4) Chọn nút “Create” để tạo mới địa chỉ [A1]

(5) Hệ thống xác nhận thông tin và lưu vào cơ sở dữ liệu [E1]

Lược đồ ERD

Hình 8: Lược đồ ERD của hệ thống

Lược đồ tuần tự

Hình 9: Lược đồ tuần tự chức năng đăng nhập

Hình 10: Lược đồ tuần tự chức năng đăng ký

3.5.3 Chức năng chỉnh sửa thông tin cá nhân

Hình 11: Lược đồ tuần tự chức năng chỉnh sửa thông tin cá nhân

3.5.4 Chức năng thay đổi mật khẩu

Hình 12: Lược đồ tuần tự chức năng thay đổi mật khẩu

3.5.5 Chức năng quên mật khẩu

Hình 13: Lược đồ tuần tự chức năng quên mật khẩu

3.5.6 Chức năng xem thông tin chi tiết sản phẩm

Hình 14: Lược đồ tuần tự xem thông tin chi tiết của 1 sản phẩm

3.5.7 Chức năng thêm sản phẩm vào giỏ hàng

Hình 15: Lược đồ tuần tự chức năng thêm sản phẩm vào giỏ hàng

3.5.8 Chức năng xoá sản phẩm ra khỏi giỏ hàng

Hình 16: Lược đồ tuần tự chức năng xoá sản phẩm ra khỏi giỏ hàng

3.5.9 Chức năng chỉnh sửa số lượng sản phẩm trong giỏ hàng

Hình 17: Lược đồ tuần tự chức năng chỉnh sửa số lượng sản phẩm trong giỏ hàng

3.5.10 Chức năng xem giỏ hàng

Hình 18: Lược đồ tuần tự chức năng xem giỏ hàng

3.5.11 Chức năng thêm sản phẩm vào mục sản phẩm yêu thích

Hình 19: Lược đồ tuần tự chức năng thêm sản phẩm vào mục sản phẩm yêu thích

3.5.12 Chức năng xoá sản phẩm ra khỏi mục sản phẩm yêu thích

Hình 20: Lược đồ tuần tự chức năng xoá sản phẩm khỏi mục sản phẩm yêu thích

3.5.13 Chức năng thêm sản phẩm vào giỏ hàng từ mục sản phẩm yêu thích

Hình 21: Lược đồ tuần tự chức năng thêm sản phẩm vào giỏ hàng từ mục sản phẩm yêu thích

3.5.14 Chức năng xem mục sản phẩm yêu thích

Hình 22: Lược đồ tuần tự chức năng xem mục sản phẩm yêu thích

Hình 23: Lược đồ tuần tự chức năng tìm kiếm

3.5.16 Chức năng đánh giá sản phẩm

Hình 24: Lược đồ tuần tự chức năng đánh giá sản phẩm

Hình 25: Lược đồ tuần tự chức năng đặt hàng

3.5.18 Chức năng thêm địa chỉ

Hình 26: Lược đồ tuần tự chức năng thêm địa chỉ

3.5.19 Chức năng sửa địa chỉ

Hình 27: Lược đồ tuần tự chức năng sửa địa chỉ

3.5.20 Chức năng xoá địa chỉ

Hình 28: Lược đồ tuần tự chức năng xoá địa chỉ\

3.5.21 Chức năng tạo sản phẩm

Hình 29: Lược đồ tuần tự chức năng tạo sản phẩm

3.5.22 Chức năng chỉnh sửa thông tin sản phẩm

Hình 30: Lược đồ tuần tự chức năng chỉnh sửa thông tin sản phẩm

3.5.23 Chức năng tạo danh mục

Hình 31: Lược đồ tuần tự chức năng tạo danh mục

3.5.24 Chức năng chỉnh sửa thông tin danh mục

Hình 32: Lược đồ tuần tự chức năng sửa danh mục

3.5.25 Chức năng chỉnh sửa thông tin danh mục

Hình 33: Lược đồ tuần tự chức năng xem đơn hàng của người dùng

3.5.26 Chức năng xoá sản phẩm

Hình 34: Lược đồ tuần tự chức năng xoá sản phẩm của website

3.5.27 Chức năng xoá danh mục

Hình 35: Lược đồ tuần tự chức năng xoá danh mục

3.5.28 Chức năng xoá đánh giá

Hình 36: Lược đồ tuần tự chức năng xoá đánh giá

Hình 37: Lược đồ tuần tự chức năng đăng xuất

THIẾT KẾ CƠ SỞ DỮ LIỆU

Lược đồ cơ sở dữ liệu

Hình 38: Lược đồ cơ sở dữ liệu của hệ thống

Mô tả dữ liệu bảng

4.2.1 Thông tin các trường trong bảng

TT Tên bảng/ trường Kiểu Mục đích bảng/trường

1 users Lưu trữ thông tin của người dùng trong hệ thống 1.1 username varchar Tên tài khoản người dùng

1.2 full_name varchar Tên đầy đủ của người dùng 1.3 email varchar Email cá nhân của người dùng 1.4 password varchar Mật khẩu tài khoản người dùng

1.5 age int Tuổi của người dùng

1.6 sex varchar Giới tính của người dùng

1.7 image varchar Ảnh đại diện của người dùng

1.8 phone_number varchar Số điện thoại cá nhân người dùng 1.9 role varchar Vai trò của người dùng trong hệ thống

1.10 password_change_at timestamptz Thời gian mật khẩu người dùng thay đổi 1.11 is_email_verified boolean Trạng thái xác thực email

1.12 created_at timestamptz Thời gian tạo tài khoản

Bảng 36: Thông tin các trường trong bảng users

TT Tên bảng/ trường Kiểu Mục đích bảng/trường

2 verify_emails Lưu thông tin xác thực email của người dùng

2.2 username varchar Tên tài khoản người dùng

2.3 email varchar Email cá nhân người dùng

2.5 is_used bool Trạng thái của mã bí mật

2.6 created_at timestamptz Thời gian tạo mã

2.7 expired_at timestamptz Thời gian hết hạn mã

Bảng 37: Thông tin các trường trong bảng verify_emails

TT Tên bảng/ trường Kiểu Mục đích bảng/trường

3 reset_passwords Lưu thông tin reset mật khẩu của tài khoản người dùng

3.2 username varchar Tên tài khoản người dùng

3.3 reset_code varchar Mã reset password

3.4 is_used bool Trạng thái sử dụng của mã

3.5 created_at timestamptz Thời gian mã được tạo

3.6 expired_at timestamptz Thời gian mã hết hạn

Bảng 38: Thông tin các trường trong bảng reset_passwords

TT Tên bảng/ trường Kiểu Mục đích bảng/trường

4 address Lưu thông tin địa chỉ người dùng

4.2 address varchar Thông tin các địa chỉ

4.3 username varchar Tên tài khoản người dùng

4.6 created_at timestamptz Thời gian tạo địa chỉ

Bảng 39: Thông tin các trường trong bảng address

TT Tên bảng/ trường Kiểu Mục đích bảng/trường

5 cities Lưu thông tin các thành phố

5.2 name varchar Tên của thành phố

5.3 created_at timestamptz Thời gian được tạo

Bảng 40: Thông tin các trường trong bảng cities

Kiểu Mục đích bảng/trường

6 districts Lưu thông tin các quận

6.4 created_at timestamptz Thời gian được tạo

Bảng 41: Thông tin các trường trong bảng districts

Kiểu Mục đích bảng/trường

7 books Lưu trữ thông tin về sản phẩm sách trong hệ thống 7.1 id bigserial (int64) Mã sách

7.3 price float Giá của sách

7.4 image varchar[] Mảng URL của hình ảnh

7.5 description varchar Mô tả sách

7.6 author varchar Tác giả sách

7.7 publisher varchar Nhà xuất bản

7.8 quantity int Số lượng sách

7.9 rating float Số sao đánh giá sách

7.10 created_at timestamptz Thời gian tạo sách

Bảng 42: Thông tin các trường trong bảng books

TT Tên bảng/ trường Kiểu Mục đích bảng/trường

8 genres Lưu trữ thông tin danh mục

8.1 id bigserial (int64) Mã của danh mục

8.2 name varchar Tên danh mục

8.3 created_at timestamptz Thời gian tạo danh mục

Bảng 43: Thông tin các trường trong bảng genres

TT Tên bảng/ trường Kiểu Mục đích bảng/trường

9 subgenres Lưu trữ thông tin danh mục con

9.1 id bigserial (int64) Mã của danh mục con

9.2 genres_id bigserial (int64) Mã của danh mục

9.3 name varchar Tên danh mục con

9.4 created_at timestamptz Thời gian tạo danh mục con

Bảng 44: Thông tin các trường trong bảng subgenres

Kiểu Mục đích bảng/trường

10 carts Lưu thông tin giỏ hàng của người dùng 10.1 id bigserial (int64) Mã giỏ hàng

10.2 books_id bigserial (int64) Mã sách

10.3 username varchar Tên tài khoản người dùng

10.4 amount int Số lượng sách trong giỏ hàng

10.5 total float Tổng tiền của số sách trong giỏ hàng 10.6 created_at timestamptz Thời gian tạo giỏ hàng

Bảng 45: Thông tin các trường trong bảng carts

TT Tên bảng/ trường Kiểu Mục đích bảng/trường

11 reviews Lưu đánh giá sản phầm của người dùng 11.1 id bigserial (int64) Mã bình luận

11.2 username varchar Tên tài khoản người dùng

11.3 books_id bigserial (int64) Mã sách

11.5 rating int Số sao đánh giá

11.6 created_at timestamptz Thời gian tạo bình luận

Bảng 46: Thông tin các trường trong bảng reviews

Kiểu Mục đích bảng/trường

12 orders Lưu đơn hàng người dùng

12.1 id bigserial (int64) Mã đơn hàng

12.2 username varchar Tên tài khoản người dùng

1.3 status varchar Trạng thái thanh toán đơn hàng 12.4 sub_amount int Số lượng sản phẩm trong đơn hàng 12.5 sub_total float Tổng số tiền của đơn hàng

12.6 created_at timestamptz Thời gian tạo đơn hàng

Bảng 47: Thông tin các trường trong bảng orders

TT Tên bảng/ trường Kiểu Mục đích bảng/trường

13 wishlists Lưu thông tin sản phẩm yêu thích 13.1 id bigserial (int64) Mã sản phẩm yêu thích

13.2 books_id bigserial (int64) Mã sách

13.3 username varchar Tên tài khoản người dùng 13.4 created_at timestamptz Thời gian tạo sản phẩm yêu thích

Bảng 48: Thông tin các trường trong bảng wishlists

TT Tên bảng/ trường Kiểu Mục đích bảng/trường

14 sessions Lưu phiên đăng nhập của người dùng 14.1 id bigserial (int64) Mã định danh

14.2 username varchar Tên tài khoản người dùng

14.3 refresh_token varchar Refresh token

14.4 user_agent varchar Tên trình duyệt/phần mềm dùng để đăng nhập tài khoản

14.5 client_ip varchar Địa chỉ IP người dùng 14.6 is_blocked boolean Trạng thái bị cấm của user 14.7 expires_at timestamptz Thời gian hết hạn của refresh_token 14.8 created_at timestamptz Thời gian tạo session

Bảng 49: Thông tin các trường trong bảng sessions

TT Tên bảng/ trường Kiểu Mục đích bảng/trường

15 searchs Lưu dữ liệu cho việc tìm kiếm sản phẩm 15.1 id bigserial (int64) Mã sách

15.2 book_name varchar Tên sách

15.4 author varchar Tên tác giả

15.5 publisher varchar Tên nhà xuất bản

15.6 rating float Số sao đánh giá sách

15.7 genres varchar Danh mục sách

15.8 subgenres varchar Danh mục con của sách

15.9 searchs_tsv tsvector Tính toán mức độ chính xác của kết quả tìm kiếm

Bảng 50: Thông tin các trường trong bảng searchs

TT Tên bảng/ trường Kiểu Mục đích bảng/trường

16 payments Lưu thông tin thanh toán của người dùng

16.2 username varchar Tên tài khoản người dùng

16.5 price float Tổng tiền thanh toán

16.6 subtotal float Tổng số lượng sản phẩm

16.7 status varchar Trạng thái thanh toán

16.8 created_at timestamptz Thời gian tạo thanh toán

Bảng 51: Thông tin các trường trong bảng payments

TT Tên bảng/ trường Kiểu Mục đích bảng/trường

19 shippings Lưu thông tin vận chuyển

17.2 to_address varchar Địa chỉ vận chuyển

17.3 total float Giá vận chuyển

Bảng 52: Thông tin các trường trong bảng shippings

THIẾT KẾ GIAO DIỆN

Màn hình giao diện phía người dùng vãng lai (Guest)

Sơ đồ luồng màn hình (Screen flow) cho người dùng vãng lai (Guest) trên trang web, bao gồm các màn hình có thể truy cập không cần xác thực quyền người dùng:

5.2 Màn hình giao diện phía người dùng (User)

Sơ đồ luồng màn hình dành cho người dùng đã đăng ký tài khoản với hệ thống (User)

Hình 40: Screenflow của người dùng

Hình 41: Giao diện trang chủ 1

Hình 42: Giao diện trang chủ 2

5.2.2 Giao diện trang đăng nhập

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

5.2.3 Giao diện trang đăng ký

Hình 44: Giao diện trang đăng ký

5.2.4 Giao diện trang danh sách sản phẩm

Hình 45: Giao diện trang danh sách sản phẩm

5.2.5 Giao diện chi tiết sản phẩm

Hình 46: Giao diện chi tiết sản phẩm

5.2.6 Giao diện thông tin cá nhân người dùng

Hình 47: Giao diện thông tin cá nhân người dùng

5.2.7 Giao diện xem đơn hàng đã đặt

Hình 48: Giao diện xem đơn hàng đã đặt

5.2.8 Giao diện sản phẩm yêu thích

Hình 49: Giao diện sản phẩm yêu thích

Hình 50: Giao diện giỏ hàng

5.2.10 Giao diện kết quả tìm kiếm

Hình 51: Giao diện kết quả tìm kiếm

Hình 52: Giao diện đặt hàng 1

Hình 53: Giao diện đặt hàng 2

Hình 54: Giao diện đặt hàng 3

5.2.12 Giao diện đổi mật khẩu

Hình 55: Giao diện dialog đổi mật khẩu

5.2.13 Giao diện quên mật khẩu

Hình 56: Giao diện dialog quên mật khẩu

5.3 Màn hình giao diện Admin (admin)

Sơ đồ luồng màn hình của phân quyền admin

Hình 57: Hình ảnh Screenflow phía admin

Hình 58: Giao diện trang Dashboard – xem doanh thu

5.3.2 Giao diện trang quản lý sản phẩm

Hình 59: Giao diện trang quản lý sản phẩm

5.3.3 Giao diện trang thông tin chi tiết sản phẩm

Hình 60: Giao diện trang thông tin chi tiết sản phẩm

5.3.4 Giao diện trang quản lý danh mục

Hình 61: Giao diện quản lý danh mục

5.3.5 Giao diện Dialog chỉnh sửa tên danh mục con

Hình 62: Dialog chỉnh sửa tên danh mục con

5.3.6 Giao diện Dialog tạo danh mục con mới

Hình 63: Dialog tạo danh mục mới

5.3.7 Giao diện xem đơn hàng người dùng

Hình 64: Giao diện xem đơn hàng người dùng

Hình 65: Giao diện xem đánh giá

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

6.1 Yêu cầu hệ thống Để cài đặt và sử dụng ứng dụng, máy tính cần có các yêu cầu sau:

Bước 1: Tải hoặc clone project từ 2 link Github sau:

- Front end: https://github.com/minhhcuongg-theonefour/NMC-Frontend.git

- Back end: https://github.com/Chien179/NMCBookstoreBE.git

- Elastic Search: https://github.com/minhhcuongg-theonefour/elasticSearch Bước 2: Khởi chạy Back end

- Vào file thư mục chứa project back end, mở cửa sổ command và gõ: “docker compose up”

- Vào file thư mục chứa Elastic search, mở cửa sổ command và gõ: “docker compose up”

Bước 3: Kết nối với database

- Chọn nút “+” để tạo kết nối mới đến database

- Tên database là “book_store”

- Click “Test” để kiểm tra kết nối

- Nếu kết nối thành công, hãy chọn tiếp “Connect”

- Vào thư mục chứa project, mở cửa sổ command và gõ lần lượt:

Xác định các yêu cầu, mục tiêu, phạm vi, môi trường kiểm thử của hệ thống như sau:

- Phạm vi kiểm thử: kiểm thử các chức năng quan trọng đã được nêu ra trong phần đặc tả yêu cầu chức năng của phía người dùng và phía quản trị

- Mục tiêu kiểm thử: phát hiện các lỗi trong hệ thống, lỗi tiềm ẩn để khắc phục và sửa chữa để đảm bảo hệ thống hoạt động bình thường

- Môi trường kiểm thử: các trình duyệt web như Chrome, Edge, Firefox

6.3.2 Phương pháp kiểm thử Áp dụng quy tắc kiểm thử hộp đen để kiểm thử các chức năng quan trọng của hệ thống Có thể kiểm thử được các chức năng quan trọng của hệ thống một cách nhanh chóng và hiệu quả

Lập kế hoạch kiểm thử chức năng dựa trên phân tích các yêu cầu chức năng của hệ thống Thiết kế các test case để kiểm thử các chức năng quan trọng, sau đó sẽ dùng các test case này để kiểm thử hệ thống Sau khi thu được kết quả, nhóm sẽ dựa trên kết quả để tiến hành chỉnh sửa hệ thống nếu có lỗi

ID Mô tả Các bước thực hiện Kết quả mong muốn Kết quả thực tế Kết quả cuối cùng NMC

Kiểm thử chức năng đăng ký

- Truy cập trang chủ của hệ thống

- Chọn mục Sign up ở phần modal đăng nhập

- Điền đầy đủ thông tin yêu cầu

Tài khoản được lưu vào hệ thống, có thể đăng nhập vào hệ thống bằng tài khoản này Đáp ứng được kết quả mong muốn Đạt

Kiểm thử chức năng Đăng nhập

- Truy cập trang chủ của hệ thống

- Điền đầy đủ thông tin yêu cầu ở phần modal đăng nhập

Người dùng được thông báo đăng nhập thành công, chuyển hướng sang trang chủ của hệ thống Đáp ứng được kết quả mong muốn Đạt

Kiểm thử chức năng quên mật khẩu

- Truy cập trang chủ của hệ thống

- Chọn mục Forgot password ở phần modal đăng nhập

- Bấm vào đường dẫn được gửi ở email

- Đường dẫn chuyển hướng sang trang đặt lại mật khẩu của hệ thống

- Người dùng điền mật khẩu mới

Người dùng đổi được mật khẩu mới và đăng nhập thành công vào hệ thống Đáp ứng được kết quả mong muốn Đạt

- Điền mật khẩu mới và xác nhận mật khẩu

- Nhấn nút đổi mật khẩu - Đăng nhập lại với mật khẩu mới

Kiểm thử chức năng thêm vào giỏ hàng

- Vào trang chi tiết sản phẩm của sản phẩm bất kỳ

- Tăng/giảm số lượng sản phẩm cần mua và chọn Add to cart

Giỏ hàng của người dùng hiển thị đúng thông tin sản phẩm được thêm vào Đáp ứng được kết quả mong muốn Đạt

Kiểm thử chức năng thêm vào giỏ hàng

- Bấm vào biểu tượng thêm vào giỏ hàng ở các card sản phẩm

Giỏ hàng của người dùng hiển thị đúng thông tin sản phẩm được thêm vào Đáp ứng được kết quả mong muốn Đạt

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

- Vào trang chi tiết sản phẩm của sản phẩm bất kỳ

Danh sách yêu thích của người dùng hiển thị đúng thông tin sản phẩm được thêm vào Đáp ứng được kết quả mong muốn Đạt

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

- Bấm vào biểu tượng yêu thích ở các card sản phẩm

Danh sách yêu thích của người dùng hiển thị đúng thông tin sản phẩm được thêm vào Đáp ứng được kết quả mong muốn Đạt

Kiểm thử chức năng thay đổi số lượng ở trang giỏ hàng

- Truy cập trang giỏ hàng

- Chọn nút “+” để tăng hoặc “-” để giảm số lượng sản phẩm

Số lượng sản phẩm thay đổi tương ứng với mỗi lần bấm Đáp ứng được kết quả mong muốn Đạt

Kiểm thử chức năng thêm vào giỏ hàng từ trang danh sách sản phẩm yêu thích

- Truy cập trang danh sách sản phẩm yêu thích

- Bấm vào biểu tượng giỏ hàng

Sản phẩm được thêm vào giỏ hàng Đáp ứng được kết quả mong muốn Đạt

Kiểm thử chức năng xóa sản phẩm trong giỏ hàng

- Truy cập trang giỏ hàng

- Bấm vào biểu tượng xóa của sản phẩm

Sản phẩm được xóa khỏi giỏ hàng Đáp ứng được kết quả mong muốn Đạt

Kiểm thử chức năng xóa sản phẩm trong danh sách yêu thích

- Truy cập trang danh sách yêu thích

- Bấm vào biểu tượng xóa của sản phẩm

Sản phẩm được xóa khỏi danh sách yêu thích Đáp ứng được kết quả mong muốn Đạt

Kiểm thử chức năng tìm kiếm sản phẩm

- Tại đầu trang, gõ tên sản phẩm cần tìm kiếm

- Ấn vào biểu tượng tìm kiếm

Chuyển hướng sang trang tìm kiếm và hiện thông tin sản phẩm nếu sản phẩm có tồn tại

Nếu sản phẩm không tồn tại, trả về thông báo không tìm thấy sản phẩm Đáp ứng được kết quả mong muốn Đạt

Kiểm thử chức năng đặt hàng

- Tại trang giỏ hàng có ít nhất 1 sản phẩm

- Ấn vào biểu tượng thanh toán

- Chuyển hướng sang trang xác nhận thông tin

Thanh toán thành công, hiện thông tin sản phẩm đã được thanh toán Đáp ứng được kết quả mong muốn Đạt

- Chọn địa chỉ giao hàng

- Điền thông tin thẻ thanh toán bằng thẻ thanh toán hoặc thanh toán qua Paypal

- Hiển thị trang thông báo thanh toán thành công

Kiểm thử chức năng xem thông tin cá nhân

Bấm vào hình ảnh cá nhân của tài khoản hoặc bấm vào nút Profile

Hệ thống chuyển hướng sang trang cá nhân

Hệ thống hiển thị thông tin cá nhân Đáp ứng được kết quả mong muốn Đạt

Kiểm thử chức năng cập nhật thông tin cá nhân

- Truy cập trang cá nhân

- Bấm vào nút Edit Profile

- Điền đầy đủ thông tin cần cập nhật

Thông tin của người dùng được cập nhật Đáp ứng được kết quả mong muốn Đạt

Kiểm thử chức năng tạo địa chỉ

- Truy cập trang cá nhân

- Bấm vào nút Add address

- Điền và chọn thông tin địa chỉ

Thông báo tạo địa chỉ thành công và hiển thị địa chỉ cho người dùng Đáp ứng được kết quả mong muốn Đạt

Kiểm thử chức năng chỉnh sửa

- Truy cập trang cá nhân

Thông báo cập nhật địa chỉ thành Đáp ứng được kết quả mong muốn Đạt

KHÓA LUẬN TỐT NGHIỆP 101 thông tin địa chỉ - Bấm vào biểu tượng Edit address

- Điền và chọn thông tin địa chỉ

- Nhấn nút Save changes công và hiển thị địa chỉ cho người dùng

Kiểm thử chức năng xóa thông tin địa chỉ

- Truy cập trang cá nhân

- Bấm vào biểu tượng Xóa địa chỉ tại địa chỉ cần xóa Địa chỉ được xóa khỏi trang cá nhân người dùng Đáp ứng được kết quả mong muốn Đạt

Kiểm thử chức năng xem đơn hàng đã đặt

- Truy cập trang cá nhân

Hiển thị danh sách đơn hàng đã mua của tài khoản, nếu không hiển thị trạng thái chưa có đơn hàng Đáp ứng được kết quả mong muốn Đạt

Kiểm thử chức năng đánh giá sản phẩm

- Truy cập trang cá nhân

- Bấm vào Add review tại sản phẩm cần đánh giá

- Điền đầy đủ thông tin đánh giá

Hiển thị thêm review thành công Đáp ứng được kết quả mong muốn Đạt

- Truy cập trang chi tiết sản phẩm

- Bấm chọn Yes của đánh giá bất kỳ có trong trang sản phẩm

Nút Like hiển thị trạng thái đã like Đáp ứng được kết quả mong muốn Đạt

- Truy cập trang chi tiết sản phẩm

- Bấm chọn No của đánh giá bất kỳ có trong trang sản phẩm

Nút No hiển thị trạng thái đã không thích Đáp ứng được kết quả mong muốn Đạt

Unlike đánh giá khi đã

Like đánh giá trước đó

- Truy cập trang chi tiết sản phẩm

- Bấm chọn No của đánh giá bất kỳ có trong trang sản phẩm

Nút No hiển thị trạng thái đã không thích, nút Like trở lại trạng thái ban đầu Đáp ứng được kết quả mong muốn Đạt

Like đánh giá khi đã

Unlike đánh giá trước đó

- Truy cập trang chi tiết sản phẩm

- Bấm chọn Yes của đánh giá bất kỳ có trong trang sản phẩm

Nút Yes hiển thị trạng thái đã thích, nút

No trở lại trạng thái ban đầu Đáp ứng được kết quả mong muốn Đạt

- Truy cập trang chi tiết sản phẩm

- Bấm chọn Report của đánh giá bất kỳ có trong trang sản phẩm

Hiển thị thông báo Report đã được gửi đi Đáp ứng được kết quả mong muốn Đạt

Bảng 40: Kết quả kiểm thử phía người dùng

ID Mô tả Các bước thực hiện Kết quả mong muốn Kết quả thực tế Kết quả cuối cùng NMCAD_01 Kiểm thử chức năng

- Truy cập trang chủ của hệ thống

Người dùng được thông báo đăng nhập thành Đáp ứng được kết quả mong muốn Đạt

KHÓA LUẬN TỐT NGHIỆP 103 Đăng nhập - Điền đầy đủ thông tin yêu cầu ở phần trang đăng nhập

- Bấm nút Log in công, chuyển hướng sang trang chủ của hệ thống

NMCAD_02 Kiểm thử chức năng tạo sản phẩm

- Truy cập trang sản phẩm của hệ thống

- Điền đầy đủ thông tin yêu cầu ở modal tạo sản phẩm

Sản phẩm được tạo thành công Đáp ứng được kết quả mong muốn Đạt

NMCAD_03 Kiểm thử chức năng cập nhật thông tin sản phẩm

- Truy cập trang sản phẩm của hệ thống

- Chọn vào biểu tượng cập nhật của sản phẩm bất kỳ

- Điền đầy đủ thông tin cần cập nhật

Sản phẩm được cập nhật thành công Đáp ứng được kết quả mong muốn Đạt

NMCAD_04 Kiểm thử chức năng tạo danh mục mới

- Truy cập trang danh mục của hệ thống

- Điền đầy đủ thông tin yêu cầu ở modal tạo danh mục

Danh mục được tạo thành công Đáp ứng được kết quả mong muốn Đạt

NMCAD_05 Kiểm thử chức năng cập nhật

- Truy cập trang danh mục của hệ thống

Danh mục được cập nhật thành công Đáp ứng được kết quả mong muốn Đạt

KHÓA LUẬN TỐT NGHIỆP 104 danh mục mới - Chọn vào biểu tượng cập nhật của danh mục bất kỳ

- Điền đầy đủ thông tin cập nhật

- Bấm nút Update NMCAD_06 Kiểm thử chức năng xóa sản phẩm

- Truy cập trang sản phẩm của hệ thống

- Chọn vào biểu tượng xóa của sản phẩm bất kỳ

Sản phẩm được cập nhật trạng thái là xóa Đáp ứng được kết quả mong muốn Đạt

NMCAD_07 Kiểm thử chức năng xóa danh mục

- Truy cập trang danh mục của hệ thống

- Chọn vào biểu tượng xóa của danh mục bất kỳ

Danh mục được cập nhật trạng thái là xóa Đáp ứng được kết quả mong muốn Đạt

NMCAD_08 Kiểm thử chức năng xóa đánh giá

- Truy cập trang xem đánh giá của hệ thống

- Chọn vào biểu tượng xóa của đánh giá bất kỳ

- Xác nhận xóa Đánh giá được cập nhật trạng thái là xóa Đáp ứng được kết quả mong muốn Đạt

Bảng 41: Kết quả kiểm thử chức năng phía admin

Sau thời gian nghiên cứu và ứng dụng xây dựng phần mềm, nhóm đã ứng dụng các kiến thức về Golang, ReactJS, Docker, PostgreSQL để hoàn thành trang web kinh doanh sách NMC Ứng dụng đáp ứng được chức năng cơ bản như: tra cứu sản phẩm, phân quyền, đăng nhập, chỉnh sửa thông tin cá nhân, thanh toán, xem lại đơn hàng đã thanh toán, đánh giá sản phẩm đã mua

Deploy được 2 website với 2 phân hệ người dùng và admin

Website phía người dùng: https://nmcbookstore.id.vn/

Website phía admin: https://adminnmcbookstore.top/

● Giao diện dễ sử dụng, dễ tiếp cận với người mới sử dụng lần đầu

● Tốc độ xử lý của trang web đáp ứng nhu cầu người dùng

● Ứng dụng đáp ứng được tiêu chí ban đầu đề ra

● Áp dụng các công nghệ hiệu quả để tối ưu trải nghiệm người dùng như

ElasticSearch giúp tăng tốc độ tìm kiếm hay hệ thống Recomendation bằng trí tuệ nhân tạo

● Ứng dụng có hỗ trợ Responsive trên các thiết bị di động

● Chưa ứng dụng triệt để chức năng hạng thành viên để cung cấp các chương trình khuyến mãi hay tri ân phù hợp

● Chưa xây dựng được chức năng phục vụ cộng đồng ngừơi đọc sách để họ có thể viết các bài đánh giá chi tiết hơn về quá trình trải nghiệm khi đọc sách và cùng mọi người thảo luận

● Chưa xây dựng được chức năng quản lý đơn hàng cho admin để có thể quản lý được trạng thái cũng như tình trạng đơn hàng của nhà sách

● Cải tiến UI của trang web

● Ứng dụng kiến thức về machine learning để cải thiện hệ thống khuyến nghị cho trang web, giúp trải nghiệm người dùng tốt hơn

● Xây dựng thêm chức năng quản lý đơn hàng cho admin

[1] Viblo – “PASETO - một lựa chọn đáng cân nhắc cho bài toán Token Based Authentication” (16/04/2020) https://viblo.asia/p/paseto-mot-lua-chon-dang-can-nhac-cho-bai-toan-token-based- authentication-oOVlYk9QK8W

[2] Redux Toolkit Tutorial https://redux-toolkit.js.org/

[3] Golang Tutorial https://go.dev/learn/

[4] sinhnx.dev – “Bắt đầu với Gin-Gonic Framework” (01/10/2021) https://sinhnx.dev/lap-trinh/bat-dau-voi-gin-gonic

Ngày đăng: 07/06/2024, 16:41

HÌNH ẢNH LIÊN QUAN

Hình 1: Trang web FAHASA - xây dựng nhà sách online sử dụng golang và reactjs
Hình 1 Trang web FAHASA (Trang 21)
Hình 2: Trang web Bookbuy - xây dựng nhà sách online sử dụng golang và reactjs
Hình 2 Trang web Bookbuy (Trang 22)
Hình 4: Trang web Tiki - xây dựng nhà sách online sử dụng golang và reactjs
Hình 4 Trang web Tiki (Trang 24)
Hình 6: Lược đồ Use case phía người dùng - xây dựng nhà sách online sử dụng golang và reactjs
Hình 6 Lược đồ Use case phía người dùng (Trang 29)
Hình 7: Lược đồ Use case phía admin - xây dựng nhà sách online sử dụng golang và reactjs
Hình 7 Lược đồ Use case phía admin (Trang 30)
Hình 8: Lược đồ ERD của hệ thống - xây dựng nhà sách online sử dụng golang và reactjs
Hình 8 Lược đồ ERD của hệ thống (Trang 59)
Hình 9: Lược đồ tuần tự chức năng đăng nhập - xây dựng nhà sách online sử dụng golang và reactjs
Hình 9 Lược đồ tuần tự chức năng đăng nhập (Trang 60)
Hình 10: Lược đồ tuần tự chức năng đăng ký - xây dựng nhà sách online sử dụng golang và reactjs
Hình 10 Lược đồ tuần tự chức năng đăng ký (Trang 61)
Hình 11: Lược đồ tuần tự chức năng chỉnh sửa thông tin cá nhân - xây dựng nhà sách online sử dụng golang và reactjs
Hình 11 Lược đồ tuần tự chức năng chỉnh sửa thông tin cá nhân (Trang 62)
Hình 13: Lược đồ tuần tự chức năng quên mật khẩu - xây dựng nhà sách online sử dụng golang và reactjs
Hình 13 Lược đồ tuần tự chức năng quên mật khẩu (Trang 64)
Hình 14: Lược đồ tuần tự xem thông tin chi tiết của 1 sản phẩm - xây dựng nhà sách online sử dụng golang và reactjs
Hình 14 Lược đồ tuần tự xem thông tin chi tiết của 1 sản phẩm (Trang 65)
Hình 15: Lược đồ tuần tự chức năng thêm sản phẩm vào giỏ hàng - xây dựng nhà sách online sử dụng golang và reactjs
Hình 15 Lược đồ tuần tự chức năng thêm sản phẩm vào giỏ hàng (Trang 66)
Hình 19: Lược đồ tuần tự chức năng thêm sản phẩm vào mục sản phẩm yêu thích - xây dựng nhà sách online sử dụng golang và reactjs
Hình 19 Lược đồ tuần tự chức năng thêm sản phẩm vào mục sản phẩm yêu thích (Trang 68)
Hình 22: Lược đồ tuần tự chức năng xem mục sản phẩm yêu thích - xây dựng nhà sách online sử dụng golang và reactjs
Hình 22 Lược đồ tuần tự chức năng xem mục sản phẩm yêu thích (Trang 70)
Hình 26: Lược đồ tuần tự chức năng thêm địa chỉ - xây dựng nhà sách online sử dụng golang và reactjs
Hình 26 Lược đồ tuần tự chức năng thêm địa chỉ (Trang 72)

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

TÀI LIỆU LIÊN QUAN

w