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

  • Lý do chọn đề tài: Du lịch là nhu cầu ngày càng tăng và việc tìm kiếm thông tin du lịch qua Internet đã trở thành thói quen phổ biến. Một website du lịch có thể giúp các doanh nghiệp du lịch, khách sạn tiếp cận khách hàng nhanh chóng, đồng thời giảm thời gian người dùng tìm kiếm thông tin và đặt dịch vụ.
  • Mục tiêu và câu hỏi nghiên cứu
    1. Xây dựng một hệ thống website cung cấp dịch vụ du lịch (tour, nơi ở, sự kiện) dựa trên kiến thức lý thuyết về RESTful API, NodeJS, NextJS và Google Map API.
    2. Thiết kế và triển khai các chức năng quản lý cho các vai trò khác nhau (Super admin, Admin, Enterprise, Staff, User).
    3. Đánh giá khả năng tái sử dụng các chức năng đã có trong tiểu luận chuyên ngành và mức độ hoàn thiện các chức năng mới.
  • Đối tượng, phạm vi nghiên cứu
    • Đối tượng: Hệ thống web cung cấp dịch vụ du lịch, bao gồm backend (NodeJS/Express) và frontend (NextJS).
    • Phạm vi không gian: Triển khai trên môi trường máy chủ Linux, sử dụng CSDL MySQL.
    • Thời gian: Thực hiện từ ngày 20/02/2023 (nhận đề tài) đến ngày 29/05/2023 (nộp đề tài).

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

  • Khung lý thuyết, khái niệm, mô hình
    • RESTful API: Kiến trúc giao tiếp client‑server dựa trên các phương thức HTTP.
    • NodeJS: Nền tảng JavaScript đa nền tảng, hỗ trợ xử lý bất đồng bộ và khả năng mở rộng cao.
    • NextJS: Framework dựa trên React, cung cấp SSR (Server‑Side Rendering) và SSG (Static Site Generation) để tối ưu SEO và tốc độ tải trang.
    • Google Map API: Dịch vụ bản đồ trực tuyến dùng để hiển thị vị trí địa lý của các điểm du lịch và nơi ở.
  • Phương pháp nghiên cứu
    • Phân tích‑thiết kế hệ thống: Thu thập yêu cầu, mô tả use‑case, vẽ diagram (activity, sequence).
    • Thiết kế cơ sở dữ liệu: Lược đồ quan hệ, các bảng chính (User, Account, Tour, Stay, Room, Event, …).
    • Phát triển phần mềm: Xây dựng API server (NodeJS + Express), ORM Sequelize, frontend (NextJS + Redux).
    • Thử nghiệm: Kiểm thử chức năng đăng nhập, tìm kiếm tour, đặt dịch vụ, thanh toán VNPAY, đổi lịch, thêm mới tour.
  • Nguồn dữ liệu
    • Khảo sát hiện trạng: Thu thập thông tin từ các website du lịch (Traveloka, Booking.com, Agoda).
    • Tài liệu nội bộ: Tiểu luận chuyên ngành, bảng thống kê tái sử dụng chức năng, biểu mẫu nghiệp vụ (BM‑SK01, BM‑HH01, …).

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

Chương 1: Mở đầu

  • Giới thiệu tổng quan: Trình bày nhu cầu sở hữu website du lịch, mục tiêu học tập (phân tích, thiết kế, lập trình) và công nghệ sử dụng (HTML/CSS, ReactStrap, Javascript, NextJS, Redux, NodeJS, Express, MySQL).
  • Mục tiêu đề tài: Nghiên cứu và triển khai các chức năng quản lý, tìm kiếm, đặt tour và nơi ở, tích hợp thanh toán VNPAY, đồng thời hỗ trợ doanh nghiệp tăng doanh thu và quảng bá dịch vụ.

Chương 2: Cơ sở lý thuyết

  • NextJS: Framework React hỗ trợ SSR và SSG, cải thiện SEO, chia code tự động.
  • NodeJS: Nền tảng JavaScript tốc độ cao, bất đồng bộ, phù hợp với ứng dụng web quy mô lớn.
  • Google Map API: Cung cấp vị trí, khoảng cách, hiển thị bản đồ; được tích hợp để hiển thị địa điểm du lịch và nơi ở.

Chương 3: Khảo sát hiện trạng và xác định yêu cầu

  • Khảo sát website hiện tại:

    • Traveloka: Giao diện thu hút, đa dạng chương trình khuyến mãi, thông tin dịch vụ đầy đủ.
    • Booking.com: Giao diện cân đối, thanh tìm kiếm riêng cho từng loại dịch vụ, hỗ trợ thanh toán đa dạng (PayPal, chuyển khoản).
    • Agoda: Giao diện hài hòa, cung cấp thông tin chi tiết về phòng và sự kiện.
  • Yêu cầu chức năng (bảng 3.2)

    STT Chức năng Mô tả
    1 Tìm kiếm Nhập địa điểm, ngày, số lượng phòng/người để tìm tour hoặc nơi ở
    2 Xem thông tin dịch vụ Hiển thị chi tiết tour, nơi ở, sự kiện
    3 Xem thông tin sự kiện Hiển thị các sự kiện kèm voucher giảm giá
    4 Đăng nhập / Đăng ký Quản lý tài khoản người dùng
    5 Quản lý doanh thu (Enterprise) Thống kê doanh thu theo tháng, hiển thị đơn hủy
    6 Quản lý nhân viên (Enterprise) Thêm, sửa, xóa nhân viên
    7 Quản lý dịch vụ (Staff) Thêm, sửa, xóa tour, nơi ở
    8 Quản lý feedback (Staff) Xem và trả lời bình luận
    9 Quản lý đơn đặt (Staff) Thay đổi trạng thái đơn, hủy, đổi lịch
    10 Quản lý sự kiện (Admin/Enterprise) Thêm, sửa, xóa sự kiện, kèm voucher
    11 Quản lý thông tin cá nhân (User) Xem, sửa, xóa hồ sơ
    12 Đánh giá, bình luận (User) Đánh giá dịch vụ và trả lời bình luận
    13 Đặt dịch vụ (User) Đặt và thanh toán tour hoặc phòng
  • Yêu cầu phi chức năng (bảng 3.8): Giao diện thân thiện, dễ mở rộng, ổn định, đa trình duyệt, bảo mật dữ liệu người dùng.

  • Tái sử dụng chức năng từ tiểu luận (bảng 3.9)

    Chức năng Tỷ lệ tái sử dụng
    Lý thuyết NodeJS, NextJS 100 %
    Đăng nhập / Đăng ký 100 %
    Quản lý thông tin người dùng 100 %
    Xem thông tin dịch vụ 20 %
    Quản lý doanh thu 40 %
    Quản lý tài khoản (Admin) 100 %
    Quản lý dịch vụ 15 %
    Quản lý đơn đã đặt 25 %
    Đánh giá dịch vụ 40 %
    Đặt dịch vụ 15 %
    Kiểm tra phòng trống 50 %

Chương 4: Thiết kế hệ thống

  • Use‑case diagram: Bao gồm các vai trò Super admin, Admin, Enterprise, Staff, User; các hành vi chính (đăng ký, đăng nhập, quản lý doanh thu, quản lý dịch vụ, đặt tour, thanh toán).
  • Thiết kế giao diện: Trang chủ, danh sách tour, chi tiết tour, danh sách nơi ở, chi tiết nơi ở, sự kiện, hồ sơ cá nhân, trang đăng nhập/đăng ký, trang quên mật khẩu, trang thanh toán VNPAY.
  • Lược đồ quan hệ CSDL: Các bảng chính (User, Account, Tour, Stay, Room, Event, Comment, Policy, Commission, Bill…) kết nối qua khóa ngoại, hỗ trợ ORM Sequelize.

Chương 5: Cài đặt và thử nghiệm

  • Môi trường:
    • Backend: NodeJS 14+, Express, Sequelize, MySQL.
    • Frontend: NextJS 12+, Typescript, Redux, ReactStrap.
    • Thanh toán: Tích hợp VNPAY.
  • Các bước cài đặt: Cài đặt NodeJS, thiết lập CSDL MySQL, chạy lệnh npm install, thực hiện migration Sequelize, khởi động server (npm run dev).
  • Thử nghiệm chức năng:
    • Đăng nhập/Đăng ký: Kiểm tra xác thực người dùng, thông báo lỗi tài khoản tồn tại.
    • Tìm kiếm tour/địa điểm: Kiểm tra phản hồi API với các tham số địa điểm, ngày, số lượng.
    • Đặt dịch vụ: Kiểm tra quy trình đặt, lựa chọn voucher, chuyển sang thanh toán VNPAY.
    • Đổi lịch / Hủy đơn: Kiểm tra cập nhật trạng thái đơn và ghi nhận hành động của kế toán.
    • Quản lý doanh thu: Thống kê doanh thu theo tháng, hiển thị đơn hủy.

Chương 6: Kết luận

  • Kết quả đạt được: Hoàn thiện một hệ thống website du lịch đa chức năng, tích hợp đầy đủ các vai trò người dùng, hỗ trợ quản lý doanh thu, sự kiện, feedback và thanh toán.
  • Kỹ năng, thái độ: Nâng cao khả năng phân tích, thiết kế, lập trình full‑stack, làm việc nhóm, quản lý dự án.
  • Ưu và nhược điểm:
    • Ưu điểm: Tái sử dụng 70 % các chức năng cũ, mở rộng được các mô-đun mới, cải thiện giao diện người dùng.
    • Nhược điểm: Một số chức năng (quản lý dịch vụ, kiểm tra phòng) còn thiếu logic, giao diện chưa tối ưu hoàn toàn.
  • Hướng phát triển: Nâng cấp UI/UX, tối ưu hoá truy vấn CSDL, mở rộng tích hợp các nhà cung cấp thanh toán khác.

Thiết kế và triển khai

  • Kiến trúc tổng thể: Kiến trúc client‑server, frontend NextJS giao tiếp với backend RESTful API qua HTTP/HTTPS. Backend sử dụng Express làm router, Sequelize làm ORM, MySQL làm CSDL.
  • Công nghệ chủ đạo:
    • Frontend: NextJS (SSR + SSG), Typescript, Redux, ReactStrap, Google Map API.
    • Backend: NodeJS, Express, Sequelize, MySQL.
    • Thanh toán: VNPAY API.
  • Kiểm thử:
    • Unit test cho các route API (Jest).
    • Integration test kịch bản đặt tour, thanh toán, đổi lịch.
    • UI test bằng Cypress cho các trang quan trọng (đăng nhập, tìm kiếm, thanh toán).

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

  • Kết quả chính:
    • Xây dựng thành công 5 vai trò người dùng (Super admin, Admin, Enterprise, Staff, User) với quyền hạn được phân định rõ ràng.
    • Triển khai 12 chức năng chính (theo bảng 3.2) và 3 chức năng phụ (quản lý voucher, phản hồi feedback, báo cáo doanh thu).
    • Đạt tỷ lệ tái sử dụng ≈ 61 % các chức năng từ tiểu luận, giảm thời gian phát triển.
  • Giải pháp/kiến nghị:
    • Sử dụng ORM Sequelize để giảm thiểu lỗi truy vấn CSDL.
    • Áp dụng SSR/SSG của NextJS để nâng cao SEO và tốc độ tải trang.
    • Đề xuất mở rộng mô-đun thanh toán đa kênh (PayPal, thẻ tín dụng) cho các khách hàng quốc tế.
  • Đóng góp so với nghiên cứu trước: Trình bày chi tiết quy trình tích hợp Google Map API vào hệ thống đặt tour, đồng thời cung cấp mẫu thiết kế UI/UX cho các trang du lịch (các hình ảnh thiết kế được liệt kê trong phần “Thiết kế - …”).

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

  • Hạn chế:
    • Một số chức năng quản lý dịch vụ còn thiếu logic (độ chính xác 15 %).
    • Giao diện chưa hoàn thiện trên các trình duyệt di động.
    • Không có phân tích chi phí‑lợi nhuận (ROI) cho doanh nghiệp sử dụng hệ thống.
  • Hướng nghiên cứu:
    • Hoàn thiện logic cho quản lý dịch vụ và kiểm tra phòng trống.
    • Tối ưu hoá giao diện đáp ứng (responsive) cho thiết bị di động.
    • Thêm mô-đun phân tích dữ liệu khách hàng (big data) để đề xuất dịch vụ cá nhân hoá.

Giá trị tham khảo

  • Đối tượng: Sinh viên ngành Công nghệ Thông tin, đặc biệt những người thực hiện đề tài phát triển web; giảng viên hướng dẫn môn phát triển phần mềm; các nhà phát triển muốn xây dựng hệ thống du lịch trực tuyến.
  • Phần đáng tham khảo:
    • Mô hình kiến trúc (RESTful API + NextJS SSR/SSG).
    • Quy trình thiết kế use‑case và diagram (activity, sequence).
    • Bảng tái sử dụng chức năng giúp đánh giá mức độ khai thác lại tài nguyên hiện có.
    • Thiết kế UI/UX (hình ảnh thiết kế giao diện).

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

  1. Hệ thống hỗ trợ bao nhiêu vai trò người dùng?
    • Năm vai trò: Super admin, Admin, Enterprise, Staff và User (khách).
  2. Có bao nhiêu chức năng chung được liệt kê trong bảng 3.2?
    • Mười ba (13) chức năng chung, bao gồm tìm kiếm, xem thông tin dịch vụ, quản lý doanh thu, quản lý nhân viên, quản lý feedback, v.v.
  3. Tỷ lệ tái sử dụng các chức năng từ tiểu luận là bao nhiêu?
    • Các chức năng được tái sử dụng với tỷ lệ từ 15 % đến 100 %, tổng cộng khoảng 61 % các chức năng.
  4. Hệ thống sử dụng công nghệ nào để hiển thị bản đồ?
    • Google Map API được tích hợp để hiển thị vị trí địa lý của tour và nơi ở.
  5. Quy trình thanh toán được thực hiện qua nền tảng nào?
    • Thanh toán trực tuyến được tích hợp với VNPAY, theo các bước nhập thông tin, xác nhận và lưu hồ sơ thanh toán.

Kết luận

Đồ án “Xây dựng website cung cấp các dịch vụ du lịch” đã thực hiện thành công việc thiết kế, phát triển và thử nghiệm một hệ thống web du lịch đa chức năng, đáp ứng yêu cầu kỹ thuật và phi chức năng được đề ra. Qua việc tái sử dụng đáng kể các chức năng từ tiểu luận chuyên ngành, dự án giảm được khối lượng công việc phát triển và tạo nền tảng vững chắc để mở rộng các tính năng mới trong các nghiên cứu và dự án tương lai.