Trabalho_de_LP/README.md

241 lines
8.6 KiB
Markdown

# 💰 Gestão de Despesas - Aplicação Android com SQLite
Uma aplicação Android moderna para gestão pessoal de despesas, desenvolvida com SQLite para armazenamento local de dados e interface Material Design.
## 🎯 Funcionalidades Implementadas
### ✅ **Funcionalidades Principais**
- **💰 Adicionar Despesas**: Registre novas despesas com descrição, valor, categoria, data e notas
- **📋 Listar Despesas**: Visualize todas as despesas em uma lista organizada e moderna
- **✏️ Editar Despesas**: Modifique informações de despesas existentes
- **🗑️ Excluir Despesas**: Remova despesas com confirmação de segurança
- **📊 Estatísticas**: Visualize o valor total gasto e número de despesas
- **🏷️ Categorização**: Organize despesas por categorias personalizadas
- **🎨 Interface Moderna**: Design Material Design com gradientes e animações
### ✅ **Funcionalidades Avançadas**
- **📱 Dashboard Principal**: Tela de boas-vindas com estatísticas em tempo real
- **🔍 Filtros**: Filtre despesas por categoria
- **📈 Estatísticas Visuais**: Cards com métricas importantes
- **🎯 Navegação Intuitiva**: Botões e ações bem organizados
- **🛡️ Tratamento de Erros**: Aplicação robusta que não fecha com erros
## 🏗️ Arquitetura do Projeto
### 📱 **Activities (Telas)**
- **`MainActivity.java`**: Tela principal com dashboard e estatísticas
- **`SimpleExpensesActivity.java`**: Lista simplificada de despesas
- **`AddExpenseActivity.java`**: Formulário para adicionar/editar despesas
### 🗄️ **Banco de Dados**
- **`DatabaseHelper.java`**: Gerenciador completo do SQLite
- **`Expense.java`**: Modelo de dados para despesas
### 🎨 **Interface**
- **`ExpenseAdapter.java`**: Adapter para RecyclerView
- **Layouts XML**: Design moderno com Material Design
## 🗄️ Banco de Dados SQLite
### 📊 **Tabela: `expenses`**
| Campo | Tipo | Descrição | Obrigatório |
|-------|------|-----------|-------------|
| `id` | INTEGER | Chave primária (auto incremento) | ✅ |
| `description` | TEXT | Descrição da despesa | ✅ |
| `amount` | REAL | Valor da despesa | ✅ |
| `category` | TEXT | Categoria da despesa | ✅ |
| `date` | TEXT | Data da despesa (DD/MM/AAAA) | ✅ |
| `notes` | TEXT | Notas adicionais | ❌ |
### 🔧 **Operações do DatabaseHelper**
```java
// Operações CRUD+wsqzxe
addExpense(Expense) // Adiciona nova despesa
getAllExpenses() // Retorna todas as despesas
getExpense(int id) // Retorna despesa específica
updateExpense(Expense) // Atualiza despesa existente
deleteExpense(int id) // Remove despesa
// Consultas personalizadas
getTotalExpenses() // Calcula total de despesas
getExpensesByCategory(String) // Filtra por categoria
```
## 🎨 Design e Interface
### 🎯 **Paleta de Cores**
- **Primária**: Azul moderno (#6366F1)
- **Secundária**: Azul claro (#A5B4FC)
- **Acento**: Laranja (#F59E0B)
- **Sucesso**: Verde (#10B981)
- **Erro**: Vermelho (#EF4444)GREA
### 🎨 **Elementos Visuais**
- **Gradientes**: Fundos com transições suaves
- **Cards**: Design Material com sombras e bordas arredondadas
- **Ícones**: SVG otimizados para cada função
- **Animações**: Transições suaves entre telas
## 📱 Como Usar a Aplicação
### 🚀 **Primeiro Uso**
1. **Abrir a aplicação** → Vê a tela de boas-vindas
2. **Ver estatísticas** → Total gasto e número de despesas
3. **Clicar "Começar Agora"** → Vai para adicionar primeira despesa
### 💰 **Gerenciar Despesas**
1. **Adicionar**: Botão "+" ou "Adicionar" → Formulário completo
2. **Preencher**: Descrição, valor, categoria, data, notas
3. **Salvar**: Confirma e retorna à tela anterior
4. **Ver Lista**: Botão "Ver Despesas" → Lista completa
### ✏️ **Editar/Excluir**
1. **Na Lista**: Cada despesa tem botões "Editar" e "Excluir"
2. **Editar**: Abre o formulário com dados preenchidos
3. **Excluir**: Confirmação de segurança antes de remover
## 🛠️ Tecnologias Utilizadas
- **📱 Android SDK**: Desenvolvimento nativo Android
- **🗄️ SQLite**: Banco de dados local persistente
- **🎨 Material Design**: Interface moderna e responsiva
- **📋 RecyclerView**: Lista otimizada para performance
- **☕ Java**: Linguagem de programação
- **🎨 Gradientes**: Design visual atrativo
## 📋 Requisitos do Sistema
- **Android**: API 24+ (Android 7.0 Nougat)
- **Android Studio**: Última versão estável
- **Gradle**: 8.13+
- **Java**: JDK 11+
## 🚀 Instalação e Execução
### 📥 **Instalação**
```bash
# 1. Clone o repositório
git clone [url-do-repositorio]
# 2. Abra no Android Studio
# 3. Sincronize o Gradle
# 4. Execute no emulador ou dispositivo
```
### 🔧 **Compilação**
```bash
# Compilar APK de debug
./gradlew assembleDebug
# Executar testes
./gradlew test
```
## 📁 Estrutura de Arquivos
```
app/src/main/
├── java/pt/epvc/gestodedespesas/
│ ├── MainActivity.java # Tela principal com dashboard
│ ├── SimpleExpensesActivity.java # Lista simplificada de despesas
│ ├── AddExpenseActivity.java # Formulário de adicionar/editar
│ ├── Expense.java # Modelo de dados
│ ├── DatabaseHelper.java # Gerenciador SQLite
│ └── ExpenseAdapter.java # Adapter do RecyclerView
├── res/layout/
│ ├── activity_main.xml # Layout da tela principal
│ ├── activity_simple_expenses.xml # Layout da lista de despesas
│ ├── activity_add_expense.xml # Layout do formulário
│ └── item_expense.xml # Layout do item da lista
├── res/drawable/ # Ícones e recursos visuais
├── res/values/
│ ├── colors.xml # Paleta de cores
│ └── strings.xml # Textos da aplicação
└── AndroidManifest.xml # Configuração da aplicação
```
## 🔧 Funcionalidades Técnicas
### 🛡️ **Tratamento de Erros**
- **Try-Catch**: Em todas as operações críticas
- **Verificações de Null**: Para evitar crashes
- **Mensagens Informativas**: Toast para feedback do usuário
- **Fallback Seguro**: Aplicação continua funcionando mesmo com erros
### 📊 **Performance**
- **RecyclerView**: Lista otimizada para grandes quantidades de dados
- **SQLite**: Consultas eficientes com índices
- **Lazy Loading**: Carregamento sob demanda
- **Memory Management**: Gerenciamento eficiente de memória
### 🎨 **Design Responsivo**
- **Material Design**: Seguindo guidelines do Google
- **Adaptação**: Funciona em diferentes tamanhos de tela
- **Acessibilidade**: Elementos grandes e bem contrastados
- **Navegação**: Fluxo intuitivo entre telas
## 🚀 Próximas Funcionalidades
### 📊 **Análises e Relatórios**
- Gráficos de gastos por categoria
- Relatórios mensais/anuais
- Comparativos entre períodos
- Exportação para PDF/Excel
### 🔍 **Filtros Avançados**
- Filtro por período de datas
- Busca por texto na descrição
- Ordenação por valor, data, categoria
- Filtros salvos
### 💾 **Backup e Sincronização**
- Backup automático na nuvem
- Sincronização entre dispositivos
- Restauração de dados
- Exportação/importação
### 🎨 **Personalização**
- Modo escuro/claro
- Temas personalizados
- Categorias customizáveis
- Widget para tela inicial
## 📝 Notas de Desenvolvimento
### 🎯 **Decisões de Design**
- **Interface Simplificada**: Foco na usabilidade
- **Material Design**: Consistência visual
- **SQLite Local**: Privacidade e performance
- **Tratamento de Erros**: Robustez da aplicação
### 🔧 **Implementações Técnicas**
- **DatabaseHelper**: Padrão Singleton para acesso ao banco
- **Serializable**: Passagem de objetos entre Activities
- **RecyclerView**: Performance otimizada para listas
- **Material Components**: Interface moderna e acessível
### 📱 **Compatibilidade**
- **Android 7.0+**: Suporte amplo de dispositivos
- **Edge-to-Edge**: Design moderno
- **Responsive**: Adapta-se a diferentes telas
- **Acessibilidade**: Suporte a leitores de tela
---
## 👨‍💻 Desenvolvido com ❤️
Esta aplicação foi desenvolvida como um exemplo completo de aplicação Android com SQLite, demonstrando:
- Arquitetura limpa e organizada
- Interface moderna e responsiva
- Tratamento robusto de erros
- Documentação completa em português
- Código bem comentado e explicado
**Tecnologias**: Android SDK, SQLite, Material Design, Java
**Design**: Interface moderna com gradientes e animações
**Funcionalidades**: CRUD completo, estatísticas, filtros, navegação intuitiva