Aplicação desktop para gerenciamento de eventos com calendário interativo.
O Java Event Planner é uma aplicação desktop completa para gerenciamento de eventos em um calendário mensal interativo. Desenvolvido em Java com Swing, o projeto aplica o padrão MVC (Model-View-Controller) para separação de responsabilidades, além de conceitos de herança, polimorfismo e persistência de dados.
- POO & Polimorfismo: Modelagem orientada a objetos com classes especializadas de eventos (
MeetingEvent,BirthdayEvent,AppointmentEvent), enums e composição. - Padrão MVC: Separação clara entre modelos de dados, controladores, serviços de negócio e visão.
- Persistência Customizada: Leitura e escrita estruturada em arquivo local para persistência de dados.
- Interface Desktop Completa: Interface gráfica construída em Java Swing com calendário interativo, diálogos modais e formulários.
O projeto segue o padrão MVC com uma camada de serviço adicional:
flowchart TB
subgraph View
A[EventPlannerApp] --> B[CalendarPanel]
A --> C[EventListPanel]
A --> D[EventDialog]
end
subgraph Controller
E[EventManager]
end
subgraph Service
F[EventService]
end
subgraph Model
G[Event]
G --> H[MeetingEvent]
G --> I[BirthdayEvent]
G --> J[AppointmentEvent]
K[Attendee]
L[Category]
M[Recurrence]
end
subgraph Util
N[EventStorage]
end
A <--> E
E <--> F
F <--> N
F <--> G
N <-->|data/events.txt| O[(Arquivo)]
| Camada | Responsabilidade |
|---|---|
model/ |
Classes de domínio — Event, Attendee, Category, Recurrence |
view/ |
Componentes Swing — calendário, diálogos, painéis |
controller/ |
Comunicação entre View e Service |
service/ |
Regras de negócio e operações CRUD |
util/ |
Leitura e gravação do arquivo de dados |
| Funcionalidade | Descrição |
|---|---|
| 📆 Calendário interativo | Navegação mensal com indicação visual de eventos |
| ➕ CRUD de eventos | Criar, editar, excluir e visualizar eventos |
| 🏷️ Categorias | Meeting, Birthday, Appointment — cada uma com cor distinta |
| 🎨 Cores por categoria | Identificação visual rápida no calendário |
| 👥 Participantes | Nome e e-mail dos convidados |
| 🔔 Lembretes | Alertas pré-definidos para eventos |
| 🔁 Recorrência | None, Daily, Weekly, Monthly |
| 💾 Persistência | Dados salvos em data/events.txt |
JavaEventPlanner/
├── src/eventplanner/
│ ├── controller/
│ │ └── EventManager.java # Controlador principal
│ ├── model/
│ │ ├── Event.java # Classe base (herança)
│ │ ├── MeetingEvent.java # Reuniões
│ │ ├── BirthdayEvent.java # Aniversários
│ │ ├── AppointmentEvent.java # Compromissos
│ │ ├── Attendee.java # Participantes
│ │ ├── Category.java # Enum de categorias
│ │ └── Recurrence.java # Enum de recorrência
│ ├── service/
│ │ └── EventService.java # Regras de negócio
│ ├── util/
│ │ └── EventStorage.java # Persistência em arquivo
│ └── view/
│ ├── EventPlannerApp.java # Janela principal
│ ├── CalendarPanel.java # Componente do calendário
│ ├── EventDialog.java # Formulário de evento
│ └── EventListPanel.java # Lista lateral de eventos
├── data/
│ └── events.txt # Dados persistidos
├── sources.txt
└── README.md
Pré-requisito: Java JDK 17 ou superior.
# 1. Clone o repositório
git clone https://github.com/Pedrosasouza/JavaEventPlanner.git
cd JavaEventPlanner
# 2. Compile
javac -d out '@sources.txt'
# 3. Execute
java -cp out eventplanner.view.EventPlannerApp- Selecione uma data no calendário
- Clique em Add para criar um evento
- Preencha título, data, hora, local, categoria e descrição
- Adicione participantes e configure recorrência (opcional)
- Clique em Save para salvar
- Selecione um evento na lista lateral para ver detalhes
- Use Edit ou Delete para gerenciar
- Aplicação prática de herança e polimorfismo em Java
- Implementação do padrão MVC com separação de responsabilidades
- Desenvolvimento de interfaces gráficas com Java Swing
- Persistência de dados com manipulação de arquivos (I/O)
- Uso de Enums para modelar categorias e recorrências
Este projeto é de uso acadêmico e pessoal.
Desenvolvido por Pedro Santos Souza · USP São Carlos