Crianção de um Banco em Java

9 respostas
anderson631

Olá galera, boa tarde.

Faço um curso de Redes de Computadores, e lá aprendemos o básico de Java.

Atualmente, estou com um trabalho do curso de desenvolver um Banco. Com cadastro de contas, titulares da conta, número da conta, depósito, saques, etc.

Bom… Criei 3 Class’s. Programa, Conta e Cliente.

Programa >> Onde está rodando tudo;

Conta >> Variáveis da Conta e funções de depósito e saque;

Cliente >> Variáveis dos Clientes.

Bom … O professor mandou fazer com ArrayList. Peguei um exemplo na internet, e basicamente implementei na minha Class Programa.

Minha Class programa está assim:

//IMPORTA BIBLIOTECA ARRAYLIST
	import java.util.ArrayList;

//IMPORTA BIBLIOTECA GRÁFICA DE FORMULÁRIO
import javax.swing.JOptionPane;


public class Programa

	{

	public static void main(String args[])

		{

		Conta contas;
		contas = new Conta();
		
		//CRIA ARRAYLIST
			ArrayList titulares = new ArrayList();


		//RECEBE DADOS DOS TITULARES POR FORMULÁRIO
			contas.titular.nome = JOptionPane.showInputDialog( null, "NOME: " );
			contas.titular.cpf = JOptionPane.showInputDialog( null, "CPF: " );
			contas.numero = Integer.parseInt( JOptionPane.showInputDialog( null, "NÚMERO DA CONTA: " ) ); 

	
		//ARMAZENA OS DADOS RECEBIDOS EM UMA ARRAYLIST
			titulares.add(contas);


		//IMPRIMI AS INFORMAÇÕES NA TELA
			String str = "NOME: " + contas.titular.nome;
			str = str + "\nCPF: " + contas.titular.cpf;
			str = str + "\nCPF: " + contas.numero;
			JOptionPane.showMessageDialog( null, str );

		}

	}

Pelo pouco que aprendi sobre a ArrayList, ela deve ser estilo uma array. Salva vários dados em uma única variável.

O programa funciona assim (da forma acima):

1 - Abre uma janela pop-up, pedindo o nome, e vamos supor que digito: USUARIO1;
2 - Abre outra janela pop-up, pedindo o CPF, e vamos supor que digito: [CPF removido];
3 - Abre outra janela pop-up, pedindo o número da conta. Vamos supor que digito: 1;

Pronto, até ai tudo bem. Ai logo após isso, é impresso esses 3 dados que digitei.

Mas, se eu executo essa rotina novamente, da seguinte forma:

1 - Abre uma janela pop-up, pedindo o nome, e vamos supor que digito: USUARIO2;
2 - Abre outra janela pop-up, pedindo o CPF, e vamos supor que digito: [CPF removido];
3 - Abre outra janela pop-up, pedindo o número da conta. Vamos supor que digito: 2;

Ai, abre uma janela pop-up com esses últimos dados impressos.

O problema é, como eu faço pra imprimir na tela TODOS os dados digitados? Pq atualmente ele só ta imprimindo os últimos dados digitados, e não todos os digitados.

Basicamente, eu queria que fosse digitado 5 clientes, e os 5 armazenados na memória e depois fosse impresso esses 5 clientes, ao invés de 1, como está sendo impresso atualmente.

Obrigado,
Anderson Ferreira

9 Respostas

renamed

Abaixo:

renamed
/*
* Sempre coloque entre < > o tipo de lista que você terá.
*/
ArrayList<Conta> contas = new ArrayList<Conta>();
for(int i = 0; i < contas.size(); i++){
	Conta atual = contas.get(i);
	 String str = "NOME: " + atual.titular.nome;  //depois da uma olhada pra encapsular isso melhor
         str = str + "\nCPF: " + atual.titular.cpf;  
         str = str + "\nCPF: " + atual.numero;  
         JOptionPane.showMessageDialog( null, str ); 
}

ok?

renamed

Caraca, eu fiz uma lambança no topico aauhahuauha

mas vc entendeu ne? :stuck_out_tongue:

anderson631

Olá …

Então, continua não funcionando :’(

Fiz da seguinte maneira:

//IMPORTA BIBLIOTECA ARRAYLIST
	import java.util.ArrayList;

//IMPORTA BIBLIOTECA GRÁFICA DE FORMULÁRIO
import javax.swing.JOptionPane;


public class Programa

	{

	public static void main(String args[])

		{

		Conta contas;
		contas = new Conta();

		//CRIA ARRAYLIST
			ArrayList<Conta> titulares = new ArrayList<Conta>();


		//RECEBE DADOS DOS TITULARES POR FORMULÁRIO
			contas.titular.nome = JOptionPane.showInputDialog( null, "NOME: " );
			contas.titular.cpf = JOptionPane.showInputDialog( null, "CPF: " );
			contas.numero = Integer.parseInt( JOptionPane.showInputDialog( null, "NÚMERO DA CONTA: " ) );


		//ARMAZENA OS DADOS RECEBIDOS EM UMA ARRAYLIST
			titulares.add(contas);


		//IMPRIME OS DADOS DA ARRAYLIST
			for(int i = 0; i < titulares.size(); i++)
				{
				Conta atual = titulares.get(i);
				String str = "NOME: " + atual.titular.nome;
				str = str + "\nCPF: " + atual.titular.cpf;  
				str = str + "\nNÚMERO: " + atual.numero;  
				JOptionPane.showMessageDialog( null, str ); 
				}

		}

	}
renamed

Cara, seu código está correto, mas se você prestar atenção só está inserindo uma pessoa SEMPRE então obviamente na hora de inserir ele só irá inserir uma pessoa.

Modifique o código para que ele leia as três pessoas que você, use minha parte (o loop) como base e qualquer problema só perguntar :smiley:

LPJava

se usar um for each em seu arraylist vai conseguir imprimir tudo que tiver la.

veja como ele funciona: link

anderson631

Bom, coloquei um for que gira 3 vezes; ou seja, era pra ele capturar os dados de 3 clientes.

O problema que ao término, ele imprimi na tela 3 vezes apenas os dados do último cliente digitado.

O que esta errado ? :S

//IMPORTA BIBLIOTECA ARRAYLIST
	import java.util.ArrayList;

//IMPORTA BIBLIOTECA GRÁFICA DE FORMULÁRIO
import javax.swing.JOptionPane;


public class Programa

	{

	public static void main(String args[])

		{

		Conta contas;
		contas = new Conta();


		//CRIA ARRAYLIST
			ArrayList<Conta> titulares = new ArrayList<Conta>();


		//RECEBE DADOS DOS TITULARES POR FORMULÁRIO E ARMAZENA OS DADOS
			for(int a = 0; a < 3; a++)
				{
				contas.titular.nome = JOptionPane.showInputDialog( null, "NOME: " );
				contas.titular.cpf = JOptionPane.showInputDialog( null, "CPF: " );
				contas.numero = Integer.parseInt( JOptionPane.showInputDialog( null, "NÚMERO DA CONTA: " ) );
				titulares.add(contas);
				}


		//IMPRIME OS DADOS DA ARRAYLIST
			for(int i = 0; i < titulares.size(); i++)
				{
				Conta atual = titulares.get(i);
				String str = "NOME: " + atual.titular.nome;
				str = str + "\nCPF: " + atual.titular.cpf;  
				str = str + "\nNÚMERO: " + atual.numero;  
				JOptionPane.showMessageDialog( null, str ); 
				}

		}

	}
renamed

Olá...

o problema é que você tem que instanciar um objeto do tipo Conta a cada interação no for em que você está lendo os dados.
Do jeito que está sendo feito, você está mantendo a mesma referência para os objetos. Ou seja, você tem três elementos na sua lista literalmente iguais (mesmos valores, mesma área de memória...)

Faça o seguinte...

public static void main(String args[])

		{

		Conta contas = null; //inicie com null
		


		//CRIA ARRAYLIST
			ArrayList<Conta> titulares = new ArrayList<Conta>();


		//RECEBE DADOS DOS TITULARES POR FORMULÁRIO E ARMAZENA OS DADOS
			for(int a = 0; a < 3; a++)
			{
				contas = new Conta(); //a cada interação, crie um novo objeto
				contas.titular.nome = JOptionPane.showInputDialog( null, "NOME: " );
				contas.titular.cpf = JOptionPane.showInputDialog( null, "CPF: " );
				contas.numero = Integer.parseInt( JOptionPane.showInputDialog( null, "NÚMERO DA CONTA: " ) );
				titulares.add(contas);
			}


		//IMPRIME OS DADOS DA ARRAYLIST
			for(int i = 0; i < titulares.size(); i++)				
			{
				Conta atual = titulares.get(i);
				String str = "NOME: " + atual.titular.nome;
				str = str + "\nCPF: " + atual.titular.cpf;  
				str = str + "\nNÚMERO: " + atual.numero;  
				JOptionPane.showMessageDialog( null, str ); 
			}

		}

Para melhorar seu código, crie os atributos private e depois os métodos get e set...

ok?

renamed
Com os atributos private e get e set ficaria assim...
public static void main(String args[])

		{

		Conta contas = null; //inicie com null
		


		//CRIA ARRAYLIST
			ArrayList<Conta> titulares = new ArrayList<Conta>();


		//RECEBE DADOS DOS TITULARES POR FORMULÁRIO E ARMAZENA OS DADOS
			for(int a = 0; a < 3; a++)
			{
				contas = new Conta(); //a cada interação, crie um novo objeto
				contas.getTitular().setNome(JOptionPane.showInputDialog( null, "NOME: " ));
				contas.getTitular().setCpf(JOptionPane.showInputDialog( null, "CPF: " ));
				contas.setNumero(Integer.parseInt( JOptionPane.showInputDialog( null, "NÚMERO DA CONTA: " ) ));
				titulares.add(contas);
			}


		//IMPRIME OS DADOS DA ARRAYLIST
			for(int i = 0; i < titulares.size(); i++)				
			{
				Conta atual = titulares.get(i);
				String str = "NOME: " + atual.getTitular().getNome();
				str = str + "\nCPF: " + atual.getTitular().getCpf();  
				str = str + "\nNÚMERO: " + atual.getNumero();  
				JOptionPane.showMessageDialog( null, str ); 
			}

		}
public class Conta {

	private Titular titular = new Titular();
	private int numero;
	
	public Titular getTitular() {
		return titular;
	}
	public void setTitular(Titular titular) {
		this.titular = titular;
	}
	public int getNumero() {
		return numero;
	}
	public void setNumero(int numero) {
		this.numero = numero;
	}
}
public class Titular {
	private String nome;
	private String cpf;
	
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getCpf() {
		return cpf;
	}
	public void setCpf(String cpf) {
		this.cpf = cpf;
	}
}

ok?

Criado 8 de novembro de 2009
Ultima resposta 10 de nov. de 2009
Respostas 9
Participantes 3