Java

 Sistema Venda de Bilhetes

Trabalho da Disciplina: Java na Web
Prof. MSc. Emilio Celso de Souza

MBA em Desenvolvimento de Aplicações Java - SOA / FIAP
29/08/2011

Robson de Sousa Martins


Download do código-fonte:

Sistema Venda de Bilhetes (ZIP ~12MB)


Tecnologias empregadas:

  • Servlet;
  • JSP;
  • Rich Faces;
  • JSF;
  • JPA;
  • Banco de Dados MySQL.

Enunciado:

O projeto consiste no desenvolvimento de uma aplicação para venda de bilhetes para eventos culturais. As funcionalidades contempladas são descritas a seguir:

Área Administrador:

  • Cadastro de Categorias (Teatro, Cinema, Show, etc.)
  • Cadastro de Eventos por Categoria (Exemplo: Show do Mazzaropi, Filme “Elas voltaram”, etc.) com as datas, disponibilidades e valores.
  • Cadastro de dados dos clientes (para emissão do bilhete).
  • Consulta de Bilhetes Vendidos, por evento, com os valores totais.

Área Cliente

  • Consulta a Eventos, classificados por categoria e por data
  • Compra de Bilhetes.
  • Devolução de Bilhetes (prever um período mínimo)

Apresentação

  • Dada a descrição acima, usar a criatividade para definir as interfaces e navegabilidade entre as telas.
  • Cuidar para que a aplicação esteja funcionando corretamente, antes da entrega.
  • Incluir um documento explicando o funcionamento, como usuário inicial, instalação, etc.

Sobre a implementação:

A implementação deste projeto foi realizada com o uso de JSF, RichFaces e JPA.

As classes Usuario, Categoria, Evento e Bilhete representam os beans que são persistidos no banco.

As classes UsuarioManaged, CategoriaManaged, EventoManaged e BilheteManaged são derivadas das classes dos beans, e são as classes managed acessíveis pelo RichFaces e JSF.

A classe GenericDAO é uma classe abstrata que implementa os métodos básicos para acesso ao banco de dados com JPA, e as classes UsuarioDAO, CategoriaDAO, EventoDAO e BilheteDAO são as especializações responsáveis pelo acesso a cada um dos objetos persistidos.

Na classe GenericDAO existe um atributo 'debugInfo' que pode ser alterado para true para imprimir no console as informações de debug (default = false).

Na classe BilheteManaged há uma constante 'TEMPO_MIN_DEVOLUCAO', que define o tempo mínimo para devolução de um bilhete. O valor default configurado é 1 dia, ou seja, só é possível devolver um bilhete desde a compra até 24 horas antes do evento acontecer.


Banco de Dados MySQL:

Para que a aplicação funcione, é necessário restaurar o backup do banco de dados MySQL, que também já contém alguns usuários, categorias, eventos e bilhetes pré-cadastrados.

O schema usado é "vendabilhetes".

O usuário administrador inicial é:
Administrador:
CPF: 123456
Senha: 123456

ou

Emilio Celso de Souza:
CPF: 234567
Senha: 234567

Todos os usuários têm a senha igual ao CPF.


Funcionalidades:

Além das funcionalidades requeridas pela especificação, foram implementados os seguintes recursos:

  • Alteração de Senha;
  • Classificação Etária para o Evento e validação da idade do Cliente ao vender um Bilhete: não é possível vender um bilhete para um cliente que não se enquadre na classificação etária do evento.
  • Ordenação das tabelas por quaisquer colunas, através do componente rich:extendedDataTable.

Funcionalidades integradas:

  • A Consulta de Eventos pelo cliente foi omitida, porque a tela de Compra de Bilhetes já contempla essa funcionalidade, listando todos os próximos eventos dispóníveis.

Funcionalidades desejáveis:

  • Para uma futura versão do sistema, uma possível funcionalidade seria a emissão do bilhete para impressão via web.
  • Outra funcionalidade desejável seria o cadastro de usuários administradores do sistema, que foi omitida nesta versão para simplicidade.