1. Trang chủ
  2. » Giáo Dục - Đào Tạo

xây dựng hệ thống mua bán cho cửa hàng cafe

97 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây dựng hệ thống mua bán cho cửa hàng cafe
Tác giả Nguyễn Quang Vinh, Phan Trung Tín
Người hướng dẫn ThS. Nguyễn Minh Đạo
Trường học Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh
Chuyên ngành Công nghệ Thông tin
Thể loại Khóa luận tốt nghiệp
Năm xuất bản 2023
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 97
Dung lượng 12,02 MB

Cấu trúc

  • Phần 1: MỞ ĐẦU (17)
    • 1.1. LÝ DO CHỌN ĐỀ TÀI (17)
    • 1.2. ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU (17)
      • 1.2.1. Đối tượng nghiên cứu (17)
      • 1.2.2. Phương pháp nghiên cứu (18)
    • 1.3. YÊU CẦU CHỨC NĂNG (18)
      • 1.3.1. Các chức năng chính cần thiết cho ứng dụng (18)
      • 1.3.2. Các chức năng mở rộng cho ứng dụng (19)
    • 1.4. YÊU CẦU PHI CHỨC NĂNG (20)
    • 1.5. KẾT QUẢ DỰ KIẾN ĐẠT ĐƯỢC (20)
  • Phần 2: NỘI DUNG (21)
  • CHƯƠNG 1: CƠ SỞ LÝ THUYẾT (21)
    • 1.1. CÔNG NGHỆ SỬ DỤNG (21)
      • 1.1.1. Flutter (21)
      • 1.1.2. NuxtJS (22)
      • 1.1.3. NestJS (23)
      • 1.1.4. MongoDB (23)
      • 1.1.5. Các dịch vụ thứ 3 (24)
    • 1.2. KIẾN TRÚC HỆ THỐNG (0)
      • 1.2.1. Cách thức tổ chức và hoạt động của front-end (27)
      • 1.2.2. Cách thức tổ chức và hoạt động của back-end (28)
  • CHƯƠNG 2: PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ HỆ THỐNG (32)
    • 2.1. MÔ TẢ CÁC THÀNH PHẦN DỮ LIỆU CHÍNH (32)
    • 2.2. LƯỢC ĐỒ USECASE (34)
      • 2.2.1. Module thành viên (34)
      • 2.2.2. Module cửa hàng (37)
      • 2.2.3. Module giao hàng (38)
      • 2.2.4. Module quản trị (39)
    • 2.3. ĐẶC TẢ USECASE (42)
      • 2.3.1. Module thành viên (42)
      • 2.3.2. Module bán hàng (49)
      • 2.3.3. Module giao hàng (52)
      • 2.3.4. Module quản trị (55)
    • 2.4. LƯỢC ĐỒ SEQUENCE (59)
      • 2.4.1. Đặt hàng giao tận nơi (59)
      • 2.4.2. Đặt hàng đến lấy (0)
      • 2.4.3. Mua hàng tại cửa hàng (65)
  • CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG (67)
    • 3.1. THIẾT KẾ CƠ SỞ DỮ LIỆU (0)
    • 3.2. THIẾT KẾ GIAO DIỆN (0)
      • 3.2.1. Giao diện ứng dụng Thành viên (69)
      • 3.2.2. Giao diện ứng dụng Bán hàng (74)
      • 3.2.3. Giao diện ứng dụng Giao hàng (76)
      • 3.2.4. Giao diện ứng dụng Quản trị (79)
    • 3.3. HƯỚNG DẪN CÀI ĐẶT HỆ THỐNG (0)
      • 3.3.1. Cài đặt và chạy server back-end (0)
      • 3.3.2. Cài đặt và chạy web admin (0)
      • 3.3.3. Cài đặt và chạy các ứng dụng flutter (0)
  • Phần 3: KẾT LUẬN (94)
    • 3.1. KẾT QUẢ ĐẠT ĐƯỢC CỦA ĐỀ TÀI (0)
    • 3.2. ƯU NHƯỢC ĐIỂM CỦA ĐỀ TÀI (94)
      • 3.2.1. Ưu điểm (94)
      • 3.2.2. Nhược điểm (94)
    • 3.3. HƯỚNG PHÁT TRIỂN TRONG TƯƠNG LAI (95)
  • TÀI LIỆU THAM KHẢO (96)

Nội dung

Phân tích yêu cầu và thiết kế ứng dụng mobile cho người dùng đặt hàng; ứng dụng mobile cho các cửa hàng theo dõi, thực hiện các đơn đặt hàng; ứng dụng mobile để nhân viên giao hàng và we

NỘI DUNG

Flutter là một framework phát triển ứng dụng di động giao diện người dùng (UI) đa nền tảng được phát triển bởi Google Với Flutter, bạn có thể xây dựng các ứng dụng di động đẹp, tương tác và hiệu suất cao cho cả iOS và Android từ một mã nguồn duy nhất Flutter sử dụng ngôn ngữ lập trình Dart, được tối ưu hóa để xây dựng giao diện người dùng nhanh chóng và mượt mà Đặc điểm nổi bật:

− Giao diện người dùng tương tự trên nhiều nền tảng: Flutter cho phép bạn xây dựng giao diện người dùng đẹp và tương tự trên cả iOS và Android từ một mã nguồn duy nhất Bạn không cần phải viết mã riêng cho mỗi nền tảng, giúp tiết kiệm thời gian và công sức phát triển

− Hot Reload: Flutter cung cấp tính năng Hot Reload cho phép bạn thay đổi mã nguồn và xem kết quả ngay lập tức trên thiết bị hoặc máy ảo Điều này giúp tăng tốc quá trình phát triển và kiểm thử ứng dụng

− Đồng bộ với nền tảng: Flutter cung cấp các widget và các thành phần giao diện tương tự như giao diện người dùng trên các nền tảng iOS và Android Điều này giúp bạn xây dựng ứng dụng với trải nghiệm người dùng tốt trên cả hai nền tảng mà không cần nhiều công cụ bổ sung

− Hiệu suất cao: Flutter sử dụng khung Render Engine riêng biệt để vẽ giao diện người dùng, giúp cải thiện hiệu suất và tốc độ của ứng dụng Bạn có thể xây dựng các ứng dụng đa nhiệm, mượt mà và phản hồi nhanh

− Cộng đồng lớn và hỗ trợ mạnh mẽ: Flutter có một cộng đồng lớn và sôi nổi, với rất nhiều tài liệu, các package và các công cụ hỗ trợ sẵn sàng Bạn có thể tận dụng những tài nguyên này để giúp xây dựng ứng dụng của mình nhanh chóng và hiệu quả.

CƠ SỞ LÝ THUYẾT

CÔNG NGHỆ SỬ DỤNG

Flutter là một framework phát triển ứng dụng di động giao diện người dùng (UI) đa nền tảng được phát triển bởi Google Với Flutter, bạn có thể xây dựng các ứng dụng di động đẹp, tương tác và hiệu suất cao cho cả iOS và Android từ một mã nguồn duy nhất Flutter sử dụng ngôn ngữ lập trình Dart, được tối ưu hóa để xây dựng giao diện người dùng nhanh chóng và mượt mà Đặc điểm nổi bật:

− Giao diện người dùng tương tự trên nhiều nền tảng: Flutter cho phép bạn xây dựng giao diện người dùng đẹp và tương tự trên cả iOS và Android từ một mã nguồn duy nhất Bạn không cần phải viết mã riêng cho mỗi nền tảng, giúp tiết kiệm thời gian và công sức phát triển

− Hot Reload: Flutter cung cấp tính năng Hot Reload cho phép bạn thay đổi mã nguồn và xem kết quả ngay lập tức trên thiết bị hoặc máy ảo Điều này giúp tăng tốc quá trình phát triển và kiểm thử ứng dụng

− Đồng bộ với nền tảng: Flutter cung cấp các widget và các thành phần giao diện tương tự như giao diện người dùng trên các nền tảng iOS và Android Điều này giúp bạn xây dựng ứng dụng với trải nghiệm người dùng tốt trên cả hai nền tảng mà không cần nhiều công cụ bổ sung

− Hiệu suất cao: Flutter sử dụng khung Render Engine riêng biệt để vẽ giao diện người dùng, giúp cải thiện hiệu suất và tốc độ của ứng dụng Bạn có thể xây dựng các ứng dụng đa nhiệm, mượt mà và phản hồi nhanh

− Cộng đồng lớn và hỗ trợ mạnh mẽ: Flutter có một cộng đồng lớn và sôi nổi, với rất nhiều tài liệu, các package và các công cụ hỗ trợ sẵn sàng Bạn có thể tận dụng những tài nguyên này để giúp xây dựng ứng dụng của mình nhanh chóng và hiệu quả

Khóa luận tốt nghiệp Công nghệ phần mềm 6

NuxtJS là một framework mã nguồn mở dựa trên Vue.js, được tạo ra để giúp bạn xây dựng ứng dụng web chuyên nghiệp và hiệu quả Với việc kết hợp những tính năng mạnh mẽ của Vue.js và các khả năng bổ sung như routing tự động, server-side rendering (SSR) và cấu hình dựa trên tệp, NuxtJS cung cấp một cách tiếp cận linh hoạt cho việc phát triển ứng dụng web Điểm nổi bật:

− Vue.js cốt lõi: NuxtJS được xây dựng dựa trên Vue.js, một trong những framework JavaScript phổ biến nhất và có cộng đồng lớn Sự kết hợp này mang lại cho bạn sự linh hoạt và khả năng mở rộng khi phát triển ứng dụng web

− Server-side rendering (SSR): Với SSR, NuxtJS cho phép tạo ra các ứng dụng web với trang tĩnh được tạo ra từ máy chủ trước khi gửi tới trình duyệt Điều này cung cấp trải nghiệm nhanh chóng và cải thiện khả năng tìm kiếm của ứng dụng web của bạn

− Routing tự động: NuxtJS giúp bạn quản lý routing một cách dễ dàng và tự động dựa trên cấu trúc thư mục của ứng dụng Bạn không cần phải cấu hình routing một cách thủ công, điều này giảm bớt công việc lặp lại và tăng khả năng duy trì của dự án

− Cấu hình dựa trên tệp: Với NuxtJS, bạn có thể quản lý cấu hình ứng dụng của mình thông qua các tệp tin Điều này cho phép bạn tùy chỉnh các thiết lập một cách dễ dàng, như cấu hình máy chủ, biến môi trường và nhiều hơn nữa

− Quản lý trạng thái ứng dụng: NuxtJS tích hợp sẵn Vuex, một thư viện quản lý trạng thái mạnh mẽ cho ứng dụng Vue.js Điều này giúp bạn quản lý trạng thái ứng dụng một cách hiệu quả và dễ dàng

Tích hợp và mở rộng:

NuxtJS hỗ trợ nhiều plugin và module từ cộng đồng Vue.js, giúp bạn tích hợp các tính năng phổ biến như quản lý trạng thái với Vuex, xử lý HTTP với Axios và quản lý metadata với Vue Meta Bên cạnh đó, bạn cũng có thể sử dụng các module mở rộng của NuxtJS để tăng khả năng và linh hoạt của ứng dụng của mình

Khóa luận tốt nghiệp Công nghệ phần mềm 7

NestJS là một framework phát triển ứng dụng server-side đa nền tảng (cross- platform) và hiệu suất cao cho Node.js Được xây dựng trên cấu trúc module của Angular, NestJS cung cấp một cách tiếp cận tương tự và cú pháp tương đồng với Angular, giúp bạn xây dựng ứng dụng server-side một cách dễ dàng và nhất quán Điểm nổi bật:

− Kiến trúc module và Dependency Injection: NestJS sử dụng kiến trúc module để tổ chức và chia nhỏ ứng dụng thành các phần độc lập và có khả năng tái sử dụng

Nó cũng hỗ trợ Dependency Injection, cho phép bạn quản lý các phụ thuộc và tạo mối quan hệ giữa các thành phần một cách dễ dàng

KIẾN TRÚC HỆ THỐNG

Để thêm tính năng realtime trong hệ thống mua hàng, hệ thống có sử dụng thêm Websocket để tạo kết nối TCP giữa các ứng dụng giúp hệ thống trao đổi dữ liệu theo thời gian thực, cụ thể như sau:

− Server bán hàng tích hợp thêm server websocket để nhận và phát tin đến các ứng dụng khác

− Ứng dụng mobile cửa hàng và tài xế có thêm kết nối đến server websocket để nhận dữ liệu theo thời gian thực

− Server của thành viên cũng kết nối đến server websocket để truyền tin khi có đơn đặt hàng mới

Các server kết nối và lấy dữ liệu từ MongoDB thông qua một ODM (Object Data Model) của MongoDB tên Mongoose

Các server cũng có kết nối tới các bên thứ 3 gồm Amazon S3, Twilito, Momo

1.2.1 Cách thức tổ chức và hoạt động của front-end Ứng dụng flutter sử dụng mô hình BLoC để quản lý state Bloc là một mô hình để quản lý state cho Flutter application B.L.o.C nghĩa là Business Logic Component Nhận 'Event' như là input và trả về output là 'State' Bloc được xây dựng dựa trên RxDart Gồm 3 lớp biểu diễn chính như sau:

− Data layer: Có nhiệm vụ cung cấp data từ bất kể nguồn nào Data Provider cung cấp data và repository sẽ là trình đóng gói một hoặc nhiều data providers

− Bloc hay Business Logic: có nhiệm vụ nhận event từ lớp biểu diễn và trả về state mới Hoạt động như một cầu nối giữa lớp data và lớp presentation

− Presentation Layer (UI): Có nhiệm vụ render chính nó dựa trên một hoặc nhiều state của bloc Nó cũng xử lý các sự kiện input của user và lifecycle event của application

Khóa luận tốt nghiệp Công nghệ phần mềm 12

Hình 2 Mô hình BLoC trong Flutter

Luồng hoạt động của mô hình BLoC trong ứng dụng như sau:

Mô hình BLoC (Business Logic Component) trong Flutter hoạt động theo các bước cơ bản sau:

1 Gửi Event: Giao diện người dùng (UI) hoặc bất kỳ nguồn dữ liệu nào có thể gửi Event tới Bloc Event đại diện cho một hành động, ví dụ như người dùng nhấn nút, dữ liệu từ API được nhận, hoặc sự kiện từ cảm biến

2 Xử lý Event: Bloc nhận Event và thực hiện logic kinh doanh liên quan đến Event đó Điều này có thể bao gồm gọi API, xử lý nghiệp vụ, truy vấn cơ sở dữ liệu, hoặc thay đổi trạng thái của ứng dụng

3 Cập nhật State: Sau khi xử lý Event, Bloc cập nhật trạng thái mới của ứng dụng Trạng thái được truyền qua một Stream để thông báo cho giao diện người dùng về sự thay đổi này

4 Nghe Stream: Giao diện người dùng lắng nghe trạng thái mới thông qua Stream Khi có sự thay đổi, giao diện người dùng cập nhật giao diện tương ứng để phản ánh trạng thái mới

5 Hiển thị UI: Giao diện người dùng sẽ được cập nhật với trạng thái mới nhận được từ Bloc Các thành phần UI sẽ được cập nhật hoặc hiển thị dựa trên trạng thái hiện tại

6 Lặp lại quá trình: Quá trình này sẽ được lặp đi lặp lại khi có các Event mới được gửi từ UI hoặc nguồn dữ liệu khác Bloc tiếp tục xử lý Event, cập nhật trạng thái và gửi thông tin mới tới UI để cập nhật giao diện người dùng

1.2.2 Cách thức tổ chức và hoạt động của back-end

Khóa luận tốt nghiệp Công nghệ phần mềm 13

Hình 3 Đường đi của request và response trong NestJS

Khi một yêu cầu HTTP đến, nó sẽ được đi qua một pipeline xử lý yêu cầu Pipeline này bao gồm các middleware, interceptor và guards được áp dụng trên yêu cầu theo thứ tự đã được đăng ký

− Middleware: Middleware là các thành phần trung gian trong pipeline, chịu trách nhiệm xử lý yêu cầu và phản hồi trước khi chúng được chuyển đến controller hoặc action tương ứng Middleware có thể thực hiện các tác vụ như xác thực, xử lý lỗi, ghi log, kiểm tra quyền truy cập và nhiều hơn nữa Các middleware có thể được đăng ký trên toàn ứng dụng hoặc chỉ áp dụng cho một nhóm routes cụ thể

− Interceptor: Interceptor là các lớp decorator được áp dụng trên controller hoặc action để thực hiện các tác vụ xử lý trước và sau khi action được gọi Interceptor có thể thay đổi dữ liệu yêu cầu hoặc phản hồi, thực hiện xử lý bổ sung và áp dụng logic tùy chỉnh trước khi phản hồi được trả về cho client

Khóa luận tốt nghiệp Công nghệ phần mềm 14

− Guard: Guard được sử dụng để kiểm tra và quyết định việc tiếp tục xử lý yêu cầu Guard có thể kiểm tra quyền truy cập, xác thực người dùng, kiểm tra các điều kiện và hành động tùy chỉnh khác Nếu guard không cho phép yêu cầu tiếp tục, quá trình xử lý yêu cầu sẽ kết thúc và phản hồi tương ứng được trả về

PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ HỆ THỐNG

MÔ TẢ CÁC THÀNH PHẦN DỮ LIỆU CHÍNH

Các sản phẩm của nhãn hàng, gồm loại sản phẩm dùng để phân loại Một sản phẩm có thể có các tùy chọn để mua hàng

Các loại dùng để phân loại sản phẩm

Các tùy chọn của các sản phẩm như cách pha (nóng, lạnh), size (nhỏ, vừa, lớn), topping, đường, …

Chứa các thông tin của chi nhánh cửa hàng như tên, địa chỉ, … Một cửa hàng có thể thay đổi sửa đổi menu sản phẩm, loại sản phẩm, tùy chọn sản phẩm riêng bằng cách vô hiệu hóa từ menu chính Đơn hàng (order)

Các đơn hàng gồm các sản phẩm với các tùy chọn

Gồm 3 loại đơn hàng: Đơn hàng giao đi (delivery), đơn hàng đến lấy (pickup), và đơn hàng tại cửa hàng (in-store) Đối với đơn hàng delivery sẽ có thêm phí giao hàng

Nếu đơn hàng là của thành viên cửa hàng thì sẽ có thêm thông tin của thành viên và có thể có ưu đãi của thành viên được áp dụng

Tài khoản dùng để đăng nhập vào ứng dụng cửa hàng, được tạo và cấp bởi admin

Mỗi tài khoản sẽ định danh cho một cửa hàng và dùng để tạo và nhận đơn hàng cho cửa hàng đó

Khóa luận tốt nghiệp Công nghệ phần mềm 17

Tài khoản dùng để đăng nhập ứng dụng giao hàng được tạo và cung cấp bởi admin

Mỗi tài khoản dùng cho một tài xế và tài xế có thể xem và nhận đơn hàng để giao

Những đơn thanh toán online shipper sẽ nhận tiền giao hàng vào vào ví tài xế và có thể gửi yêu cầu rút tiền với một số tiền tối thiểu cụ thể

Là những người đã đăng ký thành công tài khoản trên ứng dụng mobile, sau khi đăng ký thành viên

Thành viên sẽ có một mã thành viên riêng được hệ thống dùng để tích điểm khi mua hàng dựa trên số tiền của đơn hàng

Khi mua hàng tại quầy sẽ dùng mã thành viên thông qua một barcode và cửa hàng sẽ quét để lấy mã

Là các cấp bậc của thành viên, được tính toán dựa trên tổng số điểm mà thành viên tích lũy được Cấp bậc càng cao thì sẽ nhận được nhiều phúc lợi và ưu đãi hơn Ưu đãi (voucher)

Các mã khuyến mãi được cung cấp từ phía cửa hàng, mỗi mã khuyến mãi sẽ có điều kiện để được áp dụng và các tính ưu đãi khác nhau Được admin tạo và gán cho thành viên thông qua cấp bậc

Khi mua tại cửa hàng, để áp dụng ưu đãi thì nhân viên sẽ quét

QR code của ưu đãi

Là các chương trình cung cấp từ phía cửa hàng giúp các thành viên đổi khuyến mãi từ cửa hàng, mỗi chương trình sẽ có một số điểm quy đổi nhất định Ưu đãi từ chương trình có thể áp dụng cho sản phẩm của cửa

Khóa luận tốt nghiệp Công nghệ phần mềm 18 hàng hoặc cho đối tác của cửa hàng Được admin tạo và gán cho thành viên thông qua cấp bậc Đơn hàng (order)

Các đơn hàng gồm các sản phẩm với các tùy chọn

Gồm 3 loại đơn hàng: Đơn hàng giao đi (delivery), đơn hàng đến lấy (pickup), và đơn hàng tại cửa hàng (in-store) Đối với đơn hàng delivery sẽ có thêm phí giao hàng

Nếu đơn hàng là của thành viên cửa hàng thì sẽ có thêm thông tin của thành viên và có thể có ưu đãi của thành viên được áp dụng

Là các nhân viên thuộc những cửa hàng cụ thể, thông tin các nhân viên có thể được thêm vào thông tin các đơn hàng với mục đích để tra cứu trách nhiệm trên các đơn hàng Đối tác (partner)

Là những thương hiệu bán hàng khách hợp tác với cửa hàng, muốn tìm thêm khách hàng thông qua cung cấp ưu đãi thương hiệu của họ cho cửa hàng

Các ưu đãi của đối tác sẽ được thành viên quy đổi thông qua các chương trình ưu đãi

Table 1 Các thành phần dữ liệu chính

LƯỢC ĐỒ USECASE

− Người dùng phải đăng ký/đăng nhập ứng dụng qua mã OTP đến số điện thoại

− Thành viên có thể xem danh sách sản phẩm theo loại

− Thành viên có thể xem chi tiết sản phẩm và các lựa chọn của một sản phẩm

− Thành viên có thể xem danh sách các cửa hàng và tìm kiếm theo tên, địa chỉ

Khóa luận tốt nghiệp Công nghệ phần mềm 19

− Thành viên có thể xem chi tiết của một cửa hàng

− Thành viên có thể xem cấp bậc, điểm tích lũy của bản thân và lịch sử thay đổi điểm

− Thành viên có thể xem danh sách và chi tiết các chương trình ưu đãi và quy đổi điểm lấy ưu đãi từ chương trình

− Thành viên có thể thêm sản phẩm vào giỏ hàng và thực hiện đặt hàng

− Thành viên có thể xem danh sách các ưu đãi của bản thân và áp dụng vào giỏ hàng nếu đủ điều kiện của ưu đãi

− Thành viên có thể xem lịch sử đơn hàng theo trạng thái đơn hàng

− Thành viên có thể xem các sản phẩm được gợi ý cho bản thân

− Thành viên có thể xem các thông báo liên quan tới ưu đãi, đơn hàng

Khóa luận tốt nghiệp Công nghệ phần mềm 20

Khóa luận tốt nghiệp Công nghệ phần mềm 21

Hình 5 Use case ứng dụng thành viên

− Nhân viên phải đăng nhập vào ứng dụng bằng tài khoản mật khẩu của cửa hàng

− Nhân viên có thể xem danh sách sản phẩm

− Nhân viên có thể thực hiện tạo đơn hàng cho khách hàng hoặc thành viên của cửa hàng

− Nhân viên có thể xem danh sách ưu đãi còn hiệu lực của thành viên đó

− Nhân viên có thể gợi ý ưu đãi có thể áp dụng cho đơn hàng

− Nhân viên có thể xem danh sách đơn hàng của cửa hàng

− Nhân viên có thể cập nhật trạng thái đơn hàng

Khóa luận tốt nghiệp Công nghệ phần mềm 22

Hình 6 Use case ứng dụng cửa hàng

− Tài xế có thể nhận danh sách đơn hàng đang chờ giao

− Tài xế có thể nhận đơn để giao và xem chi tiết đơn hàng

− Tài xế có thể xem danh sách đơn hàng đang giao và xem chi tiết đơn hàng

− Tài xế có thể xem lịch sử các đơn hàng đã giao

− Tài xế có thể thay đổi trạng thái giao hàng của đơn hàng

− Tài xế có thể yêu cầu rút tiền từ ví tài xế và xem lịch sử rút tiền

Khóa luận tốt nghiệp Công nghệ phần mềm 23

Hình 7 Use case ứng dụng giao hàng

− Admin có thể quản lý các thông tin liên quan tới sản phẩm: sản phẩm, phân loại sản phẩm, tùy chọn sản phẩm

− Admin có thể quản lý các thông tin liên quan tới cửa hàng: cửa hàng, nhân viên cửa hàng

− Admin có thể quản lý các thông tin liên quan tới người dùng: người dùng và cấp bạc

− Admin có thể xem lịch sử đơn hàng và cập nhật trạng thái đơn hàng

− Admin có thể quản lý các thông tin liên quan tới ưu đãi: ưu đãi, đổi ưu đãi và đối tác ưu đãi

− Admin có thể quản lý các thông tin liên quan tới tài khoản: tài khoản admin, phân quyền admin, tài khoản cửa hàng, tài khoản tài xế

Khóa luận tốt nghiệp Công nghệ phần mềm 24

− Admin có thể xe nhiều số liệu thống kê số liệu về doanh thu, doanh số, số đơn hàng, số thành viên,… b

Khóa luận tốt nghiệp Công nghệ phần mềm 25

Khóa luận tốt nghiệp Công nghệ phần mềm 26

Hình 8 Use case ứng dụng quản trị

ĐẶC TẢ USECASE

2.3.1 Module thành viên Đặc tả use case Đăng ký (Register)

− Mô tả: Cho phép đăng ký tài khoản mới

B1: Hệ thống hiển thị trang đăng nhập

B2: Khách hàng bấm nút đăng ký tài khoản

B3: Hệ thống hiển thị thông tin đăng ký gồm số điện thoại và các thông tin khác

B4: Khách hàng điền đầy đủ thông tin thành viên và bấm đăng ký

B5: Hệ thống chuyển sang màn hình nhập mã OTP 6 số

B6: Khách hàng nhận mã OTP qua SMS số điện thoại điền trong thông tin tài khoản và nhập vào input

B7: Nhập OTP bấm xác nhận để thực hiện đăng ký

− Tiền điều kiện: Khách hàng phải bấm nút đăng ký

1 Nếu nhập thông tin không hợp lệ, sẽ báo lỗi và nhập lại

2 Nếu nhập thông tin hợp lệ, hệ thống mới chuyển sang màn hình xác nhận

3 Nếu nhập mã OTP không đúng sẽ báo lỗi và nhập lại, tài khoản được duy trì 10p cho việc xác nhận mã OTP

4 Nếu nhập mã OTP đúng sẽ thông báo đăng ký thành công và chuyển sang màn hình chính Đặc tả use case Đăng nhập (Login)

− Mô tả: Cho phép đăng nhập tài khoản

Khóa luận tốt nghiệp Công nghệ phần mềm 27

B1: Hệ thống hiển thị trang đăng nhập

B2: Khách hàng nhập số điện thoại của tài khoản và bấm đăng nhập

B3: Hệ thống chuyển sang màn hình nhập mã OTP 6 số

B4: Khách hàng nhận mã OTP qua SMS số điện đăng nhập và nhập OTP vào input

B5: Nhập OTP bấm xác nhận để thực hiện đăng ký

1 Nếu nhập mã OTP không đúng sẽ báo lỗi và nhập lại

2 Nếu nhập mã OTP đúng sẽ chuyển sang màn hình chính Đặc tả use case Danh sách sản phẩm (View product list)

− Mô tả: Cho phép người dùng xem Danh sách sản phẩm

− Actor: Khách hàng (Customer), Thành viên (Member)

B1: Khi trong màn hình ứng dụng, bấm vào mục Đặt hàng ở dưới menu để xem danh sách sản phẩm

B2: Khi bấm vào một sản phẩm, mở popup hiển thị thông tin chi tiết của sản phẩm cùng với các tùy chọn khi mua sản phẩm

B3: Trong popup chi tiết của sản phẩm có thể chọn các tùy chọn, số lượng sản phẩm và chọn thêm vào giỏ hàng

B1: Ở giữa màn hình danh sách sản phẩm, sẽ có danh sách sản phẩm Gợi ý cho bạn

B2: Bấm vào một sản phẩm trong gợi ý để hiện popup chi tiết sản phẩm tương tự như trên

− Tiền điều kiện: Cần đăng nhập để thêm sản phẩm vào giỏ hàng, nếu chưa đăng nhập thì sẽ bị yêu cầu đăng nhập để thực hiện

Khóa luận tốt nghiệp Công nghệ phần mềm 28

− Hậu điều kiện: Không Đặc tả use case Danh sách cửa hàng (View store list)

− Mô tả: Cho phép người dùng xem Danh sách cửa hàng

− Actor: Khách hàng (Customer), Thành viên (Member)

B1: Khi trong màn hình ứng dụng, bấm vào mục Cửa hàng ở dưới menu để xem danh sách cửa hàng

B2: Khi bấm vào một cửa hàng, mở popup hiển thị thông tin chi tiết của cửa hàng

B3: Trong popup chi tiết cửa hàng, bấm vào nút Đặt hàng tại cửa hàng

B4: Chuyển qua trang danh sách sản phẩm

B1: Ở trên cùng màn hình danh sách cửa hàng, bấm vào ô input search cửa hàng

B2: Nhập tên cửa hàng và xem danh sách kết quả bên dưới

− Tiền điều kiện: Cần đăng nhập để hiển thị nút Chọn cửa hàng để đặt hàng

− Hậu điều kiện: Sau khi chọn cửa hàng để đặt hàng, chuyển qua màn hình danh sách sản phẩm phải tải lại menu theo cửa hàng vừa chọn Đặc tả use case Thông tin thành viên (View member info)

− Mô tả: Thành viên xem thông tin thành viên của mình

B1: Khi trong màn hình ứng dụng, bấm vào mục Ưu đãi ở dưới menu

B2: Trên cùng có thẻ thành viên gồm các thông tin: tên thành viên, mã thành viên + barcode (dùng cho việc tích điểm), cấp bậc, số điểm hiện tại

B3: Bấm vào mục Lịch sử điểm bên dưới, mở màn hình lịch sử thay đổi điểm

Khóa luận tốt nghiệp Công nghệ phần mềm 29

B1: Ở màn hình trang chủ cũng có thẻ thành viên được thu gọn còn tên thành viên, số điểm và cấp bậc

B2: Bấm vào tích điểm để mở rộng hiển thị của thẻ thành viên

B3: Thẻ sau khi mở rộng sẽ gồm mã thành viên và barcode của mã thành viên dùng cho việc tích điểm

− Tiền điều kiện: Đối với người dùng chưa đăng nhập, trong màn hình sẽ có thông tin quyền lợi của các cấp bậc thành viên khi đăng ký thành viên của cửa hàng

− Hậu điều kiện: Trong màn hình lịch sử điểm, điểm sẽ được cộng khi mua hàng và bị trừ khi sử dụng đổi ưu đãi hoặc điểm bị hết hạn (hướng phát triển sau này) Đặc tả use case Danh sách ưu đãi (View voucher list)

− Mô tả: Thành viên xem danh sách ưu đãi

B1: Trong màn hình ưu đãi, kéo xuống mục Phiếu ưu đãi của bạn, bạn sẽ thấy danh sách ưu đãi của bản thân

B2: Bấm vào Xem tất cả ở bên phải tiêu đề, mở màn hình danh sách tất cả ưu đãi của bạn

B3: Bấm vào một ưu đãi, mở popup thông tin chi tiết của ưu đãi

B4: Bấm vào Sử dụng ưu đãi để áp dụng ưu đãi vào giỏ hàng hiện tại

B1: Ở màn hình trang chủ, bấm vào icon voucher ở trên cùng màn hình cũng có thể mở danh sách ưu đãi

1 Thành viên phải có ưu đãi

2 Thành viên phải có sản phẩm trong giỏ hàng thì chọn Sử dụng ưu đãi mới được áp dụng, còn không thì sẽ được chuyển tới màn hình Đặt hàng để thêm món vào giỏ hàng

Khóa luận tốt nghiệp Công nghệ phần mềm 30

− Hậu điều kiện: Sau khi chọn Sử dụng ưu đãi, hệ thống sẽ kiểm tra đơn hàng có đủ điều để áp dụng ưu đãi hay không, nếu không thì sẽ thông báo giỏ hàng không thể áp dụng ưu đãi Đặc tả use case Giới thiệu ưu đãi (View voucher banner)

− Mô tả: Thành viên xem slider giới thiệu ưu đãi

B1: Ở màn hình trang chủ, bên dưới thẻ thành viên sẽ có slider các banner của ưu đãi bản thân đang sở hữu

B2: Bấm vào một banner sẽ chuyển đến trang danh sách ưu đãi của bạn và mở popup chi tiết của ưu đãi xuất hiện trên banner

B3: Ta có thể sử dụng ưu đãi như use case trên

− Hậu điều kiện: Không Đặc tả use case Danh sách chương trình ưu đãi (View promotion list)

− Mô tả: Thành viên xem Danh sách chương trình ưu đãi

B1: Ở màn hình Ưu đãi, bấm chọn mục Đổi Bean/Đổi điểm để mở màn hình danh sách các chương trình ưu đãi

B2: Trong màn hình danh sách chương trình ưu đãi, gồm có 3 danh sách chương trình ưu đãi là nổi bật, từ cửa hàng và từ đối tác

B3: Bấm chọn một chương trình ưu đãi để mở popup chi tiết của chương trình

B4: Trong popup chi tiết, bên dưới cùng ta bấm Đổi Bean để thực hiện đổi ưu đãi

Khóa luận tốt nghiệp Công nghệ phần mềm 31

B1: Trong màn hình ưu đãi, cuộn xuống dưới cùng cũng có danh sách ngắn của các chương trình ưu đãi tên Đổi Bean

B2: Bấm chọn vào Xem tất cả để mở màn hình danh sách các chương trình ưu đãi tương tự như trên hoặc bấm chọn 1 ưu đãi trong danh sách ngắn để mở màn hình ưu đãi và mở popup chi tiết của chương trình đó lên

2 Khi thực hiện Đổi Bean trong 1 chương trình, số điểm (Bean) hiện tại phải lớn hơn hoặc bằng số Bean của chương trình

3 Sau khi đổi Bean thành công thì hệ thống sẽ trừ số Bean của bạn tương đương với số Bean của chương trình

4 Sau khi đổi thành công thì ưu đãi sẽ được lưu vào danh sách ưu đãi của bản thân Đặc tả use case Giỏ hàng (View cart)

− Mô tả: Thành viên xem Giỏ hàng

B1: Bên trên bottom menu của app, có một khung nội dung dùng để mở màn hình giỏ hàng

B2: Khi mở màn hình gồm 2 sự lựa chọn là giao hàng và đến lấy, nếu chọn mua đến lấy thì phải chọn cửa hàng nhận hàng trước

B3: Trong giỏ hàng ta có thể thay đổi số lượng, tùy chọn của sản phẩm trong giỏ cũng như là xóa sản phẩm

B4: Có thể chỉnh sửa thông tin người nhận hàng

B5: Bấm vào phần Voucher để mở màn hình danh sách ưu đãi và chọn 1 ưu đãi

B6: Bấm đặt hàng để thực hiện đặt hàng

Khóa luận tốt nghiệp Công nghệ phần mềm 32

− Tiền điều kiện: Đối với giao hàng giao đi, cần nhập/chọn địa chỉ giao hàng của bản thân Đối với giao hàng mang đi, cần phải chọn một cửa hàng để đến nhận hàng

1 Nếu thêm voucher, hệ thống sẽ kiểm tra xem giỏ hàng hiện tại có đạt điều kiện của ưu đãi hay không, nếu có thì áp dụng, không thì thông báo lỗi Đặc tả use case Lịch sử đơn hàng (View product history list)

− Mô tả: Thành viên xem Lịch sử đơn hàng

B1: Ở màn hình Khác, ta chọn mục Lịch sử đơn hàng

B2: Ở lịch sử đơn hàng, các đơn hàng được hiển thị theo các tab trạng thái của đơn hàng, gồm Đang thực hiện, Đã hoàn tất và Đã hủy Mặc định khi mở sẽ ở mục Đang thực hiện

B3: Bấm vào một đơn hàng sẽ mở popup chi tiết của đơn hàng đó

B4: Bấm vào các icon ngôi sao để mở popup đánh giá đơn hàng đó nếu đơn chưa được đánh giá

B5: Bấm vào nút Đặt lại để sửa giỏ hàng hiện tại giống các sản phẩm trong đơn cũ này

− Hậu điều kiện: Không Đặc tả use case Danh sách thông báo (View notification list)

− Mô tả: Thành viên xem danh sách thông báo của bản thân

B1: Ở màn hình trang chủ, bấm chọn icon hình cái chuông ở góc trên bên phải để mở màn hình danh sách thông báo của bản thân

Khóa luận tốt nghiệp Công nghệ phần mềm 33

B2: Bấm vào một thông báo để mở popup chi tiết của thông báo

B3: Trong popup chi tiết, bấm vào nút trong popup sẽ chuyển tiếp đến màn hình khác tùy vào loại thông báo

B4: Ở góc trên màn hình danh sách thông báo có 1 nút dùng để đánh dấu đã đọc tất cả thông báo

B1: Sau khi thực hiện đặt đơn hàng theo 1 cách nào đó (qua app, tại quầy), hệ thống sẽ gửi 1 thông báo review đơn hàng

B2: Sau khi bạn vừa có 1 ưu đãi mới thì hệ thống cũng gửi thông báo cho ưu đãi đó

B3: Sau khi vừa có chương trình ưu đãi mới dành cho bạn thì hệ thống cũng gửi thông báo chương trình đó cho bạn

1 Danh sách thông báo chỉ chứa tối đa 20 thông báo mới nhất

2 Các thông báo đã đọc có nền màu trắng và thông báo chưa đọc có nền màu vàng nhạt

1 Sau khi nhấn vào nút trong chi tiết của thông báo, tùy vào loại thông báo sẽ chuyển đến màn hình khác nhau:

+ Nếu là thông báo của đơn hàng thì chuyển đến trang chi tiết của đơn hàng và mở popup review đơn hàng (nếu chưa review)

+ Nếu là thông báo của ưu đãi thì chuyển đến trang màn hình danh sách ưu đãi và mở popup của ưu đãi đó

+ Nếu là thông báo của chương trình ưu đãi thì chuyển đến trang màn hình danh sách chương trình ưu đãi và mở popup chi tiết của chương trình đó

2.3.2 Module bán hàng Đặc tả use case Đăng nhập (Login)

− Mô tả: Cho phép nhân viên đăng nhập

Khóa luận tốt nghiệp Công nghệ phần mềm 34

B1: Hệ thống ở màn hình đăng nhập

B2: Nhập username và mật khẩu và bấm đăng nhập

B3: Hệ thống trả về thông báo thành công và mở màn hình trang chủ bán hàng

1 Nếu username hoặc mật khẩu không chính xác, sẽ có thông báo Tài khoản hoặc mật khẩu không chính xác và yêu cầu nhập lại tài khoản Đặc tả use case Danh sách sản phẩm của cửa hàng (View store product list)

− Mô tả: Cho phép người bán hàng xem danh sách sản phẩm

− Actor: Nhân viên bán hàng (Salesperson)

B1: Khi trong màn hình ứng dụng, bấm vào mục Đặt hàng ở dưới menu để xem danh sách sản phẩm

B2: Khi bấm vào một sản phẩm, mở popup hiển thị thông tin chi tiết của sản phẩm cùng với các tùy chọn khi mua sản phẩm

B3: Trong popup chi tiết của sản phẩm có thể chọn các tùy chọn, số lượng sản phẩm và chọn thêm vào giỏ hàng

− Hậu điều kiện: Không Đặc tả use case Tạo nhiều giỏ hàng (Create multi cart)

− Mô tả: Người bán có thể quản lý nhiều đơn hàng

− Actor: Nhân viên bán hàng (Salesperson)

Khóa luận tốt nghiệp Công nghệ phần mềm 35

B1: Ở màn hình chính, ta thêm người mua hàng bằng ô input trên cùng, có thể nhập tay tên của khách hàng hoặc quét mã QR để lấy mã thành viên

B2: Chọn Thêm thì ở màn hình sẽ tạo một giỏ hàng trống cho người mua đó và mỗi giỏ hàng là một tab trên giao diện với các sản phẩm trong giỏ là riêng biệt

B3: Bấm icon X trên tab để xóa bỏ cart

− Hậu điều kiện: Không Đặc tả use case Thêm sản phẩm vào giỏ hàng (View cart)

− Mô tả: Người bán thêm các sản phẩm vào giỏ hàng

− Actor: Nhân viên bán hàng (Salesperson)

B1: Ở màn hình danh sách sản phẩm, nhân viên chọn vào sản phẩm để mở màn hình chi tiết của sản phẩm

B2: Chỉnh sửa số lượng và tùy chọn của sản phẩm và bấm thêm vào giỏ hàng B3: Thêm voucher bằng cách quét QR code của ưu đãi hoặc nhập mã ưu đãi

B4: Bấm đặt hàng để thực hiện đặt hàng

− Hậu điều kiện: Không Đặc tả use case Xem lịch sử đơn hàng của cửa hàng (View order history)

− Mô tả: Người bán xem lịch sử đơn hàng của cửa hàng

− Actor: Nhân viên bán hàng (Salesperson)

B1: Mở màn hình Đơn hàng để xem các đơn hàng theo lịch sử đơn

B2: Lịch sử đơn hàng được hiển thị theo trạng thái của đơn hàng: Đang xử lý, Đã hoàn thành và Đã hủy

B3: Nhấn chọn Tab tên trạng thái để chuyển xem các đơn hàng theo trạng thái tương đương

Khóa luận tốt nghiệp Công nghệ phần mềm 36

B4: Bấm vào một đơn hàng để xem chi tiết đơn hàng đó

2.3.3 Module giao hàng Đặc tả use case Đăng nhập (Login)

− Mô tả: Cho phép đăng nhập tài khoản

− Actor: Nhân viên giao hàng (Shipper)

B1: Hệ thống hiển thị trang đăng nhập

B2: Tài xế nhập số điện thoại đã cung cấp cho admin và bấm đăng nhập B3: Hệ thống chuyển sang màn hình nhập mã OTP 6 số

B4: Tài xế nhận mã OTP qua SMS số điện đăng nhập và nhập OTP vào input B5: Nhập OTP bấm xác nhận để thực hiện đăng ký

1 Nếu nhập mã OTP không đúng sẽ báo lỗi và nhập lại

2 Nếu nhập mã OTP đúng sẽ chuyển sang màn hình chính Đặc tả use case Nhận đơn hàng mới

− Mô tả: Nhận đơn hàng mới đang chờ giao hàng

− Actor: Nhân viên giao hàng (Shipper)

B1: Mở màn hình nhận đơn hàng mới

B2: Đợi đơn hàng mới hoặc chọn đơn đã có sẵn

B3: Bấm chọn vào đơn hàng để nhận đơn

Khóa luận tốt nghiệp Công nghệ phần mềm 37

1 Thông báo nhận đơn thành công

2 Thông báo nhận đơn thất bại (vì đơn hàng đã bị nhận trước hoặc hủy) Đặc tả use case Hiển thị đơn hàng đang giao

− Mô tả: Xem cách đơn hàng đang giao

− Actor: Nhân viên giao hàng (shipper)

B1: Mở màn hình Đơn hàng để xem các đơn hàng theo lịch sử đơn

B2: Chọn Đơn đang giao để xem danh sách các đơn đang giao

− Hậu điều kiện: Không Đặc tả use case Đổi trạng thái đơn hàng

− Mô tả: Đổi trạng thái của đơn hàng đang giao

− Actor: Nhân viên giao hàng (shipper)

B1: Mở màn hình Đơn hàng để xem các đơn hàng theo lịch sử đơn

B2: Chọn Đơn đang giao để xem danh sách các đơn đang giao

B3: Chọn vào một đơn đang giao

B4: Chọn trạng thái mới cho đơn

B5: Nếu đã giao đơn, cần chụp ảnh xác nhận đã giao

B6: Thông báo trạng thái cập nhật

− Hậu điều kiện: Không Đặc tả use case Hiển thị lịch sử đơn hàng đã giao

− Mô tả: Xem lịch sử đơn hàng đã giao

− Actor: Nhân viên giao hàng (shipper)

Khóa luận tốt nghiệp Công nghệ phần mềm 38

B1: Mở màn hình Đơn hàng để xem các đơn hàng theo lịch sử đơn

B2: Chọn Đơn đã giao để xem danh sách các đơn đã giao

− Hậu điều kiện: Không Đặc tả use case Yêu cầu rút tiền từ ví

− Mô tả: Yêu cầu rút tiền từ ví

− Actor: Nhân viên giao hàng (shipper)

B1: Vào màn hình Tài khoản

B2: Bấm nút yêu cầu rút tiền bên số tiền trong ví

B3: Nhập số tiền cần rút, phải đảm bảo mức tối thiểu

B4: Bấm Rút tiền để gửi yêu cầu rút tiền

1 Nếu số tiền trong ví không có đủ số tiền cần rút hoặc đã có gửi yêu cầu rút trước đó, thông báo lỗi Đặc tả use case Hiển thị lịch sử yêu cầu rút tiền

− Mô tả: Xem lịch sử yêu cầu rút tiền

− Actor: Nhân viên giao hàng (shipper)

B1: Vào màn hình Tài khoản

B2: Cuộn xuống để xem lịch sử các yêu cầu rút tiền

Khóa luận tốt nghiệp Công nghệ phần mềm 39

2.3.4 Module quản trị Đặc tả use case Đăng nhập (Login)

− Mô tả: Cho phép nhân viên đăng nhập

B1: Hệ thống ở màn hình đăng nhập

B2: Nhập username và mật khẩu và bấm đăng nhập

B3: Hệ thống trả về thông báo thành công và mở màn hình trang chủ

1 Nếu username hoặc mật khẩu không chính xác, sẽ có thông báo Tài khoản hoặc mật khẩu không chính xác và yêu cầu nhập lại tài khoản Đặc tả use case Quản lý sản phẩm (Manage product)

− Mô tả: Cho phép Admin quản lý sản phẩm

B1: Ở bên sidebar, mở rộng tab Product và chọn Product list

B2: Màn hình danh sách sản phẩm với phân trang

B3: Click nút New để mở dialog tạo product mới

B4: Click vào icon edit ở cuối dòng để mở trang chỉnh sửa product

B5: Click vào icon delete ở cuối dòng để xóa (xóa mềm)

− Tiền điều kiện: Các input khi tạo hoặc sửa product sẽ được validate, nếu không hợp lệ sẽ có text lỗi dưới input

− Hậu điều kiện: Khi xóa sẽ mở dialog confirm có xóa hay không Đặc tả use case Quản lý loại sản phẩm (Manage product category)

− Mô tả: Cho phép Admin quản lý loại sản phẩm

Khóa luận tốt nghiệp Công nghệ phần mềm 40

B1: Ở bên sidebar, mở rộng tab Product và chọn Product category

B2: Màn hình danh sách loại sản phẩm với phân trang

B3: Click nút New để mở dialog tạo loại sản phẩm mới

B4: Click vào icon edit ở cuối dòng để mở trang chỉnh sửa loại sản phẩm

B5: Click vào icon delete ở cuối dòng để xóa (xóa mềm)

− Tiền điều kiện: Các input khi tạo hoặc sửa loại sản phẩm sẽ được validate, nếu không hợp lệ sẽ có text lỗi dưới input

− Hậu điều kiện: Khi xóa sẽ mở dialog confirm có xóa hay không Đặc tả use case Quản lý tùy chọn sản phẩm (Manage product option)

− Mô tả: Cho phép Admin quản lý tùy chọn sản phẩm

B1: Ở bên sidebar, mở rộng tab Product và chọn Product option

B2: Màn hình danh sách tùy chọn sản phẩm với phân trang

B3: Click nút New để mở dialog tạo tùy chọn sản phẩm mới

B4: Click vào icon edit ở cuối dòng để mở trang chỉnh sửa tùy chọn sản phẩm B5: Click vào icon delete ở cuối dòng để xóa (xóa mềm)

− Tiền điều kiện: Các input khi tạo hoặc sửa tùy chọn sản phẩm sẽ được validate, nếu không hợp lệ sẽ có text lỗi dưới input

− Hậu điều kiện: Khi xóa sẽ mở dialog confirm có xóa hay không Đặc tả use case Quản lý cửa hàng (Manage store)

− Mô tả: Cho phép Admin quản lý cửa hàng

B1: Ở bên sidebar, mở rộng tab Store

Khóa luận tốt nghiệp Công nghệ phần mềm 41

B2: Màn hình danh sách cửa hàng với phân trang

B3: Click nút New để mở dialog tạo cửa hàng mới

B4: Click vào icon edit ở cuối dòng để mở trang chỉnh sửa cửa hàng

B5: Click vào icon delete ở cuối dòng để xóa (xóa mềm)

− Tiền điều kiện: Các input khi tạo hoặc sửa cửa hàng sẽ được validate, nếu không hợp lệ sẽ có text lỗi dưới input

− Hậu điều kiện: Khi xóa sẽ mở dialog confirm có xóa hay không Đặc tả use case Quản lý thành viên (Manage member)

− Mô tả: Cho phép Admin quản lý thành viên

B1: Ở bên sidebar, mở rộng tab Member

B2: Màn hình danh sách thành viên với phân trang

B3: Click vào icon delete ở cuối dòng để xóa (xóa mềm)

− Hậu điều kiện: Khi xóa sẽ mở dialog confirm có xóa hay không Đặc tả use case Quản lý cấp bậc (Manage rank)

− Mô tả: Cho phép Admin quản lý cấp bậc

B1: Ở bên sidebar, mở rộng tab Member và chọn Member rank

B2: Màn hình danh sách cấp bậc với phân trang

B3: Click nút New để mở dialog tạo cấp bậc mới

B4: Click vào icon edit ở cuối dòng để mở trang chỉnh sửa cấp bậc

B5: Click vào icon delete ở cuối dòng để xóa (xóa mềm)

Khóa luận tốt nghiệp Công nghệ phần mềm 42

− Tiền điều kiện: Các input khi tạo hoặc sửa cấp bậc sẽ được validate, nếu không hợp lệ sẽ có text lỗi dưới input

5 Để xóa cần không có thành viên nào thuộc cấp bậc đó để

6 Khi xóa sẽ mở dialog confirm có xóa hay không Đặc tả use case Quản lý ưu đãi (Manage voucher)

− Mô tả: Cho phép Admin quản lý ưu đãi

B1: Ở bên sidebar, mở rộng tab Voucher

B2: Màn hình danh sách ưu đãi với phân trang

B3: Click nút New để mở dialog tạo ưu đãi mới

B4: Click vào icon edit ở cuối dòng để mở trang chỉnh sửa ưu đãi

B5: Click vào icon delete ở cuối dòng để xóa (xóa mềm)

B6: Click vào nút Publish để gán ưu đãi cho thành viên

− Tiền điều kiện: Các input khi tạo hoặc sửa ưu đãi sẽ được validate, nếu không hợp lệ sẽ có text lỗi dưới input

− Hậu điều kiện: Khi xóa sẽ mở dialog confirm có xóa hay không Đặc tả use case Quản lý chương trình ưu đãi (Manage promotion)

− Mô tả: Cho phép Admin quản lý chương trình ưu đãi

B1: Ở bên sidebar, mở rộng tab Promotion

B2: Màn hình danh sách chương trình ưu đãi với phân trang

B3: Click nút New để mở dialog tạo chương trình ưu đãi mới

B4: Click vào icon edit ở cuối dòng để mở trang chỉnh sửa chương trình ưu đãi

B5: Click vào icon delete ở cuối dòng để xóa (xóa mềm)

Khóa luận tốt nghiệp Công nghệ phần mềm 43

B6: Click vào nút Publish để gán chương trình ưu đãi cho thành viên

− Tiền điều kiện: Các input khi tạo hoặc sửa chương trình ưu đãi sẽ được validate, nếu không hợp lệ sẽ có text lỗi dưới input

− Hậu điều kiện: Khi xóa sẽ mở dialog confirm có xóa hay không Đặc tả use case Quản lý đơn hàng (Manage order)

− Mô tả: Cho phép Admin quản lý đơn hàng

B1: Ở bên sidebar, mở rộng tab Order history

B2: Màn hình danh sách lịch sử đơn hàng theo trạng thái đơn hàng

B3: Cập nhật trạng thái đơn hàng bằng cách chọn trong select box của đơn hàng

LƯỢC ĐỒ SEQUENCE

Lược đồ mô tả luồng hoạt động các chức năng chính của hệ thống:

2.4.1 Đặt hàng giao tận nơi

Thanh toán bằng tiền mặt

Khóa luận tốt nghiệp Công nghệ phần mềm 44

Giải thích các bước chạy của chương trình:

− Sau khi thêm sản phẩm vào giỏ và bấm đặt hàng, app đặt hàng của Thành viên gọi API tạo đơn hàng đến server

Khóa luận tốt nghiệp Công nghệ phần mềm 45

− Server lấy từ database thông tin các sản phẩm, ưu đãi, tùy chọn trong giỏ hàng để xác nhận dữ liệu đơn hàng có đúng đắn không

− Nếu dữ liệu đơn hàng đúng đắn, thực hiện tính toán lại các số tiền và lưu lại vào database

− Trả response về cho ứng dụng thành viên khi hoàn tất lưu đơn hàng

− Đồng thời, gửi socket đến ứng dụng cửa hàng và ứng dụng giao hàng theo thời gian thực để cửa hàng và tài xế biết có đơn mới

− Tài xế nhận đơn hàng bằng cách gọi API đến server, server kiểm tra tình trạng đơn hàng để xác nhận chưa ai nhận và lưu thông tin tài xế vào đơn hàng

− Sau khi lưu thành công gửi socket đến các tài xế khác để xóa đơn hàng đó khỏi hàng đợi Gửi socket đến cửa hàng để biết đã có Gửi socket đến ứng dụng thành viên để thông báo trạng thái đơn hàng

− Khi tài xế cập nhật trạng thái đơn đã giao thành công, cửa hàng xác nhận đơn đã thành công và cập nhật trạng thái đơn đã hoàn tất và lưu vào database Gửi socket đến ứng dụng Thành viên trạng thái mới

Hình 9 Sequence diagram - Đặt hàng giao về thanh toán bằng tiền mặt

Khóa luận tốt nghiệp Công nghệ phần mềm 46

Hình 10 Sequence diagram - Đặt hàng giao về thanh toán bằng Momo

Khóa luận tốt nghiệp Công nghệ phần mềm 47

Giải thích các bước chạy của chương trình:

− Sau khi thêm sản phẩm vào giỏ và bấm đặt hàng, app đặt hàng của Thành viên gọi API tạo đơn hàng đến server

− Server lấy từ database thông tin các sản phẩm, ưu đãi, tùy chọn trong giỏ hàng để xác nhận dữ liệu đơn hàng có đúng đắn không

− Nếu dữ liệu đơn hàng đúng đắn, thực hiện tính toán lại các số tiền và lưu lại vào database

− Trả response về cho ứng dụng thành viên khi hoàn tất lưu đơn hàng

− Người dùng yêu cầu thanh toán Momo và gọi API đến server

− Server request đến Momo tạo đơn thanh toán với số tiền của đơn hàng, server lưu yêu cầu thanh toán trả về từ Momo và response lại cho thành viên đường dẫn thanh toán

− Khi người dùng thanh toán thành công, Momo gọi 1 api IPN được cung cấp trước đó đến server để cập nhật lại tình trạng thanh toán của đơn hàng

− Đồng thời, gửi socket đến ứng dụng cửa hàng và ứng dụng giao hàng theo thời gian thực để cửa hàng và tài xế biết có đơn mới

− Tài xế nhận đơn hàng bằng cách gọi API đến server, server kiểm tra tình trạng đơn hàng để xác nhận chưa ai nhận và lưu thông tin tài xế vào đơn hàng

− Sau khi lưu thành công gửi socket đến các tài xế khác để xóa đơn hàng đó khỏi hàng đợi Gửi socket đến cửa hàng để biết đã có Gửi socket đến ứng dụng thành viên để thông báo trạng thái đơn hàng

− Khi tài xế cập nhật trạng thái đơn đã giao thành công, cửa hàng xác nhận đơn đã thành công và cập nhật trạng thái đơn đã hoàn tất và lưu vào database Gửi socket đến ứng dụng Thành viên trạng thái mới

Khóa luận tốt nghiệp Công nghệ phần mềm 48

Hình 11 Sequence diagram - Đặt hàng đến cửa hàng lấy

Khóa luận tốt nghiệp Công nghệ phần mềm 49

Giải thích các bước chạy của chương trình:

− Sau khi thêm sản phẩm vào giỏ và bấm đặt hàng, app đặt hàng của Thành viên gọi API tạo đơn hàng đến server

− Server lấy từ database thông tin các sản phẩm, ưu đãi, tùy chọn trong giỏ hàng để xác nhận dữ liệu đơn hàng có đúng đắn không

− Nếu dữ liệu đơn hàng đúng đắn, thực hiện tính toán lại các số tiền và lưu lại vào database

− Trả response về cho ứng dụng thành viên khi hoàn tất lưu đơn hàng

− Người dùng yêu cầu thanh toán Momo và gọi API đến server

− Server request đến Momo tạo đơn thanh toán với số tiền của đơn hàng, server lưu yêu cầu thanh toán trả về từ Momo và response lại cho thành viên đường dẫn thanh toán

− Khi người dùng thanh toán thành công, Momo gọi 1 api IPN được cung cấp trước đó đến server để cập nhật lại tình trạng thanh toán của đơn hàng

− Đồng thời, gửi socket đến ứng dụng cửa hàng theo thời gian thực để cửa hàng biết có đơn mới

− Sau đó khi cửa hàng cập nhật trạng thái mới, server sẽ cập nhật vào database và gửi socket đến cho thành viên biết trạng thái đơn đã cập nhật

2.4.3 Mua hàng tại cửa hàng

Khóa luận tốt nghiệp Công nghệ phần mềm 50

Hình 12 Sequence diagram - Mua tại cửa hàng

Giải thích các bước chạy của chương trình:

− Sau khi thêm sản phẩm vào giỏ và bấm đặt hàng, app đặt hàng của Thành viên gọi API tạo đơn hàng đến server

− Server lấy từ database thông tin các sản phẩm, ưu đãi, tùy chọn trong giỏ hàng để xác nhận dữ liệu đơn hàng có đúng đắn không

− Nếu dữ liệu đơn hàng đúng đắn, thực hiện tính toán lại các số tiền và lưu lại vào database

− Trả response về cho ứng dụng thành viên khi hoàn tất lưu đơn hàng

Khóa luận tốt nghiệp Công nghệ phần mềm 51

XÂY DỰNG ỨNG DỤNG

THIẾT KẾ GIAO DIỆN

Hình 15 Code mẫu định nghĩa model cho collection products

3.2.1 Giao diện ứng dụng Thành viên

Khóa luận tốt nghiệp Công nghệ phần mềm 54

Hình 16 Member app - Danh sách sản phẩm Hình 17 Member app – Thêm hàng vào giỏ

Hình 18 Member app - Danh sách cửa hàng Hình 19 Member app - Định vị cửa hàng

Khóa luận tốt nghiệp Công nghệ phần mềm 55

Hình 20 Member app - Màn hình thành viên Hình 21 Member app - Màn hình ưu đãi

Hình 22 Member app - Màn hình đổi ưu đãi Hình 23 Member app - Màn hình giỏ hàng

Khóa luận tốt nghiệp Công nghệ phần mềm 56

Hình 24 Member app - Màn hình chọn địa chỉ Hình 25 Member app - Màn hình ghim địa chỉ

Hình 26 Member app - Đơn chưa thanh toán Hình 27 Member app - Thanh toán Momo

Khóa luận tốt nghiệp Công nghệ phần mềm 57

Hình 28 Member app - Đơn đã thanh toán Hình 29 Member app - Chi tiết đơn hàng

Hình 30 Member app - Lịch sử đơn hàng Hình 31 Member app - Đơn hàng đã hoàn tất

Khóa luận tốt nghiệp Công nghệ phần mềm 58

3.2.2 Giao diện ứng dụng Bán hàng

Hình 32 Sale app - Màn hình đăng nhập cửa hàng

Hình 33 Sale app – Trang chủ

Khóa luận tốt nghiệp Công nghệ phần mềm 59

Hình 34 Sale app - Thêm sản phẩm vào giỏ hàng

Hình 35 Sale app - Giỏ hàng

Khóa luận tốt nghiệp Công nghệ phần mềm 60

Hình 36 Sale app - Nhận đơn online và danh sách đơn của cửa hàng

Hình 37 Sale app - Tìm kiếm thành viên

3.2.3 Giao diện ứng dụng Giao hàng

Khóa luận tốt nghiệp Công nghệ phần mềm 61

Hình 38 Shipper app - Tài xế chọn vị trí Hình 39 Shipper app - Tài xế ghim vị trí

Hình 40 Shipper app - Đơn hàng đang chờ Hình 41 Shipper app - Chi tiết một đơn hàng

Khóa luận tốt nghiệp Công nghệ phần mềm 62

Hình 42 Shipper app - Chỉ đường tài xế giao hàng trong app

Hình 43 Shipper app - Chỉ đường tài xế giao hàng bằng google map

Hình 44 Shipper app - Chụp ảnh xác nhận Hình 45 Shipper app - Gửi ảnh xác nhận

Khóa luận tốt nghiệp Công nghệ phần mềm 63

3.2.4 Giao diện ứng dụng Quản trị

Trang chủ – Màn hình thống kê

Hình 48 Admin app - Màn hình trang chủ - Chức năng thống kê

Hình 46 Shipper app - Thông tin cá nhân Hình 47 Shipper app - Lịch sử rút tiền

Khóa luận tốt nghiệp Công nghệ phần mềm 64

Màn hình quản lý sản phẩm

Hình 49 Admin app - Màn hình danh sách sản phẩm

Hình 50 Admin app - Màn hình danh sách phân loại sản phẩm

Khóa luận tốt nghiệp Công nghệ phần mềm 65

Hình 51 Admin app - Màn hình danh sách tùy chọn của sản phẩm

Màn hình quản lý cửa hàng

Hình 52 Admin app - Màn hình danh sách cửa hàng

Khóa luận tốt nghiệp Công nghệ phần mềm 66

Hình 53 Admin app - Màn hình danh sách nhân viên

Hình 54 Admin app - Màn hình danh sách thành viên

Khóa luận tốt nghiệp Công nghệ phần mềm 67

Hình 55 Admin app - Màn hình danh sách cấp bậc thành viên

Hình 56 Admin app - Màn hình danh sách đơn hàng

Khóa luận tốt nghiệp Công nghệ phần mềm 68

Hình 57 Admin app - Màn hình danh sách ưu đãi

Hình 58 Admin app - Màn hình danh sách chương trình đổi ưu đãi

Khóa luận tốt nghiệp Công nghệ phần mềm 69

Hình 59 Admin app - Màn hình danh sách đối tác ưu đãi

Hình 60 Admin app - Danh sách tài khoản admin

Khóa luận tốt nghiệp Công nghệ phần mềm 70

Hình 61 Admin app - Màn hình phân quyền tài khoản

Hình 62 Admin app - Màn hình danh sách tài khoản bán hàng

Khóa luận tốt nghiệp Công nghệ phần mềm 71

Hình 63 Admin app - Màn hình danh sách tài khoản nhân viên giao hàng

3.3 HƯỚNG DẪN CÀI ĐẶT HỆ THỐNG

3.3.1 Cài đặt và chạy server back-end

− NodeJS từ phiên bản 16 ( node >= 16.x )

− PNPM từ phiên bản 8 ( pnpm >= 8.x )

B1: Đầu tiên cần cài đặt NodeJS nếu chưa cài: https://nodejs.org/en/download

B2: Cài đặt pnpm từ npm bằng một trong các cách sau: https://pnpm.io/installation

B3: Clone source code về từ repository: https://github.com/VT-Store-Manager/vt-api.git

B4: Cài đặt package với pnpm bằng lệnh: pnpm install

B5: Hệ thống gồm 3 server backend, để build chương trình của cả 3 server chạy lệnh: pnpm build-all

Khóa luận tốt nghiệp Công nghệ phần mềm 72

B6: Chạy từng ứng dụng bằng các lệnh tương ứng sau đây:

− Server quản trị: pnpm start:prod:admin

Hình 64 Terminal server quản trị chạy thành công

− Server bán hàng: pnpm start:prod:sale

Hình 65 Terminal server bán hàng chạy thành công

− Server đặt hàng: pnpm start:prod:client

Hình 66 Terminal server đặt hàng chạy thành công, kết nối socket thất bại

Khóa luận tốt nghiệp Công nghệ phần mềm 73

(socket của server đặt hàng vẫn chưa kết nối được với socket server bên server bán hàng)

B7: Nếu cần kiểm tra tính năng realtime và thanh toán Momo ở local, cần thực hiện tạo tài khoản Ngrok, tạo một tên miền cố định trên tài khoản Ngrok cá nhân và cấu hình ở local: Tạo tài khoản Ngrok và hướng dẫn cấu hình (vì cần dùng một domain đã host để thực hiện toàn bộ chức năng của thanh toán Momo)

B8: Thêm cấu hình vào file env : SALE_URL=

Với your_ngrok_domain là domain bạn tạo trên Ngrok

Hình 67 Tạo một domain tĩnh cho Ngrok cá nhân Ở ví dụ ở ảnh trên, bạn cần thêm SALE_URL=tops-mentally-toad.ngrok-free.app vào file env

B8: Cần tắt và chạy lại server bán hàng và sever đặt hàng để tải lại env mới, sau đó host server bán hàng bằng ngrok để có thể realtime và thanh toán Momo hoàn tất

− Server bán hàng: pnpm start:prod:sale

− Host server bán hàng bằng Ngrok: pnpm ngrok:sale

Khóa luận tốt nghiệp Công nghệ phần mềm 74

Hình 68 Host server bán hàng lên domain tĩnh đã config bằng Ngrok

− Server đặt hàng: pnpm start:prod:client

Hình 69 Terminal chạy server đặt hành và kết nối socket thành công

3.3.2 Cài đặt và chạy web admin

− NodeJS từ phiên bản 16 ( node >= 16.x )

− PNPM từ phiên bản 8 ( pnpm >= 8.x )

B1: Đầu tiên cần cài đặt NodeJS nếu chưa cài: https://nodejs.org/en/download

B2: Cài đặt pnpm từ npm bằng một trong các cách sau: https://pnpm.io/installation

B3: Clone source code về từ repository:

Khóa luận tốt nghiệp Công nghệ phần mềm 75 https://github.com/VT-Store-Manager/vt-admin.git

B4: Cài đặt package với pnpm bằng lệnh: pnpm install

B5: Build chương trình bằng lệnh: pnpm build

B6: Sau khi build thành công, chạy lệnh: pnpm preview

Hình 70 Terminal chạy web quản trị thành công

3.3.3 Cài đặt và chạy các ứng dụng flutter

− Thiết bị chạy ứng dụng có thể là máy ảo hoặc máy thật cho cả 3 app: o Thiết bị chạy Android 5.0 (API level 21) trở lên o Thiết bị chạy IOS 11.0 trở lên

− IDE khuyên dùng là Android Studio https://developer.android.com/studio/install

Cài đặt: Cần cài đặt Flutter nếu chưa cài đặt https://docs.flutter.dev/get- started/install

Chạy ứng dụng: Đầu tiên ta cần kiểm tra xem flutter đã được cấu hình đúng để chạy trên các nền tảng mà chúng ta mong muốn hay chưa bằng cách sử dụng lệnh: flutter doctor

Khóa luận tốt nghiệp Công nghệ phần mềm 76

Hình 71 Kiểm tra cấu hình các nền tảng để chạy Flutter

Tiếp theo cần tiến hành cài đặt các package bằng cách vào file pubspect.yaml và chọn Pub get hoặc sử dụng lệnh flutter pub get

Hình 72 Cài package bằng tính năng sẵn của IDE

Hình 73 Terminal kết quả cài package Flutter

Chọn thiết bị để chạy ứng dụng bằng cách chọn device trên thanh công cụ (Android Studio) và sau đó chọn biểu tượng play để chạy ứng dụng Hoặc cũng có thể sử dụng

Khóa luận tốt nghiệp Công nghệ phần mềm 77 lệnh flutter run -d Ta có thể xem thông tin devices đang kết nối thông qua lệnh flutter devices

Hình 74 Chạy app Flutter bằng tính năng sẵn của IDE

Hình 75 Chọn thiết bị chạy app Flutter bằng tính năng của IDE

Hình 76 Terminal kiểm tra thông tin các device để chạy app Flutter

Hình 77 Terminal chạy app flutter với ID của device

KẾT LUẬN

ƯU NHƯỢC ĐIỂM CỦA ĐỀ TÀI

− Ứng dụng có tính luồng hoạt động giống với ứng dụng thực tế

− Ứng dụng cung cấp đầy đủ chức năng cho quy trình mua bán trực tuyến và tại cửa hàng

− Ứng dụng người dùng có giao diện đẹp, thân thiện với người dùng

− Ngoài bán hàng, hệ thống còn có những tính năng khác thu hút, giữ chân người dùng

− Ứng dụng có tích hợp hoạt động theo thời gian thực giúp trải nghiệm mua bán tốt hơn

− Ứng dụng admin vẫn chưa hoàn thiện dẫn tới admin chưa thao tác quản lý được hoàn toàn

− Giao diện ứng dụng bán hàng và giao hàng còn đơn giản

− Chức năng giao hàng vẫn còn nhiều khuyết điểm: tính toán khoảng cách, theo dõi tài xế, logic tính tiền, logic nhận đơn

Khóa luận tốt nghiệp Công nghệ phần mềm 79

HƯỚNG PHÁT TRIỂN TRONG TƯƠNG LAI

− Mở rộng quy mô quản lý cho các cửa hàng như thêm quản lý kho/nguyên liệu, quản lý nhân sự

− Sau khi thêm nhiều quản lý hơn thì hệ thống có thể thống kê chi tiết hơn số tiền thu vào và chi ra

− Cải thiện logic giao hàng bằng cách thay thế bằng dịch vụ thứ 3 để giao hàng như GHN, Lalamove,…

− Tích hợp thêm một số phương thức thanh toán online khác như ZaloPay, VnPay hoặc thanh toán quốc tế bằng Paypal, thẻ quốc tế Visa/Master

Khóa luận tốt nghiệp Công nghệ phần mềm 80

Ngày đăng: 26/09/2024, 12:36

HÌNH ẢNH LIÊN QUAN

Hình 1. Kiến trúc hệ thống mua bán cho cửa hàng cafe - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 1. Kiến trúc hệ thống mua bán cho cửa hàng cafe (Trang 26)
Hình 2. Mô hình BLoC trong Flutter - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 2. Mô hình BLoC trong Flutter (Trang 28)
Hình 3. Đường đi của request và response trong NestJS - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 3. Đường đi của request và response trong NestJS (Trang 29)
Hình 4. Kiến trúc 3 lớp trong NestJS - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 4. Kiến trúc 3 lớp trong NestJS (Trang 31)
Hình 6. Use case ứng dụng cửa hàng - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 6. Use case ứng dụng cửa hàng (Trang 38)
Hình 7. Use case ứng dụng giao hàng - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 7. Use case ứng dụng giao hàng (Trang 39)
Hình 10 Sequence diagram - Đặt hàng giao về thanh toán bằng Momo - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 10 Sequence diagram - Đặt hàng giao về thanh toán bằng Momo (Trang 62)
Hình 11. Sequence diagram - Đặt hàng đến cửa hàng lấy - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 11. Sequence diagram - Đặt hàng đến cửa hàng lấy (Trang 64)
Hình 12. Sequence diagram - Mua tại cửa hàng - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 12. Sequence diagram - Mua tại cửa hàng (Trang 66)
Hình 13. Danh sách tất cả collection của database - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 13. Danh sách tất cả collection của database (Trang 67)
Hình 32. Sale app - Màn hình đăng nhập cửa hàng - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 32. Sale app - Màn hình đăng nhập cửa hàng (Trang 74)
Hình 33. Sale app – Trang chủ - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 33. Sale app – Trang chủ (Trang 74)
Hình 34. Sale app - Thêm sản phẩm vào giỏ hàng - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 34. Sale app - Thêm sản phẩm vào giỏ hàng (Trang 75)
Hình 37. Sale app - Tìm kiếm thành viên - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 37. Sale app - Tìm kiếm thành viên (Trang 76)
Hình 38. Shipper app - Tài xế chọn vị trí  Hình 39. Shipper app - Tài xế ghim vị trí - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 38. Shipper app - Tài xế chọn vị trí Hình 39. Shipper app - Tài xế ghim vị trí (Trang 77)
Hình 48. Admin app - Màn hình trang chủ - Chức năng thống kê - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 48. Admin app - Màn hình trang chủ - Chức năng thống kê (Trang 79)
Hình 46.  Shipper app - Thông tin cá nhân  Hình 47. Shipper app - Lịch sử rút tiền - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 46. Shipper app - Thông tin cá nhân Hình 47. Shipper app - Lịch sử rút tiền (Trang 79)
Hình 49. Admin app - Màn hình danh sách sản phẩm - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 49. Admin app - Màn hình danh sách sản phẩm (Trang 80)
Hình 52. Admin app - Màn hình danh sách cửa hàng - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 52. Admin app - Màn hình danh sách cửa hàng (Trang 81)
Hình 51. Admin app - Màn hình danh sách tùy chọn của sản phẩm - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 51. Admin app - Màn hình danh sách tùy chọn của sản phẩm (Trang 81)
Hình 53. Admin app - Màn hình danh sách nhân viên - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 53. Admin app - Màn hình danh sách nhân viên (Trang 82)
Hình 55. Admin app - Màn hình danh sách cấp bậc thành viên - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 55. Admin app - Màn hình danh sách cấp bậc thành viên (Trang 83)
Hình 57. Admin app - Màn hình danh sách ưu đãi - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 57. Admin app - Màn hình danh sách ưu đãi (Trang 84)
Hình 59. Admin app - Màn hình danh sách đối tác ưu đãi - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 59. Admin app - Màn hình danh sách đối tác ưu đãi (Trang 85)
Hình 60. Admin app - Danh sách tài khoản admin - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 60. Admin app - Danh sách tài khoản admin (Trang 85)
Hình 61. Admin app - Màn hình phân quyền tài khoản - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 61. Admin app - Màn hình phân quyền tài khoản (Trang 86)
Hình 63. Admin app - Màn hình danh sách tài khoản nhân viên giao hàng - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 63. Admin app - Màn hình danh sách tài khoản nhân viên giao hàng (Trang 87)
Hình 65. Terminal server bán hàng chạy thành công - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 65. Terminal server bán hàng chạy thành công (Trang 88)
Hình 64. Terminal server quản trị chạy thành công - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 64. Terminal server quản trị chạy thành công (Trang 88)
Hình 66. Terminal server đặt hàng chạy thành công, kết nối socket thất bại - xây dựng hệ thống mua bán cho cửa hàng cafe
Hình 66. Terminal server đặt hàng chạy thành công, kết nối socket thất bại (Trang 88)
w