Java - cajero automatico

 
Vista:
Imágen de perfil de luis

cajero automatico

Publicado por luis (3 intervenciones) el 22/07/2022 01:58:37
hola mucho gusto, soy nuevo en esto de java y la verdad necesito ayuda debido a que mi profesor me mando hacer denuedo mi ejercicio ya que no cumplí con lo del constructor y la clave de acceso (por temas de trabajo no me dio tiempo realizarlo correctamente) y tuve que hacerlo por switch. disculpen las molestias pero necesito su ayuda.

Acá esta el enunciado por si lo necesitan:

Realizar en JAVA un programa que simule un cajero automático y que pueda realizar las siguientes operaciones: retiro, deposito y consultar saldo.

condiciones:
-Se debe declarar una clase para el manejo de la cuenta.

-Se debe diseñar un constructor para inicializar el objeto de la clase cuenta.

-Se deben programar eventos para retiros, depósitos, saldos.

-Se debe trabajar con un repita (cualquiera) para controlar que el programa finalice sólo cuando el cliente desea salir.
-Se debe solicitar una clave de acceso



esto es lo que había hecho

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package com.mycompany.cajero;
import java.util.Scanner;
 
public class Cajero {
 
    public static void main(String[] args) {
 
   int saldo = 3000, retirar, deposito;
        Scanner s = new Scanner(System.in);
        while(true)
        {
            System.out.println("BIENVENIDO AL CAJERO AUTOMATICO\n");
            System.out.println("-----------------------------------");
            System.out.println("PRESIONE 1 PARA RETIRAR SALDO");
            System.out.println("PRESIONE 2 PARA DEPOSITAR SALDO");
            System.out.println("PRESIONE 3 PARA VERIFICAR SU SALDO");
            System.out.println("PRESIONE 4 PARA SALIR");
            System.out.println("------------------------------------\n");
            System.out.print("POR FAVOR SELECCIONE LA OPERACION QUE DESEA REALIZAR:");
            int n = s.nextInt();
            switch(n)
            {
                case 1:
                System.out.print("\nINGRESE LA CANTIDAD QUE DESEA RETIRAR:");
                retirar = s.nextInt();
                if(saldo >= retirar)
                {
                    saldo = saldo - retirar;
                    System.out.println("\nDINERO RETIRADO EXITOSAMENTE");
                }
                else
                {
                    System.out.println("\nBALANCE INSUFICIENTE");
                }
 
                System.out.println("");
                break;
 
                case 2:
                System.out.print("\nINGRESE LA CANTIDAD QUE DESEA DEPOSITAR:");
                deposito = s.nextInt();
                saldo = saldo + deposito;
                System.out.println("\nSU DINERO HA SIDO DEPOSITADO EXITOSAMENTE");
 
                break;
 
                case 3:
                System.out.println("SALDO : "+saldo);
 
                break;
 
                case 4:
                System.out.println("GRACIAS POR USAR EL CAJERO AUTOMATICO");
                System.exit(0);
            }
        }
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

cajero automatico

Publicado por Kabuto (1381 intervenciones) el 22/07/2022 10:39:46
Usar switch es correcto. Lo que ocurre es que no has dado una solución orientada a objetos (POO).

Has de crear una clase que modele una cuenta bancaria, con sus atributos y métodos.

Los atributos de una clase Cuenta podrían ser:
- nombre del titular
- PIN de acceso
- saldo

A esta clase le haremos un constructor que solicite valores para inicializar esos atributos.
Y le daremos unos métodos para acceder(get) y modificar(set) los atributos. Además tendrá otros métodos para hacer las operaciones básicas de una Cuenta: ingresar y retirar

Esta podría ser la clase Cuenta
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
public class Cuenta {
	//Atributos de clase
    private String titular;
    private String PIN;
    private double saldo;
 
    //Constructor
    public Cuenta(String titular, String PIN, double saldo) {
        this.titular = titular;
        this.PIN = PIN;
        if (saldo < 0) //Nos aseguramos que no se inicie con saldo negativo
            this.saldo = 0;
        else
            this.saldo = saldo;
    }
 
    //Métodos getter's y setter's
    public String getTitular() {
        return titular;
    }
    public double getSaldo() {
        return saldo;
    }
    public String getPIN() {
    	return PIN;
    }
    public void setTitular(String titular) {
        this.titular = titular;
    }
    public void setSaldo(double saldo) {
        this.saldo = saldo;
    }
    public void setPIN(String PIN) {
    	this.PIN = PIN;
    }
 
    //Métodos para operar con la cuenta
    public void ingresar(double cantidad) {
        if (cantidad > 0) {
        	saldo += cantidad;
        	System.out.println("\nOperacion completada.");
        }
        else
        	System.out.println("\nCantidad a ingresar ha de ser un monto positivo");
    }
 
    public void retirar(double cantidad) {
        if (saldo - cantidad < 0)
        	System.out.println("\nNo hay saldo suficiente para la retirada.");
        else {
        	saldo -= cantidad;
        	System.out.println("\nOperacion completada.");
        }
    }
}


Disponiendo ahora de esta clase, vamos a crear una segunda clase, que será la clase "main" que ponga en marcha el programa.
En esta clase es donde mostraremos el menú de opciones y con el switch haremos las operaciones que nos indique el usuario.

Como es un ejemplo, se podría crear un único objeto Cuenta y operar con él.

Pero ya puestos, y para que se vea mejor las ventajas de la programación orientada a objetos, podemos crear un array con varios objetos Cuenta y operar con todos ellos.
Para cada operación, solicitaremos el PIN a modo de clave de acceso. Buscaremos en el array cuál es la cuenta que tiene ese PIN y si lo encontramos, entonces haremos la operación que se ha solicitado.

Este podría ser el programa principal.
Fíjate que he "modulado" el código en distintos métodos, cada uno dedicado a una tarea en concreto.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
public class Cajero {
 
	//Variables/objetos de ámbito global, visibles para todos los métodos
	private static Cuenta[] cuentas;
	private static Scanner teclado = new Scanner(System.in);
 
	//Programa principal
	public static void main (String[] args) {
		inicializarCuentas();
		int opcion = 0;
 
		while (opcion != 4) {
			System.out.println("\n\t\tCAJERO AUTOMATICO");
			System.out.println("\t\t------ ----------\n");
			System.out.println("[1] Retirar saldo");
			System.out.println("[2] Depositar saldo");
			System.out.println("[3] Consultar saldo");
			System.out.println("[4] SALIR");
			System.out.print("Elija opcion: ");
			opcion = Integer.parseInt(teclado.nextLine());
 
			switch(opcion) {
			case 1:
				retirar();
				break;
			case 2:
				ingresar();
				break;
			case 3:
				consultarSaldo();
				break;
			case 4:
				System.out.println("\n\n\t\tFIN DE PROGRAMA");
				break;
			default:
				System.out.println("\nOpción equivocada");
			}
		}
	}
 
	//Métodos para realizar distinas operaciones
 
	/**
	 * Inicializa el array de objetos Cuenta con unos datos predefinidos
	 * para poder trabajar con distintas cuentas.
	 */
	private static void inicializarCuentas() {
		cuentas = new Cuenta[5];
		cuentas[0] = new Cuenta("Raúl Ramirez", "1234", 450.55);
		cuentas[1] = new Cuenta("Sara Pelaez", "0101", 350.80);
		cuentas[2] = new Cuenta("Pedro Vega", "9876", 200d);
		cuentas[3] = new Cuenta("Laura Juan", "2020", 0d);
		cuentas[4] = new Cuenta("Javier Quesada", "5665", 125d);
 
	}
 
	/**
	 * Pide un PIN al usuario y busca el objeto Cuenta asociado a él.
	 * Si lo encuentra, retorna el objeto Cuenta asociado.
	 * Si no lo encuentra, retorna valor null
	 */
	private static Cuenta buscarPorPIN() {
		System.out.println("\nIntroduzca su PIN de 4 digitos");
		String PIN = teclado.nextLine();
 
		//Buscamos la cuenta con el PIN indicado
		for (int i = 0; i < cuentas.length; i++)
			if (cuentas[i].getPIN().equals(PIN))
				return cuentas[i]; //Si la encontramos, la retornamos
 
		//Si el bucle FOR no ha retornado nada, es que el PIN es incorrecto y retornamos null
		return null;
	}
 
	/**
	 * Permite retirar saldo de una Cuenta, previamente identificada
	 * mediante PIN de acceso
	 */
	private static void retirar() {
 
		Cuenta usuario = buscarPorPIN();
 
		if (usuario == null)
			System.out.println("\nNo existe Cuenta asociada a ese PIN");
		else {
			System.out.print("\nCantidad a retirar: ");
			double cantidad = Double.parseDouble(teclado.nextLine());
			usuario.retirar(cantidad);
		}
	}
 
	/**
	 * Permite ingresar saldo en una Cuenta, previamente identificada
	 * mediante PIN de acceso
	 */
	private static void ingresar() {
 
		Cuenta usuario = buscarPorPIN();
 
		if (usuario == null)
			System.out.println("\nNo existe Cuenta asociada a ese PIN");
		else {
			System.out.print("\nCantidad a ingresar: ");
			double cantidad = Double.parseDouble(teclado.nextLine());
			usuario.ingresar(cantidad);
		}
	}
 
	/**
	 * Permite consultar saldo de una Cuenta, previamente identificada
	 * mediante PIN de acceso
	 */
	private static void consultarSaldo() {
 
		Cuenta usuario = buscarPorPIN();
 
		if (usuario == null)
			System.out.println("\nNo existe Cuenta asociada a ese PIN");
		else
			System.out.println("\nSaldo actual: " + usuario.getSaldo());
	}
}

Pruébalo, y no dudes en preguntar si algo no lo entiendes.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de luis

cajero automatico

Publicado por luis (3 intervenciones) el 22/07/2022 14:48:50
muchas gracias por tu ayuda, me dejaste algunas cosas claras con respecto a esto. Disculpa que te moleste otra vez pero como hago para que sea solo un solo usuario?, ahorita lo trate de modificar para que sea de un solo usuario y un saldo de 350$ pero no me agarraba el codigo xD. disculpa que te moleste otra vez.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

cajero automatico

Publicado por Kabuto (1381 intervenciones) el 23/07/2022 10:29:17
Sustituyes el array de Cuentas, por un único objeto Cuenta. Al inicializarlo en su constructor le indicas con que cantidad quieres comenzar.

Después eliminas las partes del código donde se buscaban cuentas en el array. Ahora el PIN lo pides y validas en los métodos de retirar, ingresar y consultar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
public class Cajero {
 
	//Variables/objetos de ámbito global, visibles para todos los métodos
	private static Cuenta cuenta = new Cuenta("Raúl Ramirez", "1234", 350);
	private static Scanner teclado = new Scanner(System.in);
 
	//Programa principal
	public static void main (String[] args) {
 
		int opcion = 0;
 
		while (opcion != 4) {
			System.out.println("\n\t\tCAJERO AUTOMATICO");
			System.out.println("\t\t------ ----------\n");
			System.out.println("[1] Retirar saldo");
			System.out.println("[2] Depositar saldo");
			System.out.println("[3] Consultar saldo");
			System.out.println("[4] SALIR");
			System.out.print("Elija opcion: ");
			opcion = Integer.parseInt(teclado.nextLine());
 
			switch(opcion) {
			case 1:
				retirar();
				break;
			case 2:
				ingresar();
				break;
			case 3:
				consultarSaldo();
				break;
			case 4:
				System.out.println("\n\n\t\tFIN DE PROGRAMA");
				break;
			default:
				System.out.println("\nOpción equivocada");
			}
		}
	}
 
	//Métodos para realizar distinas operaciones
	/**
	 * Permite retirar saldo de una Cuenta, previamente identificada
	 * mediante PIN de acceso
	 */
	private static void retirar() {
 
		System.out.println("\nIntroduzca su PIN de 4 digitos");
		String PIN = teclado.nextLine();
 
		if (!cuenta.getPIN().equals(PIN))
			System.out.println("\nNo existe Cuenta asociada a ese PIN");
		else {
			System.out.print("\nCantidad a retirar: ");
			double cantidad = Double.parseDouble(teclado.nextLine());
			cuenta.retirar(cantidad);
		}
	}
 
	/**
	 * Permite ingresar saldo en una Cuenta, previamente identificada
	 * mediante PIN de acceso
	 */
	private static void ingresar() {
 
		System.out.println("\nIntroduzca su PIN de 4 digitos");
		String PIN = teclado.nextLine();
 
		if (!cuenta.getPIN().equals(PIN))
			System.out.println("\nNo existe Cuenta asociada a ese PIN");
		else {
			System.out.print("\nCantidad a ingresar: ");
			double cantidad = Double.parseDouble(teclado.nextLine());
			cuenta.ingresar(cantidad);
		}
	}
 
	/**
	 * Permite consultar saldo de una Cuenta, previamente identificada
	 * mediante PIN de acceso
	 */
	private static void consultarSaldo() {
 
		System.out.println("\nIntroduzca su PIN de 4 digitos");
		String PIN = teclado.nextLine();
 
		if (!cuenta.getPIN().equals(PIN))
			System.out.println("\nNo existe Cuenta asociada a ese PIN");
		else
			System.out.println("\nSaldo actual: " + cuenta.getSaldo());
	}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de luis

cajero automatico

Publicado por luis (3 intervenciones) el 26/07/2022 23:03:34
hola amigo, disculpa pero se me habia olvidado agradecerte, de verdad gracias por tu ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar