Skip to content

esproigor-png/sistema-eventos-java

Repository files navigation

🎯 Sistema de Eventos - Imersão Digital

📋 Descrição

Sistema em Java utilizando Programação Orientada a Objetos (POO) para cadastro e notificação de eventos que ocorrem em uma cidade. O sistema permite que usuários se cadastrem, vejam eventos disponíveis e participem dos que desejarem.


✨ Funcionalidades Implementadas

✅ Requisitos Obrigatórios

  • ✓ Paradigma Orientado a Objetos (POO)
  • ✓ Repositório GIT com versionamento
  • ✓ Diagrama de classes UML
  • ✓ Projeto em Console
  • ✓ Sistema de cadastro de usuários (3+ atributos)
  • ✓ Sistema de cadastro de eventos com: nome, endereço, categoria, horário, descrição
  • ✓ Categorias delimitadas (Festa, Esportivo, Show, etc)
  • ✓ Consulta de eventos e participação
  • ✓ Visualização de eventos confirmados
  • ✓ Cancelamento de participação
  • ✓ Ordenação por horário (eventos próximos)
  • ✓ Status de eventos (ocorrendo, próximo, finalizado)
  • ✓ Persistência em arquivo (events.data)
  • ✓ Carregamento de dados ao iniciar

🎁 Extras Implementados

  • Enumeração de categorias (enum)
  • Uso de LocalDateTime para controle preciso de horários
  • Interface amigável com menu interativo
  • Validação de entrada de dados
  • Capacidade máxima de participantes
  • Feedback visual com símbolos (✓, ✗)

🏗️ Arquitetura - Diagrama de Classes

┌─────────────────────────────────────────────┐
│           SISTEMA DE EVENTOS                │
└─────────────────────────────────────────────┘

┌──────────────────┐         ┌──────────────────┐
│    USUARIO       │         │     EVENTO       │
├──────────────────┤         ├──────────────────┤
│ - id: int        │         │ - id: int        │
│ - nome: String   │         │ - nome: String   │
│ - email: String  │         │ - endereco: String
│ - telefone: Str  │         │ - categoria: Enum│
│ - cidade: String │         │ - horario: LDT   │
│ - eventos: List  │         │ - descricao: Str │
├──────────────────┤         │ - capacidade: int│
│ + getId()        │         │ - participantes  │
│ + getNome()      │         ├──────────────────┤
│ + adicionarEvt() │         │ + getId()        │
│ + removerEvt()   │         │ + getNome()      │
└──────────────────┘         │ + getStatus()    │
        △                     │ + addParticipant │
        │                     │ + removePartici. │
        │ participa           └──────────────────┘
        │
┌─────────────────────────────────────────────┐
│      GERENCIADOR EVENTOS                    │
├─────────────────────────────────────────────┤
│ - eventos: List<Evento>                     │
│ - usuarios: List<Usuario>                   │
│ - proximoId: int                            │
├─────────────────────────────────────────────┤
│ + cadastrarUsuario()                        │
│ + cadastrarEvento()                         │
│ + listarEventos()                           │
│ + participarEvento()                        │
│ + cancelarParticipacao()                    │
│ + listarMeusEventos()                       │
│ + listarEventosPorStatus()                  │
│ + salvarEventos()                           │
│ + carregarEventos()                         │
└─────────────────────────────────────────────┘
        △
        │ controla
        │
┌─────────────────────────────────────────────┐
│      SISTEMA EVENTOS (Main)                 │
├─────────────────────────────────────────────┤
│ + main()                                    │
│ + exibirMenu()                              │
│ + cadastrarUsuario()                        │
│ + cadastrarEvento()                         │
│ + participarEvento()                        │
│ - gerenciador: GerenciadorEventos           │
└─────────────────────────────────────────────┘

┌────────────────────────────────────┐
│    CATEGORIA EVENTO (Enum)         │
├────────────────────────────────────┤
│ FESTA                              │
│ ESPORTIVO                          │
│ SHOW                               │
│ PALESTRA                           │
│ CINEMA                             │
│ GASTRONOMIA                        │
│ CULTURA                            │
│ OUTRO                              │
└────────────────────────────────────┘

🚀 Como Usar

1. Compilar o Código

javac SistemaEventos.java

2. Executar

java SistemaEventos

3. Menu Interativo

================= SISTEMA DE EVENTOS =================
1. Cadastrar Usuário
2. Listar Usuários
3. Cadastrar Evento
4. Listar Todos os Eventos
5. Participar de um Evento
6. Cancelar Participação
7. Meus Eventos
8. Eventos Próximos
9. Eventos Ocorrendo Agora
10. Eventos Finalizados
0. Sair

4. Exemplo de Uso

1. Cadastrar um usuário
2. Cadastrar alguns eventos
3. Participar de eventos (opção 5)
4. Ver seus eventos (opção 7)
5. Visualizar eventos por status (próximos, ocorrendo, finalizados)

📁 Estrutura de Arquivos

sistema-eventos/
├── SistemaEventos.java          # Arquivo principal com todas as classes
├── events.data                  # Arquivo de persistência (criado automaticamente)
├── README.md                    # Este arquivo
└── .git/                        # Repositório Git

💾 Persistência de Dados

Os eventos são salvos automaticamente no arquivo events.data em formato delimitado:

id|nome|endereco|categoria|horario|descricao|capacidade|participantes

Exemplo:

1|Show Clássico|Av. Brasil, 1000|SHOW|2024-03-20 19:00|Show de música clássica|100|1,2,3

Ao reiniciar o programa, todos os eventos são carregados automaticamente.


🎨 Paradigmas e Padrões Utilizados

POO - Princípios Aplicados

  1. Encapsulamento: Variáveis privadas com getters/setters
  2. Herança: Relacionamento entre classes
  3. Abstração: Separação de responsabilidades
  4. Polimorfismo: Métodos com diferentes comportamentos

Padrões

  • Enum: Para categorias de eventos
  • ArrayList: Para coleções dinâmicas
  • LocalDateTime: Para manipulação de datas/horas
  • MVC Conceitual: Separação lógica (Modelo, Visualização, Controle)

🔍 Recursos Técnicos

  • Linguagem: Java 8+
  • IDE: Eclipse, NetBeans, IntelliJ ou Replit
  • Versão Control: Git
  • Persistência: Arquivo de texto (.data)

📝 Requisitos Atendidos

Requisito Status
POO
Repositório GIT
Diagrama de Classes
Projeto Console
Cadastro de Usuário (3+ atributos) ✅ (4 atributos)
Cadastro de Eventos
Categorias Delimitadas
Participação em Eventos
Ordenação por Horário
Status dos Eventos
Persistência em Arquivo
Carregamento de Dados

👨‍💻 Autor

Igor Pinheiro Ferreira
Estudante de Gestão da Tecnologia da Informação
Rio de Janeiro, 2026


📞 Suporte

Para dúvidas ou melhorias, consulte a documentação do Java e as referências da Unidade Curricular.

Desenvolvido com ❤️ para Imersão Digital

About

Sistema de cadastro e notificação de eventos em Java

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages