Skip to content

Projeto da Disciplina de Programação Orientada à Objeto em Java: Aplicação desenvolvida em Java de um Museu Virtual de Personagens Históricos de Pernambuco

Notifications You must be signed in to change notification settings

FrancisLauriano/museu_virtual

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Museu Virtual de Personagens Históricos de Pernambuco

Status do Projeto: ✔️ (concluido) | ⚠️ (em desenvolvimento) | ❌ (não iniciada)

Tópicos

🔹 Descrição do projeto ✔️

🔹 Objetivos do projeto ✔️

🔹 Funcionalidades ✔️

🔹 Arquitetura do Backend ✔️

🔹 Diagrama de Classes ✔️

🔹 Casos de Uso ✔️

🔹 Descrição das Telas do Sistema ✔️

🔹 Linguagens, tecnologias, dependências e libs utilizadas

🔹 Desenvolvedores/Contribuintes

...

Descrição do projeto ✍️

O projeto Museu Virtual de Personagens Históricos de Pernambuco foi desenvolvido para atender à demanda de um professor de História que busca uma ferramenta interativa para realizar estudos e difundir o conhecimento histórico regional entre seus alunos e a comunidade.

Objetivos do projeto 🎯

1. Preservar e divulgar a história e cultura local de Pernambuco:

  • Promover a memória de personagens históricos que contribuíram para o desenvolvimento cultural, social e político da região.
  • Facilitar o acesso ao conhecimento histórico por meio de uma plataforma digital interativa.

2. Facilitar o acesso de estudantes e professores a conteúdos históricos relevantes:

  • Oferecer uma alternativa prática e moderna ao material didático tradicional, permitindo que os usuários explorem personagens históricos de forma interativa e visual.
  • Garantir o acesso ao conteúdo, especialmente para alunos de escolas em áreas com acesso limitado a museus e bibliotecas físicas.

3. Incentivar o uso de tecnologias digitais no ensino da história regional:

  • Aplicar uma abordagem inovadora no ensino de história, utilizando uma interface gráfica interativa.
  • Engajar alunos e professores em um ambiente de aprendizado prático e colaborativo, onde a tecnologia se torna uma ferramenta de pesquisa e ensino.

4. Oferecer uma plataforma diferenciada para cadastro e consulta de personagens históricos:

  • Disponibilizar funcionalidades de gestão de personagens e usuários, permitindo que o conteúdo seja atualizado de forma dinâmica e eficiente por administradores.

Funcionalidades 🎮

Funcionalidades para Administradores

1. Autenticação e Login:

  • Administradores realizam login com e-mail e senha. Após o login, são redirecionados para um painel administrativo.

2. Gestão de Personagens Históricos (CRUD):

  • Cadastrar Personagem: Inserir nome, biografia, tipo de personagem (Artista ou Político) e imagem.
  • Listar Personagens: Exibir uma lista com todos os personagens cadastrados, incluindo seus detalhes.
  • Atualizar Personagem: Modificar informações já cadastradas, como nome, biografia ou imagem.
  • Deletar Personagem: Remover personagens que não são mais relevantes.

3. Gestão de Usuários (CRUD):

  • Cadastrar Usuário: Criar novos usuários (administradores ou alunos) com nome, e-mail, senha e tipo de usuário.
  • Listar Usuários: Exibir todos os usuários cadastrados, com detalhes como nome e tipo.
  • Atualizar Usuário: Modificar dados dos usuários, incluindo nome e tipo.
  • Deletar Usuário: Remover usuários do sistema

Funcionalidades para Alunos

1. Autenticação e Login:

  • Os alunos realizam login com e-mail e senha e são direcionados para uma interface específica para consulta.

2. Consulta de Personagens:

  • Listar Personagens: Visualizar a lista completa de personagens históricos cadastrados.
  • Buscar Personagem Específico: Consultar informações detalhadas sobre um personagem específico, incluindo nome, biografia e imagem.

Arquitetura 📐 📏

MuseuVirtual/
├── src/
│   ├── annotations/
│   │   ├── TipoPersonagem.java
│   │   └── TipoUsuario.java
│   │
│   ├── controller/
│   │   ├── PersonagemController.java
│   │   └── UsuarioController.java
│   │
│   ├── DAO/
│   │   ├── InstanceDAO.java
│   │   ├── PersonagemDAO.java
│   │   └── UsuarioDAO.java
│   │
│   ├── model/
│   │   ├── Personagem.java
│   │   └── Usuario.java
│   │
│   ├── service/
│   │   ├── AuthService.java
│   │   └── FirebaseService.java
│   │
│   ├── view/
│   │   ├── LoginView.java
│   │   ├── AdminPainelView.java
│   │   ├── AlunoPainelView.java
│   │   ├── AdicionarUsuarioDialog
│   │   ├── AdicionarPersonagemDialog.java
│   │   ├── AdicionarPersonagemDialog.java
│   │   ├── EditarUsuarioDialog
│   │   └── EditarPersonagemDialog.java
│   │
│   ├── validators/
│   │   ├── TipoPersonagemValidator.java
│   │   └── TipoUsuarioValidator.java
│   │
│   ├── utils/
│   │   ├── HibernateUtil.java
|   |   ├── JPAUtils.java
│   │   └── PasswordUtil.java
│   │
│   │
│   └── Main.java
│
├── resources/
|   └── META-INF/
│       └── persistence.xml
│
└── pom.xml (Para gerenciamento com Maven)
  1. MuseuVirtual/: Diretório raiz do projeto.

    • src/: Contém o código-fonte do sistema.

    • annotations/:

      • TipoPersonagem.java e TipoUsuario.java: Definem anotações personalizadas para marcar e validar tipos de personagens e tipos de usuários. Essas anotações ajudam na validação e controle de dados específicos do sistema.
    • controller/:

      • PersonagemController.java e UsuarioController.java: Controladores que implementam a lógica de negócios e intermediam a comunicação entre a interface gráfica (view) e as operações de banco de dados (DAO). Por exemplo, o PersonagemController coordena as operações CRUD para personagens, e o UsuarioController para usuários.
    • DAO/ (Data Access Object):

      • InstanceDAO.java: Classe base genérica para operações de banco de dados, contendo métodos comuns como salvar, buscar por ID, listar, atualizar e deletar. Serve como base para outras DAOs.
      • PersonagemDAO.java e UsuarioDAO.java: Classes DAO específicas para as entidades Personagem e Usuario, estendendo InstanceDAO para fornecer métodos CRUD e consultas específicas.
    • model/:

      • Personagem.java e Usuario.java: Entidades que representam os modelos de dados do sistema. Essas classes mapeiam os atributos e relacionamentos das tabelas Personagem e Usuario no banco de dados.
    • service/:

      • AuthService.java: Implementa a autenticação de usuários, possivelmente manipulando tokens de sessão.
      • FirebaseService.java: Gerencia operações de integração com o Firebase, como o upload de imagens ou armazenamento de dados.
    • view/:

      • LoginView.java: Tela de login, onde administradores e alunos inserem suas credenciais.
      • AdminPainelView.java e AlunoPainelView.java: Painéis específicos para administradores e alunos, exibindo funcionalidades e informações conforme o perfil de usuário.
      • AdicionarUsuarioDialog.java, AdicionarPersonagemDialog.java, EditarUsuarioDialog.java, EditarPersonagemDialog.java: Diálogos específicos para gerenciar operações de cadastro e edição de personagens e usuários.
    • validators/:

      • TipoPersonagemValidator.java e TipoUsuarioValidator.java: Validadores responsáveis por garantir que os dados de tipos de personagens e usuários estejam corretos conforme a definição do sistema.
    • utils/:

      • HibernateUtil.java e JPAUtils.java: Utilitários de configuração e inicialização para o gerenciamento de persistência com Hibernate e JPA.
      • PasswordUtil.java: Funções auxiliares para lidar com senhas, como hashing e validação.
    • Main.java: Ponto de entrada da aplicação. Inicia o sistema e exibe a primeira tela (provavelmente o login).

  2. resources/:

  • META-INF/persistence.xml: Arquivo de configuração de persistência para o JPA/Hibernate. Define as propriedades do banco de dados e mapeamento de entidades.
  1. pom.xml: Arquivo de configuração do Maven, listando dependências e plugins necessários para construir e executar o projeto, facilitando o gerenciamento de bibliotecas e configurações de build.

...

Diagrama de Classes

...

Diagrama de Casos de Uso (UC) 🧑‍💻

Descrição das Telas do Sistema 🎨

  1. Tela de Login
  • Descrição:

    • O usuário (aluno ou administrador) acessa esta tela para entrar no sistema.
    • Os campos incluem:
    • Email: Campo de texto para o e-mail.
    • Senha: Campo oculto para senha.
    • Botão "Login": Inicia o processo de autenticação.
  • Interação:

    1. O usuário insere email e senha.
    2. Ao clicar no botão "Login", é feita a validação:
    • Se o login for bem-sucedido:
      • Administrador é redirecionado para o Painel Administrativo.
      • Aluno é direcionado para a Tela de Consulta de Personagens.
    • Se falhar, é exibida uma mensagem de erro informando "Email ou senha incorretos".
  1. Painel Administrativo
  • Descrição:

    • Esta tela é exclusiva para administradores e permite gerenciar usuários e personagens.
    • Há um banner de boas-vindas e abas para facilitar a navegação:
      • Aba "Usuários": Gerenciamento completo de usuários (CRUD).
      • Aba "Personagens": Gerenciamento de personagens históricos (CRUD).
  • Interação:

    1. Aba "Usuários":
    • Listar todos os usuários, buscar por email, editar, excluir ou adicionar um novo usuário.
    • A escolha do tipo de usuário pode ser feita em um diálogo específico.
    1. Aba "Personagens":
    • Listar personagens, buscar por nome, adicionar, editar ou excluir personagens existentes.
    1. Botão "Sair" no canto superior direito permite que o administrador faça logout e volte para a tela de login.
  1. Painel do Aluno
  • Descrição:

    • Esta tela é destinada aos alunos para consultar os personagens históricos cadastrados.
    • Contém um banner com boas-vindas e uma aba para listar e buscar personagens.
  • Interação:

    1. Botões de Ação:
    • Listar Personagens: Exibe todos os personagens no sistema.
    • Listar por Tipo: Abre um diálogo para o aluno escolher um tipo e listar os personagens correspondentes.
    • Buscar Personagem: Permite ao aluno buscar um personagem específico pelo nome.
    1. Tabela: Exibe os detalhes dos personagens encontrados.
  1. Tela de Adicionar Personagem
  • Descrição:

    • Permite que o administrador adicione um novo personagem ao sistema, inserindo:
      • Nome, Biografia, Tipo, e Imagem.
  • Interação:

    1. O administrador preenche os campos obrigatórios.
    2. A imagem pode ser selecionada através de um selecionador de arquivos com visualização em miniatura.
    3. Ao clicar em "Adicionar", o personagem é salvo no sistema.
  1. Tela de Editar Personagem
  • Descrição:

    • Permite editar informações de um personagem existente.
  • Interação:

    1. O administrador pode modificar nome, biografia, tipo e imagem.
    2. Após salvar, o sistema atualiza o personagem e exibe uma mensagem de confirmação.
  1. Tela de Adicionar Usuário
  • Descrição:

    • Permite cadastrar novos usuários, definindo:
      • Nome, Email, Senha, e Tipo (administrador ou aluno).
  • Interação:

    1. O administrador insere os dados necessários e salva o novo usuário.
    2. Caso o email já esteja em uso, uma mensagem de erro é exibida.
  1. Tela de Editar Usuário
  • Descrição:

    • Permite atualizar as informações de um usuário existente.
  • Interação:

    1. O administrador modifica os dados e salva as alterações.
    2. Se um novo email for inserido e já estiver em uso, o sistema exibe uma mensagem de erro.

Fluxo Geral de Interação:

  1. Usuário realiza login.
  2. Administrador acessa o painel com abas para gerenciar usuários e personagens.
  3. Aluno acessa a tela de consulta para listar ou buscar personagens.
  4. A partir das interfaces administrativas, personagens e usuários podem ser criados, atualizados, ou excluídos.

...

Linguagens, tecnologias, dependências e libs utilizadas 🛠️ ⚙️ 📚

...

Desenvolvedores/Contribuintes :octocat:

Time responsável pelo desenvolvimento do projeto


Francis Lauriano

Licença

The MIT License (MIT)

Copyright ©️ 2024 - Museu Virtual de Personagens Históricos de Pernambuco

About

Projeto da Disciplina de Programação Orientada à Objeto em Java: Aplicação desenvolvida em Java de um Museu Virtual de Personagens Históricos de Pernambuco

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages