Vous êtes sur la page 1sur 92

FATEC

FACULDADE DE TECNOLOGIA
DE SO JOS DO RIO PRETO
IMPLEMENTAO DE UM SISTEMA DE INFORMAO
PARA O CEASA DE SO JOS DO RIO PRETO
GABRIEL FERNANDO VIEIRA RIBEIRO
E
GUSTAVO MANSILIA PAULINO
So Jos do Rio Preto
2007
2

FATEC
FACULDADE DE TECNOLOGIA
DE SO JOS DO RIO PRETO
IMPLEMENTAO DE UM SISTEMA DE INFORMAO
PARA O CEASA DE SO JOS DO RIO PRETO
GABRIEL FERNANDO VIEIRA RIBEIRO
E
GUSTAVO MANSILIA PAULINO
So Jos do Rio Preto
2007
Trabalho de Concluso de Curso
apresentado Faculdade de
Tecnologia de So Jos do Rio Preto
-

FATEC, para obteno do grau de
tecnlogo do Curso de Informtica
Gesto de Negcios, sob orientao
do Prof. Ph.D. Waldir Barros
Fernandes Jnior e co-orintao do
Prof. M.Sc. Ceclio Rodas
3

Ribeiro, Gabriel Fernando Vieira e
Paulino, Gustavo Mansilia
Implantao de um Sistema de Informao no CEASA de
So Jos do Rio Preto. Gabriel Fernando Vieira Ribeiro e
Gustavo Mansilia Paulino.

So Jos do Rio Preto: [s.n.],
2007.

Trabalho de Concluso de Curso (Informtica nfase
Gesto de Negcios) Faculdade de Tecnologia de So
Jos do Rio Preto FATEC.
Bibliografia: f.50

1. Sistema de Informao. 2. CEASA. . I. Gabriel
Fernando Vieira Ribeiro e Gustavo Mansilia Paulino. II.
Faculdade de Tecnologia de So Jos do Rio Preto. III.
Implementao de um Sistema de Informao no CEASA de
So Jos do Rio Preto
4

FATEC
FACULDADE DE TECNOLOGIA
DE SO JOS DO RIO PRETO
BANCA EXAMINADORA:
Nota Final: _______ ( ) em ___/___/2007
_________________________________
Prof. Ph.D. Waldir Barros Fernandes Jnior
_________________________________
Prof. Francisco Antonio de Almeida
_________________________________
Sr. Luprcio Donizete Fontana
5

AGRADECIMENTOS
FATEC Rio Preto por toda estrutura oferecida durante nosso curso;
ao Prof. Ph.D. Waldir Barros Fernandes Jnior, nosso orientador, por
nos mostrar os caminhos a serem seguidos com este projeto, nos auxiliar no
delineamento do escopo do mesmo, nos proporcionar total auxlio e orientao
quando necessrios, confiar plenamente no nosso trabalho e por nos transmitir
entusiasmo e convico;
ao Prof. M.Sc. Ceclio, nosso co-orientador, pela prestao aos
detelhas do projeto, ajuda e comprometimento;
ao Prof. Francisco Antonio de Almeida, pela ateno e ajuda prestados
na elaborao do projeto, pelas anlises contundentes e por todo auxlio no
aprimoramento do projeto;
ao Sr. Luprcio Donizete Fontana, gerente do CEASA Rio Preto, pela
concesso do acesso a todas reas da organizao, aceitao das propostas de
trabalho, interesse demonstrado e participao enriquecedora como membro da
banca de avaliao deste projeto;
ao Sr. Daniel Massayuki Ishizava, assistente administrativo do CEASA
Rio Preto, pela pacincia em nos atender, explanar detalhadamente o
funcionamento da organizao, cordialidade, disposio e colaborao
incondicional;
Prof. M.Sc. Maria Sueli Ribeiro, por nos apoiar e auxiliar durante
toda a elaborao do projeto.
6

RESUMO E PALAVRAS-CHAVE
No mercado de hortifrtis, o CEASA uma organizao de grande influncia
e importncia, em contexto nacional, sendo o elo entre produtores e mercado, por
meio dos permissionrios. Sendo assim, a principal atividade administrativa do
CEASA o gerenciamento dos permissionrios que exercem atividades comerciais
nos espaos alugados a eles. No CEASA de So Jos do Rio Preto, existem
dificuldades para exercer essa atividade em virtude da no organizao dos dados
utilizados. Foi constatada a falta de ferramentas especficas que atendam s
necessidades do CEASA, sendo utilizadas, atualmente, planilhas eletrnicas de
sutes de aplicativos de escritrio (Calc, da Sun Microsystems), contendo frmulas e
distribuio de informaes que dificultam o manuseio delas, alm de no haver
integridade dos dados gerenciais. Para levantar as variveis envolvidas nas
dificuldades, foram realizados estudos dos processos do CEASA junto a seus
colaboradores, a fim de encontrar limitaes e problemas na execuo dos
processos vigentes. A partir dos levantamentos, foi elaborado um banco de dados
centrado no escopo do CEASA (gerncia dos permissionrios) e, posteriormente,
um sistema contendo interfaces para o usurio trabalhar com as informaes de
maneira a aperfeioar e organizar os processos, alm de garantir integridade dos
dados.
Plavras-chave: Sistema de Informao, comrcio de hortifrtis, processos, banco
de dados, gerenciamento, CEASA, central de abastecimento
7

ABSTRACT AND KEYWORDS
In the market of produce, CEASA is an organization of great influence and
importance on the national level, being the link between the producers and
consumers, through the licensees. CEASA's main activity is to manage the licensees
that comercialize produce in their rent spaces. There are difficulties to perform this
activity at So Jos do Rio Preto's CEASA, due to the poor organization of the
utilized data. It has been found the specific tools that meet CEASA s needs do not
exist, being currently used instead electronics spread sheets of office production
softwares (Calc, from Sun Microsystems), which contain formulas and information
distribution that difficult their use, besides the fact that there is not integrity of
managerial data. To survey the variables involved with such difficulties, studies on
CEASA's processes had been carried out with its staff in order to find limitations and
problems in the performance of its current processes. From the findings, a database
has been made centered on the scope of CEASA (management of licensees),
followed by a system containing interfaces for the user to work with information in a
marnner to improve and organize processes guaranteeing integrity to data.
Keywords: Information System, produce marketing, processes, database,
management, CEASA, supply center
8

SUMRIO
INTRODUO.............................................................................................................. 9
CAPTULO I FUNDAMENTAO TERICA ......................................................... 11
1.1 CEASA ............................................................................................................. 11
1.1.1 Os Entrepostos ......................................................................................... 11
1.1.2 Histrico CEASA/CEAGESP .................................................................... 12
1.1.3 Dados do CEASA So Jos do Rio Preto............................................. 13
1.2 Recursos de TI ................................................................................................. 14
1.2.1 Conceitos de Sistemas de Informao..................................................... 14
1.2.2 Banco de Dados ....................................................................................... 18
1.2.3 Linguagem de Programao Java............................................................ 22
CAPTULO II METODOLOGIA DA PESQUISA...................................................... 26
2.1 Objetivos........................................................................................................... 26
2.2 Problemas e Hipteses.................................................................................... 26
2.3 Tipos de Pesquisas.......................................................................................... 28
2.4 Material e Mtodo............................................................................................. 28
CAPTULO III DISCUSSO E RESULTADOS ....................................................... 30
3.1 Contextualizao dos Processos e Problemas ............................................... 30
3.2 O Sistema......................................................................................................... 33
3.2.1 Modularizao........................................................................................... 33
3.2.2 Diviso em Camadas................................................................................ 35
3.2.3 Ferramentas Utilizadas............................................................................. 36
3.3 Implementao do Banco de Dados................................................................ 37
3.3.1 SGBD........................................................................................................ 37
3.3.2 Stored Procedures.................................................................................... 39
3.3.3 Diagrama do Banco de Dados.................................................................. 39
3.4 Implementao em Java.................................................................................. 41
3.5 Resultados Esperados x Atingidos .................................................................. 42
CONCLUSO............................................................................................................. 44
REFERNCIAS BIBLIOGRFICAS........................................................................... 46
APNDICE 1 .............................................................................................................. 47
APNDICE 2 .............................................................................................................. 62
9

INTRODUO
O Projeto de Graduao desenvolvido orientado ao desenvolvimento de um
Sistema de Informao (SI) para o Entreposto de hortifrtis Centro Estadual de
Abastecimento (CEASA) de So Jos do Rio Preto, filiado Companhia de
Entrepostos e Armazns Gerais de So Paulo (CEAGESP). O CEASA consiste num
espao dedicado a comercializao de hortifrtis em atacado, sendo ele responsvel
por gerir, em sua rea interna, vrios atacadistas (permissionrios) ali instalados,
que devem pagar pelo uso do local.
As atividades do CEASA caracterizam-se basicamente em obrigaes para
com a CEAGESP e, principalmente, o controle dos permissionrios da unidade
(atividades, espao ocupado, taxas individuais, pagamentos, contrato). Aps
averiguao dos processos internos da administrao e gerncia do CEASA, foi
constatado que no existe um banco de dados formal dos permissionrios instalados
na unidade, com seus atributos (taxas, contatos, histrico e controle organizado de
pagamentos e movimentaes, tipos de contrato) organizados, gerando dificuldade
para controle dos dados e anlise sobre os mesmos.
Essa pesquisa visa focar os pontos principais do funcionamento do CEASA,
que gira em torno do gerenciamento dos atacadistas (permissionrios) instalados no
estabelecimento. A partir da, foi desenvolvido um banco de dados sobre as
principais variveis envolvidas, contendo funes de consulta, inseres, alteraes,
pesquisas, devidamente implementadas e que sero acessadas por meio de um
software.
Durante o perodo de pesquisa, foram coletadas informaes sobre os
processos e ocorrer paralelamente a etapa de programao.
No trabalho, esto inclusos os aspectos tericos da melhoria de processos
por auxlio da tecnologia da informao (TI), scripts do banco de dados (BD), cdigo-
fonte do sistema, especificaes da CEASA, exemplos da interface do sistema,
detalhes das pesquisas realizadas e a referncia bibliogrfica.
Esta pesquisa visa aprimorar os processos do CEASA de So Jos do Rio
Preto, por meio do desenvolvimento de um banco de dados de acordo com os
padres de integridade de dados, alm de funcionalidades providas pela linguagem
SQL de banco de dados e, interface utilizando linguagem de programao JAVA.
relevante, pois se for concluda com xito e uma soluo aplicvel for encontrada,
10

alm de a unidade de Rio Preto poder ser beneficiada, outras 12 unidades do interior
do Estado de So Paulo podem aproveitar tal soluo.
Sua importncia consiste em informatizar processos, de forma a melhorar a
eficincia e controle interno do CEASA. O detalhe decisivo para a proposio desse
Projeto foi a constatao da falta de um sistema personalizado dentro da
administrao e gerncia do CEASA, que acarreta em grande dispndio de tempo
para realizao de tarefas rotineiras (alterao de dados dos permissionrios,
consultas, novos cadastros de dados) e gerenciais (anlises sobre os dados).
Atualmente so usadas solues ineficientes para gerenciar os dados, tais como
arquivos de planilhas eletrnicas (Calc, da Sun Microsystems) e editores de textos
(Writer, da Sun Microsystems), alm de dados arquivados na forma de papel.
Assim, para o desenvolvimento deste trabalho, a presente pesquisa foi
dividida em: Captulo I, Fundamentao Terica; Captulo II, Metodologia da
Pesquisa; Captulo III, Discusso e Resultados.
Com isso, fica exposta a estrutura geral deste projeto, abrangendo sua
finalidade, seu embasamento, sua forma e seu resultado.
11

CAPTULO I FUNDAMENTAO TERICA
Neste captulo, so expostos os segmentos tericos que embasaram os
captulos vindouros, e servem de apoio para aplicao das propostas apresentadas.
Primeiramente aborda a organizao CEASA desde sua constituio ao seu
atual contexto. Posteriormente, so apresentados conceitos de Sistemas de
Informao, Banco de Dados e Linguagem de Programao Java, utilizados para
concretizao do projeto.
1.1 CEASA
Nos tpicos vindouros so contextualizados os CEASAs, com nfase no de
So Jos do Rio Preto, assim como as variveis que o influenciam e a evoluo dos
entrepostos e suas estruturas, no comrcio de hortifrtis. Os dados contidos nesse
segmento foram resgatados do portal da CEAGESP (2007)
1
, via Internet.
1.1.1 Os Entrepostos
Um entreposto um armazm onde so guardados ou vendidos produtos
agrcolas. Em sua origem remota, os primeiros entrepostos comerciais surgiram por
volta do sculo IV a.C., proveniente do armazenamento agrcola dos povos que
habitavam as regies frteis s margens do rio Nilo e na Mesopotmia.
No caso da CEAGESP, seus entrepostos atacadistas funcionam como ponto
de encontro de produtores e comerciantes. As unidades da capital e do interior
funcionam como canais de distribuio da produo regional para feiras-livres,
supermercados, sacoles, restaurantes e distribuidoras de hortifrtis.
Ao mesmo tempo escoam as safras, movimentam o comrcio atacadista e
varejista e diminuem os custos para o consumidor. No Entreposto da Capital, por
exemplo, chegam os mais variados produtos, vindos de 1300 municpios brasileiros
e de outros 12 pases. Depois de comercializados, eles partem para abastecer a
populao de vrios municpios paulistas e de outros estados. Ao todo, a


1
Cf. http://www.ceagesp.gov.br
12

Companhia rene 13 Entrepostos no Estado.
1.1.2 Histrico CEASA/CEAGESP
A Companhia de Entrepostos e Armazns Gerais de So Paulo (CEAGESP)
surgiu no ms de maio de 1969, proveniente da fuso de duas empresas mantidas
pelo Governo de So Paulo: o Centro Estadual de Abastecimento

CEASA

e a
Companhia de Armazns Gerais do Estado de So Paulo CAGESP. A empresa,
num curto espao de tempo, tornou-se um grande centro de abastecimento em nvel
nacional e acabou por consolidar sua atuao nas reas de comercializao de
hortcolas e armazenagem de gros.
Em 1977, a comercializao atingiu o recorde de 6,2 mil toneladas de
produtos vendidos num s dia e superou o maior mercado do mundo, o Paris-
Rungis, na Frana. No final dos anos 70, a empresa iniciou o processo de
descentralizao, inaugurando em So Jos do Rio Preto a primeira unidade de
comercializao fora da capital. Atualmente, a Companhia mantm onze unidades
no interior, prximas a plos de produo e consumo.
Nos anos 80, a CEAGESP passou a abranger um pblico consumidor maior,
pois abriu o comrcio de varejo para consumidores finais. Criou o primeiro varejo
com produtos frescos a preos controlados. Em 1983 vieram os sacoles para
vender legumes e verduras por quilo a preo nico. Em 1984, surgiram os comboios,
que funcionavam como mini-varejes.
A rede de armazenagem tambm acompanhou o crescimento da Companhia.
Em 1970, a CEAGESP construiu os primeiros silos horizontais do Pas, acoplados a
graneleiros. Na poca, a rede recebia os estoques reguladores do governo federal,
comprados em vrios Estados e armazenados em cidades do interior de So Paulo.
A partir de 1986, os armazns da CEAGESP passaram a abrigar acar
ensacado, por conta da expanso da cultura de cana-de-acar que, ao lado da
laranja, assumiu a liderana da agricultura paulista. Em 1997, a CEAGESP foi
Federalizada e vinculada ao Ministrio da Agricultura, Pecuria e Abastecimento.
Atualmente, a CEAGESP coordena as atividades dos CEASAs paulistas; no
entanto, cada unidade do CEASA tem autonomia prpria para trabalhar de acordo
com suas necessidades e da regio em que esto instaladas.
13

1.1.3 Dados do CEASA So Jos do Rio Preto
O CEASA

So Jos do Rio Preto localiza-se na Avenida Joo Batista
Vetorazzo, nmero 1600, bairro Distrito Industrial.
Seus horrios de comercializao em atacado so as segundas, quartas e
sextas-feiras das 5h30 s 12h e, em varejo, aos sbados das 7h s 12h. A feira de
flores funciona as quartas das 6 s 9 horas para atacado e das 9 s 12 horas para
varejo. Funciona tambm aos sbados das 7h s 12 h, para atacado e varejo.
A data de incio das operaes do CEASA foi dia 01 de julho de 1979,
possuindo at os dias atuais uma rea total de 193.599,00m, sendo 6.696,80m de
rea construda.
O volume mdio comercializado no CEASA, considerando toda a gama de
produtos envolvidos nas transaes, alcana 7 mil toneladas por ms. Tem como
principais produtos comercializados verduras, legumes, frutas, batata, cebola, flores
e frios. O atual gerente da unidade o Sr. Luprcio Donizete Fontana.
Um aspecto interessante sobre o CEASA de So Jos do Rio Preto, que
envolve, alm do CEASA, os seus permissionrios e a prefeitura municipal, a
adoo do Banco de Alimentos, que consiste nos alimentos que sobraram da
comercializao no CEASA e que so armazenados de forma processada ou no
em cmaras frias para posterior distribuio em estabelecimentos geridos pela
prefeitura, como creches e escolas.
Como j citado, o CEASA localiza-se no Distrito Industrial, numa rea de fcil
acesso, alm de estar prximo ao aeroporto da cidade. A rea do CEASA grande,
existindo rea livre para expanso. Na Figura 1, abaixo, pode-se observar o
quarteiro ocupado pelo CEASA e seus arredores:
14

Figura 1: Vista area do CEASA So Jos do Rio Preto Fonte: Google Earth, 2007
1.2 Recursos de TI
Nesta parte do projeto, apresentado o embasamento terico sobre os
recursos de TI utilizados, para a realizao da proposta desta pesquisa.
1.2.1 Conceitos de Sistemas de Informao
O termo informao difcil de ser definido, pois existem diversas
interpretaes sobre seu significado, mas basicamente entende-se pelo ato de
transmisso de conhecimento, que de alguma forma tem um valor til.
Para Teixeira (2007)
2
, o conceito de informao, atualmente interpretado de
forma ambgua, e muitas vezes atribudo erroneamente, eis suas afirmaes a
respeito:


2
Cf. http://www.serprofessoruniversitario.pro.br
15

A palavra informao sempre foi ambgua e liberalmente
empregada para definir diversos conceitos. Os dicionrios registram
que a palavra tem sua raiz no latim informare, que significa a ao
de formar matria, tal como pedra, madeira, couro etc. Parece ter
entrado na lngua inglesa com sua atual grafia e utilizao no sculo
XVI. A definio mais comum : a ao de informar; formao ou
moldagem da mente ou do carter, treinamento, instruo,
ensinamento, comunicao de conhecimento instrutivo .
Esta definio permaneceu relativamente constante at os anos
posteriores Segunda Guerra Mundial, quando entrou em voga
utilizar informao como um termo tecnolgico para definir qualquer
coisa que fosse transmitida por um canal eltrico ou mecnico. A
palavra tornou-se parte do vocabulrio da cincia das comunicaes.
Ento, de repente, podia ser aplicada a algo que, a rigor, no era
necessariamente informativo. Seu uso foi extrapolado para o uso
geral, designando algo dito ou comunicado, fizesse ou no sentido
para o receptor. Atualmente, a liberdade gerada por essa definio
amorfa, como era de esperar, incentiva seu emprego de forma ainda
mais vaga. Informao tornou-se a palavra mais importante da nossa
dcada, o sustento da nossa vida e do nosso trabalho.
A informao, no contexto das empresas deve conter um ciclo de construo
e distribuio, para que a mesma seja aproveitada e interpretada da melhor maneira
possvel em benefcio da organizao, de acordo com Maas (2005):
A informao um processo pelo qual a empresa informa-se sobre
ela prpria e seu ambiente, e por ele informa ao seu ambiente sobre
ela mesma. Este processo pode ser dividido em quatro subfunes:
a) criao das informaes (coleta, aquisio, captao);
b) comunicao das informaes (circulao, transmisso, difuso);
c) tratamento das informaes (transformao, utilizao,
interpretao);
d) memorizao das informaes nas formas mais diversas. (p.54)
Assim ento, atualmente define-se sistema de informao como a
congregao de pessoas, estruturas da organizao, tecnologias da informao,
processos e procedimentos, interligados, de forma a proporcionar empresa a
dispor da informao quando precisar.
A informao essencial para qualquer tipo de administrao. Assim sendo,
esta precisa ser disponibilizada com agilidade

disponvel no tempo certo e
confiabilidade

coesa, correta, para que esta possa ser realmente til a quem
utiliz-la.
A computao corporativa tem uma linha evolutiva particular, tendo como uma
de suas principais metas, possibilitar que a informao tenha esse conjunto de
caractersticas, criando novos e melhores instrumentos de apoio tomada de
deciso. Um exemplo a tecnologia Enterprise Resource Planning (ERP) e seus
16

derivados, que otimizam o trfego de dados dentro da corporao, minimizam a
manipulao e como conseqncia, asseguram uma maior confiabilidade para as
informaes.
Apesar de sua recente popularizao, o conceito dos sistemas integrados no
novo, mesmo quando a informatizao no era uma realidade, afinal, os Sistemas
de Informao no dependem de informtica ou tecnologia para serem elaborados;
eles dependem de conhecimentos administrativos e operacionais. H algumas
dcadas a TI era pouco acessvel, os equipamentos eram muito caros, havia pouca
disponibilidade de mo-de-obra e sua instalao exigia grandes investimentos em
infra-estrutura. Mas os Sistemas de Informao sempre existiram, de uma maneira
ou outra, os dados eram processados e transformados em informaes, ainda que
de uma forma muito mais trabalhosa.
A principal vantagem proporcionada pela tecnologia aos Sistemas de
Informao a capacidade de processar uma grande quantia de dados
simultaneamente, tornando a disponibilizao das informaes demandadas,
praticamente on-line. Mas esse potencial torna-se ineficaz se os sistemas (rotinas,
processos, mtodos) no estiverem muito bem coordenados e analisados.
Informatizar sistemas ruins traz novos problemas e nenhuma soluo, alm de
nublar as possveis causas dessas falhas. Essa situao infelizmente bastante
comum nas empresas, pois existe uma grande confuso sobre anlise de sistemas
operacional-corporativos e programao desses sistemas.
O desenvolvimento dos Sistemas de Informao, bem como sua anlise,
devem ser feitos de maneira independente. Uma vez desenvolvidos os processos,
resta apenas transmiti-los mquina. A eficincia dos sistemas no medida pela
informatizao, mas pela qualidade e eficincia dos mtodos, assegurando a
informao desejada, confivel e no tempo certo.
Um importante aspecto acerca da informao a definio, em mbito
organizacional, sobre qual o grau de necessidade da empresa sobre ela e qual a
abordagem ser atribuda a ela em determinado contexto, segundo Maas (2005, p.
244), a respeito das caractersticas organizacionais necessrias ao uso correto da
informao: para gerir a informao em qualquer organizao, importante ter
caractersticas e atributos gerenciais que giram em torno da intencionalidade, da
organizao, da intuio e da oportunidade .
17

Abaixo, na Figura 2, uma visualizao do funcionamento de um SI no
contexto organizacional.
Figura 2: O SI no contexto organizacional Fonte: DIMAP/UFRN, 2007
Os Sistemas de Informao so peas fundamentais para as empresas, no
apenas na elaborao de relatrios, mas fazem parte de todos os departamentos e
atividades da companhia, desde o simples controle at a confeco de planos
estratgicos complexos. Tudo que acontece, todos os processos so regidos por um
sistema, que pode ou no ser informatizado. Mais uma vez, deve ser considerada a
importncia do administrador nesse processo, que nada menos que vital para a
corporao.
Mais do que um modismo, a tecnologia deve ser compreendida como uma
ferramenta, um dos diversos mtodos para assegurar qualidade, competitividade,
reduo de custos e principalmente, satisfazer os desejos e anseios dos clientes.
No se trata apenas de programao de computadores.
O entendimento dessa diferena (desenvolvimento de Sistema de Informao
versus Programao) proporciona a criao de processos/rotinas mais adequados,
mais segurana, maior controle, alm de possibilitar empresa, uma anlise clara
dos benefcios (ou no) que a informatizao pode trazer.
18

A Figura 3, a seguir, demonstra as variveis inerentes aos expedientes e
planejamento de negcio, onde o Sistema de Informao deve atuar.

Figura 3: Variveis de negcio abrangidas pelos Sis Fonte: Autores deste projeto
Por fim, a implantao de um Sistema de Informao deve levar em
considerao o ciclo da informao na organizao, passando pela entrada dos
dados, processamento dos mesmos e sada na forma de informao til e inteligvel,
alm da reteno do feedback desse processo, o qual importante para o
aprimoramento do fluxo.
1.2.2 Banco de Dados
O banco de dados (ou base de dados, ou ainda BD) uma coleo de dados
interrelacionados, representando informaes sobre um domnio especfico.
Atualmente, o modelo de banco de dados mais utilizado o relacional.
Ricarte (2007)
3
define banco de dados relacional da seguinte forma:
Um banco de dados relacional organiza seus dados em relaes.
Cada relao pode ser vista como uma tabela, onde cada coluna


3
Cf. http://www.dca.fee.unicamp.br/cursos/PooJava/javadb/bdrel.html
19

corresponde a atributos da relao e as linhas correspondem as
tuplas ou elementos da relao. Em uma nomenclatura mais prxima
quela de sistemas de arquivos, muitas vezes, as tuplas so
denominadas registros e os atributos, campos. Um conceito
importante em um banco de dados relacional o conceito de atributo
chave, que permite identificar e diferenciar uma tupla de outra. Por
meio do uso de chaves possvel acelerar o acesso a elementos
(usando ndices) e estabelecer relacionamentos entre as mltiplas
tabelas de um sistema de banco de dados relacional.
A viso de dados organizados em tabelas oferece um conceito simples para a
estruturao dos dados, sendo um dos motivos do sucesso de sistemas relacionais
de dados.
Certamente, outros motivos para esse sucesso incluem o forte embasamento
matemtico por trs dos conceitos, utilizados em bancos de dados relacionais, e a
uniformizao na linguagem de manipulao de sistemas de bancos de dados
relacionais, por meio da linguagem Structured Query Language (SQL).
Um banco de dados representar sempre aspectos do mundo real. Assim
sendo, uma base de dados uma fonte de onde se pode extrair uma vasta gama de
informaes derivadas, que possui um nvel de interao com eventos, como o
mundo real que representa. A forma mais comum de interao entre usurio e banco
de dados, d-se por meio de sistemas especficos que por sua vez acessam o
volume de informaes geralmente por meio da linguagem SQL.
Para o desenvolvimento e gerenciamento de um banco de dados, atualmente
so usados Sistemas Gerenciadores de Banco de Dados (SGBD) em detrimento de
programao em determinada linguagem tradicional. Um SGBD uma coleo de
programas que permite aos usurios criar e manter um banco de dados. O SGBD ,
portanto, um sistema de software de propsito geral que facilita os processos de
definio, construo, manipulao e compartilhamento de banco de dados entre
vrios usurios e aplicaes.
Profissionalmente tratando-se, existem os Administradores de Banco de
Dados (DBA) que controlam o acesso aos dados e controle do BD, os Projetistas de
Banco de Dados (DBP), que analizam a forma de representao de dados em um
banco de dados e forma como eles devem ser guardados.
A definio de um banco de dados implica especificar os tipos de dados, as
estruturas e as restries para os dados a serem armazenados em um banco de
dados. Elmasri e Navathe (2005) mostram a funcionalidade de um SGBD e explicam
essa diferena:
20

A construo de um banco de dados o processo de armazenar os
dados em alguma mdia apropriada controlada pelo SGBD. A
manipulao inclui algumas funes, como pesquisas em banco de
dados para recuperar um dado especfico, atualizao do banco para
refletir as mudanas do minimundo e gerar os relatrios de dados. O
compartilhamento permite aos mltiplos usurios e programas
acessar, de forma concorrente, o banco de dados. (p.4)
No processamento tradicional de arquivos, a estrutura do arquivo de
dados est embutida no programa da aplicao, sendo assim,
qualquer mudana na estrutura de um arquivo pode exigir alteraes
de todos os programas que acessam esse arquivo. Ao contrrio, os
programas para acesso ao SGBD no exigem essas alteraes na
maioria dos casos. A estrutura dos arquivos de dados armazenada
no catlogo do SGBD separadamente do programa de acesso. (p. 7)
Essas ferramentas tm por objetivo dinamizar a criao e o uso do banco de
dados, assim como definir uma maior estruturao e funcionalidade, aumentando a
integridade, rapidez de acesso e diminuindo redundncias de dados, apresentando,
assim, vantagens em relao ao uso de programao comum. Segundo Elmasri e
Navathe (2005):
Essas redundncias, na definio e armazenamento dos dados
resultam em um espao de armazenamento desperdiado e em
esforos redundantes para manter os dados comuns atualizados.
Na abordagem utilizando um banco de dados, um nico repositrio
de dados definido uma nica vez, mantido e ento acessado por
vrios usurios. As principais caractersticas da abordagem de um
banco de dados versus a abordagem de processamento de arquivo
so as seguintes:

Natureza autodescritiva do sistema de banco de dados.

Isolamento entre programas e os dados, e a abstrao dos dados.

Suporte para mltiplas vises dos dados.

Compartilhamento de dados e processamento de transaes
multiusurios. (p. 7-8)
Outra grande vantagem do uso de um SGBD o encapsulamento da
estrutura do banco de dados parte do software. Alm de prover melhor
manuseabilidade e manuteabilidade no banco, oferece a possibilidade de fornecer
recursos de fcil uso pelos usurios, como inseres, alteraes, excluses,
relatrios e acesso restrito (segurana).
Na figura 4, est explicitada a estrutura de camadas de um sistema que utiliza
um SGBD em seus diferentes nveis.
21

Figura 4 Camadas do banco de dados Fonte: Autores deste projeto
O nvel fsico o mais baixo de abstrao, escreve como os dados esto
realmente armazenados, englobando estruturas complexas de baixo nvel; o nvel
conceitual descreve quais dados esto armazenados e seus relacionamentos. Neste
nvel, o banco de dados descrito por meio de estruturas relativamente simples, que
podem envolver estruturas complexas no nvel fsico; O nvel de vises do usurio
descreve partes do banco de dados, de acordo com as necessidades de cada
usurio, individualmente, sendo que o usurio no tem acesso direto estrutura
relacional (nvel conceitual) do banco nem ao nvel fsico (dados armazenados).
Bancos de dados, de forma geral, contm muitos dados, os quais por si s
no tem grande valor. preciso o uso de tcnicas especiais para obteno de
importantes informaes num lote de dados. Data mining (minerao de dados)
uma das tcnicas mais utilizadas e de maior importncia atualmente. Souza (2007)
4
,
descreve sua definio:
Minerao de dados, ou data mining, o processo de anlise de
conjuntos de dados que tem por objetivo a descoberta de padres
interessantes e que possam representar informaes teis. Um
padro pode ser definido como sendo uma afirmao sobre uma
distribuio probabilstica. Estes padres podem ser expressos
principalmente na forma de regras, frmulas e funes, entre outras.
Atualmente, existe uma tendncia de mercado em se dizer que qualquer


4
Cf. http://www.imasters.com.br/artigo/1482/bi/data_mining/
22

problema ser resolvido, caso a empresa adquira um banco de dados.
Naturalmente, em um ambiente com acesso constante ao banco de dados, onde a
segurana seja de vital importncia e que o desempenho dos processos atuais
estiverem comprometendo a empresa, a aquisio de um banco de dados poder
ser um grande passo para soluo do problema.
1.2.3 Linguagem de Programao Java
Java uma linguagem de programao, muito utilizada atualmente. A seguir
uma breve descrio de seu histrico e suas caractersticas. Indrusiak (1996)
5
,
descreve seu histrico:
A linguagem de programao Java foi desenvolvida nos laboratrios
da Sun Microsystems, na primeira metade da dcada de 90, com o
objetivo de ser mais simples e eficiente do que suas predecessoras.
O alvo inicial era a produo de software para produtos eletrnicos
de consumo (fornos de microondas, agendas eletrnicas etc.). Um
dos requisitos para esse tipo de software ter cdigo compacto e de
arquitetura neutra. A linguagem obteve sucesso em cumprir os
requisitos de sua especificao, mas apesar de sua eficincia no
conseguiu sucesso comercial.
Com a popularizao da Internet, os pesquisadores da Sun Microsystems
perceberam que aquele seria um nicho ideal para aplicar a recm criada linguagem
de programao. A partir de ento, adaptaram o cdigo Java para que pudesse ser
utilizado em microcomputadores conectados Internet, mais especificamente no
ambiente da World Wide Web. Java permitiu a criao de programas batizados
applets, que trafegam e trocam dados por meio da Internet e se utilizam da interface
grfica de um web browser.
Os principais web browsers, disponveis comercialmente, passaram a dar
suporte aos programas Java, e outras tecnologias em reas como computao
grfica e banco de dados, tambm, buscaram integrar-se com o novo paradigma
proposto pela linguagem: aplicaes voltadas para o uso de redes de computadores.
Java uma linguagem simples, pois possui um reduzido nmero de
construes. A diminuio das construes mais suscetveis a erros de
programao, tais como ponteiros e gerenciamento de memria via cdigo de
programao tambm faz com que a programao em Java seja mais eficiente.


5
Cf. www.inf.ufrgs.br/tools/java/introjava.pdf
23

Contm um conjunto de bibliotecas que fornecem grande parte da
funcionalidade bsica da linguagem, incluindo rotinas de acesso rede e criao de
interface grfica.
Baseada no paradigma da Orientao a Objetos - encapsulamento em um
bloco de software, os dados (variveis) e mtodos de manipulao desses dados - a
linguagem permite a modularizao das aplicaes, reuso e manuteno simples do
cdigo j implementado. Assim, para Deitel e Deitel (2002):
Os programas em Java consistem em partes chamadas classes.
Estas consistem em partes chamadas mtodos, que realizam tarefas
e retornam informaes ao completarem suas tarefas. (p. 59)
Um objeto uma entidade do mundo real que tem uma identidade. Objetos
podem representar entidades concretas (um arquivo, uma bicicleta) ou entidades
conceituais (uma estratgia de jogo, uma poltica de escalonamento em um sistema
operacional). Cada objeto ter sua identidade significa que dois objetos so distintos,
mesmo que eles apresentem exatamente as mesmas caractersticas.
O termo orientao a objetos pressupe uma organizao de software em
termos de coleo de objetos discretos, incorporando estrutura e comportamento
prprios. Esta abordagem de organizao essencialmente diferente do
desenvolvimento tradicional de software, onde estruturas de dados e rotinas so
desenvolvidas de forma apenas fracamente acopladas.
A abordagem de orientao a objetos favorece a aplicao de diversos
conceitos considerados fundamentais para o desenvolvimento de bons programas,
tais como abstrao e encapsulao. Tais conceitos no so exclusivos desta
abordagem, mas so suportados de forma melhor no desenvolvimento orientado a
objetos do que em outras metodologias. Eis uma breve viso sobre esses conceitos:

Abstrao: consiste em focalizar os aspectos essenciais inerentes a uma
entidade e ignorar propriedades acidentais. Em termos de
desenvolvimento de sistemas, isto significa concentrar-se no que um
objeto e faz, antes de se decidir como ele ser implementado. O uso de
abstrao preserva a liberdade para tomar decises de desenvolvimento
ou de implementao apenas quando h um melhor entendimento do
problema a ser resolvido.

Encapsulao: consiste em separar os aspectos externos de um objeto,
os quais so acessveis a outros objetos, dos detalhes internos de
24

implementao do objeto, os quais permanecem escondidos dos outros
objetos. O uso de encapsulao evita que um programa torne-se to
interdependente que uma pequena mudana tenha grandes efeitos
colaterais.

Compartilhamento: tcnicas de orientao a objetos promovem
compartilhamento em diversos nveis distintos. A herana de estrutura de
dados e comportamento permite que estruturas comuns sejam
compartilhadas entre diversas classes derivadas similares, sem
redundncia. O compartilhamento de cdigo usando herana uma das
grandes vantagens da orientao a objetos.
O processo de compilao - gerao de bytecodes (bytecode uma
codificao que traduz o que foi escrito no programa para um formato que a JVM ou
processador entenda e seja capaz de executar) - projetado para a deteco prvia
dos possveis erros, evitando que os erros se manifestem em tempo de execuo. O
uso de cdigo para tratamento de excees - exception handling - permite manter a
consistncia da aplicao no caso de erros.
Para ser compilado, um aplicativo Java utiliza a Java Virtual Machine (JVM). A
JVM permite executar um cdigo em Java em qualquer plataforma. Segundo a
definio da Sun (2007)
6
, a JVM pode ser entendida como "uma mquina imaginria
implementada via software ou hardware que executa instrues vindas de
bytecodes". Sendo assim se difere de outras linguagens de programao, como por
exemplo o C++, que lida diretamente com o processador e seu bytecode especfico,
atrelado a um determinado Sistema Operacional. A JVM permite a traduo de seus
bytecodes para comunicao com o processador independentemente do sistema
operacional. A seguir, na Figura 5 esse funcionamento explicitado.


6
Cf. www.sun.com
25

Figura 5 Processo de compilao Java versus C++ - Fonte: Infowester, 2007
Assim, ento, esto compreendidas neste captulo as principais variveis
envolvidas nesse projeto, que facilitam o entendimento e contextualizao do
mesmo, alm de embas-lo.
26

CAPTULO II METODOLOGIA DA PESQUISA
Este captulo contempla a problemtica envolvida neste projeto, assim como
os meios de pesquisa utilizados e as especificaes dos trabalhos realizados.
2.1 Objetivos
Com esta pesquisa, objetiva-se desenvolver um Sistema de Informao que
facilite e melhore a eficincia nos processos do CEASA de So Jos do Rio Preto.
Utilizando um Sistema gerenciando um banco de dados para o CEASA, ser
possvel obter as seguintes melhorias como maior agilidade nos processos comuns
de manipulao de dados: incluso/modificao/consulta de dados referentes aos
atacadistas e suas dependncias; obteno de relatrios de forma mais rpida e
simplificada, utilizando tcnicas de data mining; prover garantia de consistncia e
integridade na base de dados, assim como controle na manipulao de dados;
determinar o tipo de informao a ser armazenada e manuseada pelo sistema.
Portanto, o escopo do projeto a melhoria da efetividade das atividades e
processos do CEASA, utilizando-se ferramentas de TI, mais precisamente nas
atividades de controle de permissionrios.
2.2 Problemas e Hipteses
A pesquisa norteada pelo problema de gerenciamento de dados e
informaes usados pelo CEASA, no qual no h um SI especfico desenvolvido.
Assim, a obteno de relatrios e dados de forma rpida e precisa, atualmente
inatingida.
A princpio as relaes entre os dados parecem simples, mas uma anlise
nos pormenores das operaes assim como as variveis envolvidas revelam uma
estrutura de processo flexvel e, portanto, complexa e detalhada.
A atividade principal do CEASA contabilizar os gastos totais de sua
jurisdio, tais como energia eltrica, segurana, portaria, entre outros e distribu-los
de forma ponderada aos permissionrios. A esse valor ponderado e distribudo
individualmente adicionado o aluguel da rea que o permissionrio ocupa,
27

caracterizando assim, o boleto com o valor total a ser pago pelo permissionrio.
A falta de padronizao e critrios, nos processos da empresa, chegou at,
num passado recente, a ocasionar prejuzos no CEASA, pois, devido falta de
controle das informaes, o clculo dos valores a serem pagos pelos
permissionrios era mal dimensionado, gerando cobranas errneas e mal
distribudas.
De acordo com informaes coletadas junto aos colaboradores do CEASA, foi
revelado que at cerca de um ano e seis meses passados, todos os controles sobre
os dados e informaes eram feitos em documentos de papel, os quais geravam
grande inconsistncia, perdas das informaes, desorganizao, demora na
execuo dos processos internos e retrabalhos desnecessrios.
Ento, foi adotado o uso de softwares no especialistas, principalmente
planilhas eletrnicas (Calc, da Sun Microsystems) e editores de texto (Writer, da Sun
Microsystems), no que diz respeito s atividades do CEASA. Ocorreram melhoras
nos processos e houve reduo da ineficcia nos processos administrativos, no
entanto essas ferramentas no especialistas ainda geram inconsistncias nos
dados, demora para obteno de informao, alta dependncia para com o usurio
no processamento e interface pouco apropriada. A vantagem aparente no uso de
tais ferramentas o fato de terem a licena de uso gratuita.
Para resolver tais questes, cogitou-se, neste projeto, desenvolver um
sistema de informao personalizado que congregue os dados crticos (usados no
dia-a-dia do CEASA, tais como informaes especficas dos permissionrios, seus
registros de pagamentos, condies especiais individuais, contrato) e que seja
capaz de prover relatrios gerenciais precisos.
A nfase do sistema dada sobre o banco de dados, cuidando para que este
tenha a consistncia, integridade, flexibilidade e recursos de acesso especialmente
desenvolvidos para as atividades da organizao.
Valendo-se de uma interface simples e funcional, assim como procedimentos
padronizados, esse sistema, alm de prover as vantagens sobre banco de dados,
seria de fcil interpretao para o usurio, que necessitaria de uma baixa carga de
treinamento para oper-lo.
28

2.3 Tipos de Pesquisas
As pesquisas a serem realizadas so primordialmente a pesquisa de campo,
do tipo Quantitativa-Descritiva, e a pesquisa bibliogrfica. Sobre pesquisa
bibliogrfica, entende-se por todo o material e informao j publicados em veculos
como livros, artigos cientficos, jornais, monografias, teses, Internet, boletins, ou at
meios de comunicaes orais/audiovisuais. Para se entender melhor pesquisa de
campo do tipo Quantitativo-Descritiva, Marconi e Lakatos (2005) afirmam:
[...] consistem em investigaes de pesquisa emprica cuja principal
finalidade o delineamento ou anlise das caractersticas de fatos ou
fenmenos, a avaliao de programas, ou o isolamento de variveis
principais ou chave. (p. 189)
As pesquisas realizadas envolvem informaes obtidas com os funcionrios
do CEASA Rio Preto, que disponibilizaram documentos de controle interno e
esclareceram dvidas sobre os processos funcionais para que fosse possvel
desenvolver o projeto. Foi utilizado, tambm, material encontrado por pesquisa na
Internet, alm de consultas a livros.
2.4 Material e Mtodo
Alm de todo material recolhido com pesquisa na Internet e dos livros
relacionados consultados, tambm foram utilizados alguns documentos com dados
funcionais do CEASA de So Jos do Rio Preto, que foram fornecidos. Todo esse
material, que proporcionou compreenso do funcionamento das atividades exercidas
pela organizao e direcionou este trabalho, ser fundamental para a elaborao e
desenvolvimento do sistema.
O sistema ser desenvolvido utilizando-se apenas softwares gratuitos. Para o
desenvolvimento do banco de dados, o SGBD utilizado ser o SQL Server 2005
Express Edition, uma verso free do atual SGBD da Microsoft, o SQL Server 2005, e
as interfaces sero feitas em Java, utilizando o programa de desenvolvimento
NetBeans, verso 5.0, tambm free. Ambas ferramentas, apesar de serema
gratuitas, so de grande qualidade, aceitao e utilizao no mercado. Para rodar o
sistema, o microcomputador dever ter previamente instalados, o SQL Server em
questo e o Java Virtual Machine (JVM).
29

O SQL Server 2005 Express Edition exige como requisitos do sistema, um
processador Pentium 1.00 Ghz, 256 MB de memria RAM e 525 MB de disco rgido.
Enquanto para o NetBeans, recomenda-se no mnimo, processador de 500 MHz
Intel Pentium III ou equivalente, memria RAM de 512 MB e espao em disco de 850
MB. Para executar a atual verso da JVM, as configuraes mnimas necessria so
um processador de 100 MHz e 32 MB de memria RAM.
Portando, tanto para desenvolver quanto para executar o Sistema
desenvolvido, os requisitos mnimos sero os do SQL Server, salvo o espao em
disco rgido que dever acompanhar o exigido pelo NetBeans.
Toda a equipe do CEASA Rio Preto colaborou significamente para as
pesquisas realizadas. Ofereceram total liberdade e auxlio para consultas e
esclarecimento de dvidas. Isto de grande importncia para compreenso das
reais necessidades da organizao e, por conseguinte, que o sistema desenvolvido
supra-as.
O sistema ser desenvolvido usando apenas ferramentas livres, no havendo
custos com aquisio de licenas.
Conclu-se, neste capitulo, portanto, que o sistema dever proporcionar
melhor desempenho e agilidade nas atividades da empresa, assim como maior
segurana e confiabilidade.
30

CAPTULO III DISCUSSO E RESULTADOS
No presente captulo, so apresentados os processos principais de
formulao deste projeto, abrangendo desde os levantamentos iniciais e posteriores
constataes ao processo prtico de implementao das solues propostas.
3.1 Contextualizao dos Processos e Problemas
Para a proposio de ferramentas que auxiliem e melhorem processos,
preciso compreender os mesmos detalhadamente, desde tarefas simples at
situaes que envolvem muitas variveis.
No CEASA de So Jos do Rio Preto, foram cumpridas as seguintes etapas a
fim de se obter uma viso sistmica e ao mesmo tempo centrada no escopo da
organizao:
a) Contatos iniciais

primeiramente, foi estabelecido contato com o gerente
e colaboradores com o propsito de lhes esclarecer os objetivos deste projeto assim
como obter dos mesmos suas principais necessidades e a permisso para iniciar-se
as avaliaes dos processos;
b) Visitas

foram realizadas quatro visitas unidade do CEASA com o
objetivo de se conhecer os processos, as regras de negcio e as ferramentas
utilizadas, utilizando artefatos como relato dos colaboradores e documentos diversos
(sob forma de papel e digitais). Essa etapa foi caracterizada pela apresentao do
contexto em que se encontra a organizao CEASA, assim como suas atividades e
explicao do funcionamento dos processos internos da organizao;
c) Levantamento das limitaes

foram observados pontos falhos na
organizao de dados e informaes, alm de processos realizados de maneira
ineficiente.
Aps estas etapas foi possvel delinear detalhadamente as atividades do
CEASA e, percebeu-se que a nfase destas dada sobre os controles sobre os
permissionrios instalados. Tais controles so caracterizados basicamente pelo
apontamento do espao especfico que o permissionrio ocupa e sua respectiva
taxa (definida multiplicando-se a taxa por metro quadrado fixa pelo total de metros
quadrados ocupados), os servios (portaria, segurana, energia eltrica) que o
mesmo opta por dispor (os servios so rateados entre aqueles que o utilizam).
31

No rateio de energia eltrica, especificamente, o rateio feito baseado no
consumo de todos os equipamentos eltricos que o permissionrio utiliza, assim,
so evitadas discrepncias nas cobranas.
Ressalta-se que as contas mensais sobre os servios e energia eltrica so
cobradas do CEASA, o qual quita esses valores com o pagamento do rateio dessas
contas devidamente ponderadas e cobradas dos permissionrios.
Todo ms, o CEASA tem por obrigao enviar relatrios a CEAGESP que
referenciam o ms contbil anterior, estes contendo informaes como total de rea
disponvel e utilizada, receita arrecadada, despesas, gastos internos diversos, folha
de pagamento dos funcionrios do setor administrativo entre outros detalhes
pormenorizados.
Existe um acordo com a prefeitura de So Jos do Rio Preto, no qual o
CEASA isento do pagamento de IPTU assim como gua e esgoto, em troca do
fornecimento de alimentos para o banco de alimentos da prefeitura.
Esclarecidos os detalhes da atividade principal, foram levantados os
problemas mais relevantes. De acordo com relatos dos colaboradores, foi revelado
que h cerca de pouco mais de um ano e meio atrs, todos os processos, controles
e consultas a dados e informaes utilizados pela administrao do CEASA estavam
sob a forma de papel.
Devido ao uso do papel, muitos problemas graves ocorriam na administrao.
A desorganizao, demora para manipulao de dados e grande inconsistncia dos
mesmos, ocasionaram erros de clculos em boletos emitidos aos permissionrios,
acarretando dficit contbil para o CEASA.
Atualmente, os controles so feitos por meio de planilhas eletrnicas e
editores de texto (Calc e Writer, da Sun Microsystems). Com isso obteve-se maior
automatizao e confiabilidade nos processos em relao aos antigos mtodos. No
houve mais problemas financeiros. A seguir, a Figura 6 mostra uma das telas das
planilhas utilizadas.
32

Figura 6: Tela de planilha de controle do CEASA - Fonte: CEASA So Jos do Rio Preto, 2007
33

No entanto, o uso destas ferramentas no garantiu a total eliminao das
inconsistncias e ainda gerou novas barreiras.
As planilhas em questo foram desenvolvidas por um colaborador, e apenas
este trabalha com ela e sabe manipul-la. Em caso de necessidade de outro
colaborador manipular essas planilhas, foi constatada dificuldade de entendimento
dos clculos e frmulas contidos nela, assim como dificuldades para encontrar
dados e entend-los. Outro ponto a considerar-se o uso de muitas abreviaturas.
Os dados so gravados de forma rstica, no sendo trabalhados de forma
alguma. H repetio de dados, tanto na mesma, quanto em planilhas diferentes,
pode haver, por exemplo, dados de diferentes meses misturados. No h
obrigatoriedade de preenchimento de todos os dados necessrios por parte do
usurio.
Alm desses inconvenientes j descritos, existem muitas outras limitaes
provenientes do uso de planilhas eletrnicas comuns. Pode haver muitos erros de
usurio, como sobreposio de dados de uma clula, alterao errnea de frmulas,
muitas linhas e/ou colunas numa mesma planilha, necessidade de reorganizar os
dados constantemente, segurana dos dados e informaes limitado, dentre outras.
3.2 O Sistema
Para sanar as dificuldades e problemas encontrados, foi proposto um sistema
personalizado, que reuniria os principais processos, as regras de negcio, alm
novas funcionalidades teis ao CEASA.
3.2.1 Modularizao
A estrutura do sistema formada por diversos mdulos que interrelacionam-
se. O principal mdulo desse sistema, o qual tem maior nfase, o controle de
emisso de boletos dos permissionrios, justamente por ser a atividade central do
CEASA. Resumidamente, esse mdulo caracterizado pelo clculo de valores a
serem pagos por cada um dos permissionrios, mensalmente, por meio de frmulas
pr-determinadas de rateio e distribuio de gastos.
Foram contemplados os seguintes mdulos que abrangem o escopo do
CEASA, sempre seguindo as restries impostas pelo banco de dados e contendo
as funes de salvar, alteras, consultar e excluir:
34

Controle de permissionrios: neste mdulo, o usurio do sistema
trabalha com os dados inerentes aos permissionrios instalados na
unidade;

Controle de cadastro de pavilho: controle do cadastro dos pavilhes
existentes no CEASA;

Controle de locais: prove gerenciamento dos locais existentes dentro dos
pavilhes;

Controle de servios disponveis: oferece controle sobre os servios
existentes para os permissionrios;

Gerenciador de contratos: gerencia os contratos dos permissionrios,
que a relao dos mesmos com cada espao ocupado e servios
utilizados;

Controle contbil do CEASA: possibilita controle dos gastos gerais do
CEASA, desde gastos administrativos, gastos relacionados a toda a
estrutura do CEASA, incluindo os permissionrios;

Gerador de boletos: mdulo responsvel pelo lanamento mensal dos
boletos individuais dos permissionrios, contendo as descries das
cobranas feitas;

Controle de acesso (login): interface responsvel por permitir ou negar o
acesso ao sistema. So exigidos aos usurios o nome de usurio e sua
respectiva senha, previamente cadastrados.
Essa modularizao do sistema permite que o desenvolvimento do mesmo
seja fragmentado, organizado e mais eficiente. Alm dessas vantagens, propicia,
tambm, facilidade de manuteno do mesmo, uma vez que, modificaes ou
correes podem ser aplicadas diretamente apenas sobre o mdulo em questo.
Outras facilidades percebidas se do para utilizao do sistema pelos
usurios finais, j que a navegao pelo sistema simples e lgica. Abaixo, na
Figura 7, um fluxograma simples proposto, serve como guia ao usurio do sistema.
35

Figura 7: Fluxograma de operao do sistema Fonte: Autores deste projeto
3.2.2 Diviso em Camadas
Portanto, para implementao do sistema foi utilizado o esquema de diviso
em camadas do mesmo, contemplando todos os mdulos. As camadas so as
seguintes:

Camada de interfaces para o usurio: formulrios representados
graficamente, com eventos (salvar/alterar, excluir, consultar etc). a
representao grfica responsvel por trabalhar com os dados ao mesmo
tempo em que gera visualizao para o usurio final em tempo real;

Camada de lgica de negcio ou de conexo: a responsvel pelo
processamento do sistema, ligando as aes solicitadas pela interface
grfica do usurio com os dados armazenados no banco de dados. Nessa
camada est contido o cdigo-fonte do sistema, dividido em classes (que
referenciam os diferentes mdulos e segmentos do sistema) onde os
comandos do usurio so processados de acordo com a programao
implementada e, finalmente so enviadas ao SGBD as tarefas a serem
36

aplicadas sobre os dados;

Camada de armazenamento: banco de dados e suas funcionalidades.
Por meio de comandos enviados ao SGBD pela camada de lgica de
negcio, so realizadas as tarefas solicitadas sobre os dados.
Abaixo, na Figura 8, uma visualizao do processo de comunicao entre as
camadas, conforme o projeto do presente sistema:
Figura 8: Modelo de Diviso em Camadas Fonte: Autores deste projeto
O uso desse modelo prov vantagens na estrutura e uso da aplicao, como
o isolamento das diferentes setores do sistema, que facilita a manuteno e
localizao de erros, o isolamento das camadas, protegendo-as e a facilidade de
operao por parte do usurio final.
At o presente momento, o sistema caracterizado como um prottipo, pois
no teve todos os atributos e funcionalidades propostas implementadas nem houve
testes em ambiente real.
3.2.3 Ferramentas Utilizadas
Para desenvolver o sistema, foram utilizadas as seguintes ferramentas:

NetBeans 5.0: O NetBeans um ambiente integrado de desenvolvimento
(IDE) que proporciona a criao de programas utilizando recursos
grficos, centrado no desenvolvimento utilizando a linguagem Java.
Para trabalhar com o NetBeans necessrio ser instalado, previamente,
na mquina, uma das verses do Kit de Desenvolvimento Java (JDK), de
37

preferncia alguma recente. Para executar o programa desenvolvido
preciso estar instalado a JVM. O NetBeans de uso livre, distribuda de
forma gratuita na Internet pela Sun Microsystems, detentora de seus
direitos.

SQL Server 2005 Express: O SQL Server Express um SGBD baseado
nas tecnologias do SQL Server 2005 e ocupa o lugar do MSDE 2000,
ambos distribudos pela Microsoft. Ele um produto gratuito e possui
caractersticas de rede e segurana que o diferenciam das demais
edies do SQL Server 2005. Possui uma ferramenta grfica (SQL
Express Manager), que permite realizar a administrao do servidor de
banco de dados de uma forma simples e prtica. Tem suporte aos
principais recursos de SGBD, como triggers, views, stored procedures e
cursores.
Como supracitado, essas ferramentas so distribuies gratuitas e
proporcionam grande economia quanto ao custo de desenvolvimento, uso e
manuteno do sistema, uma vez que atendem as necessidades do sistema
proposto assim com as do CEASA.
3.3 Implementao do Banco de Dados
A abordagem principal para a proposta de sistema para o CEASA dada
sobre o banco de dados. Na organizao, no existe um banco de dados formal, que
respeite as regras de modelagem, de integridade de dados, de no-redundncia, de
controle de acesso e que contenha funes de fcil acesso como consultas e
relatrios.
3.3.1 SGBD
Como j citado neste projeto, o SGBD utilizado para o banco de dados o
Microsoft SQL Server Express 2005, o qual possui as ferramentas necessrias a
este banco de dados.
No SQL Server 2005 Express existem algumas limitaes de uso, como
limites do tamanho de banco de dados na ordem de 4 Gb, 50 instncias simultneas
(acessos ao banco), uso de memria RAM de 1 Gb no mximo, alm de limitaes
38

quanto a integrao de algumas outras ferramentas da Microsoft para se trabalhar
com banco de dados (OLAP Services/Data Mining, Notification Services, DTS, entre
outras).
importante ressaltar a importncia do SGBD como ferramenta principal na
manipulao dos dados, obtendo-se assim, isolamento da maioria dos comando
SQL em relao aplicao, alm de se poder trabalhar com os diversos recursos
oferecidas pelo SGBD.
Entretanto, no caso do sistema proposto, essas limitaes no influenciaro
na performance/durabilidade da base de dados do CEASA, considerando que o
nmero de instncias no deve ultrapassar trs ou quatro, a quantidade de memria
RAM disponvel nas mquinas do CEASA menor que 1 Gb e as estimativas de
crescimento da base de dados, mostram que as tecnologias atuais estaro
obsoletas caso seja atingida a marca de 4 Gb.
Na Figura 9, abaixo, pode-se observar uma queda no grau de crescimento do
banco de dados, comparando-se ano a ano. No foram utilizados valores reais
devido ao fato de o banco de dados e o sistema estarem em fase de
desenvolvimento. O grfico apenas ilustrativo.
Figura 9: Crescimento estimado do banco de dados Fonte: Autores deste projeto
Ano 1 Ano 2 Ano 3 Ano 4 Ano 5 Ano 6
0
2,5
5
7,5
10
12,5
15
17,5
20
22,5
25
27,5
30
32,5
35
Crescimento estimado do BD
Tamanho do banco
(Mb)
39

3.3.2 Stored Procedures
Um recurso do SGBD, muito utilizados neste projeto, foram as stored
procedures (procedimentos armazenados), caracterizadas como um conjunto de
comandos SQL para gerenciamento do banco de dados. Dentro das stored
procedures so encapsuladas tarefas repetitivas, parmetros de entrada e pode
haver retorno um valor de status (para indicar confirmao ou falha da execuo).
Esse recurso oferece vantagens, tais como:

Menor trfego de rede: vrias requisies podem ser implementadas
numa nica stored procedure;

Maior abstrao: os comandos SQL so armazenados nas stored
procedures, separando-os da aplicao;

Fcil manuteno: alterar uma procedure especfica mais fcil que
modificar o cdigo-fonte do sistema e recompil-lo;

Segurana: possvel implementar funes de segurana, como
notificaes, restries e registro de aes;

Automao: uma seqncia de aes sobre o banco de dados pode ser
programada dentro de uma procedure e executadas apenas com uma
requisio.
No caso do sistema para o CEASA, as stored procedures foram utilizadas
para implementar funes como controle de login de usurio, manuteno de dados
(salvar, excluir, alterar), realizar consultas e executar clculos sobre os dados.
Para cada tabela do banco de dados, existem procedures especficas, tanto
com as funes comuns (salvar, excluir, alterar, consultas), quanto funes
implcitas para o usurio, como clculos sobre os dados existentes e/ou inseridos.
As procedures so executadas a partir das classes programadas, que tem por
funo conectar as solicitaes do usurio s entidades do banco de dados, por
meio das aes dos usurios feitas por meio das interfaces.
3.3.3 Diagrama do Banco de Dados
Inicialmente, o banco de dados proposto contm o mnimo de tabelas
necessrias, assim como atributos e relacionamentos. Com esse banco de dados, o
qual focado no escopo do CEASA, possvel ter controle e viso mais
aprofundados sobre sua estrutura, e assim, gerenciar com maior preciso as
40

necessidades e modificaes sobre o mesmo.
Existem algumas tabelas a serem definidas para aproximao maior do BD
com o funcionamento completo e real de toda estrutura do CEASA, porm a
inteno primria do banco e do projeto, como j explicado, a de solver o problema
de gerenciamento dos permissionrios, utilizando apenas as variveis mais
determinantes para tal.
Abaixo, na Figura 10, o atual banco de dados mostrado por meio do
diagrama de entidades relacionais (DER):

Figura 10: Diagrama de Banco de Dados Fonte: Autores deste projeto
41

3.4 Implementao em Java
A linguagem de programao Java definida como orientada a objetos. A
viso do paradigma de orientao a objetos fornece uma abstrao muito prxima
ao mundo real, organiza a estrutura do sistema, encapsula atributos e possibilita um
fcil entendimento do mesmo.
A separao dos objetos, relacionados as suas respectivas classes,
modulariza a aplicao, fazendo com que a mesma seja constituda por diferentes
setores, que podem ser implementados separadamente e, portanto, dividindo uma
grande tarefa em outras menores, facilitando o trabalho de programao.
No sistema proposto para o CEASA, as classes tm como funes principais
trabalhar as interfaces e requerer os procedimentos ao banco de dados. As
seguintes classes foram implementadas, at o presente momento:

Conexo: classe responsvel por instanciar a conexo do sistema com o
banco de dados, por meio de uma conexo ODBC, utilizando o SQL
Server. Essa classe herdada pelas demais;

Login: implementa a interface de login geral do sistema e chama a
procedure responsvel;

Consultar: essa classe contm as funes de pesquisa e consulta,
universais para todo o sistema, sendo herdada pelas outras classes;

Contratual: fornece a viso geral do contrato e permite gerenciar
mudanas no mesmo;

Pavilhes: controle do cadastro de pavilhes;

Permissionrio: controle do cadastro dos permissionrios instalados;

Tipo_local: controle do cadastro de locais nos pavilhes.
As interfaces implementadas seguem um padro de esquema de cores, de
estilo de botes, de disposio de itens, de forma a tornar a visualizao mais
agradvel e prover uma experincia de usurio mais intuitiva. Na Figura 11, abaixo,
um exemplo da interface, na tela de gerenciamento de contratos.
42

Figura 11: Tela de controle de contratos do sistema Fonte: Autores deste projeto
3.5 Resultados Esperados x Atingidos
Analisando a proposta inicial, comparando-a com o sistema no atual estgio
(ainda um prottipo), possvel ter uma viso satisfatria sobre as metas que
foram alcanadas, mesmo levando em conta as ressalvas.
Desde a fase em que foram definidas as limitaes e dificuldades do CEASA,
foi estabelecido que a meta principal do sistema era atingir o escopo das atividades
do CEASA e sanar as principais deficincias.
A atual verso do sistema no est completa, ainda so necessrios alguns
ajustes e testes em ambiente real.
Com o simples banco de dados montado, aliado estrutura de interfaces e
programao implementadas at o momento, houve melhoras significativas
43

percebidas, citando-as:

Melhora da segurana: com a criao de usurio e senhas para acessar
os dados, o acesso ao sistema ser restrito;

No existem dados redundantes: devido modelagem do banco de
dados de acordo com as regras de criao de entidades;

Organizao dos dados: os dados esto devidamente separados dentro
de seus domnios, alm de se inter-relacionarem corretamente;

Interface de usurio: as interfaces, montadas de forma a oferecer uma
viso clara e objetiva de todos os processos so de fcil entendimento.
Oferecem recursos de edio e consultas.
No entanto, existem detalhes a serem implementados, destacando-se o clculo
de energia eltrica a ser pago por cada permissionrio, que ocorre de forma
diferente dos outros servios a serem pagos.
Algumas regras de negcio precisam ser mais bem estudadas, h restries no
banco de dados que devem ser implementadas a fim de reduzir riscos de alteraes
indevidas por usurios, existem tarefas que podem ser automatizadas (ocultas para
o usurio), o mdulo de gerenciamento de relatrios precisa ser idealizado, a
interface precisa ser mais trabalhada, dentre outros a serem levantados aps os
testes em ambiente real.
Assim, ento, neste captulo ficam descritos todos os passos, desde o
levantamento das necessidades do CEASA, descrio de todo o processo de
implementao das solues propostas e impresses finais sobre o resultado obtido.
44

CONCLUSO
Neste projeto, foram abordadas, de forma geral, as etapas de
desenvolvimento de sistemas, embora no tenham sido executadas formalmente
dentro das especificaes de engenharia de software, pois no h, por exemplo,
documentao formatada do sistema.
Porm, o objetivo deste projeto foi, basicamente, a melhora dos processos do
CEASA de So Jos do Rio Preto, e, aps avaliaes sobre a organizao foi
definido o escopo das atividades, centradas no controle de permissionrios.
Portanto foram executadas diversas etapas at a chegada s concluses
finais, comeando pelos contatos com o CEASA, levantamento de escopo e
requisitos de sistema, observao de processos e dificuldades envolvidas, pesquisa
bibliogrfica sobre tecnologias envolvidas para desenvolver o sistema proposto e
finalmente a implementao do sistema at o seu atual estgio.
O problema maior definido foi a forma de gerenciamento dos dados. Por essa
razo, o sistema comeou a ser idealizado partindo apenas do banco de dados,
contendo as principais variveis do contexto do CEASA. Aps o modelo bsico do
banco de dados estar pronto, iniciou-se a implementao em Java, a fim de
desenvolver interfaces que se comunicassem com o banco de dados.
O resultado atingido foi consideravelmente satisfatrio e, problemas relativos
aos dados como redundncia, falta de integridade, desorganizao, e acesso
irrestrito foram reduzidos abruptamente com o sistema. No se pode afirmar que
houve reduo total, pois o sistema ainda no se encontra totalmente implementado
conforme planejado e no houve testes em ambiente real.
Um detalhe importante, que certamente influencia positivamente para a
aprovao do sistema em suas funes, so as interfaces para o usurio, que
oferecem um meio simples e interativo de se trabalhar com as principais variveis.
Como proposta para continuidade deste projeto, sugere-se o aprimoramento
do sistema atual, assim como acrscimo de novos mdulos a fim de abranger todas
as tarefas administrativas do CEASA.
Para outros projetos, sugere-se um estudo da viabilidade de integrao de
todos os CEASAs do Estado de So Paulo, por meio de um sistema nico via
Internet e, o reaproveitamento das idias e conceitos principais do presente sistema
desenvolvido para adaptao organizaes, pblicas ou particulares, que
45

trabalhem com locao de espaos e disponibilidade de servios.
Este projeto pode ser visto como uma proposta de informatizao e melhoria
de processos para todas as organizaes as pblicas que trabalham seus processos
e dados de forma ineficaz e sem integridade.
46

REFERNCIAS BIBLIOGRFICAS
CEAGESP. Portal da CEAGESP. Disponvel em: <www.ceagesp.gov.br> Acesso
em 05 de Abril de 2007
CEASA. Planilha CES JR Fev/2007. CEASA So Jos do Rio Preto, 2007
CEASA. Portal do CEASA. Disponvel em: <www.ceasa.gov.br> Acesso em: 15 de
Abril de 2007
DEITEL, H. M. e DEITEL P. J. Java Como Programar. 4 ed. Porto Alegre,
Bookman, 2002
ELMASRI, R. e NAVATHE, S. B. Sistemas de Banco de Dados. 4 ed, So Paulo,
Pearson, 2005
FERNANDES J. Departamento de Informtica e Matemtica Aplicada da UFRN.
Disponvel em: <www.dimap.ufrn.br> Acesso em: 23 de Abril de 2007
GOOGLE. Google Earth. Disponvel em: <http://earth.google.com> Acesso em:17
de Abril de 2007
HAMCHER, S. Sistemas de Informao Gerenciais. Disponvel em:
<http://www.ind.puc-rio.br/Cursos/sig/Apostila.htm> Acesso em: 17 de abril de 2007
INDRUSIAK, L. S. Linguagem Java. Disponvel em:
<www.inf.ufrgs.br/tools/java/introjava.pdf> Acesso em: 5 de maio de 2007
INFOWESTER. Linguagem Java. Disponvel em: <www.infowester.com> Acesso
em: 20 de abril de 2007
MAAS, A. V. Administrao de Sistemas de Informao. 6 ed. So Paulo,
Editora rica, 2005
MARCONI, M. A. e LAKATOS, E. M. Fundamentos da Metodologia Cientfica. 6
ed. So Paulo, Atlas, 2005
RICARTE, I. L. M. Bancos de Dados Relacionais. Disponvel em:
<http://www.dca.fee.unicamp.br/cursos/PooJava/javadb/bdrel.htm> Acesso em: 10
de maio de 2007
SOUZA, M. de. Data Mining. Disponvel em:
<http://www.imasters.com.br/artigo/1482/bi/data_mining> Acesso em: 10 de maio de
2007
Sun Microsystems. Site da Sun. Disponvel em: <www.sun.com> Acesso em: 23 de
abril de 2007
TEIXEIRA, G. As Ambiguidades do Conceito de Informao. Disponvel em:
<http://www.serprofessoruniversitario.pro.br>. Acesso em: 10 de maio de 2007
47

APNDICE 1
Script de criao das tabelas do banco de dados:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[permissionarios]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[permissionarios](
[per_codigo] [int] IDENTITY(1,1) NOT NULL,
[per_nome] [varchar](80) NOT NULL,
[per_CPF] [varchar](20) NOT NULL unique,
[per_empresa] [varchar](80) NULL,
[per_CNPJ] [varchar](20) NULL,
[per_tel] [int] NULL,
PRIMARY KEY CLUSTERED
(
[per_codigo] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY],
UNIQUE NONCLUSTERED
(
[per_CPF] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[servicos]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[servicos](
[ser_codigo] [int] IDENTITY(1,1) NOT NULL,
[ser_nome] [varchar](40) NOT NULL,
PRIMARY KEY CLUSTERED
(
[ser_codigo] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[usuarios]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[usuarios](
[usuario] [varchar](20) NOT NULL unique,
[senha] [varchar](10) NOT NULL,
[usuNome] [varchar](80) NOT NULL
) ON [PRIMARY]
48

END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[divisao]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[divisao](
[div_codigo] [int] IDENTITY(1,1) NOT NULL,
[con_codigo] [int] NOT NULL,
[per_codigo] [int] NOT NULL,
[per_nome] [varchar](80) NOT NULL,
[des_mes] [varchar](20) NOT NULL,
[des_ano] [int] NOT NULL,
[des_valor] [float] NOT NULL,
[con_m2] [float] NOT NULL,
[ser_nome] [varchar](40) NOT NULL,
[AreaTotal] [float] NOT NULL,
[AreaDeDivisao] [float] NOT NULL,
[Pagamento] [float] NOT NULL,
PRIMARY KEY CLUSTERED
(
[div_codigo] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[pavilhao]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[pavilhao](
[pav_codigo] [int] IDENTITY(1,1) NOT NULL,
[pav_nome] [varchar](50) NOT NULL unique,
PRIMARY KEY CLUSTERED
(
[pav_codigo] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[contratos]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[contratos](
[con_codigo] [int] IDENTITY(1,1) NOT NULL,
[per_codigo] [int] NOT NULL,
[tip_codigo] [int] NOT NULL,
[con_m2] [float] NOT NULL,
[con_contrato] [int] NOT NULL unique,
PRIMARY KEY CLUSTERED
(
49

[con_codigo] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[cont_servicos]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[cont_servicos](
[con_codigo] [int] NOT NULL,
[ser_codigo] [int] NOT NULL,
PRIMARY KEY CLUSTERED
(
[con_codigo] ASC,
[ser_codigo] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[despesas]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[despesas](
[des_codigo] [int] IDENTITY(1,1) NOT NULL,
[ser_codigo] [int] NOT NULL,
[des_mes] [varchar](20) NOT NULL,
[des_ano] [int] NOT NULL,
[des_valor] [float] NOT NULL,
PRIMARY KEY CLUSTERED
(
[des_codigo] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[tipo_local]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[tipo_local](
[tip_codigo] [int] IDENTITY(1,1) NOT NULL,
[tip_nome] [varchar](50) NOT NULL unique,
[tip_TPRU] [float] NOT NULL,
[pav_codigo] [int] NULL,
PRIMARY KEY CLUSTERED
(
[tip_codigo] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
50

GO
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id =
OBJECT_ID(N'[dbo].[FK__contratos__per_c__0519C6AF]') AND parent_object_id =
OBJECT_ID(N'[dbo].[contratos]'))
ALTER TABLE [dbo].[contratos] WITH CHECK ADD FOREIGN KEY([per_codigo])
REFERENCES [dbo].[permissionarios] ([per_codigo])
GO
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id =
OBJECT_ID(N'[dbo].[FK__contratos__tip_c__060DEAE8]') AND parent_object_id =
OBJECT_ID(N'[dbo].[contratos]'))
ALTER TABLE [dbo].[contratos] WITH CHECK ADD FOREIGN KEY([tip_codigo])
REFERENCES [dbo].[tipo_local] ([tip_codigo])
GO
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id =
OBJECT_ID(N'[dbo].[FK__cont_serv__con_c__0AD2A005]') AND parent_object_id =
OBJECT_ID(N'[dbo].[cont_servicos]'))
ALTER TABLE [dbo].[cont_servicos] WITH CHECK ADD FOREIGN KEY([con_codigo])
REFERENCES [dbo].[contratos] ([con_codigo])
GO
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id =
OBJECT_ID(N'[dbo].[FK__cont_serv__ser_c__0BC6C43E]') AND parent_object_id =
OBJECT_ID(N'[dbo].[cont_servicos]'))
ALTER TABLE [dbo].[cont_servicos] WITH CHECK ADD FOREIGN KEY([ser_codigo])
REFERENCES [dbo].[servicos] ([ser_codigo])
GO
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id =
OBJECT_ID(N'[dbo].[FK__despesas__ser_co__3D5E1FD2]') AND parent_object_id =
OBJECT_ID(N'[dbo].[despesas]'))
ALTER TABLE [dbo].[despesas] WITH CHECK ADD FOREIGN KEY([ser_codigo])
REFERENCES [dbo].[servicos] ([ser_codigo])
GO
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id =
OBJECT_ID(N'[dbo].[FK__tipo_loca__pav_c__7F60ED59]') AND parent_object_id =
OBJECT_ID(N'[dbo].[tipo_local]'))
ALTER TABLE [dbo].[tipo_local] WITH CHECK ADD FOREIGN KEY([pav_codigo])
REFERENCES [dbo].[pavilhao] ([pav_codigo])
Script de criao das stored procedures:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[spPermissionarios]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'create procedure
[dbo].[spPermissionarios](
@per_codigo int,
@per_nome varchar(80),
@per_CPF varchar(20),
@per_empresa varchar(80),
@per_CNPJ varchar(20),
@per_tel int)
as begin
begin transaction
if (@per_codigo = 0) begin
insert into permissionarios values (@per_nome, @per_CPF,
@per_empresa, @per_CNPJ, @per_tel)
51

end else begin
update permissionarios set
per_nome = @per_nome,
per_CPF = @per_CPF,
per_empresa = @per_empresa,
per_CNPJ = @per_CNPJ,
per_tel = @per_tel
where per_codigo = @per_codigo
end
commit transaction
end'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[spPermissionariosSelect]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'create procedure
[dbo].[spPermissionariosSelect] (
@per_codigo int
)
as begin
if (@per_codigo = 0) begin
select * from permissionarios order by per_nome
end else begin
select * from permissionarios where per_codigo=@per_codigo
end
end'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[spPermissionariosExcluir]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'create procedure
[dbo].[spPermissionariosExcluir] (
@per_codigo int
)as begin
begin transaction
delete from permissionarios where per_codigo=@per_codigo
commit transaction
end'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
52

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[spContratosSelect]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'CREATE procedure
[dbo].[spContratosSelect] (
@con_codigo int
) as
begin
select a.con_codigo, a.con_contrato, a.con_m2, a.per_codigo,
b.per_nome, a.tip_codigo, c.tip_nome, c.tip_TPRU
from contratos a, permissionarios b, tipo_local c
where a.con_codigo = @con_codigo and
a.per_codigo = b.per_codigo and
a.tip_codigo = c.tip_codigo
end'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[spDivisaoInsert]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'create procedure
[dbo].[spDivisaoInsert](
@des_mes varchar(20),
@des_ano int,
@ser_codigo int
)as
begin
insert into divisao
select b.con_codigo, a.per_codigo, a.per_nome, c.des_mes,
c.des_ano, c.des_valor, b.con_m2, e.ser_nome,
(select sum(con_m2)from contratos) AreaTotal,
sum (b.con_m2) over (partition by d.ser_codigo)
AreaDeDivisao,
(c.des_valor / sum(b.con_m2) over (partition by
d.ser_codigo)) * b.con_m2 Pagamento
from permissionarios a, contratos b, despesas c, cont_servicos
d, servicos e
where a.per_codigo = b.per_codigo and
c.ser_codigo = e.ser_codigo and
d.ser_codigo = c.ser_codigo and
d.con_codigo = b.con_codigo and
c.des_mes = @des_mes and
c.des_ano = @des_ano and
c.ser_codigo = @ser_codigo
end'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[spContratoExcluir]') AND type in (N'P', N'PC'))
BEGIN
53

EXEC dbo.sp_executesql @statement = N'create procedure
[dbo].[spContratoExcluir] (
@con_codigo int
)as
begin
delete from cont_servicos where con_codigo = @con_codigo
delete from contratos where con_codigo = @con_codigo
end'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[spContratoInsert]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'CREATE procedure
[dbo].[spContratoInsert] (
@per_codigo int,
@tip_codigo int,
@con_m2 float,
@con_contrato int
) as
begin
insert into contratos values (@per_codigo, @tip_codigo,
@con_m2, @con_contrato)
end'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[spContratoUpdate]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'CREATE procedure
[dbo].[spContratoUpdate] (
@con_codigo int,
@per_codigo int,
@tip_codigo int,
@con_m2 float,
@con_contrato int
) as
begin
update contratos set
per_codigo = @per_codigo,
tip_codigo = @tip_codigo,
con_m2 = @con_m2,
con_contrato = @con_contrato
where
con_codigo = @con_codigo
end'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
54

GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[spServicosSelectFull]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'create procedure
[dbo].[spServicosSelectFull]
as begin
select * from servicos
end'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[spCodigoServicos]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'create procedure
[dbo].[spCodigoServicos](
@ser_nome varchar(40)
)as
begin
select ser_codigo from servicos where ser_nome = @ser_nome
end'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[spDespesaSelect]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'create procedure
[dbo].[spDespesaSelect](
@des_codigo int
)as
begin
select a.ser_nome, b.des_mes, b.des_ano, b.des_valor
from servicos a, despesas b
where b.des_codigo = @des_codigo and
a.ser_codigo = b.ser_codigo
end'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[spConsultaContratoServicos]') AND type in (N'P', N'PC'))
BEGIN
55

EXEC dbo.sp_executesql @statement = N'CREATE procedure
[dbo].[spConsultaContratoServicos] (
@con_codigo int,
@ser_codigo int
) as
begin
select * from cont_servicos where con_codigo = @con_codigo and
ser_codigo = @ser_codigo;
end'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[spInserirContratoServicos]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'CREATE procedure
[dbo].[spInserirContratoServicos] (
@con_codigo int,
@ser_codigo int
) as
begin
create table #temporaria (
cont_codigo int,
serv_codigo int
)
insert into #temporaria
select con_codigo, ser_codigo
from cont_servicos
where con_codigo = @con_codigo and ser_codigo = @ser_codigo
DECLARE @contador int
set @contador = (Select Count(*) From #temporaria)
if (@contador = 0) begin
insert into cont_servicos values (@con_codigo,
@ser_codigo)
end
end'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[spDeletarContratoServicos]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'CREATE procedure
[dbo].[spDeletarContratoServicos] (
@con_codigo int,
@ser_codigo int
) as
begin
create table #temporaria (
cont_codigo int,
serv_codigo int
56

)
insert into #temporaria
select con_codigo, ser_codigo
from cont_servicos
where con_codigo = @con_codigo and ser_codigo = @ser_codigo
DECLARE @contador int
set @contador = (Select Count(*) From #temporaria)
if (@contador <> 0) begin
delete from cont_servicos where con_codigo = @con_codigo
and ser_codigo = @ser_codigo
end
end
'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[spUsuariosAutenticacao]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'CREATE procedure
[dbo].[spUsuariosAutenticacao] (
@usuario varchar(20),
@senha varchar(10)
) as
begin
select * from usuarios where usuario=@usuario and senha=@senha
end
'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[spDespesaExcluir]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'CREATE procedure
[dbo].[spDespesaExcluir] (
@des_codigo int
) as
begin
delete from despesas where des_codigo = @des_codigo
end'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[spDespesaUpdate]') AND type in (N'P', N'PC'))
57

BEGIN
EXEC dbo.sp_executesql @statement = N'CREATE procedure
[dbo].[spDespesaUpdate] (
@des_codigo int,
@ser_codigo int,
@des_mes varchar(20),
@des_ano int,
@des_valor float
)as begin
update despesas set
ser_codigo = @ser_codigo,
des_mes = @des_mes,
des_ano = @des_ano,
des_valor = @des_valor
where des_codigo = @des_codigo
end'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[spDespesasInsert]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'Create procedure
[dbo].[spDespesasInsert](
@ser_codigo int,
@des_mes varchar(20),
@des_ano int,
@des_valor int
)
as begin
insert into despesas values
(
@ser_codigo,
@des_mes,
@des_ano,
@des_valor
)
end
'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[spDeletarDivisao]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'create procedure
[dbo].[spDeletarDivisao] (
@ser_nome varchar(40),
@des_mes varchar(20),
@des_ano int
58

)as
begin
delete from divisao where ser_nome = @ser_nome and des_mes = @des_mes
and des_ano = @des_ano
end'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[spPavilhaoInserir]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'CREATE procedure
[dbo].[spPavilhaoInserir](
@pav_codigo int,
@pav_nome varchar(50)
)
as begin
if (@pav_codigo = 0) begin
insert into pavilhao values(
@pav_nome
)
end else begin
update pavilhao set
pav_nome = @pav_nome
where pav_codigo = @pav_codigo
end
end'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[spPavilhaoSelect]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'create procedure
[dbo].[spPavilhaoSelect] (
@pav_codigo int
) as begin
select * from pavilhao where pav_codigo=@pav_codigo
end'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[spPavilhaoExcluir]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'create procedure
[dbo].[spPavilhaoExcluir] (
@pav_codigo int
59

)as begin
begin transaction
delete from pavilhao where pav_codigo=@pav_codigo
commit transaction
end'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[spPavilhaoSelectFull]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'create procedure
[dbo].[spPavilhaoSelectFull]
as begin
select * from pavilhao
end'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[spCodigoPavilhao]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'create procedure
[dbo].[spCodigoPavilhao](
@pav_nome varchar(50)
)as
begin
select pav_codigo from pavilhao where pav_nome = @pav_nome
end'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[spLocalEspecifico]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'create procedure
[dbo].[spLocalEspecifico](
@tip_codigo int
)as
begin
select a.pav_nome, b.*
60

from pavilhao a, tipo_local b
where b.tip_codigo = @tip_codigo and
a.pav_codigo = b.pav_codigo
end'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[spLocalExcluir]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'CREATE procedure
[dbo].[spLocalExcluir] (
@tip_codigo int
) as
begin
delete from tipo_local where tip_codigo = @tip_codigo
end'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[spLocalUpdate]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'CREATE procedure
[dbo].[spLocalUpdate] (
@tip_codigo int,
@tip_nome varchar(50),
@tip_TPRU float,
@pav_codigo int
)as begin
update tipo_local set
tip_nome = @tip_nome,
tip_TPRU = @tip_TPRU,
pav_codigo = @pav_codigo
where tip_codigo = @tip_codigo
end'
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[spLocalInsert]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'Create procedure
[dbo].[spLocalInsert] (
@tip_nome varchar(50),
@tip_TPRU float,
61

@pav_codigo int
)
as begin
insert into dbo.tipo_local values
(
@tip_nome,
@tip_TPRU,
@pav_codigo
)
end
'
END
62

APNDICE 2
Implementao das classe em Java:
/*
* tipo_local.java
*
* Created on 24 de Maio de 2007, 14:49
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package DataAcess;
import java.sql.*;
import javax.swing.*;
import java.util.Date;
/**
*
* @author USUARIO
*/
public class tipo_local extends Conexao{

private int locCodi;
public int getlocCodi() {return locCodi;}
public void setlocCodi(int value) {locCodi = value;}

private String locNome;
public String getlocNome() {return locNome;}
public void setlocNome(String value) {locNome = value;}

private float locTPRU;
public float getlocTPRU() {return locTPRU;}
public void setlocTPRU(float value) {locTPRU = value;}


private int PavCodi;
public int getPavCodi() {return PavCodi;}
public void setPavCodi(int value) {PavCodi = value;}

private String PavNome;
public String getPavNome() {return PavNome;}
public void setPavNome(String value) {PavNome = value;}
//private String PavNome;
//public String getPavNome() {return PavNome;}

/** Creates a new instance of tipo_local */
public tipo_local() {
locCodi = 0;
locNome = "";
locTPRU = 0;
PavCodi = 0;
PavNome = "";

}

public boolean retorno;

public boolean inserir() {
63

retorno = false;
try {
clExec = con.prepareCall("{call spLocalInsert(?, ?, ?)}");
//clExec.setInt(1, pavCodi);
clExec.setString(1, locNome);
clExec.setFloat(2, locTPRU);
clExec.setInt(3, PavCodi);


clExec.executeUpdate();
clExec.close();

retorno = true;
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
return retorno;
}

public boolean alterar() {
retorno = false;
try {
clExec = con.prepareCall("{call spLocalUpdate(?, ?, ?, ?)}");
clExec.setInt(1, locCodi);
clExec.setString(2, locNome);
clExec.setFloat(3, locTPRU);
clExec.setInt(4, PavCodi);


clExec.executeUpdate();
clExec.close();

retorno = true;
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
return retorno;
}


public boolean pesquisar() {
retorno = false;
ResultSet rs;
try {
clExec = con.prepareCall("{call spLocalEspecifico(?)}");
clExec.setInt(1, getlocCodi());
rs = clExec.executeQuery();
if (rs.next()) {
this.setPavNome(rs.getString("pav_nome").trim());
this.setlocCodi(rs.getInt("tip_codigo"));
this.setlocNome(rs.getString("tip_nome").trim());
this.setlocTPRU(rs.getFloat("tip_TPRU"));
//this.setPavNome(rs.getString("pav_nome").trim());


retorno = true;
}
clExec.close();
64

}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
return retorno;
}

public ResultSet listarTodos() {
ResultSet rs = null;
try {
clExec = con.prepareCall("{call spPavilhaoSelectFull}");

rs = clExec.executeQuery();
//PavCodi = rs.getInt("pav_codigo");
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
return rs;
}

public boolean PegarCodigo() {
retorno = false;
ResultSet rs;
try {
clExec = con.prepareCall("{call spCodigoPavilhao (?)}");
clExec.setString(1, PavNome);
rs = clExec.executeQuery();
if (rs.next()) {
this.setPavCodi(rs.getInt("pav_codigo"));


retorno = true;
}
clExec.close();
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
return retorno;
}


public boolean excluir() {
retorno = false;
try {
clExec = con.prepareCall("{call spLocalExcluir(?)}");
clExec.setInt(1, getlocCodi());
clExec.executeUpdate();
clExec.close();
retorno = true;
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
return retorno;
}

65

}
/*
* servicos.java
*
* Created on 6 de Junho de 2007, 12:18
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package DataAcess;
import interfaces.consultas;
import java.sql.*;
import javax.swing.*;
import java.util.Date;
/**
*
* @author USUARIO
*/
public class servicos{

/** Creates a new instance of servicos */



private int vanguarda;
public int getvanguarada() {return vanguarda;}
public void setvanguarda(int value) {vanguarda = value;}


private int portaria;
public int getportaria() {return portaria;}
public void setportaria(int value) {portaria = value;}


private int limpeza;
public int getlimpeza() {return limpeza;}
public void setlimpeza(int value) {limpeza = value;}

private int energia;
public int getenergia() {return energia;}
public void setenergia(int value) {energia = value;}

private int telefone;
public int gettelefone() {return telefone;}
public void settelefone(int value) {telefone = value;}

private int matApli;
public int getmatApli() {return matApli;}
public void setmatApli(int value) {matApli = value;}

private int manutencao;
public int getmanutencao() {return manutencao;}
public void setmanutencao(int value) {manutencao = value;}

private int IPTU;
public int getIPTU() {return IPTU;}
public void setIPTUa(int value) {IPTU = value;}

private int outros;
public int getoutros() {return outros;}
66

public void setoutros(int value) {outros = value;}

Conexao cone = new Conexao();

public servicos() {
vanguarda = 0;
portaria = 0;
limpeza = 0;
energia = 0;
telefone = 0;
matApli = 0;
manutencao = 0;
IPTU = 0;
outros = 0;
}

public boolean retorn;

public boolean setServicosCodigo(){
retorn = false;
ResultSet rs;

try {


String sql;
sql = "SELECT ser_codigo FROM servicos WHERE ser_nome = 'Vanguarda'";
cone.st = cone.con.createStatement();
rs = cone.st.executeQuery(sql);
if(rs.next()){
vanguarda = rs.getInt("ser_codigo");
}

sql = "SELECT ser_codigo FROM servicos WHERE ser_nome = 'Premium Portaria'";
rs = cone.st.executeQuery(sql);
if(rs.next()){
portaria = rs.getInt("ser_codigo");
System.out.println(portaria);
}

sql = "SELECT ser_codigo FROM servicos WHERE ser_nome = 'Premium Limpeza'";
rs = cone.st.executeQuery(sql);
if(rs.next()){
limpeza = rs.getInt("ser_codigo");
System.out.println(limpeza);
}

sql = "SELECT ser_codigo FROM servicos WHERE ser_nome = 'Energia Eltrica'";
rs = cone.st.executeQuery(sql);
if(rs.next()){
energia = rs.getInt("ser_codigo");
}

sql = "SELECT ser_codigo FROM servicos WHERE ser_nome = 'Telefone'";
rs = cone.st.executeQuery(sql);
if(rs.next()){
telefone = rs.getInt("ser_codigo");
}

sql = "SELECT ser_codigo FROM servicos WHERE ser_nome = 'Mat. Aplic. Indireta'";
rs = cone.st.executeQuery(sql);
if(rs.next()){
matApli = rs.getInt("ser_codigo");
67

}

sql = "SELECT ser_codigo FROM servicos WHERE ser_nome = 'Manuteno e Reparos'";
rs = cone.st.executeQuery(sql);
if(rs.next()){
manutencao = rs.getInt("ser_codigo");
}

sql = "SELECT ser_codigo FROM servicos WHERE ser_nome = 'IPTU'";
rs = cone.st.executeQuery(sql);
if(rs.next()){
IPTU = rs.getInt("ser_codigo");
}

sql = "SELECT ser_codigo FROM servicos WHERE ser_nome = 'Outros'";
rs = cone.st.executeQuery(sql);
if(rs.next()){
outros = rs.getInt("ser_codigo");
}
rs.close();
//st.close();
cone.desconecta();

}
catch (Exception ex) {
JOptionPane.showMessageDialog(null, "Ocorreu uma falha durante execuo da operao.",
"Ateno", JOptionPane.ERROR_MESSAGE);
JOptionPane.showMessageDialog(null, cone.msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);

}
return retorn;
//}

}


public boolean autenticaVanguarda(int conCodig){
retorn = false;
ResultSet rs;
try{
contratual cont = new contratual();

cone.clExec = cone.con.prepareCall("{call spConsultaContratoServicos(?,?)}");
cone.clExec.setInt(1, conCodig);
cone.clExec.setInt(2, vanguarda);
rs = cone.clExec.executeQuery();
System.out.println("teste");
if(cont.getconVanguarda() == true){
System.out.println("teste2");
if(! rs.next()){

System.out.println("teste3");
cone.clExec = cone.con.prepareCall("{call spInserirContratoServicos (?,?)}");
cone.clExec.setInt(1, conCodig);
cone.clExec.setInt(2, vanguarda);
cone.clExec.executeUpdate();

}
else{
System.out.println("teste4");
}
}
68

else{
if(cont.getconVanguarda() == false){

if(rs.next()){

System.out.println("teste 6");
cone.clExec = cone.con.prepareCall("{call spDeletarContratoServicos (?,?)}");
cone.clExec.setInt(1, conCodig);
cone.clExec.setInt(2, vanguarda);
cone.clExec.executeUpdate();

}
else{
System.out.println("teste");

}
}
else{
System.out.println("bla bla");
}
}
rs.close();
cone.clExec.close();

}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, cone.msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}

return retorn;

}

public ResultSet listarTodos() {
ResultSet rs = null;
try {
cone.clExec = cone.con.prepareCall("{call spServicosSelectFull}");

rs = cone.clExec.executeQuery();

}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, cone.msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
return rs;
}





}
/*
* permissionario.java
*
* Created on 18 de Maio de 2007, 09:57
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
69

package DataAcess;
import interfaces.consultas;
import java.sql.*;
import javax.swing.*;
import java.util.Date;
/**
*
* @author USUARIO
*/
public class permissionario extends Conexao{

/** Creates a new instance of permissionario */
private int perCodi;
public int getperCodi() {return perCodi;}
public void setperCodi(int value) {perCodi = value;}


private String perNome;
public String getperNome() {return perNome;}
public void setperNome(String value) {perNome = value;}


private String perCPF;
public String getperCPF() {return perCPF;}
public void setperCPF(String value) {perCPF = value;}


private String perEmpresa;
public String getperEmpresa() {return perEmpresa;}
public void setperEmpresa(String value) {perEmpresa = value;}


private String perCNPJ;
public String getperCNPJ() {return perCNPJ;}
public void setperCNPJ(String value) {perCNPJ = value;}


private int perTel;
public int getperTel() {return perTel;}
public void setperTel(int value) {perTel = value;}


public permissionario() {
perCodi = 0;
perNome = "";
perCPF = "";
perEmpresa = "";
perCNPJ = "";
perTel = 0;

}
public boolean retorno;
public boolean inserir() {
retorno = false;
try {
clExec = con.prepareCall("{call spPermissionarios(?,?,?,?,?,?)}");
clExec.setInt(1, 0);
clExec.setString(2, getperNome());
clExec.setString(3, getperCPF());
clExec.setString(4, getperEmpresa());
clExec.setString(5, getperCNPJ());
70

clExec.setInt(6, getperTel());



clExec.executeUpdate();

clExec.close();
retorno = true;
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
return retorno;
}



public boolean alterar() {
retorno = false;
try {
clExec = con.prepareCall("{call spPermissionarios(?,?,?,?,?,?)}");
clExec.setInt(1, getperCodi());
clExec.setString(2, getperNome());
clExec.setString(3, getperCPF());
clExec.setString(4, getperEmpresa());
clExec.setString(5, getperCNPJ());
clExec.setInt(6, getperTel());



clExec.executeUpdate();

clExec.close();
retorno = true;
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
return retorno;
}

public boolean pesquisar() {
retorno = false;
ResultSet rs;
try {
clExec = con.prepareCall("{call spPermissionariosSelect(?)}");
clExec.setInt(1, getperCodi());
rs = clExec.executeQuery();
if (rs.next()) {
this.setperCodi(rs.getInt("per_codigo"));
this.setperNome(rs.getString("per_nome").trim());
this.setperCPF(rs.getString("per_CPF").trim());
this.setperEmpresa(rs.getString("per_empresa").trim());
this.setperCNPJ(rs.getString("per_CNPJ").trim());
this.setperTel(rs.getInt("per_tel"));

retorno = true;
}
clExec.close();
}
catch (SQLException ex) {
71

JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
return retorno;
}



public boolean excluir() {
retorno = false;
try {
clExec = con.prepareCall("{call spPermissionariosExcluir(?)}");
clExec.setInt(1, getperCodi());
clExec.executeUpdate();
clExec.close();
retorno = true;
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
return retorno;
}

}

/*
* pavilhoes.java
*
* Created on 24 de Maio de 2007, 09:33
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package DataAcess;
import java.sql.*;
import javax.swing.*;
import java.util.Date;
/**
*
* @author USUARIO
*/
public class pavilhoes extends Conexao{

private int pavCodi;
public int getpavCodi() {return pavCodi;}
public void setpavCodi(int value) {pavCodi = value;}

private String pavNome;
public String getpavNome() {return pavNome;}
public void setpavNome(String value) {pavNome = value;}

/** Creates a new instance of pavilhoes */
public pavilhoes() {
pavCodi = 0;
pavNome = "";
}
public boolean retorno;

public boolean inserir() {
72

retorno = false;
try {
clExec = con.prepareCall("{call spPavilhaoInserir(?,?)}");
clExec.setInt(1, 0);
clExec.setString(2, getpavNome());




clExec.executeUpdate();

clExec.close();
retorno = true;
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
return retorno;
}

public boolean alterar() {
retorno = false;
try {
clExec = con.prepareCall("{call spPavilhaoInserir(?,?)}");
clExec.setInt(1, getpavCodi());
clExec.setString(2, getpavNome());

clExec.executeUpdate();

clExec.close();
retorno = true;
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
return retorno;
}


public boolean pesquisar() {
retorno = false;
ResultSet rs;
try {
clExec = con.prepareCall("{call spPavilhaoSelect(?)}");
clExec.setInt(1, getpavCodi());
rs = clExec.executeQuery();
if (rs.next()) {
this.setpavCodi(rs.getInt("pav_codigo"));
this.setpavNome(rs.getString("pav_nome").trim());
retorno = true;
}
clExec.close();
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
return retorno;
}

public boolean excluir() {
73

retorno = false;
try {
clExec = con.prepareCall("{call spPavilhaoExcluir(?)}");
clExec.setInt(1, getpavCodi());
clExec.executeUpdate();
clExec.close();
retorno = true;
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
return retorno;
}
}
package DataAcess;
import java.sql.*;
import javax.swing.*;
public class Login extends Conexao {

private String usuario;
public String getusuario() {return usuario;}
public void setusuario(String value) {usuario = value;}

private String senha;
public String getsenha() {return senha;}
public void setsenha(String value) {senha = value;}

private String usuNome;
public String getUsuNome() {return usuNome;}
public void setUsuNome(String value) {usuNome = value;}



private boolean retorno;

public Login() {
usuario = "";
senha = "";
}

/**
*insere na tabela usurios um novo registro conforme os valores passados pelos mtodos
*<code>setUsuLogi(), setUsuSenh() e setUsuNome()</code>. Retorna <b>true</b> caso o registro
*seja efetuado ou <b>false</b> caso ocorra alguma exception.
*/
public boolean inserir() {
retorno = false;
try {
clExec = con.prepareCall("{call spUsuariosInsert(?, ?, ?)}");
clExec.setString(1, usuario);
clExec.setString(2,senha);
clExec.setString(3, usuNome);

clExec.executeUpdate();
retorno = true;
st.close();
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage(), "Erro", JOptionPane.ERROR_MESSAGE);
74

}
catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Erro", JOptionPane.ERROR_MESSAGE);
}
return retorno;
}

/**
*altera na tabela usurios o login conforme os valores passados pelos mtodos
*<code>setUsuLogi(), setUsuSenh() e setUsuNome()</code>. Retorna <b>true</b> caso o registro
*seja atualizado ou <b>false</b> caso ocorra alguma exception.
*/
public boolean alterar() {
retorno = false;
try {
clExec = con.prepareCall("{call spUsuariosUpdate(?, ?, ?)}");
clExec.setString(1, usuario);
clExec.setString(2, senha);
clExec.setString(3, usuNome);

clExec.executeUpdate();
retorno = true;
st.close();
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage(), "Erro", JOptionPane.ERROR_MESSAGE);
}
catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Erro", JOptionPane.ERROR_MESSAGE);
}
return retorno;
}

/**
*exclui na tabela usurios o login conforme o valor passado pelo mtodo
*<code>setUsuLogi()</code>. Retorna <b>true</b> caso o registro
*seja excludo ou <b>false</b> caso ocorra alguma exception.
*/
public boolean excluir() {
retorno = false;
try {
clExec = con.prepareCall("{call spUsuariosDelete(?)}");
clExec.setString(1, usuario);
clExec.executeUpdate();
retorno = true;
st.close();
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage(), "Erro", JOptionPane.ERROR_MESSAGE);
}
catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Erro", JOptionPane.ERROR_MESSAGE);
}
return retorno;
}


/**
*Pesquisa usurio pelo login obtido no mtodo getUsuLogi() e atribui todos os dados
*do usurio nos mtodos setUsuNome(), setUsuSenh() e setUsuTipo().
*Retorna <b>true</b> caso o login exista. Caso contrrio, retorna <b>false</b>.
*/
public boolean pesquisar() {
75

retorno = false;
ResultSet rs;
try {
System.out.println("entrou no pesquisar");
clExec = con.prepareCall("{call spUsuariosSelect(?)}");
clExec.setString(1, usuario);
rs = clExec.executeQuery();
if (rs.next()) {
System.out.println("encontrou registro");
usuario = rs.getString("usuario").trim();
senha = rs.getString("senha").trim();
usuNome = rs.getString("usuNome").trim();
retorno = true;
}
clExec.close();
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
return retorno;
}

/**
*Retorna <code>true</code> caso o valores passados pelos mtodos
*<code>setUsuLogi</code> e <code>setUsuSenh()</code> tenham sido encontrados
*no banco de dados. Caso contrrio, o retorno ser <code>false</code>.
*/
public boolean autenticarUsuario() {
ResultSet rs;
try {
clExec = con.prepareCall("{call spUsuariosAutenticacao(?, ?)}");
clExec.setString(1, usuario);
clExec.setString(2, senha);

rs = clExec.executeQuery();
if (rs.next()) {
usuario = rs.getString("usuario").trim();
usuNome = rs.getString("usuNome").trim();
retorno = true;
}
else {
System.out.println("gabriel 6");
retorno = false;
}
rs.close();
st.close();
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage(), "Erro", JOptionPane.ERROR_MESSAGE);
}
catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Erro", JOptionPane.ERROR_MESSAGE);
}
return retorno;
}

/**
*Retorna a quantidade de usuros cadastrados.
*Se houver uma exception durante a execuo do mtodo, o valor <code>-1</code> ser retornado.
*/
public int getQuantidadeUsuarios() {
ResultSet rs;
76

int qtd = 0;
try {
clExec = con.prepareCall("{call spUsuariosQuantidade}");
rs = clExec.executeQuery();
if (rs.next()) {
qtd = rs.getInt("usuQtde");
}
rs.close();
st.close();
}
catch (Exception e) {
qtd = -1;
JOptionPane.showMessageDialog(null, e.getMessage(), "Erro", JOptionPane.ERROR_MESSAGE);
}
return qtd;
}

}
/*
* despesa.java
*
* Created on 12 de Junho de 2007, 13:26
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package DataAcess;
import java.sql.*;
import javax.swing.*;
import java.util.Date;
/**
*
* @author USUARIO
*/
public class despesa extends Conexao{


private int desCodi;
public int getdesCodi() {return desCodi;}
public void setdesCodi(int value) {desCodi = value;}

private String desMes;
public String getdesMes() {return desMes;}
public void setdesMes(String value) {desMes = value;}

private int desAno;
public int getdesAno() {return desAno;}
public void setdesAno(int value) {desAno = value;}

private float desValor;
public float getdesValor() {return desValor;}
public void setdesValor(float value) {desValor = value;}


private int desSerCodi;
public int getdesSerCodi() {return desSerCodi;}
public void setdesSerCodi(int value) {desSerCodi = value;}

private String desSerNome;
public String getdesSerNome() {return desSerNome;}
public void setdesSerNome(String value) {desSerNome = value;}
77



/** Creates a new instance of despesa */
public despesa() {
desCodi = 0;
desMes = "";
desAno = 0;
desValor = 0;
desSerCodi = 0;
desSerNome = "";
}


public boolean retorno;




public boolean inserir() {
retorno = false;
//ResultSet rs;
try {
//String sql = "select * from despesas where ser_codigo = "+desSerCodi+" and des_mes"

clExec = con.prepareCall("{call spDespesasInsert(?, ?, ?, ?)}");
clExec.setInt(1, desSerCodi);
clExec.setString(2, desMes);
clExec.setInt(3, desAno);
clExec.setFloat(4, desValor);
clExec.executeUpdate();



clExec = con.prepareCall("{call spDivisaoInsert(?, ?, ?)}");
clExec.setString(1, desMes);
clExec.setInt(2, desAno);
clExec.setInt(3, desSerCodi);
clExec.executeUpdate();

clExec.close();

retorno = true;
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
return retorno;
}


public boolean alterar() {
retorno = false;
try {
clExec = con.prepareCall("{call spDespesaUpdate(?, ?, ?, ?, ?)}");
clExec.setInt(1, desCodi);
clExec.setInt(2, desSerCodi);
clExec.setString(3, desMes);
clExec.setInt(4, desAno);
clExec.setFloat(5, desValor);


clExec.executeUpdate();
78

clExec.close();

retorno = true;
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
return retorno;
}

public boolean excluir() {
retorno = false;
try {

clExec = con.prepareCall("{call spDespesaExcluir(?)}");
clExec.setInt(1, desCodi);
clExec.executeUpdate();


clExec = con.prepareCall("{call spDeletarDivisao(?, ?, ?)}");
clExec.setString(1, desSerNome);
clExec.setString(2, desMes);
clExec.setInt(3, desAno);
clExec.executeUpdate();

clExec.close();
retorno = true;
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
return retorno;
}



public boolean pesquisar() {
retorno = false;
ResultSet rs;
try {
clExec = con.prepareCall("{call spDespesaSelect(?)}");
clExec.setInt(1, getdesCodi());
rs = clExec.executeQuery();
if (rs.next()) {
this.setdesSerNome(rs.getString("ser_nome").trim());
this.setdesMes(rs.getString("des_mes").trim());
this.setdesAno(rs.getInt("des_ano"));
this.setdesValor(rs.getFloat("des_valor"));

retorno = true;
}
clExec.close();
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
79

return retorno;
}




public ResultSet verifica(){
ResultSet rs = null;
try {
System.out.println(desSerCodi);
System.out.println(desMes);
System.out.println(desAno);
String sql = "select * from despesas where ser_codigo = "+desSerCodi+" and des_mes = '"+desMes+"'
and des_ano = "+desAno+"";
System.out.println(sql);
st = con.createStatement();
rs = st.executeQuery(sql);
System.out.println("achou");
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
return rs;
}

public boolean PegarCodigo() {
retorno = false;
ResultSet rs;
try {
clExec = con.prepareCall("{call spCodigoServicos (?)}");
clExec.setString(1, desSerNome);
rs = clExec.executeQuery();
if (rs.next()) {
this.setdesSerCodi(rs.getInt("ser_codigo"));


retorno = true;
}
clExec.close();
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
return retorno;
}


public void updateDivisao(){
try {
clExec = con.prepareCall("{call spDeletarDivisao(?, ?, ?)}");
clExec.setString(1, desSerNome);
clExec.setString(2, desMes);
clExec.setInt(3, desAno);
clExec.executeUpdate();

clExec = con.prepareCall("{call spDivisaoInsert(?, ?, ?)}");
clExec.setString(1, desMes);
clExec.setInt(2, desAno);
clExec.setInt(3, desSerCodi);
clExec.executeUpdate();
80

clExec.close();
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
}
}
/*
* contratual.java
*
* Created on 1 de Junho de 2007, 09:53
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package DataAcess;
import java.sql.*;
import javax.swing.*;
import java.util.Date;
import java.util.Vector;
import javax.swing.JOptionPane;
/**
*
* @author USUARIO
*/
public class contratual extends Conexao{

private int conCodi;
public int getconCodi() {return conCodi;}
public void setconCodi(int value) {conCodi = value;}

private int conCont;
public int getconCont() {return conCont;}
public void setconCont(int value) {conCont = value;}

private float conMet;
public float getconMet() {return conMet;}
public void setconMet(float value) {conMet = value;}

private int perCodi;
public int getperCodi() {return perCodi;}
public void setperCodi(int value) {perCodi = value;}

private String perNome;
public String getperNome() {return perNome;}
public void setperNome(String value) {perNome = value;}

private int locCodi;
public int getlocCodi() {return locCodi;}
public void setlocCodi(int value) {locCodi = value;}

private String locNome;
public String getlocNome() {return locNome;}
public void setlocNome(String value) {locNome = value;}

private float locTPRU;
public float getlocTPRU() {return locTPRU;}
public void setlocTPRU(float value) {locTPRU = value;}
81


private boolean conVanguarda;
public boolean getconVanguarda() {return conVanguarda;}
public void setconVanguarda(boolean value) {conVanguarda = value;}

private boolean conPortaria;
public boolean getconPortaria() {return conPortaria;}
public void setconPortaria(boolean value) {conPortaria = value;}

private boolean conLimpeza;
public boolean getconLimpeza() {return conLimpeza;}
public void setconLimpeza(boolean value) {conLimpeza = value;}

private boolean conEnergia;
public boolean getconEnergia() {return conEnergia;}
public void setconEnergia(boolean value) {conEnergia = value;}

private boolean conTelefone;
public boolean getconTelefone() {return conTelefone;}
public void setconTelefone(boolean value) {conTelefone = value;}

private boolean conMatAplicIndireta;
public boolean getconMatAplicIndireta() {return conMatAplicIndireta;}
public void setconMatAplicIndireta(boolean value) {conMatAplicIndireta = value;}

private boolean conManutencao;
public boolean getconManutencao() {return conManutencao;}
public void setconManutencao(boolean value) {conManutencao = value;}

private boolean conIPTU;
public boolean getconIPTU() {return conIPTU;}
public void setconIPTU(boolean value) {conIPTU = value;}

private boolean conOutros;
public boolean getconOutros() {return conOutros;}
public void setconOutros(boolean value) {conOutros = value;}




/** Creates a new instance of contratual */
public contratual() {
conCodi = 0;
conCont = 0;
conMet = 0;
perCodi = 0;
perNome = "";
locCodi = 0;
locNome = "";
locTPRU = 0;
conVanguarda = false;
conPortaria = false;
conLimpeza = false;
conEnergia = false;
conTelefone = false;
conMatAplicIndireta = false;
conManutencao = false;
conIPTU = false;
conOutros = false;


}
82

public boolean retorno;
public boolean retorn;

public boolean excluir() {
retorno = false;
try {
clExec = con.prepareCall("{call spContratoExcluir(?)}");
clExec.setInt(1, getconCodi());
clExec.executeUpdate();
clExec.close();
retorno = true;
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
return retorno;
}



public boolean pesquisar() {
retorno = false;
ResultSet rs;
try {
clExec = con.prepareCall("{call spContratosSelect(?)}");
clExec.setInt(1, getconCodi());
rs = clExec.executeQuery();
if (rs.next()) {
this.setconCodi(rs.getInt("con_codigo"));
this.setconCont(rs.getInt("con_contrato"));
this.setconMet(rs.getFloat("con_m2"));
this.setperCodi(rs.getInt("per_codigo"));
this.setperNome(rs.getString("per_nome").trim());
this.setlocCodi(rs.getInt("tip_codigo"));
this.setlocNome(rs.getString("tip_nome").trim());
this.setlocTPRU(rs.getFloat("tip_TPRU"));
this.consultaServicos();


retorno = true;
}
clExec.close();
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
return retorno;
}

public boolean pesquisarPermissionario() {
retorno = false;
ResultSet rs;
try {
clExec = con.prepareCall("{call spPermissionariosSelect(?)}");
clExec.setInt(1, getperCodi());
rs = clExec.executeQuery();
if (rs.next()) {
this.setperCodi(rs.getInt("per_codigo"));
this.setperNome(rs.getString("per_nome").trim());
83

retorno = true;
}
clExec.close();
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
return retorno;
}

public boolean pesquisarLocal() {
retorno = false;
ResultSet rs;
try {
clExec = con.prepareCall("{call spLocalEspecifico(?)}");
clExec.setInt(1, getlocCodi());
rs = clExec.executeQuery();
if (rs.next()) {
this.setlocCodi(rs.getInt("tip_codigo"));
this.setlocNome(rs.getString("tip_nome").trim());
this.setlocTPRU(rs.getFloat("tip_TPRU"));
retorno = true;
}
clExec.close();
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
return retorno;
}



public boolean inserir() {
retorno = false;
try {

clExec = con.prepareCall("{call spContratoInsert(?,?,?,?)}");
//clExec.registerOutParameter(1, Types.INTEGER);
clExec.setInt(1, perCodi);
clExec.setInt(2, locCodi);
clExec.setFloat(3, conMet);
clExec.setInt(4, conCont);

clExec.executeUpdate();



//autenticaServicos();
clExec.close();
ResultSet rst;
String sql = "select * from contratos";
st = con.createStatement();
rst = st.executeQuery(sql);
while (rst.next()){
conCodi = rst.getInt("con_codigo");
}


autenticaServicos();
retorno = true;
84

}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
return retorno;
}

public boolean alterar() {
retorno = false;
try {
clExec = con.prepareCall("{call spContratoUpdate(?,?,?,?,?)}");
clExec.setInt(1, getconCodi());
clExec.setInt(2, getperCodi());
clExec.setInt(3, getlocCodi());
clExec.setFloat(4, getconMet());
clExec.setInt(5, getconCont());

clExec.executeUpdate();
//autenticaServicos();
autenticaServicos();
clExec.close();
//autenticaServicos();
retorno = true;
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
return retorno;
}


public void consultaServicos(){
//retorn = false;
ResultSet rs;
try {
int vanguard = 0, portari = 0, limpez = 0, energi = 0, telefon = 0, matApl = 0, manutenca = 0, IPT =
0, outro = 0;

String sql = "SELECT ser_codigo FROM servicos WHERE ser_nome = 'Vanguarda'";
st = con.createStatement();
rs = st.executeQuery(sql);
if(rs.next()){
vanguard = rs.getInt("ser_codigo");

}

sql = "SELECT ser_codigo FROM servicos WHERE ser_nome = 'Premium Portaria'";
rs = st.executeQuery(sql);
if(rs.next()){
portari = rs.getInt("ser_codigo");

}

sql = "SELECT ser_codigo FROM servicos WHERE ser_nome = 'Premium Limpeza'";
rs = st.executeQuery(sql);
if(rs.next()){
limpez = rs.getInt("ser_codigo");

}

sql = "SELECT ser_codigo FROM servicos WHERE ser_nome = 'Energia Eltrica'";
85

rs = st.executeQuery(sql);
if(rs.next()){
energi = rs.getInt("ser_codigo");
}

sql = "SELECT ser_codigo FROM servicos WHERE ser_nome = 'Telefone'";
rs = st.executeQuery(sql);
if(rs.next()){
telefon = rs.getInt("ser_codigo");
}

sql = "SELECT ser_codigo FROM servicos WHERE ser_nome = 'Mat. Aplic. Indireta'";
rs = st.executeQuery(sql);
if(rs.next()){
matApl = rs.getInt("ser_codigo");
}

sql = "SELECT ser_codigo FROM servicos WHERE ser_nome = 'Manuteno e Reparos'";
rs = st.executeQuery(sql);
if(rs.next()){
manutenca = rs.getInt("ser_codigo");
}

sql = "SELECT ser_codigo FROM servicos WHERE ser_nome = 'IPTU'";
rs = st.executeQuery(sql);
if(rs.next()){
IPT = rs.getInt("ser_codigo");
}

sql = "SELECT ser_codigo FROM servicos WHERE ser_nome = 'Outros'";
rs = st.executeQuery(sql);
if(rs.next()){
outro = rs.getInt("ser_codigo");
}

sql = "select * from cont_servicos where con_codigo = "+conCodi+" and ser_codigo =
"+vanguard+"";

rs = st.executeQuery(sql);
if(rs.next()){
conVanguarda = true;
}
else { conVanguarda = false;}

sql = "select * from cont_servicos where con_codigo = "+conCodi+" and ser_codigo =
"+portari+"";
rs = st.executeQuery(sql);
if(rs.next()){
conPortaria = true;
}
else { conPortaria = false;}

sql = "select * from cont_servicos where con_codigo = "+conCodi+" and ser_codigo =
"+limpez+"";
rs = st.executeQuery(sql);
if(rs.next()){
conLimpeza = true;
}
else { conLimpeza = false;}

sql = "select * from cont_servicos where con_codigo = "+conCodi+" and ser_codigo =
"+energi+"";
rs = st.executeQuery(sql);
86

if(rs.next()){
conEnergia = true;
}
else { conEnergia = false;}

sql = "select * from cont_servicos where con_codigo = "+conCodi+" and ser_codigo =
"+telefon+"";
rs = st.executeQuery(sql);
if(rs.next()){
conTelefone = true;
}
else { conTelefone = false;}

sql = "select * from cont_servicos where con_codigo = "+conCodi+" and ser_codigo =
"+matApl+"";
rs = st.executeQuery(sql);
if(rs.next()){
conMatAplicIndireta = true;
}
else { conMatAplicIndireta = false;}

sql = "select * from cont_servicos where con_codigo = "+conCodi+" and ser_codigo =
"+manutenca+"";
rs = st.executeQuery(sql);
if(rs.next()){
conManutencao = true;
}
else { conManutencao = false;}

sql = "select * from cont_servicos where con_codigo = "+conCodi+" and ser_codigo = "+IPT+"";
rs = st.executeQuery(sql);
if(rs.next()){
conIPTU = true;
}
else { conIPTU = false;}

sql = "select * from cont_servicos where con_codigo = "+conCodi+" and ser_codigo = "+outro+"";
rs = st.executeQuery(sql);
if(rs.next()){
conOutros = true;
}
else { conOutros = false;}
//retorn = true;
}

catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
}






public boolean autenticaServicos(){
retorn = false;
ResultSet rs;
ResultSet rst;

try {
servicos serv = new servicos();
87

serv.setServicosCodigo();

if(conVanguarda == true){
clExec = con.prepareCall("{call spInserirContratoServicos (?,?)}");
clExec.setInt(1, conCodi);
clExec.setInt(2, serv.getvanguarada());
clExec.executeUpdate();
}

else{
if (conVanguarda == false){

clExec = con.prepareCall("{call spDeletarContratoServicos (?,?)}");
clExec.setInt(1, conCodi);
clExec.setInt(2, serv.getvanguarada());
clExec.executeUpdate();
}

}



if(conPortaria == true){
clExec = con.prepareCall("{call spInserirContratoServicos (?,?)}");
clExec.setInt(1, conCodi);
clExec.setInt(2, serv.getportaria());
clExec.executeUpdate();
}
else{
if (conPortaria == false){
clExec = con.prepareCall("{call spDeletarContratoServicos (?,?)}");
clExec.setInt(1, conCodi);
clExec.setInt(2, serv.getportaria());
clExec.executeUpdate();
}
}


if(conLimpeza == true){
clExec = con.prepareCall("{call spInserirContratoServicos (?,?)}");
clExec.setInt(1, conCodi);
clExec.setInt(2, serv.getlimpeza());
clExec.executeUpdate();
}
else{
if (conLimpeza == false){
clExec = con.prepareCall("{call spDeletarContratoServicos (?,?)}");
clExec.setInt(1, conCodi);
clExec.setInt(2, serv.getlimpeza());
clExec.executeUpdate();
}
}


if(conEnergia == true){
clExec = con.prepareCall("{call spInserirContratoServicos (?,?)}");
clExec.setInt(1, conCodi);
clExec.setInt(2, serv.getenergia());
clExec.executeUpdate();
}
else{
if (conEnergia == false){
clExec = con.prepareCall("{call spDeletarContratoServicos (?,?)}");
88

clExec.setInt(1, conCodi);
clExec.setInt(2, serv.getenergia());
clExec.executeUpdate();
}
}


if(conTelefone == true){
clExec = con.prepareCall("{call spInserirContratoServicos (?,?)}");
clExec.setInt(1, conCodi);
clExec.setInt(2, serv.gettelefone());
clExec.executeUpdate();
}
else{
if(conTelefone == false){
clExec = con.prepareCall("{call spDeletarContratoServicos (?,?)}");
clExec.setInt(1, conCodi);
clExec.setInt(2, serv.gettelefone());
clExec.executeUpdate();
}
}

if(conMatAplicIndireta == true){
clExec = con.prepareCall("{call spInserirContratoServicos (?,?)}");
clExec.setInt(1, conCodi);
clExec.setInt(2, serv.getmatApli());
clExec.executeUpdate();
}
else{
if (conMatAplicIndireta == false){
clExec = con.prepareCall("{call spDeletarContratoServicos (?,?)}");
clExec.setInt(1, conCodi);
clExec.setInt(2, serv.getmatApli());
clExec.executeUpdate();
}
}


if(conManutencao == true){
clExec = con.prepareCall("{call spInserirContratoServicos (?,?)}");
clExec.setInt(1, conCodi);
clExec.setInt(2, serv.getmanutencao());
clExec.executeUpdate();
}
else{
if(conManutencao == false){
clExec = con.prepareCall("{call spDeletarContratoServicos (?,?)}");
clExec.setInt(1, conCodi);
clExec.setInt(2, serv.getmanutencao());
clExec.executeUpdate();
}
}


if(conIPTU == true){
clExec = con.prepareCall("{call spInserirContratoServicos (?,?)}");
clExec.setInt(1, conCodi);
clExec.setInt(2, serv.getIPTU());
clExec.executeUpdate();
}
else{
if(conIPTU == false){
clExec = con.prepareCall("{call spDeletarContratoServicos (?,?)}");
89

clExec.setInt(1, conCodi);
clExec.setInt(2, serv.getIPTU());
clExec.executeUpdate();
}
}


if(conOutros == true){
clExec = con.prepareCall("{call spInserirContratoServicos (?,?)}");
clExec.setInt(1, conCodi);
clExec.setInt(2, serv.getoutros());
clExec.executeUpdate();
}
else{
if(conOutros == false){
clExec = con.prepareCall("{call spDeletarContratoServicos (?,?)}");
clExec.setInt(1, conCodi);
clExec.setInt(2, serv.getoutros());
clExec.executeUpdate();
}
}
//retorn = true;
}
catch (Exception ex) {
JOptionPane.showMessageDialog(null, "Ocorreu uma falha durante execuo da operao.",
"Ateno", JOptionPane.ERROR_MESSAGE);
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);

}
return retorn;
//}

}
}
/*
* consultar.java
*
* Created on 30 de Maio de 2007, 14:49
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package DataAcess;
import java.sql.*;
import javax.swing.JOptionPane;
/**
*
* @author USUARIO
*/
public class consultar extends Conexao{

/** Creates a new instance of consultar */
public consultar() {
}

public ResultSet ExecutarPesquisa(String sql){
ResultSet rs = null;
try {
st = con.createStatement();
90

rs = st.executeQuery(sql);
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, msgErro + ex.getMessage(), "Erro",
JOptionPane.ERROR_MESSAGE);
}
return rs;
}
}
/*
* Conexao.java
*
* Created on 12 de Maio de 2007, 16:31
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package DataAcess;
import java.sql.*;
import javax.swing.*;
import trata_erros.trataErro;
/**
*
* @author USUARIO
*/
public class Conexao {
public Connection con;

public Statement st;

public CallableStatement clExec;
// public ResultSet rs;

public static String msgErro = "Ocorreu um erro ao executar esta operao: \n";

/** Creates a new instance of Conexao */
public Conexao() {
//String driver = "sun.jdbc.odbc.teste";
String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
String url = "jdbc:odbc:odbc_teste";

try {
Class.forName(driver);
con = DriverManager.getConnection(url);

st = con.createStatement();

}
catch(Exception e)
{
JOptionPane.showMessageDialog(null,e.getMessage(),"Conexo",
JOptionPane.ERROR_MESSAGE);
}

}

public void desconecta() {
try {
if (st != null)
st.close();
91

st = null;
if (con != null)
con.close();
con = null;
}
catch (Exception e) {
JOptionPane.showMessageDialog(null, "Falha no fechamento da conexo com o banco de dados!!!",
"Vulcano Academics", JOptionPane.ERROR_MESSAGE);
trata_erros.trataErro te = new trataErro(String.valueOf(e));
}
}

/*public boolean autenticarUsuario() {
ResultSet rs;
try {

clExec = con.prepareCall("{call spUsuariosAutenticacao(?, ?)}");
// clExec = con.prepareCall("{call spUsuariosAutenticacao ?, ?}");
clExec.setInt(usuario, 1);
clExec.setString(1, usuario);
clExec.setString(2, senha);
System.out.println("gabriel 2");
rs = clExec.executeQuery();
if (rs.next()) {
usuario = rs.getString("usuario").trim();
usuNome = rs.getString("usuNome").trim();
retorno = true;
System.out.println("gabriel 3");
}
else {
System.out.println("gabriel 6");
retorno = false;
}
rs.close();
st.close();
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage(), "Erro", JOptionPane.ERROR_MESSAGE);
}
catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Erro", JOptionPane.ERROR_MESSAGE);
}
return retorno;
}*/
}
This document was created with Win2PDF available at http://www.daneprairie.com.
The unregistered version of Win2PDF is for evaluation or non-commercial use only.

Vous aimerez peut-être aussi