Giới thiệu dự án
Ngành du lịch toàn cầu và Việt Nam đang chứng kiến sự chuyển dịch số hóa mạnh mẽ sau đại dịch COVID-19. Theo thống kê từ Tổng cục Du lịch và Hiệp hội Thương mại điện tử Việt Nam (VECOM), hơn 72% du khách nội địa và quốc tế hiện có xu hướng tìm kiếm thông tin, so sánh lịch trình và thực hiện đặt tour thông qua các nền tảng trực tuyến. Tuy nhiên, phần lớn các doanh nghiệp lữ hành vừa và nhỏ (SMEs) vẫn đang vận hành thông qua các phương thức truyền thống như quản lý đơn qua bảng tính rời rạc, tư vấn thủ công qua điện thoại, dẫn đến chi phí vận hành cao, tỷ lệ thất thoát dữ liệu và sai sót thông tin lịch trình lên tới 15-20%.
Đồ án tốt nghiệp "Xây dựng website đặt tour du lịch" (Chuyên ngành: Ứng dụng phần mềm, Khoa Công nghệ Thông tin – Trường Cao đẳng Nghề Bách Khoa Hà Nội, do sinh viên Vũ Trung Đức thực hiện dưới sự hướng dẫn của Th.S Bùi Thị Hoà) được xây dựng nhằm giải quyết trực tiếp bài toán chuyển đổi số cho mô hình kinh doanh dịch vụ lữ hành.
+-------------------------------------------------------------------------------+
| MÔ HÌNH TỔNG QUAN HỆ THỐNG |
+-------------------------------------------------------------------------------+
| [Khách hàng (Client)] <---> [Giao diện Responsive: Bootstrap / SCSS / JS] |
| | |
| (HTTP/HTTPS Requests) |
| v |
| [Quản trị / Nhân viên] <---> [Tầng điều khiển & Xử lý: PHP MVC Engine] |
| | |
| (SQL Queries) |
| v |
| [Cơ sở dữ liệu: MySQL Relational DBMS] |
+-------------------------------------------------------------------------------+
Mục tiêu cụ thể của dự án
- Chuẩn hóa quy trình nghiệp vụ đặt tour: Thiết kế và số hóa toàn diện quy trình từ khâu tra cứu danh mục, đăng ký lịch trình, quản lý đơn đặt tour, xử lý hợp đồng đến xác nhận thông tin giữa khách hàng và bộ phận quản trị.
- Xây dựng kiến trúc phần mềm hướng module (Modular Architecture): Ứng dụng mô hình kiến trúc MVC (Model-View-Controller) trên nền tảng ngôn ngữ PHP và cơ sở dữ liệu quan hệ MySQL nhằm tối ưu hóa khả năng bảo trì và mở rộng.
- Phân quyền người dùng đa cấp (Role-Based Access Control - RBAC): Phân định ranh giới chức năng rõ ràng giữa 3 nhóm tác nhân chính: Khách vãng lai / Khách hàng thành viên (Customer), Nhân viên quản lý nghiệp vụ (Staff) và Quản trị viên hệ thống (Admin).
- Tối ưu hóa trải nghiệm giao diện đa thiết bị (Cross-Platform UI/UX): Xây dựng giao diện tương thích đa màn hình (Responsive Design) với chuẩn Web hiện đại, đảm bảo tốc độ tải trang nhanh và thao tác trực quan.
Phạm vi và giới hạn hệ thống
- Phạm vi triển khai: Ứng dụng hoạt động trên môi trường Web Server, hỗ trợ truy cập toàn diện trên mọi trình duyệt chuẩn (Google Chrome, Microsoft Edge, Mozilla Firefox, Safari) trên cả máy tính để bàn (Desktop), máy tính bảng (Tablet) và thiết bị di động (Mobile).
- Giới hạn kỹ thuật: Hệ thống tập trung giải quyết khâu xác nhận đơn đặt tour, quản lý tình trạng đặt chỗ và luân chuyển thông tin nội bộ; quy trình thanh toán hiện tại ghi nhận trạng thái cọc và xác thực qua kênh thanh toán chuyển khoản/trực tiếp thay vì tích hợp cổng thanh toán trực tuyến tự động (Payment Gateway API).
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Khảo sát thực tế các nền tảng du lịch trực tuyến lớn như Traveloka, Booking.com cho thấy các hệ thống này sở hữu cấu trúc khổng lồ nhưng phức tạp, đòi hỏi chi phí tích hợp cao và không tối ưu cho quy trình quản lý tour may đo riêng biệt của các doanh nghiệp lữ hành nội địa.
| Tiêu chí phân tích |
Nền tảng OTA lớn (Traveloka) |
Quy trình truyền thống (Thủ công) |
Hệ thống Website trong đồ án |
| Chi phí triển khai |
Rất cao (Phí hoa hồng 15-25%/đơn) |
Thấp nhưng chi phí nhân sự duy trì cao |
Tối ưu, tự chủ 100% mã nguồn mở |
| Quy trình duyệt đơn |
Tự động hóa hoàn toàn theo slot mở |
Ghi chép sổ sách/Excel, dễ nhầm lẫn |
Bán tự động, có bước thẩm định của Staff |
| Tốc độ xử lý đơn |
Tức thì |
2 - 4 giờ làm việc |
Dưới 1 phút (thông báo tức thì qua Web) |
| Quản lý hợp đồng |
Điện tử hóa phức tạp |
Hợp đồng giấy, rủi ro lưu trữ |
Liên kết tự động thông tin khách và tour |
| Độ phức tạp vận hành |
Cần đội ngũ kỹ thuật chuyên sâu |
Phụ thuộc vào nhân viên vận hành |
Giao diện trực quan, không cần đào tạo sâu |
Hệ thống xác định yêu cầu nghiệp vụ theo ma trận phân loại MoSCoW:
- Must Have (Bắt buộc): Đăng ký/đăng nhập phân quyền, tìm kiếm danh mục tour, quản lý CRUD (Create, Read, Update, Delete) tour và địa điểm, gửi yêu cầu đặt tour, quy trình phê duyệt/hủy đơn đặt tour.
- Should Have (Nên có): Quản lý hợp đồng liên kết tour, thư viện ảnh tương tác (Gallery Slider), form liên hệ trực tuyến, quản lý tài khoản nhân viên.
- Could Have (Có thể mở rộng): Tích hợp cổng thanh toán VNPay/Momo, xuất báo cáo thống kê doanh thu theo biểu đồ định kỳ.
- Won't Have (Chưa thực hiện): Tính năng đặt vé máy bay và hệ thống quản lý phòng khách sạn toàn cầu theo thời gian thực.
Thiết kế hệ thống
Hệ thống được thiết kế theo mô hình 3 lớp (3-Tier Architecture) kết hợp mô hình MVC, đảm bảo tính phân tách giữa giao diện, nghiệp vụ và tầng lưu trữ dữ liệu.
+-------------------------------------------------------------------------------+
| SƠ ĐỒ THIẾT KẾ KIẾN TRÚC MVC |
+-------------------------------------------------------------------------------+
| [VIEW] : HTML5 / SCSS / Bootstrap 5 / Slick.js / Font Awesome 5.4 |
| ^ |
| (Data Rendering) |
| | |
| [CONTROLLER] : PHP 8.x Engine (Xử lý Authentication, Router, Logic CRUD) |
| | |
| (Model Access) |
| v |
| [MODEL / DB] : MySQL 8.0 Engine (InnoDB, Relational Integrity, Foreign Keys) |
+-------------------------------------------------------------------------------+
Technology Stack và phiên bản sử dụng
- Frontend: HTML5, CSS3, SCSS Preprocessor, JavaScript (ES6+), Thư viện UI Bootstrap v5.3, jQuery v3.6.0, Slick Slider v1.8.1, Bộ icon Font Awesome v5.4.
- Backend: PHP Engine (tương thích PHP 7.4 - 8.1), triển khai theo cấu trúc lập trình hướng đối tượng kết hợp thủ tục an toàn.
- Database Management System (DBMS): MySQL Server 8.0, sử dụng Storage Engine InnoDB hỗ trợ ACID và khóa ngoại (Foreign Keys).
- Development & Modeling Tools: Visual Studio Code, Figma (UI/UX Design), Unified Modeling Language (UML), Biểu đồ dòng dữ liệu (DFD Mức ngữ cảnh & Mức 0), Biểu đồ phân rã chức năng (BFD).
Thiết kế cơ sở dữ liệu quan hệ (Relational Database Schema)
Hệ thống bao gồm các bảng thực thể cốt lõi với cấu trúc quan hệ chặt chẽ:
-- Bảng tài khoản và phân quyền người dùng
CREATE TABLE `User` (
`Uid` INT(5) AUTO_INCREMENT PRIMARY KEY,
`Fullname` VARCHAR(40) NOT NULL,
`Username` VARCHAR(40) NOT NULL UNIQUE,
`Password` VARCHAR(60) NOT NULL,
`Email` VARCHAR(200) NOT NULL,
`Address` VARCHAR(400) NOT NULL,
`Phone` VARCHAR(12) NOT NULL,
`Gender` ENUM('male', 'female') DEFAULT 'male',
`Role` INT(1) NOT NULL DEFAULT 0 COMMENT '0: Customer, 1: Staff, 2: Admin'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Bảng thông tin chi tiết Tour / Sản phẩm
CREATE TABLE `Products` (
`ID_product` INT(11) AUTO_INCREMENT PRIMARY KEY,
`Image` VARCHAR(300) NOT NULL,
`Product_name` VARCHAR(100) NOT NULL,
`Guest` TINYINT NOT NULL,
`Bed` TINYINT(1) NOT NULL,
`Bathroom` TINYINT(1) NOT NULL,
`Price` VARCHAR(20) NOT NULL,
`Title` VARCHAR(100) NOT NULL,
`Short_des` VARCHAR(200) NOT NULL,
`Description` MEDIUMTEXT NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Bảng quản lý Đơn đặt tour (Orders)
CREATE TABLE `Orders` (
`ID_order` INT(11) AUTO_INCREMENT PRIMARY KEY,
`ID_user` INT(5) NOT NULL,
`ID_product` INT(11) NOT NULL,
`Address` VARCHAR(50) NOT NULL,
`Fullname` VARCHAR(30) NOT NULL,
`Email` VARCHAR(30) NOT NULL,
`Request` MEDIUMTEXT NOT NULL,
`Price` INT NOT NULL,
`Quantity` INT(5) NOT NULL,
`Status` INT(1) NOT NULL DEFAULT 0 COMMENT '0: Pending, 1: Approved, 2: Cancelled',
CONSTRAINT `fk_orders_user` FOREIGN KEY (`ID_user`) REFERENCES `User` (`Uid`) ON DELETE CASCADE,
CONSTRAINT `fk_orders_product` FOREIGN KEY (`ID_product`) REFERENCES `Products` (`ID_product`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Implementation và kết quả
Quy trình phát triển (Development Process)
Dự án được thực hiện theo quy trình phát triển lặp từng bước (Iterative Development) với các giai đoạn triển khai rõ ràng:
- Giai đoạn 1 (Khảo sát & Phân tích): Khảo sát thực tế nghiệp vụ đặt tour, phân tích đối thủ cạnh tranh (Traveloka), xây dựng biểu đồ Use Case tổng quan và ca sử dụng chi tiết cho từng tác nhân.
- Giai đoạn 2 (Thiết kế hệ thống): Thiết kế sơ đồ quan hệ thực thể ERD, chuẩn hóa cơ sở dữ liệu quan hệ đạt dạng chuẩn 3NF, tạo wireframe và mockup giao diện trên Figma.
- Giai đoạn 3 (Xây dựng Front-End & Back-End): Tổ chức cây thư mục chuẩn MVC, lập trình giao diện người dùng bằng Bootstrap và SCSS, hiện thực hóa các Controller xử lý nghiệp vụ đặt tour và phân quyền người dùng trong PHP.
- Giai đoạn 4 (Kiểm thử, Tối ưu & Đóng gói): Kiểm thử chức năng, tối ưu hóa câu truy vấn SQL, kiểm tra tính tương thích Responsive trên nhiều độ phân giải màn hình.
Hiện thực hóa thuật toán & Code Snippet cốt lõi
Quy trình tiếp nhận và xử lý đặt tour của khách hàng được chuẩn hóa nhằm ngăn chặn các lỗi bất nhất trạng thái đơn hàng.
<?php
// Snippet: Controller tiếp nhận và xác thực đơn đặt tour (Booking Controller)
session_start();
require_once '../config/database.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['btn_book_tour'])) {
// 1. Kiểm tra trạng thái đăng nhập
if (!isset($_SESSION['user_id'])) {
header("Location: ../login.php?error=unauthorized");
exit();
}
// 2. Thu thập và làm sạch dữ liệu đầu vào (Input Sanitization)
$id_user = intval($_SESSION['user_id']);
$id_product = intval($_POST['product_id']);
$fullname = htmlspecialchars(trim($_POST['fullname']), ENT_QUOTES, 'UTF-8');
$email = filter_var(trim($_POST['email']), FILTER_SANITIZE_EMAIL);
$address = htmlspecialchars(trim($_POST['address']), ENT_QUOTES, 'UTF-8');
$quantity = max(1, intval($_POST['quantity']));
$request = htmlspecialchars(trim($_POST['special_request']), ENT_QUOTES, 'UTF-8');
// 3. Truy vấn giá sản phẩm từ cơ sở dữ liệu để tính toán chính xác
$stmt = $conn->prepare("SELECT Price FROM Products WHERE ID_product = ?");
$stmt->bind_param("i", $id_product);
$stmt->execute();
$result = $stmt->get_result();
if ($row = $result->fetch_assoc()) {
$unit_price = intval(preg_replace('/[^0-9]/', '', $row['Price']));
$total_price = $unit_price * $quantity;
$status_init = 0; // 0: Chờ phê duyệt (Pending)
// 4. Lưu vết đơn đặt tour vào bảng Orders
$insert_stmt = $conn->prepare(
"INSERT INTO Orders (ID_user, ID_product, Address, Fullname, Email, Request, Price, Quantity, Status)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"
);
$insert_stmt->bind_param("iissssiii", $id_user, $id_product, $address, $fullname, $email, $request, $total_price, $quantity, $status_init);
if ($insert_stmt->execute()) {
$_SESSION['booking_success'] = "Đơn đặt tour #".$insert_stmt->insert_id." đã được gửi thành công!";
header("Location: ../booking_history.php");
exit();
} else {
$_SESSION['booking_error'] = "Lỗi khi ghi nhận đơn hàng: " . $conn->error;
header("Location: ../tour_detail.php?id=" . $id_product);
exit();
}
}
}
?>
Kết quả kiểm thử & Đánh giá hiệu năng
Hệ thống đã trải qua các đợt kiểm thử hộp đen (Black-box Testing) trên các nhóm chức năng trọng yếu:
| Module chức năng |
Tổng số Test Case |
Tỷ lệ Pass (%) |
Lỗi phát hiện (Bugs) |
Trạng thái xử lý |
| Xác thực & Phân quyền (Auth/RBAC) |
12 |
100% |
1 (Lỗi session timeout) |
Đã sửa đổi |
| CRUD Tour & Địa điểm du lịch |
18 |
100% |
0 |
Đạt chuẩn |
| Quy trình đặt tour & Lưu trữ đơn |
15 |
100% |
2 (Lỗi ép kiểu giá tiền) |
Đã tối ưu hóa |
| Phê duyệt đơn hàng & Đổi trạng thái |
10 |
100% |
0 |
Đạt chuẩn |
| Form liên hệ & Phản hồi khách hàng |
8 |
100% |
0 |
Đạt chuẩn |
- Đo lường hiệu năng tải trang (Performance Benchmarking):
- Thời gian phản hồi phản hồi máy chủ đầu tiên (TTFB): ~180ms trên môi trường máy chủ cục bộ và ~320ms qua môi trường mạng nội bộ.
- Tốc độ tải toàn trang (Full Page Load): Dưới 1.4s nhờ tối ưu hóa tài nguyên hình ảnh định dạng WebP/JPEG nén và cấu trúc CSS/JS nhỏ gọn.
- Mức tiêu thụ bộ nhớ RAM máy chủ: Chỉ chiếm khoảng 45MB - 65MB khi xử lý các phiên làm việc cơ bản trên Apache Server.
Đổi mới và đóng góp
- Khép kín quy trình luân chuyển dữ liệu đặt tour (End-to-End Workflow): Thay vì chỉ hiển thị thông tin dạng tĩnh, hệ thống thiết lập chu trình dữ liệu hoàn chỉnh từ người dùng (gửi thông tin số lượng khách, ngày đi, ngày về) đến bộ phận quản lý (duyệt thông tin, kiểm tra tính khả thi, liên kết tạo danh mục hợp đồng).
- Cơ chế phân quyền 3 cấp độc lập:
- Admin: Toàn quyền cấu hình danh mục, quản lý nhân viên, xóa sửa toàn diện các bản ghi dữ liệu.
- Staff: Tập trung vào nghiệp vụ duyệt đơn, kiểm tra trạng thái đơn đặt tour và xác nhận tính hợp lệ của thông tin khách hàng.
- Customer: Giao diện cá nhân hóa, xem lại lịch sử đặt chỗ và trạng thái phê duyệt của từng chuyến đi.
- Kiến trúc giao diện mô đun hóa (Modular UI Components): Tận dụng sức mạnh của SCSS và Bootstrap Grid System giúp việc tùy biến giao diện website du lịch trở nên nhất quán, giảm hơn 40% thời gian viết lại mã nguồn định dạng so với việc sử dụng CSS thuần.
Ứng dụng thực tế và triển khai
Yêu cầu cấu hình hệ thống triển khai (System Requirements)
Hệ thống được thiết kế với mức tiêu thụ tài nguyên tối thiểu, cho phép hoạt động mượt mà trên cả các thiết bị phần cứng nhúng hoặc máy chủ ảo chi phí thấp:
+-------------------------------------------------------------------------------+
| YÊU CẦU CẤU HÌNH HỆ THỐNG |
+-------------------------------------------------------------------------------+
| PHÍA MÁY CHỦ (SERVER SPECIFICATIONS): |
| * Hệ điều hành: Linux (Ubuntu 20.04/22.04 LTS) hoặc Windows Server |
| * Cấu hình tối thiểu: Tương đương Raspberry Pi 4 / Cloud VPS (1 vCPU, 2GB RAM)|
| * Web Server: Apache 2.4 / Nginx 1.18+ |
| * Runtime: PHP 7.4.x hoặc PHP 8.1.x |
| * Cơ sở dữ liệu: MySQL Community Server 8.0+ / MariaDB 10.5+ |
+-------------------------------------------------------------------------------+
| PHÍA MÁY KHÁCH (CLIENT SPECIFICATIONS): |
| * Cấu hình phần cứng: Thiết bị có RAM tối thiểu 1GB |
| * Trình duyệt hỗ trợ: Chrome 90+, Edge 90+, Safari 14+, Firefox 88+ |
| * Kết nối mạng: Internet băng thông tối thiểu 3G/4G hoặc WiFi ổn định |
+-------------------------------------------------------------------------------+
Hướng dẫn cài đặt và triển khai hệ thống (Step-by-Step Deployment)
- Khởi tạo cơ sở dữ liệu:
- Cấu hình kết nối Backend:
- Mở tệp tin cấu hình kết nối CSDL (
config/database.php) và cập nhật thông số môi trường:
<?php
$db_host = "localhost";
$db_user = "root";
$db_pass = "your_secure_password";
$db_name = "db_tour_booking";
$conn = new mysqli($db_host, $db_user, $db_pass, $db_name);
if ($conn->connect_error) {
die("Kết nối CSDL thất bại: " . $conn->connect_error);
}
$conn->set_charset("utf8mb4");
?>
- Phân quyền thư mục lưu trữ:
Đánh giá hiệu quả kinh tế & ROI (Return on Investment)
- Tiết kiệm chi phí vận hành: Giảm 60% thời gian xử lý thủ công của nhân viên tư vấn; loại bỏ 100% chi phí in ấn tờ rơi, biểu mẫu hợp đồng giấy trong giai đoạn đầu tiếp cận.
- Thời gian thu hồi vốn: Ước tính dưới 6 tháng đối với một đại lý du lịch địa phương khi áp dụng nền tảng tự xây dựng này so với việc trả phí duy trì hàng tháng cho các dịch vụ phần mềm đóng gói sẵn (SaaS).
Hạn chế và hướng phát triển
Các hạn chế kỹ thuật hiện tại
- Hệ thống chưa tích hợp cơ chế xác thực hai yếu tố (2FA) và cổng thanh toán tự động qua thẻ quốc tế/ví điện tử.
- Dữ liệu hình ảnh đang lưu trữ cục bộ trên thư mục máy chủ, chưa kết nối các dịch vụ lưu trữ đám mây (Cloud Object Storage như AWS S3 hoặc Cloudinary) để tăng tốc độ phân phối nội dung (CDN).
- Thuật toán tìm kiếm hiện sử dụng truy vấn SQL
LIKE %keyword% cơ bản, chưa tối ưu cho việc tìm kiếm toàn văn (Full-Text Search) hoặc xử lý từ khóa không dấu chuyên sâu.
Kế hoạch nâng cấp và hướng mở rộng
- Tích hợp Payment Gateway: Kết nối API VNPay Sandbox và MoMo Merchant để tự động hóa khâu thanh toán tiền cọc ngay khi đặt tour.
- Nâng cấp kiến trúc RESTful API: Tách biệt hoàn toàn tầng Front-End bằng React.js hoặc Vue.js, xây dựng hệ thống API chuẩn RESTful trên nền tảng Laravel Framework để hỗ trợ phát triển ứng dụng di động (Mobile App) trong tương lai.
- Hệ thống thông báo Real-time: Tích hợp giao thức WebSocket (hoặc Firebase Cloud Messaging) để tự động gửi thông báo đến nhân viên ngay khi có đơn đặt tour mới phát sinh.
Đối tượng hưởng lợi
+-------------------------------------------------------------------------------+
| ĐỐI TƯỢNG HƯỞNG LỢI |
+-------------------------------------------------------------------------------+
| [SINH VIÊN & NGƯỜI HỌC] : Tham khảo cấu trúc đồ án, mô hình hóa UML |
| và phân tích CSDL quan hệ chuẩn 3NF. |
| |
| [LẬP TRÌNH VIÊN WEB] : Nắm bắt kiến trúc MVC với PHP/MySQL thuần, |
| cách tổ chức CSS/SCSS và xử lý bảo mật CRUD. |
| |
| [DOANH NGHIỆP DU LỊCH NHỎ] : Sở hữu giải pháp chuyển đổi số linh hoạt, |
| chi phí thấp, dễ dàng tự chủ mã nguồn. |
+-------------------------------------------------------------------------------+
- Sinh viên ngành CNTT/Ứng dụng phần mềm: Tài liệu tham khảo hữu ích về cách chuyển hóa một bài toán thực tế thành hệ thống phần mềm hoàn chỉnh, từ khâu đặc tả Use Case, thiết kế ERD/DFD đến cài đặt chương trình.
- Lập trình viên Web mới bắt đầu (Junior Developers): Cung cấp mẫu hình tổ chức mã nguồn MVC rõ ràng, kỹ thuật xử lý form an toàn, chống lỗ hổng SQL Injection và Cross-Site Scripting (XSS).
- Doanh nghiệp lữ hành và hộ kinh doanh du lịch: Cung cấp khung nền tảng mã nguồn mở vững chắc để tùy biến và đưa vào kinh doanh thực tiễn mà không chịu rào cản chi phí bản quyền.
Câu hỏi thường gặp
1. Hệ thống có thể chạy trên các hosting dùng chung (Shared Hosting) giá rẻ không?
Có. Do website được xây dựng bằng ngôn ngữ PHP thuần kết hợp cơ sở dữ liệu MySQL tiêu chuẩn, hệ thống hoàn toàn tương thích với hầu hết các gói Shared Hosting hỗ trợ Apache/cPanel hiện nay mà không đòi hỏi các môi trường máy chủ phức tạp như Node.js hay Docker.
2. Dữ liệu mật khẩu của người dùng được bảo mật như thế nào trong cơ sở dữ liệu?
Trong phiên bản triển khai thực tế, mật khẩu người dùng được khuyến nghị mã hóa một chiều thông qua thuật toán Bcrypt bằng hàm password_hash() trong PHP, đảm bảo an toàn tuyệt đối ngay cả khi dữ liệu bảng User bị rò rỉ.
3. Làm cách nào để xử lý sự cố khi khách hàng gửi đơn đặt tour nhưng không nhận được phản hồi?
Quy trình khắc phục sự cố (Troubleshooting):
- Kiểm tra trạng thái đơn hàng trong bảng
Orders thông qua trang quản trị Admin.
- Nếu cột
Status bằng 0 (Pending), nhân viên cần bấm duyệt đơn để chuyển sang Status = 1 (Approved).
- Kiểm tra nhật ký lỗi kết nối cơ sở dữ liệu trong tệp tin log của Web Server (
error.log).
4. Hệ thống có khả năng đáp ứng bao nhiêu lượt truy cập đồng thời?
Với cấu hình máy chủ tối thiểu (1 vCPU, 2GB RAM) chạy trên nền tảng Linux và Apache tối ưu hóa cache, hệ thống có thể xử lý ổn định từ 100 - 150 người dùng duyệt tour đồng thời (Concurrent Users). Khi số lượng truy cập tăng, hệ thống có thể mở rộng dễ dàng bằng cách nâng cấp RAM hoặc áp dụng giải pháp lưu bộ nhớ đệm Redis.
5. Dự toán chi phí duy trì vận hành website đặt tour này trong 1 năm là bao nhiêu?
- Tên miền quốc tế (.com/.net): ~250.000 - 350.000 VNĐ/năm.
- Hosting/Cloud VPS cơ bản: ~600.000 - 1.200.000 VNĐ/năm.
- Chứng chỉ bảo mật SSL: 0 VNĐ (Sử dụng Let's Encrypt miễn phí).
- Tổng chi phí: Chỉ khoảng 850.000 - 1.550.000 VNĐ/năm.
Kết luận
Đồ án tốt nghiệp "Xây dựng website đặt tour du lịch" của sinh viên Vũ Trung Đức đã giải quyết thành công các yêu cầu cốt lõi của một hệ thống thương mại điện tử chuyên ngành lữ hành. Dự án đã chứng minh tính khả thi cao trong việc ứng dụng công nghệ thông tin vào chuyển đổi số doanh nghiệp, mang lại giải pháp quản lý bán tour và tương tác khách hàng hiệu quả, chi phí thấp và dễ dàng mở rộng. Đây là tài liệu nghiên cứu và triển khai có giá trị thực tiễn cao cho cả sinh viên, nhà phát triển phần mềm và các đơn vị kinh doanh du lịch.