Criando relacionamento

Boa tarde galera, estou fazendo um pequeno trabalho onde tem que cadastrar pessoas e contas. Eu consigo cadastrar as contas e pessoas, mas meu desafio agora é conseguir atribuir uma conta á uma pessoa, sendo que neste problema a pessoa pode ter mais de uma conta. O relacionamento eu queria fazer pelo cpf, entao quando uma pessoa vai criar uma conta ela digita o cpf e a conta será atribuida a pessoa com esse cpf, mas como posso fazer isso?

Classe principal com menu:

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();

                    c = new Conta();

                    c.setSenha(senha);
                    c.setNumero(numero);
                    c.setSaldo(saldo);
                    c.setAgencia(agencia);

                    banco.addConta(c);

                    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 banco:

import java.util.Scanner;

public class Banco {

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

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

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

    public int tamanhoConta(){
    	return this.qtdC;
    }

    public void addPessoa(Pessoa c) {

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

    public void addConta(Conta a){

    	this.contas[qtdC] = a;
    	qtdC++;
    	System.out.print("Conta criada com Sucesso\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());

        }

    }

    public void infoConta() {

        System.out.println("Digite a Agencia da Conta: ");
        int busca = scan.nextInt();

        Conta buscaConta = null;
        
        for (int i = 0; i < this.tamanhoConta(); i++) {
            Conta c = contas[i];
            if (busca == c.getAgencia()) {
                buscaConta = c;
                break;
            }else{
                buscaConta = null;
            }
        }
        if (buscaConta == null) {
            System.out.println("\nConta não foi encontrada\n");
        } else {
            System.out.println("\nExtrato da Conta:\n"+buscaConta.infoConta());

        }

    }
}

Bom, vamos lá

Você tem uma classe Pessoa, uma classe Conta e uma classe Banco.

Pense da seguinte forma, o que pertence a o que?

Para se abrir uma conta, primeiro deve se existir um Banco.
Mas a Conta não pertence diretamente ao banco, ela deve ser vinculada a uma pessoa e somente a ela.

Então o certo seria, no seu caso, você declarar um banco, que tem pessoas e essas pessoas tenham conta.

Sendo assim, você declara um vetor de Pessoa dentro da classe Banco
E um vetor de Conta dentro da classe Pessoa, assim cada pessoa vai ter várias contas e o Banco irá ter várias pessoas vinculado a ele.

Hm…
Entao, eu coloquei em pessoa um vetor de contas:

private Conta [] contas = new Conta[100];

Assim como os set e get:

public Conta[] getContas(){
        return contas;

    }

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

Bom, agr no caso eu queria fazer a relação pelo cpf, entao pessoa digita o cpf, se existir a conta vai pra essa pessoa e é adicionada.Como posso fazer isso?

Acho que é mais natural um Banco ter Contas e cada Conta pertencer à um titular que é uma Pessoa.