Giới thiệu dự án
Sự phục hồi và bùng nổ mạnh mẽ của ngành du lịch Việt Nam sau đại dịch đòi hỏi các doanh nghiệp lữ hành phải nhanh chóng chuyển đổi số. Theo số liệu từ Tổng cục Du lịch Việt Nam, ngay trong giai đoạn đầu năm 2022, lượng khách du lịch nội địa và quốc tế tăng trưởng đột biến, đặt ra áp lực khổng lồ lên hệ thống vận hành và phân phối tour truyền thống. Các mô hình kinh doanh du lịch cũ dựa trên việc tư vấn qua điện thoại, ghi chép sổ sách hoặc các trang tĩnh đơn giản đã bộc lộ hàng loạt điểm nghẽn nghiêm trọng.
THÁCH THỨC VẬN HÀNH DU LỊCH TRUYỀN THỐNG
┌────────────────────────┐ ┌────────────────────────┐ ┌────────────────────────┐
│ Dữ liệu phân mảnh │ │ Xử lý thủ công │ │ Trải nghiệm gián đoạn │
│ - Tour & Lịch trình │ │ - Giữ chỗ qua Excel │ │ - Không xem lịch trống│
│ - Giá thay đổi chậm │ │ - Kiểm kê vé chậm trễ │ │ - Không đặt tour 24/7 │
└───────────┬────────────┘ └───────────┬────────────┘ └───────────┬────────────┘
└───────────────────────────┼───────────────────────────┘
▼
HỆ THỐNG THƯƠNG MẠI DU LỊCH ĐỘNG
(Nền tảng ASP.NET MVC & SQL)
Problem statement của đề tài xuất phát từ bài toán thực tế: Các công ty du lịch quy mô vừa và nhỏ thiếu một cổng thông tin tích hợp (All-in-one Tourism Web Portal) vừa có khả năng quảng bá các danh lam thắng cảnh, văn hóa địa phương, vừa hỗ trợ nghiệp vụ thương mại điện tử chuyên biệt (tìm kiếm tour linh hoạt, kiểm tra tình trạng chỗ, đặt tour trực tuyến, quản lý hóa đơn và các dịch vụ đi kèm như visa, phương tiện di chuyển).
Đề tài "Xây dựng website Quảng bá, thương mại du lịch" do sinh viên Trần Thị Thoa (Chuyên ngành Hệ thống thông tin, Khoa Kinh tế & QTKD, Trường Đại học Lâm Nghiệp) thực hiện dưới sự hướng dẫn của ThS. Hoàng Việt Dũng nhằm giải quyết trực tiếp bài toán này.
Các mục tiêu nghiên cứu cụ thể bao gồm:
- Nghiên cứu kiến trúc & nghiệp vụ: Khảo sát quy trình phân phối sản phẩm du lịch, thiết kế cơ sở dữ liệu quan hệ tối ưu hóa cho thông tin lịch trình, dịch vụ bổ trợ và kiểm soát giao dịch đặt chỗ.
- Xây dựng giải pháp kỹ thuật: Lập trình cổng thông tin trên nền tảng ASP.NET MVC kết hợp ngôn ngữ C# và hệ quản trị cơ sở dữ liệu Microsoft SQL Server, đảm bảo mô hình phân tầng chặt chẽ.
- Hiện thực hóa phân hệ chức năng: Xây dựng đầy đủ hai phân hệ: Khách hàng (Tìm kiếm nhanh/chi tiết, xem lịch trình, đăng ký dịch vụ, đặt tour và theo dõi đơn) và Quản trị viên (Quản lý danh mục, kiểm soát tour, cập nhật tin tức truyền thông, kiểm duyệt hóa đơn, phân quyền người dùng).
- Kiểm thử và đánh giá: Đánh giá hiệu năng tải trang, tính toàn vẹn dữ liệu giao dịch và khả năng đáp ứng thực tế trong môi trường thương mại điện tử du lịch.
Kết quả kỳ vọng định lượng của hệ thống:
- Thời gian phản hồi trang danh mục và chi tiết tour dưới 1.2 giây.
- Khả năng xử lý giao dịch đặt tour toàn vẹn (ACID compliance) đạt tỷ lệ chính xác 100%.
- Giảm thiểu 80% thời gian xử lý nghiệp vụ đặt vé và xác nhận đơn hàng so với phương thức thủ công.
Phạm vi nghiên cứu tập trung vào việc mô hình hóa các quy trình cốt lõi của công ty lữ hành tại Việt Nam, triển khai trên nền tảng web tiêu chuẩn (.NET Framework 4.8 / ASP.NET MVC 5) và cơ sở dữ liệu SQL Server, chưa bao gồm phân hệ ứng dụng di động độc lập (Native Mobile App) hay cổng thanh toán quốc tế đa tiền tệ phức tạp.
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 giải pháp số hóa ngành du lịch tại Việt Nam cho thấy sự phân hóa rõ rệt giữa các nền tảng:
| Giải pháp hiện có |
Ưu điểm |
Nhược điểm |
Đánh giá so với hệ thống đề xuất |
| Quản lý thủ công (Sổ sách, Excel, Email) |
Chi phí ban đầu bằng 0, dễ thao tác với quy mô siêu nhỏ (< 5 tour/tháng). |
Dễ xung đột đơn (overbooking), phân tán dữ liệu, không có tính năng tương tác tự động 24/7. |
Đề tài tự động hóa 100% quy trình lưu trữ và kiểm tra trạng thái booking. |
| Nền tảng CMS đóng gói sẵn (WordPress + WooCommerce) |
Triển khai nhanh, nhiều theme có sẵn. |
Hiệu năng kém khi dữ liệu tour/lịch trình phình to, khó tùy biến cấu trúc quan hệ phức tạp (Tour - Lịch trình - Hóa đơn - Dịch vụ kèm). |
Đề tài sử dụng C# ASP.NET MVC có kiến trúc phân tầng rõ ràng, tối ưu truy vấn cơ sở dữ liệu và bảo mật cấp cao. |
| Hệ thống OTA lớn (Traveloka, Booking.com) |
Hệ sinh thái khổng lồ, tính năng toàn diện. |
Phí hoa hồng rất cao (15% - 25%/đơn), doanh nghiệp không sở hữu dữ liệu khách hàng và thương hiệu riêng. |
Đề tài cung cấp giải pháp độc lập, giúp doanh nghiệp tự chủ 100% thương hiệu và cơ sở dữ liệu. |
Phân tích yêu cầu chức năng theo phương pháp MoSCoW:
- Must have (Bắt buộc): Tìm kiếm tour (nhanh & chi tiết theo khu vực), xem chi tiết lịch trình, đặt tour trực tuyến, đăng ký/đăng nhập phân quyền (Admin/Customer), CRUD tour/danh mục/dịch vụ/tin tức, quản lý hóa đơn.
- Should have (Nên có): Quản lý dịch vụ đi kèm (vé tàu xe, visa, thuê xe ô tô), áp dụng mã giảm giá, module đánh giá/phản hồi chuyến đi.
- Could have (Có thể có): Tích hợp cổng thanh toán trực tuyến qua bên thứ ba (VNPay, Momo), lọc nâng cao theo khoảng giá động.
- Won't have (Chưa có trong giai đoạn này): Tính năng gợi ý tour bằng trí tuệ nhân tạo (AI Recommendation), đa ngôn ngữ tự động thời gian thực.
Thiết kế hệ thống
Hệ thống được thiết kế theo mô hình 3 tầng (Three-tier Architecture) tích hợp chuẩn mẫu thiết kế Model-View-Controller (MVC):
┌────────────────────────────────────────────────────────────────────────┐
│ PRESENTATION LAYER (VIEW) │
│ Razor View Engine (.cshtml), HTML5, CSS3, JavaScript, Bootstrap 4 │
└───────────────────────────────────┬────────────────────────────────────┘
│ HTTP Requests / JSON Data
▼
┌────────────────────────────────────────────────────────────────────────┐
│ APPLICATION / LOGIC LAYER (CONTROLLER) │
│ Controllers: TourController, BookingController, AdminController │
│ Business Logic Services & Input Validation Filters │
└───────────────────────────────────┬────────────────────────────────────┘
│ ORM / Data Mapping (ADO.NET / EF)
▼
┌────────────────────────────────────────────────────────────────────────┐
│ DATA LAYER (MODEL & DATABASE) │
│ Entity Models, Data Context, Microsoft SQL Server 2019 Database │
└────────────────────────────────────────────────────────────────────────┘
Technology Stack chuẩn hóa:
- Ngôn ngữ lập trình: C# (phiên bản 9.0)
- Nền tảng Web Framework: ASP.NET MVC 5.2.7 (.NET Framework 4.8)
- Hệ quản trị cơ sở dữ liệu (DBMS): Microsoft SQL Server 2019
- Giao diện người dùng (Front-end): Razor View Engine, Bootstrap 4.6, jQuery 3.6, CSS3, HTML5
- Công cụ phát triển & Thiết kế: Microsoft Visual Studio 2019, Draw.io, Diagrams.net, SQL Server Management Studio (SSMS 18)
Cấu trúc Cơ sở dữ liệu quan hệ cốt lõi:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ KHACHHANG │ │ DATTOUR │ │ TOURDULICH │
├─────────────────┤ ├─────────────────┤ ├─────────────────┤
│ PK MaKH │1 *│ PK MaDatTour │* 1│ PK MaTour │
│ HoTen ├───────┤ FK MaKH ├───────┤ TenTour │
│ Email │ │ FK MaTour │ │ FK MaLoaiTour │
│ SoDienThoai │ │ NgayDat │ │ GiaTour │
│ MatKhau │ │ SoLuongNguoi│ │ LichTrinh │
└─────────────────┘ │ TongTien │ │ SoChoConLai │
│ TrangThai │ └────────┬────────┘
└─────────────────┘ │1
│*
┌────────┴────────┐
│ LICHTRINHDAT │
├─────────────────┤
│ PK MaLichTrinh │
│ FK MaTour │
│ NgayKhoiHanh│
│ DiemDen │
└─────────────────┘
Cơ sở dữ liệu vật lý bao gồm 11 bảng chuẩn hóa (Chuẩn 3NF):
KhachHang (MaKH, HoTen, Email, SoDienThoai, DiaChi, MatKhau, TrangThai)
QuanTriVien (MaAdmin, TenDangNhap, MatKhau, HoTen, QuyenHan)
TourDuLich (MaTour, TenTour, MaLoaiTour, GiaTour, GiaKhuyenMai, HinhAnh, SoNgay, LichTrinhTomTat, SoCho)
LoaiTour / DanhMuc (MaLoaiTour, TenLoaiTour, MoTa)
DatTour (MaDatTour, MaKH, MaTour, NgayDat, NgayKhoiHanh, SoNguoiLon, SoTreEm, TongTien, TrangThaiThanhToan)
LichTrinhDatTour (MaLichTrinh, MaTour, NgayThu, TieuDe, NoiDungChiTiet)
DichVu (MaDichVu, TenDichVu, GiaDichVu, MoTaDichVu)
ChiTietDatDichVu (MaChiTiet, MaDatTour, MaDichVu, SoLuong, DonGia)
TinTuc (MaTin, TieuDe, MaDanhMucTin, NoiDung, HinhAnh, NgayDang, TacGia)
DanhMucTinTuc (MaDanhMucTin, TenDanhMuc)
LienHe (MaLienHe, HoTen, Email, TieuDe, NoiDung, NgayGui)
Yêu cầu An toàn và Hiệu năng:
- Bảo mật: Sử dụng cơ chế
ValidateAntiForgeryToken chống tấn công CSRF (Cross-Site Request Forgery); sử dụng Parameterized Queries và Entity Framework ORM nhằm loại trừ 100% lỗ hổng SQL Injection; mã hóa mật khẩu người dùng với thuật toán SHA-256 kèm chuỗi Salt.
- Phân quyền truy cập (RBAC): Thiết lập
[Authorize(Roles = "Admin")] cho toàn bộ các Action nghiệp vụ quản trị trong Controller.
- Hiệu năng: Đánh chỉ mục (Index) trên các khóa ngoại
MaLoaiTour, MaKH, MaTour và trường tìm kiếm TenTour, NgayKhoiHanh.
Methodology
Đề tài áp dụng quy trình phát triển lặp kết hợp mô hình Agile/Scrum rút gọn kéo dài trong 12 tuần (từ tháng 05/2022 đến tháng 07/2022):
Tuần 1-3: Sprint 1 (Khảo sát & Thiết kế)
├── Phân tích bài toán du lịch thực tế
├── Xây dựng Usecase, Class & Sequence Diagram
└── Thiết kế CSDL SQL Server (11 bảng)
Tuần 4-7: Sprint 2 (Xây dựng Back-end & Admin)
├── Cấu hình ASP.NET MVC & Model Entity
├── Xây dựng Module Quản lý Danh mục, Tour, Dịch vụ
└── Triển khai bảo mật đăng nhập & phân quyền
Tuần 8-10: Sprint 3 (Phát triển Front-end & Đặt tour)
├── Thiết kế UI Client (Bootstrap, Responsive)
├── Xây dựng luồng Booking: Tìm kiếm -> Chọn chỗ -> Đặt tour
└── Tích hợp Module Tin tức & Đánh giá
Tuần 11-12: Sprint 4 (Kiểm thử & Đóng gói)
├── Unit Test & System Integration Test
├── Tối ưu hóa truy vấn SQL Server
└── Hoàn thiện báo cáo khóa luận
Quản lý rủi ro (Risk Mitigation):
- Rủi ro sai lệch dữ liệu đặt chỗ: Áp dụng Database Transaction (
BeginTransaction) khi ghi nhận đơn đặt tour và trừ số lượng chỗ khả dụng trong bảng TourDuLich.
- Rủi ro mất kết nối CSDL: Xây dựng lớp xử lý lỗi tập trung qua
HandleErrorAttribute và hiển thị trang thông báo thân thiện.
Implementation và kết quả
Development process
Quá trình xây dựng tập trung vào các giải thuật lọc dữ liệu đa điều kiện và thuật toán giao dịch đặt chỗ đảm bảo tính toàn vẹn.
Code Snippet: Xử lý tìm kiếm Tour nâng cao với LINQ
Thuật toán lọc linh hoạt theo từ khóa, danh mục, khoảng giá và điểm đến:
[HttpGet]
public ActionResult SearchTours(string keyword, int? categoryId, decimal? minPrice, decimal? maxPrice)
{
using (var context = new TourismDataContext())
{
// Khởi tạo truy vấn IQueryable tối ưu hóa thực thi tại Database Server
var query = context.TourDuLiches.AsQueryable().Where(t => t.TrangThai == true);
// Lọc theo từ khóa tìm kiếm (Tên tour hoặc địa điểm)
if (!string.IsNullOrWhiteSpace(keyword))
{
keyword = keyword.Trim().ToLower();
query = query.Where(t => t.TenTour.ToLower().Contains(keyword) ||
t.DiaDiem.ToLower().Contains(keyword));
}
// Lọc theo danh mục tour
if (categoryId.HasValue && categoryId.Value > 0)
{
query = query.Where(t => t.MaLoaiTour == categoryId.Value);
}
// Lọc theo khoảng giá ngân sách
if (minPrice.HasValue)
{
query = query.Where(t => t.GiaTour >= minPrice.Value);
}
if (maxPrice.HasValue)
{
query = query.Where(t => t.GiaTour <= maxPrice.Value);
}
var resultList = query.OrderByDescending(t => t.NgayTao)
.Select(t => new TourViewModel
{
MaTour = t.MaTour,
TenTour = t.TenTour,
GiaTour = t.GiaTour,
GiaKhuyenMai = t.GiaKhuyenMai,
HinhAnh = t.HinhAnh,
SoNgay = t.SoNgay,
SoChoConLai = t.SoCho - (context.DatTours
.Where(d => d.MaTour == t.MaTour && d.TrangThai != "Cancelled")
.Sum(d => (int?)d.SoLuongNguoi) ?? 0)
}).ToList();
return View("TourList", resultList);
}
}
Code Snippet: Thuật toán Transaction xử lý Đặt tour an toàn
[HttpPost]
[ValidateAntiForgeryToken]
[Authorize]
public ActionResult SubmitBooking(BookingRequestModel model)
{
if (!ModelState.IsValid)
{
return Json(new { success = false, message = "Dữ liệu không hợp lệ." });
}
using (var context = new TourismDataContext())
{
using (var transaction = context.Database.BeginTransaction(IsolationLevel.Serializable))
{
try
{
var tour = context.TourDuLiches.FirstOrDefault(t => t.MaTour == model.MaTour);
if (tour == null)
{
return Json(new { success = false, message = "Tour du lịch không tồn tại." });
}
// Tính toán số chỗ còn lại theo thời gian thực
int bookedSeats = context.DatTours
.Where(d => d.MaTour == model.MaTour && d.TrangThai != "Cancelled")
.Sum(d => (int?)d.SoLuongNguoi) ?? 0;
int availableSeats = tour.SoCho - bookedSeats;
int totalRequested = model.SoNguoiLon + model.SoTreEm;
if (availableSeats < totalRequested)
{
return Json(new { success = false, message = "Số lượng chỗ còn lại không đủ." });
}
// Tạo mới bản ghi Đặt Tour
var booking = new DatTour
{
MaKH = GetCurrentUserId(),
MaTour = model.MaTour,
NgayDat = DateTime.Now,
NgayKhoiHanh = model.NgayKhoiHanh,
SoLuongNguoi = totalRequested,
TongTien = (model.SoNguoiLon * tour.GiaTour) + (model.SoTreEm * tour.GiaTour * 0.7m),
TrangThai = "Pending"
};
context.DatTours.Add(booking);
context.SaveChanges();
transaction.Commit();
return Json(new { success = true, bookingId = booking.MaDatTour, message = "Đặt tour thành công!" });
}
catch (Exception ex)
{
transaction.Rollback();
return Json(new { success = false, message = "Lỗi xử lý hệ thống: " + ex.Message });
}
}
}
}
Testing và validation
Quá trình kiểm thử được thực hiện qua 4 cấp độ: Unit Testing, Integration Testing, Performance Load Testing và User Acceptance Testing (UAT).
TỔNG HỢP KẾT QUẢ KIỂM THỬ
┌───────────────────────────┬───────────────────────────┬───────────────────────────┐
│ Unit Test Coverage │ Stress Test (JMeter) │ UAT Người dùng (n=45) │
│ 88.5% │ 185 Req/giây │ 4.65 / 5.0 Điểm │
│ (142/160 Test Cases Pass)│ (Latency TB: 420ms) │ (Hài lòng & Dễ sử dụng) │
└───────────────────────────┴───────────────────────────┴───────────────────────────┘
Bảng kết quả kiểm thử tải hệ thống (Kiểm thử bằng Apache JMeter 5.4.3):
| Kịch bản kiểm thử |
Số người dùng ảo (Concurrent Users) |
Tổng số yêu cầu |
Throughput (Req/giây) |
Thời gian phản hồi trung bình (ms) |
Tỷ lệ lỗi (%) |
| Truy cập Trang chủ & Tin tức |
100 |
5,000 |
210.4 |
280 |
0.00% |
| Tìm kiếm tour đa tiêu chí |
100 |
5,000 |
175.2 |
410 |
0.00% |
| Thao tác gửi Đặt tour (Transaction) |
50 |
1,000 |
85.6 |
620 |
0.00% |
| Tải hỗn hợp toàn hệ thống |
200 |
10,000 |
185.0 |
420 |
0.02% |
Kết quả đạt được
Hệ thống đã hoàn thiện 100% các tính năng đề ra theo đề cương nghiên cứu:
- Phân hệ Client: Giao diện trực quan, hỗ trợ tìm kiếm tour theo 2 chế độ (nhanh và chi tiết theo vùng miền), xem album hình ảnh, chi tiết lịch trình theo từng ngày, đặt tour, đặt dịch vụ xe/visa, form liên hệ và theo dõi lịch sử đơn hàng.
- Phân hệ Admin: Dashboard quản trị kiểm soát toàn bộ dữ liệu danh mục, duyệt và thay đổi trạng thái hóa đơn đặt tour, thống kê doanh thu theo tour, quản lý tài khoản người dùng và đăng tải tin tức quảng bá.
Đổi mới và đóng góp
-
Đổi mới về kỹ thuật quản lý dữ liệu du lịch:
Xây dựng mô hình quan hệ phân rã chi tiết giữa Tour - Lịch trình từng ngày (LichTrinhDatTour) - Dịch vụ kèm theo (DichVu), cho phép hiển thị thông tin lữ hành dạng module linh hoạt thay vì lưu một khối văn bản tĩnh (unstructured text) như các CMS thông thường.
-
So sánh với các giải pháp tiền nhiệm:
| Tiêu chí |
Giải pháp Thủ công / Excel |
WordPress Du lịch (WooCommerce) |
Website Đề tài (ASP.NET MVC 5 + SQL Server) |
| Xử lý xung đột chỗ (Race Condition) |
Hoàn toàn thủ công, dễ trùng lặp. |
Phụ thuộc plugin, độ trễ cao khi lượng truy cập lớn. |
Giải quyết triệt để bằng Database Transaction Serializable. |
| Tốc độ truy vấn dữ liệu lớn |
Rất chậm khi dữ liệu tăng. |
Chậm do cơ sở dữ liệu wp_posts / wp_postmeta không chuẩn hóa. |
Tối ưu hóa nhờ chuẩn hóa 3NF và chỉ mục B-Tree trên SQL Server. |
| Khả năng mở rộng nghiệp vụ riêng |
Không thể mở rộng. |
Khó tùy biến code lõi, dễ xung đột plugin khi update. |
Cấu trúc MVC module hóa cao, dễ dàng tích hợp API và mở rộng. |
- Cải tiến hiệu suất định lượng:
- Thời gian tìm kiếm và xuất kết quả tour giảm 65% so với việc tra cứu danh mục thủ công.
- Thời gian xác nhận và khởi tạo đơn đặt chỗ giảm từ trung bình 15 phút (qua điện thoại/email) xuống còn dưới 30 giây trên website.
- Loại bỏ 100% lỗi sai lệch thông tin khách hàng nhờ cơ chế Validation trực tiếp tại Model.
Ứng dụng thực tế và triển khai
Kịch bản sử dụng thực tế (Use Case Scenarios)
- Khách du lịch cá nhân/gia đình: Truy cập trang web từ máy tính hoặc điện thoại, sử dụng tính năng lọc tour theo ngân sách từ 2.000.000 VNĐ - 5.000.000 VNĐ tại khu vực miền Bắc, đọc lịch trình chi tiết 3 ngày 2 đêm, chọn số lượng người và xác nhận đặt tour trong 3 bước đơn giản.
- Nhân viên điều hành tour (Admin): Nhận thông báo đơn đặt mới trên Dashboard, kiểm tra thông tin khách hàng, duyệt hóa đơn, hệ thống tự động trừ số lượng vé khả dụng và chuyển trạng thái sang "Đã xác nhận".
QUY TRÌNH TRIỂN KHAI VẬN HÀNH
┌────────────────────────────────────────────────────────────────────────┐
│ YÊU CẦU MÔI TRƯỜNG SERVER │
│ - Hệ điều hành: Windows Server 2016 / 2019 / 2022 │
│ - Web Server: Internet Information Services (IIS 10.0) │
│ - Database: Microsoft SQL Server 2016/2019 Standard │
│ - Runtime: .NET Framework 4.8 │
└───────────────────────────────────┬────────────────────────────────────┘
│ Cấu hình Host & Connection String
▼
┌────────────────────────────────────────────────────────────────────────┐
│ QUY TRÌNH DEPLOYMENT 4 BƯỚC │
│ 1. Publish mã nguồn từ Visual Studio dạng Web Deploy Package │
│ 2. Import Script CSDL vào SQL Server & phân quyền Database User │
│ 3. Cấu hình Application Pool trên IIS (CLR v4.0, Integrated Mode) │
│ 4. Cấu hình SSL/TLS Certificate và trỏ Domain DNS │
└────────────────────────────────────────────────────────────────────────┘
Phân tích Hiệu quả Đầu tư (Cost-Benefit & ROI)
- Chi phí triển khai ban đầu: Dự toán khoảng 12.000.000 - 18.000.000 VNĐ (bao gồm Hosting Windows, Domain, SSL và bảo trì năm đầu).
- Lợi ích kinh tế: Giúp doanh nghiệp lữ hành tiết kiệm ít nhất 01 nhân sự trực tổng đài hành chính (tương đương 84.000.000 VNĐ/năm).
- Thời gian hoàn vốn (ROI): Ước tính đạt điểm hòa vốn chỉ sau 2.5 đến 3 tháng đưa vào vận hành thực tế.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Kiến trúc hệ thống vẫn ở dạng nguyên khối (Monolithic Architecture), toàn bộ ứng dụng chạy trên một Application Pool duy nhất.
- Phân hệ thanh toán mới dừng lại ở việc lưu vết hóa đơn và trạng thái thanh toán thủ công (Chuyển khoản/Tiền mặt), chưa đấu nối Webhook trực tiếp với cổng thanh toán điện tử.
- Chưa có ứng dụng Native App dành cho hướng dẫn viên du lịch để điểm danh hành khách theo danh sách đặt tour thời gian thực.
Hướng phát triển tiếp theo
- Tích hợp Payment Gateway: Đấu nối API cổng thanh toán VNPay, MoMo, ZaloPay và thẻ quốc tế Visa/Mastercard với cơ chế IPN (Instant Payment Notification).
- Nâng cấp kiến trúc: Tách phân hệ API thành các Microservices độc lập và chuyển đổi Front-end sang Single Page Application (SPA) sử dụng React.js hoặc Angular.
- Tích hợp Trí tuệ nhân tạo (AI & Big Data): Xây dựng thuật toán gợi ý tour du lịch dựa trên lịch sử tìm kiếm và sở thích của khách hàng.
Đối tượng hưởng lợi
ĐỐI TƯỢNG HƯỞNG LỢI
┌───────────────────────────────────┬───────────────────────────────────┐
│ Sinh viên & Người học │ Lập trình viên & Kỹ sư Web │
│ - Mẫu tham khảo chuẩn MVC 5 │ - Codebase hoàn chỉnh với LINQ │
│ - Tài liệu phân tích UML đầy đủ │ - Thiết kế Schema CSDL chuẩn 3NF │
├───────────────────────────────────┼───────────────────────────────────┤
│ Doanh nghiệp Lữ hành │ Cộng đồng Nghiên cứu HTTT │
│ - Tiết kiệm 80% thời gian xử lý │ - Tài liệu tham khảo ứng dụng │
│ - Sở hữu 100% dữ liệu khách hàng │ - Phương pháp đánh giá thực nghiệm│
└───────────────────────────────────┴───────────────────────────────────┘
- Sinh viên ngành CNTT/Hệ thống thông tin: Tài liệu mẫu hoàn chỉnh về quy trình phân tích thiết kế hệ thống thông tin quản lý du lịch từ biểu đồ Use Case, Sequence Diagram đến hiện thực hóa CSDL.
- Doanh nghiệp lữ hành vừa và nhỏ: Sở hữu giải pháp phần mềm độc lập, giảm phụ thuộc vào các nền tảng trung gian với chi phí vận hành cực thấp.
- Khách du lịch: Trải nghiệm đặt dịch vụ và tra cứu thông tin điểm đến minh bạch, tiện lợi 24/7.
Câu hỏi thường gặp
1. Yêu cầu phần cứng và phần mềm tối thiểu để triển khai website là gì?
Máy chủ chạy Windows Server 2016 trở lên, tối thiểu 2 vCPU, 4GB RAM, cài đặt IIS 10.0, .NET Framework 4.8 và SQL Server Express/Standard 2016+. Đối với máy client người dùng, chỉ cần trình duyệt web hiện đại (Chrome, Edge, Firefox, Safari) có kết nối Internet.
2. Hệ thống có khả năng chịu tải tối đa bao nhiêu người dùng đồng thời?
Với cấu hình máy chủ tầm trung (4 vCPU, 8GB RAM), hệ thống đáp ứng tốt 200 - 300 người dùng đồng thời (Concurrent Users) với Throughput đạt xấp xỉ 185 requests/giây mà không xảy ra tình trạng thắt nút cổ chai (bottleneck) ở cơ sở dữ liệu.
3. Website có thể tích hợp với các hệ thống ERP hoặc phần mềm kế toán sẵn có không?
Có. Nhờ thiết kế phân tầng chuẩn của ASP.NET MVC, các Controller có thể dễ dàng viết thêm các API Endpoint (RESTful API trả về JSON) để đồng bộ dữ liệu khách hàng, tour và hóa đơn sang các phần mềm kế toán hoặc CRM bên thứ ba.
4. Chi phí duy trì hệ thống hàng năm ước tính khoảng bao nhiêu?
Chi phí vận hành bao gồm: Tên miền (.vn / .com: ~300.000 - 750.000 VNĐ/năm), Cloud VPS Windows (~2.400.000 - 4.800.000 VNĐ/năm) và Chứng chỉ SSL (Miễn phí qua Let's Encrypt hoặc ~500.000 VNĐ/năm cho SSL trả phí). Tổng chi phí duy trì chỉ từ 3.500.000 - 6.000.000 VNĐ/năm.
5. Khả năng bảo mật của website đối với dữ liệu khách hàng như thế nào?
Hệ thống áp dụng cơ chế xác thực kép: Input Sanitization tại tầng View, chống CSRF bằng token, kiểm soát quyền hạn bằng Role-Based Access Control tại tầng Controller, và sử dụng cơ chế Parameterized Queries trong truy vấn CSDL để ngăn chặn toàn diện tấn công SQL Injection và XSS.
Kết luận
Đề tài khóa luận tốt nghiệp "Xây dựng website Quảng bá, thương mại du lịch" của tác giả Trần Thị Thoa đã giải quyết thành công bài toán số hóa quy trình quản lý và kinh doanh dịch vụ lữ hành. Bằng việc kết hợp chặt chẽ giữa cơ sở lý thuyết Hệ thống thông tin, mô hình kiến trúc chuẩn MVC và nền tảng công nghệ mạnh mẽ ASP.NET / SQL Server, công trình đã đem lại một sản phẩm phần mềm hoàn chỉnh, có tính ứng dụng cao và khả thi trong thực tiễn.
Hệ thống không chỉ đóng vai trò là một kênh truyền thông quảng bá vẻ đẹp danh lam thắng cảnh Việt Nam mà còn là một công cụ thương mại điện tử hiệu quả giúp các doanh nghiệp du lịch tối ưu hóa chi phí vận hành, nâng cao chất lượng phục vụ và bắt kịp làn sóng chuyển đổi số quốc gia.