Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
3
respuestas

Proyecto final del desafío Java: trabajar con listas y colecciones de datos

Se agrego más opciones para el usuario, debido que es una aplicacion para tarjetas

SUPER CLASE PRINCIPAL

    import java.awt.image.ComponentColorModel;
    import java.util.Collections;
    import java.util.Scanner;
    public class PRINCIPAL {
        public static void main(String[] args) {
            Scanner teclado = new Scanner(System.in);
            System.out.println("BIENVENIDOS Al BANCO CENTRAL " + "\nSIGA LAS INSTRUCCIONES DEL MENU" + "\n¡QUE TENGA UN EXCELENTE DIA!");
            //declaracion de variables y/o DATOS IMPORTANTES DE CLIENTE
            String nombreDeUsuario = " Roberto Palazuelos  Calderon ";
            String tipoDeCuenta = "PLATINO ";
            double LimiteDeCreditoTarjeta = 10000;
            double usuarioBanco = 123456;
            double saldoLimite = 0;
            double cliente =0;
            int opcionSalir = 0;
            System.out.println("Por favor, Escriba su Usuario");
            cliente = teclado.nextDouble(); // Se manda a llamar la variable tipo doble entera y se ocupa el metodo y .nextDouble()
            // para leer o digitar un número de tipo decimal que tecleara el Usuario
            if (cliente == usuarioBanco){
                System.out.println( " \n***************************************************************** ");
                System.out.println(" Bienvenido " + nombreDeUsuario + "\n Su Tipo de Cuenta es: " + tipoDeCuenta );
                System.out.println( " \n***************************************************************** ");
                System.out.println( " \n¿Que transaccion desea realizar? ");
                //se crea una variable de tipo texto (String) para realizar un Menu
                String menu = """
                    \n---Seleccione una Opcion del Menu Desplegado---
                    1.- Consulta de Saldo Limite
                    2.- Retiro
                    3.- Deposito/Abono
                    4.- Realizar Compra
                    9.- Salir
                    """;
3 respuestas

CONTINIUACION DE SUPER CLASE PRINCIPAL

while (opcionSalir != 9){  //la condicion 9 NO tiene que ser digitada para que el while se ejecute,es decir,
                        //siempre y cuando la opcion sea diferente de 9 (1,2,3 y 4), se ejecutara el while
                        System.out.println(menu);    //se imprimira el menu en la pantalla
                        opcionSalir = teclado.nextInt();  // al digitar la opcion 9, se rompera el secuencia del codigo para salir del ciclo while
                        switch ( opcionSalir ) {
                            case 1:  //Consulta de Saldo
                                System.out.println("Su saldo actualmente es de: " + LimiteDeCreditoTarjeta + " Euros ✅");
                                break;
                            case 2:  //Retiro
                                System.out.println(" Digite el saldo a que Desea Retirar ") ;
                                double valorARetirar =  teclado.nextDouble(); // si el saldo es insuficiente pasa al IF o ELSE
                                if (LimiteDeCreditoTarjeta < valorARetirar){   // COMPARACION: SI saldo es menor a valor a retirar por el usuario,
                                    // marcara el mensaje de abajo
                                    System.out.println(" \uD83D\uDEAB SALDO INSUFICIENTE ❌ ❗❗❗ ");
                                }else {
                                    LimiteDeCreditoTarjeta = LimiteDeCreditoTarjeta - valorARetirar;  //operacion de resta del saldo total - valor retirado
                                    System.out.printf("USTED RETIRO: "+valorARetirar + " \ny SALDO ACTUALIZADO ES DE: " +LimiteDeCreditoTarjeta+ " EUROS.");
                                }
                                break;
                            case 3:  //Deposito/Abono
                                System.out.println(" Digite el Saldo a Depositar ") ;
                                double valorDepositar =  teclado.nextDouble(); // saldo a depositar por el usuario
                                LimiteDeCreditoTarjeta = LimiteDeCreditoTarjeta + valorDepositar;  //operacion de suma del saldo total + valor depositado
                                System.out.printf("ABONO: "+valorDepositar + " \ny SALDO ACTUALIZADO ES DE: " +LimiteDeCreditoTarjeta+ "EUROS.");
                                break;
                            case 4: //Realizar Compra
                                System.out.println("TIENE UN SALDO LIMITE DE: " + LimiteDeCreditoTarjeta + " \nDIGITE UN SALDO NO MAYOR AL MOSTRADO : ");
                                saldoLimite = teclado.nextDouble();
                                //double saldoActualizado = LimiteDeCreditoTarjeta - saldoLimite;
                                TARJETA_CREDITO tarjeta = new TARJETA_CREDITO(saldoLimite);
                                int SalirAMenu = 7;
                                while(SalirAMenu != 6) {
                                    System.out.println("¿QUE DESEA COMPRAR?");
                                    String descripcion = teclado.next();
                                    System.out.println("COSTO DEL ARTICULO:");
                                    double valor = Double.valueOf(teclado.next());
                                    COMPRA_TARJETA compra = new COMPRA_TARJETA(valor, descripcion);
                                    boolean compraRealizada = tarjeta.lanzarCompra(compra);

                                    if (compraRealizada) {
                                        System.out.println("USTED COMPRO: ");
                                        System.out.println("---OPRIMA LAS SIGUINETES TECLAS PARA LA OPERACION--- \n6 para SALIR ---" + "\n7 para CONTINUAR ---");
                                        SalirAMenu = teclado.nextInt();
                                    } else {
                                        System.out.println(" -----❌❌❌ SALDO INSUFICIENTE ❌❌❌------- ");
                                        SalirAMenu = 6;
                                    }
                                }
                                System.out.println("***********************");
                                System.out.println("✅✅✅COMPRAS REALIZADAS:\n✅✅✅");
                                // AQUI SE ORDENAN LOS VALORES POR VALOR DE COMPRA
                                Collections.sort( tarjeta.getListaDeCompras() );
                                for (COMPRA_TARJETA compra : tarjeta.getListaDeCompras()) {
                                    System.out.println(compra.getDescripcion() + " - " +compra.getValor());
                                }
                                System.out.println("\n***********************");
                                System.out.println("\nSaldo de la tarjeta: " +tarjeta.getSaldo());
                                break;
                            case 9: // Salir
                                System.out.printf("¡GRACIAS POR UTILIZAR NUESTROS SERVICIOS, VUELVA PRONTO!");
                                break;
                            default:
                                System.out.printf("...OPCION INVALIDA, INTETELO DE NUEVO...");
                        }
                    }
                }else {    //OPCION DONDE EL USUARIO NO DIGITO CORRECTAMENTE EL NUMERO DE USUARIO
                    System.out.println(" Usuario Incorrecto " + cliente+ ", Intentelo de Nuevo ");
                }
            }
        }

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

CLASE HIJA TARJETA DE CREDITO import java.util.ArrayList; import java.util.List;

public class TARJETA_CREDITO {

        // atributos o variables
        private double limite;
        private double saldo;
        private List<COMPRA_TARJETA> ListaDeCompras;

        // ------ ZONA DE CONSTRUCTORES----------//

        public TARJETA_CREDITO(double limite) {
            this.limite = limite;  // limite del saldo de tarjeta
            this.saldo = limite;    // saldo = limite de la tarjeta ya que es una tarjeta nueva
            this.ListaDeCompras = new ArrayList< >( );
        }



        // METODO PARA AGREGAR UNA NUEVA COMPRA
        public boolean lanzarCompra (COMPRA_TARJETA compra){

            if ( this.saldo >= compra.getValor() ){
                this.saldo = saldo - compra.getValor();
                this.ListaDeCompras.add(compra);
                return true;
            }
            return false;
        }


        // -------- gets and sets ------------//
        // limite ni saldo tendran sets, debido a que no el limite de la tarjeta no podra ser alterado
        // saldo tampoco tiene set, se requiere que le saldo se actualice de forma automatica


        public double getLimite() {
            return limite;
        }

        public double getSaldo() {
            return saldo;
        }

        public List<COMPRA_TARJETA> getListaDeCompras() {
            return ListaDeCompras;
        }


    }

CLASE HIJA COMPRA TARJETA DE CREDITO

public class COMPRA_TARJETA implements Comparable <COMPRA_TARJETA> {
    // atributos o variables
    private String descripcion;
    private double valor;   // variable o atributo primitivo, se dentra que realizar una conversion

    //IMPLEMENTACION DE METODO PARA LAS COMPRAR
    // AQUI SE CONVIRTEN LOS VALORES private double valor Y  otraCOMPRA
    //PARA ASI SER COMPARARADOS, UNA COMPRA VS OTRA COMPRA

    @Override
    public int compareTo(COMPRA_TARJETA otraCOMPRA) {
        return Double.valueOf(this.valor).compareTo( Double.valueOf(otraCOMPRA.getValor()) );
    }



    // constructor
    // COSNTRUCTOR COMPRA mostrara el valor y descripcion de lo que se esta comprandd


    public COMPRA_TARJETA(double valor, String descripcion) {
        this.valor = valor;
        this.descripcion = descripcion;
    }


    // -------- gets and sets ------------//
    // GETS CREADOS PARA PODER RECIBIR O MIDIFICAR EL VALOR y LA DESCRIPCION DE LA COMPRA Y PODER OBSERVAR
    // LISTADO DE ESE MOMENTO

    public String getDescripcion() {
        return descripcion;
    }

    public double getValor() {
        return valor;
    }

    // modificacion del metodo tostrig ()

    @Override
    public String toString() {
        return "COMPRA_TARJETA: valor= " +  "descripcion='" + descripcion + '\'' +
                ", valor=" + valor +
                '}';
    }



}