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

Trong bối cảnh công nghệ số hiện nay, các nền tảng trực tuyến phục vụ ăn uống như GrabFood, Foody hay ClingMe đã phát triển mạnh mẽ chức năng đặt thức ăn giao tận nhà. Tuy nhiên, theo nhóm tác giả Trần Hữu Hoàn và Nguyễn Thanh Minh (Trường Đại học Công nghệ Thông tin – Đại học Quốc gia TP. Hồ Chí Minh), hình thức ăn uống tại nhà vẫn bộc lộ nhiều bất tiện thực tế đối với người dùng: phải tự dọn dẹp sau bữa ăn, phát sinh thêm chi phí giao hàng, không gian sinh hoạt chật hẹp hoặc đơn điệu, dễ gây ồn ào ảnh hưởng đến người xung quanh. Do đó, nhu cầu di chuyển trực tiếp đến các nhà hàng, quán ăn vẫn là giải pháp phổ biến để thay đổi không khí và giao lưu cùng bạn bè, gia đình. Xuất phát từ thực tế này, đề tài "Ứng dụng quản lý quán ăn tại Thành phố Thủ Đức" được thực hiện nhằm xây dựng một ứng dụng di động hỗ trợ dẫn đường, gợi ý địa điểm ăn uống và hỗ trợ đặt bàn trực tiếp.

Mục tiêu và nhiệm vụ nghiên cứu của đề tài được xác định cụ thể như sau:

  1. Khảo sát thực tế giao diện và chức năng của các ứng dụng ăn uống, đặt món hiện hành (Foody, GrabFood, ClingMe) nhằm tìm ra ưu điểm, nhược điểm và xác định các tính năng khác biệt.
  2. Tìm hiểu và so sánh các công nghệ phát triển ứng dụng di động (Native App, Cross-Platform, Hybrid App) và các mô hình quy trình kỹ thuật phần mềm (Mô hình thác nước, Mô hình xoắn ốc).
  3. Tìm hiểu Hệ thống thông tin địa lý (GIS) và tích hợp các giao diện lập trình ứng dụng (API) của VIETMAP để giải quyết bài toán định vị và dẫn đường.
  4. Xây dựng cơ sở dữ liệu và hệ thống xác thực người dùng trên nền tảng đám mây Firebase (Cloud Firestore, Firebase Authentication).
  5. Thiết lập hệ thống gợi ý dựa trên tập luật (Rule-based) phân loại theo điều kiện thời tiết, độ tuổi người dùng và điểm đánh giá thực tế.
  6. Thiết kế giao diện trên Figma và hiện thực hóa ứng dụng di động bằng React Native, cung cấp đầy đủ chức năng cho cả hai nhóm tác nhân: khách hàng (tìm kiếm, lọc, xem lộ trình, đặt bàn, đánh giá) và nhà quản lý quán ăn (duyệt đơn đặt bàn, quản lý thực đơn, xem thống kê).

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Quy trình quản lý, tìm kiếm, định tuyến dẫn đường, đặt bàn và hệ thống gợi ý quán ăn trên thiết bị di động.
  • Phạm vi không gian: Các địa điểm ăn uống, nhà hàng trên địa bàn Thành phố Thủ Đức, Thành phố Hồ Chí Minh.
  • Phạm vi dữ liệu: Thu thập bộ dữ liệu thực tế gồm 20 quán ăn với các thông tin chi tiết: tên, địa chỉ, thực đơn (menu), phân loại danh mục và tọa độ không gian.
  • Phạm vi kỹ thuật: Triển khai cài đặt, kiểm thử ứng dụng tập trung trên nền tảng Android bằng framework React Native kết nối dịch vụ Firebase.

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

Khóa luận tổng hợp các khung lý thuyết, công nghệ và phương pháp kỹ thuật phần mềm phục vụ cho việc phát triển hệ thống:

  1. Công nghệ phát triển ứng dụng di động: Tác giả phân tích và so sánh ba phương pháp tiếp cận chính để lựa chọn công nghệ phù hợp:
  • Native App Development: Lập trình riêng biệt cho từng hệ điều hành (Swift/Objective-C trên iOS; Java/Kotlin trên Android). Ưu điểm là hiệu năng cao, bảo mật tốt, build nhẹ; nhược điểm là chi phí cao, tốn thời gian xây dựng và bảo trì hai mã nguồn độc lập.
  • Cross-Platform App: Viết mã một lần và triển khai trên nhiều nền tảng (React Native, Flutter, Xamarin). Ưu điểm là tiết kiệm chi phí, tái sử dụng mã nguồn, phát triển nhanh; nhược điểm là hiệu năng và trải nghiệm có phần hạn chế so với Native, phụ thuộc vào framework.
  • Hybrid App: Kết hợp giữa ứng dụng gốc và web view (HTML, CSS, JavaScript với Ionic, Apache Cordova). Ưu điểm là chi phí thấp, tận dụng kỹ năng web; nhược điểm là hiệu năng thấp, hạn chế về chức năng chuyên sâu và quy trình kiểm duyệt trên cửa hàng ứng dụng.
Tiêu chí Native App Development Cross Platform Hybrid App
Codebase Riêng biệt cho 2 nền tảng Duy nhất 1 đoạn mã cho 2 nền tảng Duy nhất 1 đoạn mã cho 2 nền tảng
Thư viện Không phụ thuộc vào thư viện/mã nguồn mở Phụ thuộc nhiều vào các thư viện Phụ thuộc nhiều vào các thư viện
Debug Native debug tool Phụ thuộc vào các framework Native + web debug tool
Công cụ (Tools) Xcode, Android Studio React Native, Xamarin, Flutter Ionic, Apache Cordova
Ưu điểm Hiệu năng tốt, bảo mật dữ liệu, trải nghiệm khách hàng cao, build nhẹ Một bản code cho 2 nền tảng, chi phí thấp, dễ mở rộng, phát triển nhanh Chi phí thấp, phát triển nhanh, tái sử dụng mã nguồn, dễ bảo trì
Nhược điểm Tốn thời gian bảo trì, chi phí cao, một số tính năng không có sẵn Hiệu suất và trải nghiệm kém hơn Native, phụ thuộc framework Hiệu suất kém hơn Native, chức năng hạn chế, rào cản phê duyệt App Store
  1. Mô hình quy trình phát triển phần mềm: Tác giả xem xét hai mô hình kỹ thuật phần mềm truyền thống và cải tiến:
  • Mô hình thác nước (Waterfall Model): Thực hiện tuần tự qua các giai đoạn: Nghiên cứu khả thi (Feasibility Study) -> Phân tích đặc tả yêu cầu (Requirements Analysis and Specification) -> Thiết kế (Design) -> Lập trình và kiểm thử đơn vị (Coding and Unit Testing) -> Tích hợp và kiểm thử hệ thống (Integration and System testing) -> Bảo trì (Maintenance). Ưu điểm là đơn giản, rõ ràng; nhược điểm là khó quay lại sửa đổi khi các giai đoạn trước phát sinh lỗi.
  • Mô hình xoắn ốc (Spiral Model): Kết hợp giữa tính tuần tự và lặp vòng: Lập kế hoạch (Planning) -> Phân tích lỗi và rủi ro (Risk Analysis/Evaluation) -> Phát triển và triển khai (Development) -> Lập kế hoạch cho bước tiếp theo.
Tiêu chí so sánh Waterfall Model Spiral Model
Mức độ phức tạp Đơn giản Phức tạp hơn
Phương pháp Tuần tự Lặp lại các bước
Phát hiện và khắc phục lỗi, rủi ro Sau khi hoàn thành các giai đoạn Khắc phục sớm lỗi và rủi ro
Quy mô dự án Nhỏ Lớn
Tính linh hoạt Khó Không khó
Rủi ro Cao Thấp
Chi phí Thấp Cao
Tái sử dụng Khó Có thể
  1. Phương pháp nghiên cứu thực nghiệm:
  • Phương pháp khảo sát ứng dụng đối chiếu: Phân tích thực tế giao diện và tính năng của 3 ứng dụng phổ biến: Foody (thành lập năm 2012 tại TP.HCM, giao diện đỏ - trắng, hỗ trợ ShopeePay, các nút đặt còn nhỏ), GrabFood (giao diện xanh lá - trắng, hiển thị thực đơn gọn gàng, thông tin quán còn hạn chế) và ClingMe (Công ty CP Gigatum Việt Nam, giao diện cam - trắng, có thế mạnh về cá nhân hóa).
  • Phương pháp thiết kế dữ liệu NoSQL: Tổ chức dữ liệu trên Google Firebase (Cloud Firestore) theo mô hình Key - Value và cấu trúc Document/Collection, nhận và gửi dữ liệu về ứng dụng dưới định dạng JSON mà không cần viết Web API máy chủ riêng.
  • Phương pháp tích hợp Hệ thống thông tin địa lý (GIS): Nhúng bản đồ xác định vị trí hiện tại của người dùng qua tọa độ kinh độ (Longitude) và vĩ độ (Latitude), kết hợp tọa độ nhà hàng dạng điểm (POINT) từ Firebase; sử dụng Autocomplete API để gợi ý tìm kiếm địa chỉ và Route Maps API của VIETMAP để tính toán lộ trình dạng đường (LINESTRING), từ đó mô phỏng dẫn đường trực tuyến.

Thiết kế và triển khai

Là một khóa luận tốt nghiệp thuộc chuyên ngành Công nghệ thông tin định hướng phát triển phần mềm di động, phần thiết kế và cài đặt hệ thống được trình bày cụ thể qua kiến trúc dữ liệu và quy trình thiết lập môi trường:

1. Kiến trúc cơ sở dữ liệu (Cloud Firestore)

Cơ sở dữ liệu được tổ chức thành 5 tập hợp thực thể (Collections) phi quan hệ:

  • User: Lưu trữ tài khoản người dùng gồm các thuộc tính Userid (chuỗi khóa định danh), Name (chuỗi), Email (chuỗi), Password (chuỗi mật khẩu), Sdt (chuỗi số điện thoại), Age (chuỗi thể hiện độ tuổi) và Favorite (mảng lưu cờ đánh dấu các quán ăn yêu thích).
  • Restaurant: Lưu trữ thông tin quán ăn gồm ID (số định danh quán), Name (tên quán), Address (địa chỉ), Location (mảng lưu cặp tọa độ địa lý), Duration (chuỗi thời gian di chuyển), Rating (số điểm đánh giá trung bình), Categories (mảng danh mục kinh doanh), Menu (mảng thực đơn các món ăn), Orderlist (mảng danh sách món khách đặt trước) và Photo (map liên kết hình ảnh quán).
  • Comment: Quản lý bình luận gồm Content (chuỗi nội dung bình luận), RestaurantID (số định danh quán tương ứng) và User (kiểu map chứa ID và Name của người bình luận).
  • Rating: Quản lý điểm số gồm RestaurantID (số định danh quán) và ListRating (mảng lưu danh sách các lượt đánh giá từ 1 đến 5 sao của người dùng).
  • Categories: Quản lý danh mục món ăn gồm ID (số định danh danh mục), Name (tên danh mục món) và Icon (map chứa hình ảnh biểu trưng).

2. Thiết kế giao diện (UI/UX)

  • Giao diện được phác thảo trên công cụ Figma nhằm thiết lập luồng chuyển trang, sơ đồ điều hướng và hiệu ứng tương tác.
  • Bố cục sử dụng tông màu tương phản cao (nền trắng chữ đen), các khối nội dung được căn giữa nhằm tăng tính tập trung cho người sử dụng thiết bị cầm tay.

3. Quy trình cài đặt và cấu hình môi trường

Việc hiện thực hóa phần mềm trên hệ điều hành Android đòi hỏi các bước cấu hình hệ thống:

  • Thiết lập môi trường Java Development Kit (JDK), cấu hình biến môi trường JAVA_HOME và kiểm tra lệnh cài đặt.
  • Cài đặt môi trường phát triển Android Studio, thiết lập biến hệ thống ANDROID_HOME.
  • Tích hợp dịch vụ Firebase vào React Native:
    • Tải tệp chứng thực google-services.json đặt vào thư mục /android/app/.
    • Khai báo đường dẫn google-services trong tệp cấu hình cấp dự án /android/build.gradle.
    • Kích hoạt plugin Firebase trong tệp /android/app/build.gradle.
    • Thiết lập các quyền định vị và dịch vụ liên quan trong tệp /android/app/src/main/AndroidManifest.xml.
  • Triển khai lập trình giao diện qua mã nguồn React Native, kết nối trực tiếp với Firestore để hiển thị và cập nhật dữ liệu hai chiều.

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

Chương 1. Tổng quan

Chương 1 trình bày lý do lựa chọn đề tài xuất phát từ nhu cầu thực tiễn ăn uống trực tiếp tại quán để khắc phục các nhược điểm của việc đặt đồ ăn về nhà. Tác giả nêu rõ mục đích xây dựng ứng dụng di động kết hợp bản đồ chỉ đường, đặt bàn và hệ thống gợi ý. Chương này xác định rõ phạm vi nghiên cứu xoay quanh việc thu thập thông tin của 20 quán ăn tại Thành phố Thủ Đức, tìm hiểu công nghệ GIS, API VIETMAP và dịch vụ Firebase. Tác giả khái quát các phương pháp nghiên cứu và tổng quan bố cục toàn văn khóa luận gồm 7 chương.

Chương 2. Khảo sát đời thực

Chương 2 tiến hành khảo sát và đánh giá trải nghiệm thực tế trên 3 ứng dụng phổ biến: Foody, GrabFood và ClingMe. Tác giả chỉ ra các điểm hạn chế chung của các ứng dụng này là thiếu chức năng đặt bàn kết hợp dẫn đường trực tiếp và nhiều ứng dụng chứa nhiều quảng cáo. Tiếp theo, chương này cung cấp cơ sở lý thuyết so sánh giữa 3 nhóm công nghệ phát triển ứng dụng di động (Native App, Cross-Platform, Hybrid App) và hai mô hình quy trình phần mềm (Mô hình thác nước và Mô hình xoắn ốc), từ đó làm căn cứ chọn React Native cho đề tài.

Chương 3. Các chức năng ứng dụng

Chương 3 tập trung mô tả chi tiết các tính năng của hệ thống và xây dựng 12 bảng đặc tả use case cho cả người dùng và quản lý quán ăn:

  • Đăng ký / Đăng nhập: Quản lý thông tin tài khoản qua Firebase Authentication; phân tách luồng đăng nhập dành cho khách hàng (chuyển về màn hình Home) và quản lý nhà hàng (chuyển về trang quản trị riêng).
  • Tìm kiếm và Lọc (Filter): Hỗ trợ tìm kiếm từ khóa quán ăn kết hợp Autocomplete API của VIETMAP; bộ lọc danh mục món ăn (ví dụ danh mục "Cơm") cho phép người dùng vãng lai sử dụng mà không cần đăng nhập.
  • Danh sách quán ăn yêu thích: Cho phép người dùng đã đăng nhập nhấn biểu tượng trái tim để lưu hoặc xóa quán ăn khỏi danh sách cá nhân.
  • Dẫn đường trên bản đồ: Lấy tọa độ người dùng và tọa độ nhà hàng, gọi Route Maps API của VIETMAP để hiển thị đường đi (LINESTRING), thông tin khoảng cách và thời gian di chuyển.
  • Đặt bàn: Yêu cầu đăng nhập; người dùng cung cấp số lượng khách (giới hạn từ 1 đến 22 người), ngày đến (ràng buộc thời gian hiện tại hoặc tương lai), giờ đến (bắt buộc) và món ăn đặt trước (tùy chọn). Sau khi xác nhận trên ứng dụng, nhà hàng sẽ liên hệ qua điện thoại để xác nhận và yêu cầu thanh toán trước 50%.
  • Bình luận và Đánh giá: Cho phép người dùng đăng nhập viết nội dung nhận xét và gửi điểm đánh giá từ 1 đến 5 sao.
  • Hệ thống gợi ý theo quy tắc (Rule-based):
    • Gợi ý theo thời tiết: Nhiệt độ > 30°C đề xuất quán tráng miệng, thức uống; từ 25°C đến 30°C đề xuất quán ăn bình thường; dưới 25°C đề xuất món lẩu, mì, phở, cơm (yêu cầu cấp quyền vị trí).
    • Gợi ý theo độ tuổi: Độ tuổi từ 0 đến 20 đề xuất quán tráng miệng, thức uống, thức ăn nhanh (Fast food); từ 21 đến 50 tuổi đề xuất quán ăn bình thường; trên 50 tuổi đề xuất món lẩu, mì, phở, cơm (yêu cầu đăng nhập).
    • Gợi ý theo đánh giá: Tự động lọc và hiển thị các quán ăn có điểm đánh giá rating >= 4 sao.
  • Nghiệp vụ quản lý phía nhà hàng: Use case Duyệt đơn hàng (tiếp nhận đơn đặt bàn, xem thông tin khách, số lượng người, món đặt trước; thực hiện duyệt đơn hoặc từ chối hủy đơn khi hết bàn/ngày nghỉ kèm thông báo) và Use case Điều chỉnh thực đơn (thêm, sửa, xóa món ăn, cập nhật tên và địa chỉ quán).

Chương 4. Thiết kế ứng dụng

Chương 4 mô tả chi tiết giải pháp thiết kế cơ sở dữ liệu phi quan hệ Firebase Cloud Firestore. Tác giả phân tích cấu trúc của từng thực thể dữ liệu gồm User, Restaurant, Comment, Rating và Categories cùng các trường thuộc tính đi kèm. Phần thiết kế giao diện mô tả quá trình xây dựng khung màn hình trên công cụ Figma, cách phối hợp màu sắc tương phản đen - trắng và cấu trúc các thành phần của framework React Native.

Chương 5. Cài đặt và triển khai ứng dụng

Chương 5 hướng dẫn chi tiết quy trình cài đặt môi trường kỹ thuật (Java, biến môi trường, Android Studio), các bước tích hợp thư viện React Native Firebase và cấu hình các tệp hệ thống (AndroidManifest.xml, google-services.json, build.gradle). Chương này minh họa kết quả triển khai toàn bộ các màn hình giao diện thực tế của ứng dụng: Trang chủ (Home), Đăng ký, Đăng nhập, Thông tin người dùng (Profile), Chi tiết quán ăn, Bản đồ chỉ đường, Quán yêu thích, Tìm kiếm, Bình luận, Màn hình gợi ý, Màn hình đặt bàn, Màn hình quản lý đơn hàng của nhà hàng và Màn hình thống kê.

Chương 6. Đánh giá kết quả với khóa luận kế thừa

Chương 6 tiến hành đánh giá việc phát triển ứng dụng thông qua việc đối chiếu với đề tài khóa luận kế thừa trước đó. Tác giả lập bảng so sánh tính năng và đánh giá hiệu năng giữa ứng dụng hiện tại với đề tài gợi ý phim của khóa trước, phân tích mức độ đáp ứng của các chức năng quản lý, bản đồ và đặt bàn trong môi trường thực nghiệm.

Chương 7. Kết luận và hướng phát triển

Chương 7 tổng kết toàn bộ quá trình thực hiện khóa luận, xác nhận mức độ hoàn thành các mục tiêu ban đầu từ khâu phân tích, thiết kế đến xây dựng phần mềm hoàn chỉnh; đồng thời chỉ ra các điểm còn tồn tại và vạch ra định hướng nâng cấp hệ thống trong tương lai.


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

1. Kết quả đạt được

  • Xây dựng thành công ứng dụng di động hoàn chỉnh bằng framework React Native, kết nối backend đám mây Firebase Cloud Firestore và hoạt động trên thiết bị Android.
  • Thu thập và chuẩn hóa dữ liệu thực nghiệm cho 20 quán ăn, nhà hàng trên địa bàn Thành phố Thủ Đức với đầy đủ tọa độ không gian, địa chỉ, thực đơn và danh mục phục vụ.
  • Tích hợp thành công các dịch vụ định vị và bản đồ số từ đối tác VIETMAP JSC: Autocomplete API phục vụ gợi ý địa điểm tìm kiếm và Route Maps API hỗ trợ tính toán lộ trình dạng LINESTRING, hiển thị khoảng cách và thời gian di chuyển.
  • Hiện thực hóa hệ thống phân quyền rõ ràng trên ứng dụng:
    • Người dùng chưa có tài khoản: Thực hiện tìm kiếm, lọc danh mục món ăn, dẫn đường trên bản đồ và nhận gợi ý quán ăn theo điều kiện thời tiết.
    • Người dùng có tài khoản: Sử dụng đầy đủ các quyền trên, đồng thời được kích hoạt tính năng thêm quán yêu thích, đặt bàn trực tiếp (từ 1 đến 22 khách), bình luận, chấm điểm đánh giá và nhận gợi ý cá nhân hóa theo độ tuổi.
    • Phía nhà hàng: Cung cấp giao diện riêng để duyệt hoặc hủy đơn đặt bàn, thêm/sửa/xóa thực đơn và theo dõi màn hình thống kê.

2. Đóng góp khoa học và thực tiễn của đề tài

  • Khóa luận kế thừa ý tưởng từ đề tài tốt nghiệp khóa 2020 – 2021 "Phát triển ứng dụng gợi ý phim cho người dùng" của tác giả Vũ Cao Nguyên, nhưng đã chuyển đổi thành công mô hình nghiên cứu sang lĩnh vực ẩm thực gắn liền với dữ liệu không gian thực tế tại Thành phố Thủ Đức.
  • Đóng góp giải pháp kết hợp giữa dịch vụ bản đồ số nội địa (VIETMAP) và cơ chế gợi ý theo tập luật (Rule-based) đa biến (thời tiết, tuổi tác, đánh giá cộng đồng), giải quyết đồng thời bài toán tìm kiếm quán ăn và đặt chỗ trước cho người có nhu cầu ăn uống tại chỗ.

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

Dựa trên nội dung toàn văn khóa luận và phạm vi nghiên cứu thực tế, đề tài ghi nhận các hạn chế và hướng mở rộng sau:

1. Hạn chế

  • Dữ liệu thực nghiệm còn nhỏ: Ứng dụng mới chỉ thử nghiệm trên tập dữ liệu gồm 20 quán ăn và nhà hàng giới hạn trong khu vực Thành phố Thủ Đức.
  • Cơ chế gợi ý còn ở mức cơ bản: Hệ thống gợi ý hoàn toàn dựa trên các ngưỡng cứng của tập luật (Rule-based: các mốc nhiệt độ <25°C, 25-30°C, >30°C; các mốc tuổi 0-20, 21-50, >50), chưa áp dụng các mô hình học máy (Machine Learning) hay thuật toán lọc cộng tác (Collaborative Filtering) để nâng cao độ chính xác cá nhân hóa.
  • Quy trình thanh toán chưa tự động: Việc thanh toán đặt cọc 50% vẫn cần sự can thiệp thủ công từ phía nhà hàng thông qua cuộc gọi điện thoại trực tiếp xác nhận, chưa tích hợp cổng thanh toán trực tuyến tự động.
  • Nền tảng thử nghiệm: Mặc dù React Native hỗ trợ đa nền tảng, quá trình cài đặt, cấu hình và kiểm thử trong khóa luận mới chỉ tập trung thực hiện trên hệ điều hành Android.

2. Hướng nghiên cứu tiếp

  • Mở rộng phạm vi thu thập dữ liệu quán ăn trên toàn địa bàn Thành phố Hồ Chí Minh và các tỉnh thành lân cận.
  • Cải tiến và nâng cấp thuật toán gợi ý bằng cách ứng dụng các mô hình trí tuệ nhân tạo để phân tích hành vi và sở thích người dùng chuyên sâu hơn.
  • Tích hợp cổng thanh toán điện tử trực tiếp trên ứng dụng để tự động hóa hoàn toàn quy trình đặt cọc và xác nhận đơn đặt bàn.
  • Hoàn thiện việc cấu hình và đóng gói ứng dụng trên hệ điều hành iOS.

Giá trị tham khảo

Khóa luận là tài liệu tham khảo hữu ích cho:

  • Đối tượng: Sinh viên ngành Công nghệ thông tin, Kỹ thuật phần mềm, Hệ thống thông tin đang thực hiện đồ án chuyên ngành hoặc khóa luận tốt nghiệp liên quan đến lập trình ứng dụng di động đa nền tảng kết hợp dịch vụ bản đồ (GIS).
  • Phần nội dung có giá trị tham khảo cao:
    • Hệ thống 12 bảng phân tích đặc tả use case chi tiết (Chương 3), nêu rõ tiền điều kiện, hậu điều kiện, luồng sự kiện chính và luồng sự kiện phụ cho các chức năng đăng ký, đặt bàn, dẫn đường, gợi ý và duyệt đơn.
    • Mô hình thiết kế cơ sở dữ liệu phi quan hệ (NoSQL) trên Cloud Firestore (Chương 4) biểu diễn các quan hệ dữ liệu quán ăn, bình luận, đánh giá và thực đơn mà không cần máy chủ API trung gian.
    • Quy trình cài đặt môi trường Android Studio và các bước liên kết thư viện React Native Firebase (Chương 5).

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

1. Khóa luận sử dụng những tiêu chí và quy tắc cụ thể nào để đưa ra gợi ý quán ăn cho người dùng?
Khóa luận áp dụng hệ thống gợi ý dựa trên tập luật (Rule-based) với 3 tiêu chuẩn cụ thể:

  • Gợi ý theo thời tiết: Nhiệt độ > 30°C gợi ý quán tráng miệng, thức uống; từ 25°C đến 30°C gợi ý quán ăn bình thường; dưới 25°C gợi ý các món nóng như lẩu, mì, phở, cơm.
  • Gợi ý theo độ tuổi: Nhóm 0 – 20 tuổi gợi ý đồ tráng miệng, thức uống, thức ăn nhanh (Fast food); từ 21 – 50 tuổi gợi ý quán ăn bình thường; trên 50 tuổi gợi ý món lẩu, mì, phở, cơm.
  • Gợi ý theo đánh giá: Hệ thống lọc và trả về danh sách các quán ăn có điểm đánh giá rating >= 4 sao.

2. Quy trình đặt bàn trên ứng dụng được thiết kế như thế nào và có những ràng buộc gì?
Để đặt bàn, người dùng bắt buộc phải đăng nhập tài khoản. Người dùng truy cập trang thông tin nhà hàng, nhấn nút đặt bàn và cung cấp các thông tin: số lượng người (ràng buộc từ 1 đến 22 người), ngày đến (ràng buộc ngày hiện tại hoặc tương lai), giờ đến quán (bắt buộc nhập) và các món ăn muốn đặt trước (tùy chọn). Sau khi người dùng xác nhận, thông tin được gửi về phía nhà hàng; phía nhà hàng sẽ liên hệ trực tiếp qua điện thoại để xác nhận lại và yêu cầu khách thanh toán trước 50% tiền cọc. Quản lý nhà hàng có quyền duyệt đơn hoặc hủy đơn (khi hết bàn hoặc vào ngày nghỉ) và hệ thống sẽ gửi thông báo đến người dùng.

3. Vai trò của các API do VIETMAP cung cấp trong ứng dụng là gì?
Công ty Cổ phần Ứng dụng Bản đồ Việt (VIETMAP JSC) cung cấp giải pháp bản đồ số cho khóa luận. Ứng dụng tích hợp hai API chính:

  • Autocomplete API: Tự động gợi ý các địa chỉ và vị trí phù hợp khi người dùng nhập từ khóa tìm kiếm.
  • Route Maps API: Nhận dữ liệu đầu vào là tọa độ vị trí hiện tại của người dùng (Longitude, Latitude) và tọa độ của quán ăn (POINT lưu trên Firebase) để tính toán dữ liệu định tuyến, vẽ đường đi dạng LINESTRING và mô phỏng dẫn đường trực tuyến.

4. Cấu trúc cơ sở dữ liệu Cloud Firestore trong ứng dụng gồm những thực thể nào?
Cơ sở dữ liệu được tổ chức thành 5 collections:

  • User: Chứa Userid, Name, Email, Password, Sdt, Age và mảng Favorite.
  • Restaurant: Chứa ID, Name, Address, Location, Duration, Rating, Categories, Menu, Orderlist và Photo.
  • Comment: Chứa Content, RestaurantID và đối tượng User (chứa ID, Name).
  • Rating: Chứa RestaurantID và mảng ListRating.
  • Categories: Chứa ID, Name và Icon.

5. Người dùng chưa đăng ký tài khoản có thể sử dụng được những chức năng nào trên ứng dụng?
Theo phân quyền thiết kế của khóa luận, người dùng chưa đăng nhập (người dùng vãng lai) có thể sử dụng các chức năng: tìm kiếm quán ăn, lọc danh mục món ăn (Filter), dẫn đường trên bản đồ và nhận các gợi ý quán ăn theo điều kiện thời tiết thực tế. Để sử dụng các chức năng lưu quán yêu thích, đặt bàn, gửi bình luận, chấm điểm đánh giá hoặc nhận gợi ý theo độ tuổi, người dùng bắt buộc phải đăng ký và đăng nhập tài khoản.


Kết luận

Khóa luận tốt nghiệp của sinh viên Trần Hữu Hoàn và Nguyễn Thanh Minh đã hoàn thành việc nghiên cứu, thiết kế và phát triển ứng dụng di động quản lý quán ăn tại Thành phố Thủ Đức bằng React Native và Firebase. Đề tài giải quyết nhu cầu ăn uống tại chỗ thông qua sự kết hợp giữa giải pháp dẫn đường bản đồ VIETMAP và cơ chế gợi ý quán ăn theo tập luật thời tiết, độ tuổi và đánh giá cộng đồng. Ứng dụng đã hoàn thiện đầy đủ các chức năng nghiệp vụ cho cả hai phân hệ khách hàng và quản lý quán ăn dựa trên bộ dữ liệu thực nghiệm gồm 20 nhà hàng. Đây là công trình phần mềm có tính ứng dụng thực tiễn và là tài liệu tham khảo giá trị cho các nghiên cứu phát triển ứng dụng di động gắn liền với hệ thống thông tin địa lý.