-
Java
Sistema Venda de Bilhetes
Trabalho da Disciplina: Java na Web
Robson Martins
Prof. MSc. Emilio Celso de Souza
MBA em Desenvolvimento de Aplicações Java - SOA / FIAP
29/08/2011
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.