Programação Java: Aplicativo: Simulação simples de conta bancária

Linguagem Java , Programação Java, Java Curso gratis.

  • Click here to study this Java app in English

Aplicativo: Conta bancária/Caixa eletrônico simples em Java
**
** Crie um protótipo de caixa eletrônico na linguagem de programação Java . No início, ele pede seu nome e valor $$ inicial que tem na conta. O programa deve fornecer um número de até 4 dígitos número da conta para o usuário (use Random). Esses dados serão usados para criar um objeto da classe “Conta.java”

A seguir, mostra um menu com as opções (esse menu deverá ser um método):
– Extrato: exibe o nome, número da conta, saldo e quantos saques já foram realizados
– Sacar: recebe o valor a ser sacado, informa se pode ser sacado (não pode ficar negativo) e mostra o saldo
– Depositar: recebe o valor a ser depositado e mostra o novo saldo
– Sair

Esse menu aparece até o usuário escolher sair. As outras opções são métodos que devem fazer parte da “Conta.java” (setters e getters). Note que o usuário pode sacar no máximo 5 vezes por dia.

Nesse exercício não vamos usar explicitamente as palavras ‘set’ e ‘get’ nos nomes dos métodos. Mas isso não é necessário. O que vamos usar é sua ideia: a ideia por trás do ‘set’ é a de alterar valores de variáveis, pra isso vamos usar os métodos ‘sacar’ e ‘depositar’, que altera o valor do saldo ; a ideia por trás do ‘get’ é de simplesmente obter informações das variáveis, como é o caso do método ‘extrato’.

Use a main só para iniciar o aplicativo

Inicialmente, no nosso arquivo “Caixa.java”, que contém a ‘main’, criamos uma conta, pedindo um nome e um valor inicial.
Através do comando: 1 + numero.nextInt(9999) nós sorteamos um número de conta de até 4 dígitos (nextInt(9999) gera números de 0 até 9998, somando 1 gera de 1 até 9999).
Com esses dados, criamos uma conta, que na verdade é o objeto ‘minhaConta’ da classe “Conta.java”.
Iniciamos nosso banco ou caixa eletrônico através do método ‘iniciar()’.

Note que tentamos enxugar a ‘main’, pois é uma boa prática. No geral, ela é usada apenas como ‘gatilho’, pra começar o programa e não pra ser enchida de variáveis e linhas de código.
Vamos pra classe “Conta.java”.

Sistema bancário simples em Java

while(opcao != 4 ) ).

<br />import java.util.Scanner;<br />import java.util.Random;<br /><br />public class Caixa {<br /><br /><br /> public static void main(String[] args){<br /> // Declarando as variáveis, Scanner e Random<br /> String nome;<br /> double inicial;<br /> Scanner entrada = new Scanner(System.in);<br /> Random numero = new Random();<br /> int conta = 1 + numero.nextInt(9999);<br /><br /> //Obtendo os dados iniciais do Cliente<br /> System.out.println("Cadastrando novo cliente.");<br /> System.out.print("Ente com seu nome: ");<br /> nome = entrada.nextLine();<br /><br /> System.out.print("Entre com o valor inicial depositado na conta: ");<br /> inicial = entrada.nextDouble();<br /><br /> //Criando a conta de um cliente<br /> Conta minhaConta = new Conta(nome, conta, inicial);<br /> minhaConta.iniciar();<br /> }<br /><br /><br />}<br /><br />

Conta.java

<br />import java.util.Scanner;<br /><br />public class Conta {<br />    private String nome;<br />    private int conta, saques;<br />    private double saldo;<br />    Scanner entrada = new Scanner(System.in);<br /><br />    public Conta(String nome, int conta, double saldo_inicial){<br />        this.nome=nome;<br />        this.conta=conta;<br />        saldo=saldo_inicial;<br />        saques=0;<br />    }<br /><br />    public void extrato(){<br />        System.out.println("\tEXTRATO");<br />        System.out.println("Nome: " + this.nome);<br />        System.out.println("Número da conta: " + this.conta);<br />        System.out.printf("Saldo atual: %.2f\n",this.saldo);<br />        System.out.println("Saques realizados hoje: " + this.saques + "\n");<br /><br />    }<br /><br />    public void sacar(double valor){<br />        if(saldo >= valor){<br />            saldo -= valor;<br />            saques++;<br />            System.out.println("Sacado: " + valor);<br />            System.out.println("Novo saldo: " + saldo + "\n");<br />        } else {<br />            System.out.println("Saldo insuficiente. Faça um depósito\n");<br />        }<br />    }<br /><br />    public void depositar(double valor)<br />    {<br />        saldo += valor;<br />        System.out.println("Depositado: " + valor);<br />        System.out.println("Novo saldo: " + saldo + "\n");<br />    }<br /><br />    public void iniciar(){<br />        int opcao;<br /><br />        do{<br />            exibeMenu();<br />            opcao = entrada.nextInt();<br />            escolheOpcao(opcao);<br />        }while(opcao!=4);<br />    }<br /><br />    public void exibeMenu(){<br /><br />        System.out.println("\t Escolha a opção desejada");<br />        System.out.println("1 Consultar Extrato");<br />        System.out.println("2 Sacar");<br />        System.out.println("3 Depositar");<br />        System.out.println("4 Sair\n");<br />        System.out.print("Opção: ");<br /><br />    }<br /><br />    public void escolheOpcao(int opcao){<br />        double valor;<br /><br />        switch( opcao ){<br />            case 1:    <br />                    extrato();<br />                    break;<br />            case 2: <br />                    if(saques                        System.out.print("Quanto deseja sacar: ");<br />                        valor = entrada.nextDouble();<br />                        sacar(valor);<br />                    } else{<br />                        System.out.println("Limite de saques diários atingidos.\n");<br />                    }<br />                    break;<br /><br />            case 3:<br />                    System.out.print("Quanto deseja depositar: ");<br />                    valor = entrada.nextDouble();<br />                    depositar(valor);<br />                    break;<br /><br />            case 4: <br />                    System.out.println("Sistema encerrado.");<br />                    break;<br /><br />            default:<br />                    System.out.println("Opção inválida");<br />        }<br />    }<br />}<br /><br />

Treinamento Hacker:
Encontre falhas, brechas e erros no aplicativo acima.
As respostas estão em cor branca, logo abaixo, bastando selecionar o texto para visualizar.
Porém, não olhe antes de tentar pensar bastante.


Não foi feito tratamento de erros, para adivinhar as bobagens que os usuários podem digitar.

Por exemplo, se digitar letra onde é pedido número, o sistema irá colapsar.

Note que os valores recebidos pelos métodos ‘sacar’ e ‘depositar’ devem ser positivos. Porém, não fizemos nada para checar isso, sendo portanto, possível burlar esse ‘banco’.
Por exemplo, saque um valor negativo, de  -1 milhão de reais e terá 1 milhão de reais em sua conta 😉
Deve ser por isso que não existe o botão com o símbolo ’-’ no teclado dos bancos…

Do mesmo modo, podemos depositar valores negativos em nossa conta. Mas quem faria isso?