Skip to content

Dabji/RailLink

🚂 RailLink - Passenger Train Management System

Java JUnit 5 Open Source License: MIT

RailLink Logo


🇪🇸 Español | 🇬🇧 English


🇪🇸 Español

Descripción y Contexto Académico

Este software fue desarrollado como Proyecto de Aula para la asignatura de Estructuras de Datos en Ingeniería de Sistemas e Informática en la Universidad Pontificia Bolivariana (UPB), durante el primer semestre de 2025 (2025-10). RailLink es un Sistema de Gestión de Trenes de Transporte de Pasajeros diseñado con estándares profesionales y arquitectónicos de alta calidad.

Características Técnicas

Este proyecto posee un inmenso valor académico y lógico porque NO utiliza java.util para sus colecciones. Cada estructura de datos fue programada 100% desde cero, incluyendo:

  • Listas Enlazadas (Simples, Dobles y Circulares)
  • Pilas y Colas
  • Árboles Binarios
  • Tablas Hash (Hashmaps)
  • Grafos

Algoritmo Principal

El sistema cuenta con un algoritmo avanzado de teoría de grafos para validar y calcular la ruta más corta entre estaciones, evaluado en kilómetros. Esto permite la optimización automática del recorrido que debe hacer el tren (y el pasajero) dentro de nuestra red ferroviaria.

Interfaz Gráfica / UI Screenshots

A continuación, mostraremos cómo luce el sistema en acción:

Lobby Principal Compra de Boletos Consulta de Rutas y Grafos

Arquitectura y UML

RailLink sigue la rigidad y el desacoplamiento del patrón MVC (Modelo-Vista-Controlador):

MVC Diagram

La gestión e interacción de los modelos internos (Boletos, Estaciones, Pasajeros) se representa de la siguiente manera:

Tickets Flow Diagram

Diagrama de Componentes General

Además, tenemos una vista general de nuestros componentes integrados:

Component Diagram

Grafo de Distancias

El núcleo de la lógica enrutadora trabaja en base a este diseño de grafos en kilómetros:

Grafo de Distancias

Organización del Proyecto

El software sigue una organización modular limpia:

  • src/main/java/dataStructures/: Colecciones y Algoritmos desde Cero.
  • src/main/java/model/: Entidades de Lógica de Negocio.
  • src/main/java/view/: Interfaces Gráficas de Usuario.
  • src/main/java/controller/: Enlace MVC.
  • src/main/java/database/: Persistencia JSON (Gestión y Control).
  • src/test/: Pruebas Unitarias JUnit 5.

Ejecución de Pruebas y Uso

  1. Clona el repositorio e impórtalo como un proyecto Maven.
  2. Compila el software: mvn clean compile.
  3. Ejecuta nuestra suite extendida de pruebas para validar la integridad de las colecciones customizadas: mvn test


🇬🇧 English

Description and Academic Context

This software was developed as a Classroom Project for the Data Structures course in Systems and Informatics Engineering at Universidad Pontificia Bolivariana (UPB), during the first semester of 2025 (2025-10). RailLink is a Passenger Train Management System designed with high-quality and professional architectural standards.

Technical Features

This project holds an immense academic and logical value because it DOES NOT use java.util for its collections. Every single data structure was programmed 100% from scratch, including:

  • Linked Lists (Singly, Doubly, and Circular)
  • Stacks and Queues
  • Binary Trees
  • Hash Tables (Hashmaps)
  • Graphs

Main Algorithm

The system features an advanced graph theory algorithm to validate and calculate the shortest path between stations, evaluated in kilometers. This allows for automatic optimization of the route that the train (and the passenger) must traverse inside our railway network.

Interfaz Gráfica / UI Screenshots

Here is what the system looks like in action:

Main Lobby Ticket Purchasing Routes and Graph Checking

Architecture and UML

RailLink follows the strictness and decoupling rules of the MVC (Model-View-Controller) pattern:

MVC Diagram

The management and interaction of internal models (Tickets, Stations, Passengers) are illustrated below:

Tickets Flow Diagram

General Components Diagram

Additionally, we have a complete overview of our integrated software components:

Component Diagram

Graph Distances Concept

The core behavior of our shortest-route algorithm relies on the following design based on kilometers:

Grafo de Distancias

Project Organization

The software adheres to a clean modular setup:

  • src/main/java/dataStructures/: Scratch-built Algorithms and Collections.
  • src/main/java/model/: Business Logic Entities.
  • src/main/java/view/: Graphical User Interfaces.
  • src/main/java/controller/: MVC Linker.
  • src/main/java/database/: JSON Persistence capabilities.
  • src/test/: JUnit 5 Unit Tests.

Execution and Testing

  1. Clone the repository and import it as a Maven Project.
  2. Compile the software: mvn clean compile
  3. Execute our extended test suite to validate the integrity of our custom collections: mvn test

About

🚂 RailLink: Sistema de Gestión de Trenes (MVC). Proyecto de Estructuras de Datos (UPB) con colecciones y grafos desarrollados 100% desde cero sin java.util.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Contributors

Languages