Sistema de gestión y análisis de rutas de transporte público desarrollado en C++ con Qt6. Permite gestionar estaciones, calcular rutas óptimas mediante diversos algoritmos de grafos, y generar reportes detallados.
GraphRoute es una aplicación de escritorio que permite gestionar la red de transporte público. El sistema utiliza estructuras de datos avanzadas (árboles binarios de búsqueda y grafos) para almacenar y analizar la información de estaciones, rutas y conexiones.
- Agregar estaciones: Clic en "Agregar Estación" y luego en el mapa
- Editar estaciones: Doble clic en una estación para cambiar su nombre
- Mover estaciones: Activar modo "Agregar Estación" y luego arrastrar las estaciones existentes en el mapa
- Eliminar estaciones: Seleccionar y presionar "Eliminar Estación"
- Agregar rutas: Clic en "Agregar Ruta", luego seleccionar origen y destino
- Editar rutas: Doble clic en una ruta para modificar su peso (tiempo)
- Eliminar rutas: Seleccionar y presionar "Eliminar Ruta"
- Dijkstra: Calcula la ruta más corta desde el origen a todos los nodos, muestra solo la ruta al destino seleccionado
- Floyd-Warshall: Construye una matriz de costos mínimos y determina la ruta óptima entre dos estaciones
- BFS (Breadth-First Search): Recorrido en amplitud del grafo
- DFS (Depth-First Search): Recorrido en profundidad del grafo
- Kruskal (MST): Árbol de expansión mínima usando Union-Find
- Prim (MST): Árbol de expansión mínima desde un nodo inicial
- Recorridos: In-Order, Pre-Order, Post-Order
- Visualización: Mostrar recorridos en diálogo
- Exportación: Exportar todos los recorridos a
recorridos_rutas.txt - Consulta por ruta: Ordenar las estaciones que forman parte de una ruta según el tipo de recorrido del ABB seleccionado
- Cargar cierres: Cargar rutas cerradas desde
cierres.txt - Aplicar/desactivar: Checkbox para activar o desactivar cierres
- Redirección automática: Los algoritmos evitan automáticamente las rutas cerradas cuando están activos
- Visualización: Las rutas cerradas se muestran en amarillo (línea punteada)
- Generación automática: Crear reporte completo en
reportes.txt - Contenido: Información general, estaciones ordenadas alfabéticamente, rutas detalladas, estadísticas
- Carga automática: Los datos se cargan automáticamente al iniciar la aplicación
- Guardado automático: Los datos se guardan automáticamente al cerrar la aplicación
- Guardado manual: Botón para guardar datos en cualquier momento
- CMake 3.14 o superior
- Qt6 (módulo Widgets)
- Compilador C++17 compatible (GCC, Clang, MSVC)
git clone <url-del-repositorio>
cd GraphRoute
mkdir build
cd build
cmake ..
make
./GraphRoutegit clone <url-del-repositorio>
cd GraphRoute
mkdir build
cd build
cmake .. -DCMAKE_PREFIX_PATH=C:/Qt/6.x.x/msvc2019_64
cmake --build . --config Release
Release\GraphRoute.exeNota: Ajusta la ruta de Qt según tu instalación. Si Qt está en el PATH, puedes omitir -DCMAKE_PREFIX_PATH.
git clone <url-del-repositorio>
cd GraphRoute
mkdir build
cd build
cmake .. -DCMAKE_PREFIX_PATH=/path/to/Qt/6.x.x/macos
make
./GraphRouteNota: Si Qt fue instalado con Homebrew, la ruta típica es /opt/homebrew/opt/qt@6 o /usr/local/opt/qt@6.
La aplicación consta de:
- Mapa central: Visualización interactiva de la red de transporte
- Panel de control lateral: Organizado en 4 pestañas
- Barra de herramientas superior:
- Menú hamburguesa (☰): Mostrar/ocultar el panel de control lateral
- Reiniciar Vista: Restaurar la vista inicial del mapa (zoom y posición)
- Ayuda: Abre un diálogo con información rápida sobre el uso de la aplicación
- Barra de estado: Mensajes informativos
- Estación Origen: Combo para seleccionar estación de inicio
- Estación Destino: Combo para seleccionar estación de destino
- Aplicar cierres de vía: Checkbox para activar/desactivar cierres
- Calcular Ruta Más Corta: Seleccionar algoritmo (Dijkstra/Floyd) y presionar "Calcular Ruta"
- Visualizar Grafo: Seleccionar algoritmo (BFS/DFS/MST Kruskal/MST Prim) y presionar "Visualizar"
- Mostrar Recorrido: Seleccionar tipo (In-Order/Pre-Order/Post-Order) y presionar "Mostrar Recorrido"
- Exportar Recorridos: Exportar todos los recorridos a
recorridos_rutas.txt - Consultar Estaciones por Ruta: Ordenar estaciones de una ruta según el tipo de recorrido
- Agregar Estación: Activar modo, hacer clic en el mapa, ingresar nombre
- Agregar Ruta: Activar modo, seleccionar origen y destino, ingresar peso
- Eliminar Estación: Seleccionar estación y presionar botón
- Eliminar Ruta: Seleccionar ruta y presionar botón
- Cargar Datos: Cargar manualmente desde archivos (se carga automáticamente al iniciar)
- Guardar Datos: Guardar manualmente (se guarda automáticamente al cerrar)
- Cargar cierres.txt: Cargar archivo de cierres de vía
- Quitar cierres: Eliminar todos los cierres cargados
- Generar reportes.txt: Crear reporte completo
- Editar estación: Doble clic en una estación para cambiar su nombre
- Editar ruta: Doble clic en una ruta para modificar su peso
- Mover estaciones: Activar modo "Agregar Estación" y luego arrastrar las estaciones existentes en el mapa
- Zoom y navegación: El mapa permite zoom y pan (usar rueda del mouse y arrastrar)
- Reiniciar vista: Botón en la barra de herramientas para restaurar la vista inicial
- Rutas calculadas: Se muestran en verde-aqua en el mapa
- Estaciones visitadas: Se colorean en verde-aqua durante visualizaciones
- Rutas cerradas: Se muestran en amarillo (línea punteada) cuando los cierres están activos
- Rutas normales: Se muestran en fucsia
La aplicación utiliza los siguientes archivos de texto (ubicados en el directorio raíz del proyecto):
Formato: id,nombre,x,y
Almacena información de las estaciones o paradas de autobuses.
Formato: id1,id2,peso (peso = tiempo en minutos)
Almacena la red de transporte (nodos y conexiones).
Formato: id1,id2 (una línea por ruta cerrada)
Lista los tramos de rutas cerradas.
Generado automáticamente al exportar recorridos del ABB. Incluye los tres tipos de recorrido (In-Order, Pre-Order, Post-Order).
Generado automáticamente al presionar "Generar reportes.txt". Incluye información general, estaciones ordenadas alfabéticamente, rutas y conexiones detalladas, y estadísticas adicionales.
Nota importante: Los archivos .txt incluidos en el repositorio son solo de prueba. El profesor puede reemplazarlos libremente con sus propios datos.
GraphRoute/
├── CMakeLists.txt # Configuración de CMake
├── README.md # Este archivo
├── include/ # Archivos de cabecera (.h)
│ ├── BinarySearchTree.h
│ ├── EdgeLine.h
│ ├── InteractiveScene.h
│ ├── MainWindow.h
│ ├── Station.h
│ └── StationNode.h
├── src/ # Archivos fuente (.cpp)
│ ├── BinarySearchTree.cpp
│ ├── EdgeLine.cpp
│ ├── InteractiveScene.cpp
│ ├── MainWindow.cpp
│ ├── Station.cpp
│ ├── StationNode.cpp
│ └── main.cpp
├── resources/ # Recursos de la aplicación
│ ├── mainwindow.ui # Interfaz de usuario
│ ├── map_base.png # Mapa de fondo
│ ├── dark_theme.qss # Tema oscuro de la interfaz
│ └── resources.qrc # Archivo de recursos Qt
└── build/ # Directorio de compilación (generado)
- Verificar que el directorio raíz del proyecto tenga permisos de escritura
- Asegurarse de que el ejecutable se ejecute desde el directorio correcto
- Verificar que
resources/map_base.pngexista - Verificar que
resources/resources.qrcincluya el archivo de imagen
- Verificar que Qt6 esté instalado correctamente
- Verificar que CMake encuentre Qt6:
cmake .. -DCMAKE_PREFIX_PATH=/ruta/a/qt6 - En Windows, asegurarse de usar el generador correcto:
cmake .. -G "Visual Studio 16 2019"ocmake .. -G "MinGW Makefiles"
- Los datos se guardan automáticamente al cerrar la aplicación
- Los datos se cargan automáticamente al iniciar la aplicación
- Los archivos
.txtse guardan en el directorio raíz del proyecto (no enbuild/) - El tema oscuro se carga automáticamente desde los recursos embebidos
Autor: Matiw Rivera Cascante
Versión: 1.0
Última actualización: 2025-11-13