Design Airline Management System

Difficulty: Medium Source: awesome-low-level-design

Requirements

  1. Search flights by source, destination, date
  2. Book flights, select seats, make payments
  3. Manage flight schedules, aircraft/crew assignments
  4. Handle passenger info and baggage
  5. Support passengers, airline staff, administrators
  6. Handle cancellations, refunds, flight changes
  7. Data consistency, concurrent access
  8. Scalable and extensible

Class Diagram

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