Đồng thời, cửa hàng còn có thể thôngqua ứng dụng để quảng bá tốt hơn về các sản phẩm mà mình bán ra.1.2.Mục tiêu đề tài- Tạo trải nghiệm mua sắm thuận tiện và dễ dàng: Ứng dụng tối ưu gi
Giới thiệu đề tài
Lý do chọn đề tài
Thiết bị điện tử đang đóng vai trò vô cùng quan trọng trong cuộc sống hiện đại, ảnh hưởng đến nhiều khía cạnh của chúng ta từ công việc, giáo dục, giao tiếp đến giải trí và nhu cầu hàng ngày Chính vì sự phổ biến và tiến bộ liên tục của các thiết bị điện tử đã mở ra nhiều cơ hội mới trong lĩnh vực kinh doanh và giải trí Thị trường thiết bị điện tử được xem là một trong những thị trường lớn và phát triển nhanh nhất thế giới
Bên cạnh đó, mua sắm trực tuyến đang trở thành một phần không thể thiếu trong cuộc sống hàng ngày của mọi người Khách hàng ngày càng tìm kiếm sự tiện lợi và trải nghiệm mua sắm tốt hơn qua điện thoại di động của họ Việc xây dựng ứng dụng mua bán thiết bị điện tử cũng mang lại cơ hội tối ưu hóa trải nghiệm người dùng thông qua việc tích hợp các tính năng tiện ích như tìm kiếm sản phẩm, đánh giá, bình luận, và thanh toán trực tuyến Ngoài ra, chúng ta còn có thể sử dụng dữ liệu thu thập từ người dùng để tùy chỉnh và đề xuất các sản phẩm phù hợp với sở thích và nhu cầu của họ, tạo nên một trải nghiệm mua sắm cá nhân và hấp dẫn
Chính vì những lợi ích đáng kể và đáp ứng phần lớn nhu cầu mua hàng online trong cuộc sống, chúng em quyết định chọn thực hiện đề tài “Xây dựng ứng dụng di động bán thiết bị điện tử” Cửa hàng có thể đưa các sản phẩm lên ứng dụng của mình và quản lý chúng, khách hàng có thể thỏa thích chọn lựa mẫu mã và tiến hành đặt mua hàng mà không cần đến cửa hàng Đồng thời, cửa hàng còn có thể thông qua ứng dụng để quảng bá tốt hơn về các sản phẩm mà mình bán ra.
Mục tiêu đề tài
- Tạo trải nghiệm mua sắm thuận tiện và dễ dàng: Ứng dụng tối ưu giao diện người dùng và trải nghiệm mua sắm để người dùng có thể dễ dàng tìm kiếm, xem thông tin sản phẩm và thực hiện thanh toán một cách thuận tiện trên điện thoại di động của họ.
- Theo dõi và đánh giá hiệu quả: Thiết lập các hệ thống theo dõi hiệu quả của ứng dụng dành cho quản trị viên, bao gồm số lượt tải xuống, doanh số bán hàng, đánh giá và phản hồi từ khách hàng, để đánh giá và cải thiện quy trình kinh doanh và trải nghiệm người dùng.
Phạm vi nghiên cứu
- Các bài toán về tìm kiếm, quản lý thông tin người dùng, quản lý mua bán.
- Hệ thống các module và cơ sở dữ liệu cho từng module
- Chức năng thanh toán bằng Stripe.
Đối tượng nghiên cứu
- Người dung có tài khoản đăng nhập.
Phương pháp nghiên cứu
- Tìm hiểu công nghệ xây dựng ứng dụng di động gồm: Figma, Flutter, Nodejs, MongoDB.
- Khảo sát phần mềm bán hàng trên thị trường, đặc biệt là các phần mềm bán thiết bị điện tử, từ đó tiến hành phân tích, xác định yêu cầu, tính năng cụ thể cho đề tài.
- Phân tích, thiết kế hệ thống ứng dụng.
- Triển khai và kiểm thử.
Chức năng
- Tài khoản người dùng: Đăng nhập, đăng ký, thay đổi mật khẩu, cập nhật thông tin tài khoản, quản lý địa chỉ giao hàng,
- Sản phẩm: Tìm kiếm, sắp xếp, lọc, đánh giá và bình luận…
- Chức năng giỏ hàng, mua hàng, theo dõi đơn hàng, lịch sử mua hàng.
- Chức năng thanh toán kết hợp các cổng thanh toán điện tử.
Công nghệ sử dụng
- Công cụ thiết kế UI/UX: Figma.
- Xây dựng ứng dụng: Android, IOS.
Ngôn ngữ sử dụng: Dart
Thư viện sử dụng: Flutter.
Ngôn ngữ sử dụng: Javascript
Thư viện sử dụng: Nodejs.
Tìm hiểu cơ sở lý thuyết
Tổng quan về flutter
- Flutter là một nền tảng UI mã nguồn mở và miễn phí, do Google tạo ra và ra mắt vào tháng 5 năm 2017 Flutter giúp người dùng xây dựng các ứng dụng gốc cho di động, có giao diện đẹp và chất lượng cao, chỉ với một codebase duy nhất cho iOS và Android
- Flutter bao gồm hai thành phần chính là:
Một SDK (Bộ công cụ phát triển phần mềm): Bao gồm các công cụ hỗ trợ người dùng trong quá trình phát triển ứng dụng Nó cũng có các công cụ biên dịch code thành code gốc cho iOS và Android.
Một Framework (Thư viện UI dựa trên widget): Bao gồm các thành phần giao diện người dùng có thể sử dụng lại như slider, button, giúp người dùng tùy biến theo ý muốn.
- Hot Reload và Hot Restart, cho phép bạn xem ngay lập tức các thay đổi trong mã nguồn mà không cần khởi động lại ứng dụng.
- Hiệu năng gốc, cho phép ứng dụng chạy mượt mà và nhanh chóng trên các thiết bị di động, web, máy tính để bàn và nhúng.
- Giao diện đẹp, cho phép bạn tùy biến và sử dụng lại các widget, hiệu ứng, hoạt hình và ứng dụng Flutter.
- Bộ nhớ sử dụng cao, do Flutter sử dụng bộ render UI riêng, không dựa trên UI có sẵn của nền tảng gốc.
- Ngôn ngữ Dart khó học, do Dart là một ngôn ngữ mới và khác biệt với các ngôn ngữ phổ biến khác như Java, Kotlin, Swift, JavaScript.
Tổng quan về Bloc – State management
- Bloc là một thư viện dùng để điều khiển các State trong các ứng dụng Flutter Bloc dựa trên RxDart, sử dụng “event” làm Input và “state” làm Output.
- Đặc điểm của State Management này là có thể phân chia các Bloc thành các Component riêng biệt, mỗi Component chỉ đảm nhiệm một Business Logic, nhờ vậy sẽ không gây xung đột, rối loạn với các Code Logic khác.
- Tách biệt logic và giao diện: Giúp cho mã nguồn dễ đọc, dễ bảo trì và dễ kiểm thử.
- Tính ổn định và dễ mở rộng: Bloc giúp tạo ra các thành phần độc lập có thể tái sử dụng và dễ dàng mở rộng cho ứng dụng lớn.
- Bloc có độ phức tạp cao khi triển khai cho các ứng dụng nhỏ hoặc đơn giản.
- Bloc không sử dụng UI có sẵn của framework native, mà tự render UI riêng, dẫn đến tốn nhiều bộ nhớ và không thể tận dụng các tính năng củaOS.
Tổng quan về Nodejs
- NodeJs là một môi trường chạy JavaScript mã nguồn mở và đa nền tảng, cho phép bạn thực thi mã JavaScript bên ngoài trình duyệt web
- NodeJs hoạt động trên nền tảng V8 JavaScript engine, một công nghệ của Google để biên dịch và tối ưu hóa mã JavaScript
- Tốc độ xử lý nhanh, do sử dụng cơ chế xử lý bất đồng bộ (non-blocking) và V8 engine.
- Khả năng mở rộng cao, do có thể xử lý nhiều kết nối cùng lúc và tương thích với nhiều nền tảng.
- Hiệu suất khi xử lý các tác vụ máy tính nặng bị giảm, do NodeJs được viết bằng C++ và JavaScript nên phải thông qua một trình biên dịch của NodeJs
- API đôi lúc không ổn định, do NodeJs là một nền tảng mới và đang liên tục cập nhật, nên có thể có những thay đổi không tương thích với các
Hình 2 3 NodeJS phiên bản trước Bạn cần theo dõi và cập nhật API thường xuyên để tránh gặp lỗi.
Tổng quan về MongoDB
- MongoDB là một hệ quản trị cơ sở dữ liệu NoSQL mã nguồn mở đa nền tảng viết bằng C++ Bản ghi trong MongoDB được lưu trữ dạng một dữ liệu văn bản (Document), là một cấu trúc dữ liệu bao gồm các cặp giá trị và trường tương tự như các đối tượng JSON.
- MongoDB có nhiều tính năng nổi bật, như:
Mô hình dữ liệu tài liệu, cho phép bạn lưu trữ dữ liệu dưới dạng các tài liệu có cấu trúc động, không cần định nghĩa sơ đồ trước.
Giao diện truy vấn đa dạng, cho phép bạn thực hiện các thao tác trên dữ liệu như tìm kiếm, lọc, sắp xếp, nhóm, phân tích,… bằng cách sử dụng một API truy vấn thống nhất và hỗ trợ nhiều ngôn ngữ lập trình.
- MongoDB cho phép bạn lưu trữ các loại dữ liệu khác nhau với cấu trúc linh hoạt, không cần định nghĩa lược đồ trước.
- MongoDB có khả năng mở rộng cao, có thể phân tán dữ liệu trên nhiều nút để tăng dung lượng lưu trữ và khả năng chịu tải.
- MongoDB không phù hợp cho các ứng dụng có yêu cầu độ chính xác cao, ví dụ như ngân hàng, bảo hiểm, do không có ràng buộc và giao dịch.
- MongoDB sử dụng nhiều bộ nhớ RAM để lưu trữ và truy xuất dữ liệu, do đó có thể gặp khó khăn khi hoạt động với các hệ thống có bộ nhớ hạn chế.
Tổng quan về ExpressJS
- Expressjs là một framework được xây dựng trên nền tảng của Nodejs Nó cung cấp các tính năng mạnh mẽ để phát triển web hoặc mobile. Expressjs hỗ trợ các method HTTP và midleware tạo ra API vô cùng mạnh mẽ và dễ sử dụng.
- Tổng hợp một số chức năng chính của Expressjs như sau:
Thiết lập các lớp trung gian để trả về các HTTP request.
Define router cho phép sử dụng với các hành động khác nhau dựa trên phương thức HTTP và URL.
Cho phép trả về các trang HTML dựa vào các tham số.
- Đơn giản và dễ sử dụng: ExpressJS có cú pháp đơn giản và dễ hiểu, giúp lập trình viên dễ dàng nắm bắt và triển khai các tính năng.
- Hỗ trợ middleware: ExpressJS hỗ trợ middleware, cho phép bạn thêm các chức năng trung gian vào quy trình xử lý yêu cầu và phản hồi. Middleware giúp xác thực người dùng, ghi log, xử lý lỗi, nén dữ liệu và thực hiện nhiều tác vụ khác một cách linh hoạt.
- Hỗ trợ mô hình MVC: ExpressJS hỗ trợ phát triển ứng dụng theo mô hình MVC (Model-View-Controller), giúp tách biệt logic và giao diện, tăng tính bảo mật và khả năng tái sử dụng code.
- Thiếu cấu trúc: Do ExpressJS không áp đặt một cấu trúc nghiêm ngặt, việc tổ chức dự án và quản lý mã nguồn có thể trở nên khó khăn, đặc biệt khi ứng dụng phát triển lớn và phức tạp.
- Khả năng mở rộng: Khi ứng dụng phát triển lớn và phức tạp, việc quản lý mã nguồn và mở rộng có thể trở nên khó khăn với ExpressJS.
Phân tích thiết kế hệ thống
Khảo sát hiện trạng
Thực tế hiện nay, Việt Nam đã có nhiều ứng dụng mua sắm trên thiết bị di động quen thuộc có thể kể đến như: Shopee, Lazada, Tiki, Sendo,… Các ứng dụng này đều có sự tương đồng về chức năng nhưng ngoài ra cũng có một số khuyết điểm như có những chức năng không cần thiết, giao diện chưa thân thiện với người dùng, có thể cải tiến để hướng đến sự đơn giản, tiện lợi và thân thiện hơn cho người dùng.
Xác định chức năng, yêu cầu
+ Hệ thống cần bảo đảm tính bảo mật trong việc lưu trữ các thông tin riêng tư về địa chỉ giao hàng, thông tin cá nhân, đơn hàng của từng người dùng Vì vậy để có thể truy cập và sử dụng ứng dụng, cần phải có số email để đăng nhập vào ứng dụng.
+ Các thông tin đăng nhập cần lưu trữ gồm: Email.
+ Hệ thống cần đảm bảo tính bảo mật trong việc lưu trữ thông tin riêng tư của người dùng Vì vậy để đăng ký ứng dụng cần phải có số điện thoại, email và username.
+ Các thông tin đăng ký cần lưu trữ: Email, Số điện thoại và username.
+ Các thông tin của người dùng cần lưu trữ bao gồm: mã ID, username, số điện thoại, email, ảnh đại diện, giới tính, ngày sinh, các sản phẩm yêu thích và vai trò.
+ Các thông tin sản phẩm cần lưu trữ bao gồm: mã ID, tên sản phẩm, giá thường ngày, giá giảm giá, số lượng, màu sắc, hình ảnh, mô tả sản phẩm, thương hiệu, danh mục sản phẩm, tổng số lượng đánh giá, trung bình đánh giá,
- Thông tin danh mục sản phẩm
+ Các thông tin danh mục sản phẩm cần lưu trữ bao gồm: mã ID, tên danh mục, số lượng thương hiệu, số lượng sản phẩm, ảnh bìa.
- Thông tin mã giảm giá
+ Các thông tin mã giảm giá cần lưu trữ bao gồm: mã ID, mã code, tiêu đề, giá trị giảm giá, ảnh bìa
- Thông tin địa chỉ giao hàng
+ Các thông tin địa chỉ giao hàng cần lưu trữ bao gồm: mã ID, mã người dùng, tên người nhận, số điện thoại người nhận, địa chỉ chi tiết, quận, thành phố, quốc gia.
- Thông tin đánh giá sản phẩm
+ Các thông tin đánh giá sản phẩm cần lưu trữ bao gồm: mã ID, nội dung, số sao đánh giá, mã sản phẩm, mã người dùng.
+ Các thông tin giỏ hàng cần lưu trữ bao gồm: mã ID, mã người dùng, các sản phẩm, tổng số lượng sản phẩm, tổng giá trị.
+ Các thông tin đơn hàng cần lưu trữ bao gồm: mã ID, mã người dùng, sản phẩm trong đơn hàng, tổng số lượng sản phẩm, tổng giá trị đơn hàng, tổng giá trị sau giảm giá, địa chỉ giao hàng, phí giao hàng, phương thức thanh toán, trạng thái đơn hàng.
- Hiển thị sản phẩm theo từng danh mục
+ Chức năng hiển thị sản phẩm theo từng danh mục được thực hiện khi người dùng có nhu cầu tìm kiếm sản phẩm theo danh mục mong muốn.
+ Chức năng này sẽ lọc sản phẩm theo từng danh mục, hỗ trợ người dùng xem sản phẩm theo danh mục mong muốn một cách trực quan. + Kết quả hiển thị sản phẩm ứng với danh mục mà người dùng chọn.
- Hiển thị danh mục yêu thích
+ Chức năng hiển thị danh mục yêu thích được thực hiện khi người dùng có nhu cầu theo dõi các sản phẩm đã yêu thích.
+ Chức năng này hỗ trợ người dùng xem trực tiếp các sản phẩm được yêu thích và thay đổi sản phẩm trong danh mục yêu thích một cách trực quan.
+ Kết quả hiển thị danh mục yêu thích ứng với sản phẩm người dùng thêm vào danh mục yêu thích hoặc xóa khỏi danh mục yêu thích.
+ Chức năng hiển thị giỏ hàng được thực hiện khi người dùng có nhu cầu theo dõi các sản phẩm trong giỏ hàng.
+ Chức năng này hỗ trợ người dùng xem trực tiếp các sản phẩm trong giỏ hàng, tổng số lượng sản phẩm và thay đổi sản phẩm trong giỏ hàng một cách trực quan.
+ Kết quả hiển thị giỏ hàng ứng với các sản phẩm người dùng thêm vào giỏ hàng hoặc xóa sản phẩm khỏi giỏ hàng.
+ Chức năng hiển thị đơn hàng được thực hiện khi người dùng có nhu cầu theo dõi tình trạng các đơn hàng.
+ Chức năng này hỗ trợ người dùng xem trực tiếp các sản phẩm trong đơn hàng và tình trạng đơn hàng một cách trực quan.
+ Kết quả hiển thị đơn hàng tương ứng với thời gian người dùng đặt hàng.
- Hiển thị địa chỉ giao hàng
+ Chức năng hiển thị địa chỉ giao hàng được thực hiện khi người dùng có nhu cầu quản lý các địa chỉ giao hàng trong tài khoản.
+ Chức năng này hỗ trợ người dùng xem trực tiếp các địa chỉ giao hàng hiện có ở trong tài khoản.
+ Kết quả hiển thị địa chỉ giao hàng tương ứng với các địa chỉ giao hàng người dùng đã thêm vào.
- Hiển thị thông tin cá nhân
+ Chức năng hiển thị thông tin cá nhân được thực hiện khi người dùng có nhu cầu quản lý thông tin cá nhân.
+ Chức năng này hỗ trợ người dùng xem trực tiếp các thông tin cá nhân trong tài khoản một cách trực quan.
+ Kết quả hiển thị thông tin cá nhân tương ứng với thông tin người dùng đã đăng ký hoặc chỉnh sửa trong tài khoản.
3.2.2 Yêu cầu phi chức năng
- Hệ điều hành phải từ Android 5.0 trở lên đối với các thiết bị Android và IOS 13.0 trở lên đối với các thiết bị IOS.
- Thiết bị phải có kết nối Internet
- Ứng dụng hoạt động liên tục 24/7, hạn chế tối đa các sự cố.
- Thực hiện xử lý sự cố chặt chẽ để giảm thiểu ảnh hưởng đến trải nghiệm người dùng Gửi thông báo cho người dùng khi có sự cố và cung cấp thông tin chi tiết để người dùng hiểu tình trạng.
- Phát triển một quy trình phục hồi dữ liệu linh hoạt để khôi phục dữ liệu nhanh chóng sau sự cố.
- Theo dõi các bản vá bảo mật và cập nhật hệ thống định kỳ.
- Mọi tương tác người dùng đều được xử lý một cách mượt mà và không gây sự cố.
- Hệ thống cho phép thao tác và hiển thị kết quả nhanh chóng.
- Truy vấn cơ sở dữ liệu và hiển thị kết quả không quá 10 giây (yêu cầu kết nối Internet)
- Các thông tin đăng nhập như mật khẩu phải được mã hóa.
- Ứng dụng phải có cơ chế đảm bảo tính toàn vẹn của cơ sở dữ liệu.
- Phải đảm bảo bảo mật dữ liệu người dùng, tránh sự tấn công của bên ngoài
- Đảm bảo người dùng không có quyền chỉnh sửa thông tin của người dùng khác hay truy cập vào những dữ liệu không thuộc quyền sở hữu của mình.
- Ứng dụng phải cung cấp giao diện linh hoạt dựa trên hệ điều hànhAndroid và IOS.
Thiết kế hệ thống
3.3.1.1 Sơ đồ kiến trúc hệ thống
3.3.1.2 Mô tả các thành phần trong kiến trúc hệ thống
Widget Hiển thị thành phần giao diện người dùng Bloc Xử lý logic kinh doanh và quản lý trạng thái của ứng dụng.
Chứa các use case sử dụng các đối tượng entities để thực hiện logic kinh doanh cụ thể.
Entities Chứa đối tượng cốt lõi của ứng dụng, như các đối tượng có liên quan đến dữ liệu và logic kinh doanh.
Thành phần trung gian giữa Domain Layer và Data Layer, thực hiện lưu trữ và truy cập dữ liệu.
Cấu trúc dữ liệu phản ánh cách dữ liệu được lưu trữ hoặc truyền vào ứng dụng từ nguồn bên ngoài như API hoặc cơ sở dữ liệu.
Remote Data Source Nguồn dữ liệu ứng dụng truy cập thông qua Internet.
Nguồn dữ liệu mà ứng dụng truy cập và quản lý trên thiết bị không thông qua Internet.
Raw Data Dữ liệu gốc khi được trả về khi gọi
API Nơi thực hiện kết nối giữa Frontend và Backend.
Local DB Database cục bộ ở trên thiết bị.
Routes Nơi chứa định nghĩa các quy tắc để định nghĩa cách server xử lý yêu cầu HTTP từ client
Controllers Nơi tiếp nhận các yêu cầu từ Frontend
Models Chứa cấu trúc dữ liệu được lưu trữ hoặc truyền vào trên server.
MongoDB Database của ứng dụng
Hình 3 1 Sơ đồ kiến trúc hệ thống
Bảng 3 1 Bảng mô tả các thành phần trong kiến trúc hệ thống
3.3.2.1 Sơ đồ Use case tổng quát
3.3.2.2 Sơ đồ Use case chi tiết
Hình 3 2 Sơ đồ Use case User tổng quát
Hình 3 3 Sơ đồ Use case chi tiết quản lý tài khoản
Hình 3 4 Sơ đồ Use case chi tiết quản lý danh mục yêu thích
STT Tên Actor Mô tả
1 User Người sử dụng phần mềm
ID Tên Usecase Actor Mô tả/ Ghi chú
1 Đăng nhập User Đăng nhập bằng tài khoản đã
Hình 3 5 Sơ đồ Use case chi tiết cho quản lý giỏ hàng
Hình 3 6 Sơ đồ Use case chi tiết cho quản lý đơn hàng
Bảng 3 2 Danh sách các Actor
Bảng 3 3 Bảng danh sách các Use case đăng ký
2 Đăng ký User Tạo một tài khoản mới để sử dụng ứng dụng.
3 Xem thông tin cá nhân User Xem chi tiết các thông tin cá nhân của người dùng hiện tại.
4 Chỉnh sửa thông tin cá nhân User Cập nhật thông tin cá nhân của người dùng hiện tại.
5 Xem địa chỉ giao hàng User
Xem các địa chỉ giao hàng đang có trong tài khoản hiện tại.
6 Thêm địa chỉ giao hàng User
Thêm địa chỉ giao hàng vào danh sách địa chỉ của tài khoản hiện tại.
7 Sửa địa chỉ giao hàng User Cập nhật địa chỉ giao hàng của tài khoản hiện tại.
8 Xem sản phẩm User Xem sản phẩm hiện có ở trong ứng dụng.
9 Tìm kiếm sản phẩm User Tím kiếm sản phẩm dựa theo tên sản phẩm.
0 Lọc sản phẩm User Lọc sản phẩm dựa theo thương hiệu.
1 Xem danh mục sản phẩm User Xem các danh mục sản phẩm hiện có ở trong ứng dụng.
2 Tìm kiếm danh mục sản phẩm User Tìm kiếm danh mục sản phẩm dựa theo tên danh mục.
3 Xem sản phẩm trong danh sách yêu thích User
Xem các sản phẩm trong danh sách yêu thích của tài khoản hiện tại.
Thêm sản phẩm vào danh sách yêu thích User Thêm sản phẩm vào danh sách yêu thích của tài khoản hiện tại.
5 Xóa sản phẩm khỏi danh sách yêu thích User Xóa sản phẩm khỏi danh mục yêu thích của tài khoản hiện tại.UC1 Xem sản phẩm trong giỏ User Xem các sản phẩm ở trong giỏ
1 Xem tổng giá trị của các sản phẩm User
Xem tổng giá trị của các sả phẩm trong giỏ hàng của tài khoản hiện tại.
2 Đặt hàng User Đặt hàng dựa trên sản phẩm đã chọn của tài khoản hiện tại
3 Xem sản phẩm trong đơn hàng User Xem các sản phẩm ở trong đơn hàng của tài khoản hiện tại UC2
4 Thanh toán User Thanh toán đơn hàng hiện tại
5 Đánh giá sản phẩm User Đánh giá các sản phẩm sau khi thanh toán thành công trong tài khoản hiện tại
6 Xem lịch sử đặt hàng User Xem các đơn hàng đã đặt trong tài khoản hiện tại
7 Xem tình trạng đơn hàng User Xem tình trạng các đơn hàng trong tài khoản hiện tại UC2
Xem phương thức thanh toán User Xem các phương thức thanh toán trong ứng dụng
3.3.3 Đặc tả Use case 3.3.3.1 Đặc tả use case Đăng nhập
Tên Use Case Đăng nhập
Mô tả Cho phép người dùng đăng nhập vào ứng dụng để sử dụng dịch vụ từ ứng dụng.
Trigger Người dùng muốn đăng nhập vào ứng dụng.
Tiền điều kiện - Người dùng đã có tài khoản trong ứng dụng.
- Thiết bị có kết nối internet.
Bảng 3 4 Bảng đặc tả Use case Đăng nhập dụng và sử dụng dịch vụ.
- Nếu thất bại, thông báo đến người dùng và tiến hành đăng nhập lại.
1 Người dùng truy cập vào ứng dụng.
2 Người dùng nhập đầy đủ thông tin gồm Email và mật khẩu.
3 Người dùng chọn đăng nhập.
4 Hệ thống xác thực thông tin đăng nhập thành công.
5 Hệ thống cho phép người dùng truy cập ứng dụng và sử dụng dịch vụ.
6 Hệ thống ghi nhận hoạt động đăng nhập thành công.
2a Người dùng chọn phương thức đăng nhập bằng tài khoản Google.
1 Hệ thống chuyển sang màn hình đăng nhập bằng tài khoản Google.
2 Người dùng nhập tài khoản Google.
4a Google xác thực thông tin đăng nhập thành công.
2b Người dùng chọn phương thức đăng nhập bằng tài khoản Facebook.
1 Hệ thống chuyển sang màn hình đăng nhập tài khoản Facebook.
2 Người dùng nhập tài khoản Facebook.
4b Facebook xác thực thông tin đăng nhập thành công.
Ngoại lệ 4c Hệ thống xác thực thông tin đăng nhập không thành công và hiển thị thông báo.
1 Người dùng nhập lại thông tin tài khoản.
3.3.3.2 Đặc tả use case Đăng ký
Bảng 3 5 Bảng đặc tả Use case Đăng ký
Tên Use Case Đăng ký
Mô tả Cho phép người dùng đăng ký tài khoản để truy cập vào ứng dụng.
Trigger Người dùng muốn đăng ký tài khoản.
Tiền điều kiện Thiết bị có kết nối internet.
- Nếu thành công, người dùng có thể đăng nhập vào ứng dụng và sử dụng dịch vụ.
- Nếu thất bại, thông báo đến người dùng và tiến hành đăng ký lại.
7 Người dùng truy cập vào ứng dụng.
8 Người dùng nhập đầy đủ thông tin gồm Email, số điện thoại và mật khẩu.
9 Người dùng chọn đăng ký.
10 Hệ thống xác thực thông tin đăng ký thành công.
11 Hệ thống cho phép người dùng đăng nhập và truy cập vào ứng dụng.
12 Hệ thống ghi nhận hoạt động đăng ký thành công.
Diễn biến phụ 2a Người dùng chọn phương thức đăng ký bằng tài khoản
1 Hệ thống chuyển sang màn hình đăng ký bằng tài khoản Google.
2 Người dùng nhập tài khoản Google.
4a Google xác thực thông tin đăng ký thành công.
2b Người dùng chọn phương thức đăng ký bằng tài khoản Facebook.
1 Hệ thống chuyển sang màn hình đăng ký bằng tài
2 Người dùng nhập tài khoản Facebook.
4b Facebook xác thực thông tin đăng ký thành công.
4c Hệ thống xác thực thông tin đăng ký không thành công và hiển thị thông báo.
1 Người dùng nhập lại thông tin đăng ký.
3.3.3.3 Đặc tả use case Xem thông tin cá nhân
Tên Use Case Xem thông tin cá nhân.
Mô tả Cho phép người dùng xem thông tin cá nhân trong tài khoản hiện tại.
Trigger Người dùng muốn xem thông tin cá nhân.
Tiền điều kiện - Người dùng đã đăng nhập vào hệ thống.
- Thiết bị có kết nối internet.
Hậu điều kiện Không có
13 Người dùng truy cập vào ứng dụng.
14 Người dùng nhấn vào nút tài khoản.
15 Người dùng nhấn vào nút điều chỉnh tài khoản để xem chi tiết.
Diễn biến phụ Không có
3.3.3.4 Đặc tả use case Chỉnh sửa thông tin cá nhân
Tên Use Case Chỉnh sửa thông tin cá nhân.
Bảng 3 6 Bảng đặc tả Use case xem thông tin cá nhân
Bảng 3 7 Bảng đặc tả Use case Chỉnh sửa thông tin cá nhân
Mô tả Cho phép người dùng chỉnh sửa thông tin cá nhân trong tài khoản hiện tại.
Trigger Người dùng muốn chỉnh sửa thông tin cá nhân.
Tiền điều kiện - Người dùng đã đăng nhập vào hệ thống.
- Thiết bị có kết nối internet.
Hậu điều kiện - Nếu thành công, thông tin được cập nhật.
- Nếu thất bại, thông báo đến người dùng.
16 Người dùng truy cập vào ứng dụng.
17 Người dùng nhấn vào nút tài khoản.
18 Người dùng nhấn vào nút điều chỉnh tài khoản để xem chi tiết.
19 Người dùng chỉnh sửa các thông tin mong muốn.
21 Hệ thống xác thực thông tin thành công.
22 Thông tin được cập nhật.
Diễn biến phụ 4a Người dùng hủy chỉnh sửa thông tin.
6a Hệ thống xác thực không thành công và hiển thị thông báo.
1 Người dùng kiểm tra lại thông tin.
3.3.3.5 Đặc tả use case Xem địa chỉ giao hàng
Tên Use Case Xem địa chỉ giao hàng.
Mô tả Cho phép người dùng xem các địa chỉ giao hàng trong tài khoản hiện tại.
Bảng 3 8 Bảng đặc tả Use case Xem địa chỉ giao hàng
Trigger Người dùng muốn xem thông tin giao hàng hiện có trong tài khoản.
Tiền điều kiện - Người dùng đã đăng nhập vào hệ thống.
- Thiết bị có kết nối internet.
Hậu điều kiện - Hiển thị đầy đủ thông tin trên màn hình.
23 Người dùng truy cập vào ứng dụng.
24 Người dùng nhấn vào sản phẩm.
26 Người dùng chọn thay đổi địa chỉ giao hàng để xem các địa chỉ giao hàng hiện có.
Diễn biến phụ Không có
3.3.3.6 Đặc tả use case Thêm địa chỉ giao hàng
Tên Use Case Thêm địa chỉ giao hàng.
Mô tả Cho phép người dùng thêm địa chỉ giao hàng vào tài khoản hiện tại.
Trigger Người dùng muốn thêm địa chỉ giao hàng.
Tiền điều kiện - Người dùng đã đăng nhập vào hệ thống.
- Thiết bị có kết nối internet.
Hậu điều kiện - Nếu thành công, địa chỉ được thêm vào danh sách.
- Nếu thất bại, thông báo đến người dùng.
Diễn biến chính 27 Người dùng truy cập vào ứng dụng.
28 Người dùng nhấn vào sản phẩm.
Bảng 3 9 Bảng đặc tả Use case Thêm địa chỉ giao hàng
30 Người dùng chọn thay đổi địa chỉ giao hàng để xem các địa chỉ giao hàng hiện có.
31 Người dùng chọn “Thêm địa chỉ giao hàng”.
32 Người dùng điền đầy đủ thông tin gồm Tên người nhận, số điện thoại, địa chỉ chi tiết, quận, thành phố.
33 Hệ thống xác thực thông tin thành công.
34 Địa chỉ được thêm vào và hiển thị với người dùng.
Diễn biến phụ Không có
7a Hệ thống xác thực không thành công và hiển thị thông báo.
35 Người dùng kiểm tra lại thông tin.
3.3.3.7 Đặc tả use case Sửa địa chỉ giao hàng
Tên Use Case Chỉnh sửa địa chỉ giao hàng
Mô tả Cho phép người dùng chỉnh sửa địa chỉ giao hàng trong tài khoản hiện tại.
Trigger Người dùng muốn chỉnh sửa địa chỉ giao hàng
Tiền điều kiện - Người dùng đã đăng nhập vào hệ thống.
- Thiết bị có kết nối internet.
- Nếu thành công, thông tin địa chỉ giao hàng được cập nhật.
- Nếu thất bại, thông báo đến người dùng.
Diễn biến chính 37 Người dùng truy cập vào ứng dụng.
38 Người dùng nhấn vào sản phẩm.
Bảng 3 10 Bảng đặc tả Use case sửa địa chỉ giao hàng
40 Người dùng chọn thay đổi địa chỉ giao hàng để xem các địa chỉ giao hàng hiện có.
41 Người dùng chọn địa chỉ giao hàng muốn chỉnh sửa.
42 Người dùng thay đổi thông tin mong muốn.
43 Hệ thống xác thực thông tin thành công.
44 Thông tin được cập nhật và hiển thị với người dùng.
Diễn biến phụ 6a Người dùng hủy chỉnh sửa thông tin.
6a Hệ thống xác thực không thành công và hiển thị thông báo.
1 Người dùng kiểm tra lại thông tin
3.3.3.8 Đặc tả use case Xem sản phẩm
Tên Use Case Xem sản phẩm
Mô tả Cho phép người dùng xem các sản phẩm hiện có trong hệ thống.
Trigger Người dùng muốn xem các sản phẩm hiện có trong ứng dụng.
Tiền điều kiện - Người dùng đã đăng nhập vào hệ thống.
- Thiết bị có kết nối internet.
Hậu điều kiện - Thông tin sản phẩm hiển thị đầy đủ và chính xác.
45 Người dùng truy cập vào ứng dụng.
46 Người dùng chọn sản phẩm muốn xem.
47 Hệ thống hiển thị sản phẩm đầy đủ thông tin.
Diễn biến phụ Không có
Bảng 3 11 Bảng đặc tả Use case xem sản phẩm
3.3.3.9 Đặc tả use case Tìm kiếm sản phẩm
Tên Use Case Tìm kiếm sản phẩm.
Mô tả Cho phép người dùng tìm kiếm các sản phẩm hiện có trong hệ thống.
Trigger Người dùng muốn tìm kiếm sản phẩm theo nhu cầu.
Tiền điều kiện - Người dùng đã đăng nhập vào hệ thống.
- Thiết bị có kết nối internet.
- Nếu tồn tại sản phẩm, thông tin được hiển thị đầy đủ và chính xác.
- Nếu không tồn tại sản phẩm, thông báo đến người dùng.
48 Người dùng truy cập vào ứng dụng.
49 Người dùng nhấn thanh tìm kiếm ở trang chính của ứng dụng.
50 Người dùng nhập vào từ khóa cần tìm kiếm.
51 Hệ thống hiển thị kết quả tương ứng với từ khóa.
Diễn biến phụ Không có
3.3.3.10 Đặc tả use case Lọc sản phẩm
Tên Use Case Lọc sản phẩm
Mô tả Cho phép người dùng lọc sản phẩm dựa trên nhu cầu mong muốn.
Bảng 3 12 Bảng đặc tả Use case tìm kiếm sản phẩm
Bảng 3 13 Bảng đặc tả Use case Lọc sản phẩm
Trigger Người dùng muốn tìm kiếm sản phẩm theo nhu cầu
Tiền điều kiện - Người dùng đã đăng nhập vào hệ thống.
- Thiết bị có kết nối internet.
- Nếu tồn tại sản phẩm, hiển thị đầy đủ thông tin đến người dùng.
- Nếu không tồn tại sản phẩm trong hệ thống, thông báo đến người dùng.
52 Người dùng truy cập vào ứng dụng.
53 Người dùng chọn danh mục sản phẩm.
54 Người dùng chọn thương hiệu mong muốn để lọc sản phẩm.
55 Hệ thống hiển thị kết quả.
Diễn biến phụ Không có
3.3.3.11 Đặc tả use case Xem danh mục sản phẩm
Tên Use Case Xem danh mục sản phẩm.
Mô tả Cho phép người dùng xem các danh mục sản phẩm hiện có trong hệ thống.
Trigger Người dùng muốn xem các danh mục sản phẩm
Tiền điều kiện - Người dùng đã đăng nhập vào hệ thống.
- Thiết bị có kết nối internet.
Hậu điều kiện - Thông tin được hiển thị đầy đủ và chính xác.
Diễn biến chính 56 Người dùng truy cập vào ứng dụng.
57 Người dùng chọn xem tất cả danh mục.
Bảng 3 14 Bảng đặc tả Use case xem danh mục sản phẩm
58 Hệ thống hiển thị các danh mục sản phẩm đầy đủ và chính xác.
59 Hệ thống hiển thị kết quả.
Diễn biến phụ Không có
3.3.3.12 Đặc tả use case Tìm kiếm danh mục sản phẩm
Tên Use Case Tìm kiếm danh mục sản phẩm
Mô tả Cho phép người dùng tìm kiếm danh mục sản phẩm trong hệ thống.
Trigger Người dùng muốn chỉnh sửa thông tin cá nhân.
Tiền điều kiện - Người dùng đã đăng nhập vào hệ thống
- Thiết bị có kết nối internet.
- Nếu tồn tại danh mục, hiển thị đầy đủ thông tin đến người dùng.
- Nếu không tồn tại danh mục trong hệ thống, thông báo đến người dùng.
60 Người dùng truy cập vào ứng dụng.
61 Người dùng nhấn vào xem tất cả danh mục.
62 Người dùng nhập từ khóa vào thanh tìm kiếm.
63 Hệ thống hiển thị kết quả tìm kiếm.
Diễn biến phụ Không có
3.3.3.13 Đặc tả use case Xem sản phẩm trong danh sách yêu thích
Bảng 3 15 Bảng đặc tả Use case tìm kiếm danh mục sản phẩm
Bảng 3 16 Bảng đặc tả Use case xem sản phẩm trong danh sách yêu thích
Tên Use Case Xem sản phẩm trong danh sách yêu thích.
Mô tả Cho phép người dùng xem các sản phẩm trong danh sách yêu thích trong tài khoản hiện tại.
Trigger Người dùng muốn xem các sản phẩm trong danh sách yêu thích.
Tiền điều kiện - Người dùng đã đăng nhập vào hệ thống
- Thiết bị có kết nối internet.
Hậu điều kiện - Hệ thống hiển thị các sản phẩm đầy đủ và chính xác.
64 Người dùng truy cập vào ứng dụng.
65 Người dùng nhấn vào mục yêu thích.
66 Hệ thống hiển thị các sản phẩm trong mục yêu thích.
Diễn biến phụ Không có
3.3.3.14 Đặc tả use case Thêm sản phẩm vào danh sách yêu thích
Tên Use Case Thêm sản phẩm vào danh sách yêu thích.
Mô tả Cho phép người dùng thêm sản phẩm vào danh mục yêu thích.
Trigger Người dùng muốn thêm sản phẩm vào danh sách yêu thích.
Tiền điều kiện - Người dùng đã đăng nhập vào hệ thống.
- Thiết bị có kết nối internet.
- Nếu thành công, sản phẩm được thêm vào danh mục yêu thích.
- Nếu thất bại, thông báo đến người dùng.
Bảng 3 17 Bảng đặc tả Use case thêm sản phẩm vào danh sách yêu thích
67 Người dùng truy cập vào ứng dụng.
68 Người dùng chọn “Yêu thích” trên từng sản phẩm.
69 Hệ thống thông báo thêm sản phẩm thành công.
Diễn biến phụ Không có
3.3.3.15 Đặc tả use case Xóa sản phẩm khỏi danh sách yêu thích
Tên Use Case Xóa sản phẩm khỏi danh sách yêu thích.
Mô tả Cho phép người dùng xóa sản phẩm khỏi danh sách yêu thích trong tài khoản hiện tại.
Trigger Người dùng muốn xóa sản phẩm khỏi danh sách yêu thích.
Tiền điều kiện - Người dùng đã đăng nhập vào hệ thống
- Thiết bị có kết nối internet.
- Nếu thành công, sản phẩm được xóa khỏi danh sách yêu thích.
- Nếu thất bại, thông báo đến người dùng.
70 Người dùng truy cập vào ứng dụng.
71 Người dùng chọn “Yêu thích” trên sản phẩm đã được yêu thích.
72 Hệ thống thông báo xóa sản phẩm thành công.
Diễn biến phụ 2a Người dùng chọn danh mục yêu thích.
1 Người dùng vuốt sang trái để xóa sản phẩm.
3.3.3.16 Đặc tả use case Xem sản phẩm trong giỏ hàng
Bảng 3 18 Bảng đặc tả Use case xóa sản phẩm khỏi danh sách yêu thích
Bảng 3 19 Bảng đặc tả Use case xem sản phẩm trong giỏ hàng
Tên Use Case Xem sản phẩm trong giỏ hàng.
Mô tả Cho phép người dùng xem các sản phẩm trong giỏ hàng của tài khoản hiện tại.
Trigger Người dùng muốn xem sản phẩm trong giỏ hàng hiện tại.
Tiền điều kiện - Người dùng đã đăng nhập vào hệ thống.
- Thiết bị có kết nối internet.
Hậu điều kiện - Hệ thống hiển thị thông tin đầy đủ và chính xác.
73 Người dùng truy cập vào ứng dụng.
74 Người dùng nhấn vào nút giỏ hàng.
75 Hệ thống hiển thị đầy đủ thông tin.
Diễn biến phụ Không có.
3.3.3.17 Đặc tả use case Thêm sản phẩm vào giỏ hàng
Tên Use Case Thêm sản phẩm vào giỏ hàng.
Mô tả Cho phép người dùng thêm sản phẩm vào giỏ hàng hiện tại.
Trigger Người dùng muốn thêm sản phẩm vào giỏ hàng.
Tiền điều kiện - Người dùng đã đăng nhập vào hệ thống.
- Thiết bị có kết nối internet.
Hậu điều kiện - Nếu thành công, sản phẩm được thêm vào giỏ hàng.
- Nếu thất bại, thông báo đến người dùng.
Diễn biến chính 76 Người dùng truy cập vào ứng dụng.
77 Người dùng chọn sản phẩm.
Bảng 3 20 Bảng đặc tả Use case thêm sản phẩm vào giỏ hàng
78 Người dùng chọn “Thêm vào giỏ hàng”
79 Hệ thống thông báo thêm vào giỏ hàng thành công.
80 Hệ thống cập nhật số lượng sản phẩm trong giỏ hàng.
Diễn biến phụ Không có
3.3.3.18 Đặc tả use case Xóa sản phẩm khỏi giỏ hàng
Tên Use Case Xóa sản phẩm khỏi giỏ hàng.
Mô tả Cho phép người dùng xóa sản phẩm trong giỏ hàng hiện tại.
Trigger Người dùng muốn xóa sản phẩm khỏi giỏ hàng.
Tiền điều kiện - Người dùng đã đăng nhập vào hệ thống
- Thiết bị có kết nối internet.
Hậu điều kiện - Nếu thành công, sản phẩm được xóa khỏi giỏ hàng.
- Nếu thất bại, thông báo đến người dùng.
81 Người dùng truy cập vào ứng dụng.
82 Người dùng chọn giỏ hàng.
83 Người dùng chọn sản phẩm cần xóa.
84 Người dùng lướt sản phẩm sang trái để xóa.
85 Hệ thống thông báo xóa sản phẩm thành công.
86 Hệ thống cập nhật tổng số lượng sản phẩm và tổng giá trị sản phẩm trong giỏ
Diễn biến phụ Không có
3.3.3.19 Đặc tả use case Cập nhật số lượng sản phẩm trong giỏ hàng
Bảng 3 21 Bảng đặc tả Use case xóa sản phẩm khỏi giỏ hàng
Bảng 3 22 Bảng đặc tả Use case xóa sản phẩm khỏi giỏ hàng
ID Tên Use Case Cập nhật số lượng sản phẩm trong giỏ hàng.
Mô tả Cho phép người dùng thay đổi số lượng của từng sản phẩm trong giỏ hàng.
Trigger Người dùng muốn cập nhật số lượng của từng sản phẩm trong giỏ hàng.
Tiền điều kiện - Người dùng đã đăng nhập vào hệ thống.
- Thiết bị có kết nối internet.
Hậu điều kiện - Hệ thống hiển thị số lượng của từng sản phẩm chính xác.
87 Người dùng truy cập vào ứng dụng.
88 Người dùng chọn giỏ hàng.
89 Người dùng chọn sản phẩm cần cập nhật số lượng.
90 Người dùng chọn “Tăng” để tăng số lượng sản phẩm.
91 Hệ thống cập nhật số lượng và tổng giá trị thành công.
Diễn biến phụ 4a Người dùng chọn “Giảm” để giảm số lượng sản phẩm.
3.3.3.20 Đặc tả use case Xem tổng số lượng sản phẩm trong giỏ hàng
Tên Use Case Xem tổng số lượng sản phẩm trong giỏ hàng.
Mô tả Cho phép người dùng xem tổng số sản phẩm trong giỏ hàng hiện tại.
Trigger Người dùng muốn xem tổng số lượng sản phẩm trong giỏ hàng.
Bảng 3 23 Bảng đặc tả Use case xem tổng số lượng sản phẩm trong giỏ hàng
Tiền điều kiện - Người dùng đã đăng nhập vào hệ thống.
- Thiết bị có kết nối internet.
Hậu điều kiện - Hệ thống hiển thị số lượng chính xác.
92 Người dùng truy cập vào ứng dụng.
93 Người dùng nhấn chọn giỏ hàng.
94 Hệ thống hiển thị số lượng sản phẩm trong giỏ.
Diễn biến phụ Không có
3.3.3.21 Đặc tả use case Xem tổng giá trị sản phẩm trong giỏ hàng
Tên Use Case Xem tổng giá trị sản phẩm trong giỏ hàng.
Mô tả Cho phép người dùng xem tổng giá trị sản phẩm trong giỏ hàng.
Trigger Người dùng muốn xem tổng giá trị sản phẩm trong giỏ hàng.
Tiền điều kiện - Người dùng đã đăng nhập vào hệ thống.
- Thiết bị có kết nối internet.
Hậu điều kiện - Hệ thống hiển thị kết quả chính xác.
95 Người dùng truy cập vào ứng dụng.
96 Người dùng nhấn chọn giỏ hàng.
97 Hệ thống hiển thị tổng giá trị sản phẩm trong giỏ.
Diễn biến phụ Không có
3.3.3.22 Đặc tả use case Đặt hàng
Bảng 3 24 Bảng đặc tả Use case xem tổng giá trị sản phẩm trong giỏ hàng
Bảng 3 25 Bảng đặc tả Use case đặt hàng
Tên Use Case Đặt hàng
Mô tả Cho phép người dùng đặt mua sản phẩm mong muốn.
Trigger Người dùng muốn đặt mua sản phẩm.
Tiền điều kiện - Người dùng đã đăng nhập vào hệ thống.
- Thiết bị có kết nối internet.
- Nếu thành công, hệ thống thông báo đặt hàng thành công.
- Nếu thất bại, thông báo lỗi đến người dùng.
98 Người dùng truy cập vào ứng dụng.
99 Người dùng chọn sản phẩm
100 Người dùng chọn “Mua ngay”.
101 Người dùng chọn địa chỉ giao hàng.
102 Người dùng chọn thanh toán bằng tiền mặt.
103 Hệ thống xác thực thông tin thành công.
104 Hệ thống thông báo đặt hàng thành công.
5a Người dùng chọn thanh toán bằng Thẻ ngân hàng.
1 Người dùng nhập thông tin thẻ.
2 Người dùng chọn “Thanh toán”.
6a Hệ thống xác thực không thành công và hiển thị thông báo.
1 Người dùng kiểm tra lại thông tin.
3.3.3.23 Đặc tả use case Xem sản phẩm trong đơn hàng
Tên Use Case Xem sản phẩm trong đơn hàng.
Bảng 3 26 Bảng đặc tả Use case xem sản phẩm trong đơn hàng
Mô tả Cho phép người dùng xem các sản phẩm có trong đơn hàng.
Trigger Người dùng muốn xem sản phẩm trong đơn hàng.
Tiền điều kiện - Người dùng đã đăng nhập vào hệ thống.
- Thiết bị có kết nối internet.
Hậu điều kiện - Hệ thống hiển thị thông tin chính xác.
105 Người dùng truy cập vào ứng dụng.
106 Người dùng chọn sản phẩm muốn mua.
107 Người dùng chọn “Mua ngay”.
108 Hệ thống hiển thị sản phẩm ở trong đơn hàng.
Diễn biến phụ 2a Người dùng chọn giỏ hàng.
3.3.3.24 Đặc tả use case Thanh toán
Tên Use Case Thanh toán đơn hàng
Mô tả Cho phép người dùng thanh toán đơn hàng hiện tại.
Trigger Người dùng muốn thanh toán đơn hàng.
Tiền điều kiện - Người dùng đã đăng nhập vào hệ thống.
- Thiết bị có kết nối internet.
Hậu điều kiện - Nếu thành công, thôn báo thanh toán thành công.
- Nếu thất bại, thông báo đến người dùng.
Diễn biến chính 109 Người dùng truy cập vào ứng dụng.
110 Người dùng chọn sản phẩm cần mua.
Bảng 3 27 Bảng đặc tả Use case thanh toán
111 Người dùng chọn “Mua ngay”.
112 Người dùng chọn phương thức thanh toán Stripe.
113 Người dùng nhập thông tin thẻ ngân hàng.
114 Hệ thống xác thực thông tin thành công.
115 Hệ thống thông báo thanh toán thành công.
2a Người dùng chọn giỏ hàng.
4a Người dùng chọn phương thức thanh toán khi nhận hàng.
6a Hệ thống xác thực không thành công và hiển thị thông báo.
1 Người dùng kiểm tra lại thông tin.
3.3.3.25 Đặc tả use case Đánh giá sản phẩm
Tên Use Case Đánh giá sản phẩm.
Mô tả Cho phép người dùng đánh giá sản phẩm đã mua.
Trigger Người dùng muốn đánh giá sản phẩm.
- Người dùng đã đăng nhập vào hệ thống
- Thiết bị có kết nối internet.
- Người dùng mua hàng thành công.
Hậu điều kiện - Nếu thành công, đánh giá được thêm vào.
- Nếu thất bại, thông báo đến người dùng.
Diễn biến chính 116 Người dùng truy cập vào ứng dụng.
117 Người dùng chọn tài khoản.
118 Người dùng chọn xem lịch sử đặt hàng.
119 Người dùng chọn mục “To review”.
Bảng 3 28 Bảng đặc tả Use case đánh giá sản phẩm
120 Người dùng viết đánh giá sản phẩm đã mua.
121 Người dùng chọn “Đánh giá”.
122 Hệ thống xác thực thông tin thành công.
Diễn biến phụ Không có
7a Hệ thống xác thực không thành công và hiển thị thông báo.
1 Người dùng kiểm tra thông tin.
3.3.3.26 Đặc tả use case Xem lịch sử đặt hàng
Tên Use Case Xem lịch sử đặt hàng.
Mô tả Cho phép người dùng xem lịch sử đặt hàng trong tài khoản hiện tại.
Trigger Người dùng muốn xem lịch sử đặt hàng.
Tiền điều kiện - Người dùng đã đăng nhập vào hệ thống.
- Thiết bị có kết nối internet.
Hậu điều kiện - Hệ thống hiển thị đầy đủ thông tin.
123 Người dùng truy cập vào ứng dụng.
124 Người dùng nhấn vào nút tài khoản.
125 Người dùng chọn xem lịch sử đặt hàng.
126 Hệ thống hiển thị đầy đủ các đơn hàng cùng tình trạng của đơn hàng.
Diễn biến phụ Không có.
3.3.3.27 Đặc tả use case Xem tình trạng đơn hàng
Bảng 3 29 Bảng đặc tả Use case xem lịch sử đặt hàng
ID Tên Use Case Xem tình trạng đơn hàng.
Mô tả Cho phép người dùng xem tình trạng các đơn hàng hiện tại trong giỏ hàng.
Trigger Người dùng muốn xem tình trạng đơn hàng.
Tiền điều kiện - Người dùng đã đăng nhập vào hệ thống.
- Thiết bị có kết nối internet.
Hậu điều kiện - Hệ thống hiển thị đầy đủ thông tin.
127 Người dùng truy cập vào ứng dụng.
128 Người dùng nhấn vào nút tài khoản.
129 Người dùng chọn xem lịch sử đặt hàng.
130 Hệ thống hiển thị các mục trạng thái của đơn hàng.
131 Người dùng chọn tình trạng trên các mục để xem tình trạng các đơn hàng
Diễn biến phụ Không có
3.3.3.28 Đặc tả use case Xem phương thức thanh toán
Tên Use Case Xem phương thức thanh toán.
Mô tả Cho phép người dùng xem các phương thức thanh toán trong hệ thống.
Trigger Người dùng muốn xem các phương thức thanh toán hiện có.
Tiền điều kiện - Người dùng đã đăng nhập vào hệ thống.
Bảng 3 31 Bảng đặc tả Use case xem phương thức thanh toán
- Thiết bị có kết nối internet.
Hậu điều kiện - Hệ thống hiển thị thông tin đầy đủ.
132 Người dùng truy cập vào ứng dụng.
133 Người dùng chọn sản phẩm.
134 Người dùng chọn “Mua ngay”.
135 Hệ thống hiển thị các phương thức thanh toán.
Diễn biến phụ 2a Người dùng chọn giỏ hàng.
Tên trường Kiểu dữ liệu Mô tả id ObjectId Mã ID của người dùng. phone_number String Số điện thoại của người dùng. email String Email của người dùng. password String Mật khẩu của tài khoản người dùng. username String Tên gọi của người dùng. birthday Datetime Ngày sinh của người dùng. gender String Giới tính của người dùng. addresses Array Danh sách các địa chỉ đặt hàng. avatar_url String Đường dẫn đến ảnh đại diện của người dùng. is_active Boolen Kiểm tra người dùng có đang hoạt động hay không. role String Vai trò của người dùng trong hệ thống. created_at Datetime Ngày tạo người dùng. updated_at Datetime Ngày cập nhật người dùng.
Tên trường Kiểu dữ liệu Mô tả id ObjectId Mã ID của địa chỉ. customer String Tên người nhận hàng. phone_number String Số điện thoại của người dùng. detailed_address String Địa chỉ đặt hàng chi tiết gồm số nhà, đường district String Quận/Huyện city String Thành phố/Tỉnh country String Quốc gia
Hình 3 7 Sơ đồ quan hệ thực thể
Bảng 3 33 Bảng Address created_at Datetime Ngày tạo địa chỉ. updated_at Datetime Ngày cập nhật địa chỉ.
Tên trường Kiểu dữ liệu Mô tả id ObjectId Mã ID của sản phẩm. name String Tên sản phẩm của người dùng. regular_price String Giá thường ngày của sản phẩm. quantity Number Số lượng sản phẩm hiện có. color Array Danh sách màu của sản phẩm. description String Mô tả sản phẩm. extra_properties JsonB Các thuộc tính khác của sản phẩm. image_cover String Đường dẫn chứa hình ảnh bìa của sản phẩm. images Array Danh sách đường dẫn chứa hình ảnh mô tả của sản phẩm. rating_average Number Trung bình các đánh giá. rating_quantity Number Tổng số đánh giá của sản phẩm. brand_id ObjectId Mã thương hiệu của sản phẩm. created_at Datetime Ngày tạo sản phẩm. updated_at Datetime Ngày cập nhật sản phẩm. deleted_at Datetime Ngày xóa sản phẩm.
Tên trường Kiểu dữ liệu Mô tả id ObjectId Mã ID của loại sản phẩm. name String Tên loại sản phẩm. product_count String Số lượng sản phẩm của loại đó. created_at Datetime Ngày tạo loại sản phẩm. updated_at Datetime Ngày cập nhật loại sản phẩm.
Tên trường Kiểu dữ liệu Mô tả id ObjectId Mã ID của người dùng. name String Tên thương hiệu. logo String Đường dẫn đến logo thương hiệu. product_count Number Số lượng sản phẩm ở trong từng thương hiệu. created_at Datetime Ngày tạo thương hiệu. updated_at Datetime Ngày xóa thương hiệu.
Tên trường Kiểu dữ liệu Mô tả id ObjectId Mã ID của mã giảm giá. code String Mã code giảm giá. discount_value Number Giá trị giảm giá. minimum_spend Number Số tiền tối thiểu để áp dụng mã giảm giá. usage_count Number Số lượng sử dụng. usage_limit Number Giới hạn só lượng sử dụng. start_day Datetime Ngày bắt đầu sử dụng mã giảm giá. end_day Datetime Ngày kết thúc sử dụng mã giảm giá. created_at Datetime Ngày tạo người dùng. updated_at Datetime Ngày cập nhật người dùng.
Tên trường Kiểu dữ liệu Mô tả id ObjectId Mã ID của giỏ hàng. user_id ObjectId Mã ID của người dùng sở hữu giỏ hàng. created_at Datetime Ngày tạo giỏ hàng.
Bảng 3 38 Bảng Cart updated_at Datetime Ngày cập nhật giỏ hàng.
Tên trường Kiểu dữ liệu Mô tả id ObjectId Mã ID của thành phần trong giỏ hàng. cart_id ObjectId Mã ID của giỏ hàng. product_id ObjectId Mã ID của thành phần trong giỏ hàng quantity Number Số lượng của thành phần đó trong giỏ hàng. created_at Datetime Ngày tạo thành phần trong giỏ. updated_at Datetime Ngày cập nhật thành phần trong giỏ.
Tên trường Kiểu dữ liệu Mô tả id ObjectId Mã ID của đánh giá. user_id ObjectId Mã ID của người đánh giá. product_id ObjectId Mã ID của sản phẩm. comments String Nội dung đánh giá. rating Number Đánh giá. created_at Datetime Ngày tạo đánh giá. updated_at Datetime Ngày cập nhật đánh giá.
Tên trường Kiểu dữ liệu Mô tả id ObjectId Mã ID của danh sách yêu thích. user_id ObjectId Mã ID của người đánh giá. product_id Array Danh sách mã ID của sản phẩm. created_at Datetime Ngày tạo danh sách yêu thích.
Bảng 3 41 Bảng Wishlist updated_at Datetime Ngày cập nhật danh sách yêu thích.
Tên trường Kiểu dữ liệu Mô tả id ObjectId Mã ID của đơn hàng. user_id ObjectId Mã ID của người dùng. coupon_id ObjectId Mã ID của mã giảm giá. order_status String Tình trạng đơn hàng (To pay, To ship, To receive, To review). order_payment String Hình thức thanh toán. order_date Datetime Ngày tạo đơn hàng. total_quantity String Tổng số lượng sản phẩm trong đơn. shipping_price Number Giá giao hàng. total_price Number Tổng giá trị đơn hàng. discount_amount Boolen Giá trị giảm giá. created_at Datetime Ngày tạo đơn hàng. updated_at Datetime Ngày cập nhật đơn hàng.
Tên trường Kiểu dữ liệu Mô tả id ObjectId Mã ID của thành phần đơn hàng. product_id Array Mã ID của sản phẩm. order_id ObjectId Mã ID của đơn hàng. quantity Number Số lượng sản phẩm trong đơn hàng. price Number Giá trị của sản phẩm trong đơn hàng. created_at Datetime Ngày tạo thành phần đơn hàng. updated_at Datetime Ngày cập nhật thành phần đơn
Bảng 3 43 Bảng Order Item hàng.
Xây dựng ứng dụng
Màn hình Onboard
- Khi mở ứng dụng, chương trình sẽ hiển thị như Hình 1 gồm nội dung giới thiệu và nút bấm khám phá ứng dụng.
- Màn hình Plash được trình bày gồm 3 trang, giới thiệu tổng quan về ứng dụng Ở mỗi màn hình sẽ hiển thị 1 button “Next” để người dùng chuyển sang trang kế tiếp
- Được tạo ra bởi các widget, mỗi widget tương ứng với mỗi thành phần
- Phần hình ảnh được tạo từ Image Widget của Flutter.
- Chữ được tạo từ Text Widget và có sử dụng Google Fonts.
- Nút “Next” được custom từ IconButton của Flutter.
Màn hình Login
- Ở màn hình đăng nhập, người dùng bắt buộc nhập đúng Email và Password đã đăng ký trước đó.
- Sau khi người dùng đã nhập đầy đủ thông tin, click vào button “Login” để tiếp tục sử dụng Nếu người dùng chưa có tài khoản, có thể click vào nút “Sign up” được hiển thị phía cuối màn hình để đăng ký tài khoản lần đầu.
- Được tạo ra bởi các widget, mỗi widget tương ứng với mỗi thành phần trên trang.
- Chữ được tạo từ Text Widget và có sử dụng Google Fonts.
Hình 4 2 Code thiết kế màn hình Onboard
Hình 4 3 Màn hình Đăng nhập
Màn hình Sign up
- Ở màn hình đăng ký, người dùng được yêu cầu nhập 4 thông tin cơ bản bao gồm Email, Password và xác nhận lại Password một lần nữa.
- Sau khi người dùng đã nhập đầy đủ thông tin, click vào button “Signup” để tiếp tục sử dụng Nếu người dùng đã có tài khoản, có thể click vào nút
“Login” được hiển thị phía cuối màn hình để đăng nhập.
- Được tạo ra bởi các widget, mỗi widget tương ứng với mỗi thành phần trên trang.
- Chữ được tạo từ Text Widget và có sử dụng Google Fonts.
- Nút “Sign up” được custom từ ElevatedButton của Flutter.
Hình 4 4 Code thiết kế màn hình đăng nhập
Hình 4 5 Màn hình Đăng kí
Màn hình Home
- Ở màn hình “Trang chủ”, người dùng có thể xem danh sách khuyến mãi hot, các sản phẩm mới, sản phẩm theo loại, sản phẩm được mua nhiều.
- Người dùng có thể tìm sản phẩm theo tên, theo giá, theo hãng.
- Thanh navigation bar ở cuối màn hình và 2 button ở góc phải trên cùng cho phép người dùng truy cập đến các hạng mục khác của ứng dụng một cách dễ dàng
- Được tạo ra bởi các widget, mỗi widget tương ứng với mỗi thành phần trên trang.
- Chữ được tạo từ Text Widget và có sử dụng Google Fonts.
Hình 4 6 Code thiết kế màn hình Đăng ký
Hình 4 7 Màn hình Trang chủ
- Nút “Cart” và “Message” được custom từ IconButton của Flutter.
- Phần thanh “Search” được custom từ TextFormField của Flutter.
- Phần slide khuyến mãi được custom từ ListView của Flutter.
- Phần sản phẩm được custom từ ListView của Flutter.
- Phần Navigation Bar được custom từ bottomNavigationBar của Flutter.
Màn hình Categories
- Khi người dùng chọn nút “View all” từ mục Categories ở trang Home thì ứng dụng sẽ hiển thị những danh mục loại sản phẩm mà cửa hàng đang kinh doanh.
- Tại mỗi loại sản phẩm sẽ hiển thị số sản phẩm hiện có và đang bán tại cửa hàng, người dùng có thể xem chi tiết các sản phẩm bằng cách click vào mỗi widget.
- Được tạo ra bởi các widget, mỗi widget tương ứng với mỗi thành phần trên trang.
- Chữ được tạo từ Text Widget và có sử dụng Google Fonts.
Hình 4 8 Code thiết kế màn hình Trang chủ
Hình 4 9 Màn hình Danh mục sản phẩm
- Phần thanh “Search” được custom từ TextFormField của Flutter.
- Mỗi Widget chứa loại sản phẩm được custom từ Container trong Flutter.
Màn hình Chi tiết loại sản phẩm
- Khi người dùng click vào từng widget loại sản phẩm bất kỳ, ứng dụng sẽ hiển thị các sản phẩm của loại đó hiện được đang bán tại cửa hàng
- Được tạo ra bởi các widget, mỗi widget tương ứng với mỗi thành phần trên trang.
- Chữ được tạo từ Text Widget và có sử dụng Google Fonts.
- Phần thanh “Search” được custom từ TextFormField của Flutter.
- Mỗi Widget chứa sản phẩm được custom từ Container trong Flutter.
Hình 4 10 Code thiết kế màn hình Danh mục sản phẩm
Hình 4 11 Màn hình Chi tiết loại sản phẩm
Màn hình Chi tiết sản phẩm
- Khi người dùng click vào bất kỳ sản phẩm nào ở danh sách sản phẩm thì sẽ chuyển tới màn hình chi tiết của sản phẩm đó Nếu người dùng muốn mua sản phẩm này, thì chỉ cần click vào nút “Add to cart”, sản phẩm sẽ tự động được thêm vào giỏ hàng.
- Khi người dùng click vào nút “Heart” trên ảnh sản phẩm, sản phẩm sẽ tự động được thêm vào mục “Sản phẩm yêu thích”.
- Được tạo ra bởi các widget, mỗi widget tương ứng với mỗi thành phần trên trang.
- Chữ được tạo từ Text Widget và có sử dụng Google Fonts.
Hình 4 12 Code thiết kế màn hình Chi tiết loại sản phẩm
Hình 4 13 Màn hình Chi tiết sản phẩm
- Mỗi Widget chứa sản phẩm được custom từ Container trong Flutter.
- Phần Rating được custom từ thư viện RatingBar của Flutter.
- Phần bình luận được custom từ thư viện ReviewCubit của Flutter.
Hình 4 14 Thiết kế màn hình chi tiết sản phẩm
Màn hình Notifications
- Ở màn hình này, người dùng sẽ nhận được tất cả các thông báo từ cửa hang khi cập nhật khuyến mãi, cập nhật về sản phẩm người dùng quan tâm.
- Được tạo ra bởi các widget, mỗi widget tương ứng với mỗi thành phần trên trang.
- Chữ được tạo từ Text Widget và có sử dụng Google Fonts.
- Phần hình ảnh được tạo từ Image Widget của Flutter.
Hình 4 15 Màn hình Thông báo
Màn hình Cart
- Khi người dung click vào biểu tưởng “giỏ hang” ở góc phải trên cùng màn hình, ứng dụng sẽ được chuyển đến màn hình “Giỏ hang”.
- Ở màn hình này, người dùng có thể xem danh sách các món hàng đã thêm, số tiền tính tổng và nhấn chọn thanh toán
- Người dùng có thể xoá sản phẩm bằng cách kéo qua trái.
- Để tiến hành thanh toán, người dùng click nút “Check out”, ứng dụng sẽ chuyển đến màn hình thanh toán.
- Được tạo ra bởi các widget, mỗi widget tương ứng với mỗi thành phần trên trang.
Hình 4 16 Code thiết kế màn hình Thông báo
Hình 4 17 Màn hình Giỏ hàng
- Chữ được tạo từ Text Widget và có sử dụng Google Fonts.
- Phần hình ảnh được tạo từ Image Widget của Flutter.
- Widget hiển thị giá tổng đơn mua và nút “Checkout” được custom từ Container trong Flutter.
Màn hình Đặt hàng
- Ở màn hình “Thanh toán”, người dùng có thể chọn địa chỉ giao hàng, xem lại các sản phẩm đã chọn, chọn phương thức thanh toán và xem tổng số tiền cần thanh toán.
- Sau khi nhấn “Pay now” ứng dụng sẽ tiến hành hình thức thanh toán và trả về một thông báo thanh toán thành công
- Được tạo ra bởi các widget, mỗi widget tương ứng với mỗi thành phần trên trang.
- Chữ được tạo từ Text Widget và có sử dụng Google Fonts.
- Phần thanh toán liên kết Stripe được custom The Stripe Flutter SDK.
Hình 4 18 Code thiết kế màn hình Giỏ hàng
Hình 4 19 Màn hình Đặt hàng
- Phần hình ảnh được tạo từ Image Widget của Flutter.
Màn hình Address
- Ở màn hình “Địa chỉ”, người dùng sẽ chọn địa chỉ mặc định bằng cách click vào địa chỉ đó.
- Khi người dung muốn thêm một địa chỉ mới thì click vào nút “Add address”, một panel chứa ô nhập thông tin địa chỉ sẽ hiện lên và người dung nhập đầy đủ thông tin rồi bấm nút “Save”.
- Được tạo ra bởi các widget, mỗi widget tương ứng với mỗi thành phần trên trang.
- Chữ được tạo từ Text Widget và có sử dụng Google Fonts.
- Phần Widget Address được custom từ InkWell của Flutter.
Hình 4 20 Code thiết kế màn hình Đặt hàng
Hình 4 21 Màn hình Địa chỉ giao hàng
Màn hình Wishlist
- Tại hình ảnh của mỗi sản phẩm sẽ có nút “Heart”, khi người dùng click vào, sản phẩm đó sẽ được tự động thêm vào trang “Sản phẩm yêu thích”.
- Được tạo ra bởi các widget, mỗi widget tương ứng với mỗi thành phần trên trang.
- Chữ được tạo từ Text Widget và có sử dụng Google Fonts.
- Mỗi Widget sản phẩm được custom từ Container, Button, RatingBar của Flutter.
Hình 4 22 Code thiết kế màn hình Địa chỉ giao hàng
Hình 4 23 Màn hình Danh sách sản phẩm yêu thích
Màn hình Profile
- Ở màn hình “Profile”, người dùng có thể xem, sửa thông tin cá nhân, xem các voucher khuyến mãi đã thu thập, xem và theo dõi đơn hàng.
- Được tạo ra bởi các widget, mỗi widget tương ứng với mỗi thành phần trên trang.
- Chữ được tạo từ Text Widget và có sử dụng Google Fonts.
- Mỗi Widget trạng thái trong mục “My orders” được custom từ IconButton trong Flutter.
- Mỗi Widget thông tin trong mục “My information” được custom từ Container và InkWell trong Flutter.
Hình 4 24 Code thiết kế màn hình Danh sách sản phẩm yêu thích
Hình 4 25 Màn hình Tài khoản
Màn hình Chỉnh sửa profile
- Khi người dùng ấn vào nút “Edit” ngay phía dưới ảnh đại diện, một màn hình chỉnh sửa profile sẽ hiện lên, cho phép người dung sửa thông tin cá nhân và cập nhật ảnh đại diện mới.
- Được tạo ra bởi các widget, mỗi widget tương ứng với mỗi thành phần trên trang.
- Chữ được tạo từ Text Widget và có sử dụng Google Fonts.
Hình 4 26 Code thiết kế màn hình Tài khoản
Hình 4 27 Màn hình Chỉnh sửa tài khoản
Màn hình My order
Hình 4 28 Code thiết kế màn hình Chỉnh sửa tài khoản
- Khi người dùng click vào nút “View all” ở màn hình Profile, ứng dụng sẽ chuyển đến màn hình My orders giúp người dùng theo dõi đơn hàng.
- Trạng thái đơn hàng sẽ được hiển thị theo 3 tab: “All”, “To Pay”, “To Ship”, “To Receive”, “To Rate”.
- Tại tab “To Rate” người dùng có thể đánh giá sản phẩm bằng cách click vào nút “Rate”.
- Người dùng nhập đánh giá sản phẩm sau đó nhấn “Submit” để hoàn thành.
- Được tạo ra bởi các widget, mỗi widget tương ứng với mỗi thành phần trên trang.
- Chữ được tạo từ Text Widget và có sử dụng Google Fonts.
- Mỗi Widget trạng thái trong mục “My orders” được custom từ IconButton trong Flutter.
- Mỗi Widget chứa thông tin sản phẩm được custom từ Container và InkWell trong Flutter.
Hình 4 29 Màn hình Lịch sử đặt hàng
Hình 4 30 Code thiết kế màn hình Lịch sử đặt hàng