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