Bối cảnh và vấn đề nghiên cứu
Đồ án được thực hiện trong bối cảnh kinh tế Việt Nam hội nhập quốc tế ngày càng sâu rộng, kéo theo nhu cầu đi lại, lưu trú của du khách trong và ngoài nước tăng cao. Tác giả chỉ ra rằng mặc dù hệ thống khách sạn tại Việt Nam ngày càng phát triển về số lượng lẫn chất lượng, việc kết nối thông tin giữa khách hàng có nhu cầu thuê phòng với các cơ sở lưu trú vẫn chưa được giải quyết hiệu quả. Theo hình thức tìm kiếm truyền thống, người có nhu cầu thuê phòng mất nhiều thời gian và công sức; trong khi đó, phía cho thuê cũng gặp khó khăn trong việc tiếp cận khách hàng do hạn chế về vị trí địa lý và phương thức truyền đạt thông tin.
Từ thực tiễn đó, tác giả xác định mục tiêu xây dựng một nền tảng website đặt phòng trực tuyến mang tên TAHO, cho phép người dùng tìm kiếm thông tin phòng khách sạn tại Việt Nam và thực hiện đặt phòng qua mạng, đồng thời cung cấp cho doanh nghiệp và cá nhân nền tảng kinh doanh phù hợp với xu hướng công nghiệp 4.0.
Nhiệm vụ đồ án được xác định gồm hai nhóm chính:
- Xây dựng chức năng tìm kiếm phòng khách sạn (lọc theo tên, loại phòng, ngày đến, ngày đi, số lượng người lớn/trẻ em).
- Xây dựng chức năng đặt phòng trực tuyến, quản lý đơn đặt phòng và kết nối khách hàng với phía quản trị.
Đối tượng nghiên cứu: Phân tích thiết kế chức năng tìm kiếm và đặt phòng khách sạn.
Phạm vi nghiên cứu: Đề tài được triển khai thử nghiệm tại Đà Nẵng; tác giả dự kiến mở rộng phạm vi ra các thành phố và tỉnh thành khác trên cả nước trong giai đoạn phát triển tiếp theo.
Cơ sở lý thuyết và phương pháp
Khung công nghệ và lý thuyết
Đồ án áp dụng các công nghệ và nền tảng lý thuyết sau:
| Thành phần |
Công nghệ / Công cụ |
| Ngôn ngữ lập trình |
PHP (Personal Home Page), TypeScript |
| Framework back-end |
Laravel Framework (mô hình MVC) |
| Hệ quản trị cơ sở dữ liệu |
MySQL |
| Framework front-end |
Bootstrap 5 (responsive, mobile first) |
| Công cụ mô hình hóa |
StarUML |
| Môi trường phát triển |
Visual Studio Code |
Mô hình kiến trúc MVC (Model-View-Controller) là nền tảng tổ chức mã nguồn của toàn bộ hệ thống. Trong đó: Model xử lý nghiệp vụ tương tác với cơ sở dữ liệu MySQL; View đảm nhiệm hiển thị giao diện người dùng thông qua HTML, CSS, JavaScript kết hợp Bootstrap; Controller tiếp nhận và điều hướng các yêu cầu từ phía người dùng. Laravel cung cấp công cụ dòng lệnh Artisan, hỗ trợ cache backend (Memcached, Redis), tích hợp mail qua thư viện SwiftMailer, và cơ chế định tuyến linh hoạt (Route::get, Route::post, Route::put, Route::delete).
Phương pháp nghiên cứu
- Phương pháp nghiên cứu lý thuyết: Thu thập thông tin qua Internet, tài liệu, sách để hình thành cơ sở lý thuyết về các công nghệ sử dụng.
- Phương pháp triển khai thực nghiệm: Xây dựng trực tiếp hệ thống website, kiểm chứng qua giao diện thực tế.
- Phân tích thiết kế hướng đối tượng: Sử dụng biểu đồ use-case, sơ đồ hoạt động (activity diagram), sơ đồ tuần tự (sequence diagram), sơ đồ ERD để mô hình hóa hệ thống.
Nguồn dữ liệu
Dữ liệu được xây dựng và quản lý trực tiếp trong hệ thống MySQL thông qua quá trình thiết kế và triển khai hệ thống, không sử dụng bộ dữ liệu khảo sát bên ngoài.
Nội dung chính theo từng chương
Chương 1 — Cơ sở lý thuyết
Chương này trình bày tổng quan các công nghệ nền tảng được sử dụng trong đồ án. Tác giả giới thiệu ngôn ngữ PHP — một ngôn ngữ kịch bản phía máy chủ (Server-Side), không phụ thuộc nền tảng (cross-platform), do Rasmus Lerdorf tạo ra năm 1994, có khả năng tích hợp chặt chẽ với hầu hết các hệ quản trị cơ sở dữ liệu và chạy được trên các hệ điều hành phổ biến như Windows, Unix.
Tác giả phân tích Laravel Framework — một PHP framework mã nguồn mở xây dựng trên mô hình MVC, với các ưu điểm như tốc độ xử lý nhanh, bảo mật cao, hỗ trợ cache backend, công cụ Artisan tích hợp sẵn — đồng thời chỉ ra các nhược điểm như thiếu sự liên kết giữa các phiên bản, ảnh hưởng đến tốc độ tải trang trên ứng dụng di động, và chưa hỗ trợ tính năng thanh toán tích hợp trực tiếp.
MySQL được lựa chọn làm hệ quản trị cơ sở dữ liệu với các ràng buộc chuẩn SQL (NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK, DEFAULT, INDEX). Bootstrap 5 được sử dụng để xây dựng giao diện responsive, tương thích đa thiết bị từ điện thoại di động đến máy tính để bàn.
Chương 2 — Phân tích thiết kế hướng đối tượng
Đây là chương trọng tâm về phân tích và thiết kế hệ thống. Tác giả xác định ba tác nhân chính của hệ thống:
- Người dùng (User): Xem danh sách phòng, tìm kiếm theo tên/loại phòng, xem giá và khuyến mãi, đặt phòng trực tuyến, quản lý hồ sơ cá nhân, xem lịch sử đặt phòng.
- Quản trị viên (Admin): Quản lý tài khoản, phân quyền, phòng khách sạn (phòng, loại phòng, dịch vụ, điểm đặc trưng, giá khuyến mãi, chi phí phát sinh), đơn đặt phòng, tin tức, đánh giá, thống kê doanh thu theo tháng/năm.
- Hệ thống (System): Gửi thông tin đơn đặt phòng, gửi nội dung phản hồi, gửi thông báo, gửi email xác nhận đăng ký phòng và tài khoản.
Chương xây dựng 15 biểu đồ use-case tương ứng với 15 nhóm chức năng, kèm theo 15 scenario mô tả luồng chính (main flow) và luồng ngoại lệ (exception flow) cho từng use-case. Các sơ đồ hoạt động (activity diagram) và sơ đồ tuần tự (sequence diagram) được xây dựng cho các quy trình nghiệp vụ cốt lõi: đăng ký tài khoản, đăng nhập, tìm kiếm phòng, thêm mới phòng, thêm phòng vào đơn đặt phòng, và thanh toán.
Phần thiết kế cơ sở dữ liệu xây dựng 22 bảng dữ liệu, bao gồm các bảng chính:
| Tên bảng |
Mô tả |
users |
Tài khoản người dùng |
admin |
Quản trị viên |
rooms |
Phòng khách sạn |
room_types |
Loại phòng |
room_images |
Hình ảnh phòng |
room_service |
Dịch vụ sẵn có của phòng |
services |
Danh mục dịch vụ |
tags |
Điểm đặc trưng của phòng |
bookings |
Đơn đặt phòng |
booking_detail |
Chi tiết đơn đặt phòng |
cost_booking |
Dịch vụ nâng cao trong đặt phòng |
cost_overrun |
Chi phí phát sinh |
price_manager |
Giá khuyến mãi |
feedbacks |
Phản hồi khách hàng |
news |
Tin tức |
audits |
Lịch sử hoạt động |
roles |
Nhóm quyền |
role_has_permissions |
Phân quyền |
model_has_roles |
Quan hệ nhiều–nhiều tài khoản – nhóm quyền |
room_tag |
Quan hệ nhiều–nhiều nhãn – phòng |
vote_booking |
Bình chọn |
Chương 3 — Xây dựng chương trình
Chương này trình bày kết quả triển khai giao diện và chức năng thực tế của hệ thống. Tác giả mô tả 20 màn hình giao diện phía người dùng và quản trị, bao gồm:
Giao diện phía người dùng (User): Trang chủ, trang đăng nhập, danh sách loại phòng, danh sách phòng khách sạn, trang tin tức, trang liên hệ, quản lý hồ sơ cá nhân, quản lý đơn đặt phòng.
Giao diện phía quản trị (Admin): Dashboard, quản lý khách hàng, quản lý phân quyền, quản lý loại phòng, quản lý dịch vụ, quản lý phòng khách sạn, quản lý giá khuyến mãi, quản lý dịch vụ nâng cao, quản lý đơn đặt phòng, quản lý bảng tin, quản lý lịch sử hoạt động, quản lý thống kê.
Thiết kế và triển khai
Kiến trúc hệ thống
Hệ thống được tổ chức theo mô hình MVC trên nền Laravel Framework. Luồng xử lý yêu cầu: trình duyệt gửi HTTP request → Router Laravel phân luồng theo phương thức (GET/POST/PUT/DELETE) → Controller xử lý logic nghiệp vụ → Model tương tác với MySQL → View trả kết quả HTML cho trình duyệt.
Công nghệ sử dụng
- Back-end: PHP + Laravel Framework (Artisan CLI, Eloquent ORM, SwiftMailer, cache Memcached/Redis)
- Front-end: Bootstrap 5, HTML, CSS, JavaScript, TypeScript
- Cơ sở dữ liệu: MySQL với 22 bảng, sử dụng đầy đủ các ràng buộc khóa chính, khóa ngoại, unique, not null
- Công cụ mô hình hóa: StarUML (vẽ use-case, activity, sequence, ERD)
- Môi trường phát triển: Visual Studio Code
Tính năng đặc thù
Hệ thống hỗ trợ đăng nhập qua Google (bên cạnh đăng nhập thông thường), gửi email xác nhận tự động sau khi đăng ký tài khoản và đặt phòng thành công, quản lý phân quyền theo nhóm (role-based) với quan hệ nhiều–nhiều giữa tài khoản và nhóm quyền, và ghi nhật ký lịch sử hoạt động (bảng audits) để theo dõi mọi thao tác trong hệ thống.
Kết quả và đóng góp
Sản phẩm hoàn thành
Đồ án hoàn thành website TAHO với đầy đủ hai phân hệ:
- Phân hệ người dùng: Tìm kiếm phòng theo nhiều tiêu chí (tên, loại phòng, ngày đến/đi, số người lớn/trẻ em), xem giá và khuyến mãi, đặt phòng trực tuyến kèm lựa chọn dịch vụ nâng cao, theo dõi lịch sử đặt phòng, quản lý hồ sơ cá nhân.
- Phân hệ quản trị: Quản lý toàn diện các đối tượng nghiệp vụ (phòng, đơn đặt phòng, khách hàng, dịch vụ, khuyến mãi, tin tức, phản hồi), phân quyền theo nhóm, và thống kê doanh thu theo tháng/năm.
Cơ sở dữ liệu được thiết kế với 22 bảng đáp ứng đầy đủ các nghiệp vụ của hệ thống đặt phòng khách sạn, bao gồm quản lý chi phí phát sinh, dịch vụ nâng cao, bình chọn và lịch sử hoạt động.
Đóng góp
Đồ án tạo ra một nền tảng kết nối trực tiếp giữa khách hàng có nhu cầu lưu trú và phía quản lý khách sạn trên môi trường trực tuyến, góp phần giải quyết hạn chế của phương thức tìm kiếm và đặt phòng truyền thống vốn tốn nhiều thời gian và phụ thuộc vào vị trí địa lý. Hệ thống hướng đến phục vụ cả nhu cầu của cá nhân lẫn doanh nghiệp, phù hợp với xu hướng chuyển đổi số trong ngành du lịch và khách sạn.
Hạn chế và hướng nghiên cứu tiếp
Tác giả nhận định đồ án còn hạn chế về kiến thức và thời gian thực hiện, dẫn đến một số điểm chưa hoàn thiện. Cụ thể, Laravel Framework được tác giả chỉ ra có nhược điểm chưa tích hợp sẵn tính năng thanh toán, đồng thời ảnh hưởng nhất định đến tốc độ tải trang trên ứng dụng di động — đây là các vấn đề kỹ thuật cần xem xét trong phiên bản phát triển tiếp theo.
Hướng phát triển tiếp theo được tác giả đề cập bao gồm:
- Mở rộng phạm vi áp dụng từ Đà Nẵng ra các thành phố và tỉnh thành khác trên toàn quốc.
- Hoàn thiện và bổ sung các chức năng còn thiếu trên cơ sở tiếp nhận góp ý từ hội đồng phản biện.
Ngoài ra, dựa trên phạm vi hiện tại, hệ thống có thể phát triển thêm tích hợp cổng thanh toán trực tuyến (hiện chưa có trong phiên bản này), phát triển ứng dụng di động song song với website, và bổ sung chức năng so sánh giá phòng giữa các loại.
Giá trị tham khảo
Đồ án có giá trị tham khảo trực tiếp cho các đối tượng sau:
- Sinh viên ngành Công nghệ thông tin đang tìm hiểu về PHP, Laravel Framework, MySQL và thiết kế hệ thống theo mô hình MVC — đặc biệt phần Chương 1 về cơ sở lý thuyết trình bày tổng quan dễ tiếp cận về từng công nghệ.
- Sinh viên làm đồ án phần mềm cần tham khảo quy trình phân tích thiết kế hướng đối tượng hoàn chỉnh: từ xác định tác nhân, xây dựng use-case, viết scenario, vẽ sơ đồ hoạt động/tuần tự đến thiết kế cơ sở dữ liệu — Chương 2 là phần đáng tham khảo nhất.
- Người thực hiện đề tài về hệ thống đặt phòng, thương mại điện tử dịch vụ lưu trú có thể tham khảo cấu trúc 22 bảng cơ sở dữ liệu và các biểu đồ use-case làm khung phân tích nghiệp vụ ban đầu.
- Người tự học Laravel có thể tham khảo Chương 1 để nắm cấu trúc route, controller, view trong Laravel, và Chương 3 để xem cách tổ chức giao diện thực tế của một dự án hoàn chỉnh.
Câu hỏi thường gặp
1. Hệ thống TAHO hỗ trợ những tiêu chí tìm kiếm phòng nào?
Theo Scenario Use-case "Xem danh sách và tìm kiếm phòng khách sạn" (Bảng 2.3), người dùng có thể nhập các thông tin: Ngày đến, Ngày đi, Loại phòng và Số lượng người lớn/trẻ em để lọc kết quả. Ngoài ra, hệ thống cũng cho phép lọc theo trạng thái "Phòng còn trống".
2. Quy trình đặt phòng trong hệ thống diễn ra theo các bước nào?
Theo Scenario Use-case "Đặt phòng khách sạn" (Bảng 2.4), quy trình gồm: (1) Chọn phòng và chọn ngày đặt phòng/ngày trả phòng; (2) Chọn dịch vụ nâng cao nếu có nhu cầu; (3) Nhập thông tin thanh toán và xác nhận; (4) Hệ thống trả về thông báo đặt phòng thành công và kết thúc use case. Người dùng phải đăng nhập trước khi thực hiện đặt phòng.
3. Hệ thống có bao nhiêu bảng cơ sở dữ liệu và bảng nào phục vụ chức năng quản lý đơn đặt phòng?
Hệ thống thiết kế 22 bảng dữ liệu. Các bảng trực tiếp phục vụ chức năng đặt phòng gồm: bookings (đơn đặt phòng), booking_detail (chi tiết đơn), cost_booking (dịch vụ nâng cao), cost_overrun (chi phí phát sinh) và vote_booking (bình chọn sau khi sử dụng).
4. Hệ thống phân quyền được tổ chức như thế nào trong cơ sở dữ liệu?
Hệ thống sử dụng mô hình phân quyền theo nhóm với ba bảng liên quan: roles (nhóm quyền), role_has_permissions (bảng phân quyền liên kết nhóm với các quyền cụ thể), và model_has_roles (quan hệ nhiều–nhiều giữa tài khoản người dùng với nhóm quyền). Admin có thể thực hiện thao tác xem chi tiết, thêm, sửa, xóa và tìm kiếm quyền qua giao diện "Quản lý phân quyền".
5. Website TAHO sử dụng những công cụ nào ngoài PHP và Laravel?
Ngoài PHP và Laravel Framework, đồ án sử dụng: TypeScript (ngôn ngữ front-end bổ sung), Bootstrap 5 (framework giao diện responsive), MySQL (hệ quản trị cơ sở dữ liệu), StarUML (công cụ vẽ biểu đồ UML), và Visual Studio Code (môi trường phát triển). Hệ thống cũng tích hợp đăng nhập bằng tài khoản Google và gửi email tự động qua thư viện SwiftMailer.
Kết luận
Đồ án tốt nghiệp "Xây dựng website hỗ trợ tìm kiếm và đặt phòng khách sạn TAHO" của sinh viên Phan Thị Thanh Thảo, thực hiện năm 2024 tại Trường Đại học Sư phạm Kỹ thuật - Đại học Đà Nẵng, là một đồ án xây dựng phần mềm hoàn chỉnh theo quy trình phân tích thiết kế hướng đối tượng. Hệ thống được phát triển trên nền PHP - Laravel Framework kết hợp MySQL, tổ chức theo mô hình MVC với 22 bảng cơ sở dữ liệu và đầy đủ các biểu đồ UML mô tả 15 nhóm chức năng chính. Đồ án giải quyết bài toán kết nối thông tin giữa khách hàng có nhu cầu lưu trú và phía quản lý khách sạn trên môi trường trực tuyến, ban đầu tập trung vào địa bàn Đà Nẵng với định hướng mở rộng phạm vi trong tương lai.