KIẾN THỨC NỀN TẢNG
Flutter
Flutter is designed to address common challenges in mobile development by offering both fast development and native performance Unlike React Native, which focuses solely on rapid development, or pure native code that ensures optimal performance, Flutter effectively combines both advantages.
Google đã ra mắt phiên bản beta 1 của Flutter, bổ sung thêm bộ SDK cho ứng dụng di động bên cạnh Android Điều này cho thấy Google nhận thức rằng thế giới di động rất rộng lớn và không thể chỉ dựa vào một giải pháp duy nhất như Android.
Và điểm khác biệt cơ bản giữa Flutter và Android: tạo ra các ứng dụng chạy trên cả iOS và Android
Flutter là một bộ SDK đa nền tảng cho phép phát triển ứng dụng trên cả iOS và Android, giúp tối ưu hóa khả năng tương thích với framework UI của hai hệ điều hành này Tuy nhiên, các ứng dụng Flutter không biên dịch trực tiếp thành ứng dụng native cho Android và iOS.
NodeJS
NodeJS là một nền tảng được xây dựng trên “V8 Javascript engine” được viết bằng c++ và Javascript Nền tảng này được phát triển bởi Ryan Lienhart Dahl vào năm
Node.js được phát triển bởi các lập trình viên JavaScript tiên phong, biến nó từ một ngôn ngữ chỉ chạy trên trình duyệt thành một nền tảng cho phép chạy ứng dụng độc lập trên máy tính.
Cả trình duyệt JavaScript và Node.js đều sử dụng động cơ V8 để chạy mã Động cơ này chuyển đổi mã JavaScript thành mã máy (bytecode), giúp tăng tốc độ thực thi Mã máy là dạng mã thấp cấp hơn, cho phép máy tính chạy mà không cần biên dịch lại.
FireBase
Firebase là dịch vụ cơ sở dữ liệu trên nền tảng đám mây do Google cung cấp, với hệ thống máy chủ mạnh mẽ Nó giúp người dùng lập trình ứng dụng dễ dàng hơn bằng cách đơn giản hóa các thao tác liên quan đến cơ sở dữ liệu.
Firebase cung cấp giao diện lập trình ứng dụng API đơn giản, giúp tăng số lượng người dùng và tối đa hóa lợi nhuận Dịch vụ này nổi bật với tính đa năng và bảo mật cao, hỗ trợ cả hai nền tảng Android và iOS Chính vì vậy, nhiều lập trình viên đã lựa chọn Firebase làm nền tảng ưu tiên để phát triển ứng dụng cho hàng triệu người dùng toàn cầu.
Sơ đồ kiến trúc phần mềm
Trình bày thiết kế
- UI và data được lưu dưới API và local storage giao tiếp với nhau thông qua bloc
Giao diện người dùng (UI) đảm nhận việc hiển thị thông tin, trong khi khối xử lý (bloc) đảm nhiệm logic của ứng dụng Dữ liệu được lưu trữ từ API và local sẽ được sử dụng để xử lý và sau đó hiển thị trên UI.
- Bloc gọi API và local database lên thông qua lớp repository
ĐẶC TẢ USECASE
Sơ đồ Usecase
Danh sách Usecase
STT Tính năng Mô tả/ Ghi chú
1 Xem chi tiết thực phẩm Dành cho User, xem thông tin chi tiết thực phẩm
2 Tra cứu thực phẩm Dành cho User, tìm kiếm thực phẩm
3 Thêm thực phẩm vào giỏ hàng Dành cho User, thêm thực phẩm vào giỏ hàng
4 Chọn số lượng và loại thực phẩm Dành cho User, một phần trong quy trình đặt hàng
5 Chọn địa chỉ giao hàng Dành cho User, một phần trong quy trình đặt hàng
6 Chọn phương thức thanh toán
Dành cho User, một phần trong quy trình đặt hàng
7 Chọn mã giảm giá Dành cho User, một phần trong quy trình đặt hàng
8 Quản lý thực phẩm trong giỏ hàng
Dành cho User, quản lý thêm xóa sửa trong giỏ hàng
9 Gợi ý món ăn Dành cho User, xem danh sách món ăn gợi ý dựa vào thực phẩm hiện có trong giỏ hàng
10 Sửa thông tin tài khoản Dành cho User, sửa hồ sơ cá nhân
11 Quản lý thông tin địa chỉ Dành cho User, quản lý thêm, sửa, xóa địa chỉ giao hàng
12 Xem lịch sử đơn hàng Dành cho User, xem lại lịch sử mua hàng
13 Đăng nhập Dành cho User hoặc Admin đã có tài khoản
14 Đăng ký tài khoản Dành cho User chưa có tài khoản
15 Đăng xuất Dành cho User hoặn Admin
16 Quản lý đơn đặt hàng Dành cho Admin, xem trạng thái đơn hàng và xác nhận đơn hàng cho User
THIẾT KẾ CƠ SỞ DỮ LIỆU
Sơ đồ logic
Hình 4.1: Sơ đồ cơ sở dữ liệu
Danh sách các bảng
Bảng KHACHHANG Thông tin khách hàng
Bảng DONHANG Mô tả đơn hàng
Bảng CTDH Mô tả chi tiết đơn hàng
Bảng SANPHAM Thông tin sản phẩm
Bảng CTSP Thông tin sản phẩm trong kho hàng
Bảng NCC Thông tin chi tiết nhà cung câp
Bảng 5.1: Danh sách các bảng trong cơ sở dữ liệu
THIẾT KẾ GIAO DIỆN NGƯỜI DÙNG
Danh sách màn hình
STT Tên màn hình Loại
2 Đăng ký tài khoản Đăng kí
5 Trang tìm kiếm Hiển thị và nhập liệu
6 Trang giỏ hàng Hiển thị
7 Trang chi tiết sản phẩm Hiển thị
9 Trang trạng thái đơn hàng Hiển thị
10 Trang theo dõi đường đi đơn hàng Hiển thị
12 Trang thông tin người dùng Hiển thị
13 Trang cài đặt thông báo Cài đặt hệ thống
14 Trang trung tâm giúp đỡ Hiển thị
Bảng 6.1: Danh sách màn hình
Mô tả chi tiết màn hình
Mô tả: Nhập thông tin tài khoản, mật khẩu để đăng nhập
Mô tả: Nhập thông tin để đăng ký tài khoản
Nhập thông tin đăng ký
Mô tả: Hiển thị lời chào, giới thiệu về app
Xem sản phẩm theo chủ đề
6.2.4 Trang chi tiết sản phẩm
Mô tả: Hiển thị danh sách các sản phẩm gợi ý và các danh mục sản phẩm
Chọn chi tiết sản phẩm
Chọn xem danh mục sản phẩm
Lựa chọn tùy chọn sản phẩm
Hình 6.5: Trang chi tiết sản phẩm
Mô tả: Nhập thông tin để tìm sản phẩm
Xem thông báo của app
Mô tả: Hiển thị thông tin các sản phẩm của trong giỏ hàng
Nhấn vào sản phẩm tìm được
Mô tả: Hiển thị thông tin chi tiết của sản phẩm
Xem sản phẩm trong giỏ hàng
Xem tổng tiền phải trả
Chọn phương thức thanh toán
Hình 6.7: Trang chi tiết sản phẩm
6.2.8 Trang theo dõi đơn hàng
Mô tả: Hiển thị thông tin các sản phẩm cảu cửa hàng và thông tin chi tiết cửa hàng Chức năng:
Theo dõi trạng thái hàng đã đặt
Hình 6.8: Trang theo dõi đơn hàng
6.2.9 Trang theo dõi đường vận chuyển
Mô tả: Chọn thông tin cần thiết để đặt đơn hàng
Xem đường vận chyển của đơn hàng
Mô tả: Hiển thị đặt hàng thành công
Nhập đánh giá cá nhân
6.2.11 Trang thông tin cá nhân
Mô tả: Hiển thị danh sách món ăn từ các nguyên liệu đã chọn
Xem thông tin của tài khoản
Hình 6.11: Trang thông tin tài khoản
6.2.12 Trang cài đặt thông báo
Mô tả: Hiển thị chi tiết món ăn gợi ý bao gồm các nguyên liệu của món ăn
Cài đặt thông báo hệ thống
6.2.13 Trang trung tâm giúp đỡ
Mô tả: Hiển thị thông tin tài khoản và các mục để quản lý tài khoản
Hiển thị giúp đỡ, trả lời câu hỏi của khách hàng
Hình 6.13: Trang thông tin tài khoản
TỔNG KẾT
Kết quả đạt được
Học được kiến thức về Bloc, kiến trúc phần mềm
Hiểu được các kết nối API thông qua bloc
Quản lý thời gian hiệu quả
Cải thiện kỹ năng lập trình
Các tính năng chưa được tối ưu tốt nên ứng dụng chạy còn chậm
Chưa học được cách quản lý code và team hiệu quả, có risk nếu 1 trong những người trong team từ bỏ
Hướng phát triển
Sau khi thực hiện dự án, nhóm nhận thấy còn nhiều hạn chế cần cải thiện và mở rộng Cụ thể, có một số hướng phát triển tiềm năng mà chúng tôi có thể xem xét trong tương lai.
Chúng tôi đã hoàn thiện thêm nhiều chức năng quan trọng cho quản trị viên, bao gồm khả năng thêm, xóa và sửa đổi các thực phẩm, cửa hàng và mã giảm giá Ngoài ra, chúng tôi cũng đã phát triển chức năng báo cáo thống kê của ứng dụng, giúp quản trị viên dễ dàng theo dõi và phân tích dữ liệu hiệu quả hơn.
● Hoàn thành thêm các chức năng cho user: o Thêm phương thức thanh toán khác như chuyển khoản o Tích hợp google map theo dõi quá trình giao hàng
● Tích hợp thêm tính năng để quản lý việc quản lý đồng tiền của app
- Về cách quản lý file và code:
● Tập trung code cleaner: o Chia hàm, đặt tên 1 cách hợp lý o Comment những dòng code có nhiều logic
● Quản lý file hiệu quả: o Chia file theo screen để dễ dàng tìm kiếm và sửa đổi file