Boa noite pessoal, estou desenvolvendo um pequeno programa para transaçoes bancarias que foi proposto em uma atividade. Ja fiz quase tudo que foi proposto porem estou tendo dificuldade para implementar o metodo para mostrar extratos.
Como eu poderia obter o extratos dos saques, depositos e transferencias ?
Codigo:
Classe Banco:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Banco {
public static void main(String[] args) {
HashMap<Integer, ContaCorrente> listaContas = new HashMap<Integer, ContaCorrente>();
Scanner teclado = new Scanner(System.in);
ContaCorrente conta1 = new ContaCorrente(001);
ContaCorrente conta2 = new ContaCorrente(002);
listaContas.put(001,conta1);
listaContas.put(002,conta2);
System.out.println("=============== BANCO ================");
int contador = 1;
while(contador == 1){
System.out.println("Digite a opção desejada: ");
System.out.println("1-Abriar conta");
System.out.println("2-Fechar conta");
System.out.println("3-Saldo");
System.out.println("4-Saque");
System.out.println("5-Deposito");
System.out.println("6-Extrato");
System.out.println("7-Transferencia");
System.out.println("8-Fechar menu");
System.out.print("Opção: ");
int r = teclado.nextInt();
if(r == 1){
conta1.abrirConta();
}else if(r == 2){
conta1.fecharConta();
}else if(r == 3){
conta1.mostrarSaldo();
}else if(r == 4){
System.out.print("Digite o valor que deseja sacar: ");
float valorSaque = teclado.nextFloat();
conta1.sacar(valorSaque);
}else if(r == 5){
System.out.print("Digite o valor que deseja depositar: ");
float valorDep = teclado.nextFloat();
conta1.depositar(valorDep);
}else if(r == 6){
conta1.mostrarExtrato();
}else if(r == 7){
System.out.print("Digite o numero da conta destino: ");
int cdestino = teclado.nextInt();
System.out.print("Digite o valor da transferencia: ");
float valorTransf = teclado.nextFloat();
if(conta1.getSaldoConta() >= valorTransf){
ContaCorrente obj = listaContas.get(cdestino);
conta1.setSaldoConta(conta1.getSaldoConta() - valorTransf);
obj.setSaldoConta(obj.getSaldoConta()+ valorTransf);
System.out.println("Transferencia realizada com sucesso");
System.out.println("Saldo conta1: "+conta1.getSaldoConta());
System.out.println("Saldo conta2: "+conta2.getSaldoConta());
}else{
System.out.println("Saldo insuficiente");
}
}
System.out.print("Deseja outro serviço?: 1-Sim 2-Nao:");
contador = teclado.nextInt();
}
}
}
Classe Conta Corrente:
public class ContaCorrente {
private long numConta;
private float saldoConta;
private boolean contaEspecial;
private float limiteSaque;
private String tipoMovimentacao;
private String statusConta;
public ContaCorrente(int conta){
this.setNumConta(conta);
this.setSaldoConta(0);
this.setContaEspecial(false);
this.setLimiteSaque(0);
this.setStatusConta("Aberta");
}
public void abrirConta(){
this.setNumConta(this.getNumConta());
this.setSaldoConta(50);
this.setContaEspecial(true);
this.setLimiteSaque(500f);
this.setStatusConta("Aberta");
System.out.println("Conta aberta com sucesso");
}
public void fecharConta(){
if(this.getStatusConta()== "Aberta"){
this.setNumConta(0);
this.setSaldoConta(0);
this.setContaEspecial(false);
this.setLimiteSaque(0);
this.setStatusConta("Fechada");
System.out.println("Conta fechada com sucesso.");
}else{
System.out.println("A conta ja encontra-se fechada");
}
}
public void mostrarSaldo(){
System.out.println("Saldo atual: R$ "+this.getSaldoConta());
}
public void sacar(float valor){
if(valor != 0){
if(this.getSaldoConta()>= valor && this.getLimiteSaque()>= valor){
this.setSaldoConta(this.getSaldoConta() - valor);
this.setLimiteSaque(this.getLimiteSaque() - valor);
System.out.println("Saque realizado com sucesso");
}else if(this.getSaldoConta()< valor){
System.out.println("Saldo insuficiente");
}else if(this.getLimiteSaque() < valor && this.getLimiteSaque()!= 0){
System.out.println("O valor esta acima do seu limite de saque");
}else if(this.getLimiteSaque() < valor && this.getLimiteSaque() == 0){
System.out.println("Limite de saque diario atingido");
}
}else{
System.out.println("Valor do saque nao pode ser nulo. Tente novamente");
}
System.out.println("Saldo: R$ "+this.getSaldoConta());
System.out.println("Limite de saque diario: R$ "+this.getLimiteSaque());
}
public void depositar(float valor){
if(valor !=0){
this.setSaldoConta(this.getSaldoConta()+ valor);
System.out.println("Deposito realizado com sucesso");
System.out.println("Saldo: R$ "+this.getSaldoConta());
System.out.println("Limite de saque diario: R$ "+this.getLimiteSaque());
}else{
System.out.println("Valor do deposito nao pode ser nulo. Tente novamente");
}
}
public void mostrarExtrato(){
}
private void setNumConta(long num){
this.numConta = num;
}
private long getNumConta(){
return this.numConta;
}
public void setSaldoConta(float saldo){
this.saldoConta = saldo;
}
public float getSaldoConta(){
return this.saldoConta;
}
private void setContaEspecial(boolean status){
this.contaEspecial = status;
}
private boolean getContaEspecial(){
return this.contaEspecial;
}
private void setLimiteSaque(float limite){
this.limiteSaque = limite;
}
private float getLimiteSaque(){
return this.limiteSaque;
}
private void setTipoMovimentacao(String tipo){
this.tipoMovimentacao = tipo;
}
private String getTipoMovimentacao(){
return this.tipoMovimentacao;
}
private void setStatusConta(String status){
this.statusConta = status;
}
private String getStatusConta(){
return this.statusConta;
}
}