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

Trong hoạt động kinh doanh lữ hành và dịch vụ du lịch, công tác điều hành đòi hỏi sự liên kết chặt chẽ giữa nhiều bộ phận chức năng bao gồm quản lý tour, phân công hướng dẫn viên, theo dõi lịch trình, tương tác với đối tác cung ứng, tiếp nhận đặt chỗ từ khách hàng, cũng như thực hiện các nghiệp vụ thanh toán, kế toán và tính lương. Báo cáo bài tập lớn môn Phân tích và Thiết kế Hệ thống Thông tin (Đề tài số 16: Quản lý hãng tour du lịch, thực hiện bởi Nhóm môn học 10 - Nhóm bài tập lớn 21, Học viện Công nghệ Bưu chính Viễn thông, hoàn thành ngày 29/09/2020 tại Hà Nội) tập trung giải quyết bài toán tin học hóa toàn diện quy trình vận hành của một doanh nghiệp du lịch.

Mục tiêu và nhiệm vụ nghiên cứu của đồ án bao gồm:

  1. Khảo sát và mô tả các yêu cầu nghiệp vụ thực tế của hãng tour du lịch bằng ngôn ngữ tự nhiên.
  2. Xác định các tác tử (actors), ranh giới hệ thống và phân định quyền hạn thao tác của từng đối tượng người dùng.
  3. Phân tích chức năng và xây dựng mô hình ca sử dụng (Use Case Model) bao gồm các kịch bản chi tiết (Scenarios).
  4. Áp dụng phương pháp phân tích hướng đối tượng để trích xuất các lớp thực thể, xác định các mối quan hệ số lượng và cấu trúc dữ liệu.
  5. Thiết kế chi tiết hệ thống phần mềm hướng web: biểu đồ trạng thái, biểu đồ lớp biên (Boundary Classes), biểu đồ giao tiếp (Communication Diagrams), biểu đồ tuần tự (Sequence Diagrams), thiết kế giao diện (Wireframes) và cấu trúc lớp truy xuất dữ liệu (Data Access Object - DAO).

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

  • Đối tượng nghiên cứu: Quy trình quản lý thông tin, dịch vụ lữ hành, quản lý nhân sự, tương tác khách hàng và luồng luân chuyển chứng từ thanh toán/hóa đơn trong một công ty du lịch.
  • Phạm vi hệ thống:
    • Bao gồm: Quản lý tour du lịch, chuỗi địa điểm du lịch, hướng dẫn viên, đối tác liên kết; quản lý thông tin khách hàng, nhân viên (quản lý tour, kế toán, thu ngân, hướng dẫn viên); quản lý chấm công, tính lương và thưởng; quản lý danh sách khách hàng tham gia tour, lập và xuất hóa đơn dịch vụ/hóa đơn thanh toán.
    • Không bao gồm: Nghiệp vụ quản lý tài sản vật chất của công ty du lịch.

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

Đồ án vận dụng phương pháp luận Phân tích và Thiết kế Hướng đối tượng (Object-Oriented Analysis and Design - OOAD) dựa trên chuẩn mô hình hóa UML (Unified Modeling Language), kết hợp với mô hình kiến trúc phân lớp ứng dụng web (Boundary - Control - Entity / DAO Pattern).

Phương pháp nghiên cứu và kỹ thuật phân tích được triển khai qua các bước:

  • Kỹ thuật trích xuất lớp thực thể từ văn bản:
    • Bước 1: Mô tả tổng quan toàn bộ hoạt động hệ thống trong một đoạn văn bản nghiệp vụ.
    • Bước 2: Thu thập và liệt kê danh sách tất cả các danh từ xuất hiện (phân loại thành nhóm danh từ chỉ người, danh từ chỉ vật và danh từ chỉ thông tin).
    • Bước 3: Duyệt lọc danh từ, loại bỏ các khái niệm trừu tượng (như "hệ thống", "trang web", "thông tin", "lịch sử") và chuẩn hóa thành các lớp dữ liệu cụ thể kèm thuộc tính tương ứng.
    • Bước 4: Khảo sát và thiết lập mối quan hệ số lượng (bản số $1-1$, $1-n$, $n-n$) giữa các lớp thực thể.
    • Bước 5: Bổ sung và phân rã các quan hệ nhiều - nhiều ($n-n$) thành các lớp liên kết trung gian xác định duy nhất.
  • Mô hình hóa ca sử dụng và kịch bản tương tác: Xây dựng kịch bản chi tiết cho từng nghiệp vụ (tiền điều kiện, hậu điều kiện, luồng sự kiện chính, các ngoại lệ) và liên kết bằng các quan hệ <<Include>>, <<Extend>>.
  • Mô hình hóa động và thiết kế kiến trúc phần mềm: Sử dụng biểu đồ trạng thái để kiểm soát luồng giao diện; biểu đồ giao tiếp và biểu đồ tuần tự để thiết kế tương tác giữa các thành phần giao diện (jsp), các lớp đối tượng thực thể và lớp truy xuất cơ sở dữ liệu (DAO).
  • Nguồn dữ liệu: Dữ liệu khảo sát nghiệp vụ thực tế của ngành lữ hành, kết hợp dữ liệu mẫu thử nghiệm chi tiết về tuyến tour (ví dụ: tour Hà Nội - Đông Bắc, tour Nha Trang - Mũi Né), dữ liệu khách hàng, nhân viên thu ngân và cấu trúc chi phí/lương thưởng.

Nội dung chính theo từng phần

1. Khảo sát yêu cầu và phân định tác tử hệ thống

Hệ thống xác định rõ 5 nhóm người dùng chính tương tác với ứng dụng thông qua tài khoản cá nhân:

Tác tử (Actor) Phạm vi quyền hạn và chức năng nghiệp vụ
Khách hàng Đăng ký tài khoản, đăng nhập; quản lý và cập nhật thông tin cá nhân; tìm kiếm và lọc tour du lịch; đặt tour trực tuyến; xem lịch sử tour đã đặt; xem hóa đơn thanh toán.
Hướng dẫn viên Đăng nhập hệ thống; tra cứu và xem lịch phân công tour du lịch được giao.
Nhân viên quản lý tour Quản lý thông tin địa điểm du lịch (thêm, sửa, xóa, tìm kiếm); quản lý danh mục tour (thêm, sửa, xóa, ghép nối dịch vụ); quản lý hồ sơ hướng dẫn viên; lập và cập nhật lịch khởi hành tour; theo dõi danh sách khách hàng tham gia tour.
Nhân viên thu ngân Tra cứu danh sách tour; tra cứu danh sách khách hàng; thực hiện thanh toán và xuất hóa đơn dịch vụ theo từng khách hàng hoặc thanh toán theo danh sách khách hàng trong từng chuyến tour.
Nhân viên kế toán Tổng hợp chi phí tour; quyết toán và xuất hóa đơn dịch vụ hàng tháng cho đối tác lữ hành/lưu trú; tính toán bảng công, thưởng và xuất hóa đơn chi trả lương hàng tháng cho hướng dẫn viên; lập báo cáo thống kê định kỳ theo tháng.

2. Phân tích kịch bản nghiệp vụ và luồng ca sử dụng

Tài liệu đặc tả chi tiết các kịch bản sự kiện chính (Main Events) và xử lý ngoại lệ (Exceptions) cho các hoạt động trọng tâm:

  • Khách hàng đăng ký và hoàn thiện thông tin cá nhân: Người dùng thực hiện đăng ký tài khoản cơ bản (Username, Password, Confirm password, Họ tên, SĐT, Email). Sau khi tạo tài khoản thành công, người dùng truy cập mục thông tin tài khoản để bổ sung các trường thông tin bắt buộc còn thiếu (Ngày sinh, CMT, Quê quán, Địa chỉ) và lưu vào hệ thống.
  • Khách hàng tìm kiếm và đặt tour trực tuyến: Hệ thống cung cấp bộ lọc và danh sách tour còn trống với các tiêu chí: mã tour, tên tour, chuỗi các địa điểm, số ngày đi, ngày khởi hành, ngày về, phương tiện di chuyển, số khách đã đặt, số lượng khách tối đa và đơn giá/người. Khi khách hàng chọn tour, giao diện hiển thị chi tiết lịch trình theo từng ngày, danh sách hướng dẫn viên phụ trách và mô tả chuyến đi. Khách hàng nhập số lượng người đi, hệ thống kiểm tra tính khả dụng của số chỗ trống (KTSoNguoiDi()) và xác nhận giao dịch.
  • Nhân viên thu ngân lập hóa đơn và thanh toán:
    • Phương thức 1 (Thanh toán theo khách hàng): Thu ngân tìm kiếm khách hàng theo tên/mã, chọn hồ sơ khách hàng để hiển thị danh sách các tour khách đã đăng ký kèm trạng thái thanh toán, sau đó tích chọn các tour cần thanh toán để tạo hóa đơn (createHDKhachHang()) và in hóa đơn (HD2209202014).
    • Phương thức 2 (Thanh toán theo tour): Thu ngân chọn tour chưa thanh toán đủ trong danh sách (Bang 1.5), hệ thống liệt kê toàn bộ khách hàng trong chuyến đi đó kèm trạng thái thanh toán của từng người, từ đó chọn khách hàng tương ứng để thực hiện thu tiền và xuất chứng từ.
  • Quản lý dịch vụ và nhân sự của Quản lý tour: Cung cấp đầy đủ các giao diện biểu mẫu thêm mới và cập nhật cho: Địa điểm du lịch (tỉnh/thành phố, quận/huyện, tên danh lam thắng cảnh); Tour du lịch (chuỗi địa điểm, thời gian ở lại, phương tiện, tỷ lệ phần trăm hoa hồng của đối tác, chi phí, giá bán); Hướng dẫn viên (họ tên, ngày sinh, CMT, quê quán, địa chỉ, lương cơ bản, mức thưởng, khu vực hoạt động); Lịch tour (gán tour, ghép hướng dẫn viên, ngày đi và tự động tính ngày về).
  • Quyết toán đối tác và chi trả lương của Kế toán: Lập danh sách công nợ đối tác theo tháng (mã đối tác, tên đối tác, tỷ lệ phần trăm chia sẻ, tổng số tour thực hiện, tổng tiền phải trả); lập bảng lương hướng dẫn viên dựa trên tổng số tour được phân công, số tour thực tế có mặt tham gia, mức lương cứng và tiền thưởng theo hiệu quả.

Thiết kế và triển khai

1. Mô hình lớp thực thể và cấu trúc quan hệ dữ liệu

Hệ thống áp dụng tính kế thừa để chuẩn hóa các đối tượng người dùng từ lớp cơ sở Thanhvien:

  • Thanhvien (lớp cha trừu tượng): chứa các thuộc tính Username, Password, HoTen, NgaySinh, QueQuan, DiaChi, Email, Sdt, VaiTro, GhiChu.
  • Nhanvien (kế thừa Thanhvien): bổ sung ChucVu, DonVi/PhongBan, Luong, Thuong.
    • NVThuNgan, KeToan, NVQuanLyTour: kế thừa từ Nhanvien.
    • HDV (kế thừa Nhanvien): bổ sung thuộc tính KhuVuc.
  • Khachhang (kế thừa Thanhvien): bổ sung MaKH.

Để giải quyết các mối quan hệ nhiều - nhiều ($n-n$) phát sinh trong thực tế vận hành, hệ thống chuẩn hóa thành các lớp liên kết trung gian:

[Tour] 1 -------- n [TourDiaDiem] n -------- 1 [DiaDiemDuLich]
[Tour] 1 -------- n [TourDoiTac]  n -------- 1 [DoiTac]
[Tour] 1 -------- n [LichTour]
[LichTour] 1 ---- n [LichTourHDV] n -------- 1 [HDV]
[LichTour] 1 ---- n [KHLichTour]  n -------- 1 [KhachHang]
[KHLichTour] 1 -- 1 [HDKhachHang]
  • Mối quan hệ Tour - Đối tác: Một tour liên kết nhiều đối tác và một đối tác tham gia nhiều tour $\rightarrow$ Lớp trung gian TourDoiTac.
  • Mối quan hệ Tour - Địa điểm: Một tour đi qua chuỗi nhiều địa điểm và một địa danh thuộc nhiều tuyến tour $\rightarrow$ Lớp trung gian TourDiaDiem.
  • Mối quan hệ Lịch tour - Hướng dẫn viên: Một lịch tour có thể phân công nhiều hướng dẫn viên và một hướng dẫn viên tham gia nhiều lịch tour $\rightarrow$ Lớp trung gian LichTourHDV.
  • Mối quan hệ Lịch tour - Khách hàng: Một lịch tour phục vụ nhiều khách hàng và một khách hàng có thể đặt nhiều lịch tour $\rightarrow$ Lớp trung gian KHLichTour (lưu trữ idKH, idLichTour, SoNguoiDi, TongTien).
  • Mối quan hệ Đặt tour - Hóa đơn: Mỗi lượt khách đặt trong một lịch tour tương ứng với một hóa đơn thanh toán $\rightarrow$ Quan hệ $1-1$ giữa KHLichTour và HDKhachHang.

2. Thiết kế lớp biên, luồng xử lý và kiến trúc DAO

Hệ thống được thiết kế theo kiến trúc hướng thành phần, tách biệt giữa giao diện người dùng (jsp), đối tượng thực thể và lớp truy xuất cơ sở dữ liệu (DAO).

Tên màn hình / Lớp biên Lớp điều khiển / Thực thể Phương thức xử lý chính Chức năng nghiệp vụ
GDDangNhap (gdDangNhap.jsp) ThanhVien / ThanhVienDAO KtraDangNhap() Xác thực thông tin đăng nhập theo tài khoản và mật khẩu
GDDangKy (gdDangKy.jsp) GDDangKy, ThanhVien KtraPassword(), KtraEmail(), KtraSDT(), KtraUsername(), LuuUser() Kiểm tra định dạng dữ liệu đầu vào và khởi tạo tài khoản thành viên mới
GDThongTinCaNhan (gdTTCaNhan.jsp) KhachHang / KhachHangDAO getTTCNKhachHang(), luuTTCNKhachHang() Tải và cập nhật thông tin chi tiết của khách hàng (CMT, Quê quán, Địa chỉ)
GDDatTour (gdDatTour.jsp) LichTour / LichTourDAO getDsLichTour(), TKLichTour(), getSoKhachDaDat() Lấy danh sách lịch tour hiện còn trống và hỗ trợ tìm kiếm theo từ khóa
GDDatTourChiTiet KHLichTour / KHLichTourDAO getThongTinLichTour(), KTSoNguoiDi(), createNewKHLichTour() Hiển thị chi tiết hành trình, kiểm tra số chỗ khả dụng và ghi nhận đặt tour
GDThanhToanKH KhachHang / KhachHangDAO getDsKhachHang(), TKKhachHang() Thu ngân tìm kiếm và xem danh sách toàn bộ khách hàng trong hệ thống
GDThongTinKHLichTour KHLichTour, HDKhachHang getTTKHvaTour(), createHDKhachHang() Hiển thị các tour khách đã đặt và khởi tạo giao dịch hóa đơn
GDThanhToanXuatHD HDKhachHang / HDKhachHangDAO getHD(), thanhToanHD() Xác nhận thanh toán, cập nhật trạng thái đã thu tiền và in hóa đơn
GDThanhToanKHTheoTour KHLichTour getDsLichTourChuaTT(), TKLichTourChuaTT() Lọc danh sách các chuyến tour chưa thu đủ tiền của khách hàng
GDKHTheoTourChiTiet KHLichTour getTTLichTourDsKH() Liệt kê toàn bộ danh sách khách hàng và trạng thái nợ phí theo từng tour

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

Bản thiết kế đã đạt được các kết quả cụ thể:

  1. Hoàn thiện hồ sơ phân tích yêu cầu: Thiết lập bộ kịch bản nghiệp vụ hoàn chỉnh cho 5 nhóm đối tượng người dùng, bao quát toàn bộ quy trình từ giới thiệu, đặt tour, điều phối tour đến thu ngân và kế toán tài chính.
  2. Chuẩn hóa cấu trúc dữ liệu: Xây dựng mô hình thực thể hướng đối tượng chặt chẽ; loại bỏ hiện tượng dư thừa dữ liệu thông qua việc phân rã các quan hệ nhiều - nhiều thành các thực thể liên kết (TourDiaDiem, TourDoiTac, LichTourHDV, KHLichTour).
  3. Thiết kế chi tiết kiến trúc hướng đối tượng: Đặc tả đầy đủ các lớp biên, các phương thức xử lý và tương tác tuần tự phục vụ trực tiếp cho quá trình cài đặt trên nền tảng web Java/JSP-Servlet kết hợp mẫu thiết kế DAO.
  4. Dữ liệu kịch bản thử nghiệm cụ thể: Xây dựng bộ dữ liệu kiểm thử đầy đủ về lịch trình thực tế (tuyến Hà Nội - Đông Bắc 6 ngày 5 đêm qua Hà Giang, Lũng Cú, Đồng Văn, Mã Pí Lèng, Mèo Vạc, Cao Bằng, Thác Bản Giốc, Ba Bể; đơn giá 7.000.000 VNĐ/người; số lượng 20 khách tối đa) giúp xác thực luồng dữ liệu của hệ thống.

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

  • Hạn chế:
    • Phạm vi hệ thống chưa bao gồm phân hệ quản lý tài sản và cơ sở vật chất nội bộ của doanh nghiệp lữ hành.
    • Các nghiệp vụ kế toán mới dừng lại ở mức quản lý công nợ tour với đối tác và tính lương theo bảng công của hướng dẫn viên, chưa bao quát toàn diện các nghiệp vụ kế toán tổng hợp, kê khai thuế hay báo cáo tài chính doanh nghiệp.
    • Tài liệu giới hạn trong phạm vi phân tích và thiết kế hệ thống thông tin (OOAD/UML), chưa đề cập đến phần mã nguồn triển khai backend chi tiết, cấu hình hạ tầng mạng hoặc kết quả kiểm thử tải và bảo mật.
  • Hướng phát triển tiếp:
    • Lập trình hoàn thiện hệ thống trên nền tảng công nghệ web hiện đại, tích hợp cơ sở dữ liệu quan hệ (RDBMS).
    • Tích hợp cổng thanh toán trực tuyến (Online Payment Gateway) cho phép khách hàng tự thanh toán ngay trên giao diện web thay vì phải thông qua nhân viên thu ngân xuất hóa đơn trực tiếp.
    • Xây dựng thêm phân hệ mobile phục vụ riêng cho hướng dẫn viên du lịch để cập nhật nhật ký tour và tình trạng khách hàng theo thời gian thực.

Giá trị tham khảo

Tài liệu là nguồn tham khảo hữu ích cho:

  • Sinh viên ngành Hệ thống thông tin, Công nghệ phần mềm, Công nghệ thông tin: Tham khảo phương pháp luận chuẩn quy trình phân tích thiết kế hệ thống thông tin theo hướng đối tượng; học hỏi cách áp dụng 5 bước trích xuất lớp thực thể từ mô tả tự nhiên; cách vẽ và chuyển đổi từ kịch bản Use Case sang biểu đồ giao tiếp, biểu đồ tuần tự và kiến trúc DAO.
  • Người phát triển ứng dụng quản lý lữ hành: Tham khảo mô hình dữ liệu quan hệ chuyên ngành du lịch (cách tổ chức tour tuyến, ghép nối địa điểm, quản lý lịch tour, phân công hướng dẫn viên và liên kết tỷ lệ chia hoa hồng với đối tác cung ứng).

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

1. Hệ thống phân định phạm vi trách nhiệm giữa Nhân viên thu ngân và Nhân viên kế toán như thế nào?
Nhân viên thu ngân chịu trách nhiệm giao dịch trực tiếp với khách hàng: tìm kiếm khách hàng/tour, thu tiền và xuất hóa đơn dịch vụ đặt tour theo từng khách hoặc theo chuyến tour. Trong khi đó, Nhân viên kế toán phụ trách nghiệp vụ tài chính định kỳ theo tháng: thanh toán công nợ và xuất hóa đơn dịch vụ cho đối tác lữ hành, tổng hợp bảng công để chi trả lương/thưởng và xuất hóa đơn lương cho hướng dẫn viên, đồng thời lập báo cáo thống kê tổng hợp hàng tháng.

2. Làm thế nào để giải quyết các mối quan hệ nhiều - nhiều ($n-n$) trong thiết kế lớp thực thể của hệ thống?
Hệ thống giải quyết triệt để các quan hệ $n-n$ bằng cách đề xuất 4 lớp liên kết trung gian xác định duy nhất:

  • TourDiaDiem: liên kết giữa Tour và DiaDiemDuLich.
  • TourDoiTac: liên kết giữa Tour và DoiTac.
  • LichTourHDV: liên kết giữa LichTour và HDV.
  • KHLichTour: liên kết giữa LichTour và KhachHang.

3. Quá trình kiểm tra và xử lý khi khách hàng đặt tour trực tuyến diễn ra như thế nào?
Khi khách hàng chọn một tour cụ thể, hệ thống gọi hàm getThongTinLichTour() từ KHLichTour để hiển thị lịch trình chi tiết và số chỗ đã đặt (getSoKhachDaDat()). Khi khách hàng nhập số lượng người đi, hệ thống thực hiện hàm kiểm tra KTSoNguoiDi() để đối chiếu với số chỗ còn trống (SoKhachMax - SoKhachDaDat). Nếu hợp lệ, hệ thống tạo bản ghi đặt chỗ mới thông qua hàm createNewKHLichTour() và chuyển về giao diện thông báo thành công.

4. Nghiệp vụ nào bị loại trừ hoàn toàn khỏi phạm vi thiết kế của đồ án?
Căn cứ theo phần mô tả mục đích và phạm vi ở mục A của văn bản, hệ thống xác định rõ nội dung không bao gồm việc quản lý tài sản của công ty.


Kết luận

Đồ án môn học Phân tích và Thiết kế Hệ thống Thông tin (Đề tài số 16: Quản lý hãng tour du lịch) của nhóm sinh viên Học viện Công nghệ Bưu chính Viễn thông đã xây dựng một tài liệu đặc tả hoàn chỉnh về mặt phân tích nghiệp vụ và thiết kế kiến trúc phần mềm hướng đối tượng. Hệ thống phân định rõ ràng vai trò của 5 nhóm tác tử, chuẩn hóa các mối quan hệ dữ liệu phức tạp trong ngành du lịch thông qua các lớp thực thể trung gian và thiết lập luồng xử lý chi tiết từ giao diện người dùng đến tầng truy xuất dữ liệu DAO. Đây là tài liệu mẫu mực phục vụ việc học tập, nghiên cứu và làm tiền đề triển khai ứng dụng quản lý doanh nghiệp lữ hành thực tế.