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

1. Lý do chọn đề tài và bối cảnh thực tiễn

Du lịch là một trong những ngành kinh tế quan trọng tại nhiều quốc gia, đóng góp lớn vào sự phát triển dịch vụ và thương mại. Tuy nhiên, phương thức vận hành và quản lý truyền thống tại các công ty du lịch bộc lộ nhiều hạn chế về mặt hiệu quả, tốn kém thời gian trong khâu lưu trữ hồ sơ, xử lý đơn đặt tour và điều phối nguồn lực. Khách hàng khi có nhu cầu đặt tour thường phải đến trực tiếp địa điểm giao dịch, gây bất tiện và giảm trải nghiệm người dùng.

Trước thực trạng đó, nhóm tác giả đã thực hiện đề tài "Ứng dụng quản lý công ty du lịch" (sản phẩm phần mềm đặt tên là 4Travel) trong khuôn khổ học phần Phương pháp Phát triển phần mềm hướng đối tượng tại Trường Đại học Công nghệ Thông tin – Đại học Quốc gia Thành phố Hồ Chí Minh (UIT – VNUHCM). Đề tài được hoàn thành vào tháng 01/2024 dưới sự hướng dẫn của Giảng viên Lê Thanh Trọng bởi nhóm sinh viên:

  • Lâm Gia Bảo (MSSV: 21520607)
  • Nguyễn Quốc Thái Dương (MSSV: 21520758)
  • Phạm Bá Hoàng (MSSV: 21520872)
  • Nguyễn Tiến Đạt (MSSV: 21521942)

2. Mục tiêu nghiên cứu

Đề tài hướng tới việc giải quyết các nhiệm vụ cụ thể sau:

  1. Phân tích hiện trạng vận hành và cấu trúc tổ chức của doanh nghiệp du lịch.
  2. Xác định và mô hình hóa đầy đủ các yêu cầu chức năng, phi chức năng, bảo mật và công nghệ.
  3. Thiết kế hệ thống theo phương pháp hướng đối tượng (OOAD) thông qua hệ thống biểu đồ chuẩn UML (Use-case, Class, Activity, State Machine, Sequence, Database Diagram).
  4. Xây dựng và hiện thực hóa ứng dụng web 4Travel hỗ trợ đầy đủ quy trình đặt tour trực tuyến cho khách hàng, quản trị tour, thiết bị, khách hàng, hóa đơn và thống kê doanh thu cho doanh nghiệp.

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

  • Đối tượng nghiên cứu: Quy trình nghiệp vụ quản lý và điều hành công ty du lịch, bao gồm quản lý thông tin khách hàng, tour tuyến, phân công hướng dẫn viên, kiểm soát trang thiết bị, quy trình đặt tour, lập hóa đơn và báo cáo doanh thu.
  • Phạm vi hệ thống: Ứng dụng web phục vụ 4 nhóm người dùng (Customer, Staff, Manager/Admin, Technical Admin).
  • Phạm vi thời gian và địa bàn: Dữ liệu khảo sát và triển khai thử nghiệm tại TP. Hồ Chí Minh trong giai đoạn học kỳ năm học 2023–2024 (nghiệm thu tháng 01/2024).

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

1. Khung lý thuyết và mô hình tiếp cận

Nghiên cứu áp dụng quy trình Phát triển phần mềm hướng đối tượng (Object-Oriented Analysis and Design - OOAD). Hệ thống được mô hình hóa qua các tầng:

  • Tầng ý niệm (Conceptual Level): Xác định các thực thể và mối quan hệ nghiệp vụ tổng quát.
  • Tầng phân tích (Analysis Level): Xác định các lớp đối tượng, thuộc tính, phương thức và hành vi.
  • Tầng thiết kế và cài đặt (Design & Implementation Level): Chi tiết hóa kiến trúc phần mềm, cấu trúc dữ liệu, giao diện và luồng điều khiển.

2. Phương pháp nghiên cứu và thu thập dữ liệu

Nhóm tác giả đã kết hợp hai phương pháp thu thập dữ liệu thực tế:

  • Nghiên cứu tài liệu: Thu thập và phân tích cấu trúc tổ chức của doanh nghiệp du lịch (các phòng ban chuyên trách như Reservations and Ticketing, Liaison Officer), quy chế quản lý hồ sơ và biểu mẫu hóa đơn.
  • Phỏng vấn trực tiếp: Đánh giá trình độ tin học của nhân viên, khảo sát nhu cầu về mặt giao diện, trải nghiệm thao tác và các hàm chức năng cần thiết trên phần mềm.

3. Đánh giá hạ tầng kỹ thuật thực tế

Kết quả khảo sát hạ tầng công nghệ thông tin tại doanh nghiệp được ghi nhận như sau:

Hạng mục Bộ phận quản lý Bộ phận nhân viên
Processor (CPU) Intel Xeon Platinum 8280 (38.7GHz turbo, 28 cores / 56 threads) AMD Ryzen Threadripper PRO 3995WX (Socket sWRX80, 256MB Cache, 4.2GHz, 64 cores / 128 threads)
RAM 64 GB 16 GB
Ổ cứng (Storage) 1 TB (HDD) + 1 TB (SSD) 1 TB (HDD) + 1 TB (SSD)
Card đồ họa (VGA) NVIDIA GeForce RTX 3090 AMD Radeon RX 6900 XT
Hạ tầng mạng Viettel Optical Cable 120 Mbps; Router Ubiquiti EdgeRouter 4 (chịu tải 500 người dùng đồng thời qua WiFi)

Thiết kế và triển khai

1. Kiến trúc hệ thống

Hệ thống được thiết kế theo mô hình phân tách tầng rõ ràng trên nền tảng Web:

  • Tầng giao diện (UI Layer): Xây dựng bằng ReactJS kết hợp thư viện Ant Design, cấu thành từ các Component chuyên biệt đảm nhiệm việc render giao diện.
  • Tầng quản lý trạng thái và dữ liệu (State & Data Management): Sử dụng useQuery để truy xuất dữ liệu bất đồng bộ từ API Layer và useMutation để kích hoạt các thao tác thay đổi dữ liệu (thêm/sửa/xóa). Bộ đệm QueryClient kiểm soát việc tự động tái kết xuất (re-render) Component khi trạng thái thay đổi.
  • Tầng dịch vụ nền tảng & Cơ sở dữ liệu (Backend-as-a-Service): Tích hợp nền tảng Supabase phục vụ xác thực người dùng (Auth) và quản trị cơ sở dữ liệu quan hệ PostgreSQL.

2. Thiết kế cơ sở dữ liệu quan hệ

Cơ sở dữ liệu của phần mềm 4Travel được thiết kế gồm 7 bảng chính với các ràng buộc toàn vẹn:

Tên bảng Khóa chính (PK) Khóa ngoại (FK) Các trường thuộc tính chính Ý nghĩa lưu trữ
user id (uuid) Không email, encrypted_password, ten, cccd, role, diachi Quản lý tài khoản đăng nhập và vai trò (customer, staff, admin)
device id (uuid) id_staff $\rightarrow$ user(id) created_at, name, status (occupied/unoccupied) Quản lý trang thiết bị công ty và nhân sự phụ trách
booking cus_id, tour_id cus_id $\rightarrow$ customer, tour_id $\rightarrow$ tour, user_id $\rightarrow$ user created_at, hanhkhach (jsonb), status (none/done) Lưu đơn đặt tour, danh sách hành khách đi kèm và trạng thái thanh toán
customer id (uuid) Không hoten, cccd, sdt, email, ngaysinh, diachi, ghichu, yeucau Lưu trữ hồ sơ định danh và nhu cầu đặc biệt của khách hàng
tourguide id (uuid) tour_id $\rightarrow$ tour(id) name, cccd, diachi, sdt, ngaysinh Thông tin hướng dẫn viên được phân công cho tour
tour id (uuid) tourguide_id $\rightarrow$ tourguide(id) name, bia, diemdi (array), diemden (array), hotel, start, end, chitiet, price Thông tin chi tiết về lịch trình, khách sạn, thời gian và giá tour
bill id (uuid) Không touname, cusname, sdt, email, time, by, hanhkhach (jsonb[]), price, total, diemden Hóa đơn thanh toán xuất cho từng booking thành công

3. Yêu cầu phi chức năng và công nghệ

Tài liệu xác lập rõ các chỉ số kỹ thuật bắt buộc:

  • Hiệu năng xử lý: Thao tác thêm, xóa, tìm kiếm, cập nhật dữ liệu phải hoàn tất trong tối đa 0,5 giây; thời gian kết xuất báo cáo thống kê trong 1,0 giây; thời gian tạo và xuất tệp hóa đơn PDF trong 2,0 giây.
  • Bảo trì và nâng cấp: Khắc phục lỗi phát sinh thông thường trong vòng 15 phút, bảo trì phức tạp dưới 1 giờ (không ảnh hưởng tới các phân hệ khác), có khả năng chuyển đổi cấu hình hệ quản trị cơ sở dữ liệu trong vòng 2 ngày.
  • Công cụ phát triển: Visual Studio Code, Figma (UI Design), PlantUML & Wondershare EdrawMax (Mô hình hóa UML), dbdiagram.io (Thiết kế Schema CSDL), GitHub (Quản lý mã nguồn tại Sakagawakyohei/4Travel).

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

Phần I & II: Tổng quan sản phẩm, Khảo sát thực tế và Xác định yêu cầu

Chương này tập trung xác định bài toán nghiệp vụ, phân tích đối tượng thụ hưởng và lập danh mục hơn 30 yêu cầu chức năng (Forms) chia theo 9 phân hệ:

  1. Phân hệ định danh: Đăng ký (Form 1.1), Đăng nhập (Form 1.2), Đăng xuất (Form 1.3), Quên mật khẩu (Form 1.4).
  2. Phân hệ thông tin cá nhân: Xem/Cập nhật thông tin (Form 2.1, 2.2), Đổi mật khẩu (Form 2.3).
  3. Phân hệ quản lý tour: Thêm, chỉnh sửa, tìm kiếm tour (Form 3.1, 3.3, 3.4).
  4. Phân hệ đặt tour: Tìm tour, tạo đơn đặt tour, sửa/hủy đơn (Form 4.1, 4.2, 4.3, 4.4).
  5. Phân hệ quản lý thiết bị: Xem, thêm, xóa, tìm kiếm, hiệu chỉnh thiết bị (Form 5.1 đến 5.5).
  6. Phân hệ khách hàng: Thêm, sửa, xem, xóa, tìm kiếm hồ sơ khách hàng (Form 6.1 đến 6.5).
  7. Phân hệ hóa đơn: Xem danh sách chưa/đã thanh toán, tìm kiếm, tạo hóa đơn (Form 7.1, 7.2, 7.3, 7.6).
  8. Phân hệ báo cáo: Doanh thu tổng hợp (Form 8.1), biểu đồ doanh thu theo tỉnh thành (Form 8.2).
  9. Phân hệ quản trị tài khoản: Xem danh sách, tìm kiếm và phân quyền tài khoản (Form 9.1, 9.2, 9.3).

Ma trận phân quyền bảo mật (Security Matrix) được quy định chặt chẽ:

Chức năng quản lý Customer Staff Admin
Quản lý tour $\times$ $\times$
Quản lý đặt tour $\times$ $\times$ $\times$
Quản lý tài khoản $\times$ $\times$ $\times$
Quản lý thông tin khách hàng $\times$ $\times$
Quản lý thiết bị $\times$ $\times$
Xuất hóa đơn $\times$ $\times$
Báo cáo doanh thu $\times$

Phần III: Mô hình hóa Use-Case

Phần này định nghĩa chi tiết biểu đồ Use-case tổng quát và đặc tả luồng sự kiện (Basic Flow, Alternative Flow, Pre-condition, Post-condition) cho 11 Use-case cốt lõi:

  • Sign up / Login / Forgot password: Quy trình xác thực, gửi liên kết phục hồi mật khẩu qua email người dùng.
  • Tour management: Nhân viên thêm mới lịch trình, cập nhật thông tin điểm đi/điểm đến, giá tiền và khách sạn.
  • Booking management: Khách hàng tìm kiếm, chọn tour, nhập thông tin liên lạc và danh sách hành khách đi kèm; hệ thống hỗ trợ phân quyền xem lịch sử (Customer chỉ xem đơn của mình, Staff xem toàn bộ).
  • Customer information & Device management: Nhân viên theo dõi tình trạng thiết bị nội bộ (occupied/unoccupied) và quản lý hồ sơ du khách.
  • Make bill & Export bill: Nhân viên chọn đơn đặt tour cần thanh toán, hệ thống tự động trích xuất dữ liệu tạo hóa đơn và xuất ra định dạng tệp PDF.
  • Revenue report: Admin xem tổng doanh thu công ty và biểu đồ doanh thu phân bố theo từng địa phương.
  • Update role user: Phân quyền vai trò người dùng trong hệ thống.

Phần IV: Thiết kế tĩnh – Mô hình hóa lớp (Class Diagram)

Hệ thống lớp đối tượng được xây dựng ở cả mức ý niệm và phân tích, bao gồm 14 lớp chính:

  • Quan hệ kế thừa (Generalization): Các lớp Manager, Staff, Customer kế thừa trực tiếp từ lớp cơ sở User.
  • Quan hệ hợp thành (Composition): Lớp Account chứa Role; lớp Bill kết hợp chặt chẽ với Payment.
  • Quan hệ kết hợp (Association): UserInformation liên kết với Account; User kết hợp Booking; Staff quản lý Device, Tour, Bill; Manager quản lý TourGuide và theo dõi RevenueReport; TourGuide phụ trách Tour; Payment tổng hợp dữ liệu cho RevenueReport.
  • Mỗi lớp đều được đặc tả rõ kiểu dữ liệu của thuộc tính (String, Timestampz, Jsonb, Number) và danh sách phương thức (ví dụ: CRUDTour(), MakeBooking(), MakeBill(), ExportBill(), TopByTime(), AddTourGuideToTour()).

Phần V, VI & VII: Thiết kế động – Luồng hoạt động, Biểu đồ trạng thái và Tuần tự

  • Activity Diagrams: Minh họa luồng công việc tương tác đa tác nhân giữa Người dùng, Hệ thống và Nhân viên cho các quy trình: Đăng ký, Quên mật khẩu, Tạo tour & Đặt tour, Tạo & Xuất hóa đơn.
  • State Machine Diagrams: Mô hình hóa vòng đời trạng thái của các đối tượng chính: Xác thực đăng nhập (Not Logged In $\rightarrow$ Credentials Entered $\rightarrow$ Logged In), Quản lý đặt tour (Idle $\rightarrow$ Showing All Tours $\rightarrow$ Choosing Tour $\rightarrow$ Authenticating $\rightarrow$ Data To DB), Quy trình thanh toán (Handling Payment $\rightarrow$ Printing Bill $\rightarrow$ Successful/Failed).
  • Sequence Diagrams: Thiết lập trình tự trao đổi thông điệp chi tiết qua các đối tượng User, UserInterface, Database, Email đối với các nghiệp vụ: Đăng ký xác thực qua link email, Đặt tour, Cập nhật thông tin tour, Quản lý thiết bị, Quản lý khách hàng và Xuất hóa đơn.

Phần VIII & X: Thiết kế giao diện người dùng (UI/UX)

Tài liệu cung cấp bản vẽ giao diện mẫu và bảng mô tả hành vi chi tiết của từng control/component trên 12 màn hình chính:

  1. Màn hình Đăng ký / Đăng nhập: Các trường nhập liệu email, mật khẩu, nút xác nhận và điều hướng phục hồi tài khoản.
  2. Màn hình Trang chủ: Thanh tìm kiếm nhanh, danh mục tour ưu đãi, danh sách điểm đến phổ biến.
  3. Màn hình Thêm/Sửa tour: Hỗ trợ nhập mã/tên hướng dẫn viên, chọn nhiều điểm đi/điểm đến qua component Select, chọn ngày bắt đầu/kết thúc qua DatePicker.
  4. Màn hình Quản lý tour & Danh sách khách hàng: Bảng dữ liệu (DataTable), công cụ tìm kiếm và các nút thao tác nhanh (Thêm, Sửa, Xóa).
  5. Màn hình Đặt tour & Form xác nhận: Cho phép nhập số lượng hành khách động (tự động mở rộng các form nhập họ tên, ngày sinh, giới tính tương ứng).
  6. Màn hình Danh sách booking cần thanh toán: Liệt kê các đơn đặt tour kèm trạng thái phục vụ lập hóa đơn.
  7. Màn hình Hóa đơn được tạo: Kết xuất trực quan chi tiết dịch vụ, người tạo đơn, tổng chi phí thanh toán và nút chức năng xuất bản in PDF.
  8. Màn hình Báo cáo doanh thu: Hiển thị tổng thu nhập thực tế ($27.612 ghi nhận tại tháng 01/2024), biểu đồ phân tích Top 10 địa phương đạt doanh thu cao nhất (Lào Cai, Hà Giang, Kiên Giang, Sóc Trăng, Đà Lạt, Nghệ An, Hà Nội, Cần Thơ, Vũng Tàu, Hồ Chí Minh).

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

1. Kết quả chính

  • Đồ án đã xây dựng hoàn chỉnh ứng dụng web quản lý công ty du lịch 4Travel đáp ứng 100% các ca sử dụng đã phân tích.
  • Ứng dụng xử lý thành công quy trình đặt tour trực tuyến, quản lý dữ liệu tập trung trên nền tảng Supabase và bảo đảm thời gian đáp ứng dưới ngưỡng 0,5 giây đối với các tác vụ cơ sở dữ liệu thông thường.
  • Báo cáo số liệu thực tế được kiểm thử trên hệ thống với tổng doanh thu mô phỏng đạt $27.612 trong tháng 01/2024, phân tích chính xác biểu đồ Top 10 tỉnh thành du lịch có doanh thu cao nhất.

2. Đóng góp của đề tài

  • Về mặt kỹ thuật: Ứng dụng thành công phương pháp lập trình hướng đối tượng kết hợp với các công nghệ web hiện đại (ReactJS, React Query, Ant Design, Supabase BaaS), tạo ra kiến trúc giao diện tương tác bất đồng bộ ổn định.
  • Về mặt tài liệu học thuật: Cung cấp bộ hồ sơ thiết kế phần mềm hoàn chỉnh, chuẩn hóa theo UML từ mức ý niệm, phân tích đến thiết kế chi tiết cơ sở dữ liệu và màn hình giao diện.

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

1. Hạn chế

  • Hệ thống mới tập trung triển khai và tối ưu hóa trên nền tảng trình duyệt Website máy tính, chưa có ứng dụng di động bản địa (Native Mobile App).
  • Quy trình gợi ý tour và chăm sóc khách hàng còn thực hiện thủ công, chưa có cơ chế cá nhân hóa dữ liệu thông minh.

2. Hướng nghiên cứu tiếp (theo đề xuất của nhóm tác giả)

  • Tích hợp trí tuệ nhân tạo (AI): Đưa mô hình AI hỗ trợ gợi ý lịch trình và tự động hóa quy trình đặt tour theo nhu cầu khách hàng.
  • Chính sách khuyến mãi: Bổ sung mô-đun tạo mã giảm giá (Discount) và các chiến dịch sự kiện (Events) định kỳ.
  • Mở rộng nền tảng: Phát triển ứng dụng đa nền tảng (Cross-platform) phục vụ người dùng trên thiết bị di động.
  • Tối ưu hiệu năng: Tiếp tục tinh chỉnh hệ thống để duy trì hiệu suất cao khi số lượng người dùng và giao dịch tăng trưởng.

Giá trị tham khảo

Tài liệu đồ án này có giá trị tham khảo thiết thực cho:

  • Sinh viên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm, Hệ thống Thông tin: Làm tài liệu mẫu về phương pháp phân tích thiết kế hướng đối tượng (OOAD), cách lập biểu đồ UML chuẩn hóa và xây dựng đặc tả yêu cầu phần mềm.
  • Nhà phát triển ứng dụng Web: Tham khảo mô hình kiến trúc phân tầng kết hợp giữa ReactJS, React Query và dịch vụ cơ sở dữ liệu Supabase.
  • Doanh nghiệp lữ hành quy mô vừa và nhỏ: Tham khảo cấu trúc cơ sở dữ liệu và quy trình số hóa các nghiệp vụ quản lý tour, khách hàng, trang thiết bị và xuất hóa đơn.

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

1. Phần mềm 4Travel phân quyền cho những nhóm người dùng nào và mỗi nhóm có quyền hạn gì?

Hệ thống phân quyền cho 3 nhóm vai trò chính trong cơ sở dữ liệu:

  • Customer: Đăng ký, đăng nhập, tìm kiếm tour, đặt tour, xem và quản lý lịch sử đặt tour của cá nhân.
  • Staff: Quản lý tour, tiếp nhận và điều chỉnh booking, quản lý thông tin khách hàng, kiểm soát thiết bị nội bộ, tạo và xuất hóa đơn thanh toán PDF.
  • Admin (Manager): Sở hữu toàn bộ quyền của Staff, đồng thời có quyền quản lý tài khoản, phân quyền vai trò cho người dùng (Update role user) và truy cập báo cáo thống kê doanh thu công ty.

2. Các chỉ số về hiệu năng phản hồi của hệ thống được quy định như thế nào?

Theo Bảng 10 trong tài liệu, các yêu cầu hiệu năng hệ thống bao gồm:

  • Thêm, xóa, tìm kiếm, cập nhật dữ liệu: Hoàn thành trong 0,5 giây.
  • Báo cáo thống kê: Hoàn thành trong 1,0 giây.
  • Tạo và xuất tệp hóa đơn: Hoàn thành trong 2,0 giây.

3. Cơ sở dữ liệu của phần mềm gồm những bảng nào và quan hệ ra sao?

Cơ sở dữ liệu gồm 7 bảng chính: user (lưu tài khoản, phân quyền), device (lưu thiết bị, liên kết với nhân viên phụ trách qua id_staff), customer (hồ sơ khách hàng), tour (thông tin tour du lịch), tourguide (hướng dẫn viên, liên kết với tour), booking (kết nối customer, tour, user để lưu thông tin đặt chỗ và danh sách hành khách đi kèm), và bill (lưu dữ liệu hóa đơn xuất cho từng booking).

4. Tầng giao diện của ứng dụng được xây dựng trên công nghệ gì và quản lý dữ liệu thế nào?

Giao diện ứng dụng phát triển bằng ReactJS kết hợp bộ thư viện Ant Design. Việc truyền nhận dữ liệu từ API Layer được xử lý thông qua useQuery (đọc dữ liệu) và useMutation (thay đổi dữ liệu), kết hợp bộ nhớ đệm QueryClient để tự động tái kết xuất giao diện khi dữ liệu cơ sở dữ liệu thay đổi.

5. Nhóm tác giả đề xuất những hướng phát triển nào cho hệ thống trong tương lai?

Nhóm tác giả đề xuất 4 hướng mở rộng: tích hợp trí tuệ nhân tạo (AI) vào quy trình đặt tour, xây dựng tính năng tạo sự kiện và mã giảm giá cho khách hàng, phát triển ứng dụng di động đa nền tảng, và tối ưu hóa hiệu năng hệ thống khi mở rộng quy mô.


Kết luận

Đồ án "Ứng dụng quản lý công ty du lịch" (4Travel) của nhóm sinh viên Trường Đại học Công nghệ Thông tin – ĐHQG-HCM đã áp dụng thành công phương pháp phát triển phần mềm hướng đối tượng để giải quyết bài toán số hóa quy trình quản lý lữ hành. Hệ thống được hoàn thiện từ khâu khảo sát thực tế, phân tích biểu đồ UML đa tầng, thiết kế cơ sở dữ liệu quan hệ cho đến cài đặt giao diện ứng dụng web tương tác thời gian thực. Kết quả nghiên cứu là tài liệu tham khảo hoàn chỉnh, chuẩn mực cho sinh viên chuyên ngành kỹ thuật phần mềm và các dự án xây dựng hệ thống thông tin quản lý doanh nghiệp.