Skip to content

Dootez/GestorAlquileres_JavaFX

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚗 Sistema de Alquiler de Coches

Una aplicación JavaFX moderna para gestionar el alquiler de vehículos con persistencia en archivos de texto.

📋 Descripción

Este proyecto implementa un sistema completo de gestión de alquileres de coches con las siguientes características:

  • ✅ Gestión de Clientes (registro, validación de edad)
  • ✅ Gestión de Vehículos (registro por tipos: PEQUEÑO, MEDIANO, GRANDE)
  • ✅ Sistema de Alquileres (con validación de fechas)
  • Persistencia de datos en archivos .txt
  • ✅ Interfaz gráfica moderna con JavaFX
  • ✅ Filtrado de vehículos por tipo
  • ✅ Validaciones automáticas

🛠️ Requisitos

Dependencias del Sistema

  • Java JDK 21+
  • Maven 3.8+

Dependencias del Proyecto

  • JavaFX 21.0.6
  • JUnit Jupiter 5.12.1

📁 Estructura del Proyecto

AlquilerCoches/
├── src/
│   ├── main/
│   │   ├── java/com/alquiler/alquilercoches/
│   │   │   ├── MainApp.java              # Clase principal de la aplicación
│   │   │   ├── controller/
│   │   │   │   └── MainController.java   # Controlador de la UI
│   │   │   ├── model/
│   │   │   │   ├── Cliente.java          # Modelo de Cliente
│   │   │   │   ├── Vehiculo.java         # Modelo de Vehículo
│   │   │   │   ├── Alquiler.java         # Modelo de Alquiler
│   │   │   │   └── TipoVehiculo.java     # Enum de tipos (PEQUEÑO, MEDIANO, GRANDE)
│   │   │   ├── service/
│   │   │   │   └── GestorAlquiler.java   # Lógica de negocio principal
│   │   │   └── utility/
│   │   │       └── GestorArchivos.java   # Persistencia en archivos
│   │   └── resources/
│   │       └── view/main-view.fxml       # Interfaz gráfica (FXML)
│   └── test/
│       └── java/com/alquiler/alquilercoches/
│           └── GestorAlquilerTest.java   # Tests unitarios
├── clientes.txt                          # Datos persistidos de clientes
├── vehiculos.txt                         # Datos persistidos de vehículos
├── alquileres.txt                        # Datos persistidos de alquileres
├── pom.xml                               # Configuración Maven
└── README.md                             # Este archivo

🚀 Instalación y Ejecución

1. Clonar el Repositorio

git clone https://github.com/usuario/AlquilerCoches.git
cd AlquilerCoches

2. Compilar el Proyecto

./mvnw.cmd clean compile

O si tienes Maven instalado:

mvn clean compile

3. Ejecutar la Aplicación

./mvnw.cmd javafx:run

O con Maven:

mvn javafx:run

4. Ejecutar Tests

./mvnw.cmd test

📊 Uso de la Aplicación

Registro de Clientes

  1. Introduce el DNI del cliente (ej: 12345678A)
  2. Introduce el Nombre y Apellidos
  3. Selecciona la Fecha de Nacimiento (debe ser mayor de 25 años)
  4. Haz clic en "Registrar Cliente"

Validaciones:

  • El cliente debe ser mayor de 25 años
  • El DNI no puede estar duplicado

Registro de Vehículos

  1. Introduce la Matrícula (ej: MAT0001)
  2. Introduce el Número de Póliza (ej: POL0001)
  3. Selecciona el Tipo de Vehículo:
    • PEQUEÑO - Vehículos pequeños (ej: utilitarios)
    • MEDIANO - Vehículos medianos (ej: sedanes)
    • GRANDE - Vehículos grandes (ej: SUVs)
  4. Selecciona la Fecha de Matriculación
  5. Haz clic en "Registrar Vehículo"

Validaciones:

  • La matrícula no puede estar duplicada
  • Todos los campos son obligatorios

Realizar Alquileres

  1. Selecciona un Cliente de la lista de la izquierda
  2. Selecciona un Vehículo de la lista de la derecha
  3. Establece la Fecha de Inicio y Fecha de Fin
  4. Haz clic en "Alquilar Vehículo"

Validaciones:

  • La fecha de fin debe ser posterior a la de inicio
  • El cliente y vehículo deben estar activos
  • El vehículo debe estar disponible

Filtrar Vehículos

  1. Selecciona un tipo de vehículo en el desplegable de filtro
  2. Haz clic en "Filtrar" para ver solo vehículos de ese tipo
  3. Haz clic en "Ver Todos" para mostrar todos los vehículos

💾 Formatos de Archivos de Datos

clientes.txt

Formato: DNI;Nombre;Apellidos;FechaNacimiento

12345678A;Juan;García López;15/05/1995
87654321B;María;Rodríguez Pérez;22/03/1998
11111111C;Carlos;Martínez Silva;10/07/1992

vehiculos.txt

Formato: Matrícula;NúmeroPóliza;TipoVehículo;FechaMatriculación;Activo

MAT0001;POL0001;PEQUEÑO;15/06/2020;true
MAT0002;POL0002;MEDIANO;10/03/2019;true
MAT0003;POL0003;GRANDE;22/11/2021;true

Tipos válidos: PEQUEÑO, MEDIANO, GRANDE

alquileres.txt

Formato: DNICliente;MatrículaVehículo;FechaInicio;FechaFin

12345678A;MAT0001;01/02/2025;08/02/2025
87654321B;MAT0002;05/02/2025;12/02/2025

Formato de fechas: dd/MM/yyyy

🏗️ Arquitectura de la Aplicación

Patrones de Diseño Utilizados

  • MVC (Model-View-Controller)

    • Model: Clases Cliente, Vehiculo, Alquiler
    • View: main-view.fxml
    • Controller: MainController
  • Service Layer: GestorAlquiler - Lógica de negocio

  • Data Access Layer: GestorArchivos - Persistencia

Flujo de Datos

MainApp (inicio)
    ↓
MainController.initialize()
    ↓
GestorAlquiler (carga datos)
    ↓
GestorArchivos (lee archivos)
    ↓
UI actualiza listas

🔑 Características Principales

Validaciones

  • ✅ Edad mínima de 25 años para clientes
  • ✅ DNI y matrícula únicos
  • ✅ Validación de fechas (inicio < fin)
  • ✅ Tipos de vehículos predefinidos
  • ✅ Persistencia automática de datos

Persistencia

  • Todos los datos se guardan automáticamente en archivos .txt
  • Los datos se cargan al iniciar la aplicación
  • Los archivos se crean automáticamente si no existen

Interfaz de Usuario

  • Diseño moderno y responsivo
  • Colores intuitivos:
    • 🟢 Verde: Registrar Cliente
    • 🔵 Azul: Registrar Vehículo
    • 🔴 Rojo: Realizar Alquiler
  • Validaciones en tiempo real
  • Mensajes de estado clara

📝 Clases Principales

Cliente

Cliente(String dni, String nombre, String apellidos, LocalDate fechaNacimiento)
  • Validación de edad (>= 25 años)
  • Gestión de estado activo

Vehiculo

Vehiculo(String matricula, String numeroPoliza, TipoVehiculo tipo, LocalDate fechaMatriculacion)
  • Cálculo de años en uso
  • Control de disponibilidad

Alquiler

Alquiler(Cliente cliente, Vehiculo vehiculo, LocalDate fechaInicio, LocalDate fechaFin)
  • Validación de fechas
  • Cálculo de duración

GestorAlquiler

// Métodos principales
boolean registrarCliente(Cliente cliente)
boolean registrarVehiculo(Vehiculo vehiculo)
boolean crearAlquiler(Cliente cliente, Vehiculo vehiculo, LocalDate inicio, LocalDate fin)
List<Vehiculo> filtrarVehiculosPorTipo(TipoVehiculo tipo)

🧪 Tests

El proyecto incluye tests unitarios usando JUnit Jupiter:

./mvnw.cmd test

Cobertura de Tests

  • ✅ Validación de edad de clientes
  • ✅ Búsqueda de clientes y vehículos
  • ✅ Creación de alquileres
  • ✅ Validación de fechas
  • ✅ Filtrado de vehículos

🐛 Solución de Problemas

Los datos no se cargan al iniciar

Problema: Aparece una lista vacía al abrir la aplicación

Solución:

  1. Verifica que los archivos .txt estén en la raíz del proyecto
  2. Comprueba en la consola que dice "Detectado: raíz del proyecto"
  3. Verifica el formato de los archivos (usar ; como separador)

Error: "No enum constant TURISMO"

Problema: El tipo de vehículo no es reconocido

Solución:

  • Cambia TURISMO por PEQUEÑO, MEDIANO o GRANDE
  • Los valores son case-sensitive

La aplicación no se ejecuta

Problema: Error al cargar la interfaz gráfica

Solución:

# Limpia y recompila
./mvnw.cmd clean compile
./mvnw.cmd javafx:run

📚 Documentación

La documentación JavaDoc está disponible en:

src/main/docs/

Genera la documentación con:

./mvnw.cmd javadoc:javadoc

🤝 Contribuir

Las contribuciones son bienvenidas. Por favor:

  1. Fork el proyecto
  2. Crea una rama para tu característica (git checkout -b feature/AmazingFeature)
  3. Commit tus cambios (git commit -m 'Add AmazingFeature')
  4. Push a la rama (git push origin feature/AmazingFeature)
  5. Abre un Pull Request

📄 Licencia

Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.

👨‍💻 Autor

Eneko

📧 Contacto

Para preguntas o sugerencias, por favor abre un issue en el repositorio.

🗓️ Changelog

v1.0 (2026-02-10)

  • ✅ Versión inicial
  • ✅ CRUD de clientes
  • ✅ CRUD de vehículos
  • ✅ Sistema de alquileres
  • ✅ Persistencia en archivos
  • ✅ Interfaz gráfica completa
  • ✅ Tests unitarios

🎯 Roadmap

  • Base de datos (MySQL/PostgreSQL)
  • API REST
  • Aplicación web (Spring Boot + Vue.js)
  • Exportar reportes (PDF/Excel)
  • Autenticación de usuarios
  • Sistema de pagos
  • Notificaciones por email

⚠️ Notas Importantes

  • Los datos se guardan en archivos de texto simple. Para producción, usa una base de datos
  • La aplicación no incluye validación de seguridadavanzada
  • Los archivos de datos deben estar siempre en la raíz del proyecto

¡Gracias por usar el Sistema de Alquiler de Coches! 🚗

About

A rent car app with JavaFX and ".txt" data persistence

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages