Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Banco
- {
- public static void main(String[] args)
- {
- try(Scanner sc = new Scanner(System.in))
- {
- System.out.println("¿Cuál procedimiento desea realizar?");
- System.out.println("Elija uno de los siguientes comandos:");
- System.out.println("Agregar cuenta: ncuenta");
- System.out.println("Borrar cuenta: bcuenta");
- System.out.println("Añadir saldo a la cuenta: addS");
- System.out.println("Buscar cuenta: buscar");
- System.out.println("Listar cuentas: listar");
- String resp = sc.nextLine();
- while(resp != null && !resp.isBlank() && !resp.isEmpty() && (!resp.equals("no") || !resp.equals("n")))
- {
- if(resp.equals("si") || resp.equals("s"))
- {
- System.out.println("¿Cuál procedimiento desea realizar?");
- System.out.println("Elija uno de los siguientes comandos:");
- System.out.println("Agregar cuenta: ncuenta");
- System.out.println("Borrar cuenta: bcuenta");
- System.out.println("Añadir saldo a la cuenta: addS");
- System.out.println("Buscar cuenta: buscar");
- System.out.println("Listar cuentas: listar");
- resp = sc.nextLine();
- }
- if(resp.equalsIgnoreCase("ncuenta"))
- {
- System.out.println("Digite el tipo de cuenta: Caja de ahorro = 0, Corriente = 1");
- int option = Integer.valueOf(sc.nextLine());
- switch(option)
- {
- case 0:
- case 1:
- System.out.println("Digite el nombre del usuario:");
- String nombre = sc.nextLine();
- System.out.println("Digite la constraseña de la cuenta:");
- String cont = sc.nextLine();
- BancoManager.getInstance().agregarCuenta(option == 0 ? new CajaAhorro(nombre, cont) : new CuentaCorriente(nombre, cont));
- break;
- }
- System.out.println("Cuentas registradas: "+ BancoManager.getInstance().getCuentas().size());
- }
- if(resp.equalsIgnoreCase("listar"))
- {
- BancoManager.getInstance().getCuentas().stream().forEach(cuenta ->{
- System.out.print("Nombre: "+ cuenta.getUsuarioNombre());
- System.out.print(" Tipo de cuenta: "+ cuenta.getTipoCuenta());
- System.out.println();
- });
- }
- if(resp.equalsIgnoreCase("addS"))
- {
- System.out.println("Digite los datos de su cuenta: ");
- System.out.println("Usuario: ");
- String usuario = sc.nextLine();
- System.out.println("Contraseña: ");
- String cont = sc.nextLine();
- var cuenta = BancoManager.getInstance().filtrarByNombre(usuario);
- if(usuario != null)
- {
- if(cuenta.getContrase().equals(cont))
- {
- System.out.println("Digite el monto que desea agregar: ");
- double monto = sc.nextDouble();
- cuenta.addSaldo(monto);
- System.out.println("Sus datos Bancarios actuales: " + cuenta.getUsuarioNombre() + " " + cuenta.getContrase() + " " + cuenta.getSaldo());
- }
- else
- {
- System.err.println("El Usuario y/o Contraseña no existen...");
- }
- }
- }
- if(resp.equalsIgnoreCase("buscar"))
- {
- System.out.println("Digite el nombre de la cuenta:");
- String nombre = sc.nextLine();
- var cuenta = BancoManager.getInstance().filtrarByNombre(nombre);
- if(cuenta != null)
- {
- System.out.println("Se encontró esta cuenta:");
- System.out.print("Nombre: "+ cuenta.getUsuarioNombre());
- System.out.print(" Tipo de cuenta: "+ cuenta.getTipoCuenta());
- System.out.println();
- }
- else
- {
- System.out.println("Disculpe no se encontró ninguna coincidencia.");
- }
- }
- System.out.println("Desea continuar? si/no");
- resp = sc.nextLine();
- }
- sc.close();
- }
- }
- protected static class BancoManager implements IManager<AbstractCuenta>
- {
- private static final List<AbstractCuenta> _cuentas = new CopyOnWriteArrayList<>();
- @Override
- public void agregarCuenta(AbstractCuenta cuenta)
- {
- _cuentas.add(cuenta);
- }
- @Override
- public List<AbstractCuenta> getCuentas()
- {
- return _cuentas;
- }
- public static BancoManager getInstance()
- {
- return INSTANCE;
- }
- protected static final BancoManager INSTANCE = new BancoManager();
- }
- protected static interface IManager<E extends AbstractCuenta>
- {
- void agregarCuenta(E cuenta);
- default E filtrarByNombre(String nombre)
- {
- return getCuentas().stream().filter(c -> c.getUsuarioNombre().equalsIgnoreCase(nombre)).findFirst().orElse(null);
- }
- List<E> getCuentas();
- }
- protected static class CajaAhorro extends AbstractCuenta
- {
- public CajaAhorro(String _usuarioNombre, String _contrase)
- {
- super(_usuarioNombre, _contrase);
- }
- @Override
- CuentaType getTipoCuenta()
- {
- return CuentaType.CAJA_AHORRO;
- }
- @Override
- public void addSaldo(double saldo) {
- super.addSaldo(saldo);
- }
- }
- public static class CuentaCorriente extends AbstractCuenta
- {
- public CuentaCorriente(String _usuarioNombre, String _contrase)
- {
- super(_usuarioNombre, _contrase);
- }
- @Override
- CuentaType getTipoCuenta()
- {
- return CuentaType.CORRIENTE;
- }
- }
- protected static abstract class AbstractCuenta
- {
- private final String _usuarioNombre;
- private final String _contrase;
- private double saldo;
- public AbstractCuenta(String _usuarioNombre, String _contrase)
- {
- this._usuarioNombre = _usuarioNombre;
- this._contrase = _contrase;
- }
- public void addSaldo(double saldo) {
- }
- abstract CuentaType getTipoCuenta();
- public String getContrase()
- {
- return _contrase;
- }
- public String getUsuarioNombre()
- {
- return _usuarioNombre;
- }
- public double getSaldo()
- {
- return saldo;
- }
- public void setSaldo(double saldo)
- {
- this.saldo = saldo;
- }
- @Override
- public boolean equals(Object obj)
- {
- AbstractCuenta ac = (AbstractCuenta) obj;
- return ac.getUsuarioNombre().equalsIgnoreCase(_usuarioNombre) && ac.getTipoCuenta() == getTipoCuenta();
- }
- }
- protected static enum CuentaType
- {
- CORRIENTE,
- CAJA_AHORRO;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement