UD02A06 - Cajero automático
Enunciado de la tarea: “Cajero automático”
El objetivo de esta tarea es desarrollar una aplicación de escritorio en JavaFX que simule el funcionamiento básico de un cajero automático de un banco ficticio llamado “Banco DAMDI”.
La aplicación debe permitir al usuario identificarse con su tarjeta y PIN, consultar su saldo, ingresar dinero, retirar dinero y ver un resumen de la última transacción.
Además de la parte funcional, se exige una buena organización del código en clases y archivos separados, así como el uso de estilos CSS para dar una apariencia coherente y sobria al cajero.
1. Requisitos de estructura del proyecto
El proyecto debe estar organizado en varias clases, cada una en su propio archivo .java:
- UD02T05_CajeroAutomatico
- Clase principal que extiende
Application. - Contiene la pantalla de login (Pantalla 1).
- Gestiona el
Stageprincipal y los cambios entre pantallas (inicio, consulta saldo, operación, transacción).
- Clase principal que extiende
- Banco
- Clase que permite gestionar la lógica del banco.
- Contiene la “base de datos” de clientes (un array de objetos
Cliente). - Métodos principales:
boolean login(String tarjeta, String pin)void logout()Cliente getClienteActual()double getSaldoActual()void ingresar(double cantidad)boolean retirar(double cantidad)
- Cliente
- Clase modelo que representa a un cliente del banco.
- Atributos mínimos:
tarjeta,pin,nombre,saldo. - Incluye constructores, getters y setters necesarios.
- PantallaInicio (Pantalla 2)
- Clase que construye la pantalla principal tras el login correcto.
- Recibe una referencia a
UD02T05_CajeroAutomaticoy aBanco. - Muestra un mensaje de bienvenida en una “pantalla de terminal” y los botones:
- “Ingresar dinero”
- “Retirar dinero”
- “Consultar saldo”
- “Salir”
- PantallaConsultaSaldo (Pantalla 3)
- Clase que muestra el saldo actual del cliente en una “pantalla de terminal”.
- Tiene un botón “Volver” que regresa al login (Pantalla 1).
- PantallaOperacion (Pantalla 4)
- Se utiliza tanto para ingresar como para retirar dinero.
- Se le indicará si la operación es ingreso o retirada.
- Muestra saldo actual, un mensaje de “Inserte cantidad a ingresar/retirar”, un campo para introducir la cantidad y los botones “Aceptar” y “Cancelar”.
- El mensaje mostrará “Inserte cantidad a ingresar” o “Inserte cantidad a retirar” en función del tipo de operación.
- PantallaTransaccion (Pantalla 5)
- Muestra el saldo actual tras la operación y la cantidad ingresada/retirada.
- Tiene un botón “Volver” que lleva de nuevo a la pantalla de inicio (Pantalla 2).
- EstilosCajero
- Clase que contiene todos los estilos CSS en forma de cadenas estáticas.
- El resto de clases debe usar exclusivamente estas constantes en sus llamadas a
setStyle(...). - No se permiten literales CSS “sueltos” repartidos por el código.
2. Requisitos funcionales por pantalla
2.1 Pantalla 1 – Login (UD02T05_CajeroAutomatico)
- Label título: “Banco DAMDI”.
- Label: “Número de tarjeta” +
TextFieldpara introducir el número.- Solo acepta caracteres numéricos (se deben filtrar otros caracteres).
- Label: “PIN (4 dígitos)” +
PasswordField.- Solo acepta números.
- Longitud máxima: 4 caracteres.
- Botón “Aceptar”: se comprueba si las credenciales coinciden con la base de datos (usando un array de
Cliente):- Si las credenciales son correctas:
- Se muestra la Pantalla 2 (inicio).
- Si los datos son incorrectos:
- Se muestra un
Alertde error con el mensaje “Número de tarjeta o PIN no válidos”.
- Se muestra un
- Si las credenciales son correctas:
2.2 Pantalla 2 – Inicio (PantallaInicio)
TextAreacon estética de “pantalla de terminal” donde se muestre:- “Bienvenido (nombre del cliente)”.
- Botones:
- “Ingresar dinero” → lleva a Pantalla 4 (operación) en modo ingresar.
- “Retirar dinero” → lleva a Pantalla 4 (operación) en modo retirar.
- “Consultar saldo” → lleva a Pantalla 3.
- “Salir” → cierra la sesión (llamando a
logout()) y regresa a Pantalla 1 (login).
2.3 Pantalla 3 – Consulta saldo (PantallaConsultaSaldo)
TextAreacon formato de terminal que muestre:- “Su saldo actual es XXXX €” (formateado con 2 decimales).
- Botón “Volver”.
- Al pulsarlo, se vuelve a la Pantalla 1 (login), tal como indica el enunciado.
2.4 Pantalla 4 – Ingresar / Retirar (PantallaOperacion)
TextAreade terminal con:- “Su saldo actual es XXXX €”.
- Label con texto:
- “Inserte cantidad a ingresar:” o
- “Inserte cantidad a retirar:”
en función del tipo de operación (ingreso/retirada).
TextFieldpara introducir la cantidad:- Solo admite números con 2 cifras decimales.
- Se debe validar que la cantidad sea mayor que 0.
- Botones:
- “Cancelar” → vuelve a Pantalla 2 (inicio).
- “Aceptar”:
- Si el campo está vacío o la cantidad ≤ 0:
- Mostrar
Alertde advertencia (“Cantidad no válida”).
- Mostrar
- Si es un ingreso:
- Llamar a
banco.ingresar(cantidad). - Saltar a Pantalla 5 (transacción), indicando la cantidad y que es ingreso.
- Llamar a
- Si es una retirada:
- Llamar a
banco.retirar(cantidad):- Si devuelve
false: mostrarAlert(“Fondos insuficientes”). - Si devuelve
true: ir a Pantalla 5, indicando cantidad y que es retirada.
- Si devuelve
- Llamar a
- Si el campo está vacío o la cantidad ≤ 0:
2.5 Pantalla 5 – Transacción (PantallaTransaccion)
TextAreade terminal que muestre:- “Su saldo actual es XXXX €”
- “Se ingresó XXXX €” o “Se retiró XXXX €” según el caso.
- Botón “Volver”:
- Devuelve a Pantalla 2 (inicio).
3. Requisitos de estilo (CSS / apariencia)
- El estilo de los diferentes elementos se encuentra definido en la clase
EstilosCajero.java. - No se permite escribir cadenas CSS directamente en las otras clases; solo deben usarse referencias del tipo:
root.setStyle(EstilosCajero.FONDO_APP);boton.setStyle(EstilosCajero.BOTON_PRIMARIO_NORMAL);
4. Requisitos de programación
- Cada clase debe ir en su propio archivo
.java. - El nombre de la clase debe coincidir con el nombre del archivo.
- Se deben respetar las buenas prácticas de programación:
- Métodos cortos y claros.
- Uso de comentarios cuando sea necesario para explicar partes clave.
- El código debe compilar y ejecutarse sin errores, y el flujo entre pantallas debe respetar lo indicado en este enunciado.
Pantallas:
Pantalla 1 – Login (UD02T05_CajeroAutomatico)

Pantalla 2 – Inicio (PantallaInicio)

Pantalla 3 – Consulta saldo (PantallaConsultaSaldo)

Pantalla 4 – Ingresar / Retirar (PantallaOperacion)


Pantalla 5 – Transacción (PantallaTransaccion)


- 1 de decembro de 2025, 12:56 PM