Object-oriented programming project

Airline Reservation System

A desktop airline booking and management application that connects a Flutter interface to a C++ object-oriented backend.

  • C++
  • Flutter
  • Dart
  • FFI

Project overview

Airline Reservation System

01

The problem

An airline booking system has to coordinate passengers, flights, seats, luggage, ticket prices, and several administration levels without mixing responsibilities or losing data.

02

The solution

I created a Windows desktop application with a Flutter interface and a C++ object-oriented backend. Dart FFI connects the interface to the domain layer, while local CSV storage keeps the educational demo self-contained.

03

My responsibilities

  • Modelled passengers, administrators, flights, tickets, seats, and luggage in C++.
  • Applied object-oriented design, inheritance, polymorphism, factory, and singleton patterns.
  • Connected the C++ domain layer to Flutter through a native FFI bridge.
  • Built booking, cancellation, seat-selection, pricing, and administration flows.

04

Main challenges

  • Passing data safely between Dart and the native C++ library.
  • Keeping seat availability and ticket records synchronized after bookings and cancellations.
  • Supporting passenger, administrator, and super-administrator permissions.
  • Packaging a multi-language desktop project with clear local setup steps.

05

How to run it

  1. 01

    Install the requirements

    Use Windows 10 or 11, Flutter with Windows desktop support, Visual Studio 2022 Desktop development with C++, and CMake 3.14 or newer.

    flutter doctor
  2. 02

    Download the project

    Clone the repository or use the Download ZIP button.

    git clone https://github.com/Ahmed-hesham2306/airline-reservation-system.git
    cd airline-reservation-system
  3. 03

    Set local demo passwords

    Choose passwords for the two administrator roles in PowerShell.

    $env:AIRLINE_ADMIN_PASSWORD="choose-a-local-admin-password"
    $env:AIRLINE_SUPER_ADMIN_PASSWORD="choose-a-local-super-admin-password"
  4. 04

    Build the C++ bridge

    CMake builds the native library and places it where the Flutter Windows runner can load it.

    cmake -S cpp_src -B cpp_src/build -G "Visual Studio 17 2022" -A x64
    cmake --build cpp_src/build --config Release
  5. 05

    Launch the desktop app

    Install the Flutter packages and run the Windows target.

    cd flutter_app
    flutter pub get
    flutter run -d windows