Main Page
From Grupo4 Ahand
(Difference between revisions)
(→O Problema) |
|||
(191 intermediate revisions not shown) | |||
Line 1: | Line 1: | ||
- | + | {| border="1" cellspacing="0" | |
+ | !style="background:lightcyan" |Grupo A-Hand 4 | ||
+ | |- | ||
+ | |André Misse | ||
+ | |- | ||
+ | |Clayton Leite | ||
+ | |- | ||
+ | |Daphne Nobrega | ||
+ | |- | ||
+ | |Otavio Fernandes | ||
+ | |- | ||
+ | |Paulo Ortolan | ||
+ | |- | ||
+ | |Sergio Pereira | ||
+ | |- | ||
+ | |Wellington Oliveira | ||
+ | |} | ||
[[Default Page]] | [[Default Page]] | ||
==Declaração do Problema== | ==Declaração do Problema== | ||
- | |||
[[Projeto: Estacionamento Tropical]] | [[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.<br>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. | ||
- | |||
- | + | [[Image:Fish_Bone.jpg|frame|center]] | |
- | + | ||
- | + | ||
- | + | ||
- | === | + | ==Stakeholders e Usuários== |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | = | + | {| border="1" |
- | + | ! 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== | |
- | + | [[Image:Fronteira Sistemica.jpg|frame|center]] | |
- | : | + | |
- | : | + | :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== |
+ | {| border="1" | ||
+ | !style="background:lightgray"|Fonte | ||
+ | !style="background:lightgray"|Restrição | ||
+ | !style="background:lightgray"|Lógica | ||
+ | |- | ||
+ | !style="background:lightgray"|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. | ||
+ | |- | ||
+ | !style="background:lightgray"|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. | ||
+ | |- | ||
+ | !style="background:lightgray"|Orçamento de Pessoal | ||
+ | |Nenhum investimento devido à utilização da equipe já existente. | ||
+ | |O grupo aHand4 para desenvolverá o sistema gratuitamente. | ||
+ | |- | ||
+ | !style="background:lightgray"|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=== | |
- | :: | + | {| border="1" |
- | + | !style="background:lightgray"|Evento | |
+ | !style="background:lightgray"|Descrição | ||
+ | !style="background:lightgray"|Estímulo | ||
+ | !style="background:lightgray"|Ação | ||
+ | !style="background:lightgray"|Resposta | ||
+ | |- | ||
+ | !style="background:lightgray"|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. | ||
+ | |- | ||
+ | !style="background:lightgray"|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. | ||
+ | |. | ||
+ | |- | ||
+ | !style="background:lightgray"|Retirada do carro | ||
+ | |O cliente chegou para retirar o seu veículo. | ||
+ | |Recibo. | ||
+ | |Recepcionar cliente. | ||
+ | |Valor a pagar. | ||
+ | |- | ||
+ | !style="background:lightgray"|Pagamento | ||
+ | |O cliente paga o valor informado. | ||
+ | |Dinheiro | ||
+ | |Receber pagamento | ||
+ | |. | ||
+ | |- | ||
+ | !style="background:lightgray"|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. | ||
+ | |. | ||
+ | |- | ||
+ | !style="background:lightgray"|Entrega do carro | ||
+ | |Após o pagamento efetuado o manobrista busca o carro na vaga indicada pelo sistema. | ||
+ | |. | ||
+ | |Buscar carro. | ||
+ | |Chave. | ||
+ | |} | ||
- | == | + | ===DFD Essencial === |
+ | [[Image:DFDEstacionamentoTropical.jpeg|frame|center]] | ||
- | + | ==Modelagem do Negócio== | |
- | + | ===Diagrama de Casos de Uso do Negócio=== | |
+ | [[Image:DUC Negocio2.jpg|frame|center]] | ||
- | == | + | ===Diagrama de Realização de Casos de Uso de Negócio=== |
- | [[Image: | + | [[Image:UseCaseRealizationNegocio.JPG|frame|center]] |
- | == | + | ===Recepcionar Carro=== |
+ | [[Image:3DiagramaAtividadeNegocioRecepcionarCarro.jpg|frame|center|'''Diagrama de Atividades''']] | ||
+ | [[Image:DCN RecepcionarCarro.jpg|frame|center|'''Diagrama de Colaboração''']] | ||
+ | [[Image:DSN RecepcionarCarro.jpg|frame|center|'''Diagrama de Sequencia''']] | ||
+ | [[Image:VOPC RecepcionarCarro.jpg|frame|center|'''VOPC''']] | ||
- | === | + | ===Estacionar Carro=== |
- | [[Image: | + | [[Image:DAN EstacionarCarro.jpg|frame|center|'''Diagrama de Atividades''']] |
+ | [[Image:DCN EstacionarCarro.jpg|frame|center|'''Diagrama de Colaboração''']] | ||
+ | [[Image:DSN EstacionarCarro.jpg|frame|center|'''Diagrama de Sequencia''']] | ||
+ | [[Image:VOPC EstacionarCarro.jpg|frame|center|'''VOPC''']] | ||
- | === | + | ===Recepcionar Cliente=== |
- | [[Image: | + | [[Image:DAN RecepcionarCliente.jpg|frame|center|'''Diagrama de Atividades''']] |
+ | [[Image:DCN RecepcionarCliente.jpg|frame|center|'''Diagrama de Colaboração''']] | ||
+ | [[Image:DSN RecepcionarCliente.jpg|frame|center|'''Diagrama de Sequencia''']] | ||
+ | [[Image:VOPC RecepcionarCliente.jpg|frame|center|'''VOPC''']] | ||
+ | |||
+ | ===Calcular Preço=== | ||
+ | [[Image:DAN CalcularPreco.jpg|frame|center|'''Diagrama de Atividades''']] | ||
+ | [[Image:DCN CalcularPreco.jpg|frame|center|'''Diagrama de Colaboração''']] | ||
+ | [[Image:DSN CalcularPreco.jpg|frame|center|'''Diagrama de Sequencia''']] | ||
+ | [[Image:VOPC CalcularPreco.jpg|frame|center|'''VOPC''']] | ||
+ | |||
+ | ===Receber Pagamento=== | ||
+ | [[Image:DAN ReceberPagamento.jpg|frame|center|'''Diagrama de Atividades''']] | ||
+ | [[Image:DCN ReceberPagamento.jpg|frame|center|'''Diagrama de Colaboração''']] | ||
+ | [[Image:DSN ReceberPagamento.jpg|frame|center|'''Diagrama de Sequencia''']] | ||
+ | [[Image:VOPC ReceberPagamento.jpg|frame|center|'''VOPC''']] | ||
+ | |||
+ | ===Buscar Carro=== | ||
+ | [[Image:23DiagramaAtividadeNegocioBuscarCarro.JPG|frame|center|'''Diagrama de Atividades''']] | ||
+ | [[Image:DCN BuscarCarro.jpg|frame|center|'''Diagrama de Colaboração''']] | ||
+ | [[Image:VOPC BuscarCarro.jpg|frame|center|'''VOPC''']] | ||
+ | [[Image:DSN BuscarCarro.jpg|frame|center|'''Diagrama de Sequencia''']] | ||
+ | |||
+ | ==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=== | ||
+ | [[Image:UseCaseSistema1.jpg|frame|center|'''Cadastrar Veículo''']] | ||
+ | |||
+ | ===Cadastrar Veículo=== | ||
+ | [[Image:UCR CadastrarVeiculo.jpg|frame|center|'''Diagrama de Realização de Casos de Uso de Sistema''']] | ||
+ | [[Image:Colaboracao CadastrarVeiculo.jpg|frame|center|'''Diagrama de Colaboração de Casos de Uso de Sistema''']] | ||
+ | [[Image:SeqCadastrarVeiculo.jpg|frame|center|'''Diagrama de Sequência de Casos de Uso de Sistema''']] | ||
+ | |||
+ | ===Verificar Vaga=== | ||
+ | [[Image:UCR VerificaVaga.jpg|frame|center|'''Diagrama de Realização de Casos de Uso de Sistema''']] | ||
+ | [[Image:Colaboracao VerificaVaga.jpg|frame|center|'''Diagrama de Colaboração de Casos de Uso de Sistema''']] | ||
+ | [[Image:Seq VerificaVaga.jpg|frame|center|'''Diagrama de Sequência de Casos de Uso de Sistema''']] | ||
+ | ==== Verificar Vaga (Cheio)==== | ||
+ | [[Image:Colaboracao VerificaVagaCheio.jpg|frame|center|'''Diagrama de Colaboração de Casos de Uso de Sistema''']] | ||
+ | [[Image:Seq VerificaVagaCheio.jpg|frame|center|'''Diagrama de Sequência de Casos de Uso de Sistema''']] | ||
+ | |||
+ | ===Calcular Valor=== | ||
+ | [[Image:UCR CalcularValor.jpg|frame|center|'''Diagrama de Realização de Casos de Uso de Sistema''']] | ||
+ | [[Image:Colaboracao CalcularPreco.jpg|frame|center|'''Diagrama de Colaboração de Casos de Uso de Sistema''']] | ||
+ | [[Image:SeqCalcularValorASerCobrado.jpg|frame|center|'''Diagrama de Sequência de Casos de Uso de Sistema''']] | ||
+ | |||
+ | ===Consultar Recibo=== | ||
+ | [[Image:UCR ConsultarRecibo.jpg|frame|center|'''Diagrama de Realização de Casos de Uso de Sistema''']] | ||
+ | [[Image:ColaboracaoLocalizarRecibo.jpg|frame|center|'''Diagrama de Colaboração de Casos de Uso de Sistema''']] | ||
+ | [[Image:SeqConsultarReciboParaRetiradaVeiculo.jpg|frame|center|'''Diagrama de Sequência de Casos de Uso de Sistema''']] | ||
+ | |||
+ | ===Consultar Veículo=== | ||
+ | [[Image:UCR ConsultarVeiculo.jpg|frame|center|'''Diagrama de Realização de Casos de Uso de Sistema''']] | ||
+ | [[Image:ColaboracaoConsultarVeiculo.jpg|frame|center|'''Diagrama de Colaboração de Casos de Uso de Sistema''']] | ||
+ | [[Image:SeqConsultarVeiculo.jpg|frame|center|'''Diagrama de Sequência de Casos de Uso de Sistema''']] | ||
+ | |||
+ | ===Emitir Comprovante=== | ||
+ | [[Image:UCR EmitirComprovante.jpg|frame|center|'''Diagrama de Realização de Casos de Uso de Sistema''']] | ||
+ | [[Image:ColaboracoComprovante.jpg|frame|center|'''Diagrama de Colaboração de Casos de Uso de Sistema''']] | ||
+ | [[Image:SeqEmitirComprovantePagamento.jpg|frame|center|'''Diagrama de Sequência de Casos de Uso de Sistema''']] | ||
+ | |||
+ | |||
+ | ===Emitir Recibo=== | ||
+ | [[Image:UCR EmitirRecibo.jpg|frame|center|'''Diagrama de Realização de Casos de Uso de Sistema''']] | ||
+ | [[Image:ColaboracaoEmitirRecibo.jpg|frame|center|'''Diagrama de Colaboração de Casos de Uso de Sistema''']] | ||
+ | [[Image:SeqEmitirRecibo.jpg|frame|center|'''Diagrama de Sequência de Casos de Uso de Sistema''']] | ||
+ | |||
+ | ===Fazer Registro=== | ||
+ | [[Image:UCR FazerRegistro.jpg|frame|center|'''Diagrama de Realização de Casos de Uso de Sistema''']] | ||
+ | [[Image:ColaboracaoRegistarVeiculo.jpg|frame|center|'''Diagrama de Colaboração de Casos de Uso de Sistema''']] | ||
+ | [[Image:SeqFazerRegistro.jpg|frame|center|'''Diagrama de Sequência de Casos de Uso de Sistema''']] | ||
+ | |||
+ | ===Saida de Veículo=== | ||
+ | [[Image:UseCaseRealizationSaidaVeiculo.jpg|frame|center|'''Diagrama de Realização de Casos de Uso de Sistema''']] | ||
+ | [[Image:Colaboracao SaidaVeiculo.jpg|frame|center|'''Diagrama de Colaboração de Casos de Uso de Sistema''']] | ||
+ | [[Image:SeqRegistrarSaida.jpg|frame|center|'''Diagrama de Sequência de Casos de Uso de Sistema''']] | ||
+ | |||
+ | ==Modelo de dados== | ||
+ | |||
+ | ===Modelo Conceitual=== | ||
+ | [[Image:BDConceitual2.gif|frame|center]] | ||
+ | |||
+ | ===Modelo Lógico Relacional=== | ||
+ | [[Image:DERBancoLogico 02.jpg|frame|center]] | ||
+ | |||
+ | ===Modelo Físico Relacional=== | ||
+ | [[Image:BancoLogico 02.jpg|frame|center]] | ||
+ | |||
+ | <pre> | ||
+ | CREATE TABLE TabelaPrecos ( | ||
+ | idPreco INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, | ||
+ | Descritivo VARCHAR(60) NULL, | ||
+ | valor FLOAT NULL, | ||
+ | PRIMARY KEY(idPreco) | ||
+ | ); | ||
+ | </pre> | ||
+ | |||
+ | <pre> | ||
+ | CREATE TABLE Modelos ( | ||
+ | idModelo INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, | ||
+ | descritivo VARCHAR(60) NULL, | ||
+ | PRIMARY KEY(idModelo) | ||
+ | ); | ||
+ | </pre> | ||
+ | |||
+ | <pre> | ||
+ | CREATE TABLE Marcas ( | ||
+ | idMarca INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, | ||
+ | descritivo VARCHAR(60) NULL, | ||
+ | PRIMARY KEY(idMarca) | ||
+ | ); | ||
+ | </pre> | ||
+ | |||
+ | <pre> | ||
+ | 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), | ||
+ | ) | ||
+ | ); | ||
+ | </pre> | ||
+ | |||
+ | <pre> | ||
+ | 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) | ||
+ | ); | ||
+ | </pre> | ||
+ | |||
+ | <pre> | ||
+ | CREATE TABLE Vagas ( | ||
+ | idVaga INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, | ||
+ | descritivo VARCHAR(60) NULL, | ||
+ | status BOOLEAN, | ||
+ | PRIMARY KEY(idVaga) | ||
+ | ); | ||
+ | </pre> | ||
+ | |||
+ | <pre> | ||
+ | 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) | ||
+ | ); | ||
+ | </pre> | ||
+ | |||
+ | ===Consultas=== | ||
+ | |||
+ | ====Consultar quanto foi cobrado no estacionamento do carro x placa em um determinado dia==== | ||
+ | <pre> | ||
+ | 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; | ||
+ | </pre> | ||
+ | [[Image:Consultas no Banco 01.png|frame|center]] | ||
+ | |||
+ | ====Consultar qual foi a vaga utilizada no estacionamento do carro x (placa) em um determinado dia==== | ||
+ | |||
+ | <pre> | ||
+ | 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; | ||
+ | </pre> | ||
+ | [[Image:Consultas no Banco 02.png|frame|center]] | ||
+ | |||
+ | ====Consultar qual manobrista estacionou o carro x (placa) em um determinado dia==== | ||
+ | <pre> | ||
+ | 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; | ||
+ | </pre> | ||
+ | |||
+ | [[Image:Consultas no Banco 03.png|frame|center]] | ||
+ | |||
+ | ====Consultar qtde de carros estacionados por manobrista ==== | ||
+ | <pre> | ||
+ | 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; | ||
+ | </pre> | ||
+ | |||
+ | [[Image:Consultas no Banco 04.png|frame|center]] | ||
+ | |||
+ | ==== Quantidade de clientes e Valor Recebido por dia ==== | ||
+ | <pre> | ||
+ | SELECT Saida as "Saida", count(*) as "Qtde Cliente, SUM(valor) AS "Total" | ||
+ | |||
+ | FROM Estacionados | ||
+ | |||
+ | WHERE entrada between :datai and :dataf | ||
+ | |||
+ | GROUP BY saida | ||
+ | </pre> | ||
+ | [[Image:Consultas no Banco 05.png|frame|center]] | ||
+ | |||
+ | |||
+ | ==Projeto Final== | ||
+ | |||
+ | Download das implementações: | ||
+ | |||
+ | ::* Apresentação JPA | ||
+ | ::* Apresentação do Sistema | ||
+ | ::* Implementação Naked Objects | ||
+ | ::* Implementação JUnit | ||
+ | ::* Implementação Regra de Negócio Eclipse | ||
+ | ::* Implementação Interface Usuário Netbeans | ||
+ | |||
+ | [[Image:Endereco_Downloads.jpg|frame|center]] |
Current revision as of 17:24, 23 June 2007
Grupo A-Hand 4 |
---|
André Misse |
Clayton Leite |
Daphne Nobrega |
Otavio Fernandes |
Paulo Ortolan |
Sergio Pereira |
Wellington Oliveira |
[edit] 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.
[edit] 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.
[edit] 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. |
[edit] 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.
[edit] 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. |
[edit] Análise Essencial do Negógio
[edit] 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. |
[edit] DFD Essencial
[edit] Modelagem do Negócio
[edit] Diagrama de Casos de Uso do Negócio
[edit] Diagrama de Realização de Casos de Uso de Negócio
[edit] Recepcionar Carro
[edit] Estacionar Carro
[edit] Recepcionar Cliente
[edit] Calcular Preço
[edit] Receber Pagamento
[edit] Buscar Carro
[edit] Modelagem do Sistema
[edit] Lista de Requisitos Funcionais
[edit] 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.
[edit] 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.
[edit] Diagrama de Casos de Uso de Sistema
[edit] Cadastrar Veículo
[edit] Verificar Vaga
[edit] Verificar Vaga (Cheio)
[edit] Calcular Valor
[edit] Consultar Recibo
[edit] Consultar Veículo
[edit] Emitir Comprovante
[edit] Emitir Recibo
[edit] Fazer Registro
[edit] Saida de Veículo
[edit] Modelo de dados
[edit] Modelo Conceitual
[edit] Modelo Lógico Relacional
[edit] 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) );
[edit] Consultas
[edit] 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;
[edit] 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;
[edit] 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;
[edit] 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;
[edit] 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
[edit] Projeto Final
Download das implementações:
- Apresentação JPA
- Apresentação do Sistema
- Implementação Naked Objects
- Implementação JUnit
- Implementação Regra de Negócio Eclipse
- Implementação Interface Usuário Netbeans