Design Airline Management System
| Difficulty: Medium | Source: awesome-low-level-design |
Requirements
- Search flights by source, destination, date
- Book flights, select seats, make payments
- Manage flight schedules, aircraft/crew assignments
- Handle passenger info and baggage
- Support passengers, airline staff, administrators
- Handle cancellations, refunds, flight changes
- Data consistency, concurrent access
- Scalable and extensible
Class Diagram

Classes, Interfaces and Enumerations
| Class/Interface | Description |
|---|---|
| Flight | Flight number, source, destination, departure/arrival times, available seats |
| Aircraft | Tail number, model, total seats |
| Passenger | Id, name, email, phone |
| Booking | Booking number, passenger, flight, seat, price, status |
| Seat | Seat number, type, status |
| Payment | Id, method, amount, status |
| FlightSearch | Search by source, destination, date |
| BookingManager | Singleton; creation/cancellation |
| PaymentProcessor | Singleton; payment processing |
Design Patterns Used
| Pattern | Application |
|---|---|
| Singleton | BookingManager and PaymentProcessor ensure a single point of coordination for bookings and payments |
Code Implementations
| Language | Source Code |
|---|---|
| Java | View on GitHub |
| Python | View on GitHub |
| C++ | View on GitHub |
| C# | View on GitHub |
| Go | View on GitHub |