Módulo 16 - Projeto final: agenda de contatos

A visão do projeto

10 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026

O que você vai aprender

  • Entender o que a agenda de contatos faz do começo ao fim.
  • Visualizar a interação no terminal antes de programar.
  • Ver quais módulos do curso entram em cada parte do projeto.
  • Assumir a estratégia de construir o programa de forma incremental.

O que a agenda de contatos faz

Chegou o momento de juntar o curso em um único programa. Ao longo dos módulos anteriores você aprendeu peças soltas: classes, compreensões, tratamento de erros, leitura e escrita de arquivos, testes. Cada uma resolvia um problema pequeno. Um projeto é o que dá sentido a esse conjunto, porque força as peças a trabalharem juntas. A agenda de contatos foi escolhida por ser útil, pequena o bastante para caber em poucas aulas e completa o bastante para exercitar tudo que importa no nível intermediário.

Em termos práticos, a agenda é um programa que roda no terminal e mantém uma lista de contatos. Cada contato tem três informações: nome, telefone e e-mail. O usuário escolhe o que fazer por um menu de números: adicionar um novo contato, listar todos, procurar um pelo nome, remover um e exportar a lista para uma planilha. Entre uma execução e outra, os dados não se perdem, porque são gravados em um arquivo. É um programa modesto, mas de verdade: tem estado que persiste, tem entrada do usuário para validar e tem erros para tratar com cuidado.

Como será a conversa no terminal

Vale imaginar a experiência antes de codar. Quando você roda o programa, ele mostra um menu e espera um número. Você escolhe adicionar, informa os dados, e ele confirma. Escolhe listar, e ele imprime os contatos. Pensar na interação primeiro ajuda a decidir quais métodos as classes vão precisar. O bloco abaixo simula uma sessão típica, com o que o programa mostra e o que o usuário digita.

1) Adicionar  2) Listar  3) Buscar  4) Remover  5) Exportar CSV  0) Sair
Opcao: 1
Nome: Ana Souza
Telefone (so numeros): 11999998888
E-mail: ana@exemplo.com
Contato adicionado.

1) Adicionar  2) Listar  3) Buscar  4) Remover  5) Exportar CSV  0) Sair
Opcao: 2
Ana Souza | 11999998888 | ana@exemplo.com

1) Adicionar  2) Listar  3) Buscar  4) Remover  5) Exportar CSV  0) Sair
Opcao: 3
Nome a buscar: joao
Nao encontrei 'joao'.

1) Adicionar  2) Listar  3) Buscar  4) Remover  5) Exportar CSV  0) Sair
Opcao: 0
Ate mais!

Uma sessão de uso da agenda. O menu se repete até o usuário escolher sair.

Repare em detalhes que já anunciam decisões de projeto. O telefone é pedido só com números, o que sugere uma validação. A busca por um nome que não existe responde com uma mensagem amigável, não com um erro feio que derruba o programa, o que sugere tratamento de exceção. O menu volta sempre, o que sugere um laço. Cada uma dessas observações vira código nas próximas aulas. Essa é a virtude de visualizar a conversa antes: o programa nasce a partir do que o usuário vai viver, não de dentro para fora.

De onde vem cada peça

A agenda não inventa nada novo. Ela combina o que você já viu no curso. A tabela abaixo liga cada parte do projeto ao módulo que ensinou a técnica. É um bom lembrete de que um projeto é, no fundo, uma montagem consciente de ferramentas conhecidas, cada uma no lugar certo.

Parte do projetoTécnica usadaMódulo do curso
Modelar contato e agendaClasses e objetos (POO)10 e 11
Buscar e filtrar contatosCompreensões e funções2 e 4
Tratar erros de propósitoExceção própria e try/except9
Salvar e carregar dadosArquivos e JSON7 e 8
Exportar para planilhaMódulo csv7
Garantir que funcionaTestes com unittest15

Cada parte da agenda reaproveita um tema já estudado no curso.

A estratégia daqui em diante é uma só: construir de forma incremental. Em vez de escrever o programa inteiro e torcer para funcionar, cada aula acrescenta uma peça e roda o resultado. A aula 2 cria as classes vazias que só guardam dados. A 3 dá ações à agenda. A 4 trata os erros. A 5 salva em arquivo. A 6 exporta e monta o menu final. A 7 escreve os testes. A cada etapa o programa continua rodando, um pouco mais completo. Assim, quando algo quebra, você sabe exatamente onde procurar, porque só uma coisa mudou.

Teste rápido

Por que o projeto será construído de forma incremental, aula por aula?

Perguntas frequentes

Preciso ter feito todos os módulos anteriores para este projeto?
É o ideal. A agenda usa classes, compreensões, exceções, arquivos, JSON, CSV e testes, cada um ensinado em um módulo. Se algum tema estiver enferrujado, o projeto é uma boa oportunidade para revisitá-lo com um propósito concreto na mão.
Por que uma agenda de contatos, e não algo mais chamativo?
Porque ela é pequena o bastante para caber em poucas aulas e completa o bastante para exercitar tudo que importa: guardar estado, validar entrada, tratar erro e salvar em arquivo. Depois de construí-la, você adapta o mesmo esqueleto para muitos outros programas.
Vou digitar o programa inteiro de uma vez?
Não. Cada aula acrescenta uma peça a um código que já funciona. Você digita o pouco que muda e roda para conferir. No fim da aula 6 há o código completo comentado, para você comparar com o seu.
Posso rodar a agenda no Playground do curso?
As partes de lógica, sim. A parte que salva e lê arquivos no disco depende do seu computador para você ver os arquivos criados. Recomendamos digitar o projeto no seu editor, em um arquivo chamado agenda.py, para viver a experiência completa.
O programa guarda os contatos depois que eu fecho?
Sim. É justamente o papel do arquivo JSON. Toda vez que você adiciona ou remove um contato, a agenda grava a lista em contatos.json. Ao abrir de novo, ela carrega esse arquivo e recupera tudo. É o que a aula 5 constrói.
Qual a diferença entre salvar em JSON e exportar para CSV?
O JSON é o formato interno do programa, feito para o próprio programa ler de volta e reconstruir os objetos. O CSV é para levar os dados para fora, abrindo em uma planilha como Excel ou Google Sheets. São propósitos diferentes, e a agenda faz os dois.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.