Proyecto Final

Es un programa en Java que maneja una cola (a de aclarar que no está incluido en si en el código la estructura de una cola por lo que no aplica para una cola)  porque en un parqueadero no siempre el primero que entra es el primero que sale, sino que más bien es algo aleatorio.


***Sistema De Registro Del Parqueadero Veroni Plaza***

El programa incluye un menú con las siguientes opciones:

1. Registrar Entrada De Vehículo.
2. Mostrar Vehículos Registrados Que Están Parqueados.
3. Registrar Salida De Vehículos.
4. Mostrar Vehículos Que Han Salido Del Parqueadero.
5. Salir Del Programa De Registro.

Se manejan 2 archivos tipo TXT, Uno nombrado como parqueadero.txt y el otro como parqueaderosalida.txt

En el archivo parqueadero.txt, se va guardando el registro de los vehículos (carros o motos) que van ingresando al parqueadero.

El documento TXT guarda la siguiente información.

- Placas Del Vehículo
- Tipo De Vehículo (Carro o Moto)
- Nombre Del Que Ingreso El Vehículo
- Fecha En La Que Ingreso El Vehículo (Toma la fecha del dispositivo donde se esté ejecutando)
- Hora En La Que Ingreso El Vehículo (Toma la hora del dispositivo donde se esté ejecutando)
- Valor De Lo Que Debe Pagar Por Hora (Moto: $1800 - Carro: $3000)

En el archivo parqueaderosalida.txt, se va guardando el registro de los vehículos (carros o motos) que que ya salieron del parqueadero.

El documento TXT guarda la siguiente información.

- Placas Del Vehículo
- Tipo De Vehículo (Carro o Moto)
- Nombre Del Que Ingreso El Vehículo
- Fecha En La Que Ingreso El Vehículo (Toma la fecha del dispositivo donde se esté ejecutando)
- Hora En La Que Ingreso El Vehículo (Toma la hora del dispositivo donde se esté ejecutando)
- Fecha En La Que Retiró El Vehículo (Toma la fecha del dispositivo donde se esté ejecutando)
- Hora En La Que Retiró El Vehículo (Toma la hora del dispositivo donde se esté ejecutando)
- Total A Pagar

Este documento es un plus para que el dueño/a del parqueadero tenga un inventario o control sobre la cantidad de vehículos que han ingresado al parqueadero y la cantidad de dinero que se ha ganado.

En el código están implementadas las siguientes librerías de Java:

  • java.io.BufferedReader:

    • Permite leer texto de una entrada de caracteres de manera eficiente.
    • BufferedReader usa un búfer para leer grandes bloques de texto al mismo tiempo, lo cual es más rápido que leer carácter por carácter.
    • Comúnmente se usa en combinación con FileReader para leer archivos de texto.
  • java.io.FileReader:

    • Sirve para leer archivos de texto de un sistema de archivos.
    • FileReader lee el archivo carácter por carácter, por lo que generalmente se utiliza junto con BufferedReader para optimizar la lectura.
  • java.io.FileWriter:

    • Permite escribir texto en un archivo.
    • Se utiliza para crear un archivo o escribir en él, pudiendo sobrescribir o agregar contenido.
    • Es útil para guardar datos generados por un programa.
  • java.io.IOException:

    • Es una excepción que se lanza cuando ocurre un error de entrada/salida.
    • Por ejemplo, al leer o escribir en archivos, si el archivo no existe o no se puede acceder, se lanza esta excepción.
  • java.time.Duration:

    • Sirve para representar un período de tiempo entre dos instantes.
    • Es útil para calcular la diferencia de tiempo en horas, minutos, y segundos.
    • Normalmente se usa junto con LocalDateTime para medir la duración entre dos fechas y horas.
  • java.time.LocalDateTime:

    • Representa una fecha y hora (sin zona horaria).
    • Es ideal para almacenar y manipular información de fecha y hora (como 2024-11-06T10:15).
    • LocalDateTime permite hacer cálculos de tiempo, como sumas o restas de días, horas, etc.
  • java.time.format.DateTimeFormatter:

    • Sirve para dar formato a fechas y horas en una representación de texto personalizada.
    • Puede convertir LocalDateTime en una cadena (String) en un formato específico o parsear una cadena para obtener un LocalDateTime.
  • java.util.Scanner:

    • Es una clase para leer datos de entrada del usuario.
    • Permite leer datos de diferentes tipos (como int, double, y String) desde varias fuentes de entrada, como el teclado o un archivo.

    También tiene los siguientes manejos:

    Estos son los manejos más importantes o los que más se resaltan...

    1. Validaciones:

    • Verificación del tipo de vehículo: Se asegura que el tipo de vehículo ingresado sea "CARRO" o "MOTO". Si se ingresa un valor no válido, se muestra un mensaje de error y no se registra el vehículo.
    • Comprobación de que el vehículo está registrado: Antes de registrar la salida de un vehículo, se verifica si las placas del vehículo están registradas en el parqueadero. Si no se encuentra el vehículo, se muestra un mensaje indicando que no está registrado.

    2. Lectura y Escritura de Archivos:

    • Archivos utilizados: El sistema usa dos archivos principales: parqueadero.txt para guardar los vehículos actualmente parqueados y parqueaderosalida.txt para registrar las salidas de los vehículos.
    • Encabezado en los archivos: Se añade un encabezado en ambos archivos (parqueadero.txt y parqueaderosalida.txt) con los nombres de las columnas: "Placas", "Tipo V.", "Nombre", "Fecha y Hora Entrada", "Fecha y Hora Salida", "Valor Hora", "Total Pagar". Esto permite organizar mejor los datos y garantizar la consistencia.

    3. Formato de Fecha y Hora:

    • Obtención y formateo de la fecha y hora: La fecha y hora de entrada y salida de los vehículos se obtiene usando la clase LocalDateTime. Además, la fecha se formatea en el formato dd-MM-yyyy HH:mm:ss para que sea fácilmente comprensible y se mantenga consistente a lo largo del sistema.

    4. Cálculo de Tarifas:

    • Cálculo del total a pagar: En el registro de salida, se calcula el tiempo de estacionamiento en horas y se multiplica por la tarifa correspondiente según el tipo de vehículo (moto o carro). Si el tiempo estacionado es menor a una hora, se considera que el vehículo pagará por una hora completa.
    • Tarifa por hora: La tarifa por hora es de $1800 para motos y $3000 para carros.

    5. Gestión de Excepciones:

    • Manejo de excepciones: Se utiliza IOException para capturar posibles errores al leer y escribir en los archivos. Esto permite que el sistema maneje correctamente situaciones donde los archivos no están disponibles o no se pueden modificar.
    • Mensajes de error y confirmación: Se han agregado mensajes claros para guiar al usuario a través del proceso, como "Vehículo No Encontrado" si el vehículo no está registrado o "Ya no hay vehículos parqueados" si no se encuentran vehículos en el archivo.

    6. Verificación de Placas Únicas:

    • Evitar placas duplicadas: Se ha implementado una validación para garantizar que las placas de los vehículos sean únicas. Si el usuario intenta registrar un vehículo con placas que ya están registradas, el sistema muestra el mensaje "Ups! Parece que este vehículo ya está registrado, Dime de nuevo tus placas" y le solicita ingresar las placas nuevamente.

    7. Optimización en el Manejo de Archivos:

    • Comprobación de archivos vacíos: Antes de escribir en los archivos parqueadero.txt y parqueaderosalida.txt, el sistema verifica si estos archivos están vacíos. Si es la primera vez que se escribe en el archivo, se agrega el encabezado automáticamente.
    • Evitar sobrescritura de registros: Los registros de entrada y salida de vehículos se agregan al final del archivo sin sobrescribir los datos existentes, garantizando que se mantengan todos los registros previos.

    8. Mejora en la Experiencia del Usuario:

    • Mensajes informativos: Se han implementado mensajes informativos claros que guían al usuario durante el proceso, como el mensaje "Ya no hay vehículos parqueados" cuando no hay registros de entrada, y "Vehículo Encontrado" cuando el vehículo está correctamente registrado al momento de registrar la salida.
    • Interactividad: El programa interactúa con el usuario mediante una serie de opciones numéricas que le permiten elegir entre registrar entradas, registrar salidas, mostrar vehículos registrados o ver las salidas realizadas.

    Conclusión:

    Este sistema ha sido diseñado para ser robusto y fácil de usar, gestionando eficientemente la entrada y salida de vehículos en un parqueadero. La implementación de validaciones, manejo adecuado de archivos y cálculos de tarifas ha permitido crear una herramienta funcional que optimiza el proceso de registro de vehículos en el parqueadero. Además, se han incorporado mejoras para evitar la duplicación de placas y asegurar una correcta visualización de la información mediante encabezados y mensajes informativos.

    Pasos Para Utilizar El Programa...

    Nota: Es un documento comprimido Tipo ZIP, por lo que debe descomprimir el archivo para que le arroje la carpeta Principal del código.

    Recomendación: Para un mejor manejo del código es bueno abrirlo en Visual Studio Code.

    Si No Ejecuta: (Esto dado el caso que no tengas instalado el paquete para Java) En la parte izquierda del programa tienes unos cuadritos que dicen Extensiones, entras ahí y en el buscador pones Java y das click en el que dice Extension Pack for Java, le das en Install y una vez instalado el pack para Java, ahora puedes ir a probar el código...

    Uno vez descomprimido el archivo e instalado el paquete para java lo importas de la siguiente forma:

    1. Das Click en los dos papelitos que dice Explorer.
    2. Das en Open Folder.
    3. Buscas donde descomprimiste la carpeta Proyecto Final, das Click a la carpeta y le das en seleccionar carpeta.
    4. Despliegas la carpeta que dice proyecto final.
    5. Despliegas la subcarpeta SRC.
    6. Das doble Click en Parqueadero.java
    7. Para ejecutarlo vas a la esquina superior derecha y das Click al botón de reproducción (Run Java).
    8. Das Click en la parte de la consola donde dice: Digite una opción para asegurarte que escribirás en la consola y no en el código.
    9. Listo, empieza a leer las opciones que tiene el menú y empieza a probarlo


    "El proyecto final es la culminación de nuestro esfuerzo y dedicación a lo largo del curso. Es una oportunidad única para aplicar todo lo que hemos aprendido, demostrar nuestra creatividad y habilidad, y presentar una pieza integral de nuestro trabajo. En lugar de verlo como una tarea abrumadora, consideremos este proyecto como un reflejo de nuestro crecimiento y un desafío emocionante que nos permitirá consolidar nuestros conocimientos y habilidades. Aprovechemos al máximo este momento para innovar, solucionar problemas y mostrar el fruto de nuestro aprendizaje. Cada proyecto final es una oportunidad para brillar y dejar una huella significativa en nuestro desarrollo académico y profesional."

    "El arte desafía a la tecnología y la tecnología inspira al arte"
    Creado con Webnode Cookies
    ¡Crea tu página web gratis! Esta página web fue creada con Webnode. Crea tu propia web gratis hoy mismo! Comenzar