Sei sulla pagina 1di 46

SISTEMA DE ENSINO PRESENCIAL CONECTADO

CURSO SUPERIOR DE TECNOLOGIA EM ANLISE E


DESENVOLVIMENTO DE SISTEMAS
MARCILENE RIBEIRO ALVES

SISTEMA DE MAPEAMENTO E LOCALIZAO DE


VECULOS EM ESTACIONAMENTO

Sete Lagoas
2012

MARCILENE RIBEIRO ALVES

SISTEMA DE MAPEAMENTO E LOCALIZAO DE


VECULOS EM ESTACIONAMENTO

Projeto de Estgio apresentado UNOPAR Universidade Norte do Paran, como requisito parcial
para a obteno do ttulo de Tecnologia em Anlise e
Desenvolvimento de Sistemas.
Tutor Orientador: Renato Moreira
Professor Supervisor: Adriane Aparecida Loper, Marco
Ikuro Hisatomi e Merris Mozer.

Sete Lagoas
2012

SUMRIO
1

INTRODUO ..................................................................................................... 3

JUSTIFICATIVA ................................................................................................... 4

OBJETIVOS ......................................................................................................... 5

3.1

OBJETIVO GERAL ........................................................................................... 5

3.2

OBJETIVOS ESPECFICOS ............................................................................ 5

REFERENCIAL TERICO ................................................................................... 6

4.1

CONCEITOS BSICOS ................................................................................... 6

4.1.1

ADMINISTRAO ........................................................................................ 6

4.1.2

INFORMAO .............................................................................................. 6

4.1.3

DADOS ......................................................................................................... 6

4.1.4

INFORMAO .............................................................................................. 6

4.1.5

CONHECIMENTO......................................................................................... 7

4.2

COMUNICAO .............................................................................................. 7

4.3

PLANEJAMENTO ESTRATGICO DA INFORMAO ................................... 7

4.3.1

ALINHAMENTO ESTRATGICO DE NEGCIOS E TECNOLOGIA DA

INFORMAO ALCANADO QUANDO: ................................................................ 7


5

METODOLOGIA PROPOSTA .............................................................................. 9

CARACTERIZAO DA ORGANIZAO EM ESTUDO................................... 11

TECNOLOGIA.................................................................................................... 13

7.1

LINGUAGEM DE PROGRAMAO............................................................... 13

7.1.1

SINTAXE..................................................................................................... 17

7.1.2

CONTROLE DE FLUXO ............................................................................. 18

7.1.3

OPERADORES LGICOS ......................................................................... 19

7.1.4

LAOS ........................................................................................................ 19

7.1.5

FOR ............................................................................................................ 20

7.1.6

WHILE......................................................................................................... 21

7.2

BANCO DE DADOS ....................................................................................... 21

ENGENHARIA DE REQUISITOS ...................................................................... 23

LISTA DE CASO DE USO ................................................................................. 24

9.1

DIAGRAMA DE CASO DE USO ..................................................................... 24

10

DIAGRAMA DE CLASSES ............................................................................. 25

11

DIAGRAMA DE SEQUNCIA ........................................................................ 26

12

DIAGRAMA DE ATIVIDADES ........................................................................ 27

13

DIAGRAMA DE ENTIDADE E RELACIONAMENTO (DER) ........................... 28

14

PROTOTIPAO DAS TELAS DO SISTEMA ............................................... 29

14.1

TELA DE LOGIN ............................................................................................ 29

14.2

TELA DE CADASTRO DE COORDENADAS ................................................. 30

14.3

TELA DE MAPA E LOCALIZAO DO VECULO ......................................... 31

15

CDIGO FONTE ............................................................................................ 32

16

CRONOGRAMA ............................................................................................. 42

17

CONCLUSO ................................................................................................. 43

REFERNCIAS ......................................................................................................... 44

1 INTRODUO

Este trabalho tem a proposta de analisar e especificar uma soluo


para uma montadora de veculos, onde os carros so estacionados no ptio sem
qualquer tipo de gerenciamento. Por se tratar do desenvolvimento de uma soluo
para mapeamento e localizao de veculos no ptio de uma montadora, o mesmo
ser realizado em uma empresa de desenvolvimento de softwares que chamou a
ateno pela existncia constante de idias inovadoras. Sendo assim, a
oportunidade se torna de grande valia, uma vez que o interesse pela rea de
desenvolvimento de softwares notrio.

2 JUSTIFICATIVA

No decorrer dos anos a indstria automobilstica vem sofrendo


diversas transformaes o que deixa o mercado cada vez mais competitivo. Acerca
disso so utilizadas diversas formas de trazer a qualidade, como metodologias e
ferramentas que acirram a competitividade das empresas.
Existe hoje a constante preocupao em aumentar a produtividade,
flexibilidade de operaes e reduzir os custos.

Durante o estudo de caso, foi

percebido que grande parte dos problemas foram gerados pelo fluxo de informao
que ineficiente dentro da prpria indstria.
Neste contexto o trabalho ter grande valor para melhoria do fluxo
de informaes, j que servir para facilitar o trabalho das pessoas que esto
responsveis pelo gerenciamento dos automveis que esto estacionados no ptio,
melhorando a produtividade, deixando a empresa mais competitiva e ter tambm
grande valia para o aprendizado no s na parte de desenvolvimento de sistemas,
como tambm na parte de gerenciamento e fluxo de informaes.

3 OBJETIVOS

3.1 OBJETIVO GERAL


O objetivo geral ser desenvolver um sistema que realize o
mapeamento e localizao de veculos em um ptio de uma montadora.

3.2 OBJETIVOS ESPECFICOS


O sistema ir realizar a localizao do veculo no ptio da
montadora, existir um cadastro onde o usurio informar o nmero do chassi e as
coordenadas do veculo, a partir dessas informaes o sistema ir gerar um mapa
com a localizao atual do mesmo.
Quando um veculo sair do ptio dever ser lanada sua retirada
para que seja gerado um novo mapeamento. Existir tambm o recurso de
relatrios, onde poder ser impressa toda a parte de movimentao de entrada e
sada de automveis do ptio.
Com todo esse gerenciamento haver um maior controle da
movimentao da produo, agilizar o processo de localizao do automvel
solicitado, melhorar o fluxo de informao e consequentemente tornar a empresa
mais competitiva.

4 REFERENCIAL TERICO

A Administrao da Informao um dos fatores mais importantes


de uma empresa, a administrao baseada na tomada de decises com base em
informaes das que se tem em poder, e para que uma empresa se torne
competitiva ela deve sempre ter acesso s informaes precisas, para se manter no
mercado atual. E o profissional precisa estar atento para o surgimento de novas
tecnologias.
4.1 CONCEITOS BSICOS

4.1.1 Administrao
Administrao a tomada de deciso sobre recursos disponveis,
trabalhando com e atravs de pessoas para atingir objetivos, o gerenciamento de
uma organizao, levando em conta as informaes fornecidas por outros
profissionais e tambm pensando previamente as conseqncias de suas decises.
tambm a cincia social que estuda e sistematiza as prticas usadas para
administrar.
4.1.2 informao

4.1.3 Dados
Dados so observaes documentadas ou resultados da medio. A
disponibilidade dos dados oferece oportunidades para a obteno de informaes.
Os dados podem ser obtidos pela percepo atravs dos sentidos (por exemplo,
observao) ou pela execuo de um processo de medio.
4.1.4 Informao
Informao o resultado do processamento, manipulao e

organizao de dados de tal forma que represente uma modificao (quantitativa ou


qualitativa) no conhecimento do sistema (pessoa, animal ou mquina) que a recebe.
4.1.5 Conhecimento
Por sua vez, conhecimento o que se adquire do estudo/anlise da
informao, da comparao entre informaes. Toda e qualquer informao
relevante para a empresa deve ser captada e analisada para que bem utilizada
possa influir positivamente no processo decisrio.

4.2 COMUNICAO
A comunicao ocorre quando uma informao transmitida a
algum, sendo ento compartilhada tambm por essa pessoa. Para que haja uma
comunicao necessrio que o destinatrio da informao a receba e a
compreenda

4.3 PLANEJAMENTO ESTRATGICO DA INFORMAO

4.3.1 Alinhamento estratgico de negcios e tecnologia da informao alcanado


quando:
O alinhamento entre negcio e TI alcanado quando um conjunto
de estratgias de TI (sistemas, objetivos, obrigaes e estratgias) derivado do
conjunto estratgico organizacional (misso, objetivo e estratgias), isto ; quando
ambos executam o planejamento de maneira lgica.
O alinhamento estratgico corresponde adequao e integrao
funcional entre ambiente externo (mercados) e interno (estrutura administrativa e
recursos financeiros, tecnolgicos e humanos) para desenvolver as competncias e
maximizar o desempenho organizacional (Henderson e Venkatraman, 1993); e (4) o
alinhamento entre PEN-PETI a adequao da orientao estratgica do negcio
com a de TI (Chan et al., 1997).

O alinhamento pode ser encontrado nas organizaes em diversos


estgios ou nveis, cabendo destacar dois naquelas organizaes que almejam
desenvolv-lo. O primeiro nvel o de integrao operacional, para o qual h a
necessidade de planos operacionais de negcio e de TI. Para a sua
operacionalizao, o PETI formulado seguindo as definies do PEN e, em seu
prximo estgio de evoluo, ambos os planos so formulados simultaneamente.
Este nvel caracterizado pela especificao de requisitos e funes dos sistemas
de informao (SI) e do negcio em nvel operacional, abrangendo estrutura e
processos organizacionais que usam a TI como suporte (Henderson e Venkatraman,
1993; Chan, 1999). Vale destacar que, os sistemas de informao integrados (SII)
foram considerados os promotores do alinhamento neste nvel, uma vez que esto
baseados na integrao dos negcios pelos dados, pelos processos, por tarefas
realizadas pelas pessoas e pelo redesenho organizacional (estrutura administrativa
combinada com a tecnolgica), permitindo alterar as regras do negcio.(Ward e
Griffiths, 1996).

5 METODOLOGIA PROPOSTA
A metodologia proposta para o desenvolvimento do software ser o
Espiral. Este modelo foi originalmente proposto por Boehm (1988). Uma maneira
simplista de analisar este modelo consider-lo como um modelo cascata onde
cada fase precedida por uma anlise de risco e sua execuo feita
evolucionariamente

(ou

incrementalmente).

A dimenso radial representa o custo acumulado atualizado e a dimenso angular


representa o progresso atravs da espiral. Cada setor da espiral corresponde a uma
tarefa (fase) do desenvolvimento. Um ciclo se inicia com a "Determinao de
objetivos, alternativas e restries "(primeira tarefa) onde ocorre o comprometimento
dos envolvidos e o estabelecimento de uma estratgia para alcanar os objetivos.
Na segunda tarefa "Avaliao de alternativas, identificao e soluo de riscos",
executa-se uma anlise de risco. Prototipao uma boa ferramenta para tratar
riscos. Se o risco for considerado inaceitvel, pode parar o projeto. Na terceira tarefa
ocorre o desenvolvimento do produto. Neste quadrante pode-se considerar o modelo
cascata. Na quarta tarefa o produto avaliado e se prepara para iniciar um novo
ciclo.

Modelo Espiral Completo

10

A manuteno de um software utilizando este modelo de ciclo de


vida

tratado

da

mesma

forma

que

desenvolvimento.

Uma representao simplificada deste modelo esta ilustrada na Figura abaixo:

Modelo simplificado de Boehm


A razo para se colocar em discusso este modelo est no fato dele chamar a
ateno para vrios pontos importantssimos no desenvolvimento de software.
Variaes do modelo espiral consideram entre trs e seis tarefas ou setores da
espiral. Um exemplo so as regies:
-

Comunicao com o cliente;

Planejamento;

Anlise de risco;

Engenharia;

Construo e liberao; e

Avaliao do cliente.

11

6 CARACTERIZAO DA ORGANIZAO EM ESTUDO

Nome da empresa: Data Access Informtica Ltda.


Endereo Completo: Rua So Paulo, Boa Vista, CEP 35700-094 Sete Lagoas-MG

Web site: www.dataaccess.inf.br


Nome e cargo da chefia direta: Anselmo Enzo Ichihara, Gerente
Telefone: (31) 3771-8273
Ramo de Atividade: Informtica Software
Nmero de empregados: Trs
Categoria dos profissionais que atuam na empresa: Analistas
Produtos e servios desenvolvidos pela empresa: Empresa de software house
especializada em aplicativos de automao comercial, com ampla experincia no
mercado. Homologada pela Receita Estadual do Estado de Minas Gerais.

Histrico da empresa: A Data Access Informtica Ltda uma empresa de


desenvolvimento de software, fundada por Anselmo Enzo Ichihara e Walter Soares
Santana, no ano de 2000. Vem atuando em desenvolvimento de programas
especficos em reas pblicas (IPTU/ISS) e tambm em reas privadas em vrios
segmentos: fbrica de mveis, posto de combustveis, hotis, agncia de veculos,
minerao e carvoaria. A empresa contribui para o desenvolvimento do setor de
informtica, agregando valor aos negcios de nossos clientes, atravs da aplicao
das solues mais adequadas s suas necessidades e sua estratgia de atuao,
respeitando os princpios ticos e nveis de qualidade diferenciados, criando assim
um relacionamento de longo prazo.

12

Organograma da empresa

Diretoria e
Administrao

Desenvolvimento

Relacionamento
com o Cliente

Suporte e
Implantao

13

7 TECNOLOGIA

7.1 LINGUAGEM DE PROGRAMAO


A necessidade de uma linguagem de fcil utilizao e que funcione
nas plataformas Windows e Linux levou a escolha da linguagem Python. Agora
explicarei melhor o porqu da escolha desta linguagem.
Python uma linguagem dinmica, mas as linguagens dinmicas
eram vistas no passado apenas como linguagens script, usadas para automatizar
pequenas tarefas, porm, com o passar do tempo, elas cresceram, amadureceram e
conquistaram seu espao no mercado, a ponto de chamar a ateno dos grandes
fornecedores de tecnologia.
Vrios fatores contriburam para esta mudana, tais como a internet,
o software de cdigo aberto e as metodologias geis de desenvolvimento.
A internet viabilizou o compartilhamento de informaes de uma
forma sem precedentes na histria, que tornou possvel o crescimento do software
de cdigo aberto. As linguagens dinmicas geralmente so cdigo aberto e
compartilham as mesmas funcionalidades e em alguns casos, os mesmos objetivos.
A produtividade e expressividade das linguagens dinmicas se
encaixam

perfeitamente

com

as

metodologias

geis,

que

nasceram

do

desenvolvimento de software de cdigo aberto e defendem um enfoque mais


pragmtico no processo de criao e manuteno de software do que as
metodologias mais tradicionais. Entre as linguagens dinmicas, o Python se destaca
como uma das mais populares e poderosas. Existe uma comunidade movimentada
de usurios da linguagem no mundo, o que se reflete em listas de discusso ativas e
muitas ferramentas disponveis em cdigo aberto.
Aprender uma nova linguagem de programao significa aprender a
pensar de outra forma. E aprender uma linguagem dinmica representa uma
mudana de paradigma ainda mais forte para aquelas pessoas que passaram anos
desenvolvendo em linguagens estticas.
Python uma linguagem de altssimo nvel (em ingls, Very High
Level Language) orientada a objetos, de tipagem dinmica e forte, interpretada e
interativa. O Python possui uma sintaxe clara e concisa, que favorece a legibilidade

14

do cdigo fonte, tornando a linguagem mais produtiva.


A linguagem inclui diversas estruturas de alto nvel (listas, tuplas,
dicionrios, data / hora, complexos e outras) e uma vasta coleo de mdulos
prontos para uso, alm de frameworks de terceiros que podem ser adicionados.
Tambm possui recursos encontrados em outras linguagens modernas, tais como:
geradores,

introspeco,

persistncia,

metaclasses

unidades

de

teste.

Multiparadigma, a linguagem suporta programao modular e funcional, alm da


orientao a objetos. Mesmo os tipos bsicos no Python so objetos.
A linguagem interpretada atravs de bytecode pela mquina virtual
Python, tornando o cdigo portvel. Com isso possvel compilar aplicaes em
uma plataforma e rodar em outras ou executar direto do cdigo fonte.
Python um software de cdigo aberto (com licena compatvel com
a General Public License (GPL), porm menos restritiva, permitindo que o Python
seja incorporados em produtos proprietrios) e a especificao da linguagem
mantida pela Python Software Foundation2 (PSF).
Python muito utilizado como linguagem script em vrios softwares,
permitindo automatizar tarefas e adicionar novas funcionalidades, entre eles:
BrOffice.org, PostgreSQL, Blender e GIMP. Tambm possvel integrar o Python a
outras linguagens, como a Linguagem C. Em termos gerais, o Python apresenta
muitas similaridades com outras linguagens dinmicas, como Perl e Ruby.
Python foi criada em 1990 por Guido van Rossum, no Instituto
Nacional de Pesquisa para Matemtica e Cincia da Computao da Holanda (CWI)
e tinha como foco original usurios como fsicos e engenheiros. O Python foi
concebido a partir de outra linguagem existente na poca, chamada ABC.
A implementao oficial do Python mantida pela PSF e escrita em
C, e por isso tambm conhecida como CPython.
Para Windows, basta executar o instalador. Para outras plataformas,
geralmente o Python j faz parte do sistema, porm em alguns casos pode ser
necessrio compilar e instalar a partir dos arquivos fonte. Existem tambm
implementaes de Python para .NET (IronPython) e JVM (Jython).
Python utiliza tipagem dinmica, o que significa que o tipo de uma
varivel inferido pelo interpretador em tempo de execuo (isto conhecido como
Duck Typing). No momento em que uma varivel criada atravs de atribuio, o
interpretador define um tipo para a varivel, com as operaes que podem ser

15

aplicadas. O Python tem tipagem forte, ou seja, ele verifica se as operaes so


vlidas e no faz coeres automticas entre tipos incompatveis 3. Para realizar a
operao entre tipos no compatveis, necessrio converter explicitamente o tipo
da varivel ou variveis antes da operao.
O cdigo fonte traduzido pelo interpretador para o formato
bytecode, que multiplataforma e pode ser executado e distribudo sem fonte
original. Por padro, o interpretador compila os fontes e armazena o bytecode em
disco, para que a prxima vez que o executar, no precise compilar novamente o
programa, reduzindo o tempo de carga na execuo. Se os fontes forem alterados, o
interpretador se encarregar de regerar o bytecode automaticamente, mesmo
utilizando o shell interativo. Quando um programa ou um mdulo evocado, o
interpretador realiza a anlise do cdigo, converte para smbolos, compila (se no
houver bytecode atualizado em disco) e executa na mquina virtual Python.
O bytecode armazenado em arquivos com extenso .pyc
(bytecode normal) ou .pyo (bytecode otimizado). O bytecode tambm pode ser
empacotado junto com o interpretador em um executvel, para facilitar a distribuio
da aplicao. O interpretador Python pode ser usado de forma interativa, na qual as
linhas de cdigo so digitadas em um prompt (linha de comando) semelhante ao
shell do sistema operacional. O modo interativo uma caracterstica diferencial da
linguagem, pois possvel testar e modificar o cdigo de um programa antes da
incluso do cdigo nos programas, por exemplo. Os arquivos fonte normalmente
so identificados pela extenso .py e podem ser executados diretamente pelo
interpretador. Existem muitas ferramentas de desenvolvimento para Python, como
IDEs, editores e shells (que aproveitam da capacidade interativa do Python).
Integrated Development Environments (IDEs) so pacotes de software integram
vrias ferramentas de desenvolvimento em um ambiente integrado, com o objetivo
de aumentar a produtividade do desenvolvedor. Entre as IDEs que suportam Python,
encontram-se:
-

SPE (Stani's Python Editor).

Eric.

Open Komodo.

PyDev (plugin para a IDE Eclipse).

Existem tambm editores de texto especializados em cdigo de


programao, que possuem funcionalidades como colorizao de sintaxe,

16

exportao para outros formatos e converso de codificao de texto.


Esses editores suportam diversas linguagens de programao,
dentre elas o Python:

SciTE.

Notepad++.

Shells so ambientes interativos para execuo de comandos, muito


teis para testar pequenas pores de cdigo e para atividades como data crunching
(extrair informaes de interessa de massas de dados ou traduzir dados de um
formato para outro). Alm do prprio Shell padro do Python, existem os outros
disponveis:

PyCrust (grfico).

Ipython (texto).

Empacotadores so utilitrios que empacotam o bytecode com o


interpretador e outras dependncias, em um ou mais executveis e arquivos
compactados, permitindo que o aplicativo rode em mquinas sem Python instalado.
Entre empacotadores feitos para Python, esto disponveis:
-

Py2exe (apenas para Windows).


cx_Freeze (portvel).

Frameworks so colees de componentes de software (bibliotecas,


utilitrios e outros) que foram projetados para serem utilizados por outros sistemas.
Alguns frameworks disponveis mais conhecidos:

Web: Django, TurboGears e Zope.

Interface grfica: wxPython, PyGTK e PyQT.

Processamento cientifico: NumPy.

Processamento de imagens: PIL.

2D: Matplotlib.

3D: Visual Python, PyOpenGL e Python Ogre.

Mapeamento objeto-relacional: SQLAlchemy e SQLObject.

O nome Python foi tirado por Guido van Rossum do programa da TV


britnica Monty Python Flying Circus, e existem vrias referncias na documentao
da linguagem ao programa, como, por exemplo, o repositrio de pacotes oficial do
Python se chamava Cheese Shop, que era o nome de um dos quadros do programa.
Atualmente, o nome do repositrio Python Package Index5 (PYPI).
A comunidade de usurios de Python criou algumas expresses

17

para se referir aos assuntos relacionados linguagem. Neste jargo, o termo


Pythonic usado para indicar que algo compatvel com as premissas de projeto do
Python, e Unpythonic significa o oposto. J o usurio da linguagem chamado de
Pythonist. As metas do projeto foram resumidas por Tim Peters em um texto
chamado Zen of Python, que est disponvel no prprio Python.
7.1.1 Sintaxe
Um programa feito em Python constitudo de linhas, que podem
continuar nas linhas seguintes, pelo uso do caractere de barra invertida (\) ao final
da linha ou parnteses, colchetes ou chaves, em expresses que utilizam tais
caracteres. O caractere # marca o inicio de comentrio. Qualquer texto depois do #
ser ignorado at o fim da linha , com exceo dos comentrios funcionais.
Comentrios funcionais geralmente so usados para:
-

alterar a codificao do arquivo fonte do programa


acrescentando um comentrio com o texto #-*- coding:
<encoding> -*#- no inicio do arquivo, aonde <encoding> a
codificao do arquivo (geralmente latin1 ou utf-8). Alterar a
codificao necessrio para suportar caracteres que no
fazem parte da linguagem inglesa, no cdigo fonte do
programa.

definir o interpretador que ser utilizado para rodar o


programa em sistemas UNIX, atravs de um comentrio
comeando com #! no inicio do arquivo, que indica o
caminho para o interpretador (geralmente a linha de
comentrio ser algo como #!/usr/bin/env python).

Exemplo de comentrios funcionais:


#!/usr/bin/env python
# -*- coding: latin1 -*# Uma linha de cdigo que mostra o resultado de 7 vezes 3
print 7 * 3
Exemplos de linhas quebradas:
# Uma linha quebrada por contra-barra
a=7*3+\
5/2
# Uma lista (quebrada por vrgula)
b = ['a', 'b', 'c', 'd', 'e']
# Uma chamada de funo (quebrada por vrgula)

18
c = range(1,11)
# imprime todos na tela
print a, b, c

O comando print coloca espaos entre as expresses que forem


recebidas como parmetro e um caractere de nova linha no final, a no ser que ele
receba uma vrgula no fim da lista parmetros.
O Python uma linguagem orientada a objeto, sendo assim as
variveis atributos (dados) e mtodos (rotinas associadas ao objeto). Tanto os
atributos quanto os mtodos so acessados usando ponto (.), sendo que os
mtodos devem ser sempre seguidos de parnteses.
7.1.2 Controle de fluxo
muito comum em um programa que certos conjuntos de instrues
sejam executados deforma condicional, em casos como validar entradas de dados,
por exemplo. Sintaxe:
if <condio>:
<bloco de cdigo>
elif <condio>:
<bloco de cdigo>
elif <condio>:
<bloco de cdigo>
else:
<bloco de cdigo>

Aonde:
-

<condio>: sentena que possa ser avaliada como


verdadeira ou falsa.

<bloco de cdigo>: seqncia de linhas de comando.

As clausulas elif e else so opcionais e podem existir vrios


elifs para o mesmo if.

Parnteses s so necessrios para evitar ambigidades.

Exemplo:
temp = int(raw_input('Entre com a temperatura: '))
if temp < 0:
print 'Congelando...'
elif 0 <= temp <= 20:
print 'Frio'
elif 21 <= temp <= 25:
print 'Normal'

19
elif 26 <= temp <= 35:
print 'Quente'
else:
print 'Muito quente!'

Se o bloco de cdigo for composto de apenas uma linha, ele pode


ser escrito aps os dois pontos:
if temp < 0: print 'Congelando...'

A partir da verso 2.5, o Python suporta a expresso:


<varivel> = <valor 1> if <condio> else <valor 2>

Aonde <varivel> receber <valor 1> se <condio> for verdadeira e <valor 2> caso
contrrio.
7.1.3 Operadores lgicos
Os operadores lgicos so: and, or, not, is e in.
-

and: retorna verdadeiro se e somente se receber duas


expresses que forem verdadeiras.

or: retorna falso se e somente se receber duas expresses


que forem falsas.

not: retorna falso se receber uma expresso verdadeira e


vice-versa.

is: retorna verdadeiro se receber duas referncias ao mesmo


objeto e falso em caso contrrio.

in: retorna verdadeiro se receber um item e uma lista e o


item ocorrer uma ou mais vezes na lista e falso em caso
contrrio.

Com operadores lgicos possvel construir condies mais


complexas para controlar desvios condicionais e laos.
7.1.4 Laos
Laos so estruturas de repetio, geralmente usados para
processar colees de dados, tais como linhas de um arquivo ou registros de um
banco de dados, que precisam ser processados por um mesmo bloco de cdigo.

20

7.1.5 For
a estrutura de repetio mais usada no Python. til para percorrer
seqncias ou processar iteradores.
A instruo for aceita no s seqncias estticas, mas tambm
seqncias geradas por iteradores. Iterador uma estrutura que permite iteraes,
ou seja, acesso aos itens de uma coleo de elementos, de forma seqencial.
Durante a execuo de um lao for, a referncia aponta para um
elemento da seqncia. A cada iterao, a referncia atualizada, para que o bloco
de cdigo do for processe o elemento correspondente.
A clusula break interrompe o lao e continue passa para a prxima
iterao. O cdigo dentro do else executado ao final do lao, a no ser que o lao
tenha sido interrompido por break.
Muito til em laos com a instruo for, a funo range(m, n, p)
retorna uma lista de inteiros, comeando em m e menores que n, em passos de
comprimento p, que podem ser usados como seqncia para o lao.
Sintaxe:
for <referncia> in <sequncia>:
<bloco de cdigo>
continue
break
else:
<bloco de cdigo>
Exemplo:
# Soma de 0 a 99
s=0
for x in range(1, 100):
s=s+x
print s
O resultado 4950.

21

7.1.6 While
Executa um bloco de cdigo atendendo a uma condio.
Sintaxe:
while <condio>:
<bloco de cdigo>
continue
break
else:
<bloco de cdigo>

O bloco de cdigo dentro do lao while repetido enquanto a


condio do lao estiver sendo avaliada como verdadeira.

Exemplo:
# Soma de 0 a 99
s=0
x=1
while x < 100:
s=s+x
x=x+1
print s

O lao while adequado quando no h como determinar quantas


iteraes vo ocorrer e no h uma seqncia a seguir.
7.2 BANCO DE DADOS
O Banco de Dados escolhido para a implementao foi o MySQL
que um banco de dados completo, robusto e extremamente rpido, com todas as
caractersticas existentes nos principais bancos de dados disponveis no mercado.
Uma de suas vantagens so suas licenas para uso gratuito, tanto para fins
estudantis como para realizao de negcios, possibilitando que empresas o utilizem
livremente. MySQL, o mais popular sistema de gerenciamento de banco de dados
SQL Open Source, desenvolvido, distribudo e tem suporte da MySQL AB. A
MySQL AB uma empresa comercial, fundada pelos desenvolvedores do MySQL,
cujos negcios fornecer servios relacionados ao sistema de gerenciamento de

22

banco de dados . Ele um sistema de gerenciamento de bancos de dados.


Um banco de dados uma coleo de dados estruturados. Ele pode
ser qualquer coisa desde uma simples lista de compras a uma galeria de imagens ou
a grande quantidade de informao da sua rede coorporativa. Para adicionar,
acessar, e processar dados armazenados em um banco de dados de um
computador, voc necessita de um sistema de gerenciamento de bancos de dados
como o Servidor MySQL. Como os computadores so muito bons em lidar com
grandes quantidades de dados, o gerenciamento de bancos de dados funciona
como a engrenagem central na computao, seja como utilitrios independentes
ou como partes de outras aplicaes Tambm um banco de dados relacional.
Um banco de dados relacional armazena dados em tabelas
separadas em vez de colocar todos os dados um s local. Isso proporciona
velocidade e flexibilidade. A parte SQL do MySQL atenda pela Structured Query
Language -Linguagem Estrutural de Consultas. SQL linguagem padro mais
comum usada para acessar banco de dados e definida pelo Padro ANSI/ISO
SQL. (O padro SQL est vem evoluindo desde 1986 e existem diversas verses.
Neste manual, SQL-92 se refere ao padro liberado em 1992, SQL-99 se refere
ao padro liberado em 1999, e SQL:2003 se refere a verso do que esperamos
que seja liberado no meio de 2003. Ns usamos o termo o padro SQL indicando a
verso atual do Padro SQL em qualquer momento). O MySQL um software Open
Source. Open Source significa que possvel para qualquer um usar e modificar o
programa. Qualquer pessoa pode fazer download do MySQL pela Internet e us-lo
sem pagar nada. Se voc quiser, voc pode estudar o cdigo fonte e alter-lo para
adequ-lo as suas necessidades. O MySQL usa a GPL (GNU General Public
License - Licena Pblica Geral GNU) http://www.fsf.org/licenses, para definir o que
voc pode e no pode fazer com o software em diferentes situaes.
Resumindo o MySQL se tornou o mais popular banco de dados open
source do mundo porque possui consistncia, alta performance, confiabilidade e
fcil de usar. Atualmente usado em mais de 6 milhes de instalaes, que vo
desde instalaes em grandes corporaes a especficas aplicaes embarcadas.
Alm disso, o MySQL se tornou a escolha de uma nova gerao de
aplicaes, que utilizam o modelo LAMP ( Linux, Apache, MySQL, PHP ).
O MySQL funciona em mais de 20 plataformas, incluindo Linux,
Windows, HP-UX, AIX, Netware, dando grande flexibilidade.

23

8 ENGENHARIA DE REQUISITOS
O sistema ir realizar a localizao do veculo no ptio da
montadora, existir um cadastro onde o usurio informar o nmero do chassi e as
coordenadas do veculo, a partir dessas informaes o sistema ir gerar um mapa
com a localizao atual do mesmo.
Quando um veculo sair do ptio dever ser lanada sua retirada
para que seja gerado um novo mapeamento. Existir tambm o recurso de
relatrios, onde poder ser impressa toda a parte de movimentao de entrada e
sada de automveis do ptio.
Com todo esse gerenciamento haver um maior controle da
movimentao da produo, agilizar o processo de localizao do automvel
solicitado, melhorar o fluxo de informao e conseqentemente tornar a empresa
mais competitiva.

24

9 LISTA DE CASO DE USO


O caso de uso consiste em o funcionrio estacionar o veculo,
cadastrar o chassi e suas coordenadas para a gerao do mapa e aps localiza o
veculo com o mesmo.
9.1 DIAGRAMA DE CASO DE USO
:

Caso de Uso

25

10 DIAGRAMA DE CLASSES

Diagrama de Classes

26

11 DIAGRAMA DE SEQUNCIA

Diagrama de Sequncia

27

12 DIAGRAMA DE ATIVIDADES

Diagrama de Atividades

28

13 DIAGRAMA DE ENTIDADE E RELACIONAMENTO (DER)

Diagrama de Entidade e Relacionamento

29

14 PROTOTIPAO DAS TELAS DO SISTEMA

14.1

TELA DE LOGIN
Abaixo a tela de login, onde o usurio dever digitar o nome de

usurio e a senha para se conectar ao sistema.

Tela de login

30

14.2

TELA DE CADASTRO DE COORDENADAS


Nesta tela o usurio dever informar o nmero do chassi do veculo,

a data em que foi estacionado, o responsvel e as coordenadas para que seja


gerado o mapa.

Tela de cadastro de coordenadas

31

14.3

TELA DE MAPA E LOCALIZAO DO VECULO


Nesta tela mostra o mapa gerado, onde os veculos so

posicionados de acordo com as coordenadas informadas. Para facilitar a


visualizao do veculo no mapa, existe a pesquisa pelo chassi, onde o usurio
informa o chassi do veculo e apontado a localizao do mesmo, note que o
veculo localizado fica na cor laranja. Tambm existe a opo de imprimir o mapa.

Tela de Mapa/Localizao do Veculo

32

15 CDIGO FONTE
# -*- coding: utf-8 -*from PySide import QtGui, QtCore
from view.principal import Ui_MainWindow
from model.tables import sessao, Usuario, Grupo, mapa
from datetime import datetime
from login import LoginForm
import sys

PAGE_LISTA_mapaS,

PAGE_NOVA_mapa,

PAGE_USUARIOS,

PAGE_GRUPOS = range(4)
ST_ESBOCO, ST_INICIADA, ST_FINALIZADO = range(3)
STATUS_mapa = {ST_ESBOCO: u'Esboo',
ST_INICIADA: u'Iniciado',
ST_FINALIZADO: u'Finalizado'}

class Gerenciador(QtGui.QMainWindow):
"""

"""
def __init__(self, parent=None, usuario=None):
super(Gerenciador, self).__init__()

self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.usuario = usuario
# Slots
self.ui.bt_iniciar.clicked.connect(self.iniciar_mapa)
self.ui.bt_concluir.clicked.connect(self.concluir_mapa)
self.ui.bt_nova.clicked.connect(self.nova_mapa)
self.ui.bt_cancelar.clicked.connect(self.atualizar_lista_mapas)
self.ui.bt_salvar.clicked.connect(self.salvar_mapa)
self.ui.bt_novo_usuario.clicked.connect(self.novo_usuario)

33

self.ui.bt_salvar_2.clicked.connect(self.salvar_usuario)
self.ui.bt_usuario_cancela.clicked.connect(self.cancela_usuario)
self.ui.bt_novo_grupo.clicked.connect(self.novo_grupo)
self.ui.actionUsuarios.triggered.connect(self.mostrar_usuarios)
self.ui.actionGrupos.triggered.connect(self.mostrar_grupos)

self.ui.bt_grupo_voltar.clicked.connect(self.atualizar_lista_mapas)

self.ui.bt_usuario_voltar.clicked.connect(self.atualizar_lista_mapas)
self.ui.actionSobre_Qt.triggered.connect(self.sobre_qt)
self.ui.actionSobre.triggered.connect(self.sobre_sistema)

# Atualizar controles
self.atualizar_lista_mapas()
def sobre_sistema(self):
QtGui.QMessageBox.about(self, 'Sistema de localizao e
mapeamento de veculos')
def sobre_qt(self):
QtGui.QMessageBox.aboutQt(self)

def mostrar_usuarios(self):

self.atualizar_lista_usuarios()
self.ui.stackedWidget.setCurrentIndex(PAGE_USUARIOS)
def mostrar_grupos(self):

self.atualizar_lista_grupos()
self.ui.stackedWidget.setCurrentIndex(PAGE_GRUPOS)

def cancela_usuario(self):

self.ui.group_novo_usuario.setEnabled(False)
self.ui.group_lista_usuarios.setEnabled(True)
self.ui.bt_novo_usuario.setFocus()

34

def salvar_usuario(self):

novo_usuario = Usuario(login=self.ui.edit_usuario.text(),
senha=self.ui.edit_senha.text(),
nome=self.ui.edit_nome.text(),
supervisor=True
self.ui.check_super.isChecked() else False)
sessao.add(novo_usuario)
sessao.commit()
self.atualizar_lista_usuarios()
self.ui.group_novo_usuario.setEnabled(False)
self.ui.group_lista_usuarios.setEnabled(True)
self.ui.bt_novo_usuario.setFocus()

def novo_usuario(self):

self.ui.group_novo_usuario.setEnabled(True)
self.ui.group_lista_usuarios.setEnabled(False)
self.ui.edit_usuario.setFocus()

def novo_grupo(self):

text, ok = QtGui.QInputDialog.getText(self, "Novo grupo",


"Nome do grupo", QtGui.QLineEdit.Normal, '')
if ok and text != '':
novo_grupo = Grupo(nome=text)
sessao.add(novo_grupo)
sessao.commit()
self.atualizar_lista_grupos()

def atualizar_lista_grupos(self):
CONCLUI
table_grupos = self.ui.table_grupos

if

35

# Verifica se h dados e limpa a lista


if table_grupos.rowCount():
rows = range(0, table_grupos.rowCount() + 1)
rows.reverse()
for r in rows:
table_grupos.removeRow(r)

grupos = sessao.query(Grupo).all()
for registro in grupos:
row = table_grupos.rowCount()
table_grupos.insertRow(row)
# Nome
item_nome = QtGui.QTableWidgetItem(registro.nome)
table_grupos.setItem(row, 0, item_nome)
table_grupos.resizeColumnsToContents()

def atualizar_lista_usuarios(self):
"""
Atualiza a lista de usuarios na tela, pegando as informacoes do
banco de dados
"""
table_usuarios = self.ui.table_usuarios
# Verifica se h dados e limpa a lista
if table_usuarios.rowCount():
rows = range(0, table_usuarios.rowCount() + 1)
rows.reverse()
for r in rows:
table_usuarios.removeRow(r)

usuarios = sessao.query(Usuario).all()
for registro in usuarios:
row = table_usuarios.rowCount()
table_usuarios.insertRow(row)

36

item_login = QtGui.QTableWidgetItem(registro.login)

item_senha

QtGui.QTableWidgetItem('*'

len(registro.senha))

item_nome = QtGui.QTableWidgetItem(registro.nome)

item_supervisor

QtGui.QTableWidgetItem(u'Sim'

if

registro.supervisor else u'No')

table_usuarios.setItem(row, 0, item_login)
table_usuarios.setItem(row, 1, item_senha)
table_usuarios.setItem(row, 2, item_nome)
table_usuarios.setItem(row, 3, item_supervisor)
table_usuarios.resizeColumnsToContents()

def atualizar_mapa(self):

self.ui.stackedWidget.setCurrentIndex(PAGE_LISTA_mapaS)
table_mapas = self.ui.table_mapas

# Verifica se h dados e limpa a lista


if table_mapas.rowCount():
rows = range(0, table_mapas.rowCount() + 1)
rows.reverse()
for r in rows:
table_mapas.removeRow(r)

if not self.usuario.supervisor:
lista
sessao.query(mapa).filter(mapa.veiculo==self.usuario.id)
else:

37

lista = sessao.query(mapa).all()

for registro in lista:

if registro.status == ST_ESBOCO:
brush = QtGui.QBrush(QtGui.QColor(170, 170, 170))
elif registro.status == ST_INICIADA:
brush = QtGui.QBrush(QtGui.QColor(85, 170, 255))
elif registro.status == ST_FINALIZADO:
brush = QtGui.QBrush(QtGui.QColor(0, 170, 0))

brush.setStyle(QtCore.Qt.SolidPattern)

row = table_mapas.rowCount()
table_mapas.insertRow(row)
QtGui.gerar_mapa()

table_mapas.setItem(row, 0, item_id)
table_mapas.setItem(row, 1, item_status)
table_mapas.setItem(row, 2, item_titulo)
table_mapas.setItem(row, 3, item_supervisor)
table_mapas.setItem(row, 4, item_veiculo)
table_mapas.setItem(row, 5, item_data_ini)
table_mapas.setItem(row, 6, item_data_fim)
table_mapas.resizeColumnsToContents()
self.ui.label_total.setText('Total
table_mapas.rowCount())

def novo_mapa(self):
"""
Adiciona uma nova mapa
"""
self.ui.edt_titulo.clear()

de

mapas:

%.3d'

38

self.ui.text_descricao.clear()
self.ui.stackedWidget.setCurrentIndex(PAGE_NOVA_mapa)

self.ui.combo_grupo.clear()
grupos = sessao.query(Grupo).all()
for g in grupos:
self.ui.combo_grupo.addItem('%.03d - %s' % (g.id, g.nome))
self.ui.combo_grupo.setCurrentIndex(0)

self.ui.combo_veiculo.clear()
veiculo = sessao.query(Usuario).all()
for e in veiculo:
self.ui.combo_veiculo.addItem('%.03d - %s' % (e.id, e.nome))
self.ui.combo_veiculo.setCurrentIndex(0)
# Data inicio = data atual

self.ui.date_inicio.setDateTime(QtCore.QDateTime.currentDateTime())

def salvar_mapa(self):
"""
Salva o mapa
"""

if not self.ui.edt_titulo.text():
QtGui.QMessageBox.information(self,

u'Informao',

u'Informe o ttulo da mapa.')


self.ui.edt_titulo.setFocus()
return

if retval == QtGui.QMessageBox.Yes:
nova_mapa = mapa(dt_criacao=datetime.now(),
dt_ini=self.ui.date_inicio.dateTime().toPython(),
dt_fim=None,
titulo=self.ui.edt_titulo.text(),

39

descricao=self.ui.text_descricao.toPlainText(),

grupo=int(self.ui.combo_grupo.itemText(self.ui.combo_grupo.currentIndex()).split('')[0]),
status=ST_ESBOCO,
supervisor=self.usuario.id,

veiculo=int(self.ui.combo_veiculo.itemText(self.ui.combo_veiculo.currentIndex()).split
('-')[0]),)
sessao.add(nova_mapa)
sessao.commit()
self.ui.statusbar.showMessage("mapa salva", 2000)
self.atualizar_lista_mapas()

def obter_mapa_da_lista(self):
"""
Retorna a mapa selecionada na lista de mapas
"""
table_mapas = self.ui.table_mapas

if table_mapas.selectedItems():
id_mapa

self.ui.table_mapas.item(self.ui.table_mapas.currentRow(), 0).text()
mapa = sessao.query(mapa).filter_by(id=int(id_mapa)).one()
else:
QtGui.QMessageBox.information(self,
u'Selecione uma mapa na lista.')
mapa = False
return mapa

def iniciar_mapa(self):
"""
Inicia a mapa selecionada na lista
"""

u'Informao',

40

table_mapas = self.ui.table_mapas

if table_mapas.selectedItems():
id_mapa

self.ui.table_mapas.item(self.ui.table_mapas.currentRow(), 0).text()
mapa = sessao.query(mapa).filter_by(id=int(id_mapa)).one()
if mapa.status in [ST_INICIADA]:
msg = u'O mapa %s, j foi gerado' % id_mapa
QtGui.QMessageBox.information(self, u'Informao', msg)

if retval == QtGui.QMessageBox.Yes:
mapa.status = ST_INICIADA
mapa.dt_ini = datetime.now()
sessao.commit()
self.ui.statusbar.showMessage("mapa iniciada", 2000)
self.atualizar_lista_mapas()
else:
QtGui.QMessageBox.information(self,

u'Informao',

u'Selecione uma mapa na lista.')

def concluir_mapa(self):
"""
Conclui a mapa selecionada na lista
"""
mapa = self.obter_mapa_da_lista()
if mapa:
if mapa.status in [ST_ESBOCO]:
msg = u'A mapa %s, ainda no foi iniciada' % mapa.id
QtGui.QMessageBox.information(self, u'Informao', msg)
elif mapa.status in [ST_FINALIZADO]:
msg = u'A mapa %s, j foi concluda' % mapa.id
QtGui.QMessageBox.information(self, u'Informao', msg)

41

else:
retval = QtGui.QMessageBox.question(self, 'Mensagem',
"Deseja imprimir o mapa:\n\n%.3d - %s" % (mapa.id, mapa.titulo),
QtGui.QMessageBox.Yes

QtGui.QMessageBox.No)

if retval == QtGui.QMessageBox.Yes:
mapa.status = ST_FINALIZADO
mapa.dt_fim = datetime.now()
sessao.commit()
self.ui.statusbar.showMessage("mapa

FINALIZADO",

2000)
self.atualizar_lista_mapas()

if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
login_form = LoginForm()
if login_form.exec_():
usuario = login_form.retorno
form = Gerenciador(usuario=usuario)
form.setWindowTitle('Sistema para localicao e gerao de
mapas para veculos em ptio de estacionamento - %s' % usuario.nome)
form.showNormal()
sys.exit(app.exec_())
else:
sys.exit(-1)

42

16 CRONOGRAMA

Cronograma

43

17 CONCLUSO

Com a implementao das melhorias propostas e descritas no presente


trabalho, evidenciadas melhoram o fluxo de informao, a montadora ganhar um
controle maior de sua produo e qualidade do servio. Este trabalho trar maior
conhecimento na parte de anlise desenvolvimento de sistemas, e no gerenciamento de
fluxo de informaes.

44

REFERNCIAS

YIN, R.K. Estudo de caso: planejamento e mtodos. Porto Alegre: Bookman,


2001.
Luis Cludio Perini, Marco Ikuro Hisatomi, Wagner Luiz Beto.
Software. So Paulo: Pearson Prentice Hall, 2009.

Engenharia de

Denise Dias de Santana e Luis Cludio Perini. Fundamentos da Administrao da


Informao. So Paulo: Pearson Education do Brasil, 2009.
RAMDAS, K.; SPERKMAN, R.E., Chain or Shackles: Understanding What Drives
Supply-Chain Performance, Interfaces, v. 30, n. 4, p.3-21, 2000.
SWEBOK Software Engineering Body of Knowledge, 2004.
http://python.org/
http://www.async.com.br/projects/python/pnp/

Potrebbero piacerti anche