Problemas com o exercicio correntista

8 respostas
C

Olá pessoal!

Eu estou fazendo um programa onde se cadastra um correntista, e ele tem as opções depositar, sacar e gravar estas informações no extrato.
estou com um problema eu preciso criar o metodo abaixo citado para gravar as operações realizadas no extrato, mas to com dificuldade para cria-lo. Alguem pode me ajudar?

+gravarExtrato(operacao: String, valor:
double)
Adiciona ao atributo extrato o saldo antigo,
a operação efetuada, o valor e o saldo
novo, como mostrado a seguir:
extrato += ?Operação: ?+
operacao+?\nSaldo antigo: R$ ?+
String.format(?%.2f?,
(operacao.equals(?Saque?)?saldo+valor :
saldo-valor))+ ?\nValor: R$
?+String.format(?%.2f?, valor)+ ?\nSaldo
novo: R$ ?+String.format(?%.2f?, saldo);

O codigo eu consegui fazer até este ponto usando o MVC. Esta é a classe controller.
package controller;
public class Correntista {
    //Atributos da classe Correntista
    private String nome,senha,extrato;
    private int conta,agencia;
    private double saldo;
    //Método para cadastrar correntista em um vetor de 15 posições um por um
    public void cadastrar(Correntista vet[],int i,String nome,int agencia,int conta,String senha,double saldo)
    {
        vet[i].setNome(nome); 
        vet[i].setAgencia(agencia);
        vet[i].setConta(conta);
        vet[i].setSenha(senha);
        vet[i].setSaldo(saldo);
    }
    
     public boolean validar(Correntista vet[],int i,int conta,int agencia,String senha)
    {
        boolean validar=true;
        if(conta==vet[i].getConta()&&agencia==vet[i].getAgencia()&&senha.equals(vet[i].getSenha()))
            validar=true;
        else 
            validar=false;
        return validar;
    //}

           // validar=false;
        //return validar;
    } 
     
     public boolean verificarDeposito(Correntista vet[],int i,int conta,int agencia)
    {
        boolean validar=true;
        if(conta==vet[i].getConta()&&agencia==vet[i].getAgencia())
            validar=true;
        else 
            validar=false;
        return validar;
     }
     
     public boolean verificarValor(Correntista vet[], int i, double valor)
     {
        boolean validar=true;
        if(valor>0)
            validar=true;
        else
            validar=false;
        return validar;
         
     }
     
     public boolean verificarSaque(Correntista vet[],int i,double valor)
    {
        boolean validar=true;
        if(valor<=saldo)
            validar=true;
        else 
            validar=false;
        return validar;
     }
    
     public double depositar(Correntista vet[], int i, double valor)
     {
        return (vet[i].getSaldo() + valor ); 
     }
     
     public double sacar(Correntista vet[], int i, double valor)
     {
             return (vet[i].getSaldo() - valor);
     }
     
     public void gravarExtrato(Correntista vet[], int i, String operacao, double valor)
     {
         
     }
     
     

     
     
         
     
        
    
    
    //Método para exibir cadastrato
    public String exibir(Correntista vet[],int i)
    {
        return vet[i].getNome()+vet[i].getAgencia()+vet[i].getConta();
        
    }
    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public int getAgencia() {
        return agencia;
    }

    public void setAgencia(int agencia) {
        this.agencia = agencia;
    }

    public int getConta() {
        return conta;
    }

    public void setConta(int conta) {
        this.conta = conta;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public double getSaldo() {
        return saldo;
    }

    public void setSaldo(double saldo) {
        this.saldo = saldo;
    }

    public String getExtrato() {
        return extrato;
    }

    public void setExtrato(String extrato) {
        this.extrato = extrato;
    }
    
} 

Esta é a classe principal
[code]package controller;

import view.VCorrentista;

/**
 *
 * @author coutinho
 */
public class Principal {
    public static void main(String[]args)
    {
        VCorrentista tela=new VCorrentista();
        tela.lerMenu();
    }
}

E esta é a classe View
package view;
import controller.Correntista;
import javax.swing.JOptionPane;
public class VCorrentista {
    private Correntista c;
    private Correntista vet[]=new Correntista[15];
    private int opc,cont=0;
    public VCorrentista()
    {
        c=new Correntista();
        for(int i=0;i<vet.length;i++)
            vet[i]=new Correntista();
    }
    
    //Método para exibir as opções de menu
    public void lerMenu()
    {
        setOpc(Integer.parseInt(JOptionPane.showInputDialog("1- Cadastrar\n2- Depositar\n3- Sacar\n4- Imprimir Extrato\n5- Imprimir Saldo\n0- Sair")));
        executar();
    }
    
    //Método para executar as opções do usuario
    public void executar()
    {
        switch(getOpc())
        {
            case 1:
                for(int i=cont;i<vet.length;i++)
                {
                    c.cadastrar (vet.i(JOptionPane.showInputDialog("Informe o nome"),
                    Integer.parseInt(JOptionPane.showInputDialog("Informe agencia")),
                    Integer.parseInt(JOptionPane.showInputDialog("Informe a conta")),
                     JOptionPane.showInputDialog("Informe a senha")));
                            cont++;
                    lerMenu();
                }
                break;
            case 2:
                           {
                for(int i=0;i<vet.length;i++)
                {
                    int agencia,conta;
                    double valor;
                    agencia=Integer.parseInt(JOptionPane.showInputDialog("Digite o numero da agencia"));
                    conta= Integer.parseInt(JOptionPane.showInputDialog("Digite o numero da Conta"));
                    if(c.verificarDeposito(vet, i, agencia, conta)==true)
                    {
                        JOptionPane.showMessageDialog(null,c.exibir(vet, i));
                        valor=Double.parseDouble(JOptionPane.showInputDialog("Digite o valor do deposito"));
                        while(c.verificarValor(vet, i, valor) !=true)
                        {
                            JOptionPane.showMessageDialog(null,"Valor incorreto, informe novamente!");                            
                            valor=Double.parseDouble(JOptionPane.showInputDialog("Digite o valor do deposito"));
                        }
                        c.setSaldo(valor);
                        JOptionPane.showMessageDialog(null,"Depósito efetuado com sucesso!");
                        JOptionPane.showMessageDialog(null,"Saldo atual"+c.getSaldo());
                    }
                    else
                        JOptionPane.showMessageDialog(null,"Não há nenhum correntista com esse número de agência e conta");
                    lerMenu();
                }
            }
                break;
                
            case 3:
            {
                for(int i=0;i<vet.length;i++)
                {
                    int agencia,conta;
                    double valor;
                    agencia=Integer.parseInt(JOptionPane.showInputDialog("Digite o numero da agencia"));
                    conta= Integer.parseInt(JOptionPane.showInputDialog("Digite o numero da Conta"));
                    if(c.verificarDeposito(vet, i, agencia, conta)==true)
                    {
                        JOptionPane.showMessageDialog(null,c.exibir(vet, i));
                        valor=Double.parseDouble(JOptionPane.showInputDialog("Digite o valor a ser sacado"));
                        while(c.verificarValor(vet, i, valor) !=true)
                        {
                            JOptionPane.showMessageDialog(null,"Valor incorreto, informe novamente!");                            
                            valor=Double.parseDouble(JOptionPane.showInputDialog("Digite o valor a ser sacado"));
                        }
                        c.setSaldo(valor);
                        JOptionPane.showMessageDialog(null,"Saque efetuado com sucesso!");
                        JOptionPane.showMessageDialog(null,"Saldo atual"+c.getSaldo());
                    }
                    else
                        JOptionPane.showMessageDialog(null,"Não há nenhum correntista com esse número de agência e conta");
                    lerMenu();
                }
                
                if(c.verificarSaque(vet, opc, opc) ==true)
                        {
                            c.sacar(vet, opc, opc);
                            JOptionPane.showMessageDialog(null,"Saque efetuado com sucesso!");
                            JOptionPane.showMessageDialog(null,"Saldo atual"+c.sacar(vet, opc, opc));
                        }
            }
            case 0:
                JOptionPane.showConfirmDialog(null,"DESEJA SAIR DO SISTEMA","SAINDO..",JOptionPane.YES_NO_OPTION);
                break;
            default:
                JOptionPane.showMessageDialog(null,"Opção invalida");
            if(getOpc()!=0)
                lerMenu();
        }
    }
    public int getOpc() {
        return opc;
    }

    public void setOpc(int opc) {
        this.opc = opc;
    }
    
    
}
Fico No aguardo. Valeww

8 Respostas

ribclauport

Coutinho fui verificar o que já exisitia de código, e notei que seu método depositar, sempre estava "resgatando", somente o primeiro correntista!
alterei o metodo para verificar no vetor inteiro a existência do correntisa, a mesma alteração, deve ser feita no método sacar
Além disso o metodo depositar estava sempre sobrescrevendo o valor do saldo, segue abaixo o "pedaço código alterado" com "XXX: esse metodo...", ou seja uma marca onde foi alterada a linha ou acrescentada:

case 2:  
                   { 
                	   boolean isCustomer = false; //XXX: esta linha foi adicionada
                	   int agencia,conta;  
                       double valor;  
                       agencia=Integer.parseInt(JOptionPane.showInputDialog("Digite o numero da agencia"));  
                       conta= Integer.parseInt(JOptionPane.showInputDialog("Digite o numero da Conta"));  
                for(int i=0;i&lt;vet.length;i++)  
                {  
                    if(c.verificarDeposito(vet, i, agencia, conta)==true)  
                    {  
                        JOptionPane.showMessageDialog(null,c.exibir(vet, i));  
                        valor=Double.parseDouble(JOptionPane.showInputDialog("Digite o valor do deposito"));  
                        while(c.verificarValor(vet, i, valor) !=true)  
                        {  
                            JOptionPane.showMessageDialog(null,"Valor incorreto, informe novamente!");                              
                            valor=Double.parseDouble(JOptionPane.showInputDialog("Digite o valor do deposito"));  
                        }  
                        vet[i].setSaldo(c.depositar(vet, i, valor)); //XXX esta linha foi alterada
                        JOptionPane.showMessageDialog(null,"Depósito efetuado com sucesso!");  
                        JOptionPane.showMessageDialog(null,"Saldo atual"+vet[i].getSaldo());  
                        isCustomer = true; //XXX esta linha foi adicionada
                        break; //XXX: esta linha foi adicionada
                    }  
                   
                }  
                if(!isCustomer) //esta linha foi adicionada
                	JOptionPane.showMessageDialog(null,"Não há nenhum correntista com esse número de agência e conta");  
                lerMenu();  
            }  
                break;

Sem arrumar o código fica dificil efetuar a funcionalidade que você quer.
Por favor descreva melhor o que seria, "dificuldade em gravar as informações no extrato".>

ribclauport

Alterei o código para funcionar corretamente o saque e o depósito, seguindo sua lógica.

segue abaixo as duas classes ja alteradas:

package controller;  
public class Correntista {  
    //Atributos da classe Correntista  
    private String nome,senha,extrato;  
    private int conta,agencia;  
    private double saldo;  
    //Método para cadastrar correntista em um vetor de 15 posições um por um  
    public void cadastrar(Correntista vet[],int i,String nome,int agencia,int conta,String senha,double saldo)  
    {  
        vet[i].setNome(nome);   
        vet[i].setAgencia(agencia);  
        vet[i].setConta(conta);  
        vet[i].setSenha(senha);  
        vet[i].setSaldo(saldo);  
    }  
      
     public boolean validar(Correntista vet[],int i,int conta,int agencia,String senha)  
    {  
        boolean validar=true;  
        if(conta==vet[i].getConta()&&agencia==vet[i].getAgencia()&&senha.equals(vet[i].getSenha()))  
            validar=true;  
        else   
            validar=false;  
        return validar;  
    //}  
  
           // validar=false;  
        //return validar;  
    }   
       
     public boolean verificarDeposito(Correntista vet[],int i,int conta,int agencia)  
    {  
        boolean validar=true;  
        if(conta==vet[i].getConta()&&agencia==vet[i].getAgencia())  
            validar=true;  
        else   
            validar=false;  
        return validar;  
     }  
       
     public boolean verificarValor(Correntista vet[], int i, double valor)  
     {  
        boolean validar=true;  
        if(valor&gt;0)  
            validar=true;  
        else  
            validar=false;  
        return validar;  
           
     }  
       
     public boolean verificarSaque(Correntista vet[],int i,double valor)  
    {  
       return vet[i].getSaldo()&gt;=valor? true : false;
     }  
      
     public double depositar(Correntista vet[], int i, double valor)  
     {  
        return (vet[i].getSaldo() + valor );   
     }  
       
     public double sacar(Correntista vet[], int i, double valor)  
     {  
             return (vet[i].getSaldo() - valor);  
     }  
       
     public void gravarExtrato(Correntista vet[], int i, String operacao, double valor)  
     {  
           
     }  
      
    
    public String exibir(Correntista vet[],int i)  
    {  
        return vet[i].getNome()+vet[i].getAgencia()+vet[i].getConta();  
          
    }  
    public String getNome() {  
        return nome;  
    }  
  
    public void setNome(String nome) {  
        this.nome = nome;  
    }  
  
    public int getAgencia() {  
        return agencia;  
    }  
  
    public void setAgencia(int agencia) {  
        this.agencia = agencia;  
    }  
  
    public int getConta() {  
        return conta;  
    }  
  
    public void setConta(int conta) {  
        this.conta = conta;  
    }  
  
    public String getSenha() {  
        return senha;  
    }  
  
    public void setSenha(String senha) {  
        this.senha = senha;  
    }  
  
    public double getSaldo() {  
        return saldo;  
    }  
  
    public void setSaldo(double saldo) {  
        this.saldo = saldo;  
    }  
  
    public String getExtrato() {  
        return extrato;  
    }  
  
    public void setExtrato(String extrato) {  
        this.extrato = extrato;  
    }  
      
}
package controller;  
import controller.Correntista;  
import javax.swing.JOptionPane;  
public class VCorrentista {  
    private Correntista c;  
    private Correntista vet[]=new Correntista[15];  
    private int opc,cont=0;  
    public VCorrentista()  
    {  
    	//inicializa vetor com quinze posições
        c=new Correntista();  
        for(int i=0;i&lt;vet.length;i++)  
            vet[i]=new Correntista();  
    }  
      
    //Método para exibir as opções de menu  
    public void lerMenu()  
    {  
        setOpc(Integer.parseInt(JOptionPane.showInputDialog("1- Cadastrar\n2- Depositar\n3- Sacar\n4- Imprimir Extrato\n5- Imprimir Saldo\n0- Sair")));  
        executar();  
    }  
      
    //Método para executar as opções do usuario  
    public void executar()  
    {  
        switch(getOpc())  
        {  
            case 1:  
                for(int i=cont;i&lt;vet.length;i++)  
                {  
                	String nome = JOptionPane.showInputDialog("Informe o nome");
                	int agencia = Integer.parseInt(JOptionPane.showInputDialog("Informe agencia"));
                	int conta = Integer.parseInt(JOptionPane.showInputDialog("Informe a conta"));
                	String senha = JOptionPane.showInputDialog("Informe a senha");  
                	
                	
                    c.cadastrar (vet,cont,nome,agencia,conta,senha,0);  
                            cont++;  
                    lerMenu();  
                }  
                break;  
            case 2:  
                   { 
                	   boolean isCustomer = false; //XXX: esta linha foi adicionada
                	   int agencia,conta;  
                       double valor;  
                       agencia=Integer.parseInt(JOptionPane.showInputDialog("Digite o numero da agencia"));  
                       conta= Integer.parseInt(JOptionPane.showInputDialog("Digite o numero da Conta"));  
                for(int i=0;i&lt;vet.length;i++)  
                {  
                    if(c.verificarDeposito(vet, i, agencia, conta)==true)  
                    {  
                        JOptionPane.showMessageDialog(null,c.exibir(vet, i));  
                        valor=Double.parseDouble(JOptionPane.showInputDialog("Digite o valor do deposito"));  
                        while(c.verificarValor(vet, i, valor) !=true)  
                        {  
                            JOptionPane.showMessageDialog(null,"Valor incorreto, informe novamente!");                              
                            valor=Double.parseDouble(JOptionPane.showInputDialog("Digite o valor do deposito"));  
                        }  
                        vet[i].setSaldo(c.depositar(vet, i, valor)); //XXX esta linha foi alterada
                        JOptionPane.showMessageDialog(null,"Depósito efetuado com sucesso!");  
                        JOptionPane.showMessageDialog(null,"Saldo atual"+vet[i].getSaldo());  
                        isCustomer = true; //XXX esta linha foi adicionada
                        break; //XXX: esta linha foi adicionada
                    }  
                   
                }  
                if(!isCustomer) //esta linha foi adicionada
                	JOptionPane.showMessageDialog(null,"Não há nenhum correntista com esse número de agência e conta");  
                lerMenu();  
            }  
                break;  
                  
            case 3:  
            {  
                for(int i=0;i&lt;vet.length;i++)  
                {  
                	boolean isCustomer = false; //XXX: esta linha foi adicionada
                    int agencia,conta;  
                    double valor;  
                    agencia=Integer.parseInt(JOptionPane.showInputDialog("Digite o numero da agencia"));  
                    conta= Integer.parseInt(JOptionPane.showInputDialog("Digite o numero da Conta"));  
                    if(c.verificarDeposito(vet, i, agencia, conta)==true)  
                    {  
                        JOptionPane.showMessageDialog(null,c.exibir(vet, i));  
                        valor=Double.parseDouble(JOptionPane.showInputDialog("Digite o valor a ser sacado"));  
                        while(c.verificarValor(vet, i, valor) !=true)  
                        {  
                            JOptionPane.showMessageDialog(null,"Valor incorreto, informe novamente!");                              
                            valor=Double.parseDouble(JOptionPane.showInputDialog("Digite o valor a ser sacado"));  
                        }  
                        if(c.verificarSaque(vet, i, valor)){
	                        vet[i].setSaldo(c.sacar(vet, i, valor)); //XXX esta linha foi alterada
	                        JOptionPane.showMessageDialog(null,"Saque efetuado com sucesso!");  
	                        JOptionPane.showMessageDialog(null,"Saldo atual" + vet[i].getSaldo());  
	                        isCustomer = true; //XXX esta linha foi adicionada
	                        break; //XXX: esta linha foi adicionada
                        }else{
                        	 JOptionPane.showMessageDialog(null,"Saldo insuficiente");  
                        }
                    }  
                    if(!isCustomer) //esta linha foi adicionada
                    	JOptionPane.showMessageDialog(null,"Não há nenhum correntista com esse número de agência e conta");  
                    lerMenu();  
                  
                }  
                  
              
            }  
            case 0:  
               int sai = JOptionPane.showConfirmDialog(null,"DESEJA SAIR DO SISTEMA","SAINDO..",JOptionPane.YES_NO_OPTION);  
                if(sai == 0){
                	JOptionPane.showMessageDialog(null, "tchau");
                	  break;  
                }else{
                	lerMenu();
                }
                
              
            default:  
                JOptionPane.showMessageDialog(null,"Opção invalida");  
            if(getOpc()!=0)  
                lerMenu();  
        }  
    }  
    public int getOpc() {  
        return opc;  
    }  

    public void setOpc(int opc) {  
        this.opc = opc;  
    }  
      
      
}

Agora aguardo o que você quer com relação ao estrato, descrevar, quero entrar com a conta e agencia, e quero que aparece os seguintes daddos no extrato..

aguardo.>

ribclauport

Segue o código com um possível exemplo de extrato, testei aqui e está funcionando:

package controller;  


import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

public class Correntista {  
    //Atributos da classe Correntista  
    private String nome,senha;  
    private int conta,agencia;  
    private double saldo;
    StringBuilder extrato = new StringBuilder();
    //Método para cadastrar correntista em um vetor de 15 posições um por um  
    public void cadastrar(Correntista vet[],int i,String nome,int agencia,int conta,String senha,double saldo)  
    {  
        vet[i].setNome(nome);   
        vet[i].setAgencia(agencia);  
        vet[i].setConta(conta);  
        vet[i].setSenha(senha);  
        vet[i].setSaldo(saldo);  
    }  
      
     public boolean validar(Correntista vet[],int i,int conta,int agencia,String senha)  
    {  
        boolean validar=true;  
        if(conta==vet[i].getConta()&&agencia==vet[i].getAgencia()&&senha.equals(vet[i].getSenha()))  
            validar=true;  
        else   
            validar=false;  
        return validar;  
    //}  
  
           // validar=false;  
        //return validar;  
    }   
       
     public boolean verificarDeposito(Correntista vet[],int i,int conta,int agencia)  
    {  
        boolean validar=true;  
        if(conta==vet[i].getConta()&&agencia==vet[i].getAgencia())  
            validar=true;  
        else   
            validar=false;  
        return validar;  
     }  
       
     public boolean verificarValor(Correntista vet[], int i, double valor)  
     {  
        boolean validar=true;  
        if(valor&gt;0)  
            validar=true;  
        else  
            validar=false;  
        return validar;  
           
     }  
       
     public boolean verificarSaque(Correntista vet[],int i,double valor)  
    {  
       return vet[i].getSaldo()&gt;=valor? true : false;
     }  
      
     public double depositar(Correntista vet[], int i, double valor)  
     {  
        return (vet[i].getSaldo() + valor );   
     }  
       
     public double sacar(Correntista vet[], int i, double valor)  
     {  
             return (vet[i].getSaldo() - valor);  
     }  
       
     public void gravarExtrato(Correntista vet[], int i, String operacao, double valor)  
     {  
    	
    	DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT,new Locale(&quot;pt&quot;,&quot;BR&quot;));
    	vet[i].extrato.append(&quot;Operação :&quot; + operacao+&quot;\n&quot;);  
    	vet[i].extrato.append(&quot;valor&quot; + valor+&quot;\n&quot;);
    	vet[i].extrato.append(&quot;Data&quot; + df.format(new Date())+&quot;\n&quot;);
    	vet[i].extrato.append(&quot;Saldo Atual &quot; + vet[i].getSaldo()+&quot;\n&quot;);
    	vet[i].extrato.append(&quot;-------------------------------------------&quot;+&quot;\n&quot;);
     }  
      
    
    public String exibir(Correntista vet[],int i)  
    {  
        return vet[i].getNome()+vet[i].getAgencia()+vet[i].getConta();  
          
    }  
    public String getNome() {  
        return nome;  
    }  
  
    public void setNome(String nome) {  
        this.nome = nome;  
    }  
  
    public int getAgencia() {  
        return agencia;  
    }  
  
    public void setAgencia(int agencia) {  
        this.agencia = agencia;  
    }  
  
    public int getConta() {  
        return conta;  
    }  
  
    public void setConta(int conta) {  
        this.conta = conta;  
    }  
  
    public String getSenha() {  
        return senha;  
    }  
  
    public void setSenha(String senha) {  
        this.senha = senha;  
    }  
  
    public double getSaldo() {  
        return saldo;  
    }  
  
    public void setSaldo(double saldo) {  
        this.saldo = saldo;  
    }  
  
    public StringBuilder getExtrato() {  
        return extrato;  
    }  
  
    public void setExtrato(StringBuilder extrato) {  
        this.extrato = extrato;  
    }  
      
}
package controller;  
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class VCorrentista {  
    private Correntista c;  
    private Correntista vet[]=new Correntista[15];  
    private int opc,cont=0;  
    public VCorrentista()  
    {  
    	//inicializa vetor com quinze posições
        c=new Correntista();  
        for(int i=0;i&lt;vet.length;i++)  
            vet[i]=new Correntista();  
    }  
      
    //Método para exibir as opções de menu  
    public void lerMenu()  
    {  
        setOpc(Integer.parseInt(JOptionPane.showInputDialog("1- Cadastrar\n2- Depositar\n3- Sacar\n4- Imprimir Extrato\n5- Imprimir Saldo\n0- Sair")));  
        executar();  
    }  
      
    //Método para executar as opções do usuario  
    public void executar()  
    {  
        switch(getOpc())  
        {  
            case 1:  
                for(int i=cont;i&lt;vet.length;i++)  
                {  
                	String nome = JOptionPane.showInputDialog("Informe o nome");
                	int agencia = Integer.parseInt(JOptionPane.showInputDialog("Informe agencia"));
                	int conta = Integer.parseInt(JOptionPane.showInputDialog("Informe a conta"));
                	String senha = JOptionPane.showInputDialog("Informe a senha");  
                	
                	
                    c.cadastrar (vet,cont,nome,agencia,conta,senha,0);  
                            cont++;  
                    lerMenu();  
                }  
                break;  
            case 2:  
                   { 
                	   boolean isCustomer = false; //XXX: esta linha foi adicionada
                	   int agencia,conta;  
                       double valor;  
                       agencia=Integer.parseInt(JOptionPane.showInputDialog("Digite o numero da agencia"));  
                       conta= Integer.parseInt(JOptionPane.showInputDialog("Digite o numero da Conta"));  
                for(int i=0;i&lt;vet.length;i++)  
                {  
                    if(c.verificarDeposito(vet, i, agencia, conta)==true)  
                    {  
                        JOptionPane.showMessageDialog(null,c.exibir(vet, i));  
                        valor=Double.parseDouble(JOptionPane.showInputDialog("Digite o valor do deposito"));  
                        while(c.verificarValor(vet, i, valor) !=true)  
                        {  
                            JOptionPane.showMessageDialog(null,"Valor incorreto, informe novamente!");                              
                            valor=Double.parseDouble(JOptionPane.showInputDialog("Digite o valor do deposito"));  
                        }  
                        vet[i].setSaldo(c.depositar(vet, i, valor)); //XXX esta linha foi alterada
                        JOptionPane.showMessageDialog(null,"Depósito efetuado com sucesso!");  
                        JOptionPane.showMessageDialog(null,"Saldo atual"+vet[i].getSaldo());  
                        c.gravarExtrato(vet, i, "deposito", valor);
                        isCustomer = true; //XXX esta linha foi adicionada
                        break; //XXX: esta linha foi adicionada
                    }  
                   
                }  
                if(!isCustomer) //esta linha foi adicionada
                	JOptionPane.showMessageDialog(null,"Não há nenhum correntista com esse número de agência e conta");  
                lerMenu();  
            }  
                break;  
                  
            case 3:  
            {  
				boolean isCustomer = false; //XXX: esta linha foi adicionada
				int agencia,conta;  
				double valor;  
				agencia=Integer.parseInt(JOptionPane.showInputDialog("Digite o numero da agencia"));  
				conta= Integer.parseInt(JOptionPane.showInputDialog("Digite o numero da Conta"));  
				
                for(int i=0;i&lt;vet.length;i++)  
                {  
                	
                    if(c.verificarDeposito(vet, i, agencia, conta)==true)  
                    {  
                        JOptionPane.showMessageDialog(null,c.exibir(vet, i));  
                        valor=Double.parseDouble(JOptionPane.showInputDialog("Digite o valor a ser sacado"));  
                        while(c.verificarValor(vet, i, valor) !=true)  
                        {  
                            JOptionPane.showMessageDialog(null,"Valor incorreto, informe novamente!");                              
                            valor=Double.parseDouble(JOptionPane.showInputDialog("Digite o valor a ser sacado"));  
                        }  
                        if(c.verificarSaque(vet, i, valor)){
	                        vet[i].setSaldo(c.sacar(vet, i, valor)); //XXX esta linha foi alterada
	                        JOptionPane.showMessageDialog(null,"Saque efetuado com sucesso!");  
	                        JOptionPane.showMessageDialog(null,"Saldo atual" + vet[i].getSaldo());  
	                        c.gravarExtrato(vet, i, "saque", valor);
	                        isCustomer = true; //XXX esta linha foi adicionada
	                        break; //XXX: esta linha foi adicionada
                        }else{
                        	 JOptionPane.showMessageDialog(null,"Saldo insuficiente");  
                        }
                    }  
                  
                }  
                if(!isCustomer) //esta linha foi adicionada
                	JOptionPane.showMessageDialog(null,"Não há nenhum correntista com esse número de agência e conta");  
                lerMenu();  
                  
              
            }  
            
            case 4:  
            {  
                for(int i=0;i&lt;vet.length;i++)  
                {  
                	boolean isCustomer = false; //XXX: esta linha foi adicionada
                    int agencia,conta;  
                    double valor;  
                    agencia=Integer.parseInt(JOptionPane.showInputDialog("Digite o numero da agencia"));  
                    conta= Integer.parseInt(JOptionPane.showInputDialog("Digite o numero da Conta"));  
                    if(c.verificarDeposito(vet, i, agencia, conta)==true)  
                    {  
                    	 JTextArea ta = new JTextArea(20,50); // Text area  
                         ta.setText(vet[i].getExtrato().toString());  
                         JScrollPane sbrText;  
                         ta.setLineWrap(true);  
                         sbrText = new JScrollPane(ta);  
                         sbrText.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);   
                         JOptionPane.showMessageDialog(null,sbrText,"Cadastro",JOptionPane.INFORMATION_MESSAGE);  
                         isCustomer = true;
                         
                    }  
                    if(!isCustomer) //esta linha foi adicionada
                    	JOptionPane.showMessageDialog(null,"Não há nenhum correntista com esse número de agência e conta");  
                    lerMenu();  
                  
                }  
                  
              
            }  
            
            case 0:  
               int sai = JOptionPane.showConfirmDialog(null,"DESEJA SAIR DO SISTEMA","SAINDO..",JOptionPane.YES_NO_OPTION);  
                if(sai == 0){
                	System.exit(0);  
                }else{
                	lerMenu();
                }
              
            default:  
                JOptionPane.showMessageDialog(null,"Opção invalida");  
            if(getOpc()!=0)  
                lerMenu();  
        }  
    }  
    public int getOpc() {  
        return opc;  
    }  

    public void setOpc(int opc) {  
        this.opc = opc;  
    }  
      
      
}

Neste caso foi usado um JTextArea...
achei interessante a aparência, lógico que é apenas para estudar, pois jamais seria feito assim em um sistema real, teste esse código, que é só a idéia de como pode ser feito, e qualquer coisa poste suas dúvidas

Espero ter ajudado.>

C

Eu preciso gravar todas as movimentações q forem realizadas para caso seja escolhida uma dessas opções possa exibir todas as movimentações efetuadas.

Eu preciso criar este metodo com estas especificações para poder gravar e exibir todas as movimentações.

+gravarExtrato(operacao: String, valor:

double)

Adiciona ao atributo extrato o saldo antigo,

a operação efetuada, o valor e o saldo

novo, como mostrado a seguir:

extrato += ?Operação: ?+

operacao+?\nSaldo antigo: R$ ?+

String.format(?%.2f?,

(operacao.equals(?Saque?)?saldo+valor :

saldo-valor))+ ?\nValor: R$

?+String.format(?%.2f?, valor)+ ?\nSaldo

novo: R$ ?+String.format(?%.2f?, saldo);

Ao escolher Imprimir Extrato, exiba um JOptionPane.showInputDialog para
solicitar o número da agência, conta e senha. Deve ser chamado o método validar que,
se retornar false, deve ser exibida um JOptionPane.showMessageDialog com a
mensagem ?Dados do correntista não conferem?, caso contrário, exiba um
JOptionPane.showMessageDialog exibindo todo o extrato das movimentações da conta
do correntista.

Ao escolher Imprimir Saldo, exiba um JOptionPane.showInputDialog para solicitar
o número da agência, conta e senha. Deve ser chamado o método validar que, se
retornar false, deve ser exibida um JOptionPane.showMessageDialog com a mensagem
?Dados do correntista não conferem?, caso contrário, exiba um
JOptionPane.showMessageDialog exibindo o saldo atual do correntista.

ribclauport

Testou o código que postei?

A parte do extrato está funcionando, está abrindo em JoptionPane, porem com um TextArea dentro por causa do scroll…
do resto é so adaptar.

C

Valew pessoal vou adaptar aqui agora acho que consigo.
Obrigado!

ribclauport

Se seu problema foi resolvido, edite o post e coloque “[Resolvido]problemas com o exercicio correntista”
pois assim ninguém vai verificar para responder uma questão já resolvida.

Att.

C

[Resolvido] Pessoal valew pela ajuda aew deu tudo certo.
Valeww

Criado 22 de março de 2012
Ultima resposta 27 de mar. de 2012
Respostas 8
Participantes 2