Bối cảnh và vấn đề nghiên cứu

Trong hoạt động kinh doanh nhà hàng và dịch vụ ăn uống, quy trình quản lý và theo dõi bàn ăn theo phương pháp thủ công truyền thống (sử dụng hóa đơn giấy và ghi chép tay) bộc lộ nhiều điểm bất cập. Các hạn chế này thể hiện rõ ở khâu tính tiền thanh toán cho khách hàng, đòi hỏi tốc độ xử lý nhanh chóng và độ chính xác cao để hạn chế thất thoát và nhầm lẫn. Nhằm giải quyết bài toán nghiệp vụ này, đề tài "Xây dựng ứng dụng quản lý bàn ăn trên thiết bị di động Android" được sinh viên Khoa Tùng Dương thực hiện tại Trường Đại học Dân lập Hải Phòng dưới sự hướng dẫn của Th.S Phùng Anh Tuấn (thời gian thực hiện từ ngày 01/07/2019 đến ngày 21/09/2019).

Mục tiêu và các nhiệm vụ nghiên cứu được văn bản xác định cụ thể gồm:

  1. Tìm hiểu tổng quan về hệ điều hành Android (lịch sử, cấu trúc, cơ chế quản lý bộ nhớ và bảo mật).
  2. Tìm hiểu môi trường lập trình Android Studio, ngôn ngữ Java và các thành phần cốt lõi của một dự án Android.
  3. Khảo sát và tìm hiểu quy trình nghiệp vụ quản lý bàn ăn, nhân viên, thực đơn và doanh thu tại nhà hàng.
  4. Ứng dụng các kỹ thuật đã nghiên cứu để xây dựng chương trình thực nghiệm trên thiết bị di động Android, đóng gói thành tệp tin cài đặt *.apk chạy trên điện thoại thật.

Đối tượng nghiên cứu của đồ án là quy trình quản lý bàn ăn nhà hàng và kỹ thuật lập trình ứng dụng di động trên nền tảng Android. Phạm vi nghiên cứu về mặt không gian được thực hiện tại Trường Đại học Dân lập Hải Phòng, sử dụng tập dữ liệu kiểm thử giả lập để đánh giá các chức năng tính toán và quản lý.

Cơ sở lý thuyết và phương pháp

Khung lý thuyết của đề tài tập trung vào hệ điều hành Android và môi trường phát triển ứng dụng di động của Google:

  • Kiến trúc hệ điều hành Android: Phân tích mô hình 4 tầng gồm tầng hạt nhân Linux (phiên bản 2.6), tầng thư viện và tầng thực thi Android (thư viện C/C++, SQLite, WebKit, máy ảo Dalvik VM cùng các thư viện lõi Java), tầng khung ứng dụng (Activity Manager, Window Manager, Resource Manager, Notification Manager, Telephony Manager...) và tầng ứng dụng.
  • Vòng đời Activity và quản lý giao diện: Cơ chế ngăn xếp Activity (Activity Stack) và các trạng thái Running, Paused, Stopped với các phương thức can thiệp vòng đời (onCreate, onStart, onResume, onPause, onStop, onDestroy). Khung giao diện sử dụng các View (TextView, Button, ImageButton, ImageView, EditText, ListView, GridView) và ViewGroup (LinearLayout, RelativeLayout, FrameLayout, TableLayout). Cơ chế truyền dữ liệu giữa các Activity thông qua Intent và phương thức putExtra().
  • Hệ quản trị cơ sở dữ liệu SQLite: Khái niệm cơ sở dữ liệu nhúng cục bộ, lớp trợ giúp SQLiteOpenHelper, đối tượng SQLiteDatabase và cấu trúc duyệt dữ liệu Cursor cùng các đối tượng trung gian ContentValues.

Phương pháp nghiên cứu được tác giả áp dụng bao gồm:

  • Phương pháp phân tích và tổng hợp lý thuyết: Nghiên cứu tài liệu kỹ thuật về SDK Android, Android Studio và hệ quản trị SQLite.
  • Phương pháp phân tích nghiệp vụ: Mô hình hóa các tác vụ quản lý nhân viên, bàn ăn, thực đơn, đặt món và thống kê doanh thu.
  • Phương pháp thực nghiệm phần mềm: Thiết kế, lập trình các module chức năng bằng Java trên Android Studio, tích hợp cơ sở dữ liệu SQLite cục bộ, đóng gói file .apk và chạy thử nghiệm với các kịch bản dữ liệu giả lập.

Thiết kế và triển khai

Hệ thống được thiết kế dưới dạng ứng dụng di động cục bộ (Standalone Mobile App) trên hệ điều hành Android, sử dụng ngôn ngữ lập trình Java kết hợp giao diện định dạng XML.

Kiến trúc dữ liệu và xử lý nghiệp vụ

Dữ liệu của ứng dụng được lưu trữ tập trung trong cơ sở dữ liệu SQLite thông qua một lớp kế thừa từ SQLiteOpenHelper. Lớp này đảm nhiệm việc khởi tạo bảng (onCreate), nâng cấp cấu trúc (onUpgrade), và cung cấp các phương thức thao tác dữ liệu:

  • getWritableDatabase() và getReadableDatabase() để mở kết nối đọc/ghi.
  • Lệnh db.execSQL() để khởi tạo cấu trúc bảng dữ liệu.
  • Phương thức db.insert(), db.update(), db.delete() phối hợp với đối tượng ContentValues để xử lý các bản ghi người dùng, bàn ăn, thực đơn.
  • Phương thức db.rawQuery() trả về con trỏ Cursor (moveToFirst(), moveToNext(), isAfterLast(), getString(), getInt()) phục vụ truy vấn danh sách và trích xuất số liệu thống kê.
public class DatabaseHelper extends SQLiteOpenHelper {
    public DatabaseHelper(Context context) {
        super(context, "QuanLyBanAn.db", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String sqlTaoBang = "CREATE TABLE ...";
        db.execSQL(sqlTaoBang);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // Xu ly nang cap phien ban co so du lieu
    }
}

Các module chức năng và giao diện triển khai

Ứng dụng được tổ chức thành các phân hệ nghiệp vụ chính:

Phân hệ chức năng Thành phần giao diện / Kỹ thuật sử dụng Nghiệp vụ xử lý chính
Xác thực & Người dùng Activity Đăng nhập, Đăng ký, Danh sách nhân viên Kiểm tra đăng nhập nhân viên, thêm mới, cập nhật thông tin, xóa tài khoản nhân viên.
Quản lý Bàn ăn GridView hiển thị bàn ăn, Dialog/Activity thêm, sửa, xóa bàn Quản lý danh mục bàn, hiển thị trạng thái bàn ăn, cơ chế đổi màu bàn ăn sau khi gọi món.
Quản lý Thực đơn ListView, Dialog chọn ảnh món ăn, Form thêm loại/món Thêm và hiển thị danh mục loại món ăn, thêm món ăn kèm hình ảnh, đơn giá.
Gọi món & Thanh toán Form chọn món, nhập số lượng, Giao diện hóa đơn thanh toán Nhân viên phục vụ chọn món cho từng bàn, nhập số lượng, tính tổng tiền và thực hiện thanh toán bàn ăn.
Báo cáo & Thống kê Giao diện thống kê ngày, khoảng ngày, theo tháng Truy vấn dữ liệu doanh thu qua Cursor, hiển thị doanh thu theo ngày cụ thể, từ ngày đến ngày và theo tháng.

Nội dung chính theo từng chương

Mở đầu

Tác giả trình bày tính cấp thiết của việc ứng dụng công nghệ thông tin trong các ngành nghề kinh doanh, đặc biệt là hoạt động quản lý tại các nhà hàng. Phân tích các nhược điểm của việc quản lý theo dõi bàn ăn và tính tiền thủ công bằng hóa đơn giấy. Đề xuất giải pháp xây dựng ứng dụng di động trên nền tảng Android giúp nhân viên phục vụ đặt món trực tiếp, tránh sai sót khi tính tiền và hỗ trợ theo dõi doanh thu trên điện thoại thông minh, máy tính bảng. Cấu trúc toàn văn đồ án gồm 4 chương nội dung và phần kết luận.

Chương 1: Giới thiệu về hệ điều hành Android

Chương 1 cung cấp cái nhìn tổng quan về hệ điều hành Android:

  • Lịch sử hình thành và phát triển: Android ban đầu do Android, Inc. phát triển, được Google mua lại vào năm 2005 và chính thức ra mắt năm 2007. Chiếc điện thoại đầu tiên chạy Android là HTC Dream (phát hành ngày 22/10/2008). Biểu trưng robot xanh do Irina Blok thiết kế. Tác giả dẫn các số liệu thống kê: Android chiếm 75% thị phần điện thoại thông minh toàn cầu vào quý 3 năm 2012 với 500 triệu thiết bị kích hoạt (1,3 triệu lượt/ngày), kho ứng dụng Google Play đạt 700.000 ứng dụng và 25 tỷ lượt tải (tính đến tháng 10/2012). Phiên bản Android 9.0 Pie ra mắt vào tháng 8/2018. Dòng thiết bị phần cứng Nexus chủ lực của Google hợp tác với HTC (Nexus One), LG (Nexus 4), Samsung (Nexus 10).
  • Giao diện và ứng dụng: Giao diện cảm ứng chạm trực tiếp, màn hình chính với widget/icon, thanh trạng thái (Status Bar), kho ứng dụng Google Play và Amazon Appstore, định dạng đóng gói tệp tin APK.
  • Kiến trúc hệ thống 4 tầng:
    1. Tầng hạt nhân Linux: Nhân Linux 2.6 với các trình điều khiển phần cứng như Display Driver, Camera Driver, Bluetooth Driver, USB Driver, Keypad Driver, Wi-Fi Driver, Audio Driver, Binder IPC Driver, M-system Driver, Power Management.
    2. Tầng thư viện và thực thi (Android Runtime): Các thư viện C/C++ (System C Library, Media Libraries, LibWebCore hỗ trợ HTML5/CSS/JavaScript, SQLite) và máy ảo Dalvik Virtual Machine cùng hệ thống thư viện Core Java.
    3. Tầng khung ứng dụng (Application Framework): Các bộ quản lý cấp cao viết bằng Java (Activity Manager, Telephony Manager, XMPP Service, Location Manager, Window Manager, Notification Manager, Resource Manager).
    4. Tầng ứng dụng (Applications): Tập hợp các ứng dụng tích hợp sẵn (Phone, Contacts, Browser, SMS, Calendar, Camera...) và ứng dụng cài đặt bổ sung từ bên thứ ba.
  • Quản lý bộ nhớ và bảo mật: Cơ chế tự động giải phóng ứng dụng không hoạt động khi bộ nhớ RAM thấp; kiến trúc cô lập ứng dụng trong vùng an toàn (Sandbox) và hệ thống phân quyền khi cài đặt.
  • Ưu và nhược điểm: Ưu điểm về tính mở, khả năng tùy biến cao, đa dạng thiết bị, kho ứng dụng phong phú; nhược điểm về nguy cơ phần mềm độc hại, sự phân mảnh phần cứng và cập nhật phần mềm không đồng đều.

Chương 2: Môi trường lập trình Android Studio

Chương 2 trình bày chi tiết về môi trường và công cụ phát triển phần mềm:

  • Thiết lập môi trường: Hướng dẫn cài đặt bộ công cụ Java Development Kit (JDK) từ Oracle và cài đặt Android Studio tích hợp Android SDK.
  • Cấu trúc một dự án Android:
    • Tệp cấu hình AndroidManifest.xml: Khai báo quyền ứng dụng, theme, phiên bản SDK và định nghĩa Activity khởi chạy đầu tiên (<intent-filter>, android.intent.action.MAIN, android.intent.category.LAUNCHER).
    • Mã nguồn Java: Cấu trúc các lớp điều khiển và xử lý sự kiện tương tác (View.OnClickListener).
    • Thư mục tài nguyên (res/): Bao gồm drawable/ (chứa tệp đồ họa PNG, XML), layout/ (chứa tệp XML định nghĩa giao diện người dùng), mipmap/ (chứa icon ứng dụng ic_launcher), values/ (chứa color.xml, strings.xml, styles.xml).
    • Công cụ biên dịch Gradle (build.gradle): Tự động hóa quá trình đóng gói tài nguyên và mã nguồn thành ứng dụng chạy trên máy ảo.
  • Vòng đời ứng dụng và Activity: Hoạt động của ngăn xếp Activity (Activity Stack); 3 trạng thái cơ bản (Running, Paused, Stopped) và các phương thức callback xử lý vòng đời (onCreate, onStart, onResume, onPause, onStop, onDestroy).
  • Các thành phần giao diện (View và ViewGroup): Định nghĩa và cú pháp khai báo XML/Java cho các View cơ bản (TextView, Button, ImageButton, ImageView, EditText). Trình bày chi tiết cơ chế hiển thị danh sách dạng bảng và lưới thông qua ListView và GridView, vai trò của Adapter trung gian trong việc liên kết dữ liệu từ DataSource (như ArrayList) lên View. Các bố cục giao diện gồm LinearLayout, RelativeLayout, FrameLayout, TableLayout.
  • Cơ chế Intent: Khái niệm Intent làm cầu nối truyền thông điệp giữa các Activity độc lập và phương thức truyền tham số đính kèm (intent.putExtra()).

Chương 3: Kỹ thuật xây dựng ứng dụng

Chương 3 đi sâu vào các giải pháp kỹ thuật cụ thể được sử dụng để lập trình các chức năng của ứng dụng:

  • Kỹ thuật cơ sở dữ liệu SQLite: Cấu trúc tệp nhúng dưới 500KB; thiết lập lớp kế thừa SQLiteOpenHelper với 4 tham số khởi tạo (context, name, factory, version). Cài đặt chi tiết các hàm nghiệp vụ: tạo bảng (onCreate), thêm dữ liệu (insert kết hợp ContentValues), cập nhật (update), xóa (delete), truy vấn dữ liệu (rawQuery phối hợp đối tượng Cursor).
  • Nghiệp vụ quản lý người dùng (nhân viên): Kỹ thuật xử lý thêm mới nhân viên, cập nhật thông tin nhân viên, xóa nhân viên khỏi hệ thống, trích xuất danh sách nhân viên và kiểm tra đăng nhập tài khoản.
  • Nghiệp vụ quản lý bàn ăn: Kỹ thuật thêm mới bàn ăn, đổi tên bàn ăn theo vị trí sắp xếp, xóa bàn ăn và tải danh sách bàn ăn lên giao diện.
  • Nghiệp vụ quản lý thực đơn: Kỹ thuật tạo mới loại món ăn, trích xuất danh mục loại món, thêm món ăn chi tiết và tải danh sách món ăn.
  • Nghiệp vụ quản lý thống kê: Kỹ thuật truy vấn dữ liệu báo cáo doanh thu theo ngày, thống kê doanh thu trong khoảng thời gian từ ngày đến ngày và thống kê tổng hợp theo tháng.

Chương 4: Chương trình ứng dụng thực nghiệm

Chương 4 mô tả kết quả lập trình và thực nghiệm giao diện của hệ thống:

  • Phát biểu bài toán và thiết kế dữ liệu: Xác định sơ đồ chức năng và cấu trúc các bảng dữ liệu cần thiết phục vụ quản lý nhà hàng.
  • Hiện thực hóa các màn hình giao diện: Mô tả chi tiết 24 màn hình chức năng đã xây dựng và kiểm thử, bao gồm:
    • Giao diện đăng ký tài khoản và màn hình đăng nhập hệ thống.
    • Giao diện thực đơn Menu chính và giao diện quản lý danh sách bàn ăn.
    • Các màn hình thêm mới bàn ăn, sửa tên bàn ăn, xóa bàn ăn.
    • Màn hình quản lý loại món ăn, thêm loại món ăn, màn hình danh sách món ăn, thêm món ăn vào thực đơn và màn hình chọn ảnh minh họa cho món ăn.
    • Màn hình danh sách nhân viên, cập nhật thông tin và xóa nhân viên.
    • Giao diện gọi món (chọn món và nhập số lượng món ăn cho từng bàn).
    • Cơ chế hiển thị trực quan: Bàn ăn tự động đổi màu sắc trên giao diện sau khi được nhân viên gọi món thành công để phân biệt bàn đang có khách.
    • Giao diện hóa đơn thanh toán tiền cho bàn ăn.
    • Phân hệ thống kê doanh thu: Giao diện chọn loại thống kê, màn hình thống kê doanh thu theo ngày, thống kê doanh thu từ ngày đến ngày, thống kê doanh thu theo tháng.
    • Giao diện xác nhận thoát ứng dụng.

Kết quả và đóng góp

Đồ án đã đạt được các kết quả cụ thể theo đúng nội dung đề cương và nhiệm vụ thiết kế tốt nghiệp được giao:

  • Xây dựng hoàn chỉnh chương trình ứng dụng di động quản lý bàn ăn nhà hàng chạy trên hệ điều hành Android, được đóng gói thành công thành tệp cài đặt *.apk để chạy thực tế trên thiết bị di động.
  • Triển khai đầy đủ hệ thống cơ sở dữ liệu cục bộ SQLite, thực hiện trọn vẹn các thao tác thêm, sửa, xóa, truy vấn dữ liệu cho các thực thể nhân viên, bàn ăn, thực đơn món ăn và hóa đơn đặt bàn.
  • Xây dựng giao diện trực quan hỗ trợ nhân viên phục vụ: Hỗ trợ gọi món, cập nhật số lượng món ăn tại bàn, hiển thị trạng thái bàn ăn thông qua cơ chế đổi màu sắc tự động khi có khách, tính tiền thanh toán hóa đơn và trích xuất số liệu báo cáo thống kê doanh thu theo các mốc thời gian (ngày, khoảng ngày, tháng).
  • Về mặt đánh giá: Giảng viên hướng dẫn ghi nhận sinh viên đã thực hiện đầy đủ các nội dung đề ra trong đề cương, nội dung đồ án có tính thực tế cao.

Hạn chế và hướng nghiên cứu tiếp

Dựa trên toàn văn đồ án và phiếu nhận xét của giảng viên hướng dẫn, các mặt hạn chế và định hướng phát triển của đề tài gồm:

  • Hạn chế:
    • Việc kiểm thử chương trình chủ yếu dựa trên các số liệu giả lập, chưa triển khai thực tế trên hệ thống nhà hàng với quy mô dữ liệu lớn.
    • Ứng dụng hoạt động dựa trên cơ sở dữ liệu SQLite cục bộ trên từng thiết bị đơn lẻ, chưa có kiến trúc mạng kết nối đồng bộ hóa dữ liệu thời gian thực giữa nhiều thiết bị nhân viên và máy chủ quản lý trung tâm.
    • Giảng viên hướng dẫn nhận xét khả năng làm việc độc lập của sinh viên còn hạn chế, chưa hoàn toàn làm chủ nội dung đồ án và phần trình bày cần được cấu trúc rõ ràng, logic hơn.
  • Hướng phát triển tiếp: Tác giả nêu định hướng trong phần kết luận về việc tiếp tục hoàn thiện các thiếu sót chức năng, mở rộng khả năng kết nối mạng và tối ưu hóa hệ thống để phục vụ tốt hơn nhu cầu thực tế của nhà hàng.

Giá trị tham khảo

Đồ án là tài liệu tham khảo phù hợp cho:

  • Sinh viên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm đang học tập hoặc làm đồ án môn học, đồ án tốt nghiệp về lập trình di động Android sử dụng ngôn ngữ Java và công cụ Android Studio.
  • Người học cần tài liệu hướng dẫn từng bước về việc sử dụng các thành phần cơ bản trong Android: Vòng đời Activity, Intent, các View danh sách (ListView, GridView), xây dựng Adapter tùy biến và thao tác cơ sở dữ liệu SQLite bằng lớp SQLiteOpenHelper.
  • Các lập trình viên muốn tham khảo quy trình xây dựng ứng dụng quản lý nhà hàng / quán ăn dạng cục bộ (POS đơn giản) trên nền tảng di động.

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

1. Đồ án sử dụng phiên bản hệ điều hành Android và môi trường phát triển nào?
Đồ án nghiên cứu hệ điều hành Android (với kiến trúc dựa trên nhân Linux 2.6, phiên bản cập nhật ghi nhận tại thời điểm nghiên cứu là Android 9.0 Pie) và sử dụng môi trường phát triển chính thức Android Studio kết hợp Java Development Kit (JDK) và Android SDK.

2. Ứng dụng lưu trữ và quản lý dữ liệu bằng công nghệ gì?
Ứng dụng sử dụng hệ quản trị cơ sở dữ liệu nhúng SQLite. Dữ liệu được lưu trữ trong một tệp duy nhất trên thiết bị di động, thao tác thông qua lớp SQLiteOpenHelper và đối tượng SQLiteDatabase với các phương thức execSQL, insert, update, delete, rawQuery.

3. Cơ chế nào giúp nhân viên nhận biết bàn nào đang có khách trên giao diện?
Ứng dụng xây dựng tính năng đổi màu trực quan: Khi nhân viên thực hiện thao tác gọi món thành công cho một bàn ăn nào đó, biểu tượng bàn ăn tương ứng trên giao diện danh sách bàn (GridView) sẽ tự động thay đổi màu sắc để hiển thị trạng thái đang phục vụ.

4. Phân hệ thống kê của ứng dụng hỗ trợ trích xuất dữ liệu doanh thu theo những tiêu chí nào?
Chức năng thống kê trong ứng dụng hỗ trợ 3 hình thức xem báo cáo doanh thu: Thống kê doanh thu theo một ngày cụ thể, thống kê doanh thu trong một khoảng thời gian (từ ngày đến ngày), và thống kê tổng hợp doanh thu theo tháng.

5. Đồ án được thử nghiệm trên nguồn dữ liệu nào và kết quả đóng gói ra sao?
Theo nhiệm vụ đề tài, đồ án sử dụng các tập số liệu giả lập để thiết kế và tính toán. Kết quả cuối cùng được đóng gói thành tệp tin cài đặt có định dạng *.apk để cài đặt và chạy thử nghiệm trực tiếp trên điện thoại Android thật.

Kết luận

Đồ án tốt nghiệp của sinh viên Khoa Tùng Dương đã nghiên cứu có hệ thống về hệ điều hành Android, môi trường lập trình Android Studio và hệ quản trị cơ sở dữ liệu SQLite. Tác giả đã hiện thực hóa thành công ứng dụng thực nghiệm quản lý bàn ăn nhà hàng với đầy đủ các nghiệp vụ quản lý nhân viên, thực đơn, hỗ trợ nhân viên đặt món, đổi màu trạng thái bàn, tính toán hóa đơn thanh toán và thống kê doanh thu. Kết quả của đề tài đáp ứng các yêu cầu đề cương tốt nghiệp ngành Công nghệ Thông tin tại Trường Đại học Dân lập Hải Phòng, đồng thời là tài liệu tham khảo hữu ích cho việc nghiên cứu lập trình ứng dụng Android cơ bản.