aulify · Mini-Projecto
UC UC00620 · T. Desenv. Software
Versão · Aluno
Mini-Projecto · App C# com EF Core
Aplicação completa com BD, LINQ, testes
Contexto
Cada par/trio constrói uma aplicação C# completa com .NET 8, Entity Framework Core (SQLite), CLI interactiva e testes xUnit. Cenários:
- A: Sistema de gestão de stock para loja.
- B: Agenda de contactos com favoritos e tags.
- C: Diário de despesas com categorias e relatórios.
- D: Gestor de filmes vistos / a ver com ratings.
- E: App de gestão de hábitos diários.
Requisitos
Funcionais
- .NET 8 console app.
- EF Core SQLite com migrations.
- Mínimo 2 entidades com relação (1:N ou N:M).
- CRUD completo via CLI.
- LINQ em pelo menos 3 queries não-triviais.
- Records ou classes com properties.
- Validação de inputs.
- Excepções customizadas (mínimo 1).
- Testes xUnit (mínimo 5).
Não-funcionais
- Estrutura organizada (folders: Models, Data, Services, UI).
- Async/await em pelo menos 1 método (opcional, bónus).
- README com setup, comandos, screenshots.
- GitHub com commits incrementais.
- Apresentação com demo ao vivo.
Fases
Fase 1 · Design + setup (2h)
- Escolher cenário + entidades + relações.
- Esboço de menu.
- Setup projecto + EF Core + xUnit.
- Entregável: projecto compilável vazio.
Fase 2 · Models + DbContext (2h)
- Classes/records do domínio.
- DbContext com DbSets.
- Migrations + criar BD.
- Entregável: BD criada, schema correcto.
Fase 3 · CRUD básico (3h)
- Inserir, listar, actualizar, apagar para cada entidade.
- Validação de inputs.
- Entregável: CRUD funcional via código.
Fase 4 · CLI menu (3h)
- Menu principal interactivo.
- Sub-menus por entidade.
- Loop até "sair".
- Entregável: app utilizável.
Fase 5 · LINQ + relatórios (2h)
- Queries com GroupBy, OrderBy, Where.
- Relatórios formatados.
- Entregável: pelo menos 3 relatórios LINQ.
Fase 6 · Testes (2h)
- xUnit em services / lógica de negócio.
- Mínimo 5 testes.
- Entregável:
dotnet testpassa.
Fase 7 · README + GitHub (1h)
- README com setup, demo gif, dependências.
- Push final.
- Entregável: repo público completo.
Fase 8 · Apresentação (1h)
- Demo ao vivo (10 min por grupo).
Critérios de avaliação
| Item | Peso |
|---|---|
| Design + modelagem | 10% |
| EF Core + migrations | 15% |
| LINQ avançado | 15% |
| CRUD completo | 15% |
| CLI usável | 10% |
| Testes xUnit | 15% |
| Estrutura código | 5% |
| GitHub workflow | 5% |
| README | 5% |
| Apresentação | 5% |
Reflexão
Em meia página: o que C# oferece de melhor que outras linguagens que conheces? Como LINQ mudou a forma como pensas em colecções? EF Core vs SQL raw — onde achaste melhor? Que erros apanhaste em testes e como debug-aste? Quanto demoraria fazer o mesmo em Python ou Java?