aulify · Mini-Projecto
UC UC00606 · T. Desenv. Software, T. Inform. Gestão
Versão · Aluno
Mini-Projecto · Gestor de despesas pessoais
Aplicação CLI em Python com persistência em ficheiro
Contexto
Cada par/trio constrói uma aplicação de consola em Python para gerir despesas pessoais. Permite registar gastos, categorizar, ver totais e gerar relatórios. Aplica tudo o que foi aprendido: variáveis, controlo, listas, dicts, funções, ficheiros, excepções.
Requisitos
Funcionais
- Registar despesa — data, descrição, valor, categoria.
- Listar todas as despesas, ordenadas por data.
- Filtrar por categoria ou intervalo de datas.
- Estatísticas — total mensal, por categoria, top 5 mais caras.
- Persistência em ficheiro CSV ou JSON.
- Menu interactivo com opções.
Não-funcionais
- Código decomposto em funções (mín. 8 funções com responsabilidade clara).
- Comentários/docstrings nas funções principais.
- Tratamento de erros (entradas inválidas, ficheiros em falta).
- Push para repositório Git com pelo menos 5 commits.
Fases
Fase 1 · 1h
Planeamento
- Esboçar menu e fluxos.
- Decidir formato de armazenamento (CSV recomendado, JSON aceite).
- Lista de funções a implementar com assinatura.
Documento de 1 página com menu, fluxos e lista de funções.
Fase 2 · 2h
Core · registar e listar
adicionar_despesa(),listar_despesas().- Armazenamento em lista de dicts.
- Menu básico funcional.
Versão 0.1 com adicionar + listar funcionais.
Fase 3 · 2h
Filtros e estatísticas
- Filtrar por categoria, intervalo de datas.
- Total mensal, total por categoria, top 5.
Versão 0.2 com filtros e estatísticas.
Fase 4 · 2h
Persistência
- Guardar/carregar de CSV (módulo
csv) ou JSON (módulojson). - Auto-load no arranque.
- Auto-save ao sair.
Versão 1.0 com persistência. Dados sobrevivem ao restart.
Fase 5 · 1h
Polish e entrega
- Tratamento de erros (datas inválidas, ficheiro corrupto).
- Limpeza de código.
- README com instruções de uso.
Versão final + README + apresentação ao vivo (3-5 min).
Critérios de avaliação
| Item | Peso |
|---|---|
| Adicionar / listar funcionais | 20% |
| Filtros úteis | 15% |
| Estatísticas correctas | 15% |
| Persistência funcional | 20% |
| Decomposição em funções | 10% |
| Tratamento de erros | 10% |
| Git history (commits descritivos) | 5% |
| README e apresentação | 5% |
Reflexão
Em meia página: que função foi mais difícil? O que aprendeste sobre decomposição? Como adaptarias este projecto se tivesse de ter interface gráfica?