✅✅✅ Cajero Automático En Java [Ejercicio]
Categorías: Java

Cajero Automático En Java [Ejercicio]

El ejercicio del Cajero Automático en Java es uno de los ejercicios más interesantes para realizar, ya que podemos integrar diversos conceptos en un ejemplo concreto de la vida cotidiana. Por tal motivo quiero compartir el código de un cajero automático (básico), en el cual usaremos los cuadros de dialogo de java, para dar un ambiente algo gráfico, mas adelante compartiré uno «mas bonito» en el sentido de que sera con un formulario básico como el del siguiente ejemplo, botones, algo mas llamativo para el usuario.
Clase Que Contiene el Ejercicio
Ahora bien, estableceré los requisitos funcionales de la aplicación, inicialmente la aplicación tendrá una sola cuenta, esta cuenta contara con un valor inicial y una contraseña; la aplicación podrá mostrar el saldo de la cuenta, consignar un valor, retirar un valor y cambiar la clave. Al momento de retirar «dinero», este mostrará 5 valores opcionales: 5000, 10.000, 20.000, 50.000, 100.000, ademas de la opción de retirar un valor diferente a los mostrados. Se trabajaran con números enteros, si se desea trabajar con decimales pueden modificar el tipo de las variables 😉

Ademas de lo anterior se validaran si son números los que se ingresan como datos, si se ingresan las opciones correctas, si los valores a descontar no superan el limite mínimo a dejar en la cuenta como saldo (10.000),  ademas una validación opcional que hice fue al cambiar la contraseña, si esta contenía menos de tres caracteres no podría ser modificada. Ahora habiendo definido lo que hará y que se manejara, veremos el código:

Desbloquea el contenido con una acción social...

Comparte este articulo y obtén el contenido premium!

Facebook
Twitter
Linkedin0

Clase Que Contiene el Método Principal

Ver Código Clase Principal
package ejercajero;

public class EjerCajero {
    
    public static void main(String[] args) {
        
        cajero2 trin = new cajero2(); //creacion del objeto para la manipulacion de los metodos de la clase cajero2        
        trin.menu();//invocacion del menu por medio del objeto trin
        System.exit(0); //cuando se sale del menu se finaliza la aplicacion
    }    
}

Clase Que Contiene el Ejercicio

Ver Código Clase Ejercicio
package ejercajero;

import javax.swing.JOptionPane;//importacion necesaria para el uso de los cuadros de dialogo

public class cajero2 {
    
    //variables globales para que puedan ser modificados de ser necesario
    int saldo=90000; //saldo inicial
    String clave="1234";//clave predeterminada
    
    public void menu(){//metodo que contiene el menu de la aplicacion
        
        String ax;
        int op=0;        
        do{
            ax = JOptionPane.showInputDialog(null, "1. Saldo n 2. Consignar n 3. Retirar n 4. Cambiar Clave n 5. Salir");
            if(ax!=null && auxi.isNum(ax)){//validacion para el menu
                op = Integer.parseInt(ax);
                switch(op){
                    case 1:
                        verSal(); break; 
                    case 2:
                        consig(); break;
                    case 3:
                        retirar(); break;
                    case 4: 
                        chanPass(); break;
                }    
            }else{
                JOptionPane.showMessageDialog(null, "Digite una opcion valida....");
            }                    
        }while(op !=5);//cuando se digita 5 se finaliza la aplicacion        
    }
    
    public void verSal(){//metodo para ver el saldo de la cuenta
        JOptionPane.showMessageDialog(null, "Tu saldo a la fecha es: "+saldo);
    }
    
    public void consig(){//metodo para realizar la consignacion
        String ax; int consig=0;        
        
        ax = JOptionPane.showInputDialog(null, "Cuanto desea consginar? ");
        if((ax!=null) && !ax.equals("") && auxi.isNum(ax)){//triple validacion, si se ingreso algo, y si es numero lo ingresado            
            consig = Integer.parseInt(ax);
            if(consig>0){//si el valor a consignar es mayor que 0 se realiza la consignacion
                saldo+=consig;//se suma el nuevo valor al saldo
            }else{
                JOptionPane.showMessageDialog(null, "Consigne una cantidad mayor a 0 !!!");
            }                    
        }else{
             JOptionPane.showMessageDialog(null, "Ingrese un valor a consignar!!!");
        }
    }
    
    public void retirar(){//metodo para retirar del saldo
        
        String ax;                
        ax = JOptionPane.showInputDialog(null, "Digite su clave.... ");
        
        if(ax==null){//validacion por si se selecciona cancelar del cuadro de dialogo y evitar errores 
            
        }else{
            if(!ax.equals("")){            
                if(ax.equals(clave)){//si la clave digitada coincide con la clave
                    ax = JOptionPane.showInputDialog(null, "a. 5000 n b. 10.000 n c. 20.000 n d. 50.000n e. 100.000n f. Ingresar valor",
                            "CANTIDAD A RETIRAR", JOptionPane.INFORMATION_MESSAGE);
                    if(ax!=null){
                        if(!ax.equals("")){
                            switch(ax){
                                case "a":
                                    if((saldo-5000>=10000)){//se verifica si al retirar queda con un saldo minimo de 10.000
                                        saldo-=5000;
                                    }                            
                                    break;
                                case "b":
                                   if((saldo-10000>=10000)){//se verifica si al retirar queda con un saldo minimo de 10.000
                                        saldo-=10000;
                                    }
                                    break;
                                case "c":
                                   if((saldo-20000>=10000)){//se verifica si al retirar queda con un saldo minimo de 10.000
                                        saldo-=20000;
                                    }
                                    break;
                                case "d":
                                    if((saldo-50000>=10000)){//se verifica si al retirar queda con un saldo minimo de 10.000
                                        saldo-=50000;
                                    }
                                    break;
                                case "e":
                                    if((saldo-100000>=10000)){//se verifica si al retirar queda con un saldo minimo de 10.000
                                        saldo-=100000;
                                    }
                                    break;
                                case "f":
                                    ax = JOptionPane.showInputDialog(null, "Digite el valor a retirar: ");
                                    if(!ax.equals("") && auxi.isNum(ax) && (Integer.parseInt(ax)>0) && (saldo-Integer.parseInt(ax)>=10000) ){
                                        saldo-= Integer.parseInt(ax);
                                    }
                                    break;
                                default:
                                    JOptionPane.showMessageDialog(null, "Digite una opcion valida", "OPCION INCORRECTA", JOptionPane.ERROR_MESSAGE);
                                    break;
                            }             
                        } 
                    }
                }
                else{
                    JOptionPane.showMessageDialog(null, "La clave ingresada no coincide....");
                }
            }
        }              
    }
   
    public void chanPass(){//metodo para cambiar la contraseña
        
        String ax, cl;
        
        ax = JOptionPane.showInputDialog(null, "Digite su clave....");
        if(ax!=null){
            if(!ax.equals("")){            
                if(ax.equals(clave)){//si la clave digitada coincide con la clave que existe
                   cl = JOptionPane.showInputDialog(null, "Digite su nueva clave");
                   if(cl!=null){
                       if(cl.length()>3){//si el tamaño de la nueva contraseña tiene mas de 3 caracteres se puede cambiar
                            ax=null;//se elimina el valor contenido con anterioridad de la variable
                            ax="Su anterior clave es:"+clave;
                            clave=cl;
                            ax+="nSu nueva clave es: "+clave; 
                            JOptionPane.showMessageDialog(null, ax);
                       }
                       else{
                            JOptionPane.showMessageDialog(null, "La clave que desea cambiar es muy corta...");
                       }
                   }                   
                }
                else{
                    JOptionPane.showMessageDialog(null, "La clave ingresada no coincide....");
                }
            }
        }        
    }
}

Clase con Validación de Numero

Ver Código Clase Validar Números
package ejercajero;

public class auxi {
    
    public static boolean isNum(String a){//metodo para validar si es un numero        
        
        try{
            int b = Integer.parseInt(a);
            return true;//si se puede convertir a numero devuelve verdadero
        }
        catch(NumberFormatException e){
            return false;//si no se puede convertir a numero devuelve falso
        }        
    }
    
}

Ejecución del Cajero Automático

El código se puede optimizar tratando de llevar a la realidad el funcionamiento de un verdadero cajero automático, al servir este para varios usuarios, una solución para esto es usar arreglos. Ademas pueden personalizar los cuadros de dialogo; espero que el anterior código sea de gran utilidad.

Si te ha gustado el post, compártelo, regala un like ó comenta 😉

WP Dev JaGonzalez

Hijo, esposo y padre de un hermoso niño. Amante de los animales, la tecnología, informática y programación. Si tienes alguna duda, inquietud, comentario o deseas comunicarte directamente conmigo, puedes enviarme un correo electrónico a admin@jagonzalez.org

Ver comentarios

1 2 3 6
Compartir
Publicado por
WP Dev JaGonzalez

Entradas recientes

iPhone Hackeado: Qué Hacer para Proteger tu Dispositivo y Asegurar tu Seguridad

¿Has notado aplicaciones desconocidas o un drenaje inesperado de la batería? Estos podrían ser indicios…

2 semanas hace

Cómo Restablecer un iPhone a su Estado de Fábrica

Saber cómo Restablecer un iPhone a su Estado de Fábrica es clave para solucionar problemas…

2 semanas hace

Motorola planea lanzar al menos dos nuevos teléfonos Moto G en septiembre

Motorola ha confirmado el lanzamiento de Moto G84 5G y Moto G54 5G en India,…

1 año hace

El equipo de WizardLM afirma que un modelo de IA de terceros les robó el trabajo

Recuerde WizardCoder, ¿el codificador de IA que cubrimos recientemente aquí en Windows Report? Nos jactamos…

1 año hace

Las fallas del complemento Jupiter X Core amenazaron a 172.000 sitios web con apropiaciones de cuentas

Los investigadores han descubierto numerosos fallos de seguridad en el complemento WordPress Jupiter X Core…

1 año hace

Consola portátil Xbox: aquí tienes todo lo que necesitas saber al respecto

Para solucionar problemas del sistema de PC con Windows, necesitará una herramienta dedicada Fortect es…

1 año hace