Dúvida - Cadastro de funcionário e cliente

5 respostas
R

Bom dia galera!

Estou tentando fazer um exercício do treinamento de Java que estou cursando.

O exercício é basicamente construir um programa que cadastre CLIENTE ou FUNCIONÁRIO, consultar e excluir.

É para formar a seguinte tela:

Opções
(1) Cadastrar Clientes
(2) Cadastrar funcionários
(3) Pesquisar Clientes
(4) Pesquisar funcionários
(5) Excluir Clientes
(6) Excluir funcionário
(0) Sair
Digite sua opção:

No exercício cita que é para construir somente um Array, mas é ai que está minha dúvida. Temos a classe Pessoa, Cliente e Funcionário...o Array seria do tipo PESSOA, como fariamos para listar os atributos de FUNCIONARIOS e CLIENTES numa mesma lista???

É mais viável criar duas listas? (Uma para CLIENTE -do tipo cliente- e outra para FUNCIONARIO -do tipo funcionario-?

Abaixo o código para que vocês possam entender melhor:

CLASSE PESSOA
package br.com.classe;
import java.util.Scanner;
import java.util.ArrayList;

public class Pessoa {
	Scanner sc = new Scanner(System.in);
	private String nomePessoa, cpfPessoa;
	private int idadePessoa;
	
	ArrayList<Pessoa> cadastro = new ArrayList <Pessoa>();
	
	public void setNomePessoa(String nomePessoa){
		this.nomePessoa=nomePessoa;
	}
	
	public String getNomePessoa(){
		return nomePessoa;
	}

	public String getCpfPessoa() {
		return cpfPessoa;
	}

	public void setCpfPessoa(String cpfPessoa) {
		this.cpfPessoa = cpfPessoa;
	}

	public int getIdadePessoa() {
		return idadePessoa;
	}

	public void setIdadePessoa(int idadePessoa) {
		this.idadePessoa = idadePessoa;
	}
	

	
	
}
CLASSE FUNCIONÁRIO
package br.com.classe;

public class Funcionario extends Pessoa {
	private String numeroCarteiraTrab;
	int idFuncionario;
	
	public void setIdFuncionario(int idFuncionario){
		this.idFuncionario=idFuncionario;
	}
	
	public int getIdFuncionario(){
		return idFuncionario;
	}

	public String getNumeroCarteiraTrab() {
		return numeroCarteiraTrab;
	}

	public void setNumeroCarteiraTrab(String numeroCarteiraTrab) {
		this.numeroCarteiraTrab = numeroCarteiraTrab;
	}
	
	public void cadastroFuncionario(){
		Funcionario f1 = new Funcionario();
		
		f1.setIdFuncionario(+1);
		
		System.out.println("Digite o nome do funcionário: ");
		f1.setNomePessoa(sc.nextLine());
		
		System.out.println("Digite o CPF do funcionário");
		f1.setCpfPessoa(sc.nextLine());
		
		System.out.println("Digite a idade do funcionário: ");
		f1.setIdadePessoa(sc.nextInt());
		
		System.out.println("Digite o número da carteira de trabalho do funcionário: ");
		setNumeroCarteiraTrab(sc.next());
		
		cadastro.add(f1);
		
	}
	public void listarCadastro(){
		
		for(Pessoa x:cadastro){
			System.out.println(x.getNomePessoa()+ x.getIdadePessoa() + x.getCpfPessoa());
		}
		
		
		
	}
	
	
}
CLASSE CLIENTE
package br.com.classe;

public class Cliente extends Pessoa{
	private int idCliente;
	private String tipoCliente;
	
	
	public int getIdCliente() {
		return idCliente;
	}
	public void setIdCliente(int idCliente) {
		this.idCliente = idCliente;
	}
	public String getTipoCliente() {
		return tipoCliente;
	}
	public void setTipoCliente(String tipoCliente) {
		this.tipoCliente = tipoCliente;
	}
	
	public void cadastroCliente(){
		Cliente c1 = new Cliente();
		
		c1.setIdCliente(+1);
		
		System.out.println("Digite o nome do Cliente ");
		c1.setNomePessoa(sc.nextLine());
		
		System.out.println("Digite o CPF: ");
		c1.setCpfPessoa(sc.nextLine());
		
		System.out.println("Digite a idade: ");
		c1.setIdadePessoa(sc.nextInt());
		
		
		System.out.println("Digite o tipo de cliente (pessoa juridica ou física) ");
		tipoCliente=sc.next();
		
		if(tipoCliente.equalsIgnoreCase("Juridica") || tipoCliente.equals("Física")){
			((Cliente) c1).setTipoCliente(sc.nextLine());
		}
		else{
			System.out.println("Digite apenas se é pessoa FÍSICA OU JURÍDICA");
			System.out.println("Digite o tipo de cliente (pessoa juridica ou física) ");
			tipoCliente=sc.next();
		}
		
		cadastro.add(c1);
		
		
	}
	public void listarCadastro(){
		
		for(Pessoa x:cadastro){
			System.out.println(x.getNomePessoa()+ x.getIdadePessoa() + x.getCpfPessoa());
		}
	

}
	
}
CLASSE PRINCIPAL
package br.com.principal;
import java.util.Scanner;

import br.com.classe.*;

public class CadastroClienteFuncionario {


	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int opcao;
		Cliente c1 = new Cliente();
		Funcionario f1 = new Funcionario();
		
	
		
		System.out.println("***Cadastro Cliente Funcionário Curso Squadra***\n");
		
		
		System.out.println(" Digite 1 para cadastrar Funcionário ou Cliente \n Digite 2 pesquisar por um Funcionário ou Cliente \n Digite 3 para excluir \n Digite 0 para sair");
		opcao=sc.nextInt();
		while(opcao!=0){
			switch(opcao){
			
				case 1: int opc;
						
						System.out.println("Digite 1 para cadastrar um cliente ou 2 para cadastrar um funcionário: ");
						opc=sc.nextInt();
						
						if(opc==1){
							c1.cadastroCliente();
						}
						else if(opc==2){
							f1.cadastroFuncionario();
						}
						else{
							System.out.println("Opção inválida!");
						}
						break;
						
				case 2: f1.listarCadastro();
						c1.listarCadastro();
						break;
						
				
				default: System.out.println("Opção inválida");		break;
				
		
			}
			System.out.println(" Digite 1 para cadastrar Funcionário ou Cliente \n Digite 2 pesquisar por um Funcionário ou Cliente \n Digite 3 para excluir \n Digite 0 para sair");
			opcao=sc.nextInt();
		}
	
		
	}

}

Valeu pessoa, abraços!

5 Respostas

aajjbb

acho, que e exercio quer, que você faça Cliente e Funcionario extenderem (extends) Pessoa, e criar a Array do tipo pessoa; e para instanciar os objetos ultilizando o Polimorfismo, como ex:

Pessoa chico = new Funcionario();
Pessoa  = new Cliente();
gergon

Faca um codigo polimorfico como dito anteriormente…pois a class cliente e funcionario sao pessoas …

marcos1EM

Cara eu testei seu código aq, se vc esta querendo exibir apenas os funcionarios basta vc chamar o f1.listarCadastro(); e se vc quer exibir apenas os clientes vc tem q chamar apenas o
c1.listarCadastro(); q já irá funcionar, porem vc esta chamando os dois métodos ao mesmo tempo quando o usuario informa a opção 2 por isso esta sendo mostrado tanto os funcionarios e o clientes.

R

Entendi pessoal, o correto é usar o polimorfismo.

O que não estou conseguindo é na hora de listar, fazer com que a lista do tipo PESSOA enxergue os atributos especificos e CLIENTE E FUNCIONARIO.

aajjbb
public void cadastroFuncionario(){  
   Pessoa f1 = new Funcionario();
Criado 23 de julho de 2010
Ultima resposta 24 de jul. de 2010
Respostas 5
Participantes 4