import java.util.ArrayList; import java.util.List; import java.util.Scanner;
class Compra { String descripcion; double monto;
public Compra(String descripcion, double monto) {
this.descripcion = descripcion;
this.monto = monto;
}
@Override
public String toString() {
return descripcion + " - $" + monto;
}
}
class TarjetaCredito { private double limite; private double saldoDisponible; private List historial;
public TarjetaCredito(double limite) {
this.limite = limite;
this.saldoDisponible = limite;
this.historial = new ArrayList<>();
}
public boolean hacerCompra(String descripcion, double monto) {
if (monto <= saldoDisponible) {
historial.add(new Compra(descripcion, monto));
saldoDisponible -= monto;
return true;
} else {
return false;
}
}
public void mostrarHistorial() {
if (historial.isEmpty()) {
System.out.println("No hay compras registradas.");
} else {
System.out.println("Compras realizadas:");
for (Compra c : historial) {
System.out.println("- " + c);
}
}
}
public double getSaldoDisponible() {
return saldoDisponible;
}
public double getLimite() {
return limite;
}
}
public class AppTarjetaCredito { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); TarjetaCredito tarjeta = new TarjetaCredito(1000.00);
int opcion;
do {
System.out.println("\n--- MENÚ DE COMPRAS ---");
System.out.println("1. Hacer compra");
System.out.println("2. Ver historial de compras");
System.out.println("3. Ver saldo disponible");
System.out.println("0. Salir");
System.out.print("Selecciona una opción: ");
opcion = scanner.nextInt();
scanner.nextLine(); // limpiar buffer
switch (opcion) {
case 1:
System.out.print("Descripción de la compra: ");
String descripcion = scanner.nextLine();
System.out.print("Monto de la compra: ");
double monto = scanner.nextDouble();
if (tarjeta.hacerCompra(descripcion, monto)) {
System.out.println("✅ Compra realizada.");
} else {
System.out.println("❌ Fondos insuficientes.");
}
break;
case 2:
tarjeta.mostrarHistorial();
break;
case 3:
System.out.println("Saldo disponible: $" + tarjeta.getSaldoDisponible());
break;
case 0:
System.out.println("¡Gracias por usar la aplicación!");
break;
default:
System.out.println("Opción inválida.");
}
} while (opcion != 0);
scanner.close();
}
}