Ajuda - Exercício Cadastramento

2 respostas
K

Bom pessoal, tô com uma duvida em um exercício que estou fazendo, se alguém puder me mostrar onde está o erro agradeço.

Questão:

O objetivo deste trabalho é implementar programa simples contendo uma lista encadeada de
clientes. As informações dos clientes são coletados a partir de uma interface gráfica. Os dados do
clientes são adquiridos por um programa simples com funcionalidades de inserção e busca de
clientes. As informações coletadas do cliente são nome, endereço e CPF.

A interface gráfica do programa já esta implementada na classe Cadastramento, falta implementar
as classes Lista e Cliente. Não é necessário adicionar nenhum método novo, apenas atributos. A
classe Cliente deve conter como atributo uma referência para o próximo cliente e também atributos
com informações sobre o nome, endereço e cpf do cliente. O construtor do cliente deve fazer a
inicialização de todos os atributos.

A classe lista contém um construtor, métodos insere, buscaCpf e buscaNome. Todos estes métodos
estão vazios e precisam ser implementados. A classe lista precisa de um atributo que referencia o
primeiro elemento da lista. As inserções devem ser feitas sempre no início da lista. As busca sempre
retornam o objeto encontrado ou o elemento nulo (null) quando nenhum cliente for encontrado.
Depois de implementado e funcionando o método insere. Faça um incremento neste método
verificando se o cpf informado já esta cadastrado. Se tiver, então o cliente não deve ser inserido e o
método deve retorna falso (false);

Consegui fazer uma boa parte porém a verificação do CPF sempre retorna um valor cadastrado independente de está ou não, aí que se encontra minha duvida principal.

Segue o código que fiz:

Cadastramento:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class Cadastramento 
{
	private static JTextField campoNome;
	private static JTextField campoEndereco;
	private static JTextField campoCpf;
	private static JButton botaoInseri; 
	private static JButton botaoBusca;
	private static Lista clientes;
	private static JLabel statusLabel;

    public final static boolean RIGHT_TO_LEFT = false;

    public static void limpaCampos()
    {
		campoNome.setText("");
		campoEndereco.setText("");
		campoCpf.setText("0");    	
    }
    
    public static void addComponentsToPane(Container contentPane) 
    {
        if (RIGHT_TO_LEFT) 
        {
            contentPane.setComponentOrientation(
                ComponentOrientation.RIGHT_TO_LEFT);
        }
        //Any number of rows and 2 columns
        contentPane.setLayout(new GridLayout(0,2));

        statusLabel = new JLabel(" ");
        contentPane.add(new JLabel("Nome: "));
        campoNome = new JTextField(15);
        contentPane.add(campoNome);
        contentPane.add(new JLabel("Endereço: "));
        campoEndereco = new JTextField(15);
        contentPane.add(campoEndereco); 
        contentPane.add(new JLabel("CPF: "));
        campoCpf = new JTextField(15);
        contentPane.add(campoCpf);

        botaoInseri = new JButton("Inseri");
        
        limpaCampos();
        botaoInseri.addActionListener(new ActionListener() 
        {

			public void actionPerformed(ActionEvent e) 
			{
				String nome = campoNome.getText();
				String endereceo = campoEndereco.getText();
				long cpf = 0;
				boolean cpfErro = false;
				try
				{
					cpf = Long.parseLong(campoCpf.getText());
				}
				catch(Exception x )
				{
					statusLabel.setText("CPF inválido!"); 
					cpfErro = true;
				}
				Cliente c = new Cliente();
				c.setNome(nome);
				c.setEndereco(endereceo);
				c.setCpf(cpf);
				if ( clientes.insere(c) ) 
				{
					statusLabel.setText(nome+" inserido com sucesso!");
					limpaCampos();
				}
				else if (! cpfErro)
					statusLabel.setText(c.getCpf()+" CPF já cadastrado!");			
			}
		});        
        
        botaoBusca = new JButton("Busca");
        botaoBusca.addActionListener(new ActionListener() 
        {
			public void actionPerformed(ActionEvent e)
			{
				//limpaCampos();
				String nome = campoNome.getText();
				Cliente c = clientes.buscaNome(nome);
				if (c == null)
				{
					statusLabel.setText(nome+" não encontrado!");
				}
				else 
				{
					statusLabel.setText(c.getNome()+" encontrado!");
					campoNome.setText(c.getNome());
					campoEndereco.setText(c.getEndereco());
					campoCpf.setText(Long.toString(c.getCpf()));
				}
			}
		});        
        
        contentPane.add(botaoInseri);
        contentPane.add(botaoBusca);
        contentPane.add(new JLabel("Status: "));
        contentPane.add(statusLabel);
    }

    private static void createAndShowGUI() 
    {
        JFrame.setDefaultLookAndFeelDecorated(true);

        JFrame frame = new JFrame("Mini Sistema de Cadastramento!");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //Set up the content pane and components in GridLayout
        addComponentsToPane(frame.getContentPane());

        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) 
    {
    	// cria a lista
    	clientes = new Lista();
    	
        javax.swing.SwingUtilities.invokeLater(new Runnable() 
        {
            public void run()
            {
                createAndShowGUI();
            }
        });
    }

}
Cliente:
public class Cliente
 {
	private String nome, endereco;
	private long CPF;
	private Cliente prox;
	
	public void setProximo(Cliente p) 
	{
		prox = p;
	}
	void setNome(String n)
	{
		nome = n;
	}
	void setEndereco(String e)
	{
		endereco = e;
	}
	void setCpf(long c)
	{
		CPF = c;
	}
	String 	getNome()
	{
		return nome;
	}
	String 	getEndereco()
	{
		return endereco;
	}
	long	getCpf()
	{		
		return CPF;
	}
	public Cliente getProximo() 
	{
		return prox;
	}
}
Lista:
public class Lista
{

	public Lista() 
	{

	}
	boolean insere(Cliente c)
	{

		return false; 
	}
	Cliente buscaCpf(long c)
	{

		return null;
	}
	Cliente buscaNome(String s)
	{
		
		return null;
	}

}

Não entendí como implementar o método de busca, se alguém puder me informar agradeço
Obrigado.

2 Respostas

danielso2007

Implementei as correções, espero que te ajude.

Valeu!

import java.awt.ComponentOrientation;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class Cadastramento {
	private static JTextField campoNome;
	private static JTextField campoEndereco;
	private static JTextField campoCpf;
	private static JButton botaoInseri;
	private static JButton botaoBusca;
	private static Lista clientes;
	private static JLabel statusLabel;

	public final static boolean RIGHT_TO_LEFT = false;

	public static void limpaCampos() {
		campoNome.setText("");
		campoEndereco.setText("");
		campoCpf.setText("0");
	}

	public static void addComponentsToPane(Container contentPane) {
		if (RIGHT_TO_LEFT) {
			contentPane
					.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
		}
		// Any number of rows and 2 columns
		contentPane.setLayout(new GridLayout(0, 2));

		statusLabel = new JLabel(" ");
		contentPane.add(new JLabel("Nome: "));
		campoNome = new JTextField(15);
		contentPane.add(campoNome);
		contentPane.add(new JLabel("Endereço: "));
		campoEndereco = new JTextField(15);
		contentPane.add(campoEndereco);
		contentPane.add(new JLabel("CPF: "));
		campoCpf = new JTextField(15);
		contentPane.add(campoCpf);

		botaoInseri = new JButton("Inseri");

		limpaCampos();
		botaoInseri.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				String nome = campoNome.getText();
				String endereceo = campoEndereco.getText();
				long cpf = 0;
				boolean cpfErro = false;
				try {
					cpf = Long.parseLong(campoCpf.getText());
				} catch (Exception x) {
					statusLabel.setText("CPF inválido!");
					cpfErro = true;
				}
				Cliente c = new Cliente();
				c.setNome(nome);
				c.setEndereco(endereceo);
				c.setCpf(cpf);
				if (clientes.insere(c)) {
					statusLabel.setText(nome + " inserido com sucesso!");
					limpaCampos();
				} else if (!cpfErro)
					statusLabel.setText(c.getCpf() + " CPF já cadastrado!");
			}
		});

		botaoBusca = new JButton("Busca");
		botaoBusca.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// limpaCampos();
				String nome = campoNome.getText();
				Cliente c = clientes.buscaNome(nome);
				if (c == null) {
					statusLabel.setText(nome + " não encontrado!");
				} else {
					statusLabel.setText(c.getNome() + " encontrado!");
					campoNome.setText(c.getNome());
					campoEndereco.setText(c.getEndereco());
					campoCpf.setText(Long.toString(c.getCpf()));
				}
			}
		});

		contentPane.add(botaoInseri);
		contentPane.add(botaoBusca);
		contentPane.add(new JLabel("Status: "));
		contentPane.add(statusLabel);
	}

	private static void createAndShowGUI() {
		JFrame.setDefaultLookAndFeelDecorated(true);

		JFrame frame = new JFrame("Mini Sistema de Cadastramento!");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		// Set up the content pane and components in GridLayout
		addComponentsToPane(frame.getContentPane());

		frame.pack();
		// Aparecer no centro da tela.
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
	}

	public static void main(String[] args) {
		// cria a lista
		clientes = new Lista();

		javax.swing.SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				createAndShowGUI();
			}
		});
	}

}
public class Cliente {
	private String nome, endereco;
	private long CPF;
	private Cliente prox;

	public void setProximo(Cliente p) {
		prox = p;
	}

	public void setNome(String n) {
		nome = n;
	}

	public void setEndereco(String e) {
		endereco = e;
	}

	public void setCpf(long c) {
		CPF = c;
	}

	public String getNome() {
		return nome;
	}

	public String getEndereco() {
		return endereco;
	}

	public long getCpf() {
		return CPF;
	}

	public Cliente getProximo() {
		return prox;
	}
}
import java.util.ArrayList;
import java.util.List;

public class Lista {
	
	private List<Cliente> list;
	
	public Lista() {
		super();
		this.list = new ArrayList<Cliente>();
	}

	public boolean insere(Cliente c) {
		Cliente cliente = buscaCpf(c.getCpf());
		if (cliente == null) {
			return list.add(c);
		} else {
			return false;
		}
	}

	public Cliente buscaCpf(long c) {
		for (Cliente cliente : list) {
			if (cliente.getCpf() == c) {
				return cliente;
			}
		}
		return null;
	}

	public Cliente buscaNome(String s) {
		for (Cliente cliente : list) {
			if (cliente.getNome().equals(s)) {
				return cliente;
			}
		}
		return null;
	}

}
K

Opá, Obrigado Daniel.

Vou dar uma lida completa para saber onde eu estava errando, ja testei aqui e está perfeito.
agradeço mais uma vez.

Abraço

Criado 30 de outubro de 2010
Ultima resposta 30 de out. de 2010
Respostas 2
Participantes 2