Professional Documents
Culture Documents
Justificativa:
Este software irá auxiliar a administrar o estoque, custos, vendas, faturamento e
lucratividade de empresas, facilitando o acesso aos dados através de banco de dados.
Metodologia:
Este programa está dividido em 04 módulos diferentes: cadastro, alterações,
relatórios e venda.
No módulo de cadastro, o usuário irá cadastrar o produto através da descrição.
Também irá cadastrar o custo, preço de venda e a quantidade em estoque do produto.
Durante o cadastro, o software executa algumas verificações para que o usuário
não cadastre dois produtos com o mesmo nome, bem como o preço de venda menor que
o custo. Também verifica se o banco de dados não está lotado, com um limite de 100
produtos.
No módulo alterações, o usuário localiza o produto através da descrição e
consegue alterar os dados cadastrados.
No módulo relatórios, o usuário tem a opção de relatório de estoque ou
financeiro, onde o primeiro lista todos os produtos cadastrados, mostrando a descrição,
custo, preço de venda e estoque, enquanto o segundo relatório lista o faturamento e o
lucro obtidos até o momento.
No módulo venda, o usuário executa a venda dos produtos cadastrados, onde
através da descrição localiza o produto. Se o produto for localizado, solicita para que
seja digitada a quantidade de venda, onde a mesma é verificada com o estoque atual. Se
o estoque for maior que a quantidade de venda, a venda prossegue e é solicitada ao
usuário a porcentagem de desconto que será dado para este produto.
O software calcula o valor de venda para o produto e debita do estoque a
quantidade vendida. Na seqüência, imprime na tela a quantidade vendida e o valor total
do produto.
Após, solicita ao usuário a finalização da venda, onde se o usuário finalizar, será
apresentado na tela todos os produtos vendidos, com respectivas quantidades e valores,
e o valor total da venda. Se o usuário não finalizar a venda, serão repetidos os passos de
localização do produto, quantidade de venda, desconto e impressão parcial da venda.
Os dados cadastrados são salvos em um arquivo no formato txt, para que sejam
lidos cada vez que inicia-se o software. Na inicialização, é solicitado ao usuário a
limpeza do banco de dados, onde se for aceito, o banco será sobrescrito, excluindo os
dados previamente cadastrados.
Algoritmos
INICIO
OPEN(estoque.txt)
READ(estoque.txt)
CLOSE(estoque.txt)
DO
MENU
op==1 F
op==2 F
V
CALL cadastro
op==3 F
V
CALL alteracao
op==4 F
V
CALL relatorios
op==5 F
V
CALL venda
ESCR("Opcao Invalida")
OPEN(estoque.txt)
WRITE(estoque.txt)
CLOSE(estoque.txt)
EXIT
FIM
CADASTRO
i = npc
i <= 100 F
V FIM
i == 100 V
z=0
FIM
x=1
x <= i V
prod_i == prod(x) V ESCR("Produto Ja Cadastrado")
F
z=1
z == 0 F
V
npc = i
prod(i) = prod_i
y=0
LEIA("Sair", c)
y == 0 F LEIA("Estoque", est(i))
V
c == 's' ou 'S' F
LEIA("Custo", cus(i))
LEIA("Preco Venda", pv(i)) V
npc = i + 1
EXIT
pv(i) >= cus(i) V y=1
F FIM
DO
LEIA("Produto", busc)
p=0
i=1
i <= npc-1 F
F
F busc == prod(i)
V
LEIA("Sair", c)
p=1
F
MENU FIM
LEIA("Opcao", o)
o == 1 F
o == 2 F
LEIA("Produto", prod(i)) V
o == 3 F
DO o == 4 F
V V
DO
F
V pv(i) < cus(i)
EXIT
RELATORIOS
MENU
LEIA("Opcao", o)
o == 1 F
o == 2 F ESCR("Opcao Invalida")
ESCR("Rel Estoque")
V
i == 1
ESCR("Rel Financeiro")
ESCR(fat, lucro)
i <= npc-1 F
V FIM
t_vend = 0
x=0
DO
LEIA("Produto", busc)
p=0
i=1
i <= npc-1 F
F
F busc == prod(i)
V
LEIA("Finalizar", c)
p=1
DO n=1
EXIT
qv > est(i) F t_pr = qv * pv(i) ESCR("Total Venda", t_vend)
est(i) = est(i) - qv
V
fat = fat + t_vend
LEIA("Desconto", desc)
ESCR("Estoque Insuficiente") EXIT
x=x+1
FIM
prod_v(x) = busc
qtd(x) = qv
t_prod(x) = (t_pr - (t_pr * (desc/100)))
t_vend = t_vend + t_prod(x)
lucro = lucro + (t_prod(x) - (cus(i) * qtd(x)))
open(unit=6, file="c:\estoque.txt")
if (inc/='S') then
read (6,100) prod
read (6,200) cus, est, pv, fat, lucro
read (6,300) npc
close (unit=6)
else
print '(25/,15x,a)', "***** BANCO DE DADOS LIMPO *****"
read '(a)', a
end if
do
print '(30/,15x,a)', "CONTROLE DE ESTOQUE"
print '(2/,10x,a)', "OPCOES:"
print '(/,10x,a)', "1 - Cadastro de Produto"
print '(/,10x,a)', "2 - Alteracoes"
print '(/,10x,a)', "3 - Relatorios"
print '(/,10x,a)', "4 - Venda"
print '(/,10x,a)', "5 - Sair"
print '(2/,10x,a,\)', "Digite a Opcao: "
read*, op
select case (op)
case ('1')
call cadastro(prod, cus, pv, est, npc)
case ('2')
call alteracoes(prod, cus, pv, est, npc)
case ('3')
call relatorios(prod, cus,pv , est, npc, fat, lucro)
read '(a)', a
case ('4')
call venda(prod, cus, pv, est, npc, fat, lucro)
case ('5')
exit
case default
print '(5/,10x,a)', "Opcao invalida!!!"
read '(a)', a
end select
end do
open(unit=6, file="c:\estoque.txt")
write (6,100) prod
write (6,200) cus, est, pv, fat, lucro
write (6,300) npc
close (unit=6)
end program
do i=npc,100
print '(30/,15x,a)', "CADASTRO DE PRODUTOS"
if (i==100)then
print '(2/,10x,a)', "Banco de Dados Lotado!!!"
npc=i
read '(a)', a
exit
else
print '(2/,10x,a,\)', "Produto: "
read '(a15)', prod_i
z=0
do x=1, i
if (prod_i==prod(x))then
print '(2/,10x,a)', "Produto ja cadastrado!!!"
read '(a)', a
z=1
end if
end do
if (z==0) then
prod(i)=prod_i
y=0
do while (y==0)
print '(/,10x,a,\)', "Custo: R$ "
read*, cus(i)
print '(/,10x,a,\)', "Preco de Venda: R$ "
read*, pv(i)
if (pv(i)>=cus(i)) then
y=1
else
print '(2/,10x,a)', "Preco de Venda menor Custo!!!"
end if
end do
print '(/,10x,a,\)', "Estoque: "
read*, est(i)
else
npc=i
exit
end if
print '(2/,10x,a,\)', "Digite s ou S para sair => "
read '(a)', c
if (c=='s'.or.c=='S')then
npc=i+1
exit
endif
endif
end do
end subroutine cadastro
do
print '(30/,15x,a,/)', "ALTERACOES DO CADASTRO"
print '(2/,10x,a,\)', "Produto: "
read '(a15)', busc
p=0
do i=1,npc-1
if (busc==prod(i)) then
p=1
print '(2/,10x,2a,/,15x,a,f10.2,/,15x,a,f10.2,/,15x,a,f10.2)', "Produto: “
,trim(prod(i)),"Custo: R$ ", cus(i),"Preco de Venda: R$ ", pv(i),"Estoque: ",est(i)
print '(2/,10x,a)', "Digite 1 para alterar Descricao"
print '(/,17x,a)', "2 para alterar Custo"
print '(/,17x,a)', "3 para alterar Preco de Venda"
print '(/,17x,a)', "4 para alterar Estoque"
print '(/,17x,a,\)', "qualquer tecla para outro produto => "
read '(a)', o
select case (o)
case ('1')
print '(2/,10x,a,\)', "Produto: "
read '(a15)', prod(i)
case ('2')
do
print '(/,10x,a,\)', "Custo: R$ "
read*, cus(i)
if (cus(i)>pv(i))then
print '(2/,10x,a)', "Custo maior Preco de Venda!!!"
else
exit
end if
end do
case ('3')
do
print '(/,10x,a,\)', "Preco Venda: R$ "
read*, pv(i)
if (pv(i)<cus(i)) then
print '(2/,10x,a)', "Preco de Venda menor Custo!!!"
else
exit
end if
end do
case ('4')
print '(/,10x,a,\)', "Estoque: "
read*, est(i)
case default
exit
end select
print '(2/,10x,2a,/,15x,a,f10.2,/,15x,a,f10.2,/,15x,a,f10.2)', "Produto: "
,trim(prod(i)),"Custo: R$ ", cus(i),"Preco de Venda: R$ ", pv(i),"Estoque: ",est(i)
end if
end do
if (p==0) then
print '(2/,10x,a)', "Produto nao cadastrado!!!"
end if
print '(2/,10x,a,\)', "Digite s ou S para sair => "
read '(a)', c
if (c=='s'.or.c=='S')then
exit
endif
end do
end subroutine alteracoes
do
print '(30/,15x,a,/)', "MODULO DE VENDA"
print '(2/,10x,a,\)', "Produto: "
read '(a15)', busc
p=0
do i=1,npc-1
if (busc==prod(i)) then
p=1
print '(2/,10x,2a,/,15x,a,f10.2,/,15x,a,f10.2,/,15x,a,f10.2)', "Produto: "
,trim(prod(i)),"Custo: R$ ", cus(i),"Preco de Venda: R$ ", pv(i),"Estoque: ",est(i)
do
print '(2/,10x,a,\)', "Quantidade: "
read *, qv
if (qv>est(i)) then
print '(2/,10x,a)', "Estoque insuficiente!!!"
else
exit
end if
end do
t_pr=qv*pv(i)
est(i)=est(i)-qv
print '(2/,10x,a,\)', "Desconto (%): "
read *, desc
x=x+1
prod_v(x)=busc
qtd(x)=qv
t_prod(x)=(t_pr-(t_pr*(desc/100)))
t_vend=t_vend+t_prod(x)
lucro=lucro+(t_prod(x)-(cus(i)*qtd(x)))
print '(2/,10x,2a,/,15x,a,f10.2,/,15x,a,f10.2)', "Produto:
",trim(prod_v(x)),"Quantidade: " , qtd(x), "Sub-Total: R$ ", t_prod(x)
end if
end do
if (p==0) then
print '(2/,10x,a)', "Produto nao cadastrado!!!"
end if
print '(2/,10x,a,\)', "Digite f ou F para Finalizar => "
read '(a)', c
if (c=='f'.or.c=='F')then
print '(25/,15x,a)',"***** RELATORIO DA VENDA *****"
do n=1, x
print '(2/,10x,2a,/,15x,a,f10.2,/,15x,a,f10.2)', "Produto:
",trim(prod_v(n)),"Quantidade: " , qtd(n), "Sub-Total: R$ ", t_prod(n)
end do
print '(/,15x,a,f10.2,a)', "***** TOTAL DA VENDA => R$ ", t_vend, " *****"
fat=fat+t_vend
read '(a)', c
exit
endif
end do
end subroutine venda
Conclusão
Com a realização deste trabalho foi possível fortalecer o conhecimento adquirido
durante o semestre com relação a programação em Fortran 90. Este trabalho exigiu a
utilização de tudo o que foi visto em aula e um pouco de pesquisa.
Podemos dizer que, essa ferramenta nos será útil para simplificação, organização,
enfim, solução de vários problemas que encontraremos no dia-a-dia com agilidade e
facilidade.