Flight-Booking Reservation System
A comprehensive desktop reservation and seat allocation system built with C# and .NET.
Enterprise · 2021 · Sole Developer
Technology
- C#
- .NET Framework
- WinForms
- SQL Server
- ADO.NET
Overview
An older project, and a good one to point to if you want to see layered desktop architecture without any of the modern web tooling: a C# WinForms flight reservation system backed by SQL Server, handling passenger registration, seat class allocation, and ticket generation.
Shared publicly on GitHub as a reference for that layering pattern and straightforward SQL database connectivity.
Seat allocation is the one part of a booking system that can't just be 'insert a row' — two passengers selecting the same seat in the same cabin class at nearly the same moment is the exact race condition every reservation system has to handle, even a desktop one with a single shared database backing it.
The challenge
Problem: A straightforward 'check if seat is free, then book it' flow has a race window between the check and the write — on a shared SQL Server backend, two near-simultaneous bookings from different terminals could both pass the check before either one commits, resulting in a double-booked seat.
Approach: Used parameterized SQL with a conditional update (the booking write only succeeds if the seat's status is still 'available' at write time, checked and updated in the same statement) instead of a separate read-then-write, closing the race window instead of just narrowing it.
Result: Seat booking became safe under concurrent access without needing a full transaction-isolation redesign — a small, deliberate fix that's easy to miss if you're thinking about a booking system as 'just CRUD.'
Key features
- Interactive seat selection and cabin class tiering (Economy, Business, First)
- Passenger manifest logging and ticket booking verification
- Race-condition-safe seat booking via conditional check-and-update SQL statements
- Flight schedule dispatch, delay management, and route mapping
- SQL Server ADO.NET database operations with parameterized queries