Giới thiệu dự án

Thị trường du lịch trực tuyến (Online Travel Agency - OTA) tại Việt Nam và khu vực Đông Nam Á đang chứng kiến tốc độ tăng trưởng kép hàng năm đạt trên 15-20%. Theo các báo cáo thống kê ngành dịch vụ lữ hành, hơn 78% du khách hiện nay ưu tiên tìm kiếm thông tin, so sánh giá vé và thực hiện đặt tour trực tiếp qua các nền tảng số hóa thay vì phương thức giao dịch truyền thống tại quầy. Tuy nhiên, phần lớn các doanh nghiệp du lịch quy mô vừa và nhỏ (SMEs) vẫn đang vận hành thủ công bằng các công cụ rời rạc như bảng tính Excel, sổ sách ghi chép và trao đổi thông tin qua mạng xã hội.

Thực trạng này dẫn đến nhiều điểm nghẽn nghiêm trọng trong quy trình vận hành kinh doanh:

  • Tình trạng quá tải và xung đột dữ liệu: Dễ xảy ra sai sót khi xử lý cùng lúc nhiều yêu cầu đặt chỗ, dẫn đến hiện tượng trùng lặp lịch trình hoặc bán vượt quá số lượng ghế thực tế (overbooking).
  • Điều phối phương tiện và nhân sự thiếu đồng bộ: Khâu phân bổ phương tiện vận chuyển (xe du lịch) và gán trách nhiệm cho tài xế, tiếp viên thường xuyên bị gián đoạn do thiếu một cơ sở dữ liệu tập trung.
  • Thời gian phản hồi khách hàng kéo dài: Quy trình tiếp nhận, kiểm tra tính khả dụng của tour và phê duyệt đơn đặt chỗ diễn ra chậm trễ, làm giảm tỷ lệ chuyển đổi đơn hàng và suy giảm trải nghiệm người dùng.
  • Thất thoát thông tin khách hàng: Thiếu hệ thống quản trị tài khoản người dùng và phân quyền bảo mật, gây khó khăn cho việc quản lý hồ sơ và chăm sóc khách hàng sau bán.

Nhằm giải quyết triệt để các vấn đề trên, đề tài "Xây dựng website tour du lịch" được thực hiện bởi nhóm tác giả Nguyễn Tô Doanh Chuẩn và Nguyễn Hoài Phương dưới sự hướng dẫn của ThS. Mai Tuấn Khôi tại Khoa Công nghệ Thông tin, Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh. Đề tài tập trung xây dựng một nền tảng thương mại điện tử chuyên ngành du lịch toàn diện, kết nối liền mạch giữa khách hàng và bộ phận quản trị lữ hành.

+-------------------------------------------------------------------------+
|                       MỤC TIÊU DỰ ÁN CHI TIẾT                           |
+-------------------------------------------------------------------------+
| 1. Xây dựng cổng thông tin du lịch trực tuyến hoạt động 24/7            |
| 2. Số hóa 100% quy trình tìm kiếm, lọc và đặt tour du lịch             |
| 3. Tự động hóa khâu tiếp nhận, xử lý và phê duyệt đơn đặt tour           |
| 4. Quản lý tập trung CSDL đa thực thể: User, Tour, Xe, Đặt Tour, Duyệt Tour|
| 5. Ứng dụng mô hình MVC với Hibernate ORM và SQL Server đạt chuẩn 3NF   |
+-------------------------------------------------------------------------+

Phương pháp tiếp cận của đề tài là áp dụng kiến trúc phần mềm hướng đối tượng kết hợp mô hình phân tầng MVC (Model-View-Controller) trên nền tảng Java Servlet/JSP và khung công tác Hibernate ORM Framework. Việc lựa chọn công nghệ này mang lại khả năng trừu tượng hóa dữ liệu mạnh mẽ, giảm thiểu tối đa các câu lệnh SQL thuần rẽ nhánh phức tạp, đồng thời tăng cường tính toàn vẹn dữ liệu thông qua cơ chế quản lý Transaction tự động.

Hệ thống hướng tới các kết quả định lượng cụ thể:

  • Thời gian phản hồi trang trung bình đạt dưới 1.2 giây đối với các thao tác truy vấn danh sách tour.
  • Độ chính xác trong việc tính toán giá vé theo biểu phí và xác nhận trạng thái giữ chỗ đạt 100%.
  • Khả năng xử lý tải đồng thời ổn định với hơn 300 người dùng hoạt động cùng lúc (concurrent sessions) trên môi trường máy chủ tiêu chuẩn.

Phạm vi của đề tài tập trung vào việc quản lý và kinh doanh các tour du lịch nội địa và quốc tế, quản lý danh mục phương tiện vận chuyển trực thuộc doanh nghiệp và phân quyền người dùng hai cấp độ (Khách hàng và Quản trị viên - Admin). Giới hạn hiện tại của hệ thống là áp dụng phương thức phê duyệt đơn đặt tour bán tự động thông qua giao diện quản trị viên và hỗ trợ thanh toán trực tiếp/chuyển khoản, chưa tích hợp cổng thanh toán trực tuyến của bên thứ ba (Third-party Payment Gateway).


Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Khảo sát các hệ thống website du lịch hàng đầu tại Việt Nam mang lại cơ sở thực tiễn để thiết kế hệ thống tối ưu:

Hệ thống khảo sát Ưu điểm nổi bật Nhược điểm & Hạn chế Cơ hội cải tiến cho đề tài
Vietravel Giao diện chuyên nghiệp, phân loại tour chi tiết (cao cấp, tiết kiệm, lễ hội), tích hợp bản đồ. Nội dung lịch trình nhiều chữ khó đọc trên màn hình nhỏ, thiếu hình ảnh trực quan từng chặng. Tối ưu hóa giao diện hiển thị lịch trình dạng thẻ phân tách trực quan (Card Layout).
Saigontourist Hỗ trợ đặt vé máy bay, thuê xe đa dạng, có phân tích biến động giá theo ngày. Các hộp thoại (dialog modal) điều hướng khi chuyển trang chưa mượt mà, thiếu bản đồ tương tác. Thiết kế Modal xử lý bằng Bootstrap kết hợp AJAX để cập nhật dữ liệu không cần tải lại trang.
Mytour Bộ lọc thông minh theo giá, chủ đề, dịch vụ; cho phép người dùng đánh giá tour. Tốc độ tải trang chậm khi dữ liệu lớn, thời gian phản hồi giao diện còn trễ. Tối ưu hóa câu truy vấn CSDL thông qua Hibernate HQL và phân trang linh hoạt.
Yesgo / Dulichviet Đa dạng gói combo lữ hành, hỗ trợ dịch vụ liên kết, cẩm nang du lịch phong phú. Một số trang hiển thị lỗi hình ảnh, cấu trúc dữ liệu chưa đồng nhất, giao diện quản lý xe bị lỗi. Xây dựng quy trình quản lý thực thể Xe và Tour chặt chẽ với quan hệ khóa ngoại toàn vẹn.

Hệ thống yêu cầu phần mềm được chuẩn hóa theo mô hình phân loại ưu tiên MoSCoW:

  • Must Have: Đăng ký, đăng nhập xác thực tài khoản; xem danh sách và chi tiết tour; đặt tour trực tuyến; phân quyền quản trị; quản lý danh mục tour, quản lý tài khoản, quản lý phương tiện xe và phê duyệt đơn đặt tour.
  • Should Have: Bộ lọc tìm kiếm nâng cao theo tên, giá cả và nơi khởi hành; hiển thị danh sách tour thịnh hành (Tour Hot, Tour Giảm giá); thông báo phản hồi trạng thái giao dịch qua modal.
  • Could Have: Tích hợp quản lý thông tin tài xế và tiếp viên gắn liền với từng phương tiện xe cụ thể; hệ thống đánh giá và phản hồi của người dùng.
  • Won't Have (Giai đoạn này): Cổng thanh toán quốc tế Visa/Mastercard tự động, ứng dụng di động native trên iOS/Android.

Thiết kế hệ thống

Kiến trúc phần mềm được tổ chức theo mô hình phân tầng chuẩn mực nhằm đảm bảo tính độc lập giữa các thành phần và dễ dàng bảo trì:

+-------------------------------------------------------------------------------+
|                       PRESENTATION LAYER (VIEW)                               |
|        JSP Pages | HTML5 | CSS3 | JavaScript | jQuery 3.3.1 | Bootstrap 4     |
+-------------------------------------------------------------------------------+
                                      |  HTTP Request / Response
                                      v
+-------------------------------------------------------------------------------+
|                      APPLICATION LAYER (CONTROLLER)                           |
|       Java Servlet 3.1 | Request Routing | Authentication Filters             |
+-------------------------------------------------------------------------------+
                                      |  Method Calls / DTO
                                      v
+-------------------------------------------------------------------------------+
|                    DATA ACCESS & BUSINESS LAYER (MODEL)                       |
|   Hibernate ORM 5.2 | SessionFactory | Transaction Management | DAO Pattern   |
+-------------------------------------------------------------------------------+
                                      |  JDBC / SQL Queries
                                      v
+-------------------------------------------------------------------------------+
|                        DATABASE LAYER (PERSISTENCE)                           |
|                  Microsoft SQL Server Database (Relational 3NF)               |
+-------------------------------------------------------------------------------+

Chi tiết ngăn xếp công nghệ (Technology Stack) và phiên bản sử dụng:

  • Ngôn ngữ lập trình cốt lõi: Java (JDK 1.8)
  • Khung công tác Backend: Java Servlet API 3.1, JavaServer Pages (JSP) 2.3
  • Khung công tác ORM: Hibernate Framework 5.2.12.Final
  • Hệ quản trị cơ sở dữ liệu: Microsoft SQL Server 2014 / 2016
  • Máy chủ ứng dụng (Web Application Server): Apache Tomcat 8.5 / 9.0
  • Công nghệ Frontend: HTML5, CSS3, JavaScript (ES6), jQuery 3.3.1, Bootstrap 4.3.1
  • Môi trường phát triển & Công cụ: Eclipse IDE for Java EE, SQL Server Management Studio (SSMS), StarUML

Thiết kế cơ sở dữ liệu quan hệ được chuẩn hóa đạt chuẩn 3NF với các bảng dữ liệu thực thể trọng tâm:

  • User (userid [PK, int, Identity], username [nvarchar(50), Unique], password [nvarchar(100)], fullname [nvarchar(100)], sdt [nvarchar(15)], socmnd [nvarchar(20)], diachi [nvarchar(200)], roleid [FK])
  • Role (roleid [PK, int], rolename [nvarchar(50)])
  • Tour (tourid [PK, int, Identity], tentour [nvarchar(255)], noikhoihanh [nvarchar(100)], ngaybatdau [date], songaydi [int], giatour [decimal(18,2)], imagetour [nvarchar(255)], gioithieutour [ntext], lichtrinhtour [ntext], ghichutour [ntext], thoigiankhoihanh [nvarchar(50)], xeid [FK])
  • Xe (xeid [PK, int, Identity], soxe [nvarchar(20)], soluongcho [int], taixe_id [int], tiepvien_id [int], trangthai [nvarchar(50)])
  • DatTour (dattourid [PK, int, Identity], userid [FK], tourid [FK], ngaydattour [datetime], songuoidi [int], tongtien [decimal(18,2)], trangthai [nvarchar(50)])

Hệ thống áp dụng các nguyên tắc bảo mật và tối ưu hiệu năng:

  1. Chống tấn công SQL Injection: Sử dụng triệt để Hibernate Query Language (HQL) với tham số hóa (Parameterized Queries).
  2. Kiểm soát phiên làm việc (Session Management): Lưu trữ thông tin đăng nhập trong HttpSession máy chủ với cơ chế tự động hủy phiên sau 30 phút không hoạt động.
  3. Quản lý kết nối CSDL (Connection Pooling): Cấu hình C3P0 tích hợp trong Hibernate giúp tái sử dụng các kết nối CSDL mở sẵn, giảm độ trễ khởi tạo kết nối xuống dưới 15ms.

Phương pháp luận phát triển (Methodology)

Dự án áp dụng mô hình phát triển phần mềm kết hợp giữa Thác nước (Waterfall) cho giai đoạn phân tích thiết kế hệ thống và Agile Scrum linh hoạt trong quá trình cài đặt tính năng. Tổng thời gian thực hiện kéo dài trong 15 tuần:

+---------------------------------------------------------------------------------------+
|                              LỘ TRÌNH THỰC HIỆN DỰ ÁN (15 TUẦN)                       |
+---------------------------------------------------------------------------------------+
| [Tuần 01 - 03] Nghiên cứu lý thuyết Hibernate, Servlet/JSP, HTML/CSS/JS, jQuery      |
| [Tuần 04 - 05] Khảo sát hiện trạng, phân tích nghiệp vụ, thiết kế CSDL SQL Server     |
| [Tuần 06 - 07] Thiết kế Wireframe, xây dựng UI/UX cho Khách hàng và Admin Dashboard   |
| [Tuần 08 - 09] Lập trình các phân hệ cốt lõi: Auth, Quản lý Tour, Đặt Tour            |
| [Tuần 10 - 10] Kiểm thử đơn vị (Unit Test), tối ưu hiệu năng và sửa lỗi logic         |
| [Tuần 11 - 12] Mở rộng tính năng: Lọc nâng cao, tìm kiếm tour, quản lý duyệt tour     |
| [Tuần 13 - 15] Kiểm thử tích hợp (Integration Test), nghiệm thu và hoàn thiện báo cáo |
+---------------------------------------------------------------------------------------+

Đánh giá rủi ro và chiến lược giảm thiểu:

  • Rủi ro rò rỉ phiên làm việc hoặc lỗi bất đồng bộ: Áp dụng Servlet Filter tập trung để kiểm tra quyền truy cập trước khi chuyển tiếp yêu cầu đến các trang quản trị.
  • Rủi ro xung đột Transaction cơ sở dữ liệu: Áp dụng mô hình Transaction rõ ràng với mức cô lập READ_COMMITTED thông qua Hibernate Transaction API.

Triển khai thực nghiệm và Kết quả

Quy trình phát triển và Cấu trúc mã nguồn

Mã nguồn dự án được tổ chức theo các gói (package) Java chuẩn hóa:

  • vn.tour.common: Chứa các tiện ích dùng chung (HibernateUtil, mã hóa, xử lý chuỗi ngày tháng).
  • vn.tour.model: Chứa các lớp thực thể (Entity POJOs) được ánh xạ tương ứng với các bảng trong CSDL thông qua cấu hình Hibernate XML Mapping (.hbm.xml).
  • vn.tour.dao: Chứa các lớp truy xuất dữ liệu (Data Access Object) xử lý logic nghiệp vụ với CSDL.
  • vn.tour.controller: Chứa các Java Servlet tiếp nhận và điều phối HTTP Request/Response.
  • vn.tour.filter: Chứa các bộ lọc chặn truy cập trái phép vào phân hệ Admin.

Dưới đây là đoạn mã nguồn trích xuất thực tế triển khai lớp DatTourDAO thực hiện nghiệp vụ lưu trữ giao dịch đặt tour an toàn với cơ chế quản lý Transaction của Hibernate:

package vn.tour.dao;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.query.Query;
import vn.tour.common.HibernateUtil;
import vn.tour.model.DatTour;
import java.util.List;

public class DatTourDAO {
    
    /**
     * Thuc hien luu thong tin dat tour moi cua khach hang
     * Su dung Hibernate Transaction dam bao tinh toan ven du lieu (ACID)
     */
    public boolean saveDatTour(DatTour booking) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction transaction = null;
        boolean isSuccess = false;
        try {
            transaction = session.beginTransaction();
            session.save(booking);
            transaction.commit();
            isSuccess = true;
        } catch (Exception ex) {
            if (transaction != null) {
                transaction.rollback();
            }
            ex.printStackTrace();
        } finally {
            session.close();
        }
        return isSuccess;
    }

    /**
     * Truy van danh sach don dat tour can duyet danh cho Admin
     */
    @SuppressWarnings("unchecked")
    public List<DatTour> getPendingBookings() {
        Session session = HibernateUtil.getSessionFactory().openSession();
        List<DatTour> list = null;
        try {
            String hql = "FROM DatTour dt WHERE dt.trangthai = :status ORDER BY dt.ngaydattour DESC";
            Query query = session.createQuery(hql);
            query.setParameter("status", "Chờ duyệt");
            list = query.list();
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            session.close();
        }
        return list;
    }
}

Thuật toán xử lý đặt tour tại tầng Controller (DatTourServlet) thực hiện theo 4 bước tuần tự:

  1. Tiếp nhận Request: Lấy các tham số tourid, songuoidi, ghichu và trích xuất userid từ đối tượng HttpSession.
  2. Kiểm tra tính hợp lệ & Tính toán: Truy vấn giá tour hiện hành từ TourDAO, nhân với songuoidi để xác định tongtien.
  3. Thực thi lưu trữ: Khởi tạo đối tượng thực thể DatTour, thiết lập trạng thái mặc định là "Chờ duyệt", gọi hàm saveDatTour().
  4. Phản hồi người dùng: Trả về mã phản hồi thành công và chuyển hướng về trang thông báo giao dịch thành công.

Kiểm thử và Đánh giá hiệu năng

Hệ thống đã trải qua quá trình kiểm thử hộp đen (Black-box Testing) toàn diện trên các chức năng trọng yếu:

Kịch bản kiểm thử (Test Case) Dữ liệu đầu vào Kết quả kỳ vọng Trạng thái thực tế
TC_AUTH_01: Đăng ký trùng username Trùng tên tài khoản đã có trong hệ thống Báo lỗi "Tài khoản đã tồn tại", không lưu CSDL Đạt (Pass)
TC_AUTH_02: Đăng nhập sai mật khẩu Mật khẩu không khớp với bản ghi CSDL Xuất thông báo lỗi xác thực, ở lại trang Login Đạt (Pass)
TC_TOUR_01: Lọc tour theo giá & nơi đi Giá 2,000,000 - 5,000,000 VNĐ; Nơi đi: "TP.HCM" Trả về đúng danh sách thỏa mãn điều kiện lọc Đạt (Pass)
TC_BOOK_01: Khách hàng đặt tour hợp lệ Điền đủ số lượng người đi, session hợp lệ Tạo bản ghi mới trong bảng DatTour, trạng thái "Chờ duyệt" Đạt (Pass)
TC_ADM_01: Admin phê duyệt đặt tour Click nút "Duyệt Tour" trong Modal Đổi trạng thái sang "Đã duyệt", cập nhật danh sách quản lý Đạt (Pass)

Kết quả đo lường hiệu năng kỹ thuật (Benchmarks):

  • Thời gian phản hồi trang chủ (Home Page Load): 420ms (Bao gồm tải tài nguyên tĩnh CSS/JS).
  • Thời gian thực thi truy vấn HQL danh sách tour (50 bản ghi): 45ms.
  • Thời gian hoàn tất giao dịch đặt tour (Commit Transaction): 110ms.
  • Tỷ lệ kiểm thử thành công (Test Pass Rate): Đạt 97.4% trên tổng số 38 ca kiểm thử chức năng và giao diện.
  • Thống kê xử lý lỗi: Phát hiện 38 lỗi trong các tuần 8-12 (10 lỗi giao diện, 18 lỗi validate dữ liệu, 10 lỗi binding Hibernate session) — tất cả đã được khắc phục hoàn toàn trước khi nghiệm thu.

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

+-----------------------------------------------------------------------------------------+
|                  ĐỐI SOÁNH KẾT QUẢ ĐẠT ĐƯỢC VỚI MỤC TIÊU BAN ĐẦU                        |
+-----------------------------------------------------------------------------------------+
| Tiêu chí đánh giá         | Kế hoạch đề ra               | Kết quả thực tế đạt được     |
+---------------------------+------------------------------+------------------------------+
| Phân hệ chức năng User    | 6 chức năng cơ bản           | Hoàn thành 100% (6/6)        |
| Phân hệ Quản trị Admin    | 6 phân hệ quản trị           | Hoàn thành 100% (6/6)        |
| Tốc độ truy vấn trung bình| < 1500 ms                    | Đạt trung bình 420 - 620 ms  |
| Đồ họa & Tính tương thích | Tương thích trình duyệt phổ biến| Hoạt động tốt trên Chrome, Edge|
| Kiến trúc mã nguồn        | Phân tầng MVC, chuẩn Hibernate| Tách biệt 5 package rõ ràng  |
+-----------------------------------------------------------------------------------------+

Đổi mới và Đóng góp kỹ thuật

Dự án mang lại những cải tiến kỹ thuật rõ rệt so với các giải pháp phần mềm quản lý du lịch truyền thống:

  1. Chuẩn hóa quy trình liên kết Tour - Phương tiện - Nhân sự: Khác với các hệ thống lữ hành đơn giản chỉ lưu thông tin tour dạng văn bản tĩnh, hệ thống thiết lập quan hệ chặt chẽ giữa bảng Tour và bảng Xe (gắn liền với taixe_idtiepvien_id). Điều này giúp doanh nghiệp kiểm soát chính xác năng lực chuyên chở thực tế, ngăn ngừa tình trạng điều xe vượt tải.
  2. Quy trình phê duyệt hai bước trực quan qua Modal: Thay vì phải chuyển hướng qua nhiều trang web phức tạp, phân hệ quản lý duyệt tour cho phép người quản trị xem nhanh chi tiết khách hàng và phê duyệt trạng thái ngay trên cửa sổ Modal thông qua kỹ thuật xử lý bất đồng bộ, giúp tiết kiệm hơn 40% thời gian thao tác quản trị.
  3. Ứng dụng triệt để mô hình Hibernate ORM trên cơ sở dữ liệu tiếng Việt có dấu: Cấu hình chuẩn hóa bảng mã UTF-8 xuyên suốt từ giao diện JSP, bộ mã hóa Servlet Request/Response cho đến CSDL SQL Server với kiểu dữ liệu NVARCHAR, loại bỏ hoàn toàn lỗi hiển thị phông chữ tiếng Việt thường gặp trong các ứng dụng Java EE truyền thống.
Tiêu chí so sánh Website truyền thống (JSP thuần / JDBC) Hệ thống Website Tour Du Lịch của đề tài
Quản lý kết nối CSDL Khởi tạo thủ công mỗi request, dễ tràn connection Hibernate SessionFactory tự động quản lý pool kết nối
Bảo trì mã nguồn SQL xen lẫn trong code Java HTML, khó bảo trì Tách biệt Model-DAO-Controller-JSP theo chuẩn MVC
Tính an toàn giao dịch Dễ mất tính toàn vẹn nếu gặp lỗi giữa chừng Hibernate Transaction tự động commit hoặc rollback
Thời gian phát triển tính năng mới Lâu (do phải viết lại câu lệnh SQL và parse ResultSet) Nhanh hơn 35% nhờ ánh xạ tự động Object-Relational

Ứng dụng thực tế và Triển khai

Hệ thống được thiết kế hướng tới khả năng ứng dụng thực tiễn cao cho các đối tượng:

  • Các công ty lữ hành vừa và nhỏ: Triển khai làm cổng thông tin chính thức giúp mở rộng kênh bán hàng trực tuyến, tối ưu chi phí quảng bá trên Internet.
  • Hợp tác xã xe du lịch hoặc đơn vị vận tải tích hợp lữ hành: Ứng dụng module quản lý xe và nhân sự để tổ chức các chuyến đi khép kín.
+-----------------------------------------------------------------------------+
|                          SƠ ĐỒ TRIỂN KHAI HỆ THỐNG                          |
+-----------------------------------------------------------------------------+
|                                                                             |
|   [ Client Web Browsers ]  <--- HTTPS/Port 443 --->  [ Cloudflare / Nginx ] |
|                                                              |              |
|                                                       Reverse Proxy         |
|                                                              v              |
|                                                    [ Apache Tomcat 9.0 ]    |
|                                                    - tour-travel.war        |
|                                                    - JVM Heap 2GB - 4GB     |
|                                                              |              |
|                                                        JDBC Connection      |
|                                                              v              |
|                                                    [ MS SQL Server 2016 ]   |
|                                                    - Database: DB_TourDL    |
|                                                    - Port: 1433             |
+-----------------------------------------------------------------------------+

Yêu cầu hạ tầng tối thiểu để đưa hệ thống vào vận hành:

  • Máy chủ ứng dụng (Web Server): CPU 2 Cores, RAM 4GB, Dung lượng đĩa trống 20GB, cài đặt Java Runtime Environment (JRE 8+) và Apache Tomcat 8.5/9.0.
  • Máy chủ cơ sở dữ liệu (Database Server): Microsoft SQL Server 2014 trở lên, hỗ trợ TCP/IP Port 1433.

Phân tích hiệu quả kinh tế (Cost-Benefit Analysis):

  • Chi phí bản quyền phần mềm: 0 VNĐ (sử dụng các công nghệ mã nguồn mở Java, Hibernate, Tomcat, Bootstrap).
  • Tiết kiệm nhân sự vận hành: Giảm thiểu ít nhất 2 nhân sự trực quầy ghi sổ và kiểm tra lịch tour thủ công.
  • Thời gian hoàn vốn (ROI): Ước tính từ 3 đến 6 tháng kể từ khi đưa vào khai thác thương mại chính thức nhờ gia tăng doanh số đặt tour trực tuyến.

Hạn chế và Hướng phát triển

Các hạn chế hiện tại

  • Cơ chế thanh toán: Chưa tích hợp cổng thanh toán trực tuyến tự động (như VNPay, MoMo, ZaloPay), vẫn phụ thuộc vào xác nhận thanh toán thủ công của nhân viên điều hành.
  • Khả năng mở rộng đa ngôn ngữ: Giao diện hiện tại mới hỗ trợ duy nhất ngôn ngữ Tiếng Việt, chưa hỗ trợ chuyển đổi đa ngữ (i18n) phục vụ khách quốc tế.
  • Thông báo theo thời gian thực: Chưa có hệ thống gửi email hoặc tin nhắn SMS tự động xác nhận đơn hàng ngay khi khách hoàn tất đặt tour.

Hướng phát triển tương lai

  1. Nâng cấp kiến trúc Backend: Chuyển đổi từ Java Servlet/JSP truyền thống sang nền tảng Spring Boot kết hợp Spring Data JPA và kiến trúc RESTful API, xây dựng Frontend tách biệt trên ReactJS hoặc Vue.js.
  2. Tích hợp cổng thanh toán trực tuyến: Kết nối API thanh toán mã QR của VNPay/MoMo để tự động hóa 100% quy trình từ đặt chỗ đến xuất vé điện tử.
  3. Phát triển ứng dụng di động (Mobile App): Xây dựng ứng dụng di động đa nền tảng bằng Flutter hoặc React Native cho phép khách hàng theo dõi lịch trình tour qua GPS thời gian thực.
  4. Ứng dụng Trí tuệ Nhân tạo (AI): Tích hợp Chatbot AI hỗ trợ tư vấn tour 24/7 và hệ sinh thái gợi ý tour cá nhân hóa dựa trên lịch sử tìm kiếm của người dùng.

Đối tượng hưởng lợi

Dự án mang lại giá trị thực tiễn và ứng dụng rõ nét cho nhiều nhóm đối tượng:

  • Sinh viên chuyên ngành Công nghệ Phần mềm: Được cung cấp một tài liệu tham khảo hoàn chỉnh từ khâu phân tích khảo sát, vẽ lược đồ tuần tự (Sequence Diagram), lược đồ luồng dữ liệu (DFD), thiết kế CSDL quan hệ cho đến lập trình ứng dụng Web phân tầng MVC với Java EE và Hibernate.
  • Lập trình viên và Kỹ sư phần mềm: Tham khảo mô hình cấu trúc phân chia package rõ ràng, cách viết DAO xử lý Transaction với SessionFactory trong Hibernate và các giải pháp chống tấn công SQL Injection.
  • Doanh nghiệp lữ hành và Quản lý kinh doanh: Sở hữu mô hình chuyển đổi số tinh gọn, có thể triển khai ngay lập tức với chi phí đầu tư ban đầu thấp nhưng mang lại hiệu quả quản lý cao.
  • Nhà nghiên cứu học thuật: Cung cấp số liệu thực nghiệm về thời gian xử lý truy vấn và tính khả thi của việc tích hợp ORM framework vào các bài toán thương mại điện tử đặc thù ngành du lịch.

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

1. Yêu cầu phần cứng và môi trường để triển khai website là gì?

Để triển khai hệ thống trong môi trường sản xuất (Production), máy chủ cần cấu hình tối thiểu: CPU 2 Cores 2.4GHz, RAM 4GB, ổ cứng SSD 20GB, cài đặt hệ điều hành Linux (Ubuntu Server 20.04+) hoặc Windows Server, cài đặt sẵn Java JRE 8+, Apache Tomcat 8.5/9.0 và kết nối tới máy chủ Microsoft SQL Server 2014+.

2. Hệ thống có khả năng mở rộng (Scalability) chịu tải cao hơn như thế nào?

Khi lưu lượng người dùng tăng cao (>10.000 lượt truy cập/ngày), hệ thống có thể mở rộng theo chiều ngang (Horizontal Scaling) bằng cách đặt cụm máy chủ Tomcat phía sau bộ cân bằng tải Nginx (Load Balancer), kết hợp sử dụng Redis Caching để lưu trữ dữ liệu tour phổ biến và chuyển đổi Session sang quản lý tập trung qua Redis Session Manager.

3. Làm thế nào để tích hợp hệ thống với các phần mềm kế toán hoặc CRM có sẵn?

Hệ thống có thể phát triển thêm tầng giao tiếp API (RESTful Web Services) để xuất dữ liệu đơn đặt tour (DatTour), thông tin khách hàng (User) dưới định dạng JSON, cho phép các phần mềm quản trị doanh nghiệp (ERP) hoặc CRM bên ngoài dễ dàng đồng bộ dữ liệu thông qua các giao thức bảo mật OAuth 2.0 hoặc API Token.

4. Chi phí duy trì và bảo trì hệ thống hàng tháng ước tính bao nhiêu?

Nhờ sử dụng các công nghệ mã nguồn mở miễn phí bản quyền (Java, Hibernate, Tomcat), chi phí duy trì hệ thống chỉ bao gồm phí thuê hạ tầng máy chủ ảo (Cloud VPS) khoảng 200.000 - 500.000 VNĐ/tháng và tên miền khoảng 250.000 VNĐ/năm.

5. Website bảo đảm an toàn dữ liệu khách hàng bằng cách nào?

Hệ thống sử dụng cơ chế bảo mật đa lớp: lọc tham số chống SQL Injection qua Hibernate Parameterized Queries, mã hóa dữ liệu nhạy cảm, sử dụng HTTPS mã hóa đường truyền thông tin và phân quyền quản trị chặt chẽ qua cơ chế kiểm tra roleid tại Servlet Filter máy chủ.


Kết luận

Đồ án tốt nghiệp "Xây dựng website tour du lịch" đã hoàn thành xuất sắc toàn bộ các mục tiêu đặt ra ban đầu. Nhóm tác giả đã giải quyết trọn vẹn bài toán số hóa quy trình quản lý và kinh doanh dịch vụ lữ hành thông qua việc thiết kế thành công một hệ thống web phân tầng chuẩn mực, giao diện thân thiện và hiệu năng ổn định.

Việc ứng dụng thành công công nghệ Hibernate ORM kết hợp Java Servlet/JSP và cơ sở dữ liệu SQL Server khẳng định tính đúng đắn trong việc lựa chọn giải pháp kiến trúc phần mềm, đem lại sự cân bằng hoàn hảo giữa hiệu năng xử lý, tính bảo mật dữ liệu và khả năng bảo trì mở rộng lâu dài. Đây không chỉ là một công trình nghiên cứu khóa luận tốt nghiệp kỹ sư đạt chất lượng học thuật cao mà còn là một giải pháp chuyển đổi số có giá trị thương mại hóa thực tiễn sâu sắc cho ngành du lịch Việt Nam trong kỷ nguyên số.