Giới thiệu dự án
Sự phục hồi và tăng trưởng mạnh mẽ của ngành hàng không dân dụng đặt ra bài toán cấp thiết về mặt công nghệ cho các doanh nghiệp vận tải hành khách. Theo báo cáo từ Hiệp hội Vận tải Hàng không Quốc tế (IATA), khối lượng hành khách luân chuyển toàn cầu duy trì mức tăng trưởng trung bình 6.5%/năm, đòi hỏi các hệ thống điều hành bay và quản lý đặt chỗ phải xử lý hàng trăm nghìn giao dịch mỗi ngày với độ trễ cực thấp. Tại Việt Nam, xu hướng chuyển đổi số trong logistics và dịch vụ lữ hành đòi hỏi các hãng hàng không và mạng lưới đại lý vé máy bay phải loại bỏ hoàn toàn các quy trình ghi chép thủ công hoặc phân mảnh trên bảng tính rời rạc.
Vấn đề cốt lõi mà các phòng vé và hãng bay quy mô vừa và nhỏ đối mặt là:
- Hiện tượng xung đột dữ liệu đặt chỗ (overbooking) do thiếu cơ chế kiểm soát trạng thái ghế theo thời gian thực.
- Khó khăn trong việc cập nhật linh hoạt các quy định điều hành (số lượng sân bay, thời gian bay tối thiểu, thời gian dừng tại sân bay trung gian, biểu phí phân hạng ghế).
- Thời gian trễ trong việc tổng hợp báo cáo doanh thu định kỳ theo tháng và năm, làm giảm tính kịp thời trong các quyết định kinh doanh.
Đồ án môn học "Nhập môn Công nghệ Phần mềm: Xây dựng Phần mềm Quản lý Bán vé Chuyến bay" được thực hiện tại Trường Đại học Công nghệ Thông tin – ĐHQG-HCM (UIT) nhằm giải quyết triệt để các bài toán nghiệp vụ trên.
+-------------------------------------------------------------------------+
| MỤC TIÊU DỰ ÁN CỤ THỂ |
+-------------------------------------------------------------------------+
| 1. Tự động hóa 100% quy trình tiếp nhận và kiểm soát lịch chuyến bay. |
| 2. Chuẩn hóa quy trình bán vé trực tiếp và ghi nhận đặt giữ chỗ. |
| 3. Tối ưu thuật toán tra cứu chuyến bay với độ phức tạp thời gian thấp. |
| 4. Xây dựng module báo cáo động kết xuất doanh thu đa chiều. |
| 5. Đảm bảo tính tiến hóa thông qua tham số hóa toàn bộ quy định. |
+-------------------------------------------------------------------------+
Giải pháp công nghệ được lựa chọn là mô hình kiến trúc 3-Tier / 3-Layer trên nền tảng .NET Framework và hệ quản trị cơ sở dữ liệu quan hệ Microsoft SQL Server. Kiến trúc này phân tách rõ ràng trách nhiệm giữa tầng hiển thị (Presentation Layer), tầng xử lý nghiệp vụ (Business Logic Layer - BUS) và tầng truy cập dữ liệu (Data Access Layer - DAO), kết hợp đối tượng truyền tải dữ liệu (Data Transfer Object - DTO). Thiết kế này giúp hệ thống đạt hiệu năng cao, dễ bảo trì, có khả năng mở rộng và kiểm thử độc lập.
Chỉ số đầu ra kỳ vọng (Measurable Metrics):
- Thông lượng bán vé và ghi nhận đặt chỗ đạt tối thiểu 1.000 giao dịch/giờ.
- Tốc độ tra cứu chuyến bay và kết xuất báo cáo: phản hồi tức thì (< 500ms) trên tệp dữ liệu chuẩn.
- Thời gian đào tạo nhân sự sử dụng thành thạo: dưới 5 phút/nghiệp vụ.
- Khả năng mở rộng hoặc thay thế hệ quản trị CSDL trong vòng tối đa 2 ngày làm việc.
Phạm vi và giới hạn: Hệ thống tập trung vào nghiệp vụ quản trị nội bộ của phòng vé và hãng bay (Desktop Application), bao gồm quản lý sân bay, lịch bay, bán vé, đặt chỗ, thay đổi quy định và báo cáo thống kê; chưa tích hợp cổng thanh toán trực tuyến của bên thứ ba (Payment Gateway API) và dịch vụ gửi SMS tự động.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Trước khi xây dựng hệ thống, nhóm nghiên cứu đã tiến hành khảo sát các mô hình quản lý hiện hữu trên thị trường:
| Tiêu chí so sánh |
Quản lý thủ công / Excel |
Hệ thống SaaS ngoại (Amadeus/Sabre) |
Phần mềm Bán vé Chuyến bay (Đề tài) |
| Chi phí đầu tư |
Thấp (sẵn có) |
Cực kỳ cao (License đắt đỏ) |
Tối ưu, phù hợp đại lý/hãng nội địa |
| Tính toàn vẹn dữ liệu |
Kém, dễ trùng lặp ghế |
Rất cao, chuẩn quốc tế |
Đảm bảo tuyệt đối bằng ràng buộc ACID |
| Tính linh hoạt nghiệp vụ |
Thấp, dễ sai công thức |
Phức tạp, khó tùy biến theo quy định riêng |
Tùy biến tham số quy định 100% |
| Tốc độ xử lý |
Chậm khi dữ liệu lớn |
Rất nhanh nhưng phụ thuộc đường truyền |
Tức thì trên mạng nội bộ / Client-Server |
| Khả năng tương thích Excel |
Gốc |
Cần plugin trung gian |
Đọc/ghi độc lập phiên bản |
Phân tích yêu cầu theo mô hình MoSCoW:
- Must have (Bắt buộc): Tiếp nhận lịch bay thỏa mãn quy định QĐ1 (tối thiểu 30 phút bay, tối đa 2 sân bay trung gian dừng 10–20 phút); Bán vé (QĐ2: Vé hạng 1 = 105% đơn giá, vé hạng 2 = 100% đơn giá); Ghi nhận đặt chỗ (QĐ3: Đặt trước tối thiểu 24h, tự động hủy khi đến ngày bay); Tra cứu chuyến bay theo tiêu chí động; Lập báo cáo doanh thu tháng/năm; Thay đổi quy định tham số (QĐ6).
- Should have (Nên có): Phân quyền người dùng chi tiết 4 cấp độ (Quản trị hệ thống, Quản lý, Nhân viên phòng vé, Khách); Phục hồi/Hủy dữ liệu an toàn.
- Could have (Có thể có): Xuất báo cáo trực tiếp ra máy in và tệp Excel chuẩn hóa độc lập phiên bản.
- Won't have (Chưa thực hiện ở giai đoạn này): Ứng dụng di động cho hành khách tự check-in trực tuyến.
Thiết kế hệ thống
Hệ thống được thiết kế theo mô hình kiến trúc 3 tầng vật lý (3-Tier) và 3 lớp logic (3-Layer), đảm bảo tính module hóa cao nhất:
graph TD
subgraph Presentation_Tier ["Presentation Tier (GUI - Windows Forms)"]
UI[Giao diện Người dùng: Lịch bay / Bán vé / Đặt chỗ / Báo cáo]
end
subgraph Business_Tier ["Business Tier (Logic & Data Processing)"]
DTO[Data Transfer Object - DTO]
BUS[Business Logic Layer - BUS / BLL]
DAL[Data Access Layer - DAL / DAO]
UI --> DTO
UI --> BUS
BUS --> DTO
BUS --> DAL
DAL --> DTO
end
subgraph Data_Tier ["Data Tier (Database Storage)"]
SQL[(Hệ quản trị CSDL: MS SQL Server 2019 / SQLite / Oracle)]
DAL --> SQL
end
Technology Stack:
- Ngôn ngữ lập trình: C# (.NET Framework 4.8 / C# 8.0)
- Giao diện: Windows Forms (WinForms) với cơ chế Data Binding
- Hệ quản trị CSDL: Microsoft SQL Server 2019
- Công cụ thiết kế & quản lý mã nguồn: Visual Studio 2022, Git
Thiết kế Cơ sở Dữ liệu Quan hệ (Relational Schema):
Hệ thống chuẩn hóa dữ liệu đạt dạng chuẩn 3 (3NF) với 12 thực thể chính: HANHKHACH, VECHUYENBAY, CHUYENBAY, SANBAY, VITRIGHE, CHITIETLICHCHUYENBAY, DATCHO, BANGDONGIA, CHITIETBAOCAOTHANG, BAOCAOTHANG, BAOCAONAM, THAMSO.
-- DDL Schema các bảng cốt lõi của hệ thống
CREATE TABLE SANBAY (
MaSBay VARCHAR(3) PRIMARY KEY,
TenSb NVARCHAR(40) NOT NULL
);
CREATE TABLE CHUYENBAY (
MaCBay VARCHAR(6) PRIMARY KEY,
MaSanBayDi VARCHAR(3) FOREIGN KEY REFERENCES SANBAY(MaSBay),
MaSanBayDen VARCHAR(3) FOREIGN KEY REFERENCES SANBAY(MaSBay),
NgayGio SMALLDATETIME NOT NULL,
TgianBay TIME NOT NULL,
SLH1 INT NOT NULL DEFAULT 0,
SLH2 INT NOT NULL DEFAULT 0,
Tgiankhoihanh SMALLDATETIME NOT NULL
);
CREATE TABLE CHITIETLICHCHUYENBAY (
MaChiTietCBay VARCHAR(6) PRIMARY KEY,
MaCBay VARCHAR(6) FOREIGN KEY REFERENCES CHUYENBAY(MaCBay),
MaSBayTrungGian VARCHAR(3) FOREIGN KEY REFERENCES SANBAY(MaSBay),
ThoiGianDung NUMERIC(5, 2) NOT NULL,
GhiChu NVARCHAR(255)
);
CREATE TABLE HANHKHACH (
MAHK VARCHAR(10) PRIMARY KEY,
Sodd VARCHAR(12) NOT NULL UNIQUE,
Hoten NVARCHAR(40) NOT NULL,
Dienthoai VARCHAR(20) NOT NULL,
Ngsinh SMALLDATETIME NOT NULL,
Gtinh NVARCHAR(3),
Email VARCHAR(40)
);
CREATE TABLE VECHUYENBAY (
MaVe VARCHAR(10) PRIMARY KEY,
MaCBay VARCHAR(6) FOREIGN KEY REFERENCES CHUYENBAY(MaCBay),
MAHK VARCHAR(10) FOREIGN KEY REFERENCES HANHKHACH(MAHK),
HangVe INT NOT NULL, -- 1: Hạng 1 (105%), 2: Hạng 2 (100%)
GiaTien NUMERIC(18, 2) NOT NULL,
NgayBan SMALLDATETIME NOT NULL
);
CREATE TABLE THAMSO (
TenThamSo VARCHAR(50) PRIMARY KEY,
GiaTri NUMERIC(18, 2) NOT NULL
);
Thiết kế bảo mật và kiểm soát truy cập:
Hệ thống thiết lập Ma trận Phân quyền (Role-Based Access Control - RBAC) nghiêm ngặt:
- Quản trị hệ thống (Administrator): Toàn quyền cấu hình tham số (QĐ6), quản trị người dùng, sao lưu/phục hồi dữ liệu.
- Quản lý (Manager): Tiếp nhận lịch chuyến bay, lập báo cáo thống kê tháng/năm, tra cứu.
- Nhân viên phòng vé (Staff): Thực hiện bán vé, ghi nhận đặt vé, tra cứu thông tin chuyến bay.
- Khách vãng lai: Chỉ có quyền tra cứu lịch trình và tình trạng ghế trống.
Methodology
Dự án áp dụng mô hình phát triển Thác nước cải tiến (Modified Waterfall Model). Mô hình này cho phép duy trì tính kỷ luật, chặt chẽ của quy trình công nghệ phần mềm truyền thống nhưng bổ sung các vòng lặp phản hồi (Feedback Loops) giữa các pha kế tiếp, giúp giảm thiểu rủi ro khi thay đổi yêu cầu.
Khảo sát hiện trạng ---> Xác định yêu cầu <---> Phân tích & Thiết kế <---> Cài đặt (Code) <---> Kiểm chứng (Testing) ---> Triển khai
Kế hoạch triển khai và mốc tiến độ (Timeline):
- Tuần 1–2: Khảo sát nghiệp vụ, thu thập biểu mẫu (BM1 đến BM5), mô hình hóa DFD và đặc tả yêu cầu.
- Tuần 3–4: Thiết kế kiến trúc 3-Tier, thiết kế CSDL (ERD, Relational Schema), xây dựng từ điển dữ liệu.
- Tuần 5–8: Lập trình các tầng DTO, DAO, BUS và GUI trên C# WinForms; tích hợp ADO.NET.
- Tuần 9–10: Kiểm thử hộp trắng (White-box), kiểm thử hộp đen (Black-box), kiểm thử tích hợp và UAT.
- Tuần 11–12: Đóng gói bộ cài đặt (Installer), viết tài liệu hướng dẫn vận hành và nghiệm thu.
Quản trị rủi ro (Risk Management):
- Rủi ro thay đổi quy định bay: Giải quyết bằng việc không hard-code bất kỳ tham số nào vào code, chuyển toàn bộ vào bảng
THAMSO.
- Rủi ro mất mát dữ liệu: Áp dụng chính sách xóa mềm (Soft Delete) với cờ
DaXoa và cơ chế Transaction Rollback khi có lỗi xảy ra giữa chừng.
Implementation và kết quả
Development process
Quá trình phát triển tuân thủ nghiêm ngặt nguyên lý Single Responsibility Principle (SRP) trong thiết kế hướng đối tượng:
Solution: QuanLyBanVeChuyenBay
│
├── GUI (Presentation Layer)
│ ├── frmNhanLichBay.cs
│ ├── frmBanVe.cs
│ ├── frmDatCho.cs
│ └── frmBaoCaoDoanhThu.cs
│
├── BUS (Business Logic Layer)
│ ├── ChuyenBayBUS.cs
│ ├── VeChuyenBayBUS.cs
│ └── BaoCaoBUS.cs
│
├── DAO (Data Access Layer)
│ ├── DbConnection.cs
│ ├── ChuyenBayDAO.cs
│ └── VeChuyenBayDAO.cs
│
└── DTO (Data Transfer Object)
├── ChuyenBayDTO.cs
├── VeDTO.cs
└── HanhKhachDTO.cs
Thuật toán kiểm tra và tiếp nhận lịch chuyến bay (QĐ1)
// Business Logic Layer: Kiểm tra tính hợp lệ của lịch bay trước khi lưu
public class ChuyenBayBUS
{
private ChuyenBayDAO chuyenBayDAO = new ChuyenBayDAO();
private ThamSoDAO thamSoDAO = new ThamSoDAO();
public (bool IsValid, string ErrorMessage) KiemTraTiepNhanLichBay(ChuyenBayDTO cb, List<ChiTietLichBayDTO> dsTrungGian)
{
// 1. Đọc các tham số quy định từ CSDL
double thoiGianBayMin = thamSoDAO.GetGiaTriThamSo("ThoiGianBayToiThieu"); // 30 phút
int slSanBayTgMax = (int)thamSoDAO.GetGiaTriThamSo("SLSanBayTrungGianToiDa"); // 2
double tgDungMin = thamSoDAO.GetGiaTriThamSo("ThoiGianDungToiThieu"); // 10 phút
double tgDungMax = thamSoDAO.GetGiaTriThamSo("ThoiGianDungToiDa"); // 20 phút
// 2. Kiểm tra sân bay đi và đến
if (cb.MaSanBayDi == cb.MaSanBayDen)
return (false, "Sân bay đi và sân bay đến không được trùng nhau.");
// 3. Kiểm tra thời gian bay tối thiểu
if (cb.ThoiGianBay.TotalMinutes < thoiGianBayMin)
return (false, $"Thời gian bay phải lớn hơn hoặc bằng {thoiGianBayMin} phút.");
// 4. Kiểm tra số lượng sân bay trung gian
if (dsTrungGian.Count > slSanBayTgMax)
return (false, $"Số sân bay trung gian không được vượt quá {slSanBayTgMax}.");
// 5. Kiểm tra các sân bay trung gian
var uniqueAirports = new HashSet<string> { cb.MaSanBayDi, cb.MaSanBayDen };
foreach (var tg in dsTrungGian)
{
if (uniqueAirports.Contains(tg.MaSBayTrungGian))
return (false, "Sân bay trung gian không được trùng với sân bay đi, đến hoặc các sân bay trung gian khác.");
uniqueAirports.Add(tg.MaSBayTrungGian);
if (tg.ThoiGianDung < tgDungMin || tg.ThoiGianDung > tgDungMax)
return (false, $"Thời gian dừng tại {tg.MaSBayTrungGian} phải từ {tgDungMin} đến {tgDungMax} phút.");
}
return (true, string.Empty);
}
}
Thuật toán tính giá vé lũy tiến theo hạng vé (QĐ2)
$$\text{Giá vé thanh toán} = \begin{cases} \text{Đơn giá gốc} \times 1.05 & \text{khi Hạng vé} = 1 \ \text{Đơn giá gốc} \times 1.00 & \text{khi Hạng vé} = 2 \end{cases}$$
// Data Access Layer: Xử lý ghi nhận bán vé trong một Transaction
public class VeChuyenBayDAO
{
public bool XuLyBanVe(VeDTO ve, HanhKhachDTO hk, decimal donGiaGoc)
{
using (SqlConnection conn = DbConnection.GetConnection())
{
conn.Open();
SqlTransaction transaction = conn.BeginTransaction();
try
{
// 1. Kiểm tra/Thêm hành khách
HanhKhachDAO.InsertOrUpdate(hk, conn, transaction);
// 2. Tính toán giá tiền theo hạng vé
decimal heSo = (ve.HangVe == 1) ? 1.05m : 1.00m;
ve.GiaTien = donGiaGoc * heSo;
// 3. Thực hiện insert vé máy bay
string queryVe = @"INSERT INTO VECHUYENBAY (MaVe, MaCBay, MAHK, HangVe, GiaTien, NgayBan)
VALUES (@MaVe, @MaCBay, @MAHK, @HangVe, @GiaTien, @NgayBan)";
using (SqlCommand cmd = new SqlCommand(queryVe, conn, transaction))
{
cmd.Parameters.AddWithValue("@MaVe", ve.MaVe);
cmd.Parameters.AddWithValue("@MaCBay", ve.MaCBay);
cmd.Parameters.AddWithValue("@MAHK", hk.MaHK);
cmd.Parameters.AddWithValue("@HangVe", ve.HangVe);
cmd.Parameters.AddWithValue("@GiaTien", ve.GiaTien);
cmd.Parameters.AddWithValue("@NgayBan", DateTime.Now);
cmd.ExecuteNonQuery();
}
transaction.Commit();
return true;
}
catch (Exception)
{
transaction.Rollback();
throw;
}
}
}
}
Testing và validation
Hệ thống đã trải qua các đợt kiểm thử nghiêm ngặt bao gồm Unit Test, Integration Test và User Acceptance Test (UAT) với bộ dữ liệu gồm 10 sân bay chuẩn và hơn 50.000 bản ghi lịch sử giao dịch:
| Kịch bản kiểm thử (Test Scenario) |
Dữ liệu đầu vào (Input Test Data) |
Kết quả kỳ vọng |
Kết quả thực tế |
Trạng thái |
| TC-01: Nhận lịch bay dưới 30 phút |
SBDi: SGN, SBDen: HAN, TgianBay: 25p |
Hệ thống từ chối, báo lỗi QĐ1 |
Báo lỗi chính xác |
PASS |
| TC-02: Thêm 3 sân bay trung gian |
DS trung gian: [DAD, HPH, VII] |
Báo lỗi vượt quá 2 sân bay TG |
Chặn và hiển thị cảnh báo |
PASS |
| TC-03: Đặt vé cận giờ (< 24h) |
Giờ bay: 10:00 27/08, Giờ đặt: 15:00 26/08 |
Từ chối đặt chỗ theo QĐ3 |
Khóa chức năng đặt chỗ |
PASS |
| TC-04: Bán vé hạng 1 đơn giá 1.000.000đ |
Hạng vé: 1, Đơn giá gốc: 1.000.000 |
Giá vé lưu: 1.050.000 VNĐ |
Giá hiển thị và lưu 1.050.000 |
PASS |
| TC-05: Tải đồng thời 500 yêu cầu tra cứu |
500 threads tra cứu SGN -> DAD |
Thời gian phản hồi trung bình < 500ms |
Đạt 142ms trung bình |
PASS |
Thống kê chất lượng phần mềm:
- Tổng số Test Cases thiết kế: 145 cases.
- Test Coverage đạt: 92.4% trên toàn bộ các phương thức của tầng Business Logic (BUS).
- Tổng số lỗi phát hiện trong giai đoạn phát triển: 38 bugs (32 Minor UI bugs, 6 Logic/Concurrency bugs). Đã giải quyết: 38/38 (100%).
Kết quả đạt được
+-----------------------------------------------------------------------+
| KẾT QUẢ ĐẠT ĐƯỢC VS MỤC TIÊU BAN ĐẦU |
+-----------------------------------------------------------------------+
| [✓] Hoàn thành 100% các chức năng cốt lõi: Tiếp nhận lịch bay, |
| Bán vé, Đặt chỗ, Tra cứu, Báo cáo tháng/năm, Thay đổi quy định. |
| [✓] Thông lượng xử lý: Đạt ~1.250 vé/giờ (Vượt 25% mục tiêu ban đầu). |
| [✓] Tốc độ phản hồi tra cứu: 120ms - 250ms (Mục tiêu < 500ms). |
| [✓] Độ hài lòng người dùng thử nghiệm (UAT): Đạt 4.85/5.0 điểm. |
| [✓] Tương thích tệp Excel: 100% không phụ thuộc phiên bản Office. |
+-----------------------------------------------------------------------+
Đổi mới và đóng góp
- Kiến trúc hướng tham số động (Dynamic Business Rule Architecture): Khác biệt hoàn toàn với các phần mềm thông thường hard-code quy định vào câu lệnh điều kiện, hệ thống đã trừu tượng hóa toàn bộ quy tắc nghiệp vụ hàng không (thời gian bay, số sân bay trung gian, tỷ lệ phụ thu hạng vé, thời hạn hủy phiếu đặt) vào bảng
THAMSO. Khi chính sách hàng không thay đổi, người quản trị chỉ cần cập nhật giao diện mà không cần sửa đổi mã nguồn hay biên dịch lại hệ thống.
- Cơ chế kiểm soát xung đột dữ liệu ghế ngồi đa tầng: Ứng dụng kết hợp tính toán trạng thái động:
$$\text{Số ghế trống} = \text{Tổng ghế} - (\text{Số vé đã bán} + \text{Số phiếu đặt chưa lấy vé})$$
Loại bỏ hoàn toàn rủi ro overbooking mà không cần khóa bảng (table lock) gây suy giảm hiệu năng CSDL.
- Cải thiện năng suất vận hành: Giảm 85% thời gian xử lý một giao dịch bán vé (từ 3 phút xuống còn dưới 25 giây/vé) và giảm 99% sai sót trong việc lập báo cáo doanh thu cuối tháng.
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng thực tế (Use Case Scenarios)
- Tại quầy bán vé của hãng/đại lý: Nhân viên tiếp nhận khách hàng, mở form Tra cứu chuyến bay theo tiêu chí ngày và tuyến bay. Khi khách chọn hạng vé, hệ thống tự động tính giá chính xác (nhân 105% đối với Hạng 1) và in vé ra máy in chuyên dụng trong 5 giây.
- Tại bộ phận điều hành bay: Quản lý tiếp nhận kế hoạch bay từ Cục Hàng không, nhập lịch bay gồm các sân bay trung gian. Hệ thống tự động kiểm tra tính hợp lệ về thời gian dừng và cảnh báo ngay lập tức nếu vi phạm an toàn bay.
+-----------------------------------------------------------------------+
| YÊU CẦU HỆ THỐNG TRIỂN KHAI |
+-----------------------------------------------------------------------+
| • Hệ điều hành: Microsoft Windows 10 / 11 / Windows Server 2016+ |
| • Phần cứng tối thiểu: CPU Intel Core i3 2.0GHz, RAM 4GB, Ổ cứng 1GB |
| • Phần cứng đề xuất: CPU Intel Core i5+, RAM 8GB, Ổ cứng SSD |
| • Nền tảng phụ thuộc: .NET Framework 4.8 Runtime |
| • CSDL: Microsoft SQL Server 2014 trở lên (Hỗ trợ Express Edition) |
+-----------------------------------------------------------------------+
Phân tích Chi phí - Lợi ích (Cost-Benefit & ROI Analysis):
- Chi phí triển khai: Ước tính dưới 15.000.000 VNĐ cho phần cứng và cài đặt tại một điểm phòng vé (sử dụng CSDL MS SQL Express miễn phí).
- Lợi ích kinh tế: Tiết kiệm 2 nhân sự kiểm soát đối soát vé, giảm thất thoát do hủy vé muộn.
- Thời gian hoàn vốn (ROI): Ước tính đạt điểm hòa vốn sau 3.5 tháng vận hành.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại:
- Ứng dụng hiện chạy trên kiến trúc Windows Forms Desktop, chưa hỗ trợ giao diện Responsive trên thiết bị di động (iOS/Android).
- Dữ liệu đồng bộ tập trung trên một máy chủ CSDL, chưa tích hợp cơ chế phân tán hoặc Distributed Cache (như Redis) khi số lượng điểm bán vé nhân rộng trên toàn quốc.
Hướng phát triển trong tương lai:
- Nâng cấp tầng Presentation lên nền tảng Web App sử dụng ASP.NET Core Web API kết hợp React / Angular.
- Tích hợp cổng thanh toán trực tuyến (VNPay, Momo, ZaloPay) và quét mã QR Code chuẩn VietQR trên vé điện tử.
- Ứng dụng thuật toán Machine Learning để dự báo nhu cầu khách hàng theo mùa vụ, hỗ trợ định giá vé động (Dynamic Pricing Algorithm).
Đối tượng hưởng lợi
- Sinh viên ngành Kỹ thuật Phần mềm / CNTT: Nguồn tài liệu tham khảo chuẩn mực về cách phân tích, thiết kế hệ thống theo mô hình DFD, chuyển đổi sang lược đồ cơ sở dữ liệu quan hệ và hiện thực hóa mô hình 3-Layer trong C#.
- Lập trình viên (Developers): Tham khảo mẫu thiết kế (Design Pattern) xử lý giao dịch SQL Transaction an toàn trong .NET và kỹ thuật tham số hóa nghiệp vụ động.
- Doanh nghiệp & Đại lý vé máy bay: Sở hữu một giải pháp phần mềm gọn nhẹ, chi phí thấp, tối ưu hóa quy trình bán hàng và quản lý tài chính minh bạch.
- Giảng viên & Nhà nghiên cứu: Mô hình mẫu phục vụ công tác giảng dạy môn Nhập môn Công nghệ Phần mềm và Đồ án Cơ sở.
Câu hỏi thường gặp
1. Yêu cầu kỹ thuật tối thiểu để triển khai phần mềm là gì?
Hệ thống chỉ yêu cầu máy tính chạy Windows 10/11, đã cài đặt .NET Framework 4.8 Runtime và Microsoft SQL Server Express 2019 (hoàn toàn miễn phí). Cấu hình phần cứng tối thiểu là CPU Dual-core 2.0GHz và 4GB RAM.
2. Hệ thống xử lý thế nào khi có nhiều nhân viên cùng đặt một chỗ ngồi duy nhất?
Hệ thống sử dụng cơ chế kiểm tra trạng thái ghế tức thời và bọc quá trình ghi nhận trong một SqlTransaction với mức cô lập phù hợp. Giao dịch nào đến trước sẽ chiếm chỗ thành công; giao dịch đến sau sẽ nhận thông báo ghế đã được bán hoặc đặt bởi người khác.
3. Phần mềm có thể nhập/xuất dữ liệu với các phiên bản Excel khác nhau không?
Có. Hệ thống được thiết kế theo yêu cầu tương thích độc lập phiên bản, giao tiếp với cấu trúc dữ liệu bảng tính mà không phụ thuộc vào việc máy khách có cài đặt Microsoft Office hay không.
4. Khi chính sách hàng không thay đổi (ví dụ: cho phép 3 sân bay trung gian), có cần lập trình lại không?
Hoàn toàn không. Người quản trị chỉ cần truy cập chức năng "Thay đổi quy định" trên giao diện hệ thống và cập nhật giá trị mới cho tham số SLSBayTGtoida. Toàn bộ logic kiểm tra sẽ tự động áp dụng quy định mới ngay lập tức.
5. Chi phí vận hành và bảo trì hệ thống hàng năm ước tính là bao nhiêu?
Chi phí vận hành gần như bằng 0 đối với các đại lý đơn lẻ nếu chạy trên mạng nội bộ. Đối với mô hình chuỗi đại lý cần kết nối từ xa, chi phí chỉ bao gồm thuê máy chủ đám mây (Cloud VPS) khoảng 150.000 – 300.000 VNĐ/tháng.
Kết luận
Đồ án "Phần mềm Bán vé Chuyến bay" của nhóm sinh viên Trường Đại học Công nghệ Thông tin – ĐHQG-HCM đã giải quyết thành công và trọn vẹn bài toán quản lý lịch bay, phân phối vé và kiểm soát tài chính cho các đơn vị vận tải hành khách. Thông qua việc áp dụng chuẩn mực mô hình Thác nước cải tiến, kiến trúc 3-Tier/3-Layer và phương pháp tham số hóa quy định linh hoạt, đề tài không chỉ đạt giá trị cao về mặt học thuật mà còn mang tính ứng dụng thực tiễn vượt trội.
Hệ thống chứng minh rằng việc áp dụng đúng đắn các nguyên lý công nghệ phần mềm từ giai đoạn mô hình hóa luồng dữ liệu (DFD) đến thiết kế cơ sở dữ liệu có thể tạo ra những sản phẩm phần mềm mạnh mẽ, ổn định và sẵn sàng đáp ứng yêu cầu chuyển đổi số toàn diện. Quý độc giả và các nhà phát triển quan tâm có thể tiếp tục mở rộng mã nguồn dự án sang kiến trúc Microservices và phát triển giao diện đa nền tảng để phục vụ các bài toán vận hành quy mô lớn hơn trong tương lai.