Problema com lógica para exclusão

Olá galera estou tendo um problema para lógica de exclusão. Meu programa no caso, faz o cadastro de Pessoas e Contas, onde dentro de Pessoa eu tenho um ArrayList de Contas.
Bom, meu professor pediu para se criar DAO’s,usar CRUD dentro das DAOS e separar na ideia de MVC(bem básico), então criei os DAO’s de Pessoa e Conta, onde meu problema agora é a exclusão. Como expliquei anteriormente, estou com array dentro de contas em pessoa. Para excluir uma pessoa eu tenho que excluir primeiro as contas desta pessoa e em seguida excluir a pessoa, mas não estou conseguindo nem mesmo excluir a pessoa, de que maneira posso fazer isso?

Classe Pessoa:

package b2.Model;

import java.util.ArrayList;
import java.io.Serializable;

/**
 *
 * @author João Gabriel
 */
public class Pessoa implements Serializable {

    private String nome;
    private String dtn;
    private String sexo;
    private String cpf;
    private ArrayList<Conta> contas = new ArrayList<>();

    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * @return the dtn
     */
    public String getDtn() {
        return dtn;
    }

    /**
     * @param dtn the dtn to set
     */
    public void setDtn(String dtn) {
        this.dtn = dtn;
    }

    /**
     * @return the sexo
     */
    public String getSexo() {
        return sexo;
    }

    /**
     * @param sexo the sexo to set
     */
    public void setSexo(String sexo) {
        this.sexo = sexo;
    }

    /**
     * @return the cpf
     */
    public String getCpf() {
        return cpf;
    }

    /**
     * @param cpf the cpf to set
     */
    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    /**
     * @return the contas
     */
    public ArrayList<Conta> getContas() {
        return contas;
    }

    /**
     * @param contas the contas to set
     */
    public void setContas(Conta contas) {
        this.contas.add(contas);
    }

    public void excluirContas() {
        this.contas.remove(getContas());
    }

    @Override
    public String toString() {
        return "\nNome: " + nome
                + "\nData de Nascimento: " + dtn
                + "\nSexo: " + sexo
                + "\nCPF: " + cpf;
    }

    public String infoConta() {
        return "\nNome do Cliente:" + nome + 
                "\n"+ contas;
    }
}

PessoaDAO:

package b2.Controle;

import b2.Model.Pessoa;
import java.util.ArrayList;
import java.util.Scanner;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;

/**
 *
 * @author AspireV5
 */
public class PessoaDAO {

    /**
     * @return the list
     */
    Scanner scan = new Scanner(System.in, "latin1");
    private ArrayList<Pessoa> list = new ArrayList<>();
    Pessoa buscaPessoa = null;

    public void addPessoa() {

        int i = 0;

        Pessoa person = new Pessoa();

        System.out.println("Digite seu Nome: ");
        String nome = scan.nextLine();
        person.setNome(nome);

        System.out.println("Digite sua Data de Nascimento: ");
        String dtn = scan.nextLine();
        person.setDtn(dtn);

        System.out.println("Escolha M para Masculino ou F para Feminino:  ");
        String sexo = scan.nextLine();

        if (sexo.equals("M") || sexo.equals("m")) {
            person.setSexo("Masculino");
        } else if (sexo.equals("F") || sexo.equals("f")) {
            person.setSexo("Feminino");
        }

        System.out.println("Digite seu CPF: ");
        String cpf = scan.nextLine();

        for (Pessoa pe : list) {
            if (cpf.equals(pe.getCpf())) {
                i++;
            }
        }
        if (i == 0) {
            person.setCpf(cpf);
            list.add(person);
            System.out.println("\nCadastro realizado com Sucesso!");
            System.out.println("\n");
            
        } else {
            System.out.println("\nCPF já Cadastrado!");
        }
    }

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

        for (Pessoa pessoa : list) {
            if (pessoa.getCpf().equals(busca)) {
                buscaPessoa = pessoa;
                break;
            } else {
                buscaPessoa = null;
            }
        }
        if (buscaPessoa == null) {
            System.out.println("\nCliente não encontrado!");
        } else {
            System.out.println("Digite um Novo Nome");
            String nome = scan.nextLine();
            System.out.println("Digite um Novo CPF");
            String cpf = scan.nextLine();
            System.out.println("Digite uma Nova Data de Nascimento: ");
            String dtn = scan.nextLine();

            buscaPessoa.setNome(nome);
            buscaPessoa.setCpf(cpf);
            buscaPessoa.setDtn(dtn);
            System.out.println("Cadastro atualizado com sucesso!");
        }
    }

    public void removerPessoa() {

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

        for (Pessoa pessoa : list) {
            if (pessoa.getCpf().equals(busca)) {
                buscaPessoa.excluirContas();
                list.remove(pessoa);
                break;
            } else {
                buscaPessoa = null;
            }
        }
    }

    public void buscarPessoa() {

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

        for (Pessoa pessoa : list) {
            if (pessoa.getCpf().equals(busca)) {
                buscaPessoa = pessoa;
                break;
            } else {
                buscaPessoa = null;
            }
        }
        if (buscaPessoa == null) {
            System.out.println("\nCliente não encontrado!");
        } else {
            System.out.println("\nInformações do Cliente:" + (buscaPessoa));
        }
    }

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

        for (Pessoa pessoa : list) {
            if (pessoa.getCpf().equals(busca)) {
                buscaPessoa = pessoa;
                break;
            } else {
                buscaPessoa = null;
            }
        }
        if (buscaPessoa == null) {
            return null;
        } else {
            return buscaPessoa;
        }
    }

    public void verContas() {

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

        for (Pessoa pessoa : list) {
            if (pessoa.getCpf().equals(busca)) {
                buscaPessoa = pessoa;
                break;
            } else {
                buscaPessoa = null;
            }
        }
        if (buscaPessoa == null) {
            System.out.println("\nCliente não encontrado!");
        } else {
            System.out.println("\nInformaçõess da Conta: " + buscaPessoa.infoConta().replace("[", "").replace("]", ""));
        }
    }
}