241 lines
8.6 KiB
Markdown
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
|