← All projects

Systems · 2025

Flight Management System

A collection of flight‑management tools built in C++ to explore how different data structures impact performance and design.

Timeline 4 months
Role Solo Developer
Stack C++
Status Complete

Problem

Modern systems rely heavily on efficient data handling, and it's not always clear which data structure best supports various operations. Real-world flight management systems must handle tasks such as storing flight records, searching for specific flights, updating schedules, and organizing data for quick retrieval. Different data structures offer different strengths and weaknesses when it comes to speed, memory usage, and ease of performing these operations. This project explores how the choice of data structure impacts the performance, scalability, and responsiveness of a flight management tool when subjected to realistic workloads and highlights why data structure selection is a critical design decision in software engineering.

Approach

This project approaches the problem by building four versions of the flight management tool, each version powered by a distinct underlying data structure. Each section implements the same fundamental operations, distinguished solely by the data structure on which it is built. By holding the functionality constant and varying only the data structure the project isolates how each structure influences performance, organization, and scalability. This parallel design makes it possible to directly observe how structural choices affect the efficiency of common operations, the complexity of maintaining the dataset, and the overall responsiveness of the system as the volume of flight data grows.

Core Operations:

  • Adding and canceling flights
  • Listing all flights
  • Filtering by airline or date
  • Canceling groups of flights
  • Searching for specific flights
  • Modifying flight details

Data Structures:

  • Linked lists
  • Max heaps
  • Hash tables
  • Red black trees

Results

As expected, the implemented operations behaved consistently across all sections despite being backed by different data structures. Performance measurements showed that each structure introduced predictable variations in runtime and memory usage. The uniformity of results confirms that the shared operational interface was correctly abstracted, and that differences in underlying representation did not affect correctness, only efficiency characteristics.

  • Linked lists · Simplest structure resulting in mediocre to poor performance all around
  • Max heaps · Higher performance than linked lists with excellent cache locality
  • Hash tables · Very high search/insert/delete efficiency, however greater memory costs
  • Red black trees · Guaranteed search/insert/delete efficiency & great when sorted order required