📘 Manual de Usuario - Gestor Aeropuerto++
Tabla de Contenidos
- Introducción
- Instalación y Compilación
- Estructura del Proyecto
- Menú Principal
- Guía de Uso por Opción
- Formatos de Archivos
- Reportes y Visualización
- Ejemplos de Uso
- Solución de Problemas
Introducción
Gestor Aeropuerto++ es un sistema completo de gestión aeroportuaria que permite administrar:
- ✈️ Aviones (disponibles y en mantenimiento)
- 👥 Pasajeros (registro y consulta)
- 🎒 Equipaje (gestión de carga)
- 📊 Reportes visuales (con Graphviz)
El sistema implementa varias estructuras de datos avanzadas:
- Listas Circulares Dobles para aviones
- Colas (FIFO) para registro de pasajeros
- Pilas (LIFO) para equipaje
- Listas Doblemente Enlazadas para pasajeros ordenados
Instalación y Compilación
Requisitos Previos
- Compilador: GCC con C++17 o superior (MSYS64/MinGW en Windows)
- Graphviz: Instalado en el sistema para generar reportes visuales
- Make: Herramienta de compilación (incluida en MSYS64)
Pasos de Compilación
1. Navegar al Directorio del Proyecto
1 | cd C:\Users\[usuario]\Documents\USAC\201318644_EDD_Practica |
2. Limpiar Compilaciones Anteriores (Opcional)
1 | make clean |
3. Compilar el Proyecto
1 | make |
4. Ejecutar el Programa
1 | make run |
O directamente:
1 | .\aeropuerto.exe |
Salida Esperada de Compilación
1 | g++ -I include/ -Wall -g -o aeropuerto.exe [archivos fuente...] |
Si la compilación es exitosa, se crea el archivo aeropuerto.exe.
Estructura del Proyecto
1 | 201318644_EDD_Practica/ |
Menú Principal
Cuando ejecutas el programa, verás el siguiente menú:
1 | ************ GESTOR AEROPUERTO++ ************ |
Cada opción realiza una función específica. Ingresa el número (1-6) y presiona Enter.
Guía de Uso por Opción
1️⃣ Carga de Aviones
Descripción: Carga los datos de aviones desde un archivo JSON.
Pasos:
- Selecciona opción
1 - Ingresa la ruta del archivo JSON:
1
Ingrese la ruta del archivo JSON de aviones: data/aviones.json
- El sistema cargará todos los aviones en dos listas:
- Aviones Disponibles: Listos para volar
- Aviones en Mantenimiento: No disponibles
Formato del archivo: Ver sección Formatos de Archivos
Validaciones:
- ✓ Verifica que el archivo exista
- ✓ Verifica que sea un JSON válido
- ✓ Separa automáticamente por estado
Ejemplo de mensaje de éxito:
1 | Archivo cargado correctamente. |
2️⃣ Carga de Pasajeros
Descripción: Carga los pasajeros que llegan al aeropuerto en la cola de registro.
Pasos:
- Selecciona opción
2 - Ingresa la ruta del archivo JSON:
1
Ingrese la ruta del archivo JSON de pasajeros: data/pasajeros.json
- Los pasajeros se agregarán a la cola de registro (FIFO)
Importante:
- Los pasajeros se procesan en el orden que llegaron
- La cola respeta el principio FIFO (Primero en Entrar, Primero en Salir)
- No se pueden consultar aquí, solo se registran
Estructura esperada: Ver sección Formatos de Archivos
3️⃣ Carga de Movimientos
Descripción: Procesa movimientos de pasajeros y cambios de estado de aviones.
Pasos:
- Selecciona opción
3 - Ingresa la ruta del archivo de movimientos:
1
Ingrese la ruta del archivo de movimientos: data/Cambios.txt
- El sistema procesa cada línea del archivo
Tipos de Movimientos:
a) Ingreso de Equipajes (IngresoEquipajes)
1 | IngresoEquipajes; |
- Desencola el siguiente pasajero de la cola de registro
- Lo añade a la lista de pasajeros (ordenada por vuelo y asiento)
- Si tiene equipaje facturado, lo añade a la pila de equipaje
b) Mantenimiento de Aviones
1 | MantenimientoAviones,Ingreso,N12345; |
Ingreso a Mantenimiento:
- Mueve el avión de “Disponibles” a “Mantenimiento”
- Ejemplo:
MantenimientoAviones,Ingreso,N12345;
Salida de Mantenimiento:
- Mueve el avión de “Mantenimiento” a “Disponibles”
- Ejemplo:
MantenimientoAviones,Salida,N12345;
Validaciones:
- El número de registro debe existir
- Se muestra un mensaje de confirmación
Ejemplo de archivo completo:
1 | IngresoEquipajes; |
4️⃣ Consultar Pasajero
Descripción: Busca la información completa de un pasajero específico.
Pasos:
- Selecciona opción
4 - Ingresa el número de pasaporte:
1
Ingrese el numero de pasaporte: P123456789
- Se muestra toda la información del pasajero si existe
Información Mostrada:
1 | === Información del Pasajero === |
Casos:
- ✓ Encontrado: Se muestra toda la información
- ✗ No encontrado: Mensaje “Pasajero no encontrado.”
Nota: Solo se pueden consultar pasajeros que hayan pasado por la opción “Carga de Movimientos” (opción 3).
5️⃣ Visualizar Reportes
Descripción: Genera y muestra reportes visuales de todas las estructuras de datos.
Menú de Reportes:
1 | ************ REPORTES ************ |
Reporte 1: Aviones Disponibles
- Estructura: Lista Circular Doble
- Visualización: Diagrama de nodos conectados circularmente
- Información: Número de registro, modelo, capacidad
- Archivo generado:
reports/aviones_disponibles.png
Reporte 2: Aviones en Mantenimiento
- Estructura: Lista Circular Doble
- Visualización: Diagrama de nodos conectados circularmente
- Información: Número de registro, modelo, capacidad
- Archivo generado:
reports/aviones_mantenimiento.png
Reporte 3: Cola de Registro
- Estructura: Cola (FIFO)
- Visualización: Flujo horizontal (CABEZA → … → FIN)
- Información: Nombres de pasajeros en orden de llegada
- Archivo generado:
reports/cola_registro.png
Reporte 4: Pila de Equipaje
- Estructura: Pila (LIFO)
- Visualización: Flujo vertical (CIMA → … → BASE)
- Información: Pasaporte del propietario, cantidad de piezas
- Archivo generado:
reports/pila_equipaje.png
Reporte 5: Lista de Pasajeros
- Estructura: Lista Doblemente Enlazada Ordenada
- Visualización: Diagrama bidireccional (← → )
- Información: Nombre, vuelo, asiento
- Archivo generado:
reports/lista_pasajeros.png - Ordenamiento: Por vuelo, luego por asiento
Proceso de Generación:
- El programa genera el código DOT (formato Graphviz)
- Invoca a Graphviz para convertirlo a PNG
- Abre automáticamente la imagen en el visor predeterminado
6️⃣ Salir
Descripción: Finaliza el programa.
Pasos:
- Selecciona opción
6 - Se muestra: “Saliendo del sistema EDD…”
- Se libera toda la memoria
- Se cierra el programa
Formatos de Archivos
Archivo de Aviones (JSON)
Ubicación recomendada: data/aviones.json
Formato:
1 | [ |
Campos Requeridos:
vuelo(string): Código del vuelo (ej: “A100”)numero_de_registro(string): Matrícula del avión (ej: “N12345”)modelo(string): Modelo del aviónfabricante(string): Fabricanteano_fabricacion(integer): Año de construccióncapacidad(integer): Número de pasajerospeso_max_despliegue(integer): Peso máximo en kgaerolinea(string): Nombre de la aerolíneaestado(string): “Disponible” o “Mantenimiento”
Validaciones:
- ✓ JSON válido y bien formado
- ✓ Todos los campos obligatorios presentes
- ✓ El estado debe ser “Disponible” o “Mantenimiento”
Archivo de Pasajeros (JSON)
Ubicación recomendada: data/pasajeros.json
Formato:
1 | [ |
Campos Requeridos:
nombre(string): Nombre completo del pasajeronacionalidad(string): País de origennumero_de_pasaporte(string): Pasaporte único (identificador)vuelo(string): Código del vuelo (ej: “A100”)asiento(integer): Número de asientodestino(string): Ciudad de destinoorigen(string): Ciudad de origenequipaje_facturado(integer): Cantidad de piezas de equipaje (0 o más)
Validaciones:
- ✓ Número de pasaporte único
- ✓ Asiento >= 1
- ✓ Equipaje facturado >= 0
Archivo de Movimientos (TXT)
Ubicación recomendada: data/Cambios.txt
Formato:
1 | IngresoEquipajes; |
Reglas:
- Una línea por movimiento
- Cada línea termina con punto y coma (
;) - IngresoEquipajes: Sin parámetros adicionales
- MantenimientoAviones: Formato
MantenimientoAviones,Acción,NumeroRegistro- Acciones:
Ingreso(a mantenimiento) oSalida(de mantenimiento) - Número de registro debe existir
- Acciones:
Ejemplo Completo:
1 | IngresoEquipajes; |
Reportes y Visualización
Tecnología Utilizada: Graphviz
El sistema usa Graphviz para generar visualizaciones profesionales de las estructuras de datos.
Instalación de Graphviz
En Windows (MSYS64)
1 | pacman -S mingw-w64-x86_64-graphviz |
Verificar Instalación
1 | dot --version |
Debe mostrar algo como:
1 | dot - graphviz version ... (...) |
Estructura de Archivos Generados
Los reportes se guardan automáticamente en reports/:
.dot- Código fuente de Graphviz.png- Imagen final (se abre automáticamente)
Interpretación de Reportes
Listas Circulares Dobles (Aviones)
1 | [N12345: Boeing 737] <-> [N54321: Airbus A320] <-> ... |
- Las flechas bidireccionales muestran la naturaleza doble de la lista
- El círculo indica que al final se vuelve al inicio
Cola FIFO (Pasajeros en Registro)
1 | CABEZA -> [John Doe] -> [Jane Smith] -> [Carlos] -> FIN |
- Los pasajeros se procesan de izquierda a derecha
- Primero en entrar, primero en salir
Pila LIFO (Equipaje)
1 | CIMA |
- El equipaje más reciente está en la cima
- Último en entrar, primero en salir
Lista Doble Ordenada (Pasajeros)
1 | [John: A100, 12] <-> [Carlos: A100, 15] <-> [Jane: A200, 5] |
- Ordenada primero por vuelo (A100, A200, …)
- Luego por asiento (12, 15, … dentro de cada vuelo)
- Conexiones bidireccionales
Ejemplos de Uso
Escenario Completo: Un Día en el Aeropuerto
Paso 1: Cargar Aviones
1 | Seleccione una opcion: 1 |
Paso 2: Cargar Pasajeros
1 | Seleccione una opcion: 2 |
Paso 3: Procesar Movimientos
1 | Seleccione una opcion: 3 |
Paso 4: Consultar Pasajero
1 | Seleccione una opcion: 4 |
Paso 5: Generar Reportes
1 | Seleccione una opcion: 5 |
Paso 6: Salir
1 | Seleccione una opcion: 6 |
Ejemplo de Búsqueda Fallida
1 | Seleccione una opcion: 4 |
Errores Comunes
Error: Archivo No Encontrado
1 | Seleccione una opcion: 1 |
Solución: Verifica la ruta del archivo. Usa rutas relativas desde la carpeta raíz del proyecto (ej: data/aviones.json).
Error: JSON Inválido
1 | Error en formato JSON |
Solución: Verifica que el archivo JSON esté bien formado. Usa un validador JSON en línea si es necesario.
Error: Avión No Encontrado
1 | Avion N99999 no encontrado |
Solución: Verifica que el número de registro existe en la lista de aviones. Usa los números de registro del archivo de aviones.
Solución de Problemas
P: El programa no compila
R:
- Verifica que tengas instalado GCC con C++17
- Asegúrate de que
makeestá disponible - Intenta
make cleanseguido demake
P: Las imágenes de Graphviz no se abren
R:
- Verifica que Graphviz está instalado:
dot --version - En Windows, instala con:
pacman -S mingw-w64-x86_64-graphviz - Las imágenes se generan en
reports/
P: No puedo encontrar un pasajero
R:
- El pasajero debe haber sido procesado con “Carga de Movimientos”
- Verifica que el número de pasaporte es exacto (distingue mayúsculas/minúsculas)
- No se pueden consultar pasajeros que están en la cola
P: Se perdió la memoria al salir
R:
- Es normal. El programa libera toda la memoria automáticamente.
- Si necesitas guardar datos, modifica el programa para exportar a JSON
P: Los reportes muestran estructuras vacías
R:
- Asegúrate de haber cargado los datos en el orden correcto
- Verifica que los archivos contengan datos válidos
- Algunos reportes pueden estar vacíos si no hay datos (ej: mantenimiento vacío)
P: Números de asiento duplicados
R:
- Es válido tener asientos duplicados en diferentes vuelos
- La lista ordena por vuelo primero, luego por asiento
- Ejemplo: A100-12 y A101-12 son válidos
Notas Importantes
Sobre la Privacidad de Datos
Este es un sistema educativo. Los datos de ejemplo son ficticios.
Sobre el Rendimiento
- El sistema está optimizado para aeropuertos medianos
- Con más de 10,000 pasajeros simultáneos, considera optimizaciones
Sobre la Persistencia de Datos
El programa NO guarda datos entre ejecuciones. Todos los datos se pierden al cerrar.
Sobre las Estructuras de Datos
1 | LISTAS CIRCULARES DOBLES (Aviones) |
Contacto y Soporte
Para problemas técnicos o mejoras sugeridas:
- Revisa el archivo
README.mdpara detalles técnicos - Consulta el código fuente en
src/ - Los headers están en
include/
Última actualización: Diciembre 2025
Versión: 1.0
Desarrollador: 201318644 - Estructura de Datos




