Ứng dụng di động bán thiết bị điện tử

MỤC LỤC

Giới thiệu đề tài 1.1. 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. 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. - 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. - 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.

    Tìm hiểu cơ sở lý thuyết 2.1. Tổng quan về flutter

      - Đặ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. - 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ủa OS. - 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.

      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.  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 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ế.

      - 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.

      Phân tích thiết kế hệ thống 3.1. Khảo sát hiện trạng

      Xác định chức năng, yêu cầu 1. Yêu cầu chức năng

      • Yêu cầu phi chức năng 1. Tính khả dụng

        + 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á,. + 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. + 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.

        + 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 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 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. - Đả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.

        Thiết kế hệ thống 1. Kiến trúc hệ thống

        • Sơ đồ Use case
          • Thiết kế dữ liệu

            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. 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. 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.

            Đá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. 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. 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.

            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. 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.

            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. 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.

            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. 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. 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ỏ.

            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. 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.

            3.3.2. Sơ đồ Use case
            3.3.2. Sơ đồ Use case

            Xây dựng ứng dụng 4.1. Màn hình Onboard

                          Màn hình Cart 1. Giao diện

                            - Widget hiển thị giá tổng đơn mua và nút “Checkout” được custom từ Container trong Flutter.

                                      Màn hình My order 1.Giao diệ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. - 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”. - Đượ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.

                                        - Mỗi Widget chứa thông tin sản phẩm được custom từ Container và InkWell trong Flutter.

                                        Hình 4. 30 Code thiết kế 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