Sei sulla pagina 1di 92

UNIVERSIDADE TECNOLGICA FEDERAL DO PARAN

CURSO SUPERIOR DE TECNOLOGIA EM ANLISE E DESENVOLVIMENTO DE


SISTEMAS

MARLON EDUARDO BERTAN


THIAGO CAGNIN RODRIGUES

SISTEMA DESKTOP EM DELPHI PARA GERENCIAMENTO DE


LOCADORA DE VECULOS VINCULADO A UMA PGINA WEB EM
PHP

TRABALHO DE CONCLUSO DE CURSO

PATO BRANCO
2012

MARLON EDUARDO BERTAN


THIAGO CAGNIN RODRIGUES

SISTEMA DESKTOP EM DELPHI PARA GERENCIAMENTO DE


LOCADORA DE VECULOS VINCULADO A UMA PGINA WEB EM
PHP

Trabalho de Concluso de Curso de


graduao, apresentado disciplina de
Trabalho de Diplomao, do Curso Superior
de Tecnologia em Anlise e Desenvolvimento
de Sistemas, da Universidade Tecnolgica
Federal do Paran, Cmpus Pato Branco, como
requisito parcial para obteno do ttulo de
Tecnlogo.
Orientadora: Profa. Beatriz Terezinha Borsoi

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

Figura 47 Detalhes do veculo selecionado..................................................................... 57


Figura 48 Pgina para reserva de veculo ....................................................................... 58
Figura 49 Pgina de localizao da empresa e indicao da rota ....................................... 59
Figura 50 Pgina com formulrio de contato .................................................................. 60
Figura 51 Organizao do projeto PHP na IDE NetBeans ................................................ 80

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

Application Programming Interface


Cdigo de Endereamento Postal
Cadastro Nacional de Pessoas Jurdicas
Cadastro de Pessoas Fsicas
Cascading Style Sheet
Departamento Nacional de Trnsito
Departamento de Trnsito
Fundao Instituto de Pesquisas Econmicas
General Public License
Hypertext Markup Language
Integrated Development Environment
Internet Message Application Protocol
Imposto sobre a Propriedade de Veculos Automotores
PHP HypertextPreprocessor
Post Office Protocol
Registro Geral
Servios de Assessoria Sociedade Annima
Sistemas de Informaes Gerenciais
Simple Mail Transfer Protocol
Structured Query Language
Unidade de Federao
Unified Modeling Language

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.

1.1 CONSIDERAES INICIAIS

Atualmente o volume de informaes manipulado pelas organizaes bastante


grande. Mesmo empresas de pequeno porte precisam tomar decises operacionais, gerenciais
e estratgicas baseadas em dados da prpria empresa. H que se ressaltar que essas decises
geralmente no so baseadas apenas nos dados da empresa. O mercado e outros fatores
tambm so considerados em um processo de tomada de deciso e mesmo de gerenciamento.
Assim, as informaes geradas pelos dados armazenados por sistemas computacionais
que possam fornecer suporte ao processo de deciso das empresas so vistas como ferramenta
de apoio. Sistemas computacionais no apoio tomada de decises, no so mais vistos como
um diferencial competitivo quase que uma questo de sobrevivncia para as organizaes.
Para Bazzotti e Garcia (2012), a era da informao exige das organizaes uma estratgia de
gesto eficiente que pode ser facilitada pelo uso de recursos oferecidos pela tecnologia de
informao e pelos sistemas de informao.
A tecnologia de informao oferece recursos tecnolgicos e computacionais para a
gerao de informaes e os sistemas de informao esto cada vez mais sofisticados,
propondo mudanas nos processos, estrutura e estratgia de negcios (BAZZOTTI; GARCIA,
2012).
Para auxiliar os gestores nas suas atividades existem os SIGs (Sistemas de
Informaes Gerenciais). Oliveira (2002) define esse tipo de sistema como processos
utilizados para transformar dados em informaes que auxiliem no processo decisrio da
empresa. Um sistema de informao consiste nos componentes que fornecem suporte
tomada de deciso e ao controle dos processos organizacionais. Esses componentes so
baseados em dados da organizao (OLIVEIRA, 2002).
Considerando o contexto de importncia de sistemas de informao para as
organizaes, mesmo as de pequeno porte, neste trabalho apresentado o desenvolvimento de

11

um sistema de informao para uma empresa de locao de veculos. A parte gerencial do


sistema, ou seja, cadastros, controle de locao (check-in e check-out) e de movimentaes foi
implementada utilizando a linguagem Delphi. E uma pgina web implementada em PHP
(PHP HipertextProcessor) foi desenvolvida como forma de o cliente visualizar os veculos da
empresa e fazer locaes.

1.2 OBJETIVOS

O objetivo geral se refere ao resultado principal obtido com a realizao do trabalho.


E os objetivos especficos o complementam.
1.2.1 Objetivo Geral

Implementar um sistema para gerenciamento de uma locadora de veculos.


1.2.2 Objetivos Especficos

Oferecer uma forma de controle de check-in e check-out bem como de


movimentaes de empresas de locao de veculos. As movimentaes se referem
s sadas e retorno dos veculos, seja para locao a clientes ou para manuteno e
ao controle financeiro da empresa.

Implementar uma pgina web para que os clientes possam visualizar os veculos a
serem locados e fazer locaes.

1.3 JUSTIFICATIVA

A proposta de um sistema de informao para empresa de locao de veculos uma


oportunidade de disponibilizar uma ferramenta de apoio aos processos operacionais e
gerenciais da empresa.

12

Desta forma, o trabalho dos funcionrios minimizado, h maior agilidade na


realizao de atividades e maior segurana e controle dos dados. Isso se deve ao fato de as
informaes serem cadastradas e poderem ser consultadas. As organizaes precisam reagir
de modo rpido e eficiente aos problemas e s oportunidades que surgem. Os sistemas de
informao podem auxiliar as organizaes a expandir os seus limites de atuao, a oferecer
novos produtos e servios e a reorganizar fluxos de tarefas e trabalho (LAUDON; LAUDON,
2004).
No trabalho de estgio do aluno Marlon Eduardo Bertan, um dos autores deste
trabalho, foi apresentada a modelagem e a implementao dos cadastros relacionados a
veculos e localizao. Localizao se refere ao endereo de clientes, fornecedores, usurios
do sistema e outros. Neste trabalho de concluso de curso, que tem a participao do aluno
Thiago Cagnin Rodrigues, os demais requisitos sero modelados e implementados, incluindo
a pgina web que exibir os veculos e permitir a locao. Essa pgina web utilizar o mesmo
banco de dados, mas ser implementada em outra linguagem de programao. O sistema
gerencial implementado utilizando a linguagem Delphi e a pgina web utilizando PHP.

1.4 ESTRUTURA DO TRABALHO

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 SISTEMAS DE INFORMAES GERENCIAIS


Este captulo apresenta o referencial terico do trabalho. Esse referencial est
organizado em sees relacionadas que apresentam o contexto dos Sistemas de Informaes
Gerenciais, conceitos, finalidades e importncia desses sistemas.

2.1 CONTEXTO

Atualmente, face competitividade do mercado e facilidade de pesquisa por preos


de produtos dentre outros fatores, as empresas precisam do suporte de sistemas
computacionais. A Internet possibilita acesso facilitado e rpido busca por parte do
consumidor por preos e condies mais vantajosas por parte do consumidor. E o volume de
dados que as empresas geram e precisam manipular est cada vez maior. Alm de conseguir
novos clientes e manter os atuais, as empresas tm se preocupado com a satisfao dos seus
clientes. E para isso elas se vem quase que obrigadas a lanar mo da utilizao de
ferramentas para gerenciamento das informaes disponveis em suas bases de dados,
possibilitando aos executivos e aos gestores tomar decises com base em informaes atuais e
fidedignas (EICHSTAEDT; DEGENHARDT, 2012). Uma das ferramentas computacionais
que podem ser usadas para essa finalidade so os Sistemas de Informaes Gerencias (SIG).
Essas ferramentas, de acordo com Oliveira (2002), permitem aos gestores obter de
forma dinmica e prtica as informaes necessrias para fundamentar as decises
empresariais. Essas decises so de escopo operacional, gerencial e estratgico. Elas esto
relacionadas s operaes realizadas no dia-a-dia que definem o negcio da empresa e mesmo
s decises mais importantes que podem redefinir os rumos do negcio.

2.2 CONCEITOS

Sistemas de Informaes Gerencias so definidos como sendo um processo de


transformao de dados em informaes utilizadas na estrutura decisria da empresa,
proporcionando o suporte administrao (OLIVEIRA, 2004). Essas informaes visam
otimizar os resultados obtidos pela tomada de decises que se tornam mais adequadas, por

14

serem fundamentadas em dados reais e dados que efetivamente representam as condies do


negcio em relao ao mercado.
Um conceito de SIG mais diretamente relacionado rea de computao proposto
por Stair (1998), para quem sistema de informao referido como uma srie de elementos
inter-relacionados que coletam (entrada), manipulam e armazenam (processamento) e
fornecem dados e informaes (sada). Entrada, processamento e sada compem a base de
qualquer sistema computacional que processa dados. Os SIGs se caracterizam por coletarem
dados que forneam resultados que efetivamente possam ser utilizados como ferramenta de
apoio nas decises da empresa. O processamento realizado de forma a agregar valor aos
dados transformando-os em informaes teis para o momento de negcio da empresa.
No contexto deste trabalho, os sistemas de informaes gerenciais tratam conjuntos de
dados que so transformados em informaes, de forma que essas informaes possam ser
utilizadas no auxlio ao processo de deciso e de gerenciamento dos negcios.
importante ressaltar que os dados no podem ser simplesmente armazenados em um
repositrio. Eles precisam ser disponibilizados de maneira a fornecer suporte efetivo para
quem toma decises. Assim, importante que a interface do sistema seja de uso fcil e que as
informaes sejam organizadas visando agregar valor aos dados armazenados, considerando o
contexto do negcio.
Rezende e Abreu (2000) explicitam algumas atuaes dos sistemas de informao:
a) Ferramentas para auxiliar na realizao das tarefas do cotidiano de funcionamento
das empresas;
b) Instrumentos que possibilitam avaliao analtica e sinttica das empresas;
c) Facilitadores dos processos internos e externos. Externos esto relacionados a
fornecedores e parcerias de negcio, podendo abranger a cadeia produtiva;
d) Meios para suportar a qualidade de produtos, processos e servios, melhoria da
produtividade e inovao tecnolgica do ponto de vista organizacional;
e) Fornecimento de informaes para auxiliar nos processos decisrios empresariais;
f) Fornecimento de informaes estratgicas visando lucratividade e competitividade
empresarial.
As diversas formas de atuao dos sistemas permitem que as empresas conheam a si
mesmas, no sentido de efetivamente definir as suas capacidades e limitaes, e que estejam
preparadas para atuar no mercado, que geralmente bastante competitivo (BAZZOTTI;
GARCIA, 2012).

15

2.3 FINALIDADES DOS SISTEMAS DE INFORMAES GERENCIAIS

Os sistemas de informao tm por objetivo gerar informaes para a tomada de


decises. Isso realizado por meio de dados que so coletados, processados e transformados
em informao (BAZZOTTI; GARCIA, 2012).
Um Sistema de Informaes Gerenciais no se restringe ao software. Ele inclui
pessoas, procedimentos, dados armazenados e fontes de dados aos gerentes e aos tomadores
de deciso. As pessoas e seus procedimentos so essenciais para o entendimento de quais
informaes devem ser fornecidas e assim a origem dos dados seja selecionada. reas como
marketing, produo e finanas recebem suporte dos sistemas de informaes gerenciais e
podem compartilhar dados armazenados (STAIR; REYNOLDS, 2002). Um sistema de
informaes gerenciais obtm dados dos diversos segmentos da empresa e mesmo externos.
necessrio que a empresa seja entendida e tratada como um meio interligado em seus diversos
setores e departamentos.
Os sistemas de informao tm por finalidade capturar e/ou recuperar dados e realizar
sua anlise em funo de um processo de deciso. Pereira e Fonseca (1997) endossam a
necessidade de envolvimento da organizao como um todo, seja para alimentar o sistema de
informao, seja para definir o processamento dos dados, seja para interpretar as informaes
fornecidas como resultado do processamento. Para esses autores, esse tipo de sistema envolve,
de modo geral, o decisor, o contexto, o objetivo da deciso e a estrutura de apresentao das
informaes. A estrutura de representao se refere forma de armazenamento dos dados, de
processamento e de apresentao ao usurio.
As exigncias do mercado - que competitivo, dinmico e globalizado - motivam as
empresas a possurem sistemas de informao que sejam eficientes, garantindo nveis mais
elevados de produtividade e eficcia (BAZZOTTI; GARCIA, 2012).
Batista (2004) destaca que o objetivo de usar os sistemas de informao criar um
ambiente empresarial em que as informaes sejam confiveis e possam fluir na estrutura
organizacional por meio dos seus diversos processos e procedimentos de negcio.
Considerando a quantidade de recursos tecnolgicos disponveis e o volume de dados
manipulado pelas empresas, o diferencial das empresas tem sido diretamente relacionado
valorizao da informao e do conhecimento, proporcionando solues mais efetivas.
Para serem efetivos, os sistemas de informao precisam corresponder s seguintes
expectativas (PEREIRA; FONSECA, 1997):

16

a) Atender as reais necessidades dos usurios. As informaes fornecidas devem


atender as expectativas e as necessidades do negcio e dos seus usurios;
b) Estar centrados no usurio e no no profissional que o criou. Assim, esses sistemas
precisam fornecer informaes resultantes do processamento que sejam facilmente
compreendidas pelos usurios;
c) Adaptar-se constantemente s novas tecnologias de informao. O sistema deve ser
implementado de forma que possa ser ampliado ou adaptado com facilidade e sem
necessidade de extensivos treinamentos aos usurios. A forma que os processos de negcio
so realizados, seja manualmente ou por meio de sistema j existente na empresa, deve ser
mantida no SIG. Assim, a dificuldade e possvel rejeio pelos usurios so minimizadas;
d) Estar alinhado com as estratgias e os procedimentos de negcio da empresa. O
sistema de informao deve levar em conta o processo de negcio e a cultura organizacional.
O conhecimento existente na organizao deve ser considerado.
Se um sistema de informao atender a esses requisitos provvel que as pessoas se
sintam mais confiante em utiliz-lo seja para as atividades rotineiras ou como suporte ao
processo de tomada de deciso.

2.4 IMPORTNCIA DOS SISTEMAS DE INFORMAES GERENCIAIS

Geralmente h dificuldades para avaliar de forma quantitativa qual o efetivo benefcio


de um sistema de informaes gerenciais, ou seja, a melhoria no processo decisrio da
organizao (MIRANDA, 2012).
Oliveira (2002) destaca os seguintes como os possveis benefcios que os sistemas de
informaes gerenciais podem, sob determinadas condies, trazer para as empresas:
a) Reduo de custos das operaes. Muitas tarefas podem ser realizadas
automaticamente pelo sistema de informao. Para outras tarefas o sistema fornece
informaes que auxiliam na sua realizao. Um volume menor de tarefas sendo realizadas
por pessoas e tarefas sendo realizadas em menos tempo pode impactar na reduo de custos
da empresa;
b) Melhoria no acesso s informaes que pode ocorrer por meio de relatrios mais
completos por terem fontes distintas de dados, mais dados e combinados de maneiras mais
efetivas e de acordo com necessidades dos usurios. Os sistemas de informao tambm

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

Este captulo apresenta os materiais e o mtodo utilizados na realizao deste


trabalho. Materiais so as ferramentas, as tecnologias, os ambientes de desenvolvimento e
outros que so utilizados para realizar as atividades desde a definio dos requisitos
implantao do sistema. O mtodo define as principais atividades realizadas.

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

Astah Community (ASTAH, 2012) uma ferramenta de modelagem gratuita para


projeto de sistemas orientados a objetos. Essa ferramenta baseada nos diagramas e na
notao da UML 2 (Unified Modeling Language) e permite gerar cdigo em Java. A Figura 1
apresenta a interface principal dessa ferramenta de modelagem.

organizao
projeto

propriedades

editor

Figura 1 Ferramenta de modelagem Astah Community

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

3.1.2 Microsoft SQL Server Management

SQL Server Management Studio um ambiente integrado para acessar, configurar,


gerenciar, administrar e desenvolver todos os componentes do SQL Server (MICROSOFT,
2012). Esse ambiente combina um conjunto de ferramentas grficas com editores de script
para prover acesso em diversos nveis aos desenvolvedores e administradores de SQL Server.
A Figura 2 apresenta a tela da ferramenta Microsoft SQL Server Management com
uma viso do ambiente grfico de editorao.

Figura 2 Ferramenta SQL Server composio grfica de banco de dados

As tabelas e respectivos campos que so definidos de forma grfica podem ser


visualizados e editados em termos de atributos e propriedades. A rea superior direita da
Figura 3 apresenta os campos da tabela selecionada e na parte inferior da rea a direita dessa
figura so apresentadas as propriedades da coluna selecionada. Uma coluna um campo da
tabela.

21

Figura 3 Ferramenta SQL Server propriedades de campos de tabelas

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.

Figura 4 Ferramenta SQL Server gerao de script das tabelas

22

3.1.3 Delphi

A linguagem Delphi, que est vinculada a um ambiente de desenvolvimento, se


baseia em uma extenso orientada a objetos da linguagem de programao Pascal, tambm
conhecida como Object Pascal (CANTU, 2003). Esse ambiente de desenvolvimento
composto de vrias ferramentas agregadas.
Como ambiente de desenvolvimento, Delphi um compilador e tambm uma IDE
para o desenvolvimento de software. A linguagem utilizada Object Pascal (Pascal com
extenses orientadas a objetos) que a partir da verso 7.0 passou a se chamar Delphi
Language. A Figura 5 apresenta a tela de interface do ambiente de desenvolvimento da
linguagem Delphi que na verso Rad XE2.

Gerenciamento
do projeto

rea de edio

Propriedades
dos elementos

Paleta de
ferramentas

Figura 5 Ambiente de desenvolvimento da Linguagem Delphi

As regies marcadas na Figura 5 indicam as principais partes da IDE de


desenvolvimento da Linguagem Delphi, em sua verso Embarcadero RAD Studio XE2. Essa
IDE oferece uma rea de edio na qual so compostos os formulrios a partir dos
componentes da paleta de ferramentas (rea inferior direita) e tambm para escrita do
cdigo. Em Propriedades dos elementos so apresentadas as propriedades do elemento
selecionado na rea de edio. E em Gerenciamento do projeto os arquivos que compem o
projeto so organizados sob a forma de uma rvore de diretrios. Isso facilita a localizao
para edio dos componentes, por exemplo.

23

3.1.4 NetBeans

A IDE NetBeans (NETBEANS, 2012) um ambiente de desenvolvimento que rene


diversas funcionalidades necessrias para implementar um sistema. Essa IDE possui um
grande conjunto de bibliotecas, mdulos e APIs (Application Programming Interface) que
compem um conjunto de rotinas, protocolos e ferramentas para a construo de software).
Com a IDE NetBeans, possvel desenvolver aplicativos para as plataformas desktop, web e
mobile. A Figura 6 apresenta a tela principal da IDE NetBeans.

rea de edio
Projetos

Figura 6 Tela principal da IDE NetBeans

As partes destacadas na Figura 6 indicam:


a) Projetos a rea na qual so organizados os arquivos de cdigo definidos durante
a implementao do projeto.
b) rea de edio nesta rea o cdigo escrito e editado. Alm da escrita de cdigo,
nessa rea a interface do sistema composta por meio de componentes visuais vinculados
ferramenta e disponibilizados em suas paletas de componentes.

3.1.5 Notepad++

A ferramenta Notepad++ um editor de cdigo fonte livre que suporta vrias


linguagens (NOTEPAD, 2012). Essa ferramenta executa no ambiente Microsoft Windows e

24

baseada na licena GPL (General Public License). A Figura 7 apresenta a tela principal do
Notepad++.

Figura 7 Tela principal da ferramenta 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

JavaScript possibilita a execuo de cdigo em um documento web. JavaScript uma


linguagem de script, caracterizada por suas instrues serem interpretadas e com execuo
vinculada a outras linguagens. As linguagens de script como JavaScript so um dos
componentes fundamentais das pginas web (MIKKONEN; TAIVALSAARI, 2008).
3.1.10 Adobe Photoshop

A ferramenta Adobe Photoshop um programa de editorao grfica desenvolvido e


distribudo pela Adobe Systems (ADOBE, 2012).
O Photoshop foi criado para edio de imagens para impresso em papel, mas est
sendo cada vez mais usado tambm para produzir imagens destinadas web (ADOBE, 2012).
O Adobe ImageReady utilizado em conjunto com o Photoshop para a edio e criao de
imagens e animaes para a web.

26

3.1.11 XAMPP

XAMPP uma distribuio do Apache contendo MySQL, PHP e Perl (XAMPP,


2012). O nome provem da abreviao de X (para diferentes sistemas operacionais, como
Linux Windows, Solaris e Mac), Apache, MySQL, PHP, Perl (APACHE, 2012). A
distribuio para Windows 2000, 2003, XP, Vista e 7 contm: Apache, MySQL, PHP +
PEAR, Perl, mod_php, mod_perl, mod_ssl, OpenSSL, phpMyAdmin, Webalizer, Mercury
Mail Transport System for Win32 and NetWare Systems v3.32, Ming, FileZilla FTP Server,
mcrypt, eAccelerator, SQLite e WEB-DAV + mod_auth_mysql.
A Figura 8 apresenta a tela do painel de controle do XAMPP.

Figura 8 Tela do painel de controle do 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

A implementao do sistema para a parte desktop foi realizada por meio da


linguagem Delphi utilizando o ambiente de desenvolvimento da prpria linguagem.
A pgina web que apresenta os veculos da locadora e permite o cliente realizar
locao foi implementada utilizando a linguagem PHP e como IDE foram utilizados
NetBeans e Notepad++.
e) Realizao dos testes
Os testes realizados foram basicamente de codificao e para verificar o atendimento
das funcionalidades. Foram testes informais e realizados pelo prprio autor deste trabalho.

29

4 RESULTADO

Este captulo apresenta o que foi obtido como resultado do trabalho: o sistema
desenvolvido.

4.1 APRESENTAO DO SISTEMA

O sistema de gesto de locadoras de veculos permitir o controle de usurios atravs


de nveis de acesso, o cadastro de clientes, de fornecedores, asseguradoras com sistema de
bloqueio ou inativao do mesmo, cadastro de veculos com seus tipos e modelos, controle
dos gastos e custos de cada veculo. O sistema permitir que proprietrio tenha acesso a
informaes gerenciais para, por exemplo, verificar se os veculos de sua frota esto trazendo
lucro ou no, por exemplo.
Dentre outras funcionalidades do sistema esto: o controle de check-in e check-out, no
momento da locao e devoluo do veculo e da situao dos veculos em relao a veculos
locados, no locados ou reservados. Alm de um sistema de reservas online, por meio de site
prprio e opo de envio de e-mail para clientes avisando em quanto tempo sua locao
terminar, ou caso haja alguma promoo. O sistema tambm prover integrao a sites como
FIPE (Fundao Instituto de Pesquisas Econmicas), DETRAN (Departamento de Trnsito) e
SERASA (Servios de Assessoria Sociedade Annima, tambm conhecida como
Centralizadora dos Servios dos Bancos SA) controlando multas, sinistros, licenciamento,
seguro e IPVA (Imposto sobre a Propriedade de Veculos Automotores).
O sistema de reservas online permitir ao cliente visualizar os veculos que a empresa
possui e realizar a locao dos mesmos por meio de uma pgina web.

4.2 MODELAGEM DO SISTEMA


A Figura 9 apresenta o diagrama de casos de uso contendo as funcionalidades do
sistema.

30

Figura 9 Diagrama de casos de uso

As Figuras 10 a 13 apresentam os diagramas de banco de dados com as entidades e os


respectivos relacionamentos das tabelas do sistema. A modelagem do banco foi dividida em
mdulos para facilitar a visualizao. Esses mdulos indicam apenas agrupamentos de
funcionalidades de forma a facilitar a visualizao das tabelas.

31

Figura 10 Diagrama de entidades e relacionamentos veculos

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.

Figura 11 Diagrama de entidades e relacionamentos Localizao

32

As tabelas relacionadas ao cadastro de clientes esto apresentadas na Figura 12.

Figura 12 Diagrama de entidades e relacionamentos Clientes

33

As tabelas relacionadas s movimentaes esto apresentadas na Figura 13.

Figura 13 Diagrama de entidades e relacionamentos Movimentaes

Na Figura 13, percebe-se que na tabela Movimentaes relaciona-se uma Conta a


Pagar ou uma Conta a Receber. Todos os outros vnculos so gerados pelas tabelas filhas da
movimentao. O que define o tipo de movimentao (entrada ou sada) o campo
Tipo_Operacao. J o que define em que situao o veculo ficar o campo Id_Situacao
que vem da tabela filha Situacoes. Nessa tabela, o usurio do sistema poder cadastrar
qualquer situao que o veculo poder se encontrar, mas o campo Id_Tipo_Situacao ter
seus registros fixos que sero: Disponvel, Reservado, Locado, Manuteno ou Baixado. De
acordo com o tipo de movimentao, poder haver vinculo com a tabela Check_In que se
refere verificao do estado do veculo no momento em que o mesmo est sendo locado ou
devolvido.

34

4.3 DESCRIO DO SISTEMA


A tela apresentada na Figura 14 apresenta a tela inicial do sistema. Como trabalho de
estgio foram implementados apenas as funcionalidades relacionadas a veculos e localizao.
Essas funcionalidades, de certa forma, definem quatro mdulos do sistema: Geral que inclui
Localizao (definido como Geral no menu apresentado na Figura 14), Veculos,
Movimentaes e Financeiro. A Figura 14 apresenta a tela inicial do sistema, sendo que o
menu geral permite acesso aos cadastros relacionado localizao.

Figura 14 Tela inicial do sistema

Para facilitar a apresentao, a descrio do sistema foi dividida em aplicao deskotp


e aplicao web. As funcionalidades da aplicao desktop foram organizadas em mdulos.
Esses mdulos representam os menus da tela do sistema. A denominao mdulo foi
utilizada apenas como forma de agrupamento das telas e funcionalidades.

4.3.1 Aplicao Desktop - Mdulo Localizao

O mdulo Localizao se refere aos cadastros relacionados a endereo. A Figura 15


apresenta os itens do menu Geral correspondente aos cadastros.

35

Figura 15 Menu geral e seus itens de menu

A tela de cadastro de Unidades Federativas (representada na Figura 16) compreende os


campos do cdigo interno do sistema, cdigo do IBGE da Unidade Federativa e o nome da
respectiva Unidade Federativa.

Figura 16 Tela de cadastro de Unidades Federativas

A tela de cadastro de Tipos de Logradouros apresentada na Figura 17. Nessa tela so


cadastrados os tipos de logradouro como, por exemplo, Rua, Avenida e Travessa. Essa tela
contm os campos cdigo, tipo do logradouro que um cdigo prprio e a descrio do tipo
do logradouro.

36

Figura 17 Tela de tipos de logradouros

O cadastro de tipos de logradouros utilizado no cadastro de logradouros que


apresentado na Figura 18. A tela de cadastro de logradouros contm o cdigo, o tipo do
logradouro e a descrio do logradouro. O tipo possui um boto para selecionar os tipos de
logradouros cadastrados pelo formulrio apresentado na Figura 17.

Figura 18 Tela de logradouros

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.

Figura 19 Tela de cadastro veculos aba dados pessoais

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.

Figura 20 Tela de cadastro de nacionalidades

A tela responsvel pelo cadastro de Empresas, prestadoras ou tomadoras de servios


apresentada na Figura 21. Essa tela composta pelas seguintes abas:
a) Aba Dados Empresa - essa aba contm os principais dados da empresa, tais como
nome fantasia, razo social, CNPJ (Cadastro Nacional de Pessoas Jurdicas) ou CPF
dependendo do campo tipo da empresa ser fsica ou jurdica. O campo Situao Empresa
possui o mesmo comportamento do campo Situao Cliente do cadastro de Clientes.
Quando ativo os campos so deixados habilitados. Quando inativo todos

os

restantes

desabilitados, impedindo a empresa selecionada de realizar movimentaes quando


bloqueado.

39

b) Aba Endereo Empresa - essa aba responsvel pelo cadastramento do endereo


da empresa em questo, contendo os campos CEP, nmero, bairro e logradouro como sendo
os principais.
c) Aba Dados Responsvel - essa aba tem como finalidade cadastrar o proprietrio
ou o responsvel pela empresa que est prestando ou tomando um servio da locadora em
questo.

Figura 21 Tela de cadastro de empresas

A Figura 22 apresenta o cadastro de usurio.

40

Figura 22 Tela de cadastro de usurios

O cadastro de usurios contm os campos nome do usurio, login e senha do mesmo e


tambm seu nvel de acesso, que pode ser atendente, gerente ou administrador. Apenas o
administrador tem acesso a este cadastro, portanto somente ele poder designar os nveis de
acesso dos demais envolvidos.
4.3.2 Aplicao Desktop - Mdulo Veculos

Na Figura 23 esto os itens de menu que se referem aos cadastros relacionados ao


veculo. O menu veculos permite acesso aos formulrios relacionados aos cadastros do
mdulo denominado veculos.

Figura 23 Menu Veculos e seus itens de menu

41

A seguir sero apresentadas as telas de cadastro relacionadas a veculos. As telas


desses cadastros so acessadas atravs dos itens de menu exibidos na Figura 23.
Ser utilizado o cadastro de Opcionais de Veculos para mostrar a tela de pesquisa dos
cadastros (Figura 24). Esta tela padro para todos os cadastros. No seu topo h um campo de
pesquisa. O campo Tipo de Pesquisa serve para saber se a pesquisa por cdigo ou por
descrio. Ao seu lado est o campo Pesquisa no qual o usurio informar o cdigo ou a
descrio do item que est procurando. feita a validao no sentido de esse campo aceitar
apenas nmeros, se o campo Tipo de Pesquisa est selecionado como cdigo. Pesquisa
Aproximada faz com que sejam pesquisadas as descries ou cdigos por aproximao e
bem ao lado direito da tela o boto de Pesquisa, representado pelo cone de uma lupa.

Figura 24 Cadastro de opcionais de veculos

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

e) Cancelar (cone que representa X) - Cancela a edio ou a insero que ainda no


foi gravada em banco.
f) Pesquisar (cone de uma lupa) - Utilizada para pesquisar em registros. Quando na
tela de manuteno, a opo de pesquisa fica desabilitada.
g) Primeiro (cone <<) - Posiciona no primeiro registro.
h) Anterior (cone <) - Posiciona no registro anterior ao atual.
i) Prximo (cone >) - Posiciona no prximo registro.
j) ltimo (cone >>) - Posiciona no ltimo registro.
h) Sair (cone que representa uma porta aberta com uma flecha indicativa) - Fecha a
tela.
Esses botes so utilizados em todas as telas de cadastro e possuem as mesmas
funcionalidades. Os botes se comportam de forma inteligente, por exemplo, quando est
sendo inserido um item, o boto de insero fica desabilitado at que o registro seja efetivado
no banco de dados, o mesmo ocorre para os demais botes.
Os botes de navegao trabalham de acordo com o nmero do registro em que est
posicionado (selecionado). Por exemplo, se estiver no primeiro registro os botes Primeiro
e Anterior ficam desabilitados.
A tela de manuteno do cadastro de Opcionais de Veculos (Figura 25) contm o
campo cdigo que responsvel para identificar cada item, a sigla de cada opcional e o nome
do opcional do veculo, exemplo: vidros eltricos, travas eltricas.

Figura 25 Tela de manuteno de opcionais de veculos

A tela de Cores de Veculos, apresentada na Figura 26, contm os campos cdigo da


cor e a descrio da mesma.

43

Figura 26 Tela de manuteno de cores de veculos

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.

Figura 27 Tela de cadastro de espcie e tipos de veculos

Na Figura 28 est a tela que responsvel pelo cadastro da marca do veculo,


incluindo a tabela FIPE e a descrio da marca.

44

Figura 28 Tela de cadastro de marcas de veculos

Na Figura 29 est apresentada a tela de cadastro dos modelos de veculos. Esse


formulrio contm os campos cdigo, tabela FIPE, marca e modelo. O campo marca possui
um boto de pesquisar, para que as marcas cadastradas na tela apresentada na Figura 28
possam ser selecionadas. Ao ser escolhido o cdigo de uma marca apresentada a sua
descrio automaticamente ao lado do cone de pesquisa. O usurio pode digitar o cdigo
correspondente marca ao invs de pesquis-lo.

Figura 29 Tela de cadastro de modelos de veculos

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

Figura 30 Tela de cadastro de ano e modelo de veculos

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.

Figura 31 Tela de cadastro de tipo de veculo

A tela de cadastro de veculos apresentada na Figura 32 e que utiliza diversos outros


cadastros. o formulrio mais completo desse mdulo denominado Veculo.

46

Figura 32 Tela de cadastro veculos

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.

Figura 33 Tela de cadastro de grupos

O cadastro de servios apresentado na Figura 34. Nessa tela so cadastrados os


servios que as outras empresas prestam para a locadora em questo.

Figura 34 Tela de cadastro de servios

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.

Figura 35 Tela de cadastro de situaes

No cadastro de situaes escolhido um tipo. Esse tipo cadastrado por meio do


formulrio apresentado na Figura 36. Esse cadastro tem ligao com o cadastro de situaes e
tem como objetivo ajudar o usurio saber se o veculo com o tipo de situao Manuteno
est em uma chapeao ou em uma oficina mecnica, por exemplo.

Figura 36 Tela de cadastro de tipos de situaes

O cadastro de grupos opcionais apresentado na Figura 37. Esse cadastro une os


grupos com os opcionais dos veculos, fazendo com que grupos com diferentes tipos de
opcionais possam ser criados, possibilitando mais escolhas ao seu cliente.

49

Figura 37 Tela de cadastro de grupos de opcionais

4.3.3 Aplicao Desktop - Mdulo Movimentao

O mdulo movimentao se refere s opes de locao de veculos e de manuteno


dos mesmos. A Figura 38 apresenta as opes do menu Movimentao.

Figura 38 Menu Movimentao e seus itens de menu

Na Figura 39 apresentada a tela de manuteno. Essa tela utilizada quando um


veculo enviado para manuteno.

50

Figura 39 Tela de manuteno de veculos

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

Figura 40 Tela de locao de veculos

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).

Figura 41 Tela de locao de veculos: check-in 1

Na tela de locao, a aba Check-in/aba Traseira e Lateral Direita, apresenta tambm


os vrios pontos que podem ser marcados caso o veculo esteja danificado antes da locao ou
volte danificado aps uma locao. Essa aba apresenta a parte lateral direita e traseira do
veculo (Figura 42).

53

Figura 42 Tela de locao de veculos: check-in 2

4.3.4 Aplicao Desktop - Mdulo Financeiro

A Figura 43 apresenta as opes do menu Financeiro. As opes disponveis so


contas a pagar e contas a receber.

Figura 43 Menu Financeiro e seus itens de menu

54

A tela de contas a pagar apresentada na Figura 44.

Figura 44 Tela de cadastro de contas a pagar

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

4.3.5 Aplicao Web

A Figura 45 apresenta a tela principal da pgina web desenvolvida. o mdulo web do


sistema.

Figura 45 Pgina inicial do site

Na regio central da tela so apresentadas imagens aleatrias de alguns veculos


ilustrativos com efeitos de transio entre eles. Ao lado da imagem apresentado um boto

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.

Figura 46 Pgina da frota de veculos

57

As imagens dos veculos so carregadas diretamente do banco da aplicao desktop.


Essas imagens so cadastradas por meio do cadastro de veculos.
A ser clicado sobre a imagem de um veculo o mesmo apresentado na tela
juntamente com algumas informaes cadastrais. Essas informaes so provenientes do
cadastro de veculos realizado por meio da aplicao desktop. A Figura 47 apresenta a pgina
com a apresentao do veculo e os seus dados cadastrais. Na parte superior da pgina
apresentado o nome do veculo selecionado e em uma listagem a direita, a sua marca, ano e
modelo e a descrio do modelo. Essa pgina tambm apresenta um boto reservar, que abre o
cadastro de reserva apresentado na Figura 48.

Figura 47 Detalhes do veculo selecionado

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

de dados ao ser informado o CPF os demais campos so preenchidos. Caso o usurio no


esteja cadastrado, verificao realizada pelo CPF, um cadastro de usurio simplificado
(apenas com nome, CPF e email) inserido no banco de dados no momento que o cliente
clicar no boto Reservar.

Figura 48 Pgina para reserva de veculo

No menu Sobre apresentado um breve histrico da empresa e tambm so


apresentado dados referentes a empresa. Dentre esses dados esto os nomes dos proprietrios,
a data de fundao, o objetivo da empresa e o seu diferencial em termos de competitividade
no mercado.
No menu Localizao apresentada uma pgina com um mapa indicando a
localizao da empresa. Tambm nessa mesma pgina h um campo para o usurio informar
qual a sua localizao e um boto traar rota, que ao ser clicado mostra o caminho que
precisa ser feito para chegar at a empresa. A Figura 49 apresenta a pgina que permite
indicar o endereo de origem e ser indicada a rota para chegar at a empresa.

59

Figura 49 Pgina de localizao da empresa e indicao da rota

No menu Contato, em uma nova pgina apresentado um formulrio para o usurio


entrar em contato com a empresa por e-mail. Tambm ficaro destacadas as informaes de
contato da empresa, como telefone, fax e e-mail.
A Figura 50 apresenta a pgina com o formulrio de contato.

60

Figura 50 Pgina com formulrio de contato

4.4 IMPLEMENTAO DO SISTEMA


A seguir esto as listagens de cdigo que representam exemplos das funcionalidades
implementadas. Essas listagens se referem aos cdigos usados para implementar
funcionalidades padro para o sistema. Elas exemplificam as operaes realizadas com o
sistema, incluindo cadastros, movimentao, controle de contas, dentre outras. Na Seo 4.4.1
esto os cdigos relacionados aplicao desktop e na Seo 4.4.2 os cdigos relacionados
pgina web.
4.4.1 Aplicao Desktop

A Listagem 1 apresenta o mtodo Cancelar, padro em todas as telas. Esse mtodo,


inicialmente herda as funcionalidades da unfBase e verifica se o pgcPrincipal est na aba de
registro. Se estiver, atribui o foco ao campo dbeNOME_COR seno o foco vai para o campo
cbTipoPesq.
procedure TunfCoresVeiculos.bmCancelarClick(Sender: TObject);
begin

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

A Listagem 3 apresenta o cdigo do mtodo de excluso do formulrio de cores de


veculos. Esse mtodo verifica se a qryPrincipal est no estado dsBrowser, ou seja, no est
inserindo nem editando. E utiliza a spPrincipal, que conecta diretamente com a procedure
LOCADORA_INS_UPD_DEL desenvolvida pelos autores deste trabalho e armazenado no
banco de dados e atribui valor aos parmetros. A ao, que um inteiro, com valores iguais a
0, 1 e 2, que neste caso representado pela constante C_DELETAR que tem o valor 2. Em
seguida vem o nome da tabela e aps o cdigo SQL usado na clusula where da excluso. E
por fim chamado o mtodo ExecProc, que executa a procedure do banco de dados. Essa
procedure retorna o parmetro @RETORNO. Se esse retorno for true mostrada a mensagem
de registro excludo com sucesso. Caso no seja true apresentada uma mensagem de que
ocorreu erro ao tentar excluir. Aps isso executado o que foi herdado da unfBase, e
atribudo o foco ao campo dbeNOME_COR ou ao campo cbTipoPesq, de acordo com o
ActivePage da pgcPrincipal. E por fim, executado o mtodo Requery para realizar um
refresh na query e posicion-la no ltimo registro.
procedure TunfCoresVeiculos.bmExcluirClick(Sender: TObject);
begin
if qryPrincipal.State = dsBrowse then
begin
with spPrincipal do
begin
Parameters.ParamByName('@ACAO').Value
:= C_DELETAR;
Parameters.ParamByName('@TABELA').Value
:= 'CORES_VEICULOS';
Parameters.ParamByName('@WHERE_INS_DEL').Value := ' ID_COR = ' +
qryPrincipalID_COR.AsString;
ExecProc;
if Parameters.ParamByName('@RETORNO').Value then

62

MessageBox(Application.Handle , 'Registro Excludo com Sucesso!' ,


'MT Rental' , MB_OK + MB_ICONINFORMATION )
else
MessageBox(Application.Handle , 'Erro ao Tentar Exclur!', 'MT
Rental' , MB_OK + MB_ICONINFORMATION )
end;
end;
inherited;
if pgcPrincipal.ActivePage = tsRegistro then
dbeNOME_COR.SetFocus
else if pgcPrincipal.ActivePage = tsConsulta then
cbTipoPesq.SetFocus;
qryPrincipal.Requery;
qryPrincipal.Last;
end;
Listagem 3 Cdigo do evento clique do boto excluir do Formulrio de Cadastro de Cores

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

Na Listagem 5 apresentado o cdigo do mtodo salvar.


procedure TunfCoresVeiculos.bmSalvarClick(Sender: TObject);
begin
if qryPrincipal.State = dsInsert then
begin
with spPrincipal do
begin
Parameters.ParamByName('@ACAO').Value
:= C_INSERIR;
Parameters.ParamByName('@TABELA').Value
:= 'CORES_VEICULOS';
Parameters.ParamByName('@CAMPOS_INSERT').Value := 'NOME_COR';
Parameters.ParamByName('@VALORES_INSERT').Value
:=
QuotedStr(qryPrincipalNOME_COR.AsString);
ExecProc;
if Parameters.ParamByName('@RETORNO').Value 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;
end
else if qryPrincipal.State = dsEdit then
begin
with spPrincipal do
begin
Parameters.ParamByName('@ACAO').Value
:= C_ALTERAR;
Parameters.ParamByName('@TABELA').Value
:= 'CORES_VEICULOS';
Parameters.ParamByName('@VALORES_UPDATE').Value := ' NOME_COR = ' +
QuotedStr(qryPrincipalNOME_COR.AsString);

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

O mtodo salvar verifica se o state da qryPrincipal est como dsInsert. So atribudos


valores aos parmetros da spPrincipal, a ao, a tabela, os campos_insert e os valores_insert.
Em seguira a procedure executada e o retorno verificado.
Caso o state da qryPrincipal esteja como dsEdit, so atribudos valores aos parmetros
da spPrincipal (que o componente stored procedure do Delphi), a ao, a tabela, os
valores_update e a where_ins_del. O retorno verificado e as mensagens so apresentadas.
No boto Buscar (cdigo apresentado na Listagem 6), so atribudos valores s
variveis idCampo (nome do campo chave-primria da tabela), descrioCampo (nome do
campo descrio) e sSQLWhereBusca que responsvel por buscar todos os registros da
tabela.
procedure TunfCoresVeiculos.btnBuscarClick(Sender: TObject);
begin
idCampo
:= 'ID_COR';
descricaoCampo := 'NOME_COR';
sSQLWhereBusca := ' WHERE (1=1) ';
inherited;
end;
Listagem 6 Cdig Cdigo do evento clique do boto Buscar do Formulrio de Cadastro de Cores

Na Listagem 7 est o evento onKeyDown que verifica se a tecla pressionada (key)


igual a vk_return, ou seja, enter, e ento atribui o foco do sistema para o prximo campo. Esse
cdigo permite que a tecla enter seja considerada como a tecla de tabulao (tab).
procedure TunfCoresVeiculos.dbeNOME_CORKeyDown(Sender: TObject; var Key:
Word; Shift: TShiftState);
begin
inherited;
if Key = VK_RETURN then
Perform(Wm_NextDlgCtl,0,0);
end;
Listagem 7 Cdigo do evento OnKeyDown do Campo dbeNOME_COR 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

No evento onDblClick do grid, verificado se a origem da chamada do formulrio foi


o menu. Se sim, so atribudos os campos cdigo e descrio da tabela para o Record
Parmetros criado na unfBase, que utilizado para as telas que chamam o cadastro de cor. O
cdigo desse evento apresentado na Listagem 9.
procedure TunfCoresVeiculos.grdConsultaDblClick(Sender: TObject);
begin
inherited;
if Self.Owner.Name <> 'FPrincipal' then
begin
Parametros.Codigo
:= qryPrincipalID_COR.AsInteger;
Parametros.Descricao := qryPrincipalNOME_COR.AsString;
end;
end;
Listagem 9 Cdigo do evento onDblClique do componente grdConsulta do Formulrio de Cadastro de
Cores

Na Listagem 10 est o cdigo do evento que utilizado para remover a barra de


rolagem horizontal, pois em telas como esta que tem apenas dois campos mostrados no grid,
no h necessidade de barra de rolagem horizontal.
procedure TunfCoresVeiculos.grdConsultaDrawColumnCell(Sender: TObject;
const
Rect:
TRect;
DataCol:
Integer;
Column:
TColumn;
State:
TGridDrawState);
begin
inherited;
ShowScrollBar(grdConsulta.Handle,SB_HORZ,False);
end;
Listagem 10 Cdigo do Evento OnDrawColumnCell do compoente grdConsulta do Formulrio de
Cadastro de Cores

A Listagem 11 apresenta a procedure LOCADORA_INS_UPD_DEL utilizada para as


operaes com banco de dados descritas nas listagens de cdigo apresentadas anteriormente.
Procedure no Banco de Dados, que realiza o CRUD

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

A procedure LOCADORA_INS_UPD_DEL do banco de dados (Listagem 11), cria as


variveis utilizadas como parmetros no cdigo fonte. Essa procedure inicia a transao,
verifica se a @Acao Insert, Update ou Delete e monta as consultas SQL de acordo com os
parmetros passados pelas telas. Aps isso executa o commit. Se ocorreu algum erro, executa
um rollback e retorna a situao para a tela que fez uso dela.

66

A procedure da Listagem 12 chamada com um clique no grid ou com um clique do


boto Editar. Essa procedure atribui os dados que vem da query para os campos de data e o
comboBox da tela.
procedure TunfLocacao.AtribuiDadosEdit;
begin
cbTipoOperacao.ItemIndex := qryPrincipalTIPO_OPERACAO.AsInteger;
dtDataSaida.DateTime := qryPrincipalDATA_INICIAL_CONTRATO.AsDateTime;
dtDataChegada.DateTime
:= qryPrincipalDATA_FINAL_CONTRATO.AsDateTime;
dtDataDevolucao.DateTime := qryPrincipalDATA_DEVOLUCAO_CONTRATO.AsDateTime;
end;
Listagem 12 Cdigo da procedure do evento click no grid ou boto editar da tela de Locao

Na Listagem 13 est o cdigo da procedure que chamada no clique do boto incluir.


Essa procedure seta os dados padro dos campos de data e combo box.
procedure TunfLocacao.AtribuiDadosInsert;
begin
cbTipoOperacao.ItemIndex := 1;
dtDataSaida.DateTime
:= Now;
dtDataChegada.DateTime
:= Now;
dtDataDevolucao.DateTime := Now;
end;
Listagem 13 Cdigo da procedure do evento click no boto incluir da tela de Locao

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 Excluir verifica o resultado das funes ExcluirContrato e


ExcluirCheckIn e o armazena na varivel dadosExcluidos. Verifica o state da query e atribui
valor aos parmetros da procedure do banco de dados e a executa. Se o parmetro retorno for
verdadeiro ele verifica a varivel dadosExcluidos, se ela estiver true ser apresentada uma
mensagem de sucesso ao usurio seno apresentar uma mensagem de erro. Aps chamado
o que foi herdado da unfBase, verificado qual a pgina ativa do PageControl atribuindo assim
o foco ao campo ID_VEICULO ou cbTipoPesquisa, e usada a funo requery para atualizar
a query e posicionar o cursor no ltimo registro.
procedure TunfLocacao.bmExcluirClick(Sender: TObject);
var
dadosExcluidos : Boolean;
begin
if ExcluiContrato and ExcluiCheckIn then
dadosExcluidos := True
else
dadosExcluidos := False;
if qryPrincipal.State = dsBrowse then
begin
with spPrincipal do
begin
Parameters.ParamByName('@ACAO').Value
:= C_DELETAR;
Parameters.ParamByName('@TABELA').Value
:= 'MOVIMENTACOES';
Parameters.ParamByName('@WHERE_INS_DEL').Value
:= ' ID_MOVIMENTACAO
= ' + qryPrincipalID_MOVIMENTACAO.AsString;
ExecProc;
if Parameters.ParamByName('@RETORNO').Value then
begin
if dadosExcluidos then
MessageBox(Application.Handle , 'Registro Excluido com Sucesso!'
, 'MT Rental' , MB_OK + MB_ICONINFORMATION )
end
else
MessageBox(Application.Handle , 'Erro ao Tentar Excluir!', 'MT
Rental' , MB_OK + MB_ICONINFORMATION );
end;
end;
end;
inherited;
if pgcPrincipal.ActivePage = tsRegistro then
dbeID_VEICULO.SetFocus
else if pgcPrincipal.ActivePage = tsConsulta then
cbTipoPesq.SetFocus;
qryPrincipal.Requery;
qryPrincipal.Last;
end;
Listagem 16 Cdigo do evento click no boto excluir da tela de Locao

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

procedure TunfLocacao.bmNovoClick(Sender: TObject);


begin
inherited;
AtribuiDadosInsert;
if pgcMovimentacao.ActivePage <> tsMovimentacao then
pgcMovimentacao.ActivePage := tsMovimentacao;
dbeID_VEICULO.SetFocus;
end;
Listagem 17 Cdigo do evento onClick no boto novo da tela de Locao

O clique no boto Salvar verifica se os dados informados so vlidos, atravs do


mtodo ValidaDados (cujo cdigo est na Listagem 18), atribui o retorno das funes
GravaDadosCheckIn e GravaDadosContrato ao campo dadosGravados, e verifica o state da
query. Se estiver como dsInsert atribui os parmetros de insert da procedure do banco de
dados e a executa. Se estiver como dsEdit, atribui os dados de edio, ao fim verifica se o
parmetro retorno e a varivel dadosGravados esto como true. Se estiver apresenta
mensagem de sucesso ao usurio, do contrario apresenta mensagem de erro.
procedure TunfLocacao.bmSalvarClick(Sender: TObject);
var
dadosGravados: Boolean;
begin
ValidaDados;
if GravaDadosCheckIn and GravaDadosContrato then
dadosGravados := True
else
dadosGravados := False;
if qryPrincipal.State = dsInsert then
begin
with spPrincipal do
begin
Parameters.ParamByName('@ACAO').Value
:= C_INSERIR;
Parameters.ParamByName('@TABELA').Value
:= 'MOVIMENTACOES';
Parameters.ParamByName('@CAMPOS_INSERT').Value := 'ID_VEICULO,
'+ 'TIPO_OPERACAO'+'ID_CLIENTE,'+'ID_SITUACAO,'+'ID_CONTRATO,+
'DATA_MOVIMENTACAO, '+ 'KM_ENTRADA,'+'KM_SAIDA,'+'VALOR,
'+'ID_CONTA_RECEBER, '+'LOCACAO_MANUTENCAO,';
Parameters.ParamByName('@VALORES_INSERT').Value :=
QuotedStr(qryPrincipalID_VEICULO.AsString)
+ ', ' +
QuotedStr(IntToStr(cbTipoOperacao.ItemIndex))
+ ', ' +
QuotedStr(qryPrincipalID_CLIENTE.AsString)
+ ', ' +
QuotedStr(qryPrincipalID_SITUACAO.AsString)
+ ', ' +
QuotedStr(qryPrincipalID_CONTRATO.AsString)
+ ', ' +
QuotedStr(qryPrincipalDATA_INICIAL_CONTRATO.AsString) + ', ' +
QuotedStr(qryPrincipalKM_ENTRADA.AsString)
+ ', ' +
QuotedStr(qryPrincipalKM_SAIDA.AsString)
+ ', ' +
QuotedStr(qryPrincipalVALOR.AsString)
+ ', ' +
QuotedStr(qryPrincipalID_CONTA_RECEBER.AsString)
+ ', ' +
QuotedStr(qryPrincipalLOCACAO_MANUTENCAO.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 )

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

do evento onClick do boto Buscar da

aba

tsConsulta

do

PageConrolPrincipal, que apresentado na Listagem 19, atribui valor s variveis idCampo

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

O cdigo do evento onClick do boto Formas de Pagamento, verifica se o objeto


CadContasReceber est criado. Se ele no estiver o cria e ento executa o mtodo showmodal
e ao fim libera o objeto criado da memria. O cdigo desse boto apresentado na Listagem
20.
procedure TunfLocacao.btnFormasPagtoClick(Sender: TObject);
begin
inherited;
if not Assigned(CadContasReceber) then
CadContasReceber := TunfContasReceber.Create(Self);
CadContasReceber.ShowModal;
FreeAndNil(CadContasReceber);
end;
Listagem 20 Cdigo do evento onClick no boto forma de pagamento da tela de Locao

O evento onChange do campo cbTipoOperacao (Listagem 21), verifica se o itemIndex


do campo cbTipoOperacao igual a 1 (entrada) e ento desabilita os campos
dbeKM_ENTRADA, dtDataDevolucao e edtDiasDiferenca, do contrrio habilita os mesmos.
procedure TunfLocacao.dbeID_CLIENTEKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
inherited;
if Key = VK_RETURN then
Perform(Wm_NextDlgCtl,0,0);
end;
Funo executada evento onkeydown de todos os campos da tela, para que o
boto enter funcione como o tab.
procedure TunfLocacao.cbTipoOperacaoChange(Sender: TObject);
begin
if cbTipoOperacao.ItemIndex = 1 then
begin
dbeKM_ENTRADA.Enabled
:= False;
dtDataDevolucao.Enabled := False;
edtDiasDiferenca.Enabled := False;
end
else
begin

71

dbeKM_ENTRADA.Enabled
:= True;
dtDataDevolucao.Enabled := True;
edtDiasDiferenca.Enabled := True;
end;
end;
Listagem 21 - Cdigo do evento onChange do campo cbTipoOperacao

A funo ExcluirCheckIn (Listagem 22) verifica se o state da qryPrincipal est em


dsBrowse e ento atribui os parmetros de excluso para a procedure do banco de dados, e
retorna o valor do parmetro Retorno.
function TunfLocacao.ExcluiCheckIn: Boolean;
begin
if qryPrincipal.State = dsBrowse then
begin
with spPrincipal do
begin
Parameters.ParamByName('@ACAO').Value
:= C_DELETAR;
Parameters.ParamByName('@TABELA').Value
:= 'CONTRATOS';
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 22 - Cdigo da funo ExcluirCheckIn da tela de Locao

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

A funo GravaDadosCheckIn (Listagem 24) verifica o state da query e se estiver


como dsInsert atribui os parmetros de insert para a procedure do banco de dados e a executa,

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 =

A funo GravaDadosContrato (Listagem 25) verifica o state da query e se estiver


como dsInsert atribui os parmetros de insert da procedure para o banco de dados e a executa,
se estiver como dsEdit, atribui os dados de edio. Ao fim verifica se o parmetro retorno esta
verdadeiro ento apresenta mensagem de sucesso ao usurio, do contrrio apresenta
mensagem de erro.
function TunfLocacao.GravaDadosContrato: Boolean;
begin
if qryPrincipal.State = dsInsert then
begin
with spPrincipal do
begin
Parameters.ParamByName('@ACAO').Value
:= C_INSERIR;
Parameters.ParamByName('@TABELA').Value
:= 'CONTRATOS';
Parameters.ParamByName('@CAMPOS_INSERT').Value :=
'DATA_INICIAL_CONTRATO, '+
'DATA_FINAL_CONTRATO,
'+
'DATA_DEVOLUCAO_CONTRATO';
Parameters.ParamByName('@VALORES_INSERT').Value :=
QuotedStr(qryPrincipalDATA_INICIAL_CONTRATO.AsString)
+ ', ' +
QuotedStr(qryPrincipalDATA_FINAL_CONTRATO.AsString)
+ ', ' +
QuotedStr(qryPrincipalDATA_DEVOLUCAO_CONTRATO.AsString);
ExecProc;
if Parameters.ParamByName('@RETORNO').Value then
Result := True
else

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 onDblClick do grid chama a procedure atribuiDadosEdit. O cdigo desse


evento est na Listagem 26.
procedure TunfLocacao.grdConsultaDblClick(Sender: TObject);
begin
AtribuiDadosEdit;
inherited;
end;
Listagem 26 Evento onDblClick do grid 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

O evento onChange do campo ID_VEICULO (Listagem 28) verifica se os campos


ID_VEICULO e NOME_MODELO_VEICULO da qryPrincipal esto iguais a zero e vazio

77

respectivamente, ento chama o clique do speedbutton sbVeiculos. Seno verifica se o campo


ID_VEICULO est igual a zero e o campo NOME_MODELO_VEICULO est diferente de
vazio, ento retirado o evento onChange do campo ID_VEICULO para que no entre em
um loop infinito. So limpadas as informaes dos campos ID_VEICULO e
NOME_MODELO_VEICULO e por fim devolvido o evento onChange do campo
ID_VEICULO, do contrrio chamado o onClick do boto sbVeiculoClick(nil) passando o
valor nil como sender.
procedure TunfLocacao.qryPrincipalID_VEICULOChange(Sender: TField);
begin
inherited;
if (qryPrincipalID_VEICULO.AsInteger = 0) and
(qryPrincipalNOME_MODELO_VEICULO.AsString = '') then
sbVeiculo.Click
else if (qryPrincipalID_VEICULO.AsInteger = 0) and
(qryPrincipalNOME_MODELO_VEICULO.AsString <> '') then
begin
try
qryPrincipalID_VEICULO.OnChange := nil;
qryPrincipalID_VEICULO.Clear;
qryPrincipalNOME_MODELO_VEICULO.Clear;
finally
qryPrincipalID_VEICULO.OnChange := qryPrincipalID_VEICULOChange;
end;
end
else
sbVeiculoClick(nil);
end;
Listagem 28 Evento onChange do campo Id_Veiculo da tela de Locao

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

4.4.2 Aplicao Web

A Figura 51 apresenta a organizao do projeto em PHP. O cdigo PHP foi


desenvolvido utilizando a IDE NetBeans. Nessa organizao do projeto possvel identificar
a organizao do projeto utilizando MVC por meio das pastas controller, model e view.
Outras pastas tambm foram criadas para organizar o projeto, como, por exemplo, para
armazenar os arquivos de configurao das pginas que esto em css e as imagens que so
armazenada em images.

80

Figura 51 Organizao do projeto PHP na IDE NetBeans

O cdigo da parte do controller da pgina de reserva, apresentado na Listagem 30,


verifica se o mtodo chamado pela pgina get ou post. Caso seja get selecionado o nome
do modelo do veculo escolhido para ser mostrado na pgina de Reserva. Se o mtodo
utilizado para chamar a pgina post, significa que foram enviados dados do formulrio de
reserva. E, assim, os dados enviados so armazenados em variveis para, de acordo com o
cadastro do Cliente, inserir um novo cliente ou utilizar o cliente j existente e inserir a reserva
do veculo.
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
$id_veiculo = anti_injection($_GET['id_veiculo']);
$conn = new db();
$conn->connect();
$resVeiculos = $conn->exec(selectVeiculo($id_veiculo));

81

$modelo_veiculo = mssql_result($resVeiculos, 0, 'NOME_MODELO_VEICULO');


} else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$id_veiculo = anti_injection($_POST['id_veiculo']);
$id_cliente = anti_injection($_POST['id_cliente']);
$nome
= strtoupper(anti_injection($_POST['nome']));
$cpf
= preg_replace("/[^0-9]/", "",
anti_injection($_POST['cpf']));
$email
= anti_injection($_POST['email']);
$telefone
= preg_replace("/[^0-9]/", "",
anti_injection($_POST['telefone']));
$conn = new db();
$conn->connect();
if (($id_cliente == '') && ($cpf != '')){
$id_cliente = $conn->execLastID(cadastraClienteSimplificado($cpf,
$nome, 0, $telefone, $email));
}
if (($id_cliente != '') && ($id_veiculo != '')){
$id_movimentacao = $conn->execLastID(cadastraReserva($id_veiculo,
$id_cliente));
}
}
Listagem 30 Cdigo do arquivo de controller da pgina de Reserva de Veculos.

O cdigo apresentado na Listagem 31 se refere ao controller da pgina de Contato que


define a configurao necessria para que o email de contato seja enviado ao proprietrio da
empresa. O comando $mail->Send() envia o email de acordo com as configuraes e
retorna True se foi enviado com sucesso.
// Setando o conteudo
$mail->IsHTML(true);
$mail->Subject = 'Contato pelo Site MT Rental';
$mail->Body
= "<p>Nome: $nome</p><p>Mensagem: $msm</p>";
$mail->AltBody = 'Conteudo sem HTML para editores que no suportam,
sim, existem alguns';
// Validando a autenticao
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Host
= "ssl://smtp.googlemail.com";
$mail->Port
= 465;
$mail->Username = 'thiagocr.utfpr@gmail.com';
$mail->Password = 't20c3r18';
//$mail->Username = 'bertan.marlon@gmail.com';
//$mail->Password = 'akroma666';
// Setando o endereo de recebimento
$mail->AddAddress('thiagocr.utfpr@gmail.com', 'Nome');
// Enviando o e-mail
if( $mail->Send() )
$enviado = 'Email enviado com sucesso!';
Listagem 31 Cdigo do arquivo de controller da pgina de Contato.

82

O arquivo controller da pgina que mostra os detalhes do veculo e esse est ou no


disponvel para reserva (Listagem 32) executa uma funo que permite utilizar classes de
outros arquivos. Essa funo require_once est no incio da listagem, logo em seguida
atribudo o valor varivel que armazena o id do veiculo. E caso o mtodo utilizado para
chamar a pgina seja get executado um comando para selecionar os dados do veculo e
armazenar em uma varivel do tipo array.
<?php
require_once (ARQ_SEGURANCA);
require_once (DIR_MODEL . 'Connection.class.php');
require_once (ARQ_SQL);
$id = anti_injection($_GET['id_veiculo']);
$conn = new db();
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
try {
$conn->connect();
$resVeiculos = $conn->exec(selectVeiculo($id));
} catch(Exception $e) {
print_r($e);
}
}
?>
Listagem 32 Cdigo do arquivo de controller da pgina de detalhes do veculo.

O trecho de cdigo apresentado na Listagem 33 executado sempre ao sair do campo


CPF ao efetuar a reserva do veculo na pgina de reserva de veculos. Ao sair do campo CPF
executada, via Ajax, com ajuda da biblioteca JQuery, a funo load() que responsvel por
chamar o cdigo apresentado nessa listagem sem alterar ou modificar a pgina de reserva. O
cdigo por sua vez recebe por parmetro via mtodo get o CPF informado na pgina de
reserva, faz uma busca pelo CPF no banco de dados e caso encontre o CPF retorna o nome,
telefone e e-mail do cliente preenchendo automaticamente os respectivos campos na pgina
de reserva de veculos.
<?php
include '../includes/config.php';
require_once (ARQ_SEGURANCA);
require_once (DIR_MODEL . 'Connection.class.php');
require_once (ARQ_SQL);
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
$cpf = preg_replace("/[^0-9]/", "", anti_injection($_GET['cpf']));
$conn = new db();

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.

O cdigo responsvel por gerar o mapa da localizao e traar a rota de determinado


ponto de partida at a locadora apresentado na Listagem 35. Esse o cdigo em JavaScript
utiliza a biblioteca JQuery e foi desenvolvido manualmente utilizando outro plugin
disponibilizado pelo Google Maps. Primeiramente so valoradas as variveis, em seguida, via
JQuery est o cdigo que responsvel por sempre que ler o documento (sempre que for

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.

A principal classe php situada na estrutura pertencente ao model, a classe db


apresentada na Listagem 36, responsvel por fazer a conexo com o banco de dados e
executar as querys (SQLs) que fazem a seleo, alterao, excluso e incluso dos dados no
banco de dados. Na classe construtora so atribudos valores s variveis de que so utilizadas
como parmetros da conexo ao banco de dados. Logo depois est uma funo pblica

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

$sql .= "INNER JOIN MARCAS_VEICULOS ON


(MARCAS_VEICULOS.ID_MARCA_VEICULO = MODELOS_VEICULOS.ID_MARCA_VEICULO) ";
if(($id_veiculo != null) && ($id_veiculo != '')){
$sql .= " WHERE IMAGENS_VEICULOS.ID_VEICULO = $id_veiculo";
}
$sql .= " ORDER BY IMAGENS_VEICULOS.ID_IMAGEM_VEICULO";
return $sql;
}
Listagem 37 Parte do cdigo PHP da classe SQL

O cdigo da Listagem 38 responsvel pela visualizao do site o cdigo HTML


montado atravs do cdigo PHP que responsvel por listar em tela os veculos retornados
pela SQL executada. Caso no seja retornado nenhum registro exibida atravs do <h1> a
informao que no h veculos cadastrados. Caso contrrio criptografada a imagem em
formato base64 para exibir as imagens do banco de dados.
<h1>Nossa Frota <span>&rsaquo;&rsaquo;</span>
<?=$tipo?></h1>
<?php if(mssql_num_rows($resVeiculos)> 0){
while ($row = mssql_fetch_array($resVeiculos)) {?>
<div class="product">
<a
href="veiculoInterno.php?id_veiculo=<?=$row['ID_VEICULO'];?>">
<?php echo '<img width="270"
alt="'.$row['NOME_IMAGEM'].'"
src="data:image/jpeg;base64,'.base64_encode($row['IMAGEM']).'" /><br/>';?>
<h5 style="margintop:8px"><?=$row['NOME_IMAGEM']?></h5>
</a>
</div>
<?php } ?>
<hr />
<?php } else{ ?>
<br /><br /><br /><br /><br />
<center>
<h1>N&atilde;o h&aacute; ve&iacute;
cadastrados!</h1>
</center>
<?php } ?>
Listagem 38 Parte do cdigo HTML da pgina Nossa Frota.

O cdigo JavaScript localizado na parte view da estrutura do site dentro do arquivo de


reserva.php est na Listagem 39. Esse cdigo responsvel pela atribuio de mscaras aos

88

campos, verificar se o CPF vlido, validar o formulrio com as informaes preenchidas e


atravs de Ajax pelo mtodo get validar a existncia do CPF no banco de dados da Locadora.
<script type="text/javascript">
$("#telefone").mask("(99)9999-9999");
$("#cpf").mask("999.999.999-99");
$("#fmReserva").validate({rules:{'cpf':{cpf : 'both'}}});
$("#cpf").bind('blur', function() {
$.get('../controller/validaClienteController.php?cpf='+$("#cpf").val(),
function(result) {
if (result != '0'){
var arr = result.split("&&");
$('#id_cliente').val(arr[0]);
$('#nome').val(arr[1]);
$('#telefone').val(arr[2]);
$('#email').val(arr[3]);
}else{
$('#id_cliente').val('');
$('#nome').val('');
$('#telefone').val('');
$('#email').val('');
}
});
});
</script>
Listagem 39 Parte do cdigo Javascript da pgina reserva.php

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:

APACHE. Apache friends. Disponvel em: <http://www.apachefriends.org/en/index.html>.


Acesso em 21 out. 2012
ASTAH.
Astah
community.
Disponvel
em
<http://astah.changevision.com/en/product/astah-community.html>. Acesso em: 08 ago. 2012.
BATISTA, Emerson de Oliveira. Sistema de informao: o uso consciente da tecnologia
para o gerenciamento. So Paulo: Saraiva, 2004.
BAZZOTTI, Cristiane, GARCIA, Elias A importncia do sistema de informao gerencial
para
tomada
de
decises.
Disponvel
em:
<http://www.unioeste.br/campi/cascavel/ccsa/VISeminario/Artigos%20apresentados%20em%
20Comunica%E7%F5es/ART%203%20%20A%20import%E2ncia%20do%20sistema%20de%20informa%E7%E3o%20gerencial%2
0para%20tomada%20de%20decis%F5es.pdf>. Aceso em 19 de jun. 2012.
CANTU, Marco. Dominando o Delphi 7 A Bblia. So Paulo: Makron Books, 2003.
EICHSTAEDT, John F., DEGENHARDT, Toni dio, Sistemas de informaes gerenciais.
Disponvel
em
http://www.ceavi.udesc.br/arquivos/id_submenu/387/john_frank_eichstaedt_toni_edio_degen
hardt.pdf. Aceso em 20 jun. 2012.
LAUDON, Kenneth C.; LAUDON, Jane Price. Sistemas de informao gerenciais:
administrando a empresa digital. 5. ed. So Paulo, SP: Pearson Prentice Hall, 2004.
MICROSOFT. Use SQL server management studio, 2012. Disponvel em: <
http://msdn.microsoft.com/en-us/library/ms174173.aspx >. Acesso em: 09 jul. 2012.
MIKKONEN, Tommi; TAIVALSAARI, Antero. Web applications spaghetti code for the
21st century. Sixth International Conference on Software Engineering Research,
Management and Applications, 2008, p. 319-328.
MIRANDA, Ozineide Alves. A importncia do sistema de informao gerencial na
empresa
Sol
Distribruidora
de
Combustveis
Ltda.
Disponvel
em
http://www.profsergio.net/artigos/artigoozineidealves.pdf. Acesso em 20 jun.2012
NETBEANS. NetBeans IDE. Disponvel em: <http://www.netbeans.org>. Acesso em: 20 jul.
2012
NOTEPAD. Notepad++. Disponvel em: <http://notepad-plus-plus.org/>. Acesso em: 23 set.
2012.
OLIVEIRA, Djalma de Pinho Rebouas de. Sistemas de informaes gerenciais. 9 ed. So
Paulo: Atlas 2004.

91

OLIVEIRA, Figueiredo de Oliveira. Sistemas de informao: um enfoque gerencial


inserido no contexto empresarial e tecnolgico. 3 ed. So Paulo: rica 2002.
PEREIRA, Maria Jos Lara de Brets; FONSECA, Joo Gabriel Marques. Faces da deciso:
as mudanas de paradigmas e o poder da deciso. So Paulo: Makron Books, 1997.
PHP. Linguagem PHP. Disponvel em: <http://www.php.net>. Acesso em: 20 jul. 2012.
PRESSMAN, Roger. Engenharia de software. 5 ed. Rio de Janeiro: McGraw-Hill, 2002
REZENDE, Denis Alcides; ABREU, Aline Frana de. Tecnologia da informao aplicada a
sistemas de informao empresariais: o papel estratgico da informao e dos sistemas de
informao nas empresas. So Paulo: Atlas, 2000.
STAIR, Ralph M. e REYNOLDS George W. Princpios de sistemas de informaes: uma
abordagem gerencial. 4a ed. So Paulo: LTC, 2002.
STAIR, Ralph M. Princpios de sistemas de informao. Rio de Janeiro: LTC, 1998.
XAMPP. XAMPP. Disponvel em: <http://www.apachefriends.org/en/xampp.html>. Acesso
em: 15 out. 2012.

Potrebbero piacerti anche