Relacionar objeto

1 resposta Resolvido
vetorjava
J

Boa tarde galera, tenho um código com as classes abaixo, tenho um vetor de contas dentro da classe Pessoa, na classe principal eu tenho uma opção para criar conta, onde o usuário digita seu cpf e outros dados da conta, como posso fazer para relacionar a pessoa que tem o cpf que foi digitado com a conta e adicionar a conta no vetor?

Classe Principal:

import java.util.Scanner;


public class Principal {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        int op;
        
        Banco banco = new Banco();

        do {

            System.out.println("1 - Cadastrar pessoa");
            System.out.println("2 - Criar conta");
            System.out.println("3 - Verificar dados pessoais");
            System.out.println("4 - Extrato da Conta");

            System.out.println("Escolha uma Opcao:");
            op = scan.nextInt();
            scan.nextLine();

            
            Pessoa p;
            Conta c;
            switch (op) {
                case 1:

                    System.out.println("Digite seu Nome: ");
                    String nome = scan.nextLine();
                    System.out.println("Digite sua Data de Nascimento: ");
                    String dtn = scan.nextLine();
                    System.out.println("Digite seu Sexo: ");
                    String sexo = scan.nextLine();
                    System.out.println("Digite seu CPF: ");
                    String cpf = scan.nextLine();

                    p = new Pessoa();

                    p.setNome(nome);
                    p.setDtn(dtn);
                    p.setSexo(sexo);
                    p.setCpf(cpf);

                    banco.addPessoa(p);
                    break;

                case 2:

                 System.out.println("Digite seu CPF: ");
                 String cpf = scan.nextLine();
                 System.out.println("Digite uma Senha para a conta: ");
                 int senha = scan.nextInt();
                 System.out.println("Digite o Numero da conta: ");
                 int numero  = scan.nextInt();
                 System.out.println("Digite o Saldo para conta: ");
                 double saldo = scan.nextDouble();
                 System.out.println("Digite a Agencia da conta: ");
                 int agencia = scan.nextInt();

                    break;

                case 3:
                   banco.infoPessoa();
                    
                    break;

                case 4:

                       banco.infoConta();

                default:
                    if (op == 0) {
                        System.out.println("Programa Encerrado");
                    } else {
                        System.out.println("Opcao Inválida");
                    }
                           break;
            }

        } while (0 != op);

    }

}

Classe pessoa:
public class Pessoa {

private String nome;
    private String dtn;
    private String sexo;
    private String cpf;
    private Conta [] contas =  new Conta[100];

    

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getDtn() {
        return dtn;
    }

    public void setDtn(String dtn) {
        this.dtn = dtn;
    }

    public String getSexo() {
        return sexo;
    }

    public void setSexo(String sexo) {
        this.sexo = sexo;
    }

    public String getCpf() {
        return cpf;
    }


    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

   /public Conta[] getContas(){
        return contas;
    }

    public void setContas(Conta[] con){
        this.contas = contas;
    }

    public String infoPessoa() {
        return "\nNome: " + nome +
                "\ndtn: " + dtn +
                "\nSexo: " + sexo + 
                "\nCPF: " + cpf+"\n";
    }
    
    

}

Classe conta:

public class Conta {

    private double saldo;
    private int senha;
    private int numero;
    private int agencia;


    public double getSaldo() {
        return saldo;
    }

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

    public int getSenha() {
        return senha;
    }

    public void setSenha(int senha) {
        this.senha = senha;
    }

    public int getNumero() {
        return numero;
    }

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

    public int getAgencia() {
        return agencia;
    }

    public void setAgencia(int agencia) {
        this.agencia = agencia;
    }

    //public depositar(double valor){
        //this.saldo += valor;
   // }
    
    public String infoConta() {
        return "\nNumero da Conta: " + numero +
                "\nAgencia: " + agencia +
                "\nSaldo da Conta: " + saldo +"\n";
    }
    
    
}

Classe banco:
import java.util.Scanner;

public class Banco {

Scanner scan = new Scanner(System.in);
private int qtdP = 0;


private Pessoa[] pessoas = new Pessoa[100];



public int tamanhoPessoa() {
    return this.qtdP;
}


public void addPessoa(Pessoa c) {

    
    this.pessoas[qtdP] = c;
    qtdP++;
    System.out.print("Cadastro Realizado com Sucesso!\n\n");

}

public void infoPessoa() {

System.out.println("Digite o CPF para buscar: ");
String busca = scan.nextLine();

Pessoa buscaPessoa = null;

for (int i = 0; i < this.tamanhoPessoa(); i++) {
    Pessoa p = pessoas[i];
    if (p.getCpf().equals(busca)) {
        buscaPessoa = p;
        break;
    }else{
        buscaPessoa = null;
    }
}
if (buscaPessoa == null) {
    System.out.println("\nCliente não foi encontrado\n");
} else {
    System.out.println("\nInformações do Cliente:\n"+buscaPessoa.infoPessoa());

}

}
}

1 Resposta

D
Solucao aceita

Na classe Banco, crie um método de busca:

public Pessoa buscarPessoaPorCPF(String cpf) { /* .... */ }

Esse método ficará parecido com o infoPessoa, que poderá ficar:

public void infoPessoa() {
    System.out.println("Digite o CPF para buscar: ");
    String busca = scan.nextLine();

    Pessoa buscaPessoa = buscarPessoaPorCPF(busca);
    if (buscaPessoa == null) {
        System.out.println("\nCliente não foi encontrado\n");
    } else {
        System.out.println("\nInformações do Cliente:\n"+buscaPessoa.infoPessoa());
 }

Acho que agora ficou fácil, basta fazer como vc fez com o cadastro de clientes:

Pessoa cliente = banco.buscarPessoaPorCPF(cpf);
cliente.adicionarConta(conta);
Criado 15 de abril de 2018
Ultima resposta 15 de abr. de 2018
Respostas 1
Participantes 2