Main Page

From Grupo4 Ahand

(Difference between revisions)
 
(One intermediate revision not shown)
Line 246: Line 246:
===Modelo Conceitual===
===Modelo Conceitual===
-
[[Image:Modelo de Dados Conceitual.JPG|frame|center]]
+
[[Image:BDConceitual2.gif|frame|center]]
===Modelo Lógico Relacional===
===Modelo Lógico Relacional===
Line 434: Line 434:
::* Implementação Interface Usuário Netbeans
::* Implementação Interface Usuário Netbeans
-
 
+
[[Image:Endereco_Downloads.jpg|frame|center]]
-
[rapidshare[dot]com/files/38877110/Projeto_Final_JPA[dot]rar Material Grupo04]
+

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

Default Page

Contents

[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

Diagrama de Atividades
Diagrama de Colaboração
Diagrama de Sequencia
VOPC

[edit] Estacionar Carro

Diagrama de Atividades
Diagrama de Colaboração
Diagrama de Sequencia
VOPC

[edit] Recepcionar Cliente

Diagrama de Atividades
Diagrama de Colaboração
Diagrama de Sequencia
VOPC

[edit] Calcular Preço

Diagrama de Atividades
Diagrama de Colaboração
Diagrama de Sequencia
VOPC

[edit] Receber Pagamento

Diagrama de Atividades
Diagrama de Colaboração
Diagrama de Sequencia
VOPC

[edit] Buscar Carro

Diagrama de Atividades
Diagrama de Colaboração
VOPC
Diagrama de Sequencia

[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

Cadastrar Veículo

[edit] Cadastrar Veículo

Diagrama de Realização de Casos de Uso de Sistema
Diagrama de Colaboração de Casos de Uso de Sistema
Diagrama de Sequência de Casos de Uso de Sistema

[edit] Verificar Vaga

Diagrama de Realização de Casos de Uso de Sistema
Diagrama de Colaboração de Casos de Uso de Sistema
Diagrama de Sequência de Casos de Uso de Sistema

[edit] Verificar Vaga (Cheio)

Diagrama de Colaboração de Casos de Uso de Sistema
Diagrama de Sequência de Casos de Uso de Sistema

[edit] Calcular Valor

Diagrama de Realização de Casos de Uso de Sistema
Diagrama de Colaboração de Casos de Uso de Sistema
Diagrama de Sequência de Casos de Uso de Sistema

[edit] Consultar Recibo

Diagrama de Realização de Casos de Uso de Sistema
Diagrama de Colaboração de Casos de Uso de Sistema
Diagrama de Sequência de Casos de Uso de Sistema

[edit] Consultar Veículo

Diagrama de Realização de Casos de Uso de Sistema
Diagrama de Colaboração de Casos de Uso de Sistema
Diagrama de Sequência de Casos de Uso de Sistema

[edit] Emitir Comprovante

Diagrama de Realização de Casos de Uso de Sistema
Diagrama de Colaboração de Casos de Uso de Sistema
Diagrama de Sequência de Casos de Uso de Sistema


[edit] Emitir Recibo

Diagrama de Realização de Casos de Uso de Sistema
Diagrama de Colaboração de Casos de Uso de Sistema
Diagrama de Sequência de Casos de Uso de Sistema

[edit] Fazer Registro

Diagrama de Realização de Casos de Uso de Sistema
Diagrama de Colaboração de Casos de Uso de Sistema
Diagrama de Sequência de Casos de Uso de Sistema

[edit] Saida de Veículo

Diagrama de Realização de Casos de Uso de Sistema
Diagrama de Colaboração de Casos de Uso de Sistema
Diagrama de Sequência de Casos de Uso de Sistema

[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
Personal tools