Buscar

Serviço de controle de estoque de materiais de construção (Portugol)

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Algoritmo "IJ Construções"
// Função : Gerenciar produtos de uma loja de material de construções
// Autor(a) : Josivan Junior
// Auxiliar : Italo Rhamon
// Data inicio : 15/05/2016
// Data da apresentação : 07/06/2016
// Professor : Jeovane Reges
tipo
 produto = registro
 nome: caractere
 qnt_produto: real
 preco: real
 nova_qnt_produto : inteiro
 novo_nome : caractere
 novo_valor : real
 fimregistro
Var
 // Seção de Declarações das variáveis globais
 produtos: vetor [1..6] de produto
 codigos : vetor [1..6] de caractere
 indice: inteiro
 max_itens : inteiro
procedimento titulo() // Cabeçalho para aparecer em toda tela
inicio
 escreval("--------------------------------------------------------------")
 escreval("| IJ CONSTRUÇÕES® |")
 escreval("| Vendendo sonhos, construindo emoções |")
 escreval("--------------------------------------------------------------")
fimprocedimento
procedimento Menu() // Menu principal
var
 op: inteiro
 esc: caractere
 entrar : caractere
inicio
 max_itens <- 6
 enquanto (op <> 7) faca
 titulo()
 escreval ("| 1- Cadastrar |")
 escreval ("| 2- Listar |")
 escreval ("| 3- Buscar |")
 escreval ("| 4- Vender |")
 escreval ("| 5- Alterar |")
 escreval ("| 6- Excluir |")
 escreval ("| 7- Sair |")
 escreval ("--------------------------------------------------------------")
 escreval ()
 escreva (" Escolha uma opção:")
 leia (op)
 limpatela
 escolha (op)
 caso 1
 Cadastrar()
 caso 2
 Listar()
 caso 3
 Busca()
 caso 4
 Venda()
 caso 5
 Alterar()
 caso 6
 Excluir()
 caso 7
 limpatela
 titulo()
 escreval("OBRIGADO POR USAR NOSSO SISTEMA!")
 fimescolha
 se (op <> 7) entao
 limpatela
 titulo()
 escreva("Retornar ao menu inicial? [S/N]: ")
 leia(esc)
 se (esc = "s") entao
 limpatela
 senao
 op <- 7
 fimse
 fimse
 fimenquanto
fimprocedimento
funcao PESQUISA(xcod : caractere): Inteiro
Var
 p_Item, XP : inteiro
Inicio
 XP := 0
 para p_Item de 1 ate Max_itens faca // LÊ TODOS OS ELEMENTOS
 se (xcod = Codigos[p_Item]) entao // SE ACHÁ-LO VOLTA O ELEMENTO
 XP := p_Item
 fimse
 fimpara
 retorne XP // retorna o conteúdo
fimfuncao
procedimento Cadastrar() // Processo de cadastro
var
 xproduto : produto
 xpro : logico
 xcodigo,op,esc : caractere
 p1: inteiro
 iPESQ : inteiro
inicio
 titulo()
 xpro <- Verdadeiro
 Enquanto xpro faca
 se (indice > max_itens) entao // Verificar se ainda há espaço para cadastrar um novo produto
 escreval("Limite de cadastros atingido")
 escrevaL()
 escreval("Pressione [ENTER] para continuar")
 leia(p1)
 xpro <- falso
 escreval()
 senao
 escreval (" CADASTRAR NOVO PRODUTO ")
 escreval ()
 fimse
 xpro <- Verdadeiro
 limpatela
 titulo()
 escreval (" CADASTRAR NOVO PRODUTO ")
 escreval ()
 escreval("Descrição: ")
 leia(xproduto.nome)
 escreva ("Quantidade: ")
 leia(xproduto.qnt_produto)
 escreva("Preço unidade: ")
 leia(xproduto.preco)
 escreval ("Codigo de referencia:")
 leia(xcodigo)
 iPesq <- PESQUISA(xcodigo)
 SE ((iPesq = 0) E (xcodigo <> "0")) ENTAO
 indice <- indice + 1
 se (indice > max_itens) entao
 limpatela
 titulo()
 escreval("Limite de cadastros atingido")
 escreval("Pressione [ENTER] para continuar")
 leia(p1)
 xpro <- falso
 indice <- indice - 1
 senao
 produtos[indice] <- xproduto
 codigos[indice] <- xcodigo
 fimse
 senao
 SE (xcodigo = "0") ENTAO
 SE indice > 0 ENTAO
 Indice := indice - 1
 FIMSE
 xpro := Falso
 SENAO // Não permite cadastrar 2 produtos com o mesmo código
 LIMPATELA
 titulo()
 Escreval(" ")
 Escreva("Esse Código já esta cadastrado!")
 Escreval(" ")
 fimse
 fimse
 escreval()
 escreval ("Deseja cadastrar outro produto?[S/N]")
 leia(op)
 se (op = "S") entao
 limpatela
 xpro <- verdadeiro
 senao
 se (op = "N") entao
 limpatela
 titulo()
 xpro <- falso
 fimse
 fimse
 fimenquanto
fimprocedimento
procedimento Listar() // Listagem
var
 i: inteiro
 valor_total: real
inicio
 se (indice = 0) entao
 escreval ("Nenhum produto cadastrado")
 senao
 para i de 1 ate indice faca
 valor_total <- (produtos[i].qnt_produto * produtos[i].preco)
 escreval ("Descrição: ",produtos[i].nome)
 escreval ("Codigo: ",codigos[i])
 escreval ("Quantidade: " ,produtos[i].qnt_produto)
 escreval ("Preço unidade: R$",produtos[i].preco,",00")
 escreval ("Valor Total: R$",valor_total,",00")
 escreval ("-----------------------------------")
 fimpara
 fimse
fimprocedimento
Procedimento Busca() // Consultar produto através do codigo
Var
 encontrado : Logico
 cPesq : inteiro
 xcodigo,esc: caractere
 valor_total : real
Inicio
 limpatela
 titulo()
 encontrado := VERDADEIRO
 enquanto encontrado faca
 se indice < 1 entao // Verifica se há produto cadastrado
 encontrado := Falso
 escreval("Nenhum produto cadastrado")
 senao
 limpaTela
 titulo()
 escreval (" BUSCAR PRODUTO ")
 escreval ()
 escreva("Digite o codigo do produro que deseja encontrar: ")
 leia(xcodigo)
 se (xcodigo = "0") entao
 encontrado := Falso
 senao
 limpatela
 titulo()
 cPesq := PESQUISA(xcodigo)
 se cPesq > 0 entao // O produto existe no vetor
 valor_total := (produtos[cpesq].qnt_produto * produtos[cpesq].preco)
 // Informações referentes ao produto do codigo usado para buscar
 escrevaL("Descrição : ",produtos[cPESQ].nome)
 escreval("Quantidade: ",produtos[cPESQ].qnt_produto)
 escreval("Preço da unidade : R$",produtos[cPESQ].preco)
 escreval("Preço Total: R$",valor_total)
 escreval(" ")
 senao // O produto não existe no vetor
 limpatela
 titulo()
 escrevaL("Produto não encontrado!")
 fimse
 fimse
 escreva("Deseja continuar pesquisa ? [S/N]: ")
 leia(esc)
 se (esc = "N") entao
 limpatela
 encontrado := FALSO
 titulo()
 senao
 limpatela
 encontrado := VERDADEIRO
 fimse
 fimse
 fimenquanto
fimprocedimento
Procedimento Venda() // Vender (Alterar quantidade disponível no estoque)
Var
 encontrado : Logico
 cPesq,qnt_venda : inteiro
 xcodigo,esc,sc: caractere
 total,valor_total : real
Inicio
limpatela
 titulo()
 encontrado := VERDADEIRO
 enquanto encontrado faca
 se indice < 1 entao // Não há nenhum produto cadastrado
 encontrado := Falso
 escreval("Nenhum produto encontrado")
 senao // Há produto(s) cadastrado(s)
 LIMPATELA
 titulo()
 escreval (" VENDER PRODUTO ")
 escreval ()
 escreva("Digite o codigo do produro que deseja vender: ")
 leia(xcodigo)
 se (xcodigo = "0") entao
 encontrado := Falso
 senao
 limpatela
 titulo()
 cPesq := PESQUISA(xcodigo)
 se cPesq > 0 entao
 valor_total := (produtos[cpesq].qnt_produto * produtos[cpesq].preco)
 // Informações do produto referente ao codigo usado para buscar(vender)
 escrevaL("Descrição: ",produtos[cPESQ].nome)
 escreval("Quantidade: ",produtos[cPESQ].qnt_produto)
 escreval("Preço unidade : R$",produtos[cPESQ].preco)
 escreval("Preço Total: R$",valor_total)
 escreval(" ")
 escreval ("Digite a quantidade de produtos que deseja vender:")
 leia(qnt_venda)
 se (qnt_venda > produtos[cPesq].qnt_produto) entao // O numero digitado é maior que a quantidade do produto disponivel no estoque
 limpatela
 titulo()
 escreval("Não temos essa quantidade no estoque")
 escreval()
 escreva("Deseja realizar outra venda ? [S/N]: ")
 leia(esc)
 limpatela
 se (esc = "N") entao
 limpatela
 encontrado := FALSO
 titulo()
 senao
 limpatela
 titulo()
 encontrado := VERDADEIRO
 fimse
 senao
 escreval()
 escreval ("Confirmar venda:[S/N]")
 leia(sc)
 se (sc = "S") entao
 limpatela
 titulo()
 escreval ("Produto Vendido")
 escreval ("Quantidade de produtos Vendidos:",qnt_venda)
 escreval("Preço da venda: R$",qnt_venda * produtos[cpesq].preco,",00")
 escreval()
 produtos[cpesq].qnt_produto <- (produtos[cpesq].qnt_produto - qnt_venda)
 total <- produtos[cpesq].qnt_produto * produtos[cpesq].preco
 // Dados atualizados após a venda (alteração da quantidade)
 escreval ("Descrição: ",produtos[cpesq].nome)
 escreval ("Quantidade: ",produtos[cpesq].qnt_produto)
 escreval ("Preço unidade: R$",produtos[cpesq].preco,",00")
 escreval ("Preço Total: R$",total,",00")
 escreval()
 escreval()
 escreva("Deseja realizar outra venda ? [S/N]: ")
 leia(esc)
 se (esc = "N") entao
 limpatela
 encontrado := FALSO
 senao
 limpatela
 encontrado := VERDADEIRO
 fimse
 fimse
 fimse
 senao
 escrevaL()
 escrevaL("Produto não encontrado!")
 encontrado := falso
 limpatela
 titulo()
 escreva("Deseja validar outra venda ? [S/N]: ")
 leia(esc)
 se (esc = "N") entao
 limpatela
 encontrado := FALSO
 senao
 limpatela
 encontrado := VERDADEIRO
 fimse
 fimse
 fimse
 fimse
 se (sc = "N") entao
 escreva("Deseja realizar outra venda ? [S/N]: ")
 leia(esc)
 se (esc = "N") entao
 limpatela
 encontrado := FALSO
 senao
 limpatela
 encontrado := VERDADEIRO
 fimse
 fimse
 fimenquanto
fimprocedimento
Procedimento Alterar() // Alterar qualquer informação de um determinado produto
Var
 encontrado : Logico
 cPesq,opcao : inteiro
 xcodigo,esc: caractere
 valor_total : real
 novo_total : real
Inicio
 limpatela
 titulo()
 encontrado := VERDADEIRO
 enquanto encontrado faca
 se indice = 0 entao // não há nenhum produto cadastrado
 encontrado := Falso
 escreval("Nenhum produto encontrado")
 senao // Há produto(s) cadastrado(s)
 limpaTela
 titulo()
 escreval (" ALTERAR INFORMAÇÕES DO PRODUTO ")
 escreval ()
 escreva("Digite o codigo do produto: ")
 leia(xcodigo)
 se (xcodigo = "0") entao
 encontrado := Falso
 senao
 cPesq := PESQUISA(xcodigo)
 se cPesq > 0 entao
 valor_total := (produtos[cpesq].qnt_produto * produtos[cpesq].preco)
 // Informações do produto referente ao codigo buscado para a realização da venda
 escrevaL("Descrição: ",produtos[cPESQ].nome)
 escreval("Quantidade: ",produtos[cPESQ].qnt_produto)
 escreval("Preço da unidade : R$",produtos[cPESQ].preco)
 escreval("Valor Total: R$",valor_total)
 escreval()
 escreval ("1- Alterar Descrição:")
 escreval ("2- Alterar Quantidade:")
 escreval ("3- Alterar Preço unidade:")
 escreval()
 escreval("Digite a opção que deseja alterar:")
 leia(opcao)
 se (opcao > 3) entao
 limpatela
 titulo()
 escreval("Opção Inválida")
 fimse
 escolha (opcao)
 caso 1
 limpatela
 titulo()
 escreval (" ALTERAR DESCRIÇÃO ")
 escreval()
 escreval("Digite a nova descrição do produto:")
 leia(produtos[cPESQ].novo_nome)
 produtos[cPESQ].nome <- produtos[cPESQ].novo_nome
 escrevaL("Descrição: ",produtos[cPESQ].nome)
 escreval("Quantidade: ",produtos[cPESQ].qnt_produto)
 escreval("Preço unidade : R$",produtos[cPESQ].preco)
 escreval("Valor Total: R$",valor_total)
 escreval()
 caso 2
 limpatela
 titulo()
 escreval (" ALTERAR QUANTIDADE ")
 escreval()
 escreval("Digite a nova quantidade:")
 leia(produtos[cPESQ].nova_qnt_produto)
 produtos[cPESQ].qnt_produto <- produtos[cPESQ].nova_qnt_produto
 novo_total <- produtos[cPESQ].nova_qnt_produto * produtos[cPESQ].preco
 escrevaL("Descrição: ",produtos[cPESQ].nome)
 escreval("Quantidade: ",produtos[cPESQ].nova_qnt_produto)
 escreval("Preço unidade: R$",produtos[cPESQ].preco)
 escreval("Valor Total: R$",novo_total)
 escreval()
 caso 3
 limpatela
 titulo()
 escreval (" ALTERAR VALOR DO PRODUTO ")
 escreval()
 escreval("Digite o novo valor do produto:")
 leia(produtos[cPESQ].novo_valor)
 produtos[cPESQ].preco <- produtos[cPESQ].novo_valor
novo_total <- produtos[cPESQ].novo_valor * produtos[cPESQ].qnt_produto
 escrevaL("Descrição : ",produtos[cPESQ].nome)
 escreval("Quantidade no estoque : ",produtos[cPESQ].qnt_produto)
 escreval("Preço unidade: R$",produtos[cPESQ].novo_valor)
 escreval("Valor Total: R$",novo_total)
 escreval()
 limpatela
 titulo()
 escrevaL("Descrição: ",produtos[cPESQ].nome)
 escreval("Quantidade: ",produtos[cPESQ].qnt_produto)
 escreval("Preço unidade: R$",produtos[cPESQ].preco)
 escreval("Valor Total: R$",valor_total)
 escreval()
 fimescolha
 senao
 escrevaL()
 escrevaL("Produto não encontrado")
 fimse
 fimse
 escreva("Deseja alterar outro produto? [S/N]: ")
 leia(esc)
 se (esc = "N") entao
 limpatela
 titulo()
 encontrado := FALSO
 senao
 limpatela
 encontrado := VERDADEIRO
 fimse
 fimse
 fimenquanto
fimprocedimento
funcao RemoverMeio(): caractere
var
 temp: caractere
inicio
 temp <- ""
 produtos[indice].nome <- ""
 produtos[indice].qnt_produto <- 0
 produtos[indice].preco <- 0
 codigos[indice] <- ""
 indice <- indice - 1
 retorne temp
fimfuncao
funcao Removerultimo(): caractere
var
 temp: caractere
inicio
 temp <- ""
 produtos[indice].nome <- ""
 produtos[indice].qnt_produto <- 0
 produtos[indice].preco <- 0
 codigos[indice] <- ""
 indice <- indice - 1
 retorne temp
fimfuncao
Procedimento Excluir()
var
 enc : Logico
 op2,op3,xcodigo,esc : caractere
 op1,pesq,i : Inteiro
inicio
 titulo()
 enc := VERDADEIRO
 enquanto enc faca
 se indice < 1 ENTAO
 enc := Falso
 escreval("Nenhum produto cadastrado")
 senao
 escreval (" EXCLUIR PRODUTO ")
 escreval ()
 escreval (" 1. Excluir ultimo produto cadastrado")
 escreval (" 2. Excluir produto pelo codigo de referência")
 escreval ()
 escreva(" Escolha uma das opções : ")
 leia(op1)
 limpatela
 titulo()
 escolha (op1)
 caso 1
 escreval("Tem certeza que deseja excluir <S/N> ", produtos[indice].nome, " ? ")
 leia(op2)
 se (op2 = "N") entao
 escreva()
 enc := falso
 senao
 escreval (Removerultimo())
 escreval("Produto removido")
 fimse
 caso 2
 escreva("Codigo: ")
 leia(xcodigo)
 pesq := PESQUISA(xcodigo)
 escreval("Tem certeza que deseja excluir ", produtos[Pesq].nome, " ? [S/N]")
 leia(op3)
 se (op3 = "N") entao
 escreva()
 enc := falso
 limpatela
 titulo()
 senao
 limpatela
 titulo()
 para i de pesq ate indice - 1 faca
 produtos[pesq] <- produtos[pesq + 1]
 codigos[pesq] <- codigos[pesq + 1]
 fimpara
 escreval(RemoverMeio())
 escreval("Produto removido")
 fimse
 fimescolha
 escreva("Continuar a excluir <S/N> ? : ")
 leia(esc)
 se (esc = "N") entao
 limpatela
 enc := FALSO
 titulo()
 senao
 limpatela
 titulo()
 enc := VERDADEIRO
 fimse
 fimse
 fimenquanto
fimprocedimento
procedimento Login()
var
 usuario, senha, entrar :caractere
inicio
 titulo()
 escreval("Login do administrador")
 escreval()
 escreva("Usuário:")
 leia(usuario)
 escreva("Senha:")
 leia(senha)
 enquanto ((usuario <> "italo" ) ou (senha <> "1234")) e ((usuario <> "junior" ) ou (senha <> "1234")) faca
 limpatela
 titulo()
 escreva ("ACESSO NEGADO!")
 escreval("")
 escreva ("Digite seu usuário e senha")
 escreval("")
 escreva("Usuário:")
 leia(usuario)
 escreva("Senha:")
 leia(senha)
 fimenquanto
 se ((usuario = "italo") e (senha = "1234")) ou ((usuario = "junior") e (senha = "1234")) entao
 limpatela
 titulo()
 escreval("ACESSO PERMITIDO!")
 escreval()
 escreva("Pressione [ENTER] para continuar")
 leia(entrar)
 limpatela
 fimse
fimprocedimento
Inicio
Mudacor("Azul","FRENTE") //
Mudacor("Branco","FUNDOS")
Login()
Menu()
Fimalgoritmo

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais

Perguntas Recentes