Duvida com cadastro

7 respostas
D

ai galera eh o seguinte, to fazendo um sisteminha simples aki. eh uma loja, nela eu faço cadastro de clientes, cadastro de produtos e faço compras.

tenho a classe cliente que tem nome, cpf como atributos
a classe produto que tem codigo,preço como atributos

tenho a classe gerenciadorCliente que possui os metodos de cadsatrar e pesquisar um cliente
e a classe gerenciadorProduto que tem tb seus metodos de cadastrar e pesquisar um produto.

e tenho a classe venda que eh o main.
o problema que ta dando é que quando eu cadastro 2 produtos por exemplo, o primeiro some.
alguem poderia me ajudar?
e tambem se é necessario essas classes de gerenciadorCliente e Produto.

eis a classe:

import java.util.ArrayList;

import javax.swing.JOptionPane;


public class Venda {
	public static void main(String args[]){
	Produto p = new Produto();
	GerenciadorProduto gp = new GerenciadorProduto();
	GerenciadorCliente gc = new GerenciadorCliente();
	int opc;
	String confirma, codigo= null;
	do{
		
		opc = Integer.parseInt(JOptionPane.showInputDialog("BEM VINDO\n 1 - Comprar\n 2 - Cadastrar\n 3 - Pesquisar"));
	
		
		switch(opc){
			case 1:
					codigo = JOptionPane.showInputDialog("Digite o codigo do produto:");
					if(gp.buscarProduto(codigo)){
						confirma = String.valueOf(JOptionPane.showInputDialog(p.getNome()+ " " +p.getPreco()+ "\n Confirmar Compra? S/N?"));
						if(confirma.equalsIgnoreCase("S"))
							JOptionPane.showMessageDialog(null, "Compra Realizada");
							else
							JOptionPane.showMessageDialog(null, "Compra Cancelada");
					}
					else
				
						JOptionPane.showMessageDialog(null, "Produto nao cadastrado");
						
				
					break;   
			case 2:		
				opc = Integer.parseInt(JOptionPane.showInputDialog("O QUE DESEJA CADASTRAR?\n 1 - Cliente\n 2 - Produto"));
				if(opc==1){
    		
				}
				if(opc==2){
						
						String nome = JOptionPane.showInputDialog("Digite o nome do produto:");
						codigo = JOptionPane.showInputDialog("Digite o codigo do produto:");
						double preco = Double.parseDouble(JOptionPane.showInputDialog("Digite o preço do produto:"));
						p.setNome(nome);
						p.setCodigo(codigo);
						p.setPreco(preco);
						gp.cadastrarProduto(p);
    				
					}
				
				
				break;
	
			}
	
		}while(opc!=3);
		
		
		
}
}

7 Respostas

B

Cara…
não sei se entendi… mas acho que você terá que criar três listas. Uma para armazenar os clientes (List), uma para armazenar os produtos (List) e uma para armazenar as vendas. Só assim para você manter os dados cadastrados anteriormente.

Aí, cada vez que cadastrar um produto, por exemplo, você o adicionará na lista de produtos. Desta maneira terá todos os produtos cadastrados contidos nesta lista.

=]

D

em gerenciadorCliente eu tenho isso aki

private ArrayList <Cliente> listaClientes = new ArrayList <Cliente>();
	
	public void cadastrarCliente(Cliente cliente){
		listaClientes.add(cliente);
	}

e em gerenciadorProduto tenho isso aki

private ArrayList <Produto> listaProdutos = new ArrayList <Produto>();
	
	public void cadastrarProduto(Produto produto){
		listaProdutos.add(produto);
	}

ou seja, uma lista pra clientes, e outra pra produto.

o que será que ta faltando?
eu cadastro 2, ai oprimeiro some!

evertonsilvagomesjav

diego_sepa o que esta acontecendo é o seguinte, vc instanciou sua classe Produto fora do loop, do-while, então vc esta utilizando um unico objeto para fazer o cadastro e esta sobrescrevendo suas variaveis (nome, codigo e preço), para resolver este problema de exibir somente o ultimo vc deve instanciar o objeto Produto dentro do loop, segue o exemplo:

# import java.util.ArrayList;  
#   
# import javax.swing.JOptionPane;  
#   
#   
# public class Venda {  
#     public static void main(String args[]){  
#     Produto p = new Produto();  // aqui vc esta instanciando, tire ele daqui.
#     GerenciadorProduto gp = new GerenciadorProduto();  
#     GerenciadorCliente gc = new GerenciadorCliente();  
#     int opc;  
#     String confirma, codigo= null;  
#     do{  
#           
#         opc = Integer.parseInt(JOptionPane.showInputDialog("BEM VINDO\n 1 - Comprar\n 2 - Cadastrar\n 3 - Pesquisar"));  
#       
#           // instancie-o aqui...Produto p = new Produto();

#         switch(opc){  
#             case 1:  
#                     codigo = JOptionPane.showInputDialog("Digite o codigo do produto:");  
#                     if(gp.buscarProduto(codigo)){  
#                         confirma = String.valueOf(JOptionPane.showInputDialog(p.getNome()+ " " +p.getPreco()+ "\n Confirmar Compra? S/N?"));  
#                         if(confirma.equalsIgnoreCase("S"))  
#                             JOptionPane.showMessageDialog(null, "Compra Realizada");  
#                             else  
#                             JOptionPane.showMessageDialog(null, "Compra Cancelada");  
#                     }  
#                     else  
#                   
#                         JOptionPane.showMessageDialog(null, "Produto nao cadastrado");  
#                           
#                   
#                     break;     
#             case 2:       
#                 opc = Integer.parseInt(JOptionPane.showInputDialog("O QUE DESEJA CADASTRAR?\n 1 - Cliente\n 2 - Produto"));  
#                 if(opc==1){  
#               
#                 }  
#                 if(opc==2){  
#                           
#                         String nome = JOptionPane.showInputDialog("Digite o nome do produto:");  
#                         codigo = JOptionPane.showInputDialog("Digite o codigo do produto:");  
#                         double preco = Double.parseDouble(JOptionPane.showInputDialog("Digite o preço do produto:"));  
#                         p.setNome(nome);  
#                         p.setCodigo(codigo);  
#                         p.setPreco(preco);  
#                         gp.cadastrarProduto(p);  
#                       
#                     }  
#                   
#                   
#                 break;  
#       
#             }  
#       
#         }while(opc!=3);  
#           
#           
#           
# }  
# }  
#
D

bom, eu acredito que tenha dado certo
porem, eu cadastro, qd vou em compra que digito o codigo ele aparece como null e sem preço nenhum.
o que pode ser?

evertonsilvagomesjav

posta seu método buscarProduto aqui…

D

aki velho:

public boolean buscarProduto(String codigo){
		for(Produto p : listaProdutos){
			if(codigo.equals(p.getCodigo())){
				return true;
			}
		}
		return false;
	}
evertonsilvagomesjav

Diego o que esta acontecendo é o seguinte, como o "case 1" não usa o objeto corrente para setar valores ás variáveis nome, cod e preco dos produtos quando vc tenta exibi-lo da "null" aos objetos Strings e "0" á preco que é um double primitivo. Para resolver este problema na classe GerenciadorProduto faça o seguinte:

public class GerenciadorProduto {

private ArrayList <Produto> listaProdutos = new ArrayList <Produto>();  
Produto produtoAchado; // declare aqui um atributo do tipo Produto.

	public void cadastrarProduto(Produto produto){  
	        listaProdutos.add(produto);  
	   } // fim do método de cadastro 
	
	  public boolean buscarProduto(String codigo){  
		     for(Produto p : listaProdutos){  
		          if(codigo.equals(p.getCod())){ 
		        	  
		        	  produtoAchado = p; // Pereceba que se o método encontrar o código ele atribui o objeto encontrado á variavél prodAchado
		        	  
		           	  return true;  
		          }  
		     }  
		      return false;  
	  } // fim do método de buscarProduto
	  

          // criei esse metodo de listar só para ver se estava cadastrando realmente.
	  public void listaProduto(){
	
		  for(Produto prod : this.listaProdutos){
			  
			  System.out.println(prod.getCod() +"\n" +prod.getNome() +"\n"
					  			+prod.getPreco());
			  
		  }
		  
	  } // fim do Método de listarProduto.
}

E no main faça o seguinte:

public class View {
	 
	     public static void main(String args[]){    
	    
	     GerenciadorProduto gp = new GerenciadorProduto();    
	     GerenciadorCliente gc = new GerenciadorCliente();    
	     int opc;    
	     String confirma, codigo= null;    
	     
	     do{    
	             
	         opc = Integer.parseInt(JOptionPane.showInputDialog("BEM VINDO\n 1 - Comprar\n 2 - Cadastrar\n 3 - Listar"));    
	         
	         Produto p = new Produto(); 
	   
	         switch(opc){    
	             case 1:    
	                     codigo = JOptionPane.showInputDialog("Digite o codigo do produto:");    
	                     if(gp.buscarProduto(codigo)){    
	                         confirma = String.valueOf(JOptionPane.showInputDialog(gp.produtoAchado.getNome()+ " " +gp.produtoAchado.getPreco()+ "\n Confirmar Compra? S/N?"));    // Perceba que estou usando á variável produtoAchado para buscar nome e preco ok?
	                         if(confirma.equalsIgnoreCase("S"))    
	                             JOptionPane.showMessageDialog(null, "Compra Realizada");    
	                             else    
	                             JOptionPane.showMessageDialog(null, "Compra Cancelada");    
	                     }    
	                     else    
	                     
	                         JOptionPane.showMessageDialog(null, "Produto nao cadastrado");    
	                             
	                     
	                     break;       
	             case 2:         
	                 opc = Integer.parseInt(JOptionPane.showInputDialog("O QUE DESEJA CADASTRAR?\n 1 - Cliente\n 2 - Produto"));    
	                 if(opc==1){    
	                 
	                 }    
	                 if(opc==2){    
	                             
	                         String nome = JOptionPane.showInputDialog("Digite o nome do produto:");    
	                         codigo = JOptionPane.showInputDialog("Digite o codigo do produto:");    
	                         double preco = Double.parseDouble(JOptionPane.showInputDialog("Digite o preço do produto:"));    
	                         p.setNome(nome);    
	                         p.setCod(codigo);    
	                         p.setPreco(preco);    
	                         gp.cadastrarProduto(p);    
	                         
	                     }    
	                     
	                     
	                 break;
	                 
	             case 3:
	            	 
	            	 gp.listaProduto();
	            	 
	            break;
	             }    
	         
	         }while(opc!=0);           
	             
	     }
}
Criado 18 de dezembro de 2009
Ultima resposta 19 de dez. de 2009
Respostas 7
Participantes 3