Main Page
From Grupo4 Ahand
(Difference between revisions)
(→src/org.tropical.beans) |
(→Teste Unitário) |
||
Line 424: | Line 424: | ||
==Naked Objects== | ==Naked Objects== | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
==JPA - Java Persistence API== | ==JPA - Java Persistence API== |
Revision as of 12:33, 23 June 2007
Grupo A-Hand 4 |
---|
André Misse |
Clayton Leite |
Daphne Nobrega |
Otavio Fernandes |
Paulo Ortolan |
Sergio Pereira |
Wellington Oliveira |
Declaração do Problema
Projeto: Estacionamento Tropical
- O cliente, Estacionamento Tropical, vem sofrendo de alguns problemas como: a falta de organização do Caixa (Financeiro); falta de documentação e controle dos veículos que utilizam o serviço; dificuldade na localização rápida do veículo.
- Esse problema afeta os manobristas, que ficam sem um maior controle sobre que veículo está sobre sua reponsabilidade. Afeta os clientes, proprietários dos automóveis, que perdem um tempo precioso com a desorganização do serviço. E afeta também o administrador do estacionamento que tem mais trabalho para gerenciar tudo.
- Isso se deve devido ao fato do processo de guarda de veículos ser feita informalmente, os registros serem feitos em papel, os cálculos serem feitos a mão, sem qualquer controle mais rígido.
- O grupo propõe informatizar o estacionamento trazendo diversos benefícios como: redução de perdas devido a cálculos incorretos; agilidade no atendimento e localização do veículo no pátio, controle sobre os manobristas devido a avarias na guarda dos automóveis, criação facilitada de relatórios de faturamento diários/mensais.
Causa Raiz
- A informalidade dos processos da empresa leva uma perda de faturamento.
- Na maioria dos casos os manobristas são pessoas de baixo nível de instrução. Cálculos de tempo de permanência e troco errados com utilização de arredondamentos não permitidos.
- Outra ocorrência bastante comum é uma demora na localização dos carros no pátio, cuja capacidade é de 70 veículos, causando descontentamento ao cliente ao esperar o veiculo na saída.
- Hoje, todo o controle é feito em papel, os recibos são somados no fim do dia em uma folha A4, que por sua vez são contabilizados ao final de cada mês, Dessa forma não há como visualizar os faturamentos da empresa, impossibilitando-o de tomar estratégias para obtenção de melhor resultado.
Além disso, esse tipo de controle informal é muito fácil de ser burlado dando margem para furtos e pequenos roubos bastante comuns na empresa. - Quando ocorrem acidentes ou avarias no carro, ou mesmo reclamações de falta de algum objeto no interior do veículo, é bastante difícil lidar com a situação, pois não existe um controle de que manobrista estacionou ou retirou o carro da vaga. Frequentemente o prejuízo fica para o dono do estacionamento pela falta de informação do que aconteceu. A perda do cliente nesses casos também é comum.
Stakeholders e Usuários
Usuários | Outros Stakeholders |
---|---|
Funcionários que recebem os carros e registram em papel o modelo, placa e horarios de entrada e saida | Manobristas e Administrador do Estacionamento. |
Clientes que utilizam-se de serviços oferecidos pelo estacionamento | Donos de Veículos que contratam serviços. |
Contexto da Solução
- Os clientes irão receber um cupom impresso pelo sistema que irá ter Datas, Horarios e Descrições do Veiculo.
- Os manobristas terão acesso apenas para registrar a entrada e saída dos veículos e o recebimento do valor calculado pelo sistema.
- O gerente da empresa terá acesso completo ao sistema podendo consultar as bases de dados e a partir dessas informações implementar melhorias na sua empresa.
Restrições
Fonte | Restrição | Lógica |
---|---|---|
Operacional | Nível de profissionalismo de usuário baixa, gerando um treinamento rápido do novo sistema | Efetuar treinamento do funcionário a cada nova versão do sistema. |
Orçamento de Equipamentos | Aquisição de um PC básico e uma impressora para emitir os recibos. | Conservação do sistema e dos equipamentos adquiridos. |
Orçamento de Pessoal | Nenhum investimento devido à utilização da equipe já existente. | O grupo aHand4 para desenvolverá o sistema gratuitamente. |
Tecnologia Obrigatória | Utilização de ferramentas livres. Banco de Dados MySQL e linguagem de desenvolvimento JAVA. | O pessoal contratado domina a tecnologia utilizada na solução e oferece um treinamento para operação do sistema na entrega do produto. |
Análise Essencial do Negógio
Lista de Evento do Negócio
Evento | Descrição | Estímulo | Ação | Resposta |
---|---|---|---|---|
Chegou um carro | Um cliente chega com seu carro no estacionamento. O manobrista coleta os dados do carro e emite um recibo para o cliente. | Modelo, placa e hora de entrada do carro. | Recepcionar carro. | Recibo. |
Chegou o momento de estacionar o carro | Respeitando a ordem de chegada dos carros, o manobrista estaciona em uma vaga livre e informa ao sistema o local estacionado. | . | Estacionar o carro. | . |
Retirada do carro | O cliente chegou para retirar o seu veículo. | Recibo. | Recepcionar cliente. | Valor a pagar. |
Pagamento | O cliente paga o valor informado. | Dinheiro | Receber pagamento | . |
Cálculo do valor à pagar | O sistema calcula o preço à pagar a partir dos dados de entrada e saída do carro e a tabela de preços. | . | Calcular preço. | . |
Entrega do carro | Após o pagamento efetuado o manobrista busca o carro na vaga indicada pelo sistema. | . | Buscar carro. | Chave. |
DFD Essencial
Modelagem do Negócio
Diagrama de Casos de Uso do Negócio
Diagrama de Realização de Casos de Uso de Negócio
Recepcionar Carro
Estacionar Carro
Recepcionar Cliente
Calcular Preço
Receber Pagamento
Buscar Carro
Modelagem do Sistema
Lista de Requisitos Funcionais
Entrada do Veículo
- O sistema deverá permitir cadastrar veículos.
- O sistema deve verificar se há vagas disponíveis.
- O sistema deverá permitir consultar se o veículo está cadastrado.
- O sistema deverá permitir fazer o registro data/hora de entrada e a vaga a ser alocada.
- O sistema deverá emitir um recibo para o cliente.
Saída do Veículo
- O sistema deverá permitir que o usuário localize o registro entrado.
- O usuário deverá inseriros dados do cliente.
- O sistema deverá calcular o valor que será cobrado.
- O sistema deverá emitir um comprovante de pagamento.
Diagrama de Casos de Uso de Sistema
Cadastrar Veículo
Verificar Vaga
Verificar Vaga (Cheio)
Calcular Valor
Consultar Recibo
Consultar Veículo
Emitir Comprovante
Emitir Recibo
Fazer Registro
Saida de Veículo
Modelo de dados
Modelo Conceitual
Modelo Lógico Relacional
Modelo Físico Relacional
CREATE TABLE TabelaPrecos ( idPreco INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Descritivo VARCHAR(60) NULL, valor FLOAT NULL, PRIMARY KEY(idPreco) );
CREATE TABLE Modelos ( idModelo INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, descritivo VARCHAR(60) NULL, PRIMARY KEY(idModelo) );
CREATE TABLE Marcas ( idMarca INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, descritivo VARCHAR(60) NULL, PRIMARY KEY(idMarca) );
CREATE TABLE Veiculos ( idVeiculo INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Modelos_idModelo INTEGER UNSIGNED NOT NULL, placa VARCHAR(8) NOT NULL, Marcas_idMarca INTEGER UNSIGNED NOT NULL, PRIMARY KEY(idVeiculo), ) );
CREATE TABLE Funcionarios ( idFuncionario INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, descritivo VARCHAR(60) NULL, celular VARCHAR(60) NULL, cpf VARCHAR(11) NULL, habilitacao VARCHAR(15) NULL, endereco VARCHAR(60) NULL, bairro VARCHAR(40) NULL, cidade VARCHAR(40) NULL, uf VARCHAR(2) NULL, cep VARCHAR(10) NULL, PRIMARY KEY(idFuncionario) );
CREATE TABLE Vagas ( idVaga INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, descritivo VARCHAR(60) NULL, status BOOLEAN, PRIMARY KEY(idVaga) );
CREATE TABLE Estacionados ( idCupom INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Veiculos_idVeiculo INTEGER UNSIGNED NOT NULL, TabelaPrecos_idPreco INTEGER UNSIGNED NOT NULL, Funcionarios_idFuncionario INTEGER UNSIGNED NOT NULL, Vagas_idVaga INTEGER UNSIGNED NOT NULL, entrada DATETIME NULL, saida DATETIME NULL, valor FLOAT NULL, observacao VARCHAR(60) NULL, PRIMARY KEY(idCupom), INDEX Caixa_FKIndex2(Vagas_idVaga), INDEX Caixa_FKIndex3(Veiculos_idVeiculo), INDEX Caixa_FKIndex4(Funcionarios_idFuncionario), INDEX Estacionados_FKIndex4(TabelaPrecos_idPreco) );
Consultas
Consultar quanto foi cobrado no estacionamento do carro x placa em um determinado dia
SELECT e.idCupom as "IdCupom", m.descritivo as "Marca", mo.descritivo as "Modelo", v.placa as "Placa", e.valor as "Valor" FROM Estacionados e, veiculo v, marca m, modelo mo WHERE e.veiculo_idveiculo = v.idveiculo and v.modelo_idmodelo = mo.idmodelo and v.marca_idmarca = m.idmarca and v.placa = :placa and e.entrada between :dataI and :dataF ORDER BY Entrada;
Consultar qual foi a vaga utilizada no estacionamento do carro x (placa) em um determinado dia
SELECT e.idCupom as "IdCupom", m.descritivo as "Marca", mo.descritivo as "Modelo", v.placa as "Placa", e.vaga FROM Estacionados e, veiculo v, marca m, modelo mo WHERE e.veiculo_idveiculo = v.idveiculo and v.modelo_idmodelo = mo.idmodelo and v.marca_idmarca = m.idmarca and v.placa = :placa and e.entrada between :dataI and :dataF ORDER BY Entrada;
Consultar qual manobrista estacionou o carro x (placa) em um determinado dia
SELECT e.idCupom as "IdCupom", m.descritivo as "Marca", mo.descritivo as "Modelo", v.placa as "Placa", ma.descritivo as "Manobrista" FROM Estacionados e, veiculo v, marca m, modelo mo, manobrista ma WHERE e.veiculo_idveiculo = v.idveiculo and v.modelo_idmodelo = mo.idmodelo and v.marca_idmarca = m.idmarca and v.placa = :placa and e.entrada between :dataI and :dataF and e.manobrista_idfuncionario = ma.idfuncionario ORDER BY Entrada;
Consultar qtde de carros estacionados por manobrista
SELECT m.descritivo as "Manobrista", COUNT(*) AS "Qtde Carros" FROM Estacionados e, Manobrista m WHERE e.manobrista_idfuncionario = m.idFuncionario and e.entrada between :dataI and :dataF GROUP BY Manobrista.descritivo ORDER BY manobrista.descritivo;
Quantidade de clientes e Valor Recebido por dia
SELECT Saida as "Saida", count(*) as "Qtde Cliente, SUM(valor) AS "Total" FROM Estacionados WHERE entrada between :datai and :dataf GROUP BY saida