Upload
trinhminh
View
212
Download
0
Embed Size (px)
Citation preview
UNIVERSIDADE FEDERAL DE SANTA CATARINA
Sistema para avaliação de produtos pré-medidosSAPPM
Cassiano Wesley Seugling
Florianópolis - SC
2007/2
UNIVERSIDADE FEDERAL DE SANTA CATARINADEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA
CURSO DE SISTEMAS DE INFORMAÇÃO
Sistema para avaliação de produtos pré-medidosSAPPM
Cassiano Wesley Seugling
Trabalho de conclusão de curso apresentado como parte dos requisitos para a obtenção do grau de Bacharel em Sistemas de Informação.
Florianópolis - SC
2007/2
2
Cassiano Wesley Seugling
Sistema para avaliação de produtos pré-medidosSAPPM
Trabalho de conclusão de curso apresentado como parte dos requisitos para aobtenção do grau de Bacharel em Sistemas de Informação
Banca Examinadora:
_________________________________Prof. Dr. Dalton Francisco de AndradeUniversidade Federal de Santa Catarina
Orientador
______________________________Profa. Maria Marta Leite
Universidade Federal de Santa Catarina
______________________________Prof. Dr. Ronaldo dos Santos Mello
Universidade Federal de Santa Catarina
3
RESUMO
A credibilidade da medição dos produtos pré-medidos no mercado atual é essencial
e necessária onde quer que exista conflito de interesse, ou onde quer que medições
incorretas levem a riscos indesejáveis aos indivíduos ou a sociedade.
Hoje existe a necessidade de assegurar um comércio justo protegendo o
consumidor enquanto comprador de produtos, e o vendedor, enquanto fornecedor destes.
Assim este trabalho tem como objetivo desenvolver uma aplicação para avaliação
do conteúdo efetivo de produtos pré-medidos, aqueles produzidos e medidos sem a
presença do consumidor e com conteúdo nominal igual, comercializados nas grandezas de
massa e volume, sob o ponto de vista do setor produtivo.
O sistema deverá avaliar se o produto fabricado está de acordo com os
Regulamentos Técnicos Metrológicos do INMETRO, antes de ser exposto a
comercialização.
Espera-se que o setor produtivo possa reduzir seus custos com um maior
aproveitamento das tolerâncias permitidas, e minimizar a incidência da entrega de
produtos não-conformes ao mercado.
Palavras-chave: Produto pré-medido; Indicação quantitativa; INMETRO.
4
ABSTRACT
The credibility of the measurement of the products daily pay measured in the
current market is essential and necessary where there is conflict of interest, or where
incorrect measurements lead to undesirable risks to the individuals or the society.
Today there is the necessity of securing a just commerce protecting the consumer
while buyer of products, and the seller, while supplier of this.
The main goal of this work is to develop an application for evaluation of the effective
content of daily pay-measured products, those produced and measured without the
presence of the consumer and with equal nominal content, commercialized in the
largenesses of mass and volume, under the point of view of the productive sector.
The system should have to evaluate if the manufactured product is in accordance with the
Regulations Metrological Technician of the INMETRO, or not before being displayed to
commercialization.
One expects that the productive sector can reduce its costs with a bigger
exploitation of the allowed tolerances, and minimize the incidence of the delivery of not-in
agreement products to the market.
Word-key: daily pay-measured product, quantitative indication, INMETRO.
5
LISTAS DE FIGURAS
FIGURA 1: Usuários do sistema p. 23
FIGURA 2: Pacote da área do usuário p. 24
FIGURA 3: Diagrama de caso de uso para produto p. 25
FIGURA 4: Diagrama de caso de uso para técnicos p. 25
FIGURA 5: Diagrama de caso de uso para valores brutos p. 26
FIGURA 6: Pacote de área do laudo p. 26
FIGURA 7: Diagrama de caso de uso para valores brutos p. 27
FIGURA 8: Diagrama de caso de uso para valores de embalagens p. 28
FIGURA 9: Modelo conceitual p. 28
FIGURA 10: Tela inicial p. 29
FIGURA 11: Tela cadastro técnico p. 30
FIGURA 12: Tela cadastro de produto p. 30
FIGURA 13: Tela laudos p. 31
FIGURA 14: Tela embalagem p. 32
FIGURA 15: Tela valor bruto p. 32
FIGURA 16: Relatório do exame p. 33
FIGURA 17: Diagrama de entidade relacional p. 34
FIGURA 18: Modelagem do banco de dados p. 35
6
LISTAS DE TABELAS
TABELA 1: Tolerância para o critério individual p. 16
TABELA 2: Número de unidades toleradas abaixo do critério individual p. 17
TABELA 3: Constante utilizada no critério da média p. 18
7
LISTAS DE ABREVIATURAS
INMETRO - Instituto Nacional de Metrologia, Normalização e Qualidade Industrial
R.T.M. - Regulamento Técnico Metrológico
CONMETRO - Conselho Nacional de Metrologia, Normalização e Qualidade Industrial
SINMETRO - Sistema Nacional de Metrologia, Normalização e Qualidade Industrial
S.I. - Sistema Internacional de Unidades
IPEM - Instituto de Pesos e Medidas
ER - Entidade Relacionamento
SQL - Structured Query Language
UML - Unified Modeling Language
OIML - Organização Internacional de Metrologia Legal
8
SUMÁRIO
1 Introdução p. 101.1 Objetivos p. 11
1.1.1 Objetivo Geral p. 111.1.2 Objetivos Específicos p. 11
1.2 Justificativa p. 111.3 Metodologia p. 11
2 INMETRO p. 132.1 Metrologia Legal p. 132.2 Fiscalização p 14
3 O Procedimento de Avaliação p. 153.1 Os Critérios de Aprovação do Produto p. 15
3.1.1 Critério Individual p. 163.1.2 Critério para a Média p. 17
4 Passos para o Desenvolvimento do Aplicativo p. 194.1 A Fase Planejar e Elaborar p. 194.2 A Fase Construir p. 204.3 A Fase Analisar p. 214.4 A Fase Projetar p. 224.5 A Fase Testar p. 224.6 A Fase Instalar p. 22
5 Sistema Proposto p. 235.1 Definição dos Usuários do Sistema p. 235.2 Definindo as Áreas do Sistema e os Casos de Uso p. 24
5.2.1 Produto p. 245.2.2 Técnico p. 255.2.3 Laudo p. 26
5.3 Área do Laudo p. 265.3.1 Valores do Peso Bruto do Produto p. 275.3.2 Valores do Peso da Embalagem Vazia do Produto p. 27
5.4 Modelo Conceitual p. 286 Implementação p. 296.1 A Abertura do Sistema p. 29
6.2 Tela Cadastro Técnico p. 306.3 Tela Cadastro de Produto p. 306.4 Tela Laudos p. 316.5 Tela Embalagem p. 316.6 Tela Valores Bruto p. 326.7 Relatório p. 33
7 Banco de Dados do SAPPM p. 348 Conclusão p. 369 Referências p. 3710 Anexos p. 38
9
1 INTRODUÇÃO
O surgimento das grandes redes de supermercados, na década de 70, marcou o
início da massificação de produtos comercializados em acondicionamentos próprios, nos
quais a clareza da indicação da quantidade contida em cada produto assumia grande
importância.
O controle metrológico do Instituto Nacional de Metrologia, Normalização e
Qualidade Industrial - INMETRO - abrange todos os tipos de produtos pré-medidos. Em
algumas mercadorias, como fios elétricos e papel higiênico, por exemplo, é verificado o
comprimento. Em outros produtos, como palitos de dente e fósforos, é verificado o número
de unidades. Entretanto, a grande maioria do trabalho recai sobre produtos com indicação
em unidade de massa ou volume, principalmente os que integram a cesta básica.
Hoje existe um grande número de empresas sendo autuadas pelo INMETRO em
relação a quantidade efetiva de produtos pré-medidos. Se um produto for comercializado
com sua quantidade nominal inferior a indicação quantitativa, o consumidor perde ao
adquirir o produto, pois está pagando por uma quantidade que não está levando. Por outro
lado, se o produto for comercializado com a quantidade nominal superior a indicação
quantitativa, a empresa que fabricou o produto perde.
Dessa forma, o sistema a ser desenvolvido buscará informar se os produtos
fabricados estão de acordo com os Regulamentos Técnicos Metrológicos do INMETRO de
modo que os produtos fabricados sejam disponibilizados para comercialização, sem que
haja prejuízo para o fabricante ou para o consumidor. O produto será analisado após sua
produção e antes de ser comercializado, ou seja, dentro da fábrica.
Os consumidores se beneficiarão pois comprarão produtos com conteúdo nominal
correto, conforme indicado na embalagem do produto. Nas empresas haverá mais
controle, minimizando desperdícios do produto.
10
1.1 OBJETIVOS
1.1.1 OBJETIVO GERAL
O objetivo geral deste trabalho é desenvolver uma aplicação para viabilizar a
avaliação do conteúdo nominal de produtos pré-medidos fabricados nas grandezas de
massa e volume. O aplicativo deve informar ao fabricante informações sobre a aprovação
ou não do lote de produtos segundo as respectivas especificações técnicas, facilitando a
decisão de comercialização.
1.1.2 OBJETIVOS ESPECÍFICOS
Os objetivos específicos do presente trabalho são:
a) Estudar os Regulamentos Técnicos Metrológicos do INMETRO;
b) Análise e projeto do sistema utilizando UML;
c) Implementação do aplicativo utilizando linguagem orientada a objetos;
d) Construção de um modelo relacional ER e implementação utilizando Banco de Dados.
1.2 JUSTIFICATIVA
A grande maioria das empresas expõe seus produtos a venda sem que haja qualquer
tipo de análise metrológica, e acabam sendo autuadas por órgãos competentes. Acredita-
se na grande importância em relacionar o conhecimento adquirido no curso de Sistemas
de Informação com o processo de análise metrológica, criando um aplicativo que poderá
dar garantia às empresas de que os produtos expostos a venda estejam de acordo com os
Regulamentos Técnicos Metrológicos (R.T.M.) do INMETRO.
1.3 METODOLOGIA
Todo sistema precisa ser bem pensado e analisado, a fim de se obter a melhor
solução para um determinado problema.
O objetivo é de construir um aplicativo para computadores utilizando os conceitos
de programação orientada a objetos. Porém, a construção de um bom programa orientado
11
a objetos vai além do saber dominar uma linguagem orientada a objetos, como por
exemplo, Java ou Delphi. Este é apenas o primeiro passo para construção. É fundamental
para obtenção do sucesso do trabalho uma boa análise e um bom projeto.
Assim, o trabalho se baseará na metodologia proposta no livro de Craig Larman:
Utilizando UML e Padrões. Este livro apresenta um exemplo de processo de
desenvolvimento, o qual descreve uma possível ordem de atividades e um ciclo de vida de
desenvolvimento. Contudo, ele não prescreve um processo ou metodologia definitiva; ele
fornece um exemplo de passos comuns.
No presente trabalho iremos nos ater somente a parte da análise do projeto
descrevendo então requisitos do sistema, bem como casos de uso e por fim o modelo
conceitual.
Para isso será realizado um estudo sobre os R. T. M. do INMETRO, para identificar
os requisitos e elaborar as etapas de construção do aplicativo.
Posteriormente serão definidas as ferramentas e as linguagens a serem utilizada no
desenvolvimento do aplicativo a ser implementado.
12
2 INMETRO
O Instituto Nacional de Metrologia, Normalização e Qualidade Industrial, é uma
autarquia federal, vinculada ao Ministério do Desenvolvimento, Indústria e Comércio
Exterior, que atua como Secretaria Executiva do Conselho Nacional de Metrologia,
Normalização e Qualidade Industrial (Conmetro), colegiado interministerial, que é o órgão
normativo do Sistema Nacional de Metrologia, Normalização e Qualidade Industrial
(Sinmetro).
Durante o Primeiro Império, foram feitas diversas tentativas de uniformização das
unidades de medir brasileiras. Em 26 de junho de 1862, Dom Pedro II promulgava a Lei
Imperial nº 1157 e com ela oficializava, em todo o território nacional, o sistema métrico
decimal francês. Com o crescimento industrial do século seguinte, fazia-se necessário
criar no país instrumentos mais eficazes de controle que viessem a impulsionar e proteger
produtos e consumidores.
Em 1961 foi criado o Instituto Nacional de Pesos e Medidas (INPM), que implantou
a rede Nacional de Metrologia Legal, os atuais IPEMs, e instituiu o Sistema Internacional
de Unidades (S.I.) em todo o território nacional. Logo, porém, verificou-se que isso não era
o bastante. Era necessário acompanhar o mundo na sua corrida tecnológica, no
aperfeiçoamento, na exatidão e, principalmente, no atendimento às exigências do
consumidor. Era necessário qualidade.
Em 11 de dezembro de 1973, nascia o Instituto Nacional de Metrologia,
Normalização e Qualidade Industrial - INMETRO. No âmbito de sua ampla missão
institucional, o INMETRO objetiva fortalecer as empresas nacionais, aumentando sua
produtividade por meio da adoção de mecanismos destinados à melhoria da qualidade de
produtos e serviços. Sua missão é trabalhar decisivamente para o desenvolvimento sócio-
econômico e para a melhoria da qualidade de vida da sociedade brasileira, contribuindo
para a inserção competitiva, para o avanço científico e tecnológico do país e para a
proteção do cidadão, especialmente nos aspectos ligados à saúde, segurança e meio-
ambiente (INMETRO, 2007).
2.1 METROLOGIA LEGAL
A Metrologia Legal tem como objetivo principal proteger o consumidor tratando das
unidades de medida, métodos e instrumentos de medição, de acordo com as exigências
técnicas e legais obrigatórias.
13
Com a supervisão do Governo, o controle metrológico estabelece adequada
transparência e confiança com base em ensaios imparciais. A exatidão dos instrumentos
de medição garante a credibilidade nos campos econômico, saúde, segurança e meio
ambiente.
No Brasil as atividades da Metrologia Legal são uma atribuição do INMETRO, que
também colabora para a uniformidade da sua aplicação no mundo, pela sua ativa
participação no Mercosul e na OIML - Organização Internacional de Metrologia Legal.
A Metrologia Legal atende tais necessidades principalmente através de
regulamentos, os quais são implementados para assegurar um nível adequado de
credibilidade nos resultados de medição. Em todas as suas aplicações, a metrologia legal
cobre unidades de medida, instrumentos de medição e outras matérias tais como os
produtos pré-medidos.
Produto Pré-medido é todo produto embalado e/ou medido sem a presença do
consumidor e, em condições de comercialização (INMETRO, 2007).
2.2 FISCALIZAÇÃO
O capítulo V da Regulamentação Metrológica aprovada pela resolução
CONMETRO 11/88 estabelece que todo produto pré-medido deve trazer de modo bem
visível e inequívoco, a indicação da quantidade líquida ou da quantidade mínima expressa
em unidades legais, ou o número de unidades contidas no acondicionamento.
A fiscalização é efetuada com base na regulamentação citada e em outras definidas
pelo INMETRO como por exemplo o R. T. M. aprovado pela Portaria INMETRO no 074/95,
que estabelece os critérios para a verificação do conteúdo efetivo de produtos pré-
medidos, com conteúdo nominal igual, expresso em unidades do Sistema Internacional de
Unidades.
A elaboração da regulamentação se baseia geralmente nas Recomendações da
Organização Internacional de Metrologia Legal - OIML, à qual o Brasil está filiado como
pais membro, e na colaboração dos fabricantes, representados por suas entidades de
classe, e entidades representativas dos consumidores, pela participação nos Grupos de
Trabalho de Regulamentação Metrológica.
14
3 O PROCEDIMENTO DE AVALIAÇÃO
Os Regulamentos Técnicos Metrológicos são normas que têm caráter compulsório
e devem, portanto, ser obrigatoriamente respeitados. Constituem uma forma dos órgãos
governamentais estabelecerem regras à sociedade e são muito utilizados como
instrumento regulador do mercado interno, facilitando ou dificultando importações e
exportações.
É com base nos R.T.M. das Portarias INMETRO 074/1995 e 096/2000 que é
exercido o ofício da avaliação da quantidade de produtos pré-medidos com indicação em
massa ou volume.
O processo de avaliação inicia com a verificação do tamanho do lote fabricado no
estabelecimento para, em seguida, proceder-se a coleta da amostra do produto para
verificar indícios de irregularidade na massa ou volume do produto. O tamanho da amostra
pode variar de 05 (cinco) a 80 (oitenta) unidades, dependendo da quantidade do lote de
produtos fabricados.
Lote é o conjunto de produtos de um mesmo tipo, marca e conteúdo nominal,
processados por um mesmo fabricante, ou fracionados em um espaço de tempo
determinado, em condições essencialmente iguais. Caso esta quantidade supere 10000
(dez mil) unidades, o excedente poderá formar novos(s) lotes(s).
Amostra do lote é a quantidade de produtos pré-medidos retirados aleatoriamente
do lote e que serão efetivamente verificados.
Em um primeiro momento, para um fabricante ou produtor, parece ser importante
apenas conhecer os erros máximos admissíveis e procurar não extrapolá-los. No entanto o
entendimento de todo o processo de conferência da quantidade do produto é
imprescindível para a melhor adaptação e controle do processo de acondicionamento. Os
pontos críticos desta avaliação são os critérios de aprovação da amostra.
3.1 OS CRITÉRIOS DE APROVAÇÃO DO PRODUTO
Para estar conforme com o R.T.M. uma amostra deve satisfazer simultaneamente o
critério individual e o critério para a média. O primeiro está relacionado com a diferença
permitida para menos entre o valor nominal indicado na embalagem e conteúdo efetivo
real de cada unidade da amostra. Já o critério para a média se refere ao conjunto das
unidades e estabelece valores mínimos para a média da amostra.
15
3.1.1 CRITÉRIO INDIVIDUAL
A avaliação da indicação quantitativa é efetuada em balança eletrônica de exatidão
adequada. Para produtos líquidos é também necessário o picnômetro, instrumento que
auxilia na conversão do volume para massa pelo processo gravimétrico. Devido à variação
do volume de produtos líquidos, proporcionada pela variação de temperatura, o
regulamento estabelece o intervalo de 20oC à 25oC para o cálculo do peso específico nas
avaliações.
A primeira etapa de avaliação é determinar o conteúdo efetivo do produto,
descontando-se a massa da embalagem da massa total do produto.
Conforme a Tabela 1, o critério individual estabelece uma tolerância individual
admissível (T), calculada com base no conteúdo nominal do produto, e que deve ser
obedecida por cada item da amostra. Para uma amostra de arroz de 1.000g, por exemplo,
a tolerância individual para cada item da amostra é de 15g. Cada unidade deve pesar no
mínimo 985g para que a amostra seja aprovada neste critério.
Tabela 1: Tolerância para o critério individual
Conteúdo Nominal Qn
(g ou ml)
Tolerância Individual TPercentual
de Qn(%)
Massa ou volume(g ou ml)
5 a 50 9 -50 a 100 - 4,5
100 a 200 4,5 -200 a 300 - 9300 a 500 3 -500 a 1000 - 15
1000 a 10000 1,5 -10000 a 15000 - 150acima de 15000 1 -
Fonte: Adaptado das Portarias Inmetro 074/1995 e 096/2000
Este critério é definido pela seguinte expressão:
X > Qn – T (1)
onde:
16
X é o conteúdo efetivo de cada unidade da amostra
Qn é o conteúdo nominal do produto e T é a tolerância individual.
No critério individual admite-se um máximo de “c” unidades abaixo de (Qn – T),
cujos valores são estabelecidos pela Tabela 2.
Tabela 2: Número de unidades toleradas abaixo do critério individual
Tamanhodo lote
Tamanhoda amostra c
5 a 13 todas 014 a 49 14 0
50 a 149 20 1150 a 4000 32 2
4001 a 10000 80 5
Fonte: Adaptado das Portarias Inmetro 074/1995 e 096/2000
Para produtos que por sua falta de homogeneidade, descontinuidade, instabilidade
de peso no decorrer do tempo ou outro fator que aumente de modo considerável a
dispersão de seu conteúdo efetivo, é concedido o dobro da tolerância (2T). Enquadram-se
nesta tolerância os produtos com as seguintes particularidades:
produtos com indicação de peso drenado;
produtos cujo peso da menor unidade supera 1,5 vezes a tolerância T;
produtos com perda significativa de peso por secagem ou outros efeitos de
armazenamento, definidos pelo INMETRO;
produtos congelados.
O sal, o alho, alguns tipos de biscoitos, dentre outros, são exemplos de produtos
com alguma destas características, sendo que para estes, admite-se uma tolerância de
Qn –2 T.
3.1.2 CRITÉRIO PARA A MÉDIA
O critério para a média varia com o tamanho da amostra, que é maior quanto maior
for o lote exposto a venda. Genericamente, este critério é definido pela seguinte
expressão:
_ X > Qn - K . s
17
onde:
_X é a média aritmética da amostra
Qn é como em (1)
K é uma constante vinculada ao tamanho da amostra, conforme Tabela 3
s é o desvio padrão da amostra
Observa-se que uma das variáveis da equação, para um determinado produto, é o
desvio padrão, ou seja, quanto maior o desvio padrão, menor é o valor mínimo para a
aprovação e mais tolerante se torna o critério. O desvio padrão é alto quando se tem maior
dispersão dos valores medidos em relação a média.
Tabela 3: Constante utilizada no critério da média
Tamanhodo lote
Tamanhoda amostra k
5 5 2,0596 6 1,6467 7 1,4018 8 1,2379 9 1,118
10 10 1,02811 11 0,99512 12 0,89713 13 0,847
14 a 49 14 0,80550 a 149 20 0,640
150 a 4000 32 0,4854001 a 10000 80 0,295
Fonte: Adaptado das Portarias Inmetro 074/1995 e 096/2000
Este critério não permite que o processo de acondicionamento do produto utilize
como controle nivelador a tolerância concedida pelo critério individual, o que seria
interessante para empresas que detêm exatidão e precisão no processo de embalagem de
seus produtos. Para esta situação, este critério faz uma aproximação do conteúdo efetivo
da média da amostra ao valor nominal indicado pelo produtor.
18
4 PASSOS PARA O DESENVOLVIMENTO DO APLICATIVO
Em sua metodologia, Craig Larman esclarece que “Em um nível alto, os principais
passos para desenvolver uma aplicação são:
1. Planejar e Elaborar: Planejamento, definição de requisitos, construção de
protótipos e assim por diante.
2. Construir: A construção do sistema.
3. Instalar: A implantação do sistema para uso”.
Ele complementa dizendo que “Um processo de desenvolvimento de software é um
método para organizar as atividades relacionadas com a criação, entrega e manutenção
de sistemas de software”.
4.1 A FASE PLANEJAR E ELABORAR
Para Craig Larman, “A fase Planejar e Elaborar de um projeto inclui a concepção
inicial, a investigação de alternativas, o planejamento, a especificação de requisitos e
assim por diante”.
Uma lista de artefatos que esta fase do projeto deve gerar é listada abaixo:
1. Plano: cronograma, recursos, orçamento, etc.
2. Relatório de Investigação Preliminar: motivação, alternativas, necessidades de
negócio.
3. Especificação de Requisitos: exposição declarativa dos requisitos;
4. Casos de Uso: descrição em prosa de processos do domínio;
5. Diagramas de Casos de Uso: ilustração de todos os casos de uso e seus
relacionamentos.
6. Rascunho do modelo conceitual: um modelo conceitual preliminar aproximado,
para ajuda na sua compreensão de como ele se relaciona com os casos de uso e a
especificação dos requisitos.
A construção dos artefatos cima listados não deve ser feita em ordem linear.
Pelo contrário. Será freqüente às vezes em que duas ou mais tarefas serão
desenvolvidas em paralelo, embora em alguns casos fique evidente a necessidade de uma
tarefa antevir a outra, como por exemplo, a definição dos casos de uso vir a ser feita antes
do rascunho do modelo conceitual.
19
4.2 A FASE CONSTRUIR
A fase construir envolve a implementação do projeto em software e em hardware.
Envolve repetidos ciclos de desenvolvimento, dentro dos quais o sistema é estendido. O
objetivo final é um sistema de software em operação que atenda corretamente os
requisitos.
Um ciclo de desenvolvimento na fase construir compreende as seguintes etapas:
refinar plano, sincronizar artefatos, analisar, projetar, construir, testar.
Antes de falar sobre cada uma das etapas da fase construir, é importante definir um
ciclo de desenvolvimento do projeto. Craig Larman propõe um ciclo de desenvolvimento
chamado de Iterativo.
Um Ciclo de Desenvolvimento, ou também chamado de ciclo de vida, Iterativo se
baseia no aumento e no refinamento sucessivo de um sistema através de múltiplos ciclos
de desenvolvimentos de análise, de projeto, de implementação e de testes.
O sistema cresce pelo acréscimo de novas funções em cada ciclo de
desenvolvimento. Depois de uma fase preliminar de Planejar e Elaborar, o
desenvolvimento continua numa fase Construir através de uma série de ciclos de
desenvolvimento.
Cada ciclo trata de um conjunto relativamente pequeno de requisitos, procedendo
através da análise, do projeto, da construção e do teste. O sistema cresce
incrementalmente, à medida que cada ciclo é completado.
O desenvolvimento iterativo não significa desenvolver um trabalho banal por um
tempo, atingir um marco no projeto e, então, experimentar mais um pouco. Uma definição
do desenvolvimento iterativo é que ele é um processo planejado para voltar a uma área
repetidamente, cada vez, complementando o sistema. Ele é um processo formalmente
planejado e escalonado, e não algo que acontece ao acaso.
A definição de desenvolvimento incremental é adicionar funcionalidades a um
sistema durante vários ciclos de liberação de produto; cada incremental (nova versão do
produto) contém mais funcionalidades.
A principal desvantagem do desenvolvimento iterativo e incremental é o aumento
das expectativas. Uma vez que esse processo permite que sejam efetuadas
demonstrações, logo tende-se a pensar que o sistema está “quase pronto”.
Um Caso de Uso é uma descrição narrativa de um processo do domínio. Ciclos de
desenvolvimento interativos são organizados por requisitos de casos de uso.
Os Casos de Uso devem ser priorizados, e os de alta prioridade deveriam ser
atacados nos ciclos de desenvolvimentos iniciais. A estratégia abrangente é, primeiro,
20
pegar os casos de uso que influenciam significativamente o núcleo da arquitetura,
materializando as camadas do domínio e dos serviços de alto nível, ou aqueles que são de
uso críticos de alto risco.
Os dois principais passos da fase construir - analisar e projetar – são as fases
abordadas no livro de Craig Larman com grande ênfase. Abaixo é apresentado em
detalhes o desenvolvimento de cada uma destas duas etapas.
“Para criar um software de uma aplicação, é necessária uma descrição do problema
e dos seus requisitos – o que é o problema e o que o sistema deve fazer. A análise
enfatiza uma investigação do problema, de como uma solução é definida”.
“Para desenvolver uma aplicação também é necessário ter descrições de alto nível
e descrições detalhadas da solução lógica e de como ela atende os requisitos e as
restrições. O projeto enfatiza uma solução lógica, ou seja, como o sistema atende os
requisitos, afinal, projetos devem ser implementados em software e hardware”.
4.3 FASE ANALISAR
Segundo Craig Larman, “A essência da análise e do projeto orientados a objeto é
enfatizar a consideração de um domínio de problema e uma solução lógica, segundo a
perspectiva de objetos (coisas, conceitos ou entidades). Na análise orientada a objetos, há
uma ênfase na descoberta e na descrição dos objetos – ou conceitos – do domínio do
problema”.
A Fase Analisar deve abranger as seguintes etapas:
1. Construir um modelo conceitual inicial, identificando os conceitos, atributos e
suas corretas associações.
2. Fazer Diagrama de seqüência para os casos de uso identificando os eventos e as
operações do sistema. Este diagrama de seqüências mostrado por Craig Larman não
pertence à notação UML, porém será um importante artefato para a construção do
Diagrama de Interação da UML na fase Projetar.
3. Criar contratos para as operações do sistema, que é um documento que
descreve o que uma operação se compromete a atingir. Usualmente, ele segue um estilo
declarativo, enfatizando o que acontecerá, em vez de como será conseguido. È comum
em termos de mudanças de estado definidas por pré-condições e pós-condições. Um
contrato pode ser escrito para um método individual de uma classe de software ou para
uma operação mais abrangente do sistema.
Durante um ciclo de desenvolvimento iterativo, é possível passar para a fase de
projeto desde que estes documentos de análise estejam completos.21
4.4 FASE PROJETAR
Para Craig Larman “Durante o projeto orientado a objetos existe uma ênfase na
definição de elementos lógicos de software, os quais, em última instância, serão
implementados em uma linguagem de programação orientada a objetos. Estes objetos de
software têm atributos e métodos. Finalmente, durante a construção ou programação
orientada a objetos, os componentes do projeto são implementados, tais como uma
classe”.
Durante este passo, é desenvolvida uma solução lógica baseada no paradigma
orientado a objetos. O coração desta solução é a criação de diagramas de interação, os
quais ilustram como os objetos devem se comunicar de maneira a atender os requisitos.
Em seguida à geração de diagramas de interações, podem ser desenhados
diagramas de classes, os quais sumarizam a definição das classes (e interfaces) que
devem ser implementadas em software.
A criação de diagramas de interação requer a aplicação de princípios para a
atribuição de responsabilidades e visibilidades.
4.5 FASE TESTAR
A fase Testar tem por objetivo verificar eventuais falhas de desenvolvimento no
sistema. Devem avaliar basicamente três quesitos: funcionalidade (o sistema executa
corretamente suas funções normais), recuperação (o sistema recupera-se adequadamente
em caso de falha); desempenho (o sistema apresenta tempo de resposta adequado).
Geralmente, a fase Testar é entendida com o último passo dentro de um ciclo de
desenvolvimento. Porém, recomenda-se que seja uma atividade permanente durante a
fase Construir.
4.6 FASE INSTALAR
A fase instalar envolve a colocação do sistema em produção. Para o software
desenvolvimento com finalidades comerciais, isso significa que ele já está à venda e
disponível para os clientes; para o software desenvolvido em uma instalação, significa que
ele está em uso operacional.
22
5 SISTEMA PROPOSTO
Este capítulo apresenta o aplicativo proposto e como este foi realizado. O aplicativo
utilizado no setor produtivo pode reduzir custos com um maior aproveitamento das
tolerâncias permitidas, evitando problemas com produtos não-conformes expostos ao
consumidor. Ele busca informar erros que possam gerar desconfortos para consumidores
e evitar multas por órgãos competentes, através de relatórios. O trabalho consiste em
armazenar os dados obtidos nas baterias de testes em um banco de dados para que
esses dados possam ser utilizados no futuro para comparações caso o produto seja alvo
de fiscalização.
A construção do aplicativo consistiu de três etapas:
- Levantamento de Requisitos: Levantamento das necessidades, para a
construção de um aplicativo.
- Modelagem: Interpretação dos requisitos levantados, bem como sua tradução
em especificações do aplicativo.
- Implementação: Conversão das especificações do aplicativo em código.
5.1 DEFINIÇÃO DOS USUÁRIOS DO SISTEMA
O sistema não exige grandes preocupações com controles de acesso. Pois não
existe qualquer controle a ser feito quanto à restrição de acesso as informações. Assim,
podemos imaginar um único usuário interagindo com o sistema, sendo capaz de realizar
todas as operações disponíveis.
Assim, no seguimento deste trabalho, as interações deste usuário com o sistema
serão representadas da seguinte forma:
FIGURA 1: Usuários do sistema.
23
5.2 DEFININDO AS ÁREAS DO SISTEMA E OS CASOS DE USO
O sistema deve ser capaz de suportar vários laudos, cada laudo é uma verificação
feita em um determinado produto por um determinado técnico. Desta forma cada produto e
técnico deve ser cadastrado uma única vez. Por exemplo, produto arroz branco e técnico
Ramon Carvalho. Ou seja para fazer uma verificação em um determinado produto por um
técnico, obrigatoriamente o produto e o técnico devem estar cadastrados.
Assim, a área de acesso do sistema de um usuário pode ser dividida, inicialmente
em três diferentes atividades, conforme demonstra a Figura 4.
pkg Area Principal do Sistema
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
Area Principal do Usuario
(from SAPPM)
Produto
+ Usuario+ Altera dados de um produto+ Cria Novo Produto+ Exclui um produto+ Seleciona um produto
(from SAPPM)
Tecnico
+ Usuario+ Altera um Tecnico+ Exlcui um Tecnico+ Inclui um Tecnico+ Seleciona um Tecnico
(from SAPPM)
Laudo
+ Usuario+ VBruto+ VEmbalagem+ Altera laudo+ Cria novo laudo+ Exclui laudo+ Pesquisa laudo+ Seleciona laudo
(from SAPPM)
FIGURA 2: Pacote da área do usuário.
A seguir, cada um dos pacotes será detalhado, descrevendo-se seus casos de
usos, para melhorar o entendimento de cada área do sistema.
5.2.1 PRODUTO: O usuário deseja cadastrar um produto no sistema para que possa
fazer verificações. Assim o usuário deve informar nome do produto, marca do produto,
unidade e sua indicação quantitativa. Nesta área, as três principais tarefas a serem
realizadas são: a inclusão de um novo produto, a alteração dos dados de um produto e a
exclusão do produto do sistema.
Atores Envolvidos: Usuário, Sistema e Banco de Dados.
24
Requisitos: Nome, Marca, Unidade e Indicação Quantitativa do Produto.
uc ProdutoEA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
Usuario
Cria Novo Produto
Altera dados de um produto
Exclui um produto
Seleciona um produto
«include»
«include»
FIGURA 3: Diagrama de caso de uso para produto.
5.2.2 TÉCNICO: Cadastrar técnicos que ficaram como responsável pela verificação do
produto. Assim o usuário deve informa nome do técnico e sua matrícula. Nesta área, as
três principais tarefas a serem realizadas são: a inclusão de um novo técnico, a alteração
dos dados de um técnico e a exclusão do técnico do sistema.
Atores Envolvidos: Usuário, Sistema e Banco de Dados.
Requisitos: Nome e Matrícula.
uc TecnicoEA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
Usuario
Inclui um Tecnico
Altera um Tecnico
Exlcui um Tecnico
Seleciona um Tecnico
«include»
«include»
FIGURA 4: Diagrama de caso de uso para técnicos.
25
5.2.3 LAUDO: O usuário deseja realizar uma verificação quantitativa. Assim para realizar uma verificação o usuário de informar lote de fabricação do produto analisado, selecionar produto e quantidade de amostra a ser analisada, selecionar técnico responsável pela verificação, para os produtos fabricados em massa e caso o produto seja em volume informar massa específica e a temperatura do produto. Nesta área, as quatro principais tarefas a serem realizadas
são: a inclusão de um novo laudo, a alteração dos dados de um laudo, exclusão do laudo
do sistema e a pesquisa de um laudo já realizado no sistema.
Atores Envolvidos: Usuário, Sistema e Banco de Dados.
Requisitos: Lote de fabricação, Quantidade da Amostra, produto, Técnico e temperatura do
produto e massa específica caso seja volume e número do laudo para pesquisa.uc Laudo
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
Usuario
Cria nov o laudo
Altera laudo
Exclui laudo
Seleciona laudo
Pesquisa laudo
«include»
«include»
«include»
FIGURA 5: Diagrama de caso de uso para laudo.
5.3 ÁREA DO LAUDO
Para cada verificação feita, existe um conjunto de valores brutos que varia de 5 a 80
amostras a serem pesadas e lançadas no sistema e um conjunto de seis valores fixo do
peso da embalagem vazia do produto.
pkg Laudo
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
VEmbalagem
+ Usuario+ Altera valor de embalagem+ Exclui valor de embalagem+ Inclui valor de embalagem+ Seleciona valor de embalagem
VBruto
+ Usuario+ Altera valor bruto+ Exclui valor bruto+ Inclui valor Bruto+ Seleciona valor bruto
26
FIGURA 6: Pacote de área do laudo.
5.3.1 VALORES DO PESO BRUTO DO PRODUTO: O usuário deseja cadastrar os
valores pesados na balança do produto escolhido para verificação. Assim o usuário deve
informar cada valor bruto pesado. Nesta área, as três principais tarefas a serem realizadas
são: a inclusão de um novo valor bruto, a alteração dos dados de um valor bruto e a
exclusão de um valor bruto do sistema.
Atores Envolvidos: Usuário, Sistema e Banco de Dados.
Requisitos: Valor Bruto.
uc VBrutoEA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
Usuario
Inclui v alor Bruto
Altera valor bruto
Exclui valor bruto
Seleciona valor bruto
«include»
«include»
FIGURA 7: Diagrama de caso de uso para valores brutos.
5.3.2 VALORES DO PESO DA EMBALAGEM VAZIA DO PRODUTO: O usuário deseja
cadastrar os valores pesados na balança da embalagem vazia do produto escolhido para
verificação. Assim o usuário deve informar o valor de cada embalagem vazia. Nesta área,
as três principais tarefas a serem realizadas são: a inclusão de um novo valor de
embalagem, a alteração dos dados de um valor de embalagem e a exclusão de um valor
de embalagem do sistema.
Atores Envolvidos: Usuário, Sistema e Banco de Dados.
Requisitos: Valor da Embalagem Vazia.
27
uc VEmbalagemEA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
Usuario
Inclui valor de embalagem
Altera valor de embalagem
Exclui valor de embalagem
Seleciona valor de embalagem
«include»
«include»
FIGURA 8: Diagrama de caso de uso para valores de embalagens.
5.4 MODELO CONCEITUAL
O Modelo Conceitual é uma representação de conceitos em um domínio de
problema.
A Figura 9 ilustra o Modelo Conceitual para o sistema para avaliação de produtos
pré-medidos, construído a partir do estudo dos casos de uso anteriormente abortado,
identificando os principais conceitos envolvidos e as associações.
class SAPPM
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version EA 7.0 Unregistered Trial Version
Laudo
Produto
VEmbalagem
Tecnico VBruto
1 1..*
1
1..*
1 1..*
1
1
FIGURA 9: Modelo conceitual.28
6 IMPLEMENTAÇÃO
Este capítulo do trabalho tem por objetivo apresentar como ficou o software após o
seu desenvolvimento. Serão ilustradas as interfaces e explicadas como procedem as
rotinas e a importância de cada uma delas para o sistema.
O software foi desenvolvido na linguagem Delphi, devido a sua simplicidade e pelo
pequeno período para desenvolvimento.
6.1 A ABERTURA DO SISTEMA
A partir da tela inicial do sistema para avaliação de produtos pré-medidos, mostrada
pela Figura 10, o usuário poderá ter acesso aos botões que permitem as três operações:
acesso a produtos, laudos e técnicos do sistema.
FIGURA 10: Tela inicial.
29
6.2 TELA CADASTRO TÉCNICO
A tela cadastro de técnico mostrada pela Figura 11, o usuário poderá ter acesso aos
botões que permitem as três operações: próximo técnico, incluir um novo técnico e excluir
um técnico do sistema.
FIGURA 11: Tela cadastro técnico
6.3 TELA CADASTRO DE PRODUTO
A tela cadastro de produto mostrada pela Figura 12, o usuário poderá ter acesso
aos botões que permitem as três operações: próximo produto, incluir um novo produto e
excluir um produto do sistema.
FIGURA 12: Tela cadastro de produto.
30
6.4 TELA LAUDOS
A tela laudos mostrada pela Figura 13, o usuário poderá ter acesso aos botões que
permitem algumas operações: próximo laudo, incluir um novo laudo, excluir um laudo e
localizar um laudo já realizado do sistema. Também nessa tela você tem acesso ao
cadastro de valores brutos e valores de embalagem para o produto examinado e a
operação visualizar laudo onde gera um relatório do exame realizado.
FIGURA 13: Tela laudos.
6.5 TELA EMBALAGEM
A tela embalagem mostrada pela Figura 14, o usuário poderá ter acesso aos
campos onde informará ao sistema os valores pesados das embalagens vazias e botões
que permitem as duas operações: salvar e restaurar valores de embalagem do sistema.
31
FIGURA 14: Tela embalagem.
6.6 TELA VALORES BRUTO
A tela valores bruto mostrada pela Figura 15, o usuário poderá ter acesso aos
campos onde informará ao sistema os valores brutos pesados e botões que permitem as
duas operações: salvar e restaurar valores de embalagem do sistema.
FIGURA 15: Tela valores bruto.
32
6.7 RELATÓRIO
A Figura 14 mostra o relatório do laudo de exame de um determinado produto após
ter concluído as etapas de cadastro de valores bruto e valores de embalagem. O relatório
mostra todos os cálculos necessários para os critérios da média e individual, informa os
resultados e sua conclusão, para imprimir o relatório, basta clicar no botão visualizar laudo.
FIGURA 16: Relatório do exame.
33
7 BANCO DE DADOS DO SAPPM
Seguindo o levantamento de requisitos, foram identificados as entidades e
relacionamentos observados na Figura 14. Os técnicos são responsáveis pela realização
do exame de um produto e esta associação permite a geração de um laudo técnico.
Figura 17: Diagrama de entidade relacional
O banco de dados utilizado no aplicativo para avaliação de produtos pré-medidos é
o PostgreSQL 8.2 e o EMS PostgreSQL Manager 3 para gerenciamento. Sua escolha foi
por ser um software livre. O banco é composto por cinco tabelas: PRODUTOS, LAUDOS,
TECNICOS, VBRUTOS e VEMBALAGENS. A tabela LAUDOS se relaciona com as
tabelas PRODUTOS, TECNICOS, VBRUTOS e VEMBALAGENS. Cada posto fabril irá
possuir um banco de dados próprio com seus respectivos dados. A Figura 18 representa o
banco.
34
Figura 18: Modelagem do banco de dados
35
8 CONCLUSÃO
O presente trabalho apresentou os detalhes que envolvem a verificação de um
produto pré-medido para servir de base para o desenvolvimento do sistema.
O uso da especificação em linguagem UML propiciou uma experiência de como é o
processo de análise e projeto de um problema resolvido com o auxílio do computador, e
que facilitou a implementação do software.
O sistema de avaliação de produtos pré-medidos tem como alvo a verificação do
valor real da quantidade do produto embalado. O objetivo do sistema é informar ao
fabricante se o produto pré-medido está de acordo com os R.T.M., sendo possível após a
verificação detectar erros e corrigi-los, entregando ao mercado um produto com o menor
custo possível.
Utilizando o sistema como avaliação do produto em questão, o desvio padrão pode
ser vizualizado e corrigido no processo fabril, de modo a proporcionar maior tolerância no
critério de aprovação para a média. Esta medida se constitui na mais produtiva, pois
otimiza o uso da matéria-prima e reduz os custos de produção.
A avaliação do produto acondicionado com base no controle das medições de seu
conteúdo efetivo podem diminuir a incidência de produtos não-conformes durante a
produção e nos pontos de venda final, aumentando a credibilidade da marca junto à
sociedade e aos órgãos de fiscalização.
A continuação deste trabalho pode ser realizada, primeiramente, tornando o produto
mais comercial. Para isso, se faz necessário um aperfeiçoamento das interfaces do
usuário, deixando-as mais interessantes visualmente além de auto-explicativas, permitindo
ao usuário uma interação direta, sem maiores auxílios de manuais. Segundo
complementando o software SAPPM para verificação de produtos fabricados em unidades
e comprimento que são regulamentados pelas Portarias do INMETRO 001/98 e 166/2003.
Para trabalhos futuros, também é interessante se imaginar uma integração do
sistema com o processo fabril, com o sistema ligado a uma balança no final da produção,
capturando dados, para verificações aleatórias.
36
9 REFERÊNCIAS BIBLIOGRÁFICAS
CÃNDIDO, CARLOS H. - Aprendizagem em Banco de Dados: Implementação de Ferramenta de Modelagem E.R. – UFSC/UNIVAG – disponível em http://www.grupobd.inf.ufsc.br/bibliografiaGBD/especializacoes/Especializacao-CarlosCandido-FerramentaModelagemER-2005 Acesso em: 05 de julho de 2007.
CONMETRO. Resolução n.º 11. (1988) - “Dispõe sobre aprovação da Regulamentação Metrológica das Unidades de Medida”. DOU, Brasília. Sec. 1, p. 20524-20526.
DELPHI. [S.l.]: URL: http://www.borland.com/br/, Agosto 2007. Internet
EMS SQL MANAGER. [S.l.]: URL: http://sqlmanager.net/products/postgresql/manager/, Agosto 2007. Internet.
ENTERPRISE ARCHITECT. [S.l.]: URL: http://www.sparxsystems.com.au/ea.htm, Agosto 2007. Internet.
INMETRO. Portaria n.º 096. (2000) - “Dispõe sobre regulamento técnico metrológico estabelece os critérios para verificação do conteúdo efetivo de produtos pré-medidos com o conteúdo nominal igual expresso em unidades de massa e volume”. DOU, Brasília. Sec. 1, p. 34-35.
INMETRO. Portaria n.º 074. (1995) - “Dispõe sobre aprovação do Regulamento Técnico que estabelece os critérios para verificação do conteúdo líquido de produtos pré-medidos com conteúdo nominal igual e comercializados nas grandezas de massa e volume”. DOU, Brasília. Sec. 1, p.10825-10826.
INMETRO. [S.l.]: URL:http://www.inmetro.gov.br/inmetro/historico.asp/, Abril 2007. Internet.
LARMAN, C. – Utilizando UML e Padrões: Uma Introdução à Análise e ao Projeto Orientados a Objetos – tradução: Luiz A. Meirelles Salgado. Porto Alegre: editora Bookman, 2000.
POSTGRESQL. [S.l.]: URL: http://www.postgresql.org.br/, Agosto 2007. Internet.
37
10 ANEXOS
10.1 SQL PARA CRIAÇÃO DAS TABELAS
CREATE TABLE "sc_trabalho"."Laudos" ( "NumLaudo" INTEGER NOT NULL, "DataVerificacao" DATE, "Media" DOUBLE PRECISION, "Tolerancia" DOUBLE PRECISION, "CMedia" DOUBLE PRECISION, "CIndividual" DOUBLE PRECISION, "RIndividual" VARCHAR(20), "RMedia" VARCHAR(20), "RFinal" VARCHAR(20), "LoteProduto" VARCHAR(10), "QAmostra" INTEGER, "codproduto" INTEGER NOT NULL, "matricula_usuario" INTEGER NOT NULL, "massa_esp" DOUBLE PRECISION, "desvio_padrao" DOUBLE PRECISION, "amostra_aceitavel" INTEGER, "defeituosas_encontrada" INTEGER, "temperaturaproduto" DOUBLE PRECISION, CONSTRAINT "laudos_pkey" PRIMARY KEY("NumLaudo"), CONSTRAINT "laudos_fk" FOREIGN KEY ("codproduto") REFERENCES "sc_trabalho"."Produtos"("CodProduto") ON DELETE NO ACTION ON UPDATE NO ACTION NOT DEFERRABLE, CONSTRAINT "laudos_fk1" FOREIGN KEY ("matricula_usuario") REFERENCES "sc_trabalho"."Usuarios"("Matricula") ON DELETE NO ACTION ON UPDATE NO ACTION NOT DEFERRABLE) WITHOUT OIDS;
CREATE TABLE "sc_trabalho"."Produtos" ( "CodProduto" INTEGER NOT NULL, "NomeProduto" VARCHAR(25), "Marca" VARCHAR(20), "quantidadenominal" DOUBLE PRECISION, "unidade" VARCHAR(2), CONSTRAINT "produtos_pkey" PRIMARY KEY("CodProduto")) WITH OIDS;
CREATE TABLE "sc_trabalho"."Usuarios" ( "Matricula" INTEGER NOT NULL, "Nome" VARCHAR(60), CONSTRAINT "usuarios_pkey" PRIMARY KEY("Matricula")) WITH OIDS;
38
CREATE TABLE "sc_trabalho"."VBrutos" ( "cod_bruto" INTEGER NOT NULL, "valor_bruto" DOUBLE PRECISION, "num_amostra" INTEGER, "num_laudo" INTEGER, "valor_efetivo" DOUBLE PRECISION, CONSTRAINT "vbrutos_pkey" PRIMARY KEY("cod_bruto"), CONSTRAINT "vbrutos_fk" FOREIGN KEY ("num_laudo") REFERENCES "sc_trabalho"."Laudos"("NumLaudo") ON DELETE NO ACTION ON UPDATE NO ACTION NOT DEFERRABLE) WITH OIDS;
CREATE TABLE "sc_trabalho"."VEmbalagens" ( "valor1" DOUBLE PRECISION, "num_laudo" INTEGER NOT NULL, "valor2" DOUBLE PRECISION, "valor3" DOUBLE PRECISION, "valor4" DOUBLE PRECISION, "valor5" DOUBLE PRECISION, "valor6" DOUBLE PRECISION, "media_emb" REAL, CONSTRAINT "VEmbalagens_pkey" PRIMARY KEY("num_laudo"), CONSTRAINT "vembalagens_fk" FOREIGN KEY ("num_laudo") REFERENCES "sc_trabalho"."Laudos"("NumLaudo") ON DELETE NO ACTION ON UPDATE NO ACTION NOT DEFERRABLE) WITH OIDS;
39
10.2 CÓDIGO FONTE
unit unprincipal;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, ADODB, ExtCtrls;
type Tfmprincipal = class (TForm) GroupBox1: TGroupBox; btnUsuario: TButton; btnProduto: TButton; btnLaudos: TButton; btnFechar: TButton; db_sappm: TADOConnection; Image1: TImage; Label1: TLabel; procedure btnFecharClick(Sender: TObject); procedure btnUsuarioClick(Sender: TObject); procedure btnProdutoClick(Sender: TObject); procedure btnLaudosClick(Sender: TObject); private { Private declarations } public { Public declarations } end;
var fmprincipal: Tfmprincipal;
implementation
uses unUsuario, unProduto, unLaudos, unEmbalagem;
{$R *.dfm}
procedure Tfmprincipal.btnFecharClick(Sender: TObject);begin close;end;
procedure Tfmprincipal.btnUsuarioClick(Sender: TObject);begin fmUsuario:=TfmUsuario.create(application); fmUsuario.show;end;
procedure Tfmprincipal.btnProdutoClick(Sender: TObject);begin
40
fmProduto:=TfmProduto.create(application); fmProduto.show;end;
procedure Tfmprincipal.btnLaudosClick(Sender: TObject);begin fmLaudos:=TfmLaudos.create(application); fmLaudos.show;end;
end.
unit unEmbalagem;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uTelaCadastro, DB, ADODB, ComCtrls, StdCtrls, Mask, DBCtrls, Buttons, ExtCtrls;
type TfmEmbalagem = class (TfTelaCadastro) qryCadastrovalor1: TFloatField; qryCadastronum_laudo: TIntegerField; qryCadastrovalor2: TFloatField; qryCadastrovalor3: TFloatField; qryCadastrovalor4: TFloatField; qryCadastrovalor5: TFloatField; qryCadastrovalor6: TFloatField; Label1: TLabel; ed_v1: TDBEdit; Label2: TLabel; DBEdit2: TDBEdit; Label3: TLabel; ed_v2: TDBEdit; Label4: TLabel; ed_v3: TDBEdit; Label5: TLabel; ed_v4: TDBEdit; Label6: TLabel; ed_v5: TDBEdit; Label7: TLabel; ed_v6: TDBEdit; Label8: TLabel; ed_media: TDBEdit; qryCadastromedia_emb: TFloatField; procedure FormShow(Sender: TObject); procedure qryCadastroAfterScroll(DataSet: TDataSet); procedure btnSalvarClick(Sender: TObject);
41
private { Private declarations } gmedia:double; public { Public declarations } end;
var fmEmbalagem: TfmEmbalagem;
implementation
uses unprincipal, unLaudos, unVbrutos, unProduto;
{$R *.dfm}
procedure TfmEmbalagem.FormShow(Sender: TObject);var numLaudo:integer;
begin inherited; numLaudo:=fmLaudos.gNumLaudo;
with qryAuxiliar, qryAuxiliar.SQL do begin close; clear; add ('select "num_laudo" '); add ('from "sc_trabalho"."VEmbalagens" '); add ('where "num_laudo"= :plaudo'); Parameters.ParamByName('plaudo').Value:=numLaudo; open; if not (qryAuxiliar.RecordCount > 0) then begin qryCadastro.Append; qryCadastronum_laudo.Value:=numLaudo; end else with qryCadastro, qrycadastro.SQL do begin close; clear; add ('select * '); add ('from "sc_trabalho"."VEmbalagens" '); add ('where "num_laudo"= :plaudo'); Parameters.ParamByName('plaudo').Value:=numLaudo; open; end; //with end;//withend;//procedure
procedure TfmEmbalagem.qryCadastroAfterScroll(DataSet: TDataSet);begin
42
inherited; btnAnterior .Enabled := (qryCadastro.State = dsBrowse) and not (qryCadastro.Bof); btnProximo .Enabled := (qryCadastro.State = dsBrowse) and not (qryCadastro.Eof); btnSalvar .Enabled := qryCadastro.State in [dsEdit, dsInsert]; btnRestaurar.Enabled := qryCadastro.State in [dsEdit, dsInsert]; btnNovo .Enabled := qryCadastro.State in [dsBrowse]; btnExcluir .Enabled := (qryCadastro.State in [dsBrowse]) and not (qryCadastro.IsEmpty); btnLocalizar.Enabled := (qryCadastro.State in [dsBrowse]) and not (qryCadastro.IsEmpty);
Case qryCadastro.State of dsInsert : begin lblState.Visible := True; lblState.Caption := 'Inserindo dados'; end; // dsInsert dsEdit : begin lblState.Visible := True; lblState.Caption := 'Alterando dados'; end; // dsInsert else begin lblState.Caption := ''; end; // else end; // case
end;
procedure TfmEmbalagem.btnSalvarClick(Sender: TObject);var soma:real; lmassa, lvalorBruto, vk: double; cmedia, cindividual, tolerancia, media, qn, desvio:double; Acmedia:array[1..80] of double; numamostra, nabaixo, aceitavel:integer; rmedia, rindividual, rgeral:string;
begin numamostra:=fmLaudos.gNumAmostras; //inicializando vetor do critério da média Acmedia[5]:=2.059; Acmedia[6]:=1.646; Acmedia[7]:=1.401; Acmedia[8]:=1.237; Acmedia[9]:=1.118; Acmedia[10]:=1.028; Acmedia[11]:=0.995; Acmedia[12]:=0.897; Acmedia[13]:=0.847; Acmedia[14]:=0.805; Acmedia[20]:=0.640; Acmedia[32]:=0.485; Acmedia[80]:=0.295;
//calcula da média de embalagens43
soma:=0.0; gmedia:=0.0; soma:=StrToFloat(ed_v1.Text) +StrToFloat(ed_v2.Text) +StrToFloat(ed_v3.Text) +StrToFloat(ed_v4.Text) +StrToFloat(ed_v5.Text) +StrToFloat(ed_v6.Text); gmedia:=soma/6; qryCadastromedia_emb.AsFloat := gmedia; Inherited; //calcula valor efetivo
with qryAuxiliar, qryAuxiliar.SQL do begin close; clear; add ('select * '); add ('from "sc_trabalho"."VBrutos" '); add ('where "num_laudo"= :plaudo'); Parameters.ParamByName('plaudo').Value:=fmLaudos.gNumLaudo; open; if (qryAuxiliar.RecordCount > 0) then //verifica se existe algum registro begin lmassa:=fmLaudos.qryCadastromassa_esp.Value; qryAuxiliar.First; //primerio registro while not qryAuxiliar.Eof do //enquanto não for final do arquivo faça begin qryAuxiliar.edit; qryAuxiliar.FieldByName('valor_efetivo').Value:= (qryAuxiliar.fieldbyname('valor_bruto').Value - qryCadastromedia_emb.AsFloat)/lmassa; qryAuxiliar.Post; qryAuxiliar.Next; if qryAuxiliar.Eof then break; end;//while end; //if end;//with //calcula desvio padrão e média do valor efetivo with qryauxiliar, qryauxiliar.SQL do begin close; clear; add ('select sum("valor_efetivo") as somabruto, stddev ("valor_efetivo") as DesvioPadrao '); add ('from "sc_trabalho"."VBrutos"'); add ('where "num_laudo"= :plaudo'); Parameters.ParamByName('plaudo').Value:=fmLaudos.gNumLaudo; open; if qryAuxiliar.FieldByName('somabruto').Value > 0.0 then begin soma:= qryAuxiliar.FieldByName('somabruto').AsFloat; desvio:=qryAuxiliar.fieldByname('DesvioPadrao').AsFloat;
44
media:=(soma/numamostra); with qryPesquisa, qryPesquisa.SQL do begin close; clear; add ('select * '); add ('from "sc_trabalho"."Laudos" '); add ('where "NumLaudo"= :plaudo'); Parameters.ParamByName('plaudo').Value:=fmLaudos.gNumLaudo; open;
if qryPesquisa.RecordCount > 0 then begin qryPesquisa.edit; qryPesquisa.FieldByName('media').AsFloat:= media; qryPesquisa.FieldByName('desvio_padrao').AsFloat:= desvio; qryPesquisa.Post; //salva fmLaudos.qryCadastro.Refresh; end;//if
end;//with
end; //if
end;//with
//calcula critério de média
vk:=Acmedia[numamostra]; with qryPesquisa, qryPesquisa.SQL do begin // seleciona qn na tabela produto close; clear; add ('select laudos."codproduto", produtos."quantidadenominal"'); add('from "sc_trabalho"."Produtos" produtos, "sc_trabalho"."Laudos" laudos'); add('where laudos."codproduto" = produtos."CodProduto" '); add(' and laudos."NumLaudo" = :plaudo '); Parameters.ParamByName('plaudo').Value:=fmLaudos.gNumLaudo; open; end;//with if qryPesquisa.RecordCount > 0 then begin qn:=qryPesquisa.fieldbyname('quantidadenominal').AsFloat; cmedia:=qn-(vk*desvio); end;//if
//calcula tolerancia individual
tolerancia:=0; cindividual:=0; if (qn >=5) and (qn<=50) then tolerancia:=(0.09*qn); if (qn >50) and (qn<=100) then tolerancia:=4.5;
45
if (qn >100) and (qn<=200) then tolerancia:=(0.045*qn); if (qn >200) and (qn<=300) then tolerancia:=9; if (qn >300) and (qn<=500) then tolerancia:=(0.03*qn); if (qn >500) and (qn<=1000) then tolerancia:=15; if (qn >1000) and (qn<=10000) then tolerancia:=(0.015*qn); if (qn >10000) and (qn<=15000) then tolerancia:=150; if (qn >15000) then tolerancia:=(0.01*qn);
if fmLaudos.cb_2t.Checked then //claculo de produtos 2T tolerancia:=tolerancia*2;
cindividual:=(qn-tolerancia); //calcula criterio individual rmedia:=''; if (media >= cmedia) then // verifica resultado da média rmedia:='Aprovado' else rmedia:='Reprovado';
with qryPesquisa, qryPesquisa.SQL do begin // seleciona quantidade de amostra abaixo do citerio individual close; clear; add ('select "valor_efetivo"'); add('from "sc_trabalho"."VBrutos" '); add('where "num_laudo"= :plaudo '); Parameters.ParamByName('plaudo').Value:=fmLaudos.gNumLaudo; open; qryPesquisa.First; nabaixo:=0; while true do begin //verifica a quantidade de amostra abaido do criterio individual if qryPesquisa.FieldByName('valor_efetivo').AsFloat < cindividual then nabaixo:=nabaixo+1; qrypesquisa.Next; if qryPesquisa.Eof then break; end;//while end;//with
aceitavel:=0; if (numamostra <= 14) then //calcula número de amostra aceitável no critério individual aceitavel:=0; if (numamostra =20) then aceitavel:=1; if (numamostra =32) then aceitavel:=2 ; if (numamostra =80) then
46
aceitavel:=5 ;
rindividual:=''; if (aceitavel>=nabaixo) then// calcula resultado do criterio individual rindividual:='Aprovado' else rindividual:='Reprovado';
//calcula resultado geral
rgeral:=''; if (rmedia='Reprovado') or (rindividual='Reprovado') then rgeral:='Reprovado' else rgeral:= 'Aprovado';
if not (fmLaudos.qryCadastro.State in [dsedit, dsinsert]) then begin fmLaudos.qrycadastro.Edit; end;//if fmLaudos.qryCadastroCMedia.AsFloat:= cmedia; fmLaudos.qryCadastroamostra_aceitavel.AsInteger:=aceitavel; fmLaudos.qryCadastrodefeituosas_encontrada.AsInteger:=nabaixo; fmLaudos.qryCadastroRFinal.AsString:=rgeral; fmLaudos.qryCadastroRIndividual.AsString:=rindividual; fmLaudos.qryCadastroCIndividual.AsFloat:=cindividual; fmLaudos.qryCadastroTolerancia.AsFloat:=tolerancia; fmLaudos.qryCadastroRMedia.AsString:=rmedia; fmLaudos.qrycadastro.post; fmLaudos.btnSalvarClick(fmLaudos.btnSalvar);
end;// procedure btnsalvar
end.
unit unLaudos;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uTelaCadastro, DB, ADODB, ComCtrls, StdCtrls, Mask, DBCtrls, Buttons, ExtCtrls, RpDefine, RpBase, RpSystem, rpdevice;
type TfmLaudos = class (TfTelaCadastro) qryCadastroNumLaudo: TIntegerField; qryCadastroDataVerificacao: TDateField; qryCadastroMedia: TFloatField;
47
qryCadastroTolerancia: TFloatField; qryCadastroCMedia: TFloatField; qryCadastroCIndividual: TFloatField; qryCadastroRIndividual: TWideStringField; qryCadastroRMedia: TWideStringField; qryCadastroRFinal: TWideStringField; qryCadastroQAmostra: TIntegerField; qryCadastrocodproduto: TIntegerField; qryCadastromatricula_usuario: TIntegerField; qryCadastromassa_esp: TFloatField; Label1: TLabel; ed_nlaudo: TDBEdit; Label2: TLabel; ed_data: TDBEdit; Label3: TLabel; ed_loteProduto: TDBEdit; Label4: TLabel; Label5: TLabel; db_media: TDBEdit; Label6: TLabel; ed_tolerancia: TDBEdit; Label7: TLabel; Label8: TLabel; Label9: TLabel; ed_cMedia: TDBEdit; Label10: TLabel; ed_cIndividual: TDBEdit; Label11: TLabel; ed_massa_esp: TDBEdit; lookProduto: TDBLookupComboBox; qryProduto: TADOQuery; qryProdutoNomeProduto: TWideStringField; qryProdutoMarca: TWideStringField; qryProdutoCodProduto: TIntegerField; dsProduto: TDataSource; qryProdutoquantidadenominal: TFloatField; comboQuantAmostra: TDBComboBox; qryCadastroLoteProduto: TWideStringField; qryEmbalagem: TADOQuery; qryEmbalagemcod_embalagem: TIntegerField; qryEmbalagemnum_laudo: TIntegerField; qryEmbalagemvalor1: TFloatField; qryEmbalagemvalor2: TFloatField; qryEmbalagemvalor3: TFloatField; qryEmbalagemvalor4: TFloatField; qryEmbalagemvalor5: TFloatField; qryEmbalagemvalor6: TFloatField; DataSource1: TDataSource; qryEmbalagemmedia_emb: TFloatField; LookUsuario: TDBLookupComboBox; Label19: TLabel; qryUsuario: TADOQuery; qryUsuarioMatricula: TIntegerField; qryUsuarioNome: TWideStringField;
48
dsUsuario: TDataSource; btnVBrutos: TBitBtn; btnEmbalagem: TBitBtn; Label12: TLabel; Label13: TLabel; Label14: TLabel; DBEdit1: TDBEdit; Label15: TLabel; DBEdit2: TDBEdit; Label16: TLabel; DBEdit4: TDBEdit; qryProdutounidade: TWideStringField; Label17: TLabel; qryCadastrodesvio_padrao: TFloatField; Label18: TLabel; ed_desvio: TDBEdit; qryCadastroamostra_aceitavel: TIntegerField; qryCadastrodefeituosas_encontrada: TIntegerField; Label20: TLabel; DBEdit3: TDBEdit; Label21: TLabel; DBEdit5: TDBEdit; gb_localizar: TGroupBox; ed_pesquisa: TEdit; Label22: TLabel; bt_pesquisar: TButton; RvSystem1: TRvSystem; qryCadastrotemperaturaproduto: TFloatField; Label23: TLabel; ed_temperatura: TDBEdit; cb_2t: TCheckBox; procedure FormShow(Sender: TObject); procedure btnNovoClick(Sender: TObject); procedure btnVBrutosClick(Sender: TObject); procedure btnSalvarClick(Sender: TObject); procedure btnEmbalagemClick(Sender: TObject); procedure qryCadastroAfterScroll(DataSet: TDataSet); procedure btnLocalizarClick(Sender: TObject); procedure bt_pesquisarClick(Sender: TObject); procedure ed_pesquisaKeyPress(Sender: TObject; var Key: Char); procedure RvSystem1Print(Sender: TObject); procedure RvSystem1NewPage(Sender: TObject); procedure btnImprimirClick(Sender: TObject);
private { Private declarations } public gNumLaudo:integer; gNumAmostras:integer; Procedure InicializaRelatorio; Procedure CabecalhoRelatorio; Procedure ImprimeRelatorio; { Public declarations } end;
49
var fmLaudos: TfmLaudos;
implementation
uses unprincipal, unVbrutos, unEmbalagem;
{$R *.dfm}
procedure TfmLaudos.FormShow(Sender: TObject);begin inherited; qryProduto.open; qryUsuario.Open;end;
procedure TfmLaudos.btnNovoClick(Sender: TObject); //calcula numero do laudovar NovoCodigo : integer;begin inherited; with qryNovo, qryNovo.SQL do begin Close; Clear; Add('SELECT MAX("NumLaudo") AS valor '); Add('FROM "sc_trabalho"."Laudos" '); Open; end; if not qryNovo.IsEmpty then begin NovoCodigo := qryNovo.FieldByName('valor').AsInteger+1; end else // if NovoCodigo := 1; qryCadastroNumLaudo.AsInteger := NovoCodigo; gNumLaudo:=NovoCodigo; qryCadastroDataVerificacao.Value:=date; qryCadastromassa_esp.Value:=1; lookproduto.SetFocus;end;
procedure TfmLaudos.btnVBrutosClick(Sender: TObject);begin inherited; gNumLaudo:= qryCadastroNumLaudo.AsInteger; gNumAmostras:=qryCadastroQAmostra.AsInteger; fmVbrutos:=TfmVbrutos.Create(application); fmVbrutos.Show;
end;
50
procedure TfmLaudos.btnSalvarClick(Sender: TObject);begin inherited; //if qryEmbalagem.State in [dsinsert, dsedit] then // qryEmbalagem.Post;end;
procedure TfmLaudos.btnEmbalagemClick(Sender: TObject); begin fmLaudos.gNumLaudo:=qryCadastroNumLaudo.Value; fmLaudos.gNumAmostras := qryCadastroQAmostra.Value; fmEmbalagem:=TfmEmbalagem.Create(application); fmEmbalagem.show;end; //procedure
procedure TfmLaudos.qryCadastroAfterScroll(DataSet: TDataSet);begin inherited; btnAnterior .Enabled := (qryCadastro.State = dsBrowse) and not (qryCadastro.Bof); btnProximo .Enabled := (qryCadastro.State = dsBrowse) and not (qryCadastro.Eof); btnSalvar .Enabled := qryCadastro.State in [dsEdit, dsInsert]; btnRestaurar.Enabled := qryCadastro.State in [dsEdit, dsInsert]; btnNovo .Enabled := qryCadastro.State in [dsBrowse]; btnExcluir .Enabled := (qryCadastro.State in [dsBrowse]) and not (qryCadastro.IsEmpty); btnLocalizar.Enabled := (qryCadastro.State in [dsBrowse]) and not (qryCadastro.IsEmpty);
Case qryCadastro.State of dsInsert : begin lblState.Visible := True; lblState.Caption := 'Inserindo dados'; end; // dsInsert dsEdit : begin lblState.Visible := True; lblState.Caption := 'Alterando dados'; end; // dsInsert else begin lblState.Caption := ''; end; // else end; // case
end; // afterscroll
procedure TfmLaudos.btnLocalizarClick(Sender: TObject);begin inherited; gb_localizar.visible:=True; ed_pesquisa.SetFocus;end;
procedure TfmLaudos.bt_pesquisarClick(Sender: TObject);var numlaudopesq:integer;begin
51
inherited; if ed_pesquisa.Text= '' then exit; numlaudopesq:=StrToInt(ed_pesquisa.Text);// pegua string do campo pesquisa e transforma em integer qrycadastro.Locate('NumLaudo',numlaudopesq,[loPartialKey]); gb_localizar.Visible:=false;end;
procedure TfmLaudos.ed_pesquisaKeyPress(Sender: TObject; var Key: Char);begin inherited; if not (key in ['0'..'9',#8]) then begin key:=#0; end;end;
procedure TfmLaudos.RvSystem1Print(Sender: TObject);begin inherited; ImprimeRelatorio;end;
procedure TfmLaudos.RvSystem1NewPage(Sender: TObject);begin inherited; CabecalhoRelatorio;end;
procedure TfmLaudos.InicializaRelatorio;
begin with RVSystem1.SystemPrinter do begin MarginRight := 1; //margem direita MarginLeft := 1.5; MarginTop := 1; MarginBottom := 1; Units := unCM; UnitsFactor := 2.54; rpdev.Orientation := poPortrait; //retrato ou paisagem rpDev.SelectPaper('A4',False); Orientation := rpdev.Orientation; Copies := 1; RVSystem1.SystemPreview.RulerType := rtBothCm; //tipo de regua RVSystem1.SystemSetups := RVSystem1.SystemSetups - [ssAllowSetup]; RVSystem1.SystemPreview.FormState := wsMaximized; end; // with RVSystem1.Execute; Screen.Cursor := crDefault;
end;//procedure inicializa relatorio
52
procedure TfmLaudos.CabecalhoRelatorio; //cabeçalhovar codigoproduto, defeituosasencontradas, numamostraaceitavel, quantidadeamostra, numerolaudo:integer; dataverificacao:TDateTime; mediaembalagem, criterioindividual, criteriomedia, tolerancia, mediavalorefetivo:double; quantidadenominal, temperaturaproduto, desviopadrao, massaespecifica:double; unidade, resultadoindividual,resultadomedia,resultadofinal,loteproduto :string; marcaproduto, nomeproduto, nomeusuario:string; valor1emb, valor2emb, valor3emb, valor4emb, valor5emb, valor6emb:double;
Begin numerolaudo:=qryAuxiliar.fieldbyname('numerolaudo').AsInteger; dataverificacao:=qryAuxiliar.fieldbyname('dataverificacao').AsDateTime; mediavalorefetivo:=qryAuxiliar.fieldbyname('mediavalorefetivo').AsFloat; tolerancia:=qryAuxiliar.fieldbyname('tolerancia').AsFloat; criteriomedia:=qryAuxiliar.fieldbyname('criteriomedia').AsFloat; criterioindividual:=qryAuxiliar.fieldbyname('criterioindividual').AsFloat; resultadoindividual:=qryAuxiliar.fieldbyname('resultadoindividual').AsString; resultadomedia:=qryAuxiliar.fieldbyname('resultadomedia').AsString; resultadofinal:=qryAuxiliar.fieldbyname('resultadofinal').AsString; loteproduto:=qryAuxiliar.fieldbyname('loteproduto').AsString; quantidadeamostra:=qryAuxiliar.fieldbyname('quantidadeamostra').AsInteger; massaespecifica:=qryAuxiliar.fieldbyname('massaespecifica').AsFloat; desviopadrao:=qryAuxiliar.fieldbyname('desviopadrao').AsFloat; numamostraaceitavel:=qryAuxiliar.fieldbyname('numamostraaceitavel').AsInteger; defeituosasencontradas:=qryAuxiliar.fieldbyname('defeituosasencontradas').AsInteger; codigoproduto:=qryAuxiliar.fieldbyname('codigoproduto').AsInteger; temperaturaproduto:=qryAuxiliar.fieldbyname('temperaturaproduto').AsFloat; nomeusuario:=qryAuxiliar.fieldbyname('nomeusuario').AsString; nomeproduto:=qryAuxiliar.fieldbyname('nomeproduto').AsString; quantidadenominal:=qryAuxiliar.fieldbyname('quantidadenominal').AsFloat; unidade:=qryAuxiliar.fieldbyname('unidade').AsString; marcaproduto:=qryAuxiliar.fieldbyname('marcaproduto').AsString; mediaembalagem:=qryAuxiliar.fieldbyname('mediaembalagem').AsFloat; valor1emb:=qryAuxiliar.fieldbyname('valor1emb').AsFloat; valor2emb:=qryAuxiliar.fieldbyname('valor2emb').AsFloat; valor3emb:=qryAuxiliar.fieldbyname('valor3emb').AsFloat; valor4emb:=qryAuxiliar.fieldbyname('valor4emb').AsFloat; valor5emb:=qryAuxiliar.fieldbyname('valor5emb').AsFloat; valor6emb:=qryAuxiliar.fieldbyname('valor6emb').AsFloat;
with RVSystem1.BaseReport do begin //MarginLeft := 1.5; //MarginTop := 1.5; //MarginRight := 1; // Bold := False; //PrintBitmapRect(MarginLeft,MarginTop,MarginLeft+1.5,MarginTop+1.5,Image1.Picture.Bitmap); SetFont('Arial',14); // MarginLeft := 3.5; Home; PrintHeader('NOME DA EMPRESA', pjLeft);
53
MarginTop := MarginTop+1*LineHeight; printHeader('ENDEREÇO DA EMPRESA', pjLeft); MarginTop := MarginTop+1*LineHeight; PrintHeader('ENDEREÇO DA EMPRESA E TELEFONE', pjLeft); MarginTop := MarginTop+2.5*LineHeight; Bold := True;
PrintLeft('LAUDO NUM : '+IntToStr(numerolaudo), 15); MarginTop := MarginTop+1*LineHeight; moveto(MarginLeft, ypos); lineto(PageWidth-MarginRight, ypos); moveto(12.6, ypos); lineto(12.6, ypos+4.17); SetFont('Arial',10);
NewLine; PrintLeft('ESPECIFICAÇÕES DO PRODUTO', 3); Printleft('PESOS DAS EMBALAGENS (g)',13); home; moveto(MarginLeft, ypos+0.2); lineto(PageWidth-MarginRight, ypos+0.2); NewLine; NewLine; PrintLeft('Produto : '+nomeproduto ,MarginLeft); PrintLeft('Código : '+IntToStr(codigoproduto) ,9); SetFont('Arial',8); PrintLeft('Quantidade Examinada : ',13); SetFont('Arial',10); NewLine; NewLine; PrintLeft('Marca : '+marcaproduto ,MarginLeft); PrintLeft('Média : '+FormatFloat('#.0',mediaembalagem),13); NewLine; NewLine; PrintLeft('Conteúdo Nominal : '+FormatFloat('#.0',quantidadenominal)+' '+unidade ,MarginLeft); PrintLeft('Lote de Fabricação: '+loteproduto,7); PrintLeft('P1 : '+FormatFloat('0.0',valor1emb),13); PrintLeft('P2 : '+FormatFloat('0.0',valor2emb),15.5); PrintLeft('P3 : '+FormatFloat('0.0',valor3emb),18.3); NewLine; NewLine; PrintLeft('Temperatura do Produto : '+FormatFloat('0.0',temperaturaproduto)+' ºC',MarginLeft); PrintLeft('Massa Específica : '+FormatFloat('0.000',massaespecifica)+' g/cm³',7); PrintLeft('P4 : '+FormatFloat('0.0',valor4emb),13); PrintLeft('P5 : '+FormatFloat('0.0',valor5emb),15.5); PrintLeft('P6 : '+FormatFloat('0.0',valor6emb),18.3); NewLine; moveto(MarginLeft, ypos); lineto(PageWidth-MarginRight, ypos); NewLine; PrintLeft('CRITÉRIOS DE APROVAÇÃO ',8.5); moveto(MarginLeft, ypos+0.1); lineto(PageWidth-MarginRight, ypos+0.1);
54
NewLine; NewLine; PrintLeft('CRITÉRIO INDIVIDUAL ',3); PrintLeft('CRITÉRIO DA MÉDIA ',10); PrintLeft('CONCLUSÃO ',17.15); moveto(MarginLeft, ypos+0.1); lineto(PageWidth-MarginRight, ypos+0.1); moveto(8, ypos-0.75); lineto(8, ypos+3); moveto(16, ypos-0.75); lineto(16, ypos+3); NewLine; NewLine; PrintLeft('Defeituosas Encontradas: '+IntToStr(defeituosasencontradas),2); PrintLeft('Média Mínima Aceitável: '+FormatFloat('#.0',criteriomedia)+' '+unidade,8.2); NewLine; NewLine; PrintLeft('Valor Mín. Aceitável: '+FormatFloat('#.0',criterioindividual)+' '+unidade,2); PrintLeft('Média : '+FormatFloat('#.0',mediavalorefetivo)+' '+unidade,8.2); PrintLeft('Desvio Padrão : '+FormatFloat('#.0',desviopadrao),12); SetFont('Arial',14); PrintLeft(resultadofinal,17); SetFont('Arial',10); NewLine; NewLine; PrintLeft('Resultado Individual: ',2); bold:=true; PrintLeft(resultadoindividual,5.8); bold:=false; PrintLeft('Resultado da Média: ',8.2); bold:=true; PrintLeft(resultadomedia,12); bold:=false; moveto(MarginLeft, ypos+0.42); lineto(PageWidth-MarginRight, ypos+0.42); NewLine; NewLine; PrintLeft(' QUANTIDADES ENCONTRADAS ',8.5); moveto(MarginLeft, ypos+0.1); lineto(PageWidth-MarginRight, ypos+0.1); NewLine; bold:=true; PrintLeft(' Amostra nº ',2); PrintLeft(' Peso Bruto (g) ',6.9); PrintLeft(' Peso da Embalagem (g) ',10.6); PrintLeft(' Efetivo '+'('+unidade+')',16.6); bold:=false; moveto(MarginLeft, ypos+0.1); lineto(PageWidth-MarginRight, ypos+0.1); NewLine; qrypesquisa.First; while true do begin moveto(MarginLeft, ypos+0.1);
55
lineto(PageWidth-MarginRight, ypos+0.1); PrintRight(qrypesquisa.fieldbyname('num_amostra').AsString,3); PrintRight(FormatFloat('#.0',qrypesquisa.fieldbyname('valor_bruto').Asfloat),8.5); PrintRight(FormatFloat('#.0',mediaembalagem),13); PrintRight(FormatFloat('#.0',qrypesquisa.fieldbyname('valor_efetivo').Asfloat),18); NewLine; qryPesquisa.Next; if qryPesquisa.Eof then break; end; MarginTop := 27.5; moveto(MarginLeft, ypos+0.1); lineto(PageWidth-MarginRight, ypos+0.1); NEWLINE; NEWLINE; PrintCENTER(nomeusuario ,6); PrintCENTER('DATA DA VERIFICAÇÃO : '+DateToStr(dataverificacao),16); NewLine; PrintCENTER('RESPONSÁVEL PELO EXAME' ,6);
end;//with
end;//procedure cabeçalho
Procedure TfmLaudos.ImprimeRelatorio;begin
end;//procedure imprime relatorio
procedure TfmLaudos.btnImprimirClick(Sender: TObject);begin inherited; gNumLaudo:=qryCadastroNumLaudo.AsInteger; with qryAuxiliar, qryAuxiliar.SQL do begin close; clear; Add('SELECT *'); Add('FROM "sc_trabalho"."vi_relatorio"'); Add('WHERE "numerolaudo"= :plaudo '); Parameters.ParamByName('plaudo').Value:=gNumLaudo; Open; end;
with qrypesquisa, qrypesquisa.SQL do begin close; clear; Add('SELECT *'); Add('FROM "sc_trabalho"."VBrutos"'); Add('WHERE "num_laudo"= :plaudo '); add('ORDER BY "num_amostra" '); Parameters.ParamByName('plaudo').Value:=gNumLaudo;
56
Open; end;
InicializaRelatorio;end;
end.
unit unProduto;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uTelaCadastro, DB, ADODB, ComCtrls, StdCtrls, Mask, DBCtrls, Buttons, ExtCtrls;
type TfmProduto = class (TfTelaCadastro) qryCadastroCodProduto: TIntegerField; qryCadastroNomeProduto: TWideStringField; qryCadastroMarca: TWideStringField; Label1: TLabel; DBEdit1: TDBEdit; Label2: TLabel; ed_nomeProduto: TDBEdit; Label3: TLabel; ed_marca: TDBEdit; Label4: TLabel; DBEdit4: TDBEdit; qryCadastroquantidadenominal: TFloatField; qryCadastrounidade: TWideStringField; DBComboBox1: TDBComboBox; procedure btnNovoClick(Sender: TObject); procedure qryCadastroAfterScroll(DataSet: TDataSet); private { Private declarations } public { Public declarations } end;
var fmProduto: TfmProduto;
implementation
uses unprincipal;
{$R *.dfm}
procedure TfmProduto.btnNovoClick(Sender: TObject); var NovoCodigo : integer;begin
57
inherited; with qryNovo, qryNovo.SQL do begin Close; Clear; Add('SELECT MAX("CodProduto") AS valor '); Add('FROM "sc_trabalho"."Produtos" '); Open; end; if not qryNovo.IsEmpty then begin NovoCodigo := qryNovo.FieldByName('valor').AsInteger+1; end else // if NovoCodigo := 1; qryCadastroCodProduto.AsInteger := NovoCodigo; ed_nomeProduto.SetFocus;end;
procedure TfmProduto.qryCadastroAfterScroll(DataSet: TDataSet);begin inherited; btnAnterior .Enabled := (qryCadastro.State = dsBrowse) and not (qryCadastro.Bof); btnProximo .Enabled := (qryCadastro.State = dsBrowse) and not (qryCadastro.Eof); btnSalvar .Enabled := qryCadastro.State in [dsEdit, dsInsert]; btnRestaurar.Enabled := qryCadastro.State in [dsEdit, dsInsert]; btnNovo .Enabled := qryCadastro.State in [dsBrowse]; btnExcluir .Enabled := (qryCadastro.State in [dsBrowse]) and not (qryCadastro.IsEmpty); btnLocalizar.Enabled := (qryCadastro.State in [dsBrowse]) and not (qryCadastro.IsEmpty);
Case qryCadastro.State of dsInsert : begin lblState.Visible := True; lblState.Caption := 'Inserindo dados'; end; // dsInsert dsEdit : begin lblState.Visible := True; lblState.Caption := 'Alterando dados'; end; // dsInsert else begin lblState.Caption := ''; end; // else end; // caseend;
end.
58
unit unUsuario;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uTelaCadastro, DB, ADODB, ComCtrls, StdCtrls, Mask, DBCtrls, Buttons, ExtCtrls;
type TfmUsuario = class (TfTelaCadastro) qryCadastroMatricula: TIntegerField; qryCadastroNome: TWideStringField; Label1: TLabel; DBEdit1: TDBEdit; Label2: TLabel; DBEdit2: TDBEdit; procedure qryCadastroAfterScroll(DataSet: TDataSet); private { Private declarations } public { Public declarations } end;
var fmUsuario: TfmUsuario;
implementation
uses unprincipal;
{$R *.dfm}
procedure TfmUsuario.qryCadastroAfterScroll(DataSet: TDataSet);begin inherited; btnAnterior .Enabled := (qryCadastro.State = dsBrowse) and not (qryCadastro.Bof); btnProximo .Enabled := (qryCadastro.State = dsBrowse) and not (qryCadastro.Eof); btnSalvar .Enabled := qryCadastro.State in [dsEdit, dsInsert]; btnRestaurar.Enabled := qryCadastro.State in [dsEdit, dsInsert]; btnNovo .Enabled := qryCadastro.State in [dsBrowse]; btnExcluir .Enabled := (qryCadastro.State in [dsBrowse]) and not (qryCadastro.IsEmpty); btnLocalizar.Enabled := (qryCadastro.State in [dsBrowse]) and not (qryCadastro.IsEmpty);
Case qryCadastro.State of dsInsert : begin lblState.Visible := True; lblState.Caption := 'Inserindo dados'; end; // dsInsert dsEdit : begin lblState.Visible := True; lblState.Caption := 'Alterando dados'; end; // dsInsert else begin
59
lblState.Caption := ''; end; // else end; // caseend;
end.
unit unVbrutos;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uTelaCadastro, DB, ADODB, ComCtrls, StdCtrls, Mask, DBCtrls, Buttons, ExtCtrls, Grids, DBGrids;
type TfmVbrutos = class (TfTelaCadastro) qryCadastrocod_bruto: TIntegerField; qryCadastrovalor_bruto: TFloatField; qryCadastronum_amostra: TIntegerField; qryCadastronum_laudo: TIntegerField; DBGrid1: TDBGrid; DBNavigator1: TDBNavigator; qryCadastrovalor_efetivo: TFloatField; procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn); procedure FormShow(Sender: TObject); procedure qryCadastroAfterScroll(DataSet: TDataSet); procedure qryCadastroBeforeEdit(DataSet: TDataSet); procedure btnSalvarClick(Sender: TObject); private
{ Private declarations } public
{ Public declarations } end;
var fmVbrutos: TfmVbrutos; gcont_amostra:integer;implementation
uses unprincipal, unLaudos, unEmbalagem;
{$R *.dfm}
procedure TfmVbrutos.DBNavigator1Click(Sender: TObject; Button: TNavigateBtn); var NovoCodigo : integer;begin case button of
60
nbInsert : begin
with qryNovo, qryNovo.SQL do begin Close; Clear; Add('SELECT MAX("cod_bruto") AS valor '); Add('FROM "sc_trabalho"."VBrutos" '); Open; end; // with if not qryNovo.IsEmpty then begin NovoCodigo := qryNovo.FieldByName('valor').AsInteger+1; end else // if NovoCodigo := 1; qryCadastrocod_bruto.AsInteger := NovoCodigo;
with qryNovo, qryNovo.SQL do begin Close; Clear; //busca valor max da amostra Add('SELECT MAX("num_amostra") AS valor '); Add('FROM "sc_trabalho"."VBrutos" '); add('where "num_laudo" = :plaudo'); Parameters.ParamByName('plaudo').Value:=fmLaudos.gNumLaudo; Open; if qrynovo.RecordCount > 0 then gcont_amostra:=qrynovo.fieldByname('valor').AsInteger+1 else gcont_amostra:=1; if gcont_amostra=fmLaudos.gNumAmostras+1 then begin ShowMessage('Atingiu número máximo de amostra'); qryCadastro.Cancel; exit; end; end; // with
qryCadastronum_laudo.Value := fmLaudos.gNumLaudo; qryCadastronum_amostra.Value:=gcont_amostra; gcont_amostra:=gcont_amostra+1;
end; // case else end; end; //procedure
procedure TfmVbrutos.FormShow(Sender: TObject); var numLaudo:integer;begin inherited;
61
numLaudo:=fmLaudos.gNumLaudo; with qryAuxiliar, qryAuxiliar.SQL do begin close; clear; // seleciona valores brutos do laudo add ('select "num_laudo" '); add ('from "sc_trabalho"."VBrutos" '); add ('where num_laudo= :plaudo'); Parameters.ParamByName('plaudo').Value:=numLaudo; open;
with qrycadastro, qrycadastro.SQL do begin close; clear; add ('select * '); add ('from "sc_trabalho"."VBrutos" '); add ('where num_laudo= :plaudo'); add ('order by "num_laudo","num_amostra"'); Parameters.ParamByName('plaudo').Value:=numLaudo; open; end; if not (qryAuxiliar.RecordCount > 0) then begin qryCadastro.Append; end; end;
end;
procedure TfmVbrutos.qryCadastroAfterScroll(DataSet: TDataSet);begin inherited; btnAnterior .Enabled := (qryCadastro.State = dsBrowse) and not (qryCadastro.Bof); btnProximo .Enabled := (qryCadastro.State = dsBrowse) and not (qryCadastro.Eof); btnSalvar .Enabled := qryCadastro.State in [dsEdit, dsInsert]; btnRestaurar.Enabled := qryCadastro.State in [dsEdit, dsInsert]; btnNovo .Enabled := qryCadastro.State in [dsBrowse]; btnExcluir .Enabled := (qryCadastro.State in [dsBrowse]) and not (qryCadastro.IsEmpty); btnLocalizar.Enabled := (qryCadastro.State in [dsBrowse]) and not (qryCadastro.IsEmpty);
Case qryCadastro.State of dsInsert : begin lblState.Visible := True; lblState.Caption := 'Inserindo dados'; end; // dsInsert dsEdit : begin lblState.Visible := True; lblState.Caption := 'Alterando dados'; end; // dsInsert else begin lblState.Caption := ''; end; // else
62
end; // case
end;
procedure TfmVbrutos.qryCadastroBeforeEdit(DataSet: TDataSet);begin inherited; lblstate.Caption:='Inserindo Dados'; lblState.Visible:=true; end;
procedure TfmVbrutos.btnSalvarClick(Sender: TObject);begin
with qryPesquisa, qryPesquisa.SQL do begin // close; clear; add ('select "media_emb"'); add('from "sc_trabalho"."VEmbalagens" '); add('where "num_laudo"= :plaudo '); Parameters.ParamByName('plaudo').Value:=fmLaudos.gNumLaudo; open; end;//with if qryPesquisa.RecordCount > 0 then // verifica se tem registro begin qryCadastrovalor_efetivo.AsFloat:=qryCadastrovalor_bruto.AsFloat-qryPesquisa.fieldbyname('media_emb').AsFloat; end;//if inherited; qryCadastro.Refresh;end;
initialization gcont_amostra:=1;end.
unit uTelaCadastro;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, ADODB, StdCtrls, Mask, DBCtrls, Buttons, ExtCtrls,ComCtrls, Grids, DBGrids;
type TfTelaCadastro = class (TForm) Panel3: TPanel; lblCaption: TLabel; lblState: TLabel;
63
btnMinimize: TSpeedButton; Image1: TImage; Panel2: TPanel; btnInicio: TSpeedButton; btnFim: TSpeedButton; btnSalvar: TBitBtn; btnRestaurar: TBitBtn; btnExcluir: TBitBtn; btnNovo: TBitBtn; btnProximo: TBitBtn; btnAnterior: TBitBtn; dbedLimpaCampo: TDBEdit; Panel1: TPanel; btnAjuda: TBitBtn; btnFechar: TBitBtn; btnLocalizar: TBitBtn; btnDetalhes: TBitBtn; btnImprimir: TBitBtn; qryCadastro: TADOQuery; qryAuxiliar: TADOQuery; qryPesquisa: TADOQuery; dsCadastro: TDataSource; qryNovo: TADOQuery; Stbar: TStatusBar; procedure btnExcluirClick(Sender: TObject); procedure btnSalvarClick(Sender: TObject); procedure btnRestaurarClick(Sender: TObject); procedure btnProximoClick(Sender: TObject); procedure btnAnteriorClick(Sender: TObject); procedure btnNovoClick(Sender: TObject); procedure btnFecharClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure FormKeyPress(Sender: TObject; var Key: Char); procedure qryCadastroBeforeEdit(DataSet: TDataSet); procedure FormCreate(Sender: TObject); procedure qryCadastroAfterEdit(DataSet: TDataSet); procedure btnFimClick(Sender: TObject); procedure btnInicioClick(Sender: TObject); private { Private declarations } public { Public declarations } StrNovo : Tstrings; // variavel que contem o comando SELECT bSequencial : boolean; // True->Gera sequencial a cada novo registro // Inicializar com True/false antes do inherited do btnNovoClick procedure VerificaEstadoTabela; end;
var fTelaCadastro: TfTelaCadastro;
implementation
uses unPrincipal;64
{$R *.dfm}
procedure TfTelaCadastro.VerificaEstadoTabela;begin btnAnterior .Enabled := False; btnProximo .Enabled := False; btnSalvar .Enabled := False; btnRestaurar.Enabled := False; btnNovo .Enabled := False; btnExcluir .Enabled := False;
Case qryCadastro.State of dsInsert : begin lblState.Visible := True; lblState.Caption := 'Inserindo dados'; btnSalvar.Enabled := True; btnRestaurar.Enabled := True; end; // dsInsert dsEdit : begin lblState.Visible := True; lblState.Caption := 'Alterando dados'; btnSalvar.Enabled := True; btnRestaurar.Enabled := True; end; // dsInsert else begin lblState.Caption := ''; btnAnterior .Enabled := True; btnProximo .Enabled := True; btnNovo .Enabled := True; btnExcluir .Enabled := True; end; // else end; // case
end; // VerificaEstadoTabela
procedure TfTelaCadastro.btnExcluirClick(Sender: TObject);begin if MessageDlg('Excluir Registro?', mtConfirmation,[mbYes,mbNo],mrNo) = mrYes then qryCadastro.Delete; qryCadastro.Fields[0].FocusControl;
end;
procedure TfTelaCadastro.btnSalvarClick(Sender: TObject);begin if qryCadastro.State in [dsInsert,dsEdit] then qryCadastro.post; qryCadastro.Fields[0].FocusControl; VerificaEstadoTabela;end;
procedure TfTelaCadastro.btnRestaurarClick(Sender: TObject);65
begin qryCadastro.CancelUpdates; qryCadastro.Fields[0].FocusControl; lblState.Caption := ''; VerificaEstadoTabela;end;
procedure TfTelaCadastro.btnProximoClick(Sender: TObject);var vlcMensagem: string;begin vlcMensagem := ''; if qryCadastro.state = dsInsert then vlcMensagem := 'Deseja INCLUIR os dados digitados?' else if qryCadastro.state = dsEdit then vlcMensagem := 'Deseja SALVAR os dados digitados?'; if qryCadastro.state in [dsInsert,dsEdit] then begin case MessageDlg(vlcMensagem,mtConfirmation, [mbYes,mbNo,mbCancel],mrCancel) of mrYes: qryCadastro.post; mrNo: qryCadastro.CancelUpdates; mrCancel: begin qryCadastro.Fields[0].FocusControl; abort; end; end; end; qryCadastro.MoveBy(1);end;
procedure TfTelaCadastro.btnAnteriorClick(Sender: TObject);var vlcMensagem: string;begin vlcMensagem := ''; if qryCadastro.state = dsInsert then vlcMensagem := 'Deseja INCLUIR os dados digitados?' else if qryCadastro.state = dsEdit then vlcMensagem := 'Deseja SALVAR os dados digitados?'; if qryCadastro.state in [dsInsert,dsEdit] then begin case MessageDlg(vlcMensagem,mtConfirmation, [mbYes,mbNo,mbCancel],mrCancel) of mrYes: qryCadastro.post; mrNo: qryCadastro.CancelUpdates; mrCancel: begin qryCadastro.Fields[0].FocusControl; abort; end; end; end; qryCadastro.MoveBy(-1);end;
66
procedure TfTelaCadastro.btnNovoClick(Sender: TObject);var nCodigo : integer; vCodigo : string;begin
{Tamanho do código 6 } qryCadastro.Append; VerificaEstadoTabela; end;
procedure TfTelaCadastro.btnFecharClick(Sender: TObject);begin Close;end;
procedure TfTelaCadastro.FormShow(Sender: TObject);begin //qryCadastro.Parameters.ParamByName('pSetor').Value := fPrincipal.gSetor; qryCadastro.Open; lblState.Visible := False; lblCaption.Visible := False;
//Self.Top := Trunc( (570 - Self.Height)/2 ); Self.Left := Trunc( (1024+150 - Self.Width)/2); Self.Top := 50; //Self.Left := 20;
end;
procedure TfTelaCadastro.FormKeyPress(Sender: TObject; var Key: Char);begin if (key = #13) then begin Perform(WM_NEXTDLGCTL,0,0); key := #0; end; // ifend;
procedure TfTelaCadastro.qryCadastroBeforeEdit(DataSet: TDataSet);begin lblState.Visible := True; lblState.Caption := 'Alterando dados';end;
procedure TfTelaCadastro.FormCreate( Sender: TObject );begin //Self.Top := 50; //Self.Left := 20;end;
procedure TfTelaCadastro.qryCadastroAfterEdit(DataSet: TDataSet);begin VerificaEstadoTabela;
67
end;
procedure TfTelaCadastro.btnFimClick(Sender: TObject);begin qryCadastro.Last;end;
procedure TfTelaCadastro.btnInicioClick(Sender: TObject);begin qryCadastro.First;
end;
end.
68