A comprehensive Formula 1 data management and visualization system built in Java, featuring real-time statistics, interactive comparisons, and detailed analytics for the 2024 F1 season.
- Complete F1 2024 season data management
- Real-time statistics tracking
- Comprehensive driver and team information
- Circuit details with precise measurements
- Race results and standings
- Simple Comparison: Direct points and position comparison
- Visual Comparison: Detailed statistical analysis including:
- Victories
- Podiums
- Pole positions
- Fastest laps
- Total points
- Simple Comparison: Direct championship points comparison
- Visual Comparison: Comprehensive team statistics including:
- Total points
- Race victories
- Last victory date
- Historical championships
- Intuitive command-line interface
- ASCII art banner for enhanced visual appeal
- Unicode-based table formatting
- Dynamic spacing and alignment
- Error-resistant input handling
- Java 17+
- Object-Oriented Programming
- Stream API for data processing
- LocalDate for date management
- Custom comparators for sorting
- Data Access Layer: Separate data loading and management
- Model-View Pattern: Clear separation of data and presentation
- Factory Pattern: For object creation and data initialization
- Strategy Pattern: For different comparison methods
- Comprehensive error handling
- Input validation at all levels
- Clean code principles
- Consistent formatting
- Detailed documentation
// Efficient data filtering using Stream API
List<Carrera> filtradas = carreras.stream()
.filter(c -> c.getNombre().equalsIgnoreCase(filtro) ||
fechaCoincide(c.getFecha(), filtro))
.toList();// Unicode-based table formatting with dynamic spacing
System.out.printf("β %-30s β %-20.1f β\n",
equipo.getNombreCompleto(),
equipo.getPuntos2024());try {
int id = Integer.parseInt(input);
// Process valid input
} catch (NumberFormatException e) {
// Handle invalid input
} finally {
scanner.nextLine(); // Buffer cleanup
}ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π CIRCUIT CHARACTERISTICS β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ’
β Length: 5412 meters β
β Laps: 57 β
β Total Distance: 308484 meters β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π DRIVER COMPARISON β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ’
β [Driver 1] leads [Driver 2] by [X] points β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ’
β DRIVER β POINTS 2024 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ’
β [Driver 1] β [Points] β
β [Driver 2] β [Points] β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
CargadorDatos.cargarEquipos(): Team data loadingCargadorDatos.cargarPilotos(): Driver data loadingCargadorDatos.cargarCircuitos(): Circuit data loadingCargadorDatos.cargarCarreras(): Race data loading
compararPilotos(): Driver comparison logiccompararEquipos(): Team comparison logicmostrarComparacionSimplePilotos(): Simple driver comparisonmostrarComparacionSimpleEquipos(): Simple team comparison
mostrarInfoCircuito(): Circuit information displaymostrarInfoPiloto(): Driver information displaymostrarInfoEquipo(): Team information display
- Database integration for persistent storage
- REST API for remote access
- Real-time data updates
- Historical data analysis
- Predictive analytics
- Web interface
- Clone the repository
- Ensure Java 17+ is installed
- Compile the project:
javac Main.java
- Run the application:
java Main
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.