Ajuda com programa

4 respostas
S

Estou com algumas duvidas sobre esse meu programa, falta terminar muita coisa. Mas é o seguinte queria alguma forma para quando acessasse o Switch no case 1 ele guardasse todos os dados que eu inserisse e depois quando através do While eu pedisse para cadastrar mais contas, as contas que eu tivesse criado antes não fossem sobrescritas... outra coisa qual é a melhor forma de associar um objeto da classe Cliente a um objeto da classe Conta?
Agradeço desde já quem puder me ajudar...

public class Cliente {
	
	
	private String nome;
	private String endereço;
	private String cpf;
	private int idade;
	
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
	

	this.nome = nome;
	}
	public String getEndereço() {
		return endereço;
	}
	
	public void setEndereço(String endereço) {
		
		this.endereço = endereço;
		
			
	}
	public String getCpf() {
		return cpf;
	}
	public void setCpf(String cpf) {
		
		this.cpf = cpf;
		
	}
	public int getIdade() {
		return idade;
	}
	public void setIdade(int idade) {
		
		this.idade = idade;
		
	}
	

}
public class Conta 

{
   private double saldo;
   private double limite;
   private int numero;
   Cliente titular; // vê se precisa ser protected ou pode ser private
   private static int totalDeContas;
  
   
   
   
  // gets e sets
   public double getSaldo() {
	return saldo;
}


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


public double getLimite() {
	return limite;
}


public void setLimite(double limite) {
	this.limite = limite;
}


public int getNumero() {
	return numero;
}

public void setNumero(int numero) {
	
	
	this.numero = numero;
}

public Cliente getTitular() {
	return titular;
}

public void setTitular(Cliente titular) {
	this.titular = titular;
}


   //costrutores

Conta(){

Conta.totalDeContas+=1;


}


//metodos

void saca(double valor){
	
	if(valor>this.saldo+this.limite)
	{
		
		System.out.println("O saque não é possivel pois é maior que o limite da conta");
		
	}
	else
	{
	
		this.saldo-=valor;
	}
	
}

void deposita(double valor){
	
	this.saldo+=valor;
	
	
}

void transfere(Conta destino,double valor){
	if(valor>this.saldo+this.limite)
	{
		
		System.out.println("A conta não possui dinheiro suficiente para o deposito");
	
	}
	
	else
	{
		this.saldo-=valor;
		destino.saldo+=valor;		
		
	}

}


}
import java.util.Scanner;

public class ProgramaConta {

	
	public static void main(String[] args) {
		
		//usar swicth case só pra metodos, nunca para guardar valores
		
		int opção;	
		int opçãosair;
		Scanner scanner = new Scanner( System.in );
		
	do{
		
		opçãosair=0;
		
		
		System.out.println("Digite 1 para cadastrar os clientes do banco");
		System.out.println("Digite 2 para visualizar os clientes do banco");
		System.out.println("Digite 3 para visualizar transferencias");
		System.out.println("Digite 0 para sair");
		opção=scanner.nextInt();
		
		switch(opção)
		{
		
		
		
		    case 1:
		
		    	// os objetos contas só vaão ser criados no case 1; é melhor tirar o switch case e coloca ifs
		int opçãowhile;
				
		do {
		
		int numeroDeContas;
		String nome;
		String cpf;
		int numeroConta,idade; 
		double limite;
		
		System.out.println("CADASTRO CLIENTES");
		
		
		System.out.println("Digite o numero de contas que serão criadas");
		numeroDeContas=scanner.nextInt();
		
		Conta[] contas=new Conta[numeroDeContas];
		Cliente[] clientes=new Cliente[numeroDeContas];
		
		
		
		for(int i=0;i<contas.length;i++)
		{
			
			contas[i] = new Conta();
			clientes[i]=new Cliente();
			contas[i].titular=clientes[i];
			
			System.out.println("Digite o nome do cliente");
			nome=scanner.next();
			contas[i].titular.setNome(nome);
			
			System.out.println("Digite o numero do cpf do cliente ");
			cpf=scanner.next();
			contas[i].titular.setCpf(cpf);
			
			System.out.println("Digite a idade do cliente ");
			idade=scanner.nextInt();
			contas[i].titular.setIdade(idade);
			
			System.out.println("Digite o numero da conta ");
			numeroConta=scanner.nextInt();
			if(numeroConta==contas[i].getNumero())
			{
				System.out.println("Esse numero de conta já foi usado porfavor digite outro ");
			}
			else
			{
				contas[i].setNumero(numeroConta);
			
			}
			
			System.out.println("Digite o limite da conta do cliente ");
			limite=scanner.nextDouble();
			contas[i].setLimite(limite);
			
			
			//criar alguma coisa para não perder os dados quando cadastrar mais clientes
		}	
		
		System.out.println("Deseja cadastrar mais clientes sim-1 não-2");
		opçãowhile=scanner.nextInt();	
		}while(opçãowhile==1);	
		
		
		    case 2:
		    	
		    	for(int i=0;i<contas.length;i++) {
		    	
		    	System.out.println(Conta[i].titular.getNome);
		    	System.out.println(contas[i].titular.getCpf);
		    	System.out.println(contas[i].titular.getIdade);
		    	System.out.println(contas[i].titular.getNumero);
		    	}
		    	break;
		    	
		    case 3:
		
		      break;
		      
		      case 0: 
		    	System.out.println("Deseja sair realmente do programa sim-1 não-2");
				opçãosair=scanner.nextInt();
				
		    	
		    
		    
		    
		    
		    break;
		
		}
		
		
		
		
		
		
	}while(opçãosair!=1);
	}
		
	}

4 Respostas

raptor.x

Ola amigo,

Como você não esta usando banco de dados, aconcelho usar uma ArrayList

ArrayList<Clientes> clientes = new ArrayList<Clientes>();

Assim, dentro de seu laço while sempre que terminar de preencher um cliente, você o adiciona ao Array.
Seu codigo ficaria mais ou menos assim:

Clientes cli = new Cliente(); //Criando um obj cliente System.out.println("Digite o nome do cliente"); nome=scanner.next(); //preenchendo os dados ... ... clientes.add(cliente); //Ao final vc adicona o obj ao Array
Um detalhe importante é que o array tem seu índice iniciado em 0.
Espero ter ajudado!

ViniGodoy

A forma correta de declarar uma collection é declarando a variável do tipo da interface:

List&lt;Clientes&gt; clientes = new ArrayList&lt;Clientes&gt;();

Assim fica bem fácil trocar de collection no futuro, ou mesmo retornar uma collection imodificável quando você quiser. :wink:

S

Valeu pessoal!! No meu menu vocês aconselham a deixar o Switch case ?
porque toda vez que coloco no case 2 da erro de compilação. porque os objetos estão sendo criados no case 1 ???

raptor.x

ViniGodoy:
A forma correta de declarar uma collection é declarando a variável do tipo da interface:

List&lt;Clientes&gt; clientes = new ArrayList&lt;Clientes&gt;();

Assim fica bem fácil trocar de collection no futuro, ou mesmo retornar uma collection imodificável quando você quiser. ;)

Boa Vini,
Sempre atento…
Grande abraço!

Obs:… Aprendi muito com seus posts!

Criado 23 de março de 2012
Ultima resposta 24 de mar. de 2012
Respostas 4
Participantes 3