Giới thiệu dự án

Sự bùng nổ của công nghệ di động và thương mại điện tử đã định hình lại thói quen tiêu dùng trong mọi lĩnh vực đời sống, bao gồm cả môi trường giáo dục đại học và cao đẳng. Tại các cơ sở đào tạo quy mô lớn như Trường Cao Đẳng Bách Khoa Nam Sài Gòn, số lượng sinh viên và cán bộ giảng viên tập trung giờ cao điểm tạo ra áp lực vận hành khổng lồ cho hệ thống canteen nội khu. Theo thống kê thực tế trong ngành dịch vụ ăn uống học đường, hơn 70% thời gian chờ đợi của sinh viên phát sinh từ khâu xếp hàng chọn món, ghi phiếu thủ công và thanh toán tiền mặt trong khung giờ giải lao kéo dài từ 15 đến 30 phút.

Đề tài tốt nghiệp "Xây dựng ứng dụng di động quản lý đặt đồ ăn từ canteen" do sinh viên Võ Chánh Hải thực hiện dưới sự hướng dẫn của cô Lê Thị Thùy Trang (khoa Tin Học Ứng Dụng) giải quyết trực diện bài toán quá tải cục bộ, thất thoát doanh thu và quản lý dữ liệu lỏng lẻo trong vận hành canteen truyền thống.

                  KIẾN TRÚC TỔNG THỂ HỆ THỐNG
+-------------------------------------------------------------+
|                 Android Client (Java/XML)                   |
|   [UI Components]  <-->  [Custom Adapters]  <-->  [Intents]  |
+------------------------------+------------------------------+
                               | Giao thức HTTP / JSON
                               v
+-------------------------------------------------------------+
|                  Backend Web Service (PHP)                  |
|    [Authentication]  <-->  [Business Logic]  <-->  [Parser] |
+------------------------------+------------------------------+
                               | SQL Connection (PDO/MySQLi)
                               v
+-------------------------------------------------------------+
|               Cơ sở dữ liệu MySQL (Host / Cloud)            |
|       [tbl_khachhang]   [tbl_monan]   [tbl_hoadon]          |
+-------------------------------------------------------------+

Mục tiêu dự án

  1. Xây dựng ứng dụng Android Native: Phát triển giao diện trực quan, tối ưu trải nghiệm người dùng sinh viên trên nền tảng hệ điều hành Android.
  2. Thiết lập Web Service trung gian: Xây dựng kiến trúc giao tiếp dữ liệu backend bằng PHP nhằm xử lý các nghiệp vụ truy xuất và bảo mật cơ sở dữ liệu.
  3. Chuẩn hóa cấu trúc dữ liệu JSON: Tối ưu hóa chuỗi payload truyền tải giữa thiết bị đầu cuối và máy chủ nhằm giảm thiểu độ trễ mạng băng thông thấp.
  4. Tối ưu hóa quản lý nghiệp vụ canteen: Tự động hóa quy trình quản lý thực đơn, đặt món, theo dõi trạng thái đơn hàng và tổng hợp hóa đơn thời gian thực.
  5. Đảm bảo tính tương thích và phản hồi cao: Ứng dụng chạy mượt mà trên đa dạng thiết bị với thời gian phản hồi API dưới 300ms.

Phương pháp tiếp cận và phạm vi

  • Phương pháp: Ứng dụng mô hình phát triển phần mềm lặp (Iterative Model), kết hợp kiểm thử hộp đen (Black-box Testing) trên các thiết bị thật và trình giả lập Android Virtual Device (AVD).
  • Phạm vi: Triển khai nghiệp vụ phục vụ nội bộ canteen Trường Cao Đẳng Bách Khoa Nam Sài Gòn, hỗ trợ các dòng điện thoại thông minh chạy hệ điều hành Android từ phiên bản 7.0 (Nougat) trở lên.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Mô hình gọi món truyền thống tại các trường học tồn tại nhiều lỗ hổng lớn về hiệu suất vận hành:

Tiêu chí so sánh Quản lý sổ sách truyền thống Ứng dụng giao đồ ăn thương mại (Grab/ShopeeFood) Ứng dụng Canteen Bách Khoa Nam Sài Gòn
Chi phí vận hành Thấp ban đầu, tổn thất nhân công Chiết khấu cao (20% - 30%/đơn) Chi phí máy chủ thấp, không phí hoa hồng
Thời gian xử lý đơn 5 - 10 phút/khách 15 - 30 phút (bao gồm điều phối shipper) 1 - 2 phút (nhận đơn chuẩn bị trước)
Kiểm soát nội bộ Dễ sai sót, mất hóa đơn Phụ thuộc chính sách bên thứ 3 Quản lý 100% dữ liệu danh mục & doanh thu
Tính chuyên biệt Không có Rộng, không tối ưu cho giờ ra chơi Tối ưu hóa theo lịch học và ca ăn sinh viên

Phân loại yêu cầu người dùng (Mô hình MoSCoW)

  • Must-have (Bắt buộc): Đăng nhập/Đăng ký tài khoản, hiển thị thực đơn theo thời gian thực, đặt món ăn/dịch vụ, quản lý hóa đơn và tính tổng tiền tự động.
  • Should-have (Cần có): Lọc danh mục món ăn theo trạng thái còn/hết hàng, lưu lịch sử đơn hàng, cập nhật hồ sơ khách hàng.
  • Could-have (Có thể mở rộng): Tích hợp cổng thanh toán trực tuyến qua mã QR, định vị canteen theo cơ sở.
  • Won't-have (Chưa thực hiện ở giai đoạn này): Tự động điều phối giao hàng ngoại khu ngoài khuôn viên nhà trường.
                      SƠ ĐỒ USE CASE HỆ THỐNG
   +---------------------------------------------------------+
   |                       HỆ THỐNG                          |
   |                                                         |
   |   ( Đăng nhập / Đăng xuất ) <-------+                   |
   |                                     |                   |
   |   ( Xem thực đơn / Dịch vụ ) <-----+|                   |
   |                                    ||                   |
   |   ( Đặt món / Tạo hóa đơn ) <----+ ||   <<Actor>>       |
   |                                  | ++-- [ Sinh viên ]   |
   |   ( Quản lý danh mục món ) <---+ | |                    |
   |                                | | |    <<Actor>>       |
   |   ( Quản lý khách hàng ) <-----+ +++--- [ Quản lý ]     |
   |                                | |                      |
   |   ( Thống kê doanh thu ) <-----+ |                      |
   |                                                         |
   +---------------------------------------------------------+

Thiết kế hệ thống và Cơ sở dữ liệu

Hệ thống được thiết kế theo mô hình Client-Server nhiều tầng (Multi-tier Architecture):

  • Tầng Client (Giao diện người dùng): Ứng dụng Android Native xây dựng bằng Java, giao diện XML được quản lý thông qua các ViewGroup cơ bản như LinearLayout, RelativeLayout, và hiển thị dữ liệu tập hợp bằng ListView, GridView.
  • Tầng Trung gian (Web Service Gateway): Bộ xử lý Backend viết bằng ngôn ngữ PHP, tiếp nhận các HTTP Request (GET/POST), xác thực tham số và chuyển đổi cấu trúc SQL thành chuỗi JSON tiêu chuẩn.
  • Tầng Dữ liệu (Database Layer): Hệ quản trị cơ sở dữ liệu MySQL lưu trữ tập trung trên Web Hosting (hỗ trợ Cpanel, phpMyAdmin).
-- Cấu trúc cơ sở dữ liệu MySQL cốt lõi của hệ thống
CREATE TABLE tbl_khachhang (
    id_khachhang INT AUTO_INCREMENT PRIMARY KEY,
    ten_khachhang VARCHAR(100) NOT NULL,
    so_dienthoai VARCHAR(15) NOT NULL UNIQUE,
    email VARCHAR(100),
    mat_khau VARCHAR(255) NOT NULL,
    ngay_tao TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE tbl_dichvu_monan (
    id_monan INT AUTO_INCREMENT PRIMARY KEY,
    ten_monan VARCHAR(150) NOT NULL,
    gia_tien DOUBLE NOT NULL,
    hinh_anh VARCHAR(255),
    mo_ta TEXT,
    trang_thai INT DEFAULT 1 -- 1: Đang phục vụ, 0: Hết hàng
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE tbl_hoadon (
    id_hoadon INT AUTO_INCREMENT PRIMARY KEY,
    id_khachhang INT NOT NULL,
    tong_tien DOUBLE NOT NULL,
    ngay_lap DATETIME NOT NULL,
    trang_thai_don VARCHAR(50) DEFAULT 'Pending',
    FOREIGN KEY (id_khachhang) REFERENCES tbl_khachhang(id_khachhang) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE tbl_chitiethoadon (
    id_chitiet INT AUTO_INCREMENT PRIMARY KEY,
    id_hoadon INT NOT NULL,
    id_monan INT NOT NULL,
    so_luong INT NOT NULL,
    don_gia DOUBLE NOT NULL,
    FOREIGN KEY (id_hoadon) REFERENCES tbl_hoadon(id_hoadon) ON DELETE CASCADE,
    FOREIGN KEY (id_monan) REFERENCES tbl_dichvu_monan(id_monan)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Phương pháp luận phát triển (Methodology)

Quy trình phát triển được triển khai theo mô hình Thác nước cải tiến (Modified Waterfall) gồm 5 giai đoạn:

  1. Khảo sát yêu cầu: Phân tích hành vi mua sắm tại canteen Cao Đẳng Bách Khoa Nam Sài Gòn (Tuần 1 - Tuần 2).
  2. Thiết kế hệ thống & CSDL: Lập sơ đồ Use Case, ERD, Class Diagram và thiết kế API Endpoint (Tuần 3 - Tuần 4).
  3. Xây dựng Backend Web Service: Lập trình API PHP kết nối MySQL trên môi trường Hosting (Tuần 5 - Tuần 7).
  4. Lập trình Client Android: Xây dựng Activities, Layouts, Custom Adapters và tích hợp kết nối mạng (Tuần 8 - Tuần 11).
  5. Kiểm thử, Đánh giá & Hoàn thiện: Kiểm thử trên môi trường giả lập và thiết bị thực, tối ưu hiệu năng (Tuần 12).

Implementation và kết quả

Quy trình phát triển phần mềm

Dự án sử dụng bộ công cụ Android Studio Iguana | 2023.1 kết hợp Java Development Kit (JDK 17) và hệ sinh thái Gradle Build Tool. Cấu trúc mã nguồn Client tuân thủ nguyên tắc phân tách rõ ràng giữa lớp giao diện (View), bộ điều hợp (Adapter), và tầng truyền thông mạng.

1. Xây dựng Backend Web Service (PHP & MySQL)

Web Service đóng vai trò cầu nối, trích xuất dữ liệu từ bảng tbl_dichvu_monan và trả về mảng đối tượng JSON cho Android Client.

<?php
// Endpoint: get_monan_service.php
header("Content-Type: application/json; charset=UTF-8");
require_once "db_connect.php";

$response = array();
$sql = "SELECT id_monan, ten_monan, gia_tien, hinh_anh, mo_ta, trang_thai FROM tbl_dichvu_monan WHERE trang_thai = 1";
$result = mysqli_query($conn, $sql);

if ($result) {
    $response["success"] = 1;
    $response["data"] = array();
    while ($row = mysqli_fetch_assoc($result)) {
        $item = array(
            "id" => (int)$row["id_monan"],
            "name" => $row["ten_monan"],
            "price" => (float)$row["gia_tien"],
            "image" => $row["hinh_anh"],
            "description" => $row["mo_ta"]
        );
        array_push($response["data"], $item);
    }
    echo json_encode($response, JSON_UNESCAPED_UNICODE);
} else {
    $response["success"] = 0;
    $response["message"] = "Không thể truy vấn cơ sở dữ liệu.";
    echo json_encode($response, JSON_UNESCAPED_UNICODE);
}
mysqli_close($conn);
?>

2. Xây dựng Custom BaseAdapter trong Android Java

Để render danh sách các món ăn lên giao diện ListView một cách tối ưu bộ nhớ, kỹ thuật ViewHolder Pattern được áp dụng nhằm hạn chế việc gọi lặp lại hàm findViewById().

public class MonAnAdapter extends BaseAdapter {
    private Context context;
    private int layoutResource;
    private List<MonAnModel> monAnList;

    public MonAnAdapter(Context context, int layoutResource, List<MonAnModel> monAnList) {
        this.context = context;
        this.layoutResource = layoutResource;
        this.monAnList = monAnList;
    }

    @Override
    public int getCount() {
        return monAnList != null ? monAnList.size() : 0;
    }

    @Override
    public Object getItem(int position) {
        return monAnList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    private static class ViewHolder {
        TextView tvTenMonAn;
        TextView tvGiaTien;
        ImageView imgMonAn;
        Button btnDatMon;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(layoutResource, parent, false);
            holder = new ViewHolder();
            holder.tvTenMonAn = convertView.findViewById(R.id.tvTenMonAn);
            holder.tvGiaTien = convertView.findViewById(R.id.tvGiaTien);
            holder.imgMonAn = convertView.findViewById(R.id.imgMonAn);
            holder.btnDatMon = convertView.findViewById(R.id.btnDatMon);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        MonAnModel monAn = monAnList.get(position);
        holder.tvTenMonAn.setText(monAn.getTenMonAn());
        holder.tvGiaTien.setText(String.format("%,.0f VNĐ", monAn.getGiaTien()));

        // Xử lý sự kiện đặt món trực tiếp từ ListView
        holder.btnDatMon.setOnClickListener(v -> {
            Intent intent = new Intent(context, ChiTietDatMonActivity.class);
            intent.putExtra("ID_MONAN", monAn.getId());
            context.startActivity(intent);
        });

        return convertView;
    }
}

Kết quả kiểm thử và đánh giá hiệu năng

Quá trình kiểm thử được thực hiện trên 2 môi trường: Trình giả lập Google Pixel 4 (Android 11) và thiết bị thực Samsung Galaxy A52 (Android 13).

                 KẾT QUẢ PHÂN BỔ THỜI GIAN ĐÁP ỨNG
+-------------------------------------------------------------+
| Quá trình                       Thời gian (ms)              |
+-------------------------------------------------------------+
| Khởi tạo Android Activity       |==== 120ms                 |
| Gửi HTTP Request tới Hosting    |====== 180ms               |
| MySQL Query & JSON Parsing      |=== 85ms                   |
| Render ListView / Data Binding  |== 65ms                    |
+-------------------------------------------------------------+
| Tổng thời gian phản hồi (E2E): 450ms                        |
+-------------------------------------------------------------+
  • Độ bao phủ kiểm thử chức năng: Đạt 95.8% (23/24 kịch bản kiểm thử bao gồm Đăng nhập, Duyệt danh mục, Thêm giỏ hàng, Lập hóa đơn pass hoàn toàn).
  • Mức độ chiếm dụng bộ nhớ (RAM consumption): Ổn định ở mức 45MB - 68MB, không xảy ra hiện tượng tràn bộ nhớ (OutOfMemory) khi cuộn danh sách lớn.
  • Tỷ lệ thất thoát gói tin: 0% trong điều kiện mạng Wi-Fi nội bộ trường học.

Đổi mới và đóng góp

Đổi mới công nghệ

  1. Mô hình kết nối nhẹ (Lightweight Decoupled Architecture): Thay vì lưu trữ cơ sở dữ liệu SQLite cục bộ trên từng máy đơn lẻ khiến việc đồng bộ tồn kho bất khả thi, hệ thống sử dụng Web Service tập trung với định dạng JSON, giúp việc cập nhật menu giữa nhà bếp và sinh viên diễn ra tức thì.
  2. Tối ưu hóa tài nguyên phần cứng: Tận dụng cơ chế tái sử dụng View của Android Framework kết hợp cùng Dalvik/ART Virtual Machine giúp ứng dụng hoạt động mượt mà cả trên các máy cấu hình thấp mà không bị giật khung hình (FPS duy trì ổn định > 58 FPS).
  3. Chuẩn hóa quy trình đặt hàng học đường: Rút ngắn chu trình phục vụ từ 3 bước thủ công (xếp hàng - gọi món - chờ nấu) sang hình thức đặt trước thông minh (Pre-order).

Đóng góp thực tiễn

  • Đối với Canteen trường: Giảm 65% thời gian xử lý một lượt khách trong giờ cao điểm; loại bỏ hoàn toàn tình trạng sai lệch bill và thất thoát doanh số.
  • Đối với Sinh viên: Chủ động thời gian ăn uống, loại bỏ cảm giác ức chế do chờ đợi kéo dài trong giờ giải lao ngắn ngủi.

Ứng dụng thực tế và triển khai

Hướng dẫn cài đặt và triển khai hệ thống

1. Yêu cầu hệ thống máy chủ và môi trường

  • Web Server: Apache 2.4+ hoặc Nginx có hỗ trợ PHP 7.4/8.x.
  • Cơ sở dữ liệu: MySQL 5.7+ hoặc MariaDB 10.3+.
  • Android Client: Android OS 7.0 (API Level 24) trở lên, RAM tối thiểu 2GB.

2. Các bước cấu hình Backend

  1. Đăng nhập vào cPanel/phpMyAdmin trên Hosting (ví dụ 000webhost hoặc hosting riêng của nhà trường).
  2. Nhập file cơ sở dữ liệu canteen_database.sql.
  3. Chỉnh sửa thông số kết nối trong file db_connect.php:
    define('DB_HOST', 'localhost');
    define('DB_USER', 'u123456_canteen');
    define('DB_PASS', 'SecretPassword@2024');
    define('DB_NAME', 'u123456_canteen_db');
    $conn = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
    mysqli_set_charset($conn, "utf8mb4");
    
  4. Cấu hình bảo mật file .htaccess để chặn truy cập trực tiếp vào các tệp cấu hình.

3. Cấu hình và Build ứng dụng Android

  1. Mở mã nguồn trong Android Studio Iguana.
  2. Thiết lập quyền Internet trong file AndroidManifest.xml:
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.nam_saigon.canteenapp">
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:usesCleartextTraffic="true"
            android:theme="@style/Theme.AppCompat.Light.NoActionBar">
            <!-- Activity Declarations -->
        </application>
    </manifest>
    
  3. Cập nhật hằng số URL API trỏ về domain Web Service: public static final String BASE_URL = "https://canteen.nam-saigon.edu.vn/api/";.
  4. Thực hiện Build > Build Bundle(s) / APK(s) > Build APK(s) để xuất gói cài đặt phát hành nội bộ.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Phụ thuộc kết nối Internet: Ứng dụng chưa hỗ trợ chế độ Offline Cache hoàn chỉnh (Room Database / SQLite Sync) khi người dùng mất kết nối mạng đột ngột.
  • Phương thức thanh toán: Hệ thống mới chỉ tập trung vào việc tạo hóa đơn và thanh toán trực tiếp tại quầy, chưa tích hợp SDK thanh toán trung gian (Momo, VNPay, ZaloPay).
  • Hệ thống cảnh báo thời gian thực: Việc thông báo trạng thái món ăn sẵn sàng còn sử dụng cơ chế kéo làm mới (Pull-to-Refresh) thay vì dùng dịch vụ đẩy tin nhắn thời gian thực (Push Notification qua Firebase Cloud Messaging).

Kế hoạch nâng cấp

  • Giai đoạn 1: Nâng cấp toàn bộ mã nguồn Client từ Java sang Kotlin và kiến trúc hiện đại MVVM (Model-View-ViewModel) kết hợp Jetpack Compose.
  • Giai đoạn 2: Tích hợp Firebase Cloud Messaging (FCM) để gửi thông báo tức thì tới máy sinh viên khi đồ ăn đã được chuẩn bị xong.
  • Giai đoạn 3: Tích hợp cổng thanh toán bảo mật VNPay QR và bổ sung thuật toán gợi ý món ăn thông minh dựa trên lịch sử mua sắm.

Đối tượng hưởng lợi

                      MA TRẬN GIÁ TRỊ HỆ THỐNG
+-------------------------------------------------------------+
| Sinh viên & Giảng viên       Canteen & Nhà trường           |
| - Tiết kiệm 80% thời gian chờ - Tăng 35% doanh thu phục vụ  |
| - Chủ động theo dõi thực đơn - Kiểm soát 100% tài chính     |
+-------------------------------------------------------------+
| Lập trình viên di động       Nghiên cứu khoa học học đường  |
| - Mẫu kiến trúc Java + PHP   - Case-study chuyển đổi số     |
| - Kỹ thuật tối ưu BaseAdapter - Tài liệu tham khảo đồ án    |
+-------------------------------------------------------------+
  • Sinh viên & Giảng viên: Tiết kiệm 80% thời gian chờ đợi nhận món; đảm bảo chất lượng bữa ăn trong giờ nghỉ ngơi ngắn.
  • Chủ cơ sở Canteen: Quản lý chính xác doanh thu theo từng ca bán hàng; kiểm soát tồn kho nguyên liệu hiệu quả, loại bỏ hoàn toàn sai sót thất thoát do ghi chép giấy tờ.
  • Lập trình viên & Sinh viên khóa dưới: Cung cấp tài liệu tham khảo hoàn chỉnh về quy trình kết nối Android Native với cơ sở dữ liệu MySQL thông qua Web Service tự xây dựng.

Câu hỏi thường gặp

1. Yêu cầu phần cứng tối thiểu để triển khai ứng dụng Android này là gì?

Thiết bị di động của người dùng chỉ cần chạy hệ điều hành Android từ 7.0 trở lên, trang bị RAM tối thiểu 2GB và bộ nhớ trống khả dụng khoảng 50MB. Về phía server, ứng dụng có thể chạy mượt mà trên các gói Shared Hosting Linux cơ bản hỗ trợ PHP và MySQL.

2. Hệ thống xử lý thế nào khi xảy ra mất kết nối Internet trong lúc đặt món?

Hiện tại, ứng dụng sẽ bắt lỗi NetworkException và hiển thị thông báo lỗi (Toast/Dialog) yêu cầu người dùng kiểm tra kết nối mạng. Trong phiên bản nâng cấp, cơ chế Local Database (Room Database) sẽ được thêm vào để lưu tạm giỏ hàng cục bộ và tự động gửi lại khi có tín hiệu Internet.

3. Tại sao dự án sử dụng Web Service PHP trung gian thay vì kết nối trực tiếp Android tới MySQL?

Việc kết nối trực tiếp ứng dụng di động tới cổng MySQL (Remote MySQL) là một lỗi nghiêm trọng về bảo mật (dễ bị lộ chuỗi kết nối và tài khoản Database thông qua dịch ngược mã APK). Sử dụng Web Service PHP trung gian giúp đóng gói logic xử lý, kiểm duyệt tham số đầu vào và ngăn chặn hiệu quả các cuộc tấn công SQL Injection.

4. Chi phí duy trì hệ thống hàng tháng ước tính là bao nhiêu?

Với quy mô một trường cao đẳng khoảng 3.000 - 5.000 sinh viên, chi phí thuê máy chủ Cloud/Hosting băng thông không giới hạn chỉ dao động từ 150.000 đến 300.000 VNĐ/tháng, hoàn toàn tối ưu và mang lại hiệu quả kinh tế vượt trội so với lợi ích thu được.

5. Có thể mở rộng ứng dụng để quản lý nhiều cơ sở canteen cùng lúc không?

Có. Cơ sở dữ liệu đã được thiết kế mở, lập trình viên chỉ cần bổ sung trường id_cơ_sở trong bảng tbl_dichvu_monan và cập nhật logic lọc API theo vị trí GPS hoặc chi nhánh do người dùng chỉ định.


Kết luận

Đồ án tốt nghiệp "Xây dựng ứng dụng di động quản lý đặt đồ ăn từ canteen" của sinh viên Võ Chánh Hải tại Trường Cao Đẳng Bách Khoa Nam Sài Gòn đã giải quyết trọn vẹn bài toán thực tế về số hóa quy trình phục vụ ăn uống trong môi trường giáo dục. Dự án chứng minh tính khả thi cao khi kết hợp nhuần nhuyễn giữa nền tảng Android Native và công nghệ Web Service PHP/MySQL, mang lại một sản phẩm phần mềm hoàn chỉnh từ thiết kế cơ sở dữ liệu đến giao diện người dùng. Đây không chỉ là bước đệm vững chắc cho tác giả trên con đường phát triển kỹ thuật phần mềm chuyên nghiệp mà còn đóng góp một giải pháp công nghệ thiết thực cho quá trình chuyển đổi số học đường.