Bối cảnh và vấn đề nghiên cứu
1. Lý do chọn đề tài
Sự phát triển nhanh chóng của các thiết bị số cầm tay như điện thoại thông minh (smartphone) và máy tính bảng (tablet) cùng với sự phổ biến của hệ điều hành mã nguồn mở Android do Google phát triển đã tạo điều kiện thuận lợi cho việc xây dựng các ứng dụng di động phục vụ đời sống. Các thiết bị này được trang bị phần cứng mạnh mẽ như màn hình cảm ứng, GPS và gia tốc kế, cho phép xử lý nhiều tác vụ phức tạp.
Trong thực tiễn ngành dịch vụ ẩm thực, phương thức quản lý thực đơn truyền thống tại các nhà hàng, quán ăn chủ yếu sử dụng bảng in trên giấy hoặc gỗ. Cách làm này bộc lộ nhiều hạn chế:
- Việc cập nhật danh mục món ăn, đồ uống hoặc giá cả diễn ra thủ công, tốn kém thời gian và chi phí in ấn lại.
- Hình thức hiển thị tĩnh, kém trực quan và khó thu hút thực khách.
- Khâu chọn món và ghi nhận yêu cầu của khách hàng chưa được tự động hóa.
Xuất phát từ thực tế đó, tác giả lựa chọn đề tài "Xây dựng ứng dụng quản lý thực đơn nhà hàng trên Android" nhằm số hóa quy trình cập nhật thực đơn, giúp người quản trị quản lý danh mục món ăn dễ dàng và hỗ trợ khách hàng xem, đặt món ăn thuận tiện qua thiết bị di động.
2. Mục tiêu nghiên cứu
Đồ án xác định 4 nhiệm vụ và mục tiêu nghiên cứu cụ thể:
- Tìm hiểu các công nghệ lập trình cần thiết trên nền tảng Android để hoàn thành ứng dụng có chức năng xem món, gọi món và đặt qua mạng.
- Nắm vững nguyên lý hoạt động của hệ điều hành Android, cấu trúc hệ thống và các thành phần cốt lõi của một ứng dụng Android.
- Nghiên cứu và áp dụng các công nghệ lập trình Java trên Android, bao gồm việc tương tác với các tài nguyên hệ thống (màn hình cảm ứng TouchScreen, kết nối Internet, GPS).
- Xây dựng dịch vụ web (Web Services) trên nền tảng PHP kết hợp với hệ quản trị cơ sở dữ liệu MySQL để xử lý và cung cấp dữ liệu cho ứng dụng.
3. Đối tượng và phạm vi nghiên cứu
- Đối tượng nghiên cứu:
- Ngôn ngữ lập trình: Java, PHP, XML.
- Định dạng dữ liệu: JSON.
- Hệ quản trị cơ sở dữ liệu: MySQL.
- Bộ công cụ và môi trường phát triển: Android SDK, Eclipse IDE, Android Emulator.
- Kiến trúc hệ điều hành và các tài nguyên hệ thống của Android.
- Phạm vi nghiên cứu:
- Không gian ứng dụng thực tế: Nhà hàng Hoàng Ngư 2 (Quận Sơn Trà, Thành phố Đà Nẵng).
- Phạm vi chức năng: Đề tài tập trung vào phạm vi xem danh mục món ăn, đồ uống, đặt món ăn qua mạng và gửi/xem phản hồi góp ý.
- Môi trường hệ thống: Ứng dụng client được xây dựng tương thích từ phiên bản Android 2.2 đến Android 4.2 (Jelly Bean); hệ thống máy chủ dịch vụ chạy trên nền tảng Linux hỗ trợ PHP và MySQL.
Cơ sở lý thuyết và phương pháp
1. Khung lý thuyết và công nghệ sử dụng
Đồ án xây dựng dựa trên các nền tảng lý thuyết và công nghệ phần mềm sau:
| Thành phần / Công nghệ |
Vai trò trong hệ thống |
Đặc tính kỹ thuật chính theo văn bản |
| Hệ điều hành Android |
Nền tảng thực thi ứng dụng phía Client |
Dựa trên nhân Linux, kiến trúc mở gồm các tầng: Nhân Linux, Thư viện C/C++ (SQLite, Webkit, OpenGL), Dalvik Runtime, Application Framework và Tầng ứng dụng. |
| Máy ảo Dalvik |
Môi trường thực thi mã nguồn Android |
Tối ưu hóa cho thiết bị di động có dung lượng RAM nhỏ, CPU giới hạn; biên dịch mã nguồn Java thành định dạng tệp thực thi .dex nhỏ gọn. |
| Ngôn ngữ Java |
Ngôn ngữ phát triển ứng dụng di động |
Lập trình hướng đối tượng (OOP), độc lập phần cứng nhờ cơ chế biên dịch ra bytecode, quản lý bộ nhớ tự động (Garbage Collection), hỗ trợ đa luồng (Multithreading). |
| Ngôn ngữ PHP |
Ngôn ngữ xử lý phía máy chủ (Web Services) |
Xử lý các yêu cầu HTTP từ client, truy vấn cơ sở dữ liệu MySQL, đóng gói dữ liệu phản hồi dưới định dạng JSON. |
| Định dạng JSON |
Định dạng trao đổi dữ liệu |
Chuẩn trao đổi dữ liệu văn bản thuần nhẹ (ECMA-262), cấu trúc dạng cặp name-value và mảng tuần tự; tối ưu hóa tốc độ truyền tải trên mạng di động so với XML. |
| Ngôn ngữ XML |
Thiết kế giao diện và cấu hình |
Dùng để định nghĩa giao diện người dùng (layout), khai báo tài nguyên và cấu hình quyền hạn trong tệp AndroidManifest.xml. |
| Cơ sở dữ liệu MySQL |
Lưu trữ dữ liệu hệ thống |
Lưu trữ thông tin thực đơn, danh mục món ăn, tài khoản quản trị và dữ liệu đặt món, góp ý. |
2. Thành phần kiến trúc ứng dụng Android
Hệ thống tận dụng các thành phần cơ bản trong mô hình ứng dụng Android:
- Activity: Thành phần thể hiện giao diện người dùng và xử lý tương tác trực tiếp. Vòng đời Activity được quản lý theo mô hình ngăn xếp (stack) với 4 trạng thái: Active/Running (hiển thị và tương tác ở foreground), Pause (vẫn hiển thị nhưng mất tiêu điểm tương tác), Stop (bị che khuất hoàn toàn bởi Activity khác) và Killed (bị giải phóng bộ nhớ khi hệ thống cạn kiệt tài nguyên).
- Intent & Bundle: Cơ chế truyền thông điệp và truyền tải tham số dữ liệu có cấu trúc giữa các Activity.
- Service & Broadcast Receiver: Xử lý các tác vụ ngầm và lắng nghe các sự kiện hệ thống.
3. Phương pháp nghiên cứu và phát triển
- Phương pháp phân tích thiết kế hướng đối tượng (OOAD): Sử dụng ngôn ngữ mô hình hóa hợp nhất (UML) để xây dựng hệ thống các biểu đồ: Trường hợp sử dụng (Use Case), Lớp (Class), Trình tự (Sequence), Cộng tác (Collaboration), Trạng thái (Statechart), Hoạt động (Activity), Thành phần (Component) và Triển khai (Deployment).
- Phương pháp thực nghiệm phần mềm: Sử dụng công cụ giả lập Android Emulator và Eclipse IDE để kiểm thử, dò lỗi (debug) và hoàn thiện các chức năng trước khi đóng gói tệp cài đặt
.apk.
Thiết kế và triển khai hệ thống
1. Kiến trúc tổng thể và mô hình trao đổi dữ liệu
Hệ thống được thiết kế theo mô hình Client - Server:
- Phía Client (Thiết bị Android): Sử dụng đối tượng
HttpClient và danh sách tham số NameValuePair (cụ thể là BasicNameValuePair) để tạo các truy vấn HTTP POST/GET gửi đến máy chủ. Quá trình gửi và nhận dữ liệu được xử lý bất đồng bộ thông qua phương thức doInBackground nhằm tránh treo giao diện người dùng.
- Phía Server (Máy chủ Web PHP & MySQL): Nhận tham số qua biến toàn cục
$_POST hoặc $_REQUEST, thực hiện kiểm tra tính hợp lệ, thực thi các câu lệnh truy vấn SQL (SELECT, INSERT, UPDATE, DELETE), sau đó chuyển đổi tập kết quả thành định dạng JSON bằng hàm json_encode() để gửi về client.
2. Phân tích yêu cầu hệ thống
Bảng yêu cầu chức năng và phi chức năng
| Nhóm yêu cầu |
Nội dung đặc tả chi tiết |
| Yêu cầu chức năng |
- Hiển thị danh mục món ăn, đồ uống kèm hình ảnh và đơn giá. - Cho phép người dùng đặt món và gửi thông tin về máy chủ. - Chức năng đăng nhập, thêm, sửa, xóa món ăn, danh mục và tài khoản quản trị. - Chức năng gửi phản hồi, ý kiến đóng góp từ khách hàng và xem góp ý phía quản trị. |
| Yêu cầu phi chức năng |
- Hệ thống có khả năng hoạt động liên tục (24/7). - Vận hành ổn định trên các thiết bị có cấu hình phần cứng thấp. - Giao diện trực quan, thao tác đơn giản, dễ tiếp cận với người dùng mới. - Đảm bảo độ mượt mà khi cài đặt thực tế trên thiết bị vật lý. |
| Yêu cầu môi trường |
- Thiết bị client yêu cầu có kết nối mạng Internet (Wi-Fi/3G), chạy hệ điều hành từ Android 2.2 đến 4.2. - Máy chủ ứng dụng cài đặt Web Server Linux hỗ trợ PHP và hệ quản trị CSDL MySQL. |
3. Thiết kế mô hình hóa phần mềm (UML)
- Tác nhân hệ thống:
- Người sử dụng (Khách hàng): Thực hiện mở hệ thống, xem thông tin giới thiệu nhà hàng, xem thực đơn, đặt món ăn/đồ uống, gửi ý kiến góp ý, đóng hệ thống.
- Người quản trị: Đăng nhập hệ thống, cập nhật danh mục thực đơn (thêm, hiệu chỉnh, xóa), cập nhật danh sách đặt món, cập nhật danh sách tài khoản quản trị, xem danh sách góp ý của khách hàng.
- Mô hình cấu trúc lớp:
- Lớp thực thể (Entity):
ThucDon (thông tin món ăn, đơn giá, hình ảnh), DanhMuc (phân loại nhóm thực đơn), TaiKhoan (tên đăng nhập, mật khẩu mã hóa), GopY (nội dung phản hồi từ khách hàng), DatMon (thông tin món đã chọn).
- Lớp biên (Boundary/Form):
FrmMoHeThong, FrmDongHeThong, FrmGioiThieuNhaHang, FrmCapNhatDanhMucThucDon, FrmCapNhatDanhSachDatMon, FrmCapNhatDanhMucTaiKhoan, FrmGopY, FrmXemGopY.
- Lớp điều khiển (Control):
CtlMoHeThong, CtlDongHeThong, CtlGioiThieuNhaHang, CtlCapNhatDanhMucThucDon, CtlCapNhatDanhSachDatMon, CtlCapNhatDanhSachTaiKhoan, CtlGopY, CtlXemGopY.
4. Triển khai xử lý mã nguồn
Quá trình gửi yêu cầu từ ứng dụng Android lên Web Service được thực hiện thông qua đoạn mã Java:
protected JSONObject doInBackground(Void... arg0) {
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("pass", pass));
JSONObject json = jsonparser.makeHttpRequest("http://.../taikhoan.php", "POST", params);
return json;
}
Phía máy chủ PHP tiếp nhận yêu cầu, thực hiện truy vấn cơ sở dữ liệu và phản hồi dữ liệu mã hóa JSON:
if(isset($_POST['taikhoan']) && $_POST['taikhoan'] == "dangnhap"){
$user = $_POST['user'];
$pass = md5($_POST['pass']);
$sql = mysql_query("select * from taikhoan where user = '".$user."' limit 0, 1");
if(mysql_num_rows($sql) > 0){
$msg['thanhcong'] = 1;
$msg['user'] = $user;
$msg['msg'] = "Đăng nhập thành công";
echo json_encode($msg);
}else{
$msg['thanhcong'] = 0;
$msg['msg'] = "Tài khoản hoặc mật khẩu không đúng";
echo json_encode($msg);
}
}
Tại client, dữ liệu JSON nhận về được bóc tách thông qua các lớp đối tượng JSONArray và JSONObject với phương thức getString("tên_khóa") (ví dụ: String s_user = json.getString("user");).
Nội dung chính theo từng chương
CHƢƠNG 1: CƠ SỞ LÝ THUYẾT
Chương này tập trung trình bày tổng quan về hệ điều hành Android và các công nghệ lập trình liên quan:
- Hệ điều hành Android: Giới thiệu lịch sử từ khi Google mua lại Android năm 2005, sự kiện ra mắt liên minh OHA (5/11/2007) với 78 công ty thành viên, và việc phát hành phiên bản Android 1.0 trên HTC Dream (23/9/2008). Thống kê quy mô mã nguồn Android thời điểm nghiên cứu gồm khoảng 12 triệu dòng mã (trong đó có 3 triệu dòng XML, 2.1 triệu dòng Java).
- Cấu trúc hệ thống: Phân tích chi tiết mô hình phân tầng của Android từ nhân Linux, các thư viện liên kết (SQLite, Webkit, OpenGL), hệ thống thực thi (máy ảo Dalvik) đến Application Framework.
- Thành phần ứng dụng: Làm rõ nguyên lý hoạt động, cơ chế chuyển trạng thái và các phương thức callback của vòng đời
Activity (onCreate, onStart, onResume, onPause, onStop, onDestroy, onRestart). Mô tả vai trò của Service, Content Provider, Intent, Broadcast Receiver, Widget, và Notification.
- Công nghệ lập trình: Trình bày đặc điểm của ngôn ngữ Java (cơ chế biên dịch Bytecode, kiểm tra kiểu dữ liệu chặt chẽ, thu gom rác tự động, đa luồng), định dạng dữ liệu JSON (chuẩn ECMA-262), ngôn ngữ đánh dấu XML, ngôn ngữ PHP (lịch sử từ PHP/FI năm 1995 đến các phiên bản PHP 4, PHP 5) và hệ thống máy ảo Dalvik.
CHƢƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG
Chương này thực hiện quy trình phân tích và thiết kế phần mềm chi tiết cho bài toán quản lý thực đơn nhà hàng:
- Mô tả hệ thống và xác định yêu cầu: Xác định kiến trúc Client - Server; chi tiết hóa các yêu cầu chức năng (xem thực đơn, đặt món, quản lý danh mục, tài khoản) và yêu cầu phi chức năng (tính ổn định, giao diện, khả năng chạy trên máy cấu hình thấp).
- Mô hình hóa yêu cầu (Use Case): Thiết lập biểu đồ ca sử dụng tổng quát và các biểu đồ phân rã chi tiết cho 2 tác nhân (Người sử dụng và Người quản trị) gồm các gói chức năng: Cập nhật danh mục thực đơn, Cập nhật danh sách đặt món, Cập nhật danh sách tài khoản, Góp ý và Xem góp ý.
- Mô hình hóa khái niệm và tương tác:
- Xác định các lớp thực thể (
ThucDon, DanhMuc, GopY, TaiKhoan), phân loại các lớp biên và lớp điều khiển tương ứng.
- Xây dựng hệ thống biểu đồ trình tự (Sequence Diagrams) và biểu đồ cộng tác (Collaboration Diagrams) cho toàn bộ các kịch bản tương tác trong hệ thống.
- Mô hình hóa hành vi và kiến trúc vật lý:
- Mô tả chu trình hoạt động và chuyển đổi trạng thái thông qua các biểu đồ trạng thái (State Diagrams) và biểu đồ hoạt động (Activity Diagrams).
- Hoàn thiện biểu đồ lớp chi tiết (Detailed Class Diagram).
- Xây dựng biểu đồ thành phần (Component Diagram) và biểu đồ triển khai (Deployment Diagram) thể hiện mối liên kết giữa Android Client và Web Server qua giao thức mạng TCP/IP.
CHƢƠNG 3: XÂY DỰNG ỨNG DỤNG
Chương này trình bày quá trình hiện thực hóa các chức năng phần mềm và xây dựng giao diện:
- Xây dựng chức năng Web Services: Thiết lập các giao diện quản trị nền web cho phép thêm, sửa, xóa dữ liệu trên hệ CSDL MySQL; xây dựng các dịch vụ tiếp nhận tham số HTTP REQUEST, thực hiện truy vấn và trả về kết quả định dạng JSON.
- Xử lý truyền nhận và phân tích cú pháp dữ liệu:
- Ứng dụng Android sử dụng
HttpClient và BasicNameValuePair để đóng gói tham số truy vấn bất đồng bộ.
- Áp dụng cơ chế truyền dữ liệu giữa các màn hình trong ứng dụng Android bằng
Intent kết hợp gói đối số Bundle (putXXX và getXXX).
- Phân tích cú pháp chuỗi JSON nhận được từ máy chủ bằng
JSONArray và JSONObject để trích xuất các trường dữ liệu đưa lên giao diện.
- Hiện thực hóa giao diện người dùng: Xây dựng hoàn chỉnh các màn hình ứng dụng gồm: Giao diện chính chương trình, Giao diện đăng nhập tài khoản quản trị, Giao diện danh mục món ăn, Giao diện chi tiết món ăn/đồ uống và Giao diện đặt món.
Kết quả và đóng góp
1. Kết quả chính đạt được
- Xây dựng hoàn chỉnh ứng dụng di động chạy trên hệ điều hành Android (hỗ trợ các phiên bản từ 2.2 đến 4.2 Jelly Bean) với giao diện tương tác trực quan.
- Thiết lập thành công hệ thống Web Services bằng ngôn ngữ PHP kết nối cơ sở dữ liệu MySQL, cho phép tiếp nhận và phản hồi dữ liệu qua lại với ứng dụng di động dưới định dạng chuẩn JSON.
- Thực hiện đầy đủ các chức năng: xem danh mục thực đơn, xem chi tiết món ăn/đồ uống, gửi yêu cầu đặt món và gửi phản hồi góp ý từ phía khách hàng; đồng thời cung cấp giao diện quản lý thực đơn, đặt món và tài khoản cho người quản trị.
2. Giải pháp tác giả đề xuất
- Đề xuất thay thế phương thức quản lý thực đơn truyền thống bằng giấy hoặc gỗ tại nhà hàng Hoàng Ngư 2 bằng ứng dụng thực đơn điện tử trên thiết bị Android, giúp việc cập nhật giá cả và danh mục món ăn diễn ra nhanh chóng, chính xác.
- Áp dụng mô hình trao đổi dữ liệu Client - Server thông qua Web Services sử dụng định dạng JSON thay vì XML để giảm thiểu dung lượng dữ liệu truyền tải, tối ưu hóa tốc độ xử lý cho các thiết bị di động có cấu hình phần cứng hạn chế.
3. Đóng góp của đề tài
- Hệ thống hóa đầy đủ cơ sở lý thuyết về kiến trúc hệ điều hành Android, vòng đời Activity và cơ chế hoạt động của máy ảo Dalvik.
- Cung cấp tài liệu phân tích thiết kế hệ thống chi tiết từ mô hình ca sử dụng, biểu đồ lớp, biểu đồ tương tác đến biểu đồ triển khai vật lý cho một ứng dụng di động kết nối dịch vụ web.
Hạn chế và hướng nghiên cứu tiếp
1. Hạn chế
- Hệ thống mới chỉ dừng lại ở phạm vi chức năng cơ bản là xem thực đơn, đặt món ăn qua mạng và gửi góp ý; chưa tích hợp các module nâng cao như thanh toán điện tử trực tuyến hay quản lý bàn ăn theo thời gian thực.
- Việc thử nghiệm và triển khai chỉ mới áp dụng trong phạm vi một cơ sở kinh doanh cụ thể là Nhà hàng Hoàng Ngư 2 (Quận Sơn Trà, TP. Đà Nẵng).
- Chưa tận dụng hết các cảm biến phần cứng nâng cao của thiết bị di động như GPS hay gia tốc kế vào quy trình quản lý thực tế ngoài việc khảo sát lý thuyết.
2. Hướng phát triển tiếp theo
- Khắc phục các lỗi phát sinh trong quá trình vận hành ứng dụng dựa trên phản hồi của người dùng và ý kiến đánh giá của giáo viên hướng dẫn.
- Mở rộng chức năng hệ thống nhằm tối ưu hóa quy trình phục vụ tại nhà hàng và nâng cao trải nghiệm của thực khách.
Giá trị tham khảo
- Đối tượng tham khảo: Tài liệu là nguồn tham khảo hữu ích cho sinh viên chuyên ngành Khoa học máy tính, Công nghệ thông tin, Kỹ thuật phần mềm đang thực hiện đồ án tốt nghiệp hoặc các đề tài nghiên cứu về lập trình ứng dụng di động trên nền tảng Android.
- Nội dung giá trị nhất:
- Quy trình phân tích thiết kế hệ thống toàn diện theo chuẩn UML trong Chương 2 (hệ thống biểu đồ Use Case, Sequence, Collaboration, State, Activity, Component, Deployment).
- Phương pháp xây dựng kiến trúc Client - Server giao tiếp qua Web Services PHP/JSON và kỹ thuật xử lý dữ liệu giữa các Activity bằng
Intent/Bundle trong Chương 3.
Câu hỏi thường gặp
1. Đồ án được khảo sát và định hướng áp dụng tại đơn vị thực tế nào?
Đề tài được xây dựng và định hướng áp dụng thử nghiệm tại Nhà hàng Hoàng Ngư 2, có địa chỉ tại Quận Sơn Trà, Thành phố Đà Nẵng.
2. Hệ thống sử dụng mô hình kiến trúc và các công nghệ kết nối nào giữa Client và Server?
Hệ thống sử dụng mô hình kiến trúc Client - Server. Trong đó, Client là ứng dụng chạy trên hệ điều hành Android (viết bằng Java), kết nối với máy chủ dịch vụ Web (Web Services viết bằng PHP, cơ sở dữ liệu MySQL trên nền Linux) thông qua giao thức mạng TCP/IP và trao đổi dữ liệu bằng định dạng JSON.
3. Vòng đời của một Activity trong Android được tác giả mô tả gồm những trạng thái nào?
Theo nội dung Chương 1 của đồ án, vòng đời Activity có 4 trạng thái hoạt động chính:
- Active (running): Activity đang hiển thị ở chế độ tương tác trực tiếp trên màn hình (foreground).
- Pause: Activity vẫn hiển thị nhưng không thể nhận tương tác của người dùng.
- Stop: Activity bị che khuất hoàn toàn bởi một Activity mới.
- Killed: Activity bị hệ điều hành giải phóng hoàn toàn khỏi bộ nhớ khi hệ thống rơi vào tình trạng cạn kiệt tài nguyên.
4. Dữ liệu giữa các Activity trong ứng dụng Android được truyền tải bằng cơ chế nào?
Ứng dụng sử dụng cơ chế Intent kết hợp với đối tượng Bundle để truyền tải dữ liệu giữa các Activity. Dữ liệu được lưu trữ theo cấu trúc cặp khóa - giá trị (name, value) thông qua các phương thức putXXX (để gán giá trị) và getXXX (để trích xuất giá trị).
5. Hai nhóm tác nhân trong hệ thống được phân quyền thực hiện những chức năng nào?
- Người sử dụng (Khách hàng): Mở hệ thống, xem thông tin giới thiệu nhà hàng, xem danh mục và chi tiết món ăn/đồ uống, thực hiện đặt món, gửi ý kiến góp ý, đóng hệ thống.
- Người quản trị: Mở hệ thống, cập nhật danh mục thực đơn (thêm, sửa, xóa món ăn/đồ uống), cập nhật danh sách đặt món, cập nhật danh sách tài khoản quản trị, xem các thông tin góp ý từ người dùng, đóng hệ thống.
Kết luận
Đồ án "Xây dựng ứng dụng quản lý thực đơn nhà hàng trên Android" của tác giả Tạ Ngọc Hải đã giải quyết bài toán số hóa thực đơn truyền thống tại nhà hàng Hoàng Ngư 2 thông qua việc phát triển một ứng dụng di động kết nối dịch vụ web. Tác giả đã hoàn thành đầy đủ quy trình kỹ thuật phần mềm từ nghiên cứu cơ sở lý thuyết, phân tích thiết kế hệ thống bằng ngôn ngữ mô hình hóa UML đến xây dựng các chức năng thực thi trên nền tảng Android và Web Services PHP/MySQL. Kết quả nghiên cứu mang lại một giải pháp ứng dụng di động hoàn chỉnh, đáp ứng các yêu cầu cơ bản về xem thực đơn, đặt món ăn qua mạng và quản trị dữ liệu nhà hàng.