Skip to content

MatiwRC18/GrahpRoute

Repository files navigation

GraphRoute - Sistema de Gestión de Rutas de Transporte 1.0

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.

📋 Descripción

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.

✨ Funcionalidades Principales

Gestión de Estaciones y Rutas

  • 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"

Algoritmos de Rutas

  • 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

Algoritmos de Grafos

  • 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

Árbol Binario de Búsqueda (ABB)

  • 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

Sistema de Cierres de Vía

  • 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)

Reportes

  • Generación automática: Crear reporte completo en reportes.txt
  • Contenido: Información general, estaciones ordenadas alfabéticamente, rutas detalladas, estadísticas

Persistencia de Datos

  • 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

🛠️ Requisitos

  • CMake 3.14 o superior
  • Qt6 (módulo Widgets)
  • Compilador C++17 compatible (GCC, Clang, MSVC)

📦 Instalación y Compilación

Linux

git clone <url-del-repositorio>
cd GraphRoute
mkdir build
cd build
cmake ..
make
./GraphRoute

Windows

git 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.exe

Nota: Ajusta la ruta de Qt según tu instalación. Si Qt está en el PATH, puedes omitir -DCMAKE_PREFIX_PATH.

macOS

git clone <url-del-repositorio>
cd GraphRoute
mkdir build
cd build
cmake .. -DCMAKE_PREFIX_PATH=/path/to/Qt/6.x.x/macos
make
./GraphRoute

Nota: Si Qt fue instalado con Homebrew, la ruta típica es /opt/homebrew/opt/qt@6 o /usr/local/opt/qt@6.

🎮 Uso de la Aplicación

Interfaz

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

Panel de Control

1. Selección de Estaciones (compartida)

  • 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

2. Pestaña "Rutas"

  • 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"

3. Pestaña "Árbol ABB"

  • 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

4. Pestaña "Edición"

  • 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

5. Pestaña "Archivos y Reportes"

  • 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

Funciones Adicionales

  • 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

Visualización de Resultados

  • 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

📄 Archivos de Datos

La aplicación utiliza los siguientes archivos de texto (ubicados en el directorio raíz del proyecto):

estaciones.txt

Formato: id,nombre,x,y
Almacena información de las estaciones o paradas de autobuses.

rutas.txt

Formato: id1,id2,peso (peso = tiempo en minutos)
Almacena la red de transporte (nodos y conexiones).

cierres.txt

Formato: id1,id2 (una línea por ruta cerrada)
Lista los tramos de rutas cerradas.

recorridos_rutas.txt

Generado automáticamente al exportar recorridos del ABB. Incluye los tres tipos de recorrido (In-Order, Pre-Order, Post-Order).

reportes.txt

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.

📁 Estructura del Proyecto

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)

🐛 Solución de Problemas

Los archivos no se guardan

  • Verificar que el directorio raíz del proyecto tenga permisos de escritura
  • Asegurarse de que el ejecutable se ejecute desde el directorio correcto

El mapa no se muestra

  • Verificar que resources/map_base.png exista
  • Verificar que resources/resources.qrc incluya el archivo de imagen

Errores de compilación

  • 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" o cmake .. -G "MinGW Makefiles"

📝 Notas

  • Los datos se guardan automáticamente al cerrar la aplicación
  • Los datos se cargan automáticamente al iniciar la aplicación
  • Los archivos .txt se guardan en el directorio raíz del proyecto (no en build/)
  • 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors