Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
PATO BRANCO
2012
PATO BRANCO
2012
RESUMO
BERTAN, Marlon Eduardo; RODRIGUES, Thiago Cagnin. Sistema desktop em Delphi para
gerenciamento de locadora de veculos vinculado a uma pgina web em PHP. 91 f. Trabalho
de Concluso de Curso - Curso Superior de Tecnologia em Anlise e Desenvolvimento de
Sistemas, Universidade Tecnolgica Federal do Paran, Cmpus Pato Branco. Pato Branco,
2012.
O uso de sistemas computacionais para auxlio na realizao de processos de negcio das
organizaes tem sido cada vez mais evidenciado. Isso ocorre por motivos diversos, incluindo
o volume de informaes geradas e manipuladas pelas empresas, a agilidade necessria na
realizao de atividades e mesmo pelo auxlio no gerenciamento e tomada de deciso. Em
organizaes de grande porte os sistemas de informao podem automatizar as mais diversas
atividades da cadeia de suprimentos, como, por exemplo, fazer automaticamente pedido de
matria-prima ou produtos quando a quantidade em estoque atinge determinado valor. Mesmo
para empresas de pequeno porte os benefcios do uso de sistemas de informaes, geralmente
denominados sistemas de informaes gerenciais, uma ferramenta importante ao suporte
gerencial. Dados atuais e de histrico podem ser de muita valia no momento de tomar uma
deciso. Assim, tendo em vista a relevncia que sistemas de informao podem ter, mesmo
em empresas de pequeno porte, neste trabalho apresentado o desenvolvimento de um
sistema gerencial para uma locadora de veculos. O sistema de gerenciamento um sistema
desktop implementado na linguagem Delphi e uma aplicao web, implementada em PHP,
possibilita a visualizao dos veculos a serem locados e realizar a locao dos mesmos. Tanto
a aplicao desktop quanto a aplicao web utilizam a mesma base de dados.
Palavras-chave: Linguagem Delphi. Sistemas de informaes gerenciais. Sistema para
locadora de veculos. PHP.
ABSTRACT
BERTAN, Marlon; RODRIGUES, Thiago Cagnin. Delphi desktop system for managing a
rent a car linked to a web page developed in PHP. 91 f. Trabalho de Concluso de Curso Curso Superior de Tecnologia em Anlise e Desenvolvimento de Sistemas, Universidade
Tecnolgica Federal do Paran, Cmpus Pato Branco. Pato Branco, 2012.
The use of computational systems to aid in the implementation of business processes has been
increasingly evident. This occurs for several reasons, including the amount of information
generated and manipulated by companies, the agility necessary in conducting activities and
even aid in the management and decision making. In large organizations information systems
can automate various activities of the supply chain, for example, to make request
automatically for materials or products where the quantity in stock reaches a certain value.
Even for small businesses the benefits of using information systems, commonly called
management information systems, is an important tool to support management. Current and
historical data can be of great value when making a decision. Thus, considering the
importance that information systems can have, even in small businesses, this work presents
the development of a management system for a car rental agency. The management system is
a desktop system implemented in Delphi language and a web application, implemented in
PHP, allows the visualization of vehicles to be leased. The desktop application and the web
application use the same database.
Palavras-chave: Delphi language. Information management system. Car rental system. PHP.
LISTA DE FIGURAS
Figura 1 Ferramenta de modelagem Astah Community ................................................... 19
Figura 2 Ferramenta SQL Server composio grfica de banco de dados ........................ 20
Figura 3 Ferramenta SQL Server propriedades de campos de tabelas ............................. 21
Figura 4 Ferramenta SQL Server gerao de script das tabelas ...................................... 21
Figura 5 Ambiente de desenvolvimento da Linguagem Delphi......................................... 22
Figura 6 Tela principal da IDE NetBeans....................................................................... 23
Figura 7 Tela principal da ferramenta NotePad++........................................................... 24
Figura 8 Tela do painel de controle do XAMPP.............................................................. 26
Figura 9 Diagrama de casos de uso................................................................................ 30
Figura 10 Diagrama de entidades e relacionamentos veculos ....................................... 31
Figura 11 Diagrama de entidades e relacionamentos Localizao .................................. 31
Figura 12 Diagrama de entidades e relacionamentos Clientes........................................ 32
Figura 13 Diagrama de entidades e relacionamentos Movimentaes ............................ 33
Figura 14 Tela inicial do sistema................................................................................... 34
Figura 15 Menu geral e seus itens de menu .................................................................... 35
Figura 16 Tela de cadastro de Unidades Federativas ....................................................... 35
Figura 17 Tela de tipos de logradouros .......................................................................... 36
Figura 18 Tela de logradouros ...................................................................................... 36
Figura 19 Tela de cadastro veculos aba dados pessoais ................................................ 37
Figura 20 Tela de cadastro de nacionalidades ................................................................. 38
Figura 21 Tela de cadastro de empresas ......................................................................... 39
Figura 22 Tela de cadastro de usurios .......................................................................... 40
Figura 23 Menu Veculos e seus itens de menu............................................................... 40
Figura 24 Cadastro de opcionais de veculos .................................................................. 41
Figura 25 Tela de manuteno de opcionais de veculos .................................................. 42
Figura 26 Tela de manuteno de cores de veculos ........................................................ 43
Figura 27 Tela de cadastro de espcie e tipos de veculos ................................................ 43
Figura 28 Tela de cadastro de marcas de veculos ........................................................... 44
Figura 29 Tela de cadastro de modelos de veculos ......................................................... 44
Figura 30 Tela de cadastro de ano e modelo de veculos .................................................. 45
Figura 31 Tela de cadastro de tipo de veculo ................................................................. 45
Figura 32 Tela de cadastro veculos............................................................................... 46
Figura 33 Tela de cadastro de grupos............................................................................. 47
Figura 34 Tela de cadastro de servios........................................................................... 47
Figura 35 Tela de cadastro de situaes ......................................................................... 48
Figura 36 Tela de cadastro de tipos de situaes ............................................................. 48
Figura 37 Tela de cadastro de grupos de opcionais.......................................................... 49
Figura 38 Menu Movimentao e seus itens de menu ...................................................... 49
Figura 39 Tela de manuteno de veculos ..................................................................... 50
Figura 40 Tela de locao de veculos ........................................................................... 51
Figura 41 Tela de locao de veculos: check-in 1........................................................... 52
Figura 42 Tela de locao de veculos: check-in 2........................................................... 53
Figura 43 Menu Financeiro e seus itens de menu ............................................................ 53
Figura 44 Tela de cadastro de contas a pagar.................................................................. 54
Figura 45 Pgina inicial do site ..................................................................................... 55
Figura 46 Pgina da frota de veculos ............................................................................ 56
LISTAGENS DE CDIGO
Listagem 1 Cdigo do evento clique do boto cancelar do Formulrio de Cadastro de Cores.............61
Listagem 2 Cdigo do evento onClique do boto editar do Formulrio de Cadastro de Cores ...........61
Listagem 3 Cdigo do evento clique do boto excluir do Formulrio de Cadastro de Cores..............62
Listagem 4 Cdigo do evento clique do boto Novo Registro do Formulrio de Cadastro de Cores ...62
Listagem 5 Cdigo do evento clique do boto Salvar do Formulrio de Cadastro de Cores ..............63
Listagem 6 Cdig Cdigo do evento clique do boto Buscar do Formulrio de Cadastro de Cores ....63
Listagem 7 Cdigo do evento OnKeyDown do Campo dbeNOME_COR do Formulrio de Cadastro
de Cores ...................................................................................................................................63
Listagem 8 Cdigo do evento onCreate do Formulrio de Cadastro de Cores .................................64
Listagem 9 Cdigo do evento onDblClique do componente grdConsulta do Formulrio de Cadastro
de Cores ...................................................................................................................................64
Listagem 10 Cdigo do Evento OnDrawColumnCell do compoente grdConsulta do Formulrio de
Cadastro de Cores .....................................................................................................................64
Listagem 11 Cdigo da procedure do banco de dados..................................................................65
Listagem 12 Cdigo da procedure do evento click no grid ou boto editar da tela de Locao ..........66
Listagem 13 Cdigo da procedure do evento click no boto incluir da tela de Locao ....................66
Listagem 14 Cdigo do evento click no boto cancelar da tela de Locao ....................................66
Listagem 15 Cdigo do evento click no boto editar da tela de Locao ........................................66
Listagem 16 Cdigo do evento click no boto excluir da tela de Locao ......................................67
Listagem 17 Cdigo do evento onClick no boto novo da tela de Locao .....................................68
Listagem 18 Cdigo do evento onCllick no boto salvar da tela de Locao ..................................69
Listagem 19 Cdigo do evento onClick no boto buscar da tela de Locao ...................................70
Listagem 20 Cdigo do evento onClick no boto forma de pagamento da tela de Locao ...............70
Listagem 21 - Cdigo do evento onChange do campo cbTipoOperacao ...........................................71
Listagem 22 - Cdigo da funo ExcluirCheckIn da tela de Locao ...............................................71
Listagem 23 Evento onCreate da tela de Locao .......................................................................72
Listagem 24 Funo GravaDadosCheckIn da tela de Locao ......................................................75
Listagem 25 Funo GravaDadosContrato da tela de Locao ......................................................76
Listagem 26 Evento onDblClick do grid da tela de Locao .........................................................76
Listagem 27 Evento onDrawColumnCell do grid da tela de Locao.............................................76
Listagem 28 Evento onChange do campo Id_Veiculo da tela de Locao ......................................77
Listagem 28 Funo para a chamada do cadastro de veculos do cadastro de Locao .....................79
Listagem 29 Funo para validao de campos obrigatrios da tela de Locao .............................79
Listagem 30 Cdigo do arquivo de controller da pgina de Reserva de Veculos.............................81
Listagem 31 Cdigo do arquivo de controller da pgina de Contato. .............................................81
Listagem 32 Cdigo do arquivo de controller da pgina de detalhes do veculo. .............................82
Listagem 33 Cdigo do arquivo de controller para validar a existncia do CPF do usurio no banco
de dados. ..................................................................................................................................83
Listagem 34 Parte do cdigo do Plugin de Mascaras Javascript. ...................................................83
Listagem 35 Parte do cdigo javascript responsvel por mostrar o Mapa e Traar a Rota. ................84
Listagem 36 Parte do cdigo php da Classe DB .......................................................................86
Listagem 37 Parte do cdigo PHP da classe SQL ........................................................................87
Listagem 38 Parte do cdigo HTML da pgina Nossa Frota. ........................................................87
Listagem 39 Parte do cdigo Javascript da pgina reserva.php .....................................................88
LISTA DE SIGLAS
API
CEP
CNPJ
CPF
CSS
DENATRAN
DETRAN
FIPE
GPL
HTML
IDE
IMAP
IPVA
PHP
POP3
RG
SERASA
SIG
SMTP
SQL
UF
UML
SUMRIO
1 INTRODUO ....................................................................................................... 10
1.1 CONSIDERAES INICIAIS ...................................................................................... 10
1.2 OBJETIVOS .................................................................................................................. 11
1.2.1 Objetivo Geral............................................................................................................. 11
1.2.2 Objetivos Especficos .................................................................................................. 11
1.3 JUSTIFICATIVA .......................................................................................................... 11
1.4 ESTRUTURA DO TRABALHO ................................................................................... 12
2 SISTEMAS DE INFORMAES GERENCIAIS .................................................... 13
2.1 CONTEXTO.................................................................................................................. 13
2.2 CONCEITOS................................................................................................................. 13
2.3 FINALIDADES DOS SISTEMAS DE INFORMAES GERENCIAIS ...................... 15
2.4 IMPORTNCIA DOS SISTEMAS DE INFORMAES GERENCIAIS ..................... 16
3 MATERIAIS E MTODO........................................................................................ 17
3.1 MATERIAIS.................................................................................................................. 18
3.1.1 Astah Community ....................................................................................................... 19
3.1.2 Microsoft SQL Server Management ............................................................................ 20
3.1.3 Delphi ......................................................................................................................... 22
3.1.4 NetBeans..................................................................................................................... 23
3.1.5 Notepad++ .................................................................................................................. 23
3.1.6 Linguagem PHP .......................................................................................................... 24
3.1.7 HTML......................................................................................................................... 24
3.1.8 Cascading Style Sheet ................................................................................................. 25
3.1.9 JavaScript.................................................................................................................... 25
3.1.10 Adobe Photoshop ...................................................................................................... 25
3.1.11 XAMPP .................................................................................................................... 26
3.2 MTODO ...................................................................................................................... 27
4 RESULTADO ......................................................................................................... 29
4.1 APRESENTAO DO SISTEMA ................................................................................ 29
4.2 MODELAGEM DO SISTEMA...................................................................................... 29
4.3 DESCRIO DO SISTEMA......................................................................................... 34
4.3.1 Aplicao Desktop - Mdulo Localizao ................................................................... 34
4.3.2 Aplicao Desktop - Mdulo Veculos ........................................................................ 40
4.3.3 Aplicao Desktop - Mdulo Movimentao............................................................... 49
4.3.4 Aplicao Desktop - Mdulo Financeiro ..................................................................... 53
4.3.5 Aplicao Web............................................................................................................ 55
4.4 IMPLEMENTAO DO SISTEMA ............................................................................. 60
4.4.1 Aplicao Desktop ...................................................................................................... 60
4.4.2 Aplicao Web............................................................................................................ 79
5 CONCLUSO ........................................................................................................ 89
REFERNCIAS......................................................................................................... 90
10
1 INTRODUO
Este captulo apresenta o contexto no qual se insere a proposta do trabalho, os seus
objetivos e a justificativa. Por fim est a organizao do texto por meio da apresentao dos
seus captulos.
11
1.2 OBJETIVOS
Implementar uma pgina web para que os clientes possam visualizar os veculos a
serem locados e fazer locaes.
1.3 JUSTIFICATIVA
12
Este texto est organizado em captulos, dos quais este o primeiro e apresenta as
consideraes iniciais, o objetivo e a justificativa. O Captulo 2 apresenta o referencial terico
centrado em sistemas de informao com foco gerencial. O Capitulo 3 apresenta os materiais
utilizados na modelagem e no desenvolvimento do sistema e o mtodo. Os materiais se
referem s tecnologias e ferramentas utilizadas. O mtodo apresenta as principais atividades
realizadas para desenvolver o trabalho. No Captulo 4 est o resultado obtido da realizao
deste trabalho que a modelagem e a implementao do sistema. A modelagem apresentada
por meio de diagramas e explicaes textuais e a implementao por telas e partes de cdigo
do sistema. Por fim, est o Captulo 5 com a concluso.
13
2.1 CONTEXTO
2.2 CONCEITOS
14
15
16
17
podem propiciar que o usurio elabore os seus prprios relatrios. Esses sistemas podem
contar com gerenciadores de relatrios, ainda que eles possam requerer algum conhecimento
do usurio em termos de consultas SQL (Structured Query Language) ou de tabelas em banco
de dados para serem utilizados.
c) Melhoria nos servios realizados e oferecidos por ter base em dados reais e
considerados confiveis;
d) Melhoria na tomada de decises, por meio do fornecimento de informaes mais
rpidas e precisas;
e) Melhoria na estrutura organizacional, por facilitar o fluxo de informaes. Tendo os
seus processos mapeados no sistema de informao, o fluxo de informaes se torna
conhecido por todos os usurios do sistema;
f) Melhoria na adaptao da empresa para enfrentar acontecimentos no previstos. Isso
pode ser obtido por meio de dados utilizados pelo sistema de informao da empresa e que
so provenientes do meio externo ou mesmo por constantes de mudanas identificadas nos
fatores ambientais;
g) Melhor interao com os elos da cadeia de suprimentos. Um sistema de informao
pode fornecer integrao direta com fornecedores, como, por exemplo, a emisso de pedidos
quando itens de estoque alcanam determinados nveis;
Essas premissas permitem que as empresas definam possveis fortalecimentos do
processo de gesto, garantindo o diferencial de atuao e por consequncia, vantagem
competitiva.
Um sistema de informaes gerenciais resulta em vantagem competitiva para a
empresa, pois o mesmo deve ser desenvolvido de forma a dar apoio s metas da organizao
(STAIR, 1998). Por exemplo, os executivos de nvel estratgico usam relatrios dos SIGs no
desenvolvimento de estratgias para o sucesso dos negcios; os gestores de nvel gerencial
usam os relatrios para comparar as metas estabelecidas para a empresa com os resultados
reais obtidos; e os gerentes de nvel ttico (executivo) utilizam relatrios para acompanhar se
as equipes esto realizando suas atividades de forma a atender os objetivos propostos. Dessa
forma, a empresa justifica o cumprimento de suas metas com a ajuda dos sistemas de
informaes gerenciais (BAZZOTTI; GARCIA, 2012).
3 MATERIAIS E MTODO
18
3.1 MATERIAIS
As ferramentas e as tecnologias utilizadas para as atividades de modelagem,
implementao e execuo do sistema so:
a) Astah Community - como ferramenta para elaborao dos diagramas de casos de
uso do sistema.
b) Microsoft SQL Server Management 2012 - como ferramenta para gerenciamento do
banco de dados e definio do diagrama de entidades e relacionamentos para o banco de
dados.
c) Delphi Rad XE2 - como IDE (Integrated Development Environment) de
desenvolvimento do sistema, parte desktop, com Borland Delphi verso 7 como linguagem de
programao.
d) Ferramenta NetBeans - a IDE para implementao da pgina web.
e) Ferramenta Notepad++ - a IDE para implementao da pgina web. Esse editor foi
utilizado para ajustes mais simples nas pginas web sendo implementadas. Isso porque, nesse
editor a pgina web aberta como um arquivo de texto e o no h carregamento de
componentes e outros elementos como ocorre com o NetBens. Assim, os arquivos so abertos
de forma mais rpida que no NetBeans.
f) Linguagem PHP verso 5.3.1 - para a programao back-end da pgina web, para
programao do servidor do site.
g) CSS2 - para definir os estilos e alguns efeitos visuais das pginas web.
h) Linguagem de marcao HTML (Hypertext Markup Language) verso 4 - para a
composio da pgina web.
i) JavaScript e bibliotecas JavaScript - para a programao de alguns efeitos visuais da
pgina web e comunicao entre cliente e servidor via Ajax. As bibliotecas JavaScript
utilizadas foram: jQuery JavaScript Library v. 1.6.1, jQuery Nivo Slider v2.3, jQuery
validation plug-in pre-1.5.2, jQuery Easing v1.3, Masked Input plugin for jQuery v. 1.2.2,
Javascript Mouse-Wheel v. 3.0.4, FancyBox - jQuery Plugin v. 1.3.4.
19
j) Adobe Photoshop CS5 Extended - para criao do leiaute da pgina web, a edio
das imagens utilizadas no site e a criao da logomarca.
k) XAMPP v1.7.3 - como servidor web Apache e intrprete de scripts para a
linguagem PHP.
3.1.1 Astah Community
organizao
projeto
propriedades
editor
A ferramenta Astah Community est dividida em trs partes principais, como pode ser
visualizado pelas regies circuladas na Figura 1:
a) Organizao do projeto (rea superior esquerda) - a rea na qual esto as
diferentes vises do projeto.
b) Viso das propriedades (rea inferior esquerda) - a rea na qual podem ser
alteradas as propriedades dos elementos dos diagramas.
c) Editor do diagrama (rea direita) - a rea na qual so exibidos e compostos os
diagramas.
20
21
A Figura 4 apresenta o script que a ferramenta gera da tabela composta. Esse script
utilizado pela linguagem de programao, no caso deste trabalho a linguagem Delphi.
22
3.1.3 Delphi
Gerenciamento
do projeto
rea de edio
Propriedades
dos elementos
Paleta de
ferramentas
23
3.1.4 NetBeans
rea de edio
Projetos
3.1.5 Notepad++
24
baseada na licena GPL (General Public License). A Figura 7 apresenta a tela principal do
Notepad++.
Como pode ser observado pela Figura 7 essa ferramenta de edio bastante simples.
Com menus, barras de ferramentas e uma rea de edio.
3.1.6 Linguagem PHP
PHP uma linguagem de programao para web (PHP, 2012) que processada no
servidor, retornando para o cliente somente HTML. A linguagem PHP tem suporte para
diversos bancos de dados existentes. Isso facilita a integrao com aplicaes que necessitem
de banco de dados. Essa linguagem tambm suporta protocolos como SMTP (Simple Mail
Transfer Protocol), POP3 (Post Office Protocol) e IMAP (Internet Message Application
Protocol).
3.1.7 HTML
HTML uma linguagem de marcao para a criao de pginas web. Essa linguagem
prov um meio para descrever a estrutura de informao baseada em texto em um documento.
25
Essa estrutura define a forma como o texto apresentado. Isso feito pela definio de tipos
de formatao de texto para cabealho, pargrafos, listas e outros; e pela incluso de imagens
e outros objetos. Mikkonen e Taivalsaari (2008) consideram HTML como um dos
componentes fundamentais das pginas web.
3.1.8 Cascading Style Sheet
Cascading Style Sheet (CSS) uma linguagem de estilo que usada para descrever
aspectos de apresentao de um documento escrito em uma linguagem de marcao, como a
HTML. Um estilo permite estabelecer regras de formatao de uma pgina web, como, por
exemplo, cores e fontes, que so definidos independentemente do contedo da pgina web e
podem ser aplicados em pginas distintas. A alterao de formatao das diversas pginas de
uma mesma aplicao ou site facilitada porque necessrio alterar apenas o arquivo CSS
(que pode ser mais de um) responsvel pela formatao. Para Mikkonen e Taivalsaari (2008)
CSS tambm um dos componentes fundamentais das pginas web.
3.1.9 JavaScript
26
3.1.11 XAMPP
27
3.2 MTODO
Os procedimentos para definir o sistema esto baseados nas fases propostas por
Pressman (2002) para o modelo sequencial linear que so anlise, projeto, codificao e
testes. A seguir as fases definidas para este trabalho:
a) Planejamento
Inicialmente foram analisados os requisitos definidos para o sistema como trabalho
de estgio do aluno Marlon Eduardo Bertan. Em seguida os requisitos foram complementados
e foi estabelecido o que cada um dos alunos implementaria. Estabeleceu-se que o
desenvolvimento seria feito como um trabalho coordenado, mas cada aluno com atribuies
especficas. Ficou definido que aluno Marlon estaria centrado na aplicao desktop embora a
definio dos requisitos, a reviso da modelagem e a definio do banco de dados tenham
sido definidos em conjunto pelos dois alunos. O aluno Thiago estaria centrado na
implementao da pgina web e na definio de procedimentos que agilizariam as operaes
com o banco de dados.
b) Reviso dos requisitos
O levantamento de requisitos foi realizado com base no conhecimento de um dos
autores deste trabalho, o aluno Marlon, que j trabalhou em uma locadora de veculos. Com
base no conhecimento dos processos, procedimentos e necessidades percebidos e
identificados na empresa foram definidos os requisitos.
A reviso dos requisitos foi realizada em reunies com a orientadora em que alguns
aspectos de negcio foram definidos, especialmente os relacionados ao check-in e check-out
de veculos.
c) Anlise e projeto do sistema
A anlise e o projeto foram realizados por meio da definio dos casos de uso
utilizando a ferramenta Astah Community e a modelagem do banco de dados foi realizada
com a ferramenta SQL Server Management Studio.
Como trabalho de estgio do aluno Marlon apenas os requisitos relacionados ao
veculo e localizao (endereo) foram modelados. Assim, a modelagem do sistema foi
complementada e requisitos foram reavaliados.
Em relao aos requisitos da pgina web foi definido que a pgina exibiria imagens
dos veculos disponveis para locao e permitiria aos clientes realizar reserva de veculos.
d) Implementao (codificao) do sistema
28
29
4 RESULTADO
Este captulo apresenta o que foi obtido como resultado do trabalho: o sistema
desenvolvido.
30
31
De acordo com o representado na Figura 10, a tabela veculos est relacionada com
espcies, tipos, cores, ano do modelo e opcionais do veculo. A tabela ano de modelos de
veculos est relacionada com a tabela que contm os modelos de veculos e esta, por sua vez,
com a tabela de marcas.
Na Figura 11 esto as tabelas relacionadas ao endereo utilizado nos cadastros.
32
33
34
35
36
Na Figura 19 est a tela responsvel pelo cadastro de clientes. A aba Dados Pessoais
contm as informaes especficas do cliente tais como nome, sexo, data de nascimento, etc.
Nessa tela h um checkbox Cadastro Simplificado que faz com que alguns campos fiquem
desabilitados, criando assim, uma forma de cadastro mais rpida, porm sem tantas
informaes. J por sua vez o combobox Situao Cadastro apresenta qual a atual situao
cadastral do cliente em questo. Quando ativo o cliente est apto a qualquer movimentao de
locao no sistema, e os dados no cadastro so apresentados como habilitados.
37
Quando selecionada a opo bloqueado, nesse cadastro, significa que o cliente tem
alguma pendncia para com a empresa e no poder fazer nenhuma movimentao de
locao. Quando Inativo, o cliente j no utiliza os servios da empresa em questo h um
bom tempo, ou por alguma razo especfica o mesmo foi categorizado nessa situao. Quando
em situao inativo todos os dados do cliente ficam inativos, exceto o campo Situao
Cadastro.
A aba Dados Endereo contm os dados do endereo do cliente, tais como CEP
(Cdigo de Endereamento Postal), logradouro, bairro, complemento e telefones. Nesse
cadastro necessrio que o cliente informe preferencialmente o seu endereo residencial, uma
vez que abrange apenas o cadastro permite apenas um endereo por cliente.
A aba Registro Geral compreende os dados do RG (Registro Geral) e CPF (Cadastro
de Pessoa Fsica) do cliente, que so indispensveis no cadastramento do mesmo. Assim
como dados mais especficos do RG, tais como rgo Emissor e UF (Unidade de Federao)
do mesmo.
38
A aba Habilitao contm alguns dos dados mais importantes e indispensveis para
o cadastro, tais como o nmero da habilitao, data de validade e o tipo de habilitao. Esses
dados indicam se o cliente est apto a locar alguma espcie de veculo ou no.
A aba Ttulo Eleitor contm um contedo os dados cvicos do cliente em questo,
tais como o nmero do ttulo de eleitor, data de emisso, zona eleitoral, seo eleitoral, etc.
A aba Certido, assim como a aba Ttulo Eleitor, contm contedo adicional,
relacionado certido em questo, seja ela de nascimento, casamento, ou outra.
A Figura 20 apresenta um exemplo de uma tela genrica criada para tabelas internas
do sistema em que os usurios Cliente e Atendente no possuem acesso, somente os usurios
Gerente e Administrador. Tabelas como Nacionalidades e rgos emissores, so algumas das
tabelas que utilizam essa pesquisa. Contendo somente o cdigo e a descrio da tabela que
est relacionada a ela no momento. Nesta tela de pesquisa apenas os campos de navegao
ficam habilitados para seleo e os demais todos ficam desabilitados.
os
restantes
39
40
41
Abaixo das pesquisas, como pode ser visualizado na Figura 24, est um grid com os
campos disponveis de cada tela. Na parte inferior esto os seguintes botes, apresentados
pela ordem sequencial da esquerda para a direita:
a) Incluir (cone que representa um sinal +) - Inclui um novo registro. Se estiver na
tela de Pesquisa, abrir a tela de Manuteno.
b) Editar (cone representado um lpis) - Abre o registro selecionado no grid para
edio. Se estiver na tela de Pesquisa, abrir a tela de Manuteno. Um duplo clique no
registro do grid tem o mesmo efeito deste boto.
c) Excluir (cone que representa um sinal - ) - Exclui o registro selecionado.
d) Salvar (cone que representa uma marca de verificao) - Quando em edio ou em
insero gravar o registro selecionado no banco de dados.
42
43
A tela de cadastro de tipos de veculos que serve para identificar qual a espcie do
veculo, ou seja, se um veculo de carga, de passageiros e etc. Compreendida pelos campos
cdigo, o cdigo do Denatran (Departamento Nacional de Trnsito) e a descrio da espcie
(campo Espcie). Essa tela apresentada na Figura 27.
44
A tela de cadastro de ano e modelo do veculo (Figura 30) contm o cdigo, a tabela
FIPE, o campo modelo com sua pesquisa prpria, o campo descrio que contm o ano e
detalhes do modelo do veculo concatenados e tambm contm um campo para o valor do
veculo.
45
A tela de tipos de veculo (Figura 31) contm o cdigo interno do sistema, o cdigo do
Denatran, o tipo do veculo (exemplo: motocicleta, caminho, etc.), a espcie do veculo que
foi cadastrada anteriormente na tela de cadastros de espcie de veculos, com sua prpria
pesquisa e o grupo tipo de carroceria que informa se o veculo blindado ou um utilitrio.
46
Essa tela de cadastro de veculos contm o campo cdigo interno do sistema, Renavan
do veculo, placa, marca, modelo, ano e modelo, espcie, tipo, cor, Unidade Federativa e
Municpio. O campo cdigo gerado automaticamente. Os campos Renavan e placa so
indicados e os demais campos listados so obtidos por meio de outros cadastros. Isso
indicado pelo cone que representa uma lupa e est posicionado ao lado do campo. Ao ser
digitado o respectivo cdigo ou o mesmo ser obtido por meio de pesquisa o campo a
descrio desse cdigo automaticamente preenchida.
No cadastro de veculos (Figura 32), o campo modelo vem como padro desabilitado e
s ser habilitado para a edio quando o campo marca estiver valorizado. Caso o campo
marca volte a ficar sem valor, o campo modelo ficar desabilitado. O mesmo ocorre com o
campo ano e modelo, em relao ao campo modelo, espcie e tipo e Unidades Federativas
com Municpio.
Esse formulrio contm tambm os campos ano de fabricao e ano do modelo, data
da aquisio do veculo, nmero do chassi e nmero do motor. Em todas as telas que tenham
relacionamentos com outras, exemplo marcas com modelos, o cone de pesquisa chamar a
47
pesquisa. Ao ser realizado um duplo clique no registro escolhido, a tela atual fechada e os
dados so atribudos ao campo de pesquisa. O cdigo do item tambm poder ser informado
pelo usurio e ao passar o campo com a tecla enter ou tab o sistema carrega
automaticamente a descrio da pesquisa. Se o usurio informar o valor zero e clicar em
enter ou tab o sistema chamar a tela de pesquisa referente ao cdigo informado.
O cadastro de grupos, apresentado na Figura 33, responsvel pelos grupos de
categorias em que cada veculo se enquadra, fazendo assim com que o proprietrio da
empresa crie os grupos que contm em sua frota. Um grupo permite identificar veculos com
conjuntos semelhantes de acessrios, por exemplo, veculos com trava e ar condicionado.
48
O cadastro de situaes (Figura 35) tem como objetivo cadastrar as situaes em que
se encontram os veculos e suas respectivas cores, como por exemplo: cor verde e tipo de
situao - disponvel.
49
50
A tela de manuteno contm o campo tipo operao com os valores entrada e sada.
Quando sada, o veculo parte da locadora para a empresa que prestar a manuteno. Quando
entrada ele acaba de retornar desta manuteno. Nesse cadastro, os dados do veculo so
acompanhados pelos dados da empresa que prestar o servio de manuteno. A situao
informar que o veculo foi enviado para uma mecnica ou chapeao, por exemplo. So
informados tambm a quilometragem de sada do veculo, a data de sada e a data prestipulada para a chegada, a data de devoluo que quando o veculo de fato voltou da
manuteno so informados. Se a data de devoluo no igual a data de chegada, ento o
campo Dias Diferena armazena diferena de dias entre a data chegada e a data devoluo,
para que assim o proprietrio possa, caso queira, reajustar os valores quando houver atrasos
no combinado. E por fim, esto o valor total e o boto Formas de Pagamento que abre a tela
de Contas a Pagar.
A tela de locao composta por duas abas que so locao e check-in, conforme
apresenta a Figura 40.
51
Na aba Locao (Figura 40) realizada a locao dos veculos gerando uma sada
atravs do campo Tipo Operao. Quando o veculo devolvido o usurio altera o campo
para entrada que indica a devoluo do veculo. Esse formulrio conta com os campos veculo
que o carro a ser locado; cliente que a pessoa ( fsica ou jurdica) que est locando; a
situao do veculo, que para a locao deve estar como disponvel; a quilometragem de sada
e a de entrada que somada para ter em mdia quantos quilmetros o cliente andou e assim
podendo gerar o preo final, caso seja assim que a locadora trabalha; data de sada do veculo;
data de chegada, que pr-estipulada na sada; e a data de devoluo que quando o veculo
realmente volta locadora. Os dias de diferena que so obtidos pela diferena entre a data de
chegada e a data de devoluo, podendo assim gerar novas dirias a serem pagas.
incrementando o valor total. Ao final desta tela est a forma de pagamento que apresenta a
tela de contas a receber.
A verificao de check-in realizada atravs da indicao de possveis danos
existentes ou gerados no veculo durante a locao. As Figuras 41 e 42 apresentam as abas
disponveis para realizar o check-in, sendo que essa tela revista aps a devoluo do veculo,
52
para assim saber se no houve danos ao veculo durante a etapa em que o mesmo foi locado.
A aba Frente e Lateral Esquerda apresenta na figura de um veculo os possveis lugares que
se pode marcar quando houver algum dano antes ou depois da locao. Essa aba abrange a
lateral esquerda e a parte dianteira do veculo (Figura 41).
53
54
Essa a tela na qual o usurio lana as contas da empresa, informa o nome da conta e
o tipo de pagamento, que compreende os valores vista e a prazo. Quando vista os campos
Dias de Intervalo e Valor Parcela ficam desabilitados. Quando a opo a prazo a
marcada o usurio deve preencher os campos Quantia Parcelas, Dias de intervalo e
Valor Parcela, para que aps salvar todas a suas parcelas elas sejam apresentadas no grid da
regio inferior da tela. Aps geradas as contas, o boto Baixar Conta serve para mudar o
status da conta para baixado, depois de a mesma ter sido paga. Assim o checkbox Conta
Baixada ficar marcado.
A tela de contas a receber possui os mesmos dados que a tela de contas a pagar e o seu
funcionamento semelhante. Assim como a tela de contas a pagar, a tela de contas a receber
utilizada para incluir contas, neste caso, contas a receber de clientes que locaram veculos, por
exemplo.
55
56
chamado "Confira Nossa Frota" que ao ser clicado mostra a mesma pgina disponvel no
menu "Nossa Frota".
Logo abaixo da regio que apresenta o veculo est uma lista de veculos disponveis
para locao. Ao clicar em algum desses veculos apresentado uma pgina com os detalhes
do mesmo e com uma opo para reservar o veculo.
Aps a lista de veculos so apresentados trs textos referentes a empresa. Sendo quer
um deles se refere ao diferencial da empresa, o segundo apresenta um texto explicativo sobre
os veculos e o ltimo sobre o motivo dos preos to acessveis da empresa.
No rodap da pgina apresentada uma mensagem de direitos reservados, alguns links
para o Facebook, Twitter e Youtube da empresa. Tambm so apresentados novamente os
mesmos menus disponveis no cabealho da pgina.
O menu Nossa Frota lista todos os veculos da locadora com sua descrio e se cada
um deles est disponvel ou no. Quando disponvel permite abrir os detalhes do veculo com
um clique, onde so apresentadas todas as imagens do veculo e um boto para efetuar a
Reserva do Veculo disponibilizado. A Figura 46 apresenta a tela que mostrada na opo
Nossa Frota.
57
O menu Reservas abre uma nova pgina para efetuar a reserva de um veculo. O
usurio informa alguns dados pessoais, como nome e CPF, seleciona algum veculo
disponvel e informa a data para a qual deseja fazer a reserva. Ao salvar a reserva, caso o
usurio no seja cliente, o cadastro efetuado automaticamente junto com a reserva do
veculo.
A pgina de cadastro para reserva do veculo apresentada na Figura 48. Nessa tela o
usurio informa o seu CPF, nome telefone e email. Se o usurio j est cadastrado no banco
58
59
60
61
inherited;
if pgcPrincipal.ActivePage = tsRegistro then
dbeNOME_COR.SetFocus
else if pgcPrincipal.ActivePage = tsConsulta then
cbTipoPesq.SetFocus;
end;
Listagem 1 Cdigo do evento clique do boto cancelar do Formulrio de Cadastro de Cores.
Na Listagem 2 est o cdigo para o evento onClique do boto Editar. Esse cdigo se
refere ao mtodo Editar, que executa o que foi herdado da unfBase e atribui o foco ao campo
dbeNOME_COR.
procedure TunfCoresVeiculos.bmEditarClick(Sender: TObject);
begin
inherited;
dbeNOME_COR.SetFocus;
end;
Listagem 2 Cdigo do evento onClique do boto editar do Formulrio de Cadastro de Cores
62
O cdigo do mtodo para criar um novo registro est apresentado na Listagem 4. Esse
mtodo herda as funcionalidades da unfBase e atribui o foco ao campo dbeNOME_COR.
procedure TunfCoresVeiculos.bmNovoClick(Sender: TObject);
begin
inherited;
dbeNOME_COR.SetFocus;
end;
Listagem 4 Cdigo do evento clique do boto Novo Registro do Formulrio de Cadastro de Cores
63
Parameters.ParamByName('@WHERE_INS_DEL').Value
:= ' ID_COR = ' +
qryPrincipalID_COR.AsString;
ExecProc;
if Parameters.ParamByName('@RETORNO').Value then
MessageBox(Application.Handle , 'Registro Alterado com Sucesso!' ,
'MT Rental' , MB_OK + MB_ICONINFORMATION )
else
MessageBox(Application.Handle , 'Erro ao Tentar Alterar!', 'MT
Rental' , MB_OK + MB_ICONINFORMATION )
end;
end;
dbeNOME_COR.SetFocus;
inherited;
end;
Listagem 5 Cdigo do evento clique do boto Salvar do Formulrio de Cadastro de Cores
64
A Listagem 8 apresenta o evento onCreate. Esse evento atribui valor sentena SQL e
clusula where que sero usados ao abrir a tela e ao clicar no boto de pesquisar para que
sejam mostrados os registros.
procedure TunfCoresVeiculos.FormCreate(Sender: TObject);
begin
sSQLSelect :=
'SELECT ID_COR,
'+
'NOME_COR
'+
'FROM CORES_VEICULOS ';
sSQLWhere :=
'WHERE ID_COR IS NULL';
inherited;
end;
Listagem 8 Cdigo do evento onCreate do Formulrio de Cadastro de Cores
65
USE [LOCADORA]
GO
/****** Object:
StoredProcedure [dbo].[LOCADORA_INS_UPD_DEL]
Script
Date: 28/07/2012 18:22:08 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[LOCADORA_INS_UPD_DEL]
@ACAO SMALLINT, -- 0-INSERE / 1-UPDATE / 3-DELETE
@TABELA VARCHAR(100),
@CAMPOS_INSERT NVARCHAR(4000) = NULL,
@VALORES_INSERT NVARCHAR(4000) = NULL,
@VALORES_UPDATE NVARCHAR(4000) = NULL,
@WHERE_INS_DEL NVARCHAR(4000) = NULL,
@ID_INSERIDO INT = 0 OUTPUT,
@RETORNO BIT = 1 OUTPUT, -- 1-SUCESSO / 0-ERRO
@MSG_ERRO NVARCHAR(4000) = '' OUTPUT
AS
SET NOCOUNT ON;
BEGIN TRY
DECLARE @sSQL NVARCHAR(4000);
BEGIN TRANSACTION
SELECT @RETORNO = 1;
IF (@ACAO = 0)
SET
@sSQL
=
'INSERT
INTO
'+@TABELA+'
('+
@CAMPOS_INSERT
+')
VALUES('+@VALORES_INSERT+');';
ELSE IF (@ACAO = 1)
SET @sSQL = 'UPDATE '+@TABELA+' SET '+ @VALORES_UPDATE +' WHERE
'+@WHERE_INS_DEL+';';
ELSE IF (@ACAO = 2)
SET @sSQL = 'DELETE FROM '+@TABELA+' WHERE '+@WHERE_INS_DEL+';';
EXECUTE(@sSQL)
IF (@ACAO = 0)
SET @ID_INSERIDO = @@IDENTITY;
ELSE
SET @ID_INSERIDO = 0;
COMMIT TRANSACTION
END TRY
BEGIN CATCH
-- Verifica se ocorreu erro na transao e no efetua ROLLBACK.
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION
-- Retorna a informao do erro.
SELECT @MSG_ERRO = ERROR_MESSAGE();
SELECT @RETORNO = 0;
END CATCH;
Listagem 11 Cdigo da procedure do banco de dados
66
O evento onClick do boto Cancelar chama o que foi herdado da unfBase e verifica se
o PageControl est posicionado na aba tsRegistro ou na tsConsulta e ento atribui o foco ao
campo ID_VEICULO ou cbTipoPesq (Listagem 14).
procedure TunfLocacao.bmCancelarClick(Sender: TObject);
begin
inherited;
if pgcPrincipal.ActivePage = tsRegistro then
dbeID_VEICULO.SetFocus
else if pgcPrincipal.ActivePage = tsConsulta then
cbTipoPesq.SetFocus;
end;
Listagem 14 Cdigo do evento click no boto cancelar da tela de Locao
O clique no boto Editar, chama o que foi herdado da unfBase, aps isso chama a
procedure AtribuiDadosEdit e verifica se o PageControlMovimentacao est posicionado na
aba tsMovimentacao para ento atribuir o foco ao campo ID_VEICULO (Listagem 15).
procedure TunfLocacao.bmEditarClick(Sender: TObject);
begin
inherited;
AtribuiDadosEdit;
if pgcMovimentacao.ActivePage <> tsMovimentacao then
pgcMovimentacao.ActivePage := tsMovimentacao;
dbeID_VEICULO.SetFocus;
end;
Listagem 15 Cdigo do evento click no boto editar da tela de Locao
67
O clique no boto Novo chama o que foi herdado da unfBase, chama a procedure
AtribuiDadosInsert, verifica se o PageControlMovimentacao est posicionado na pgina
tsMovimentacao e ento atribui o foco ao campo ID_VEICULO (Listagem 17).
68
69
else
MessageBox(Application.Handle , 'Erro ao Tentar Inserir!', 'MT
Rental' , MB_OK + MB_ICONINFORMATION );
end
else
MessageBox(Application.Handle , 'Erro ao Tentar Inserir!', 'MT
Rental' , MB_OK + MB_ICONINFORMATION );
end;
if pgcMovimentacao.ActivePage <> tsMovimentacao then
pgcMovimentacao.ActivePage := tsMovimentacao;
dbeID_VEICULO.SetFocus;
end
else if qryPrincipal.State = dsEdit then
begin
with spPrincipal do
begin
Parameters.ParamByName('@ACAO').Value
:= C_ALTERAR;
Parameters.ParamByName('@TABELA').Value
:= 'MOVIMENTACOES';
Parameters.ParamByName('@VALORES_UPDATE').Value :=
'ID_VEICULO = '+ QuotedStr(qryPrincipalID_VEICULO.AsString)
+
', ' + 'TIPO_OPERACAO =
'+
QuotedStr(IntToStr(cbTipoOperacao.ItemIndex))
+ ', ' +
'ID_CLIENTE =
'+ QuotedStr(qryPrincipalID_CLIENTE.AsString)
+ ', ' + 'ID_SITUACAO =
'+
QuotedStr(qryPrincipalID_SITUACAO.AsString)
+ ', ' +
'ID_CONTRATO =
'+ QuotedStr(qryPrincipalID_CONTRATO.AsString)
+ ', ' + 'DATA_MOVIMENTACAO = '+
QuotedStr(qryPrincipalDATA_INICIAL_CONTRATO.AsString) + ', ' +'KM_ENTRADA =
'+ QuotedStr(qryPrincipalKM_ENTRADA.AsString)
+ ', ' +
'KM_SAIDA =
'+ QuotedStr(qryPrincipalKM_SAIDA.AsString)
+ ', ' + 'VALOR =
'+ QuotedStr(qryPrincipalVALOR.AsString)
+ ', ' + 'ID_CONTA_RECEBER =
'+
QuotedStr(qryPrincipalID_CONTA_RECEBER.AsString)
+ ', ' +
'LOCACAO_MANUTENCAO = '+
QuotedStr(qryPrincipalLOCACAO_MANUTENCAO.AsString);
Parameters.ParamByName('@WHERE_INS_DEL').Value := ' ID_MOVIMENTACAO =
'+ qryPrincipalID_MOVIMENTACAO.AsString;
ExecProc;
if Parameters.ParamByName('@RETORNO').Value then
begin
if dadosGravados then
MessageBox(Application.Handle , 'Registro Inserido com Sucesso!'
, 'MT Rental' , MB_OK + MB_ICONINFORMATION )
else
MessageBox(Application.Handle , 'Erro ao Tentar Inserir!', 'MT
Rental' , MB_OK + MB_ICONINFORMATION );
end
else
MessageBox(Application.Handle , 'Erro ao Tentar Inserir!', 'MT
Rental' , MB_OK + MB_ICONINFORMATION );
end;
end;
end;
inherited;
end;
Listagem 18 Cdigo do evento onCllick no boto salvar da tela de Locao
O cdigo
aba
tsConsulta
do
70
(varivel responsvel pelo campo chave da tabela), descrioCampo (responsvel pelo nome
ou dado mais relevante para buscas futuras) e sSQLWhereBusca. Em seguida chama o que foi
herdado da unfBase.
procedure TunfLocacao.btnBuscarClick(Sender: TObject);
begin
idCampo
:= 'MOVIMENTACOES.ID_MOVIMENTACAO';
descricaoCampo := 'CLIENTES.NOME_CLIENTE';
sSQLWhereBusca := ' WHERE (1=1) ';
inherited;
end;
Listagem 19 Cdigo do evento onClick no boto buscar da tela de Locao
71
dbeKM_ENTRADA.Enabled
:= True;
dtDataDevolucao.Enabled := True;
edtDiasDiferenca.Enabled := True;
end;
end;
Listagem 21 - Cdigo do evento onChange do campo cbTipoOperacao
O evento onCreate, atribui valor aos campos sSQLSelect e sSQLWhere, para que a
qryPrincipal seja aberta (Listagem 23).
procedure TunfLocacao.FormCreate(Sender: TObject);
begin
AtribuiDadosInsert;
sSQLSelect :=
'SELECT'+ 'MOVIMENTACOES.ID_MOVIMENTACAO,
'+
'MOVIMENTACOES.TIPO_OPERACAO,
'+
'MOVIMENTACOES.ID_VEICULO,
'+
'VEICULOS.ID_MODELO_VEICULO,
'+
'MODELOS_VEICULOS.NOME_MODELO_VEICULO,
'+
'MOVIMENTACOES.ID_SITUACAO,
'+
'MOVIMENTACOES.KM_ENTRADA,
'+
'MOVIMENTACOES.KM_SAIDA,
'+
'MOVIMENTACOES.ID_CHECK_IN,
'+
72
'MOVIMENTACOES.VALOR,
'+
'MOVIMENTACOES.ID_CONTRATO,
'+
'CONTRATOS.DATA_INICIAL_CONTRATO,
'+
'CONTRATOS.DATA_FINAL_CONTRATO,
'+
'CONTRATOS.DATA_DEVOLUCAO_CONTRATO,
'+
'MOVIMENTACOES.ID_CONTA_RECEBER,
'+
'MOVIMENTACOES.ID_CLIENTE,
'+
'CLIENTES.NOME_CLIENTE,
'+
'SITUACOES.DESCRICAO_SITUACAO,
'+
'MOVIMENTACOES.LOCACAO_MANUTENCAO
'+
'FROM MOVIMENTACOES
'+
'LEFT JOIN VEICULOS ON
'+
'VEICULOS.ID_VEICULO = MOVIMENTACOES.ID_VEICULO
'+
'LEFT JOIN MODELOS_VEICULOS ON
'+
'MODELOS_VEICULOS.ID_MODELO_VEICULO = VEICULOS.ID_MODELO_VEICULO
'+
'LEFT JOIN CONTRATOS ON
'+
'CONTRATOS.ID_CONTRATO = MOVIMENTACOES.ID_CONTRATO
'+
'LEFT JOIN CONTAS_RECEBER ON
'+
'CONTAS_RECEBER.ID_CONTA_RECEBER = MOVIMENTACOES.ID_CONTA_RECEBER
'+
'LEFT JOIN CLIENTES ON
'+
'CLIENTES.ID_CLIENTE = MOVIMENTACOES.ID_CLIENTE
'+
'LEFT JOIN SITUACOES ON
'+
'SITUACOES.ID_SITUACAO = MOVIMENTACOES.ID_SITUACAO
';
sSQLWhere :=
'WHERE
'+
'MOVIMENTACOES.ID_MOVIMENTACAO IS NULL AND
'+
'MOVIMENTACOES.LOCACAO_MANUTENCAO = 0';
inherited;
end;
Listagem 23 Evento onCreate da tela de Locao
73
se estiver como dsEdit, atribui os dados de edio. Ao final verifica se o parmetro retorno
est verdadeiro e ento apresenta a mensagem de sucesso ao usurio, caso contrrio apresenta
mensagem de erro.
function TunfLocacao.GravaDadosCheckIn: Boolean;
begin
if qryPrincipal.State = dsInsert then
begin
with spPrincipal do
begin
Parameters.ParamByName('@ACAO').Value
:=
Parameters.ParamByName('@TABELA').Value
:=
Parameters.ParamByName('@CAMPOS_INSERT').Value :=
'PARABRISA_DIANTEIRO,
'+
'PARABRISA_TRASEIRO,
'+
'VIDRO_DIANTEIRO_ESQUERDO, '+
'VIDRO_DIANTEIRO_DIREITO, '+
'VIDRO_TRASEIRO_ESQUERDO, '+
'VIDRO_TRASEIRO_DIREITO,
'+
'PORTA_DIANTEIRA_ESQUERDA, '+
'PORTA_DIANTEIRA_DIREITA, '+
'PORTA_TRASEIRA_ESQUERDA, '+
'PORTA_TRASEIRA_DIREITA,
'+
'PARA_CHOQUE_DIANTEIRO,
'+
'PARA_CHOQUE_TRASEIRO,
'+
'RODA_DIANTEIRA_ESQUERDA, '+
'RODA_DIANTEIRA_DIREITA,
'+
'RODA_TRASEIRA_ESQUERDA,
'+
'RODA_TRASEIRA_DIREITA,
'+
'PNEU_DIANTEIRO_ESQUERDO, '+
'PNEU_DIANTEIRO_DIREITO,
'+
'PNEU_TRASEIRO_ESQUERDO,
'+
'PNEU_TRASEIRO_DIREITO,
'+
'RETROVISOR_ESQUEDO,
'+
'RETROVISOR_DIREITO,
'+
'FAROL_DIANTEIRO_DIREITO, '+
'FAROL_DIANTEIRO_ESQUERDO, '+
'FAROL_TRASEIRO_DIREITO,
'+
'FAROL_TRASEIRO_ESQUERDO, '+
'CAPO,
'+
'BAGAGEIRO
';
Parameters.ParamByName('@VALORES_INSERT').Value :=
QuotedStr(qryCheckInPARABRISA_DIANTEIRO.AsString)
+
QuotedStr(qryCheckInPARABRISA_TRASEIRO.AsString)
+
QuotedStr(qryCheckInVIDRO_DIANTEIRO_ESQUERDO.AsString) +
QuotedStr(qryCheckInVIDRO_DIANTEIRO_DIREITO.AsString) +
QuotedStr(qryCheckInVIDRO_TRASEIRO_ESQUERDO.AsString) +
QuotedStr(qryCheckInVIDRO_TRASEIRO_DIREITO.AsString)
+
QuotedStr(qryCheckInPORTA_DIANTEIRA_ESQUERDA.AsString) +
QuotedStr(qryCheckInPORTA_DIANTEIRA_DIREITA.AsString) +
QuotedStr(qryCheckInPORTA_TRASEIRA_ESQUERDA.AsString) +
QuotedStr(qryCheckInPORTA_TRASEIRA_DIREITA.AsString)
+
QuotedStr(qryCheckInPARA_CHOQUE_DIANTEIRO.AsString)
+
QuotedStr(qryCheckInPARA_CHOQUE_TRASEIRO.AsString)
+
QuotedStr(qryCheckInRODA_DIANTEIRA_ESQUERDA.AsString) +
QuotedStr(qryCheckInRODA_DIANTEIRA_DIREITA.AsString)
+
QuotedStr(qryCheckInRODA_TRASEIRA_ESQUERDA.AsString)
+
QuotedStr(qryCheckInRODA_TRASEIRA_DIREITA.AsString)
+
QuotedStr(qryCheckInPNEU_DIANTEIRO_ESQUERDO.AsString) +
QuotedStr(qryCheckInPNEU_DIANTEIRO_DIREITO.AsString)
+
C_INSERIR;
'CHECK_IN';
',
',
',
',
',
',
',
',
',
',
',
',
',
',
',
',
',
',
'+
'+
'+
'+
'+
'+
'+
'+
'+
'+
'+
'+
'+
'+
'+
'+
'+
'+
74
QuotedStr(qryCheckInPNEU_TRASEIRO_ESQUERDO.AsString)
+
QuotedStr(qryCheckInPNEU_TRASEIRO_DIREITO.AsString)
+
QuotedStr(qryCheckInRETROVISOR_ESQUEDO.AsString)
+
QuotedStr(qryCheckInRETROVISOR_DIREITO.AsString)
+
QuotedStr(qryCheckInFAROL_DIANTEIRO_DIREITO.AsString) +
QuotedStr(qryCheckInFAROL_DIANTEIRO_ESQUERDO.AsString) +
QuotedStr(qryCheckInFAROL_TRASEIRO_DIREITO.AsString)
+
QuotedStr(qryCheckInFAROL_TRASEIRO_ESQUERDO.AsString) +
QuotedStr(qryCheckInCAPO.AsString)
+
QuotedStr(qryCheckInBAGAGEIRO.AsString);
ExecProc;
if Parameters.ParamByName('@RETORNO').Value then
Result := True
else
Result := False;
end;
end
else if qryPrincipal.State = dsEdit then
begin
with spPrincipal do
begin
Parameters.ParamByName('@ACAO').Value
:=
Parameters.ParamByName('@TABELA').Value
:=
Parameters.ParamByName('@VALORES_UPDATE').Value :=
'PARABRISA_DIANTEIRO =
'+
QuotedStr(qryCheckInPARABRISA_DIANTEIRO.AsString)
+
'PARABRISA_TRASEIRO =
'+
QuotedStr(qryCheckInPARABRISA_TRASEIRO.AsString)
+
'VIDRO_DIANTEIRO_ESQUERDO = '+
QuotedStr(qryCheckInVIDRO_DIANTEIRO_ESQUERDO.AsString) +
'VIDRO_DIANTEIRO_DIREITO = '+
QuotedStr(qryCheckInVIDRO_DIANTEIRO_DIREITO.AsString) +
'VIDRO_TRASEIRO_ESQUERDO = '+
QuotedStr(qryCheckInVIDRO_TRASEIRO_ESQUERDO.AsString) +
'VIDRO_TRASEIRO_DIREITO =
'+
QuotedStr(qryCheckInVIDRO_TRASEIRO_DIREITO.AsString)
+
'PORTA_DIANTEIRA_ESQUERDA = '+
QuotedStr(qryCheckInPORTA_DIANTEIRA_ESQUERDA.AsString) +
'PORTA_DIANTEIRA_DIREITA = '+
QuotedStr(qryCheckInPORTA_DIANTEIRA_DIREITA.AsString) +
'PORTA_TRASEIRA_ESQUERDA = '+
QuotedStr(qryCheckInPORTA_TRASEIRA_ESQUERDA.AsString) +
'PORTA_TRASEIRA_DIREITA =
'+
QuotedStr(qryCheckInPORTA_TRASEIRA_DIREITA.AsString)
+
'PARA_CHOQUE_DIANTEIRO =
'+
QuotedStr(qryCheckInPARA_CHOQUE_DIANTEIRO.AsString)
+
'PARA_CHOQUE_TRASEIRO =
'+
QuotedStr(qryCheckInPARA_CHOQUE_TRASEIRO.AsString)
+
'RODA_DIANTEIRA_ESQUERDA = '+
QuotedStr(qryCheckInRODA_DIANTEIRA_ESQUERDA.AsString) +
'RODA_DIANTEIRA_DIREITA =
'+
QuotedStr(qryCheckInRODA_DIANTEIRA_DIREITA.AsString)
+
'RODA_TRASEIRA_ESQUERDA =
'+
QuotedStr(qryCheckInRODA_TRASEIRA_ESQUERDA.AsString)
+
'RODA_TRASEIRA_DIREITA =
'+
QuotedStr(qryCheckInRODA_TRASEIRA_DIREITA.AsString)
+
'PNEU_DIANTEIRO_ESQUERDO = '+
QuotedStr(qryCheckInPNEU_DIANTEIRO_ESQUERDO.AsString) +
'PNEU_DIANTEIRO_DIREITO =
'+
QuotedStr(qryCheckInPNEU_DIANTEIRO_DIREITO.AsString)
+
',
',
',
',
',
',
',
',
',
'+
'+
'+
'+
'+
'+
'+
'+
'+
C_ALTERAR;
'CHECK_IN';
', '+
', '+
', '+
', '+
', '+
', '+
', '+
', '+
', '+
', '+
', '+
', '+
', '+
', '+
', '+
', '+
', '+
', '+
75
'PNEU_TRASEIRO_ESQUERDO =
'+
QuotedStr(qryCheckInPNEU_TRASEIRO_ESQUERDO.AsString)
+
'PNEU_TRASEIRO_DIREITO =
'+
QuotedStr(qryCheckInPNEU_TRASEIRO_DIREITO.AsString)
+
'RETROVISOR_ESQUEDO =
'+
QuotedStr(qryCheckInRETROVISOR_ESQUEDO.AsString)
+
'RETROVISOR_DIREITO =
'+
QuotedStr(qryCheckInRETROVISOR_DIREITO.AsString)
+
'FAROL_DIANTEIRO_DIREITO = '+
QuotedStr(qryCheckInFAROL_DIANTEIRO_DIREITO.AsString) +
'FAROL_DIANTEIRO_ESQUERDO = '+
QuotedStr(qryCheckInFAROL_DIANTEIRO_ESQUERDO.AsString) +
'FAROL_TRASEIRO_DIREITO =
'+
QuotedStr(qryCheckInFAROL_TRASEIRO_DIREITO.AsString)
+
'FAROL_TRASEIRO_ESQUERDO = '+
QuotedStr(qryCheckInFAROL_TRASEIRO_ESQUERDO.AsString) +
'CAPO ='+ QuotedStr(qryCheckInCAPO.AsString) + ', '+
'BAGAGEIRO = '+ QuotedStr(qryCheckInBAGAGEIRO.AsString);
Parameters.ParamByName('@WHERE_INS_DEL').Value :=
'+ qryPrincipalID_CHECK_IN.AsString;
ExecProc;
if Parameters.ParamByName('@RETORNO').Value then
Result := True
else
Result := False;
end;
end;
end;
Listagem 24 Funo GravaDadosCheckIn da tela de Locao
', '+
', '+
', '+
', '+
', '+
', '+
', '+
', '+
' ID_CHECK_IN =
76
Result := False;
end;
end
else if qryPrincipal.State = dsEdit then
begin
with spPrincipal do
begin
Parameters.ParamByName('@ACAO').Value
:= C_ALTERAR;
Parameters.ParamByName('@TABELA').Value
:= 'CONTRATOS';
Parameters.ParamByName('@VALORES_UPDATE').Value :=
'DATA_INICIAL_CONTRATO =
'+
QuotedStr(qryPrincipalDATA_INICIAL_CONTRATO.AsString)
+ ', ' +
'
DATA_FINAL_CONTRATO =
'+
QuotedStr(qryPrincipalDATA_FINAL_CONTRATO.AsString)
+ ', ' +
'
DATA_DEVOLUCAO_CONTRATO = '+
QuotedStr(qryPrincipalDATA_DEVOLUCAO_CONTRATO.AsString);
Parameters.ParamByName('@WHERE_INS_DEL').Value := ' ID_CONTRATO =
'+ qryPrincipalID_CONTRATO.AsString;
ExecProc;
if Parameters.ParamByName('@RETORNO').Value then
Result := True
else
Result := False;
end;
end;
end;
Listagem 25 Funo GravaDadosContrato da tela de Locao
O evento DrawColumnCell do grid faz com que seja apresentada a barra de scroll
horizontal (Listagem 27).
procedure TunfLocacao.grdConsultaDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn; State:
TGridDrawState);
begin
inherited;
ShowScrollBar(grdConsulta.Handle,SB_HORZ,False);
end;
Listagem 27 Evento onDrawColumnCell do grid da tela de Locao
77
A funo que realiza a chamada do cadastro de veculos para que o usurio possa
selecionar o veiculo que desejar apresentada na Listagem 29. O usurio pode clicar no boto
de busca para que a tela seja aberta ou informar o cdigo do veculo, para que os campos de
cdigo e descrio sejam valorizados automaticamente. Caso seja informado zero ou algum
nmero que no exista no cadastro a ao ser a mesma como se tivesse clicado no boto de
busca. O mesmo ocorre para o evento onChange dos campos ID_CLIENTE e
ID_SITUACAO.
procedure TunfLocacao.sbVeiculoClick(Sender: TObject);
begin
inherited;
if not Assigned(CadVeiculo) then
CadVeiculo := TunfVeiculo.Create(Self);
if Sender <> nil then
begin
CadVeiculo.ShowModal;
if CadVeiculo.ModalResult = mrOk then
begin
78
try
qryPrincipalID_VEICULO.OnChange
:= nil;
if not (qryPrincipal.State in [dsInsert, dsEdit]) then
qryPrincipal.Edit;
qryPrincipalID_VEICULO.AsInteger
:=
CadVeiculo.Parametros.Codigo;
qryPrincipalNOME_MODELO_VEICULO.AsString :=
CadVeiculo.Parametros.Descricao;
dbeID_CLIENTE.SetFocus;
finally
qryPrincipalID_VEICULO.OnChange
:=
qryPrincipalID_VEICULOChange;
end;
end
else
begin
try
qryPrincipalID_VEICULO.OnChange
:= nil;
if not (qryPrincipal.State in [dsInsert, dsEdit]) then
qryPrincipal.Edit;
qryPrincipalID_VEICULO.Clear;
qryPrincipalNOME_MODELO_VEICULO.Clear;
dbeID_VEICULO.SetFocus;
finally
qryPrincipalID_VEICULO.OnChange
:= qryPrincipalID_VEICULOChange;
end;
end;
end
else
begin
CadVeiculo.btnBuscarClick(nil);
if
CadVeiculo.qryPrincipal.Locate('ID_VEICULO',qryPrincipalID_VEICULO.AsIntege
r,[]) then
begin
try
qryPrincipalID_VEICULO.OnChange
:= nil;
qryPrincipalID_VEICULO.AsInteger
:=
CadVeiculo.qryPrincipalID_MARCA_VEICULO.AsInteger;
qryPrincipalNOME_MODELO_VEICULO.AsString :=
CadVeiculo.qryPrincipalNOME_MARCA_VEICULO.AsString;
dbeID_CLIENTE.SetFocus;
finally
qryPrincipalID_VEICULO.OnChange
:=
qryPrincipalID_VEICULOChange;
end;
end
else
begin
try
qryPrincipalID_VEICULO.OnChange
:= nil;
if not (qryPrincipal.State in [dsInsert, dsEdit]) then
begin
qryPrincipal.Edit;
qryPrincipalID_VEICULO.Clear;
qryPrincipalNOME_MODELO_VEICULO.Clear;
end
else
sbVeiculo.Click;
dbeID_CLIENTE.SetFocus;
finally
79
qryPrincipalID_VEICULO.OnChange
:= qryPrincipalID_VEICULOChange;
end;
end;
end;
if Assigned(CadVeiculo) then
FreeAndNil(CadVeiculo);
end;
Listagem 28 Funo para a chamada do cadastro de veculos do cadastro de Locao
A funo que recebe por parmetro uma string com o nome do campo que vem do
banco de dados, em que Tabsheet do Pagecontrol o referido campo se encontra e a qual
campo da tela ele pertence. Porm, esse campo deve ser herana da TWinControl, apresentada
na Listagem 29. Essa funo verifica se o campo informado igual a vazio. Caso seja,
exibida uma mensagem e atribudo foco ao campo.
procedure TunfLocacao.ValidaCampo(vNomeCampo: String; vTabSheet: TTabSheet;
vTField: TWinControl);
begin
if qryPrincipal.FieldByName(vNomeCampo).AsString = '' then
begin
ShowMessage('O campo "' +
qryPrincipal.FieldByName(vNomeCampo).DisplayLabel + '" precisa ser
preenchido!');
if pgcClientes.ActivePage <> vTabSheet then
pgcClientes.ActivePage := vTabSheet;
vTField.SetFocus;
Abort;
end;
end;
Listagem 29 Funo para validao de campos obrigatrios da tela de Locao
80
81
82
83
$conn->connect();
$resCliente = $conn->exec(selectCliente($cpf));
die($cpf);
if (mssql_num_rows($resCliente) > 0){
$id_cliente
$nome
$telefone
$email
=
=
=
=
mssql_result($resCliente,
mssql_result($resCliente,
mssql_result($resCliente,
mssql_result($resCliente,
0,
0,
0,
0,
'ID_CLIENTE');
'NOME_CLIENTE');
'TELEFONE_CLIENTE');
'EMAIL_CLIENTE');
echo "$id_cliente&&$nome&&$telefone&&$email";
}else{
echo "0";
}
}
?>
Listagem 33 Cdigo do arquivo de controller para validar a existncia do CPF do usurio no banco de
dados.
Na Listagem 34 est a parte inicial do plugin para a biblioteca JavasSript JQuery que
responsvel por aplicar mscaras nos campos como CPF, telefone e email. Percebe-se que no
incio do cdigo existe um comentrio sobre o desenvolvedor do plugin, verso e tipo de
licena.
/*
Masked Input plugin for jQuery
Copyright (c) 2007-2009 Josh Bush (digitalbush.com)
Licensed under the MIT license
(http://digitalbush.com/projects/masked-input-plugin/#license)
Version: 1.2.2 (03/09/2009 22:39:06)
*/
(function($) {
var pasteEventName = ($.browser.msie ? 'paste' : 'input') + ".mask";
var iPhone = (window.orientation != undefined);
$.mask = {
//Predefined character definitions
definitions: {
'9': "[0-9]",
'a': "[A-Za-z]",
'*': "[A-Za-z0-9]"
}
};
Listagem 34 Parte do cdigo do Plugin de Mascaras Javascript.
84
aberta a pgina) executar a funo que carrega o mapa e sempre no clique do boto Traar
Rota chamada um funo para traar a rota entre Origem e Destino.
var endereco;
var map, destino;
var localAtual = 1;
$(document).ready(function () {
carregaMapa('utfpr pato branco');
// Mostra dados
$('#tracarRota').click(function(){
mostra_evento();
});
});
function carregaMapa(cidade){
endereco = cidade;
var geocoder = new google.maps.Geocoder();
var geo_options = {
address: endereco
};
geocoder.geocode(geo_options, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
destino = results[0].geometry.location;
var myOptions = {
zoom: 16,
center: results[0].geometry.location,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new
google.maps.Map(document.getElementById('mapa_evento'), myOptions);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
title: 'Endereo da Locadora'
});
} else {
alert("Dados passados invlidos: " + status);
}
});
}
Listagem 35 Parte do cdigo javascript responsvel por mostrar o Mapa e Traar a Rota.
85
responsvel por fazer a conexo com o banco de dados utilizando os parmetros que foram
atribudos valores na construo do mtodo. J as funes exec e execLastID so
responsveis por executar querys no banco de dados. A diferena entre elas que a ltima
executa um insert retornando o ltimo ID inserido.
class db {
//parmetros de conexo
var $db;
var $host;
var $usuario;
var $senha;
var $conn;
var $result;
var $numReg;
function db() {
$varDb = "LOCADORA";
$varHost = ".\SQLEXPRESS";
$varUsuario = "sa";
$varSenha = "t20c3r18";
$this->db = $varDb;
$this->host = $varHost;
$this->usuario = $varUsuario;
$this->senha = $varSenha;
}
public function connect(){
$this->conn = mssql_connect($this->host, $this->usuario, $this>senha) or die("Erro ao conectar a base"."<br>".mssql_get_last_message());
if ($this->conn) {
mssql_select_db($this->db, $this->conn);
}
}
public static function exec($sql) {
$res = mssql_query($sql) or die('Erro: '.$sql.' -'.mssql_get_last_message());
if (!$res) {
return false;
} else {
if (substr($sql, 0, 6) == "INSERT") {
return '1';
} else {
return $res;
}
}
}
public function execLastID($sql) {
$res = mssql_query($sql) or die('Erro: ' . $sql . ' -- ' .
mssql_get_last_message());
$res = mssql_query("SELECT @@IDENTITY") or die('Erro: ' . $sql . '
-- ' . mssql_get_last_message());
if (!$res) {
return false;
86
} else {
return mssql_result($res, 0, 0);
}
}
Listagem 36 Parte do cdigo php da Classe DB
Tambm localizada na parte model da estrutura da pgina web est o trecho de cdigo
apresentado na Listagem 37 que pertence ao arquivo sql.class.php. Esse arquivo
responsvel por armazenar todas as instrues SQLs que so executados na pgina. So
armazenados separados por funo que recebem os parmetros para montar as sentenas SQL.
Essas funes retornam as SQLs prontas para serem executados.
function selectCliente($cpf = null){
$sql = "SELECT TOP 1 ID_CLIENTE, NOME_CLIENTE, TELEFONE_CLIENTE,
EMAIL_CLIENTE FROM CLIENTES ";
if(($cpf != null)&&($cpf != '')){
$sql .= " WHERE CPF_CLIENTE = '$cpf'";
}else{
$sql .= " WHERE ID_CLIENTE IS NULL";
}
return $sql;
}
function cadastraReserva($id_veiculo, $id_cliente){
$sql = " INSERT INTO MOVIMENTACOES (ID_VEICULO, ID_CLIENTE,
ID_SITUACAO, DATA_MOVIMENTACAO, VALOR, TIPO_OPERACAO,
LOCACAO_MANUTENCAO)";
$sql .= "VALUES ($id_veiculo, $id_cliente, 2, current_timestamp, 0, 1,
0)";
return $sql;
}
function selectVeiculo($id_veiculo = null){
$sql = "SELECT TOP 1 ";
$sql .= "VEICULOS.ANO_MODELO, ";
$sql .= "ANO_MODELO_VEICULO.DESCRICAO_ANO_MODELO_VEICULO, ";
$sql .= "MODELOS_VEICULOS.NOME_MODELO_VEICULO, ";
$sql .= "MARCAS_VEICULOS.NOME_MARCA_VEICULO, ";
$sql .= "IMAGENS_VEICULOS.* ";
$sql .= "FROM IMAGENS_VEICULOS ";
$sql .= "INNER JOIN VEICULOS ON (VEICULOS.ID_VEICULO =
IMAGENS_VEICULOS.ID_VEICULO) ";
$sql .= "INNER JOIN ANO_MODELO_VEICULO ON
(ANO_MODELO_VEICULO.ID_ANO_MODELO_VEICULO = VEICULOS.ID_ANO_MODELO_VEICULO)
";
$sql .= "INNER JOIN MODELOS_VEICULOS ON
(MODELOS_VEICULOS.ID_MODELO_VEICULO = ANO_MODELO_VEICULO.ID_MODELO_VEICULO)
";
87
88
89
5 CONCLUSO
O objetivo desse trabalho foi fazer uma modelagem inicial de um sistema para
locadora de veculos e implementar alguns cadastros. A implementao teve a finalidade de
familiarizar o autor deste trabalho com as ferramentas utilizadas. Assim, os cadastros de dois
mdulos (veculos e localizao) foram implementados. Foram considerados mdulos porque
os formulrios implementados estavam relacionados ao cadastro de veculos e de localizao.
O sistema considerado de informaes gerenciais porque visa fornecer suporte
operacional e gerencial para as atividades realizadas em uma locadora de veculos. Esse
sistema poder ser utilizado como um apoio s atividades do gestor. A implementao da
pgina web vinculada ao sistema possibilita que os clientes possam realizar reserva por meio
da Internet.
Em termos da linguagem utilizada para implementao, a Delphi, os autores deste
trabalho consideram que trabalhar com o Embarcadero Rad XE2 foi importante, pois em
alguns aspectos facilitou a implementao. Em termos gerais a verso XE2 pode ser
comparada verso Delphi 7 da Borland, com uma interface mais bem apresentada. E, alm
disso, h propriedades novas nos componentes, como a propriedade Glyph dos
componentes TBitBtn e TSpeedButton que agora reconhece uma imagem com duas
figuras diferentes. No caso dos cadastros implementados uma imagem colorida e outra no.
E isso fica automaticamente ligado propriedade Enabled do mesmo componente, que faz
com que ela mude qual imagem apresenta, conforme o componente est Enabled True ou
Enabled False.
Outro recurso importante da verso XE2 relacionada pesquisa pelo nome dos
componentes que foi adicionada na paleta de Ferramentas. Isso facilita muito, uma vez que h
muitos componentes.
Nas telas, os botes e os componentes ficaram com uma interface nova, eles so mais
arredondados, poder-se-ia dizer que esto no estilo Windows 7, fornecendo uma aparncia
nova aos sistemas.
Porm, o Rad XE2 trouxe muito mais do que esses detalhes descritos. O FireMonkey
Framework, por exemplo, com seus objetos em trs dimenses e diversas opes de leiaute de
tela e componentes. Esses componentes no foram utilizados na implementao do sistema
resultado deste trabalho.
90
REFERNCIAS
ADOBE.
Adobe
Photoshop.
Disponvel
<http://www.adobe.com/br/products/photoshop.html>. Acesso em: 20 ago. 2012.
em:
91