ContactManager é um sistema de gerenciamento de contatos para terminal, desenvolvido em C. A versão atual oferece um fluxo local de CRUD, persistência em arquivo CSV simples e organização modular para facilitar manutenção e evolução.
Permitir que o usuário cadastre, consulte, atualize, remova e mantenha contatos salvos localmente, usando uma interface simples de linha de comando.
Implementado:
- adicionar contato com nome, telefone e email;
- listar contatos carregados em memória;
- buscar contato pelo número exibido na lista;
- atualizar os dados de um contato pelo número exibido;
- remover contato pelo número exibido;
- carregar contatos ao iniciar;
- salvar contatos em
data/contacts.txtao sair; - compilar com Make usando saídas separadas em
build/obj/edist/.
Planejado:
- busca avançada por nome, telefone ou email;
- validação de entrada mais robusta;
- testes automatizados além do teste básico de encerramento;
- importação/exportação de dados;
- possível evolução para banco de dados ou interface gráfica.
ContactManager/
├── Makefile # Atalhos da raiz para o build principal
├── README.md # Visão geral do projeto
├── DOCUMENTATION.md # Mapa geral da documentação
├── CONTRIBUTING.md # Convenções de contribuição
├── build/
│ ├── Makefile # Regras principais de compilação
│ ├── config.mk # Variáveis do build
│ ├── README.md # Referência rápida do build
│ └── obj/ # Objetos gerados (ignorado pelo Git)
├── dist/ # Binários gerados (ignorado pelo Git)
├── data/ # Dados locais de execução (ignorado pelo Git)
├── include/
│ ├── config.h # Constantes e API de configuração
│ ├── contact.h # Modelo Contact e operações de contato
│ ├── storage.h # API de persistência
│ └── error.h # Códigos de erro da aplicação
├── src/
│ ├── main.c # Menu e fluxo principal
│ ├── config.c # Implementação da configuração
│ ├── contact.c # Operações CRUD em memória
│ ├── storage.c # Leitura e gravação em arquivo
│ └── error.c # Mensagens de erro da aplicação
├── scripts/
│ ├── build.sh # Interface shell para os comandos de build
│ └── README.md
├── docs/
│ ├── README.md # Índice técnico
│ ├── build.md # Guia de build, execução e instalação
│ ├── requisitos.md
│ ├── arquitetura.md
│ ├── modelos-de-dados.md
│ ├── casos-de-uso.md
│ ├── fluxos.md
│ ├── testes.md
│ ├── product-backlog.md
│ ├── resultados.md
│ ├── uml.md
│ └── diagramas/
├── tests/ # Registros de testes manuais
└── diario/ # Histórico de desenvolvimento
make buildO binário release é gerado em:
dist/contactmanager
make runOu diretamente, após compilar:
./dist/contactmanagermake help # Lista os targets disponíveis
make debug # Gera dist/contactmanager-debug
make test # Compila e executa um teste básico
make clean # Remove build/obj/ e dist/
make install # Instala o binário em /usr/local/binTambém é possível usar o script:
./scripts/build.sh build
./scripts/build.sh run
./scripts/build.sh testOs contatos são mantidos em memória durante a execução. Ao escolher a opção de sair, a aplicação salva os dados em:
data/contacts.txt
O formato atual é CSV simples:
nome,telefone,email
O diretório data/ é criado automaticamente quando necessário.
- DOCUMENTATION.md - mapa geral de navegação.
- docs/README.md - índice técnico.
- docs/build.md - build, execução, teste e instalação.
- docs/requisitos.md - requisitos e critérios de aceitação.
- docs/arquitetura.md - módulos e responsabilidades.
- docs/modelos-de-dados.md - modelo
Contacte formato de arquivo. - docs/casos-de-uso.md - interações do usuário.
- docs/fluxos.md - fluxos operacionais.
- docs/testes.md - estratégia e registros de teste.
- docs/product-backlog.md - próximos itens planejados.
Use os prefixos definidos em CONTRIBUTING.md:
STR:estrutura e refatoração;FEAT:novas funcionalidades;FIX:correções;TEST:testes e validações;DOCS:documentação;CHORE:manutenção.
Este projeto ainda está em evolução. A documentação deve separar claramente o que já está implementado no CLI atual do que permanece planejado para versões futuras.