Ir ao conteúdo
  • Cadastre-se

VisualG algoritmo de estoque de loja


Ir à solução Resolvido por Niê,

Posts recomendados

59 minutos atrás, Simon Viegas disse:

Não vejo utilidade no treco abaixo... apenas está poluindo a tela... remova isso.

Vou deixar o (Ex: 150).

 

O professor vive dizendo "Você está programando para o usuário, e as vezes ele é burro". 

 

59 minutos atrás, Simon Viegas disse:

Como funciona essa pesquisa? como você faz para localizar o o produto a ser alterado?

 

icod = variável que será comparada com a posição do vetor (itemcod), ou seja, se icod for igual a algum valor da posição, por exemplo 1 = 1(posição), ele irá selecionar para modificar a quantidade do vetor na posição 1.

 

Porém se for diferente, vai exibir a mensagem e ao teclar enter voltará para o menu.

 

image.thumb.png.d951d196ca7dc6bf7a0b8b61d7cc92b3.png

 

Digitei 1, logo, a posição 1 no vetor que se refere ao código, é exibida para editar a quantidade.

 

image.thumb.png.85066a6bbdb47a697b977b2b584a4b1b.png

 

Aqui digitei 3, mas o vetor ainda não tem a posição (código) 3, ou seja, aparece a mensagem e pede para voltar ao menu.

 

 

 

Resumindo, eu só comparo um com o outro por conta da posição, já que a pesquisa funciona através disso e não pelo nome do produto. Entendeu?

adicionado 23 minutos depois

Simon, editando aqui:

 

Percebi que depois de cadastrar 2 ou mais produtos, o anterior não fica mais disponíveis para eu encontrar através do código. Entendi o porque, mas não sei como ajeitar isso.

codItem <- codItem+1

o codItem está sempre recebendo 1, ou seja, o produto que era cod 1 agora sumiu porque o 2 tomou o lugar dele. Como ajeita?

 

Estava muito tranquilo pra ser verdade. 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

1#

Sobre:

1 hora atrás, Niê disse:

Vou deixar o (Ex: 150).

 

O professor vive dizendo "Você está programando para o usuário, e as vezes ele é burro". 

 

Não sei se entendi... De cara perceba que "quantidade" e "preços" são grandezas diferentes. O primeiro é inteiro, e o segundo é real. Os preços tem casas decimais... Da mesma forma como o usuário vai saber o que é "Descrição"? como deve ser escrito para esse item?  ou seja, está tentado orientar uma parte, mas outras não?

 

Na hora de pesquisar diz que tem que digitar o código e dar um exemplo de número... tá, como o usuário vai saber qual é o código de cada produto?

 

Essa questão é parecida quando o programador fica pedindo para digitar.. algo como: "Digite a descrição", "Digite o preço". Não é necessário... fica "cansativo"... a pessoa já sabe o que é para digitar (ou suponha que saiba). Quando você vai num caixa eletrônico, o caixa diz: "digite a agência", "digite a conta".. não!, tá lá os campos, e você vai preenchendo. Quando vai acessar o e-mail, fica pedindo algo? não! tem lá os campos e preenchemos...

 

De qualquer sorte, Isso que está tentando implementar são MELHORIAS... podem ficar para depois. Inicialmente o programa tem que ser o mais simples possível... ainda está em construção.  Após "pronto", a depender, pede outro pessoa para testar... vai analisando e implementando mudanças... Em fim, pode deixar da forma que quiser, não tem problemas... mas é desejável que todo código tenha uma coerência entre si...

 

RESUMINDO:

O mais importante é fazer a pesquisa funcionar, você pode inicialmente pressupor que todos dados serão digitados corretamente!!!

 

 

 

2#

Sobre:

1 hora atrás, Niê disse:

icod = variável que será comparada com a posição do vetor (itemcod), ou seja, se icod for igual a algum valor da posição, por exemplo 1 = 1(posição), ele irá selecionar para modificar a quantidade do vetor na posição 1.

 

Porém se for diferente, vai exibir a mensagem e ao teclar enter voltará para o menu.

 

Então, qual é o valor de codItem no momento que o se é executado?

 

Sobre:

1 hora atrás, Niê disse:

Resumindo, eu só comparo um com o outro por conta da posição

Que posição? novamente: qual o valor de codItem no momento que está comparando? está comparando o quê com o quê?

 

 

 

3#

Sobre:

1 hora atrás, Niê disse:

 já que a pesquisa funciona através disso e não pelo nome do produto. Entendeu?

A pesquisa pode funcionar da forma que desejar... pode ser por qualquer um dos atributos do produto. Quem definiu que deve ser pelo código foi você (programador), ou seja, se quer pelo código, logo terá que ser pelo código mesmo... O que está sendo levando não isso...

 

Como dito, qual é o valor de codItem no momento que o se é executado?

Outra coisa: qual é o código de cada produto? como o usuário fica sabendo qual é o código?

 

 

RESUMINDO:

Você precisa entender o que é o código do produto... e como fazer para comparar o código a ser pesquisado, com o código de cada produto.

 

 

Faça o seguinte teste. Nesse seu código, cadastre 3 item com esses dados:

5, 5, 5, 5

7, 7, 7, 7

11, 11, 11, 11

(Respectivamente a descrição, quantidade, preço de custo e preço de venda)

 

 

Agora supomos que chegou mais 20 item de cada produto, ou seja, some mais 20 em cada produto. Deverá resultar assim:

5, 25, 5, 5

7, 27, 7, 7

11, 31, 11, 11

 

obs.: atente-se que são 4 atributos, mas você só está exibindo 3 na pesquisa, De qualquer forma, a ideia do teste é que aumente a QUANTIDADE, ou seja, tem que aparecer "Quantidade :27" quando pesquisar novamente pelo segundo produto da lista.

 

 

Teste ai para vê se consegue pesquisar e editar as quantidades.

 

 

***

 

No aguardo.

Link para o comentário
Compartilhar em outros sites

11 minutos atrás, Simon Viegas disse:

Como dito, qual é o valor de codItem no momento que o se é executado?

Outra coisa: qual é o código de cada produto? como o usuário fica sabendo qual é o código?

Respondendo aqui;

 

codItem quando o se é executado depende da quantidade de itens cadastrados, eu acho, afinal ele soma +1 após cadastrar cada item.

 

Se eu cadastrar 3 por exemplo, antes do se o codItem valerá 3.  Ou pelo menos foi isso que eu entendi.

 

Sobre o código; Para ele saber o código, basta listar os cadastros no 0 (no menu), lá aparece o código. Mas dá para por pra imprimir após cadastrar.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

1#

Sobre:

1 hora atrás, Niê disse:

Sobre o código; Para ele saber o código, basta listar os cadastros no 0 (no menu), lá aparece o código.

 

No menu "0" está exibindo certinho... 

 

 

1 hora atrás, Niê disse:

Mas dá para por pra imprimir após cadastrar.

 

É! Acho que seria interessante colocar para exibir após cadastrar...

 

 

 

2#

1 hora atrás, Niê disse:

codItem quando o se é executado depende da quantidade de itens cadastrados, eu acho, afinal ele soma +1 após cadastrar cada item.

 

Se eu cadastrar 3 por exemplo, antes do se o codItem valerá 3.  Ou pelo menos foi isso que eu entendi.

 

Justamente...! Seria por ai mesmo...

 

Eentão, tente executar:

 

1 hora atrás, Simon Viegas disse:

Faça o seguinte teste. Nesse seu código, cadastre 3 item com esses dados:

5, 5, 5, 5

7, 7, 7, 7

11, 11, 11, 11

(Respectivamente a descrição, quantidade, preço de custo e preço de venda)

 

 

Agora supomos que chegou mais 20 item de cada produto, ou seja, some mais 20 em cada produto. Deverá resultar assim:

5, 25, 5, 5

7, 27, 7, 7

11, 31, 11, 11

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Simon Viegas

 

No caso de chegar mais quantidades do mesmo produto, o jeito seria ao invés de cadastrar com a mesma descrição, ir na opção de Pesquisar/Editar Quantidade. Não sei se foi isso que você quis dizer.

 

Eu ainda não consegui ajeitar a parte do contador do código.

 

O jeito vai ser fazer um modo em que a pessoa crie o próprio código? Do jeito que tá o codItem recebe +1 em cada cadastro, no segundo cadastro codItem já se transforma no número 2, ou seja, o item do código 1 parou de existir no momento em que criei um cadastro novo.

 

 

 

CODITEM := CODITEM + 1     (em cada registro recebe 1)

 

fiz um registro chamado SUCO, o código dele é 1 porque CODITEM recebeu 1.

 

fiz outro registro chamado MAÇÃ, o código dele é 2 porque CODITEM recebeu mais 1, logo o item anterior não existe mais porque CODITEM virou 2 e deixou de ser 1. 

 

Entendeu? To confuso quanto a isso. Não sei se faço um modo do usuário cadastrar o próprio código, ou se isso tem uma solução  mais simples.

 

 

 

Fora isso está funcionando perfeitamente o modo de edição de quantidade, aqui cadastrei um produto com 50 unidades, agora vou pesquisar o mesmo pelo código e modificar.

image.png.0e46ed74d30b2cbcac6659812853eb1c.png

 

 

Aqui pesquisei e mudei de 50 para 30

image.png.4f63782764ea0f39dd8d6ac9f795ddae.png

 

 

Abri relatório de estoque e realmente mudou a quantidade.

image.png.6d78c42d3edb447d4cf44d79df3ff730.png

 

 

Isso com um item cadastrado, vou cadastrar mais um.

image.png.e45593e021b050af64d61df8fbfeecbb.png

 

Cadastrei:

image.png.b3da0a0afb3bfe2021f58fa0c4928f6a.png

 

Agora tento achar o item 1 e não tenho sucesso porque CODITEM agora não é mais 1, e sim 2...

 

image.png.a4669891e497c1817129f7d2ce5079b6.png

 

Espero ter esclarecido tudo, esse problema está me deixando careca, tentei o dia todo e não queria fazer o usuário cadastrar o próprio código...

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Sobre:

11 horas atrás, Niê disse:

Agora tento achar o item 1 e não tenho sucesso porque CODITEM agora não é mais 1, e sim 2...

 

Justamente... codItem é a variável que controla a quantidade de produtos cadastrados, ela deve conter o código do último item cadastrado... ou seja, está utilizando a variável errada...

 

Observe que o código do produto é igual a posição do produto no vetor... Produto de código 3, está na posição 3 do vetor... etc

 

 

Como está utilizando o código do produto para identificar qual produto quer editar, basta acessar a posição, já que a posição corresponde ao código. Algo como:

procedimento editar()
   var
      novaQtd :inteiro
   inicio
   escreval("Digite o código do item que deseja pesquisar (ex: 57): ")
   escreval("Lembre-se, todos os números devem ser por e")
   leia(icod)
   se (icod >=1) E (icod <= codItem) ENTÃO //se é um código válido
      escreval("Código         :",icod) //o código é a posição no vetor!!!
      escreval("Descrição      :",descricoes[icod])
      escreval("Quantidade     :",quantidades[icod])
      //falta exibir o preço de custo
      //falta exibir o prço de venda
      escreval()
      escreval("Digite a quantidade correta que possui no estoque, ou")
      escreval("caso não queira modificar, digite a quantidade atual.")
      leia(novaQtd)
      quantidades[icod]:=novaQtd //atualiza a quantidade
      escreval("O produto ",descricoes[icod]," agora possui ",quantidades[icod]," unidades")
   fimprocedimento

 

 

***

 

Tente ajustar no seu código... ai, por favor, poste o código atual completo...

 

Se tiver dúvidas sobre alguma parte é só perguntar.

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

algoritmo "ESTOQUE"
// Disciplina  :  [Linguagem e Lógica de Programação]
// Professor   : Antonio Carlos Nicolodi
// Estoque
//     Cadastro de item no estoque
//        Descrição / Quantidade / Preço de custo / Preço de venda
//     Cadastro de combo promocional
//        Descrição / Quantidade / Preço de custo / Preço de venda
//     Retirar item do estoque
//        Retira quantidade do item selecionado
//     Relatório de itens no estoque.
//        Todos os itens
var
   //dados do produto (cada vetor é um atributo)
   descricoes  :vetor [1..4] de caractere
   quantidades :vetor [1..4] de inteiro
   precosCustos:vetor [1..4] de real
   precosVendas:vetor [1..4] de real
   //Vetores do estoque
   codItem    :inteiro    //código do produto (gerado em sequência)
   opc,opc2   :caractere  //usado para selecionar opções
   fimcad     :real       //usado para acompanhar a exibição do ultimo cadastro
   icod       :inteiro    //usado para ler o código do menu editar
   remov      :inteiro    //usado para recadastrar a quantidade de itens
   j          :inteiro    //usado como pombo correio, para passar a quantidade para outra variável
   login,senha:caracter   //removi do var local para usar em outro proced.


procedimento login ()  //procedimento cadastro e login
  Var   //variaveis locais para o uso no procedimento
loginv,senhav: vetor [1..1] de caracter
l,s: inteiro
Inicio
repita    //repita usado para repetir em caso de erro da senha
  para l de 1 ate 1 faca
    escreval ("Crie um LOGIN para você utilizar.")
    escreva("Usuário: ")
    leia(loginv[l])
  fimpara
  limpatela
  para s de 1 ate 1 faca
    escreval ("Crie uma SENHA para você utilizar.")
    escreva("Senha: ")
     leia(senhav[s])
  fimpara
  limpatela
  escreval("Por favor digite o seu LOGIN e SENHA cadastrados anteriormente.")
  escreva("Usuário: ")
  leia(login)
  escreva("Senha: ")
  leia(senha)
se (login= loginv[l]) e (senha= senhav[s]) então //comparação para permitir
  escreval("aceito")                             //que o usuário entre no sistema
    menu_estoque()
senao
  escreval()
  escreval("Seu Login ou Senha não está de acordo com os que foi cadastrado")
  escreval("em nosso sistema.")
  escreval()
  escreval ("Tecle ENTER para  tentar novamente")
  leia (opc)
  limpatela
fimse
ate (login=loginv[l]) e (senha=senhav[s])
fimprocedimento

procedimento cadastro_item    //Procedimento para cadastrar produtos no estoque
inicio

   codItem := codItem+1 //constante que dará o código ao produto
   escreval("**  Cadastro de produto  **")
   escreva ("Descrição      :")
   leia(descricoes[codItem])
   escreva ("Quantidade     :")
   leia(quantidades[codItem])
   escreva ("Preço de CUSTO :")
   leia (precosCustos[codItem])
   escreva ("Preço de VENDA :")
   leia (precosVendas[codItem])
   limpatela
   //Abaixo irá mostrar o último produto cadastrado e informará o código
   escreval()
   escreval()
   escreval ("Você cadastrou ",descricoes[coditem])
   escreval ("Código do produto:",coditem)
   escreval ("Quantidade       :",quantidades[coditem])
   escreval ("Custo            :",precosCustos[coditem])
   escreval ("Preço          R$:",precosVendas[coditem])
   escreval()
   escreval ("Para visualizar o código novamente, imprima o relatório")
   escreval ("de produtos.")
   escreval()
   escreval("Pressione ENTER para voltar ao menu")
   leia(opc)
fimProcedimento




procedimento imprimir_produtos()//Prodedimento para imprimir os produtos cadastrados
var
   i :inteiro
inicio
   escreval("Você possui no estoque os seguintes itens: ")
   para i de 1 ate codItem faca //do primeiro até a quantidade já cadastrada
      escreval()
      escreval("Código         :",i)
      escreval("Descrição      : ",descricoes[i])
      escreval("Quantidade     :",quantidades[i])
      escreval("Preço de CUSTO :",precosCustos[i])
      escreval("Preço de VENDA : R$:",precosVendas[i])
      escreval("------------------------------------------")
      escreval()
   fimpara
   escreva ("Pressione ENTER para voltar ao menu")
   leia(opc)  //apenas para aguardar até que pressioner ENTER. Imprimir um de cada vez
fimProcedimento




procedimento editar()
   var
      novaQtd :inteiro
   inicio
   escreval("Digite o código do item que deseja pesquisar (ex: 57): ")
   escreval("Lembre-se, todos os números devem ser por ...")
   leia(icod)
   se (icod >=1) E (icod <= codItem) então //se é um código válido
      escreval("Código         :",icod) //o código é a posição no vetor!!!
      escreval("Descrição      :",descricoes[icod])
      escreval("Quantidade     :",quantidades[icod])
      escreval("Custo          :",precosCustos[icod])
      escreval("Preço de venda :",precosVendas[icod])

      escreval()
      escreval("Digite a quantidade correta que possui no estoque, ou")
      escreval("caso não queira modificar, digite a quantidade atual.")
      leia(novaQtd)
      quantidades[icod]:=novaQtd //atualiza a quantidade
      escreval("O produto ",descricoes[icod]," agora possui ",quantidades[icod]," unidades")
      escreval()
      escreval("Pressione ENTER para continuar")
      leia (opc)
   fimse
fimprocedimento



procedimento menu_estoque()
inicio
   repita
      limpaTela
      escreval("--------ESTOQUE - PDV--------")
      escreval()
      escreval("       1-Cadastro de Item    ")
      escreval("       2-Pesquisar/Editar   ")
      escreval("       3-EM CONSTRUÇÃO       ")
      escreval("       5-Sair                ")
      escreval()
      escreval("       0-*Imprimir produtos  ")
      escreval()
      escreval("  Possuem atualmente",codItem," produtos")
      escreval("     cadastrados no estoque!")
      escreval()
      escreva ("Comando: ")
      leia(opc)
      escolha (opc)
      caso "1"
         limpatela
         cadastro_item() //qdn esse método é invocado, ao finalizar, o programa vai continuar daqui...
      caso "2"
         limpatela
         editar()
      caso "0"
         limpatela
         imprimir_produtos()
      caso "5"
      fimEscolha
   ate opc="5"
fimProcedimento


INICIO
   codItem <- 0  //inicializa o controlador de código
   login()
FIMALGORITMO

Isto é o que tenho no código até agora! Eu utilizei o código para alterar o valor. Funcionou perfeitamente.

 

Agora vou criar a parte de vender os produtos que estão no estoque, crio separadamente e depois coloco no código, ou crio já junto? Qual é a melhor opção?

 

@Simon Viegas Se puder me explicar novamente o que você me mandou referente ao trecho de editar a quantidade, não entendi muito bem.

Link para o comentário
Compartilhar em outros sites

Em 08/06/2018 às 12:04, Simon Viegas disse:

Observe que o código do produto é igual a posição do produto no vetor... Produto de código 3, está na posição 3 do vetor... etc

 

 

Como está utilizando o código do produto para identificar qual produto quer editar, basta acessar a posição, já que a posição corresponde ao código.

 

 

Entendi que icod é igual a posição do vetor, mas não entendi porque usar entre colchetes ao invés do codItem (que estava dando erro). 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
4 minutos atrás, Niê disse:

Entendi que icod é igual a posição do vetor, mas não entendi porque usar entre colchetes ao invés do codItem (que estava dando erro). 

 

Como assim entre colchetes?

 

- A codItem é do tipo inteiro... não usam-se [] nele;

- A codItem está projetado (pela lógica do algorimto ) a ser responsável pelo controle da quantidade de produtos, ou seja, ele contém quantos produtos já tem cadastrado. Ao mesmo tempo, o vetor é posicionado pelo respectivo código, ou seja, um produto de código 3, estará na posição 3. Se no total em tenho 10 produtos cadastrados, a codItem terá o valor de 10. Ao cadastrar um novo, codItem passará a ter 11, e este será utilizado para posicionar na posição correta (último produto estará na última posição).

 

Veja, NÃO EXISTE RELAÇÃO FÍSICA ENTRE AS VARIÁVEIS. A condItem é uma variáveis do tipo inteiro como qualquer outra, A LÓGICA DO PROGRAMA QUE RELACIONA ESSA VARIÁVEL COM O VETOR. Num vetor você pode usar qualquer coisa que seja do tipo inteiro!!!  Apenas que para seu programa funcionar como você quer, essa "cosia" tem tem ter relação lógica com o algoritmo.

 

Em fim...

 

Para pesquisar você precisa de alguma referência. No caso, está sendo solicitado o código:

59 minutos atrás, Niê disse:

escreval("Digite o código do item que deseja pesquisar (ex: 57): ")

 

No seu algoritmo, o número do código corresponde exatamente a posição onde o vetor está, logo, usa esse código para posicionar.

 

 

Entenda que o vetor é um vetor, uma variável inteiro é uma variável inteiro... não existe relação física entre eles... eu tenho um vetor de 4 posições... para acessar as posições eu precisa usar os [], ex.:

descricoes[1]
descricoes[2]
descricoes[3]
descricoes[4]

 

Apenas ocorre que é possível utilizar um variável para posicionar:

descricoes[POSICAO]

Pela lógica, essa POSICAO só pode variar de 1 a 4... mas quem deve gerenciar isso é o programador... o Visulg não sabe que existe relação entre uma coisa e outra!!!

 

A relação da variável que chamei de POSICAO e o vetor é apenas no âmbito do algoritmo... alterar o valor de POSICAO isoladamente não vai mexer em nada no vetor! Entre os parênteses é possível colocar qualquer variável do tipo numéricas, ex.:

descricoes[quantidades[2]]

Ou seja, estou passando um inteiro para posição.. vai compilar normalmente... entretanto isso não faz sentido PARA O SEU ALGORITMO... O Visualg não está nem ai!

 

 

Qualquer coisa tente explicar melhor a sua dúvida, para eu tentar ser mais específico.

Link para o comentário
Compartilhar em outros sites

@Simon Viegas Entendi o que você explicou agora. Sanou metade da minha dúvida.

 

Explicando a minha dúvida: 

12 minutos atrás, Simon Viegas disse:

A codItem está projetado (pela lógica do algorimto ) a ser responsável pelo controle da quantidade de produtos, ou seja, ele contém quantos produtos já tem cadastrado. Ao mesmo tempo, o vetor é posicionado pelo respectivo código, ou seja, um produto de código 3, estará na posição 3. Se no total em tenho 10 produtos cadastrados, a codItem terá o valor de 10. Ao cadastrar um novo, codItem passará a ter 11

 

Isso me confundiu na hora de criar o código, porque na minha cabeça o coditem funcionava para ficar ao lado da variavel do vetor, para acompanhar o valor do coditem  com a variável. Entendeu? Entendi o que é o certo, e que eu pensei errado kkkk.

 

coditem serve como controlador! Na minha cabeça servia para apenas guardar as posições e comparar com a variável do vetor.

adicionado 4 minutos depois

Agora vejo que não faz sentido.

 

Quanto a isso:

1 hora atrás, Niê disse:

Agora vou criar a parte de vender os produtos que estão no estoque, crio separadamente e depois coloco no código, ou crio já junto? Qual é a melhor opção?

 

O que acha melhor? No código né, afinal vou utilizar os produtos que irei cadastrar no estoque...

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

1#

Sobre:

3 horas atrás, Niê disse:

@Simon Viegas Entendi o que você explicou agora. Sanou metade da minha dúvida.

Beleza...

 

 

2#

3 horas atrás, Niê disse:

O que acha melhor? No código né, afinal vou utilizar os produtos que irei cadastrar no estoque...

 

É. Cadastra 2, 3 produtos... e testa a funcionalidade nova...

 

Mas tente voltar para o enunciado, veja:

1    Cadastro de item no estoque
        Descrição / Quantidade / Preço de custo / Preço de venda    
2     Cadastro de combo promocional
         Descrição / Quantidade / Preço de custo / Preço de venda
3     Retirar item do estoque
        Retira quantidade do item selecionado
4     Relatório de itens no estoque.
        Todos os itens

 

- O 1 já está encaminhado;

- O 2 pode ser feito depois;

- O 3 será mais ou menos como "2-Pesquisar/Editar", só que não é para ATUALIZAR, mas sim "Retirar". O usuário vai dizer o código do produto e a quantidade que quer remover, ai você remove do total que já tem...

- 0 4 seria mais ou menos como o 0*, apenas poderia fazer alguns ajustes... por exemplo, coloque para imprimir os dados do item numa mesma linha.

 

 

RESUMINDO:

Do código atual, faça logo o 4 e posta aqui.

Depois começa a implementar o 3.

 

No aguardo.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

49 minutos atrás, Simon Viegas disse:

O 3 será mais ou menos como "2-Pesquisar/Editar", só que não é para ATUALIZAR, mas sim "Retirar". O usuário vai dizer o código do produto e a quantidade que quer remover, ai você remove do total que já tem...

 Então, meu professor confirmou comigo que do jeito que está, ele gostou e achou até melhor. Foi ele quem fez o enunciado para mim mesmo. Deixarei assim.

 

50 minutos atrás, Simon Viegas disse:

0 4 seria mais ou menos como o 0*, apenas poderia fazer alguns ajustes... por exemplo, coloque para imprimir os dados do item numa mesma linha.

Isso também está encaminhado, sou vou mexer no que você disse, por na mesma linha. Já já mando aqui.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP
40 minutos atrás, Niê disse:

 Então, meu professor confirmou comigo que do jeito que está, ele gostou e achou até melhor. Foi ele quem fez o enunciado para mim mesmo. Deixarei assim.

 

Da forma que você fez está bom, mas acho a original mais coerente.. imagine ai, toda vez que for retirar algo do estoque, o cara tem que ficar contando quanto já tem e subtrair o tirou? as chances de errar a contas são altas... fora que seria chato.

 

Da forma origina, se "vendi 2", apenas peço para retirar 2 e pronto.

 

Sugeriria assim. Deixe o menu original, ai cria um OUTRO item para "editar". Algo assim:

1     Cadastro de item no estoque
         Descrição / Quantidade / Preço de custo / Preço de venda    
2     Cadastro de combo promocional
         Descrição / Quantidade / Preço de custo / Preço de venda
3     Retirar item do estoque
        Retira quantidade do item selecionado
4     Relatório de itens no estoque.
        Todos os itens
91    Editar quantidade de estoque (acesso para administradores)
        Edita a quantidade de itens

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Solução

 

30 minutos atrás, Simon Viegas disse:

Da forma que você fez está bom, mas acho a original mais coerente.. imagine ai, toda vez que for retirar algo do estoque, o cara tem que ficar contando quanto já tem e subtrair o tirou? as chances de errar a contas são altas... fora que seria chato.

@Simon Viegas Ah, mas quando eu for vender, já vai remover automaticamente.

adicionado 6 minutos depois
36 minutos atrás, Simon Viegas disse:

Editar quantidade de estoque (acesso para administradores) Edita a quantidade de itens

 

Eu posso deixar o estoque para Admins, adicionar um login e senha. Então, as vendas seriam para os vendedores e o estoque para os Administradores. Porém isso posso ver mais pra frente, já que agora quero criar apenas a parte de venda.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Simon Viegas

 

Estou com um problema na parte de vender, fiz o código mas tentei diversas vezes acrescentar a opção de dar erro caso não tenha a quantidade de produtos o suficiente no estoque...

 

Segue o código ENORME no primeiro spoiler. No segundo apenas a parte que estou com esse problema.

 

Spoiler

algoritmo "PDV2.0.4"

var
   //variáveis login
   login,senha: caractere
   //dados do produto (cada vetor é um atributo)
   descricoes  :vetor [1..4] de caractere
   quantidades :vetor [1..4] de inteiro
   precosCustos:vetor [1..4] de real
   precosVendas:vetor [1..4] de real  //tb usado na venda
   //Vetores do estoque
   vquantidadevenda:vetor [1..4] de inteiro
   vprecototalvenda:vetor [1..4] de real
   vprecoit:vetor [1..4] de real
   //Vetores do menu de vendas
   quantidadevenda:inteiro
   precototalvenda:real
   //variaveis do menu de venda
   codItem  :inteiro    //código do produto (gerado em sequência)
   coditvend:inteiro    //código das vendas  (gerado ao efetuar uma venda)
   opc,opc2 :caractere  //usado para selecionar opções
   fimcad   :real       //usado para acompanhar a exibição do ultimo cadastro
   icod     :inteiro    //usado para ler o código do menu editar
   remov    :inteiro    //usado para recadastrar a quantidade de itens
   j        :inteiro    //usado como pombo correio, para passar a quantidade para outra variável
   dinheiro :real       //usado para calcular os gastos do cliente

// ----------------------CADASTRO, LOGIN E SENHA----------------------------//
procedimento login ()
  Var   //variaveis locais para o uso no procedimento
loginv,senhav: vetor [1..1] de caracter
l,s: inteiro
Inicio
repita    //repita usado para repetir em caso de erro da senha
  para l de 1 ate 1 faca
    escreval ("Por favor, cadastre seu usuário de login!")
    escreva("Usuário: ")
    leia(loginv[l])
  fimpara
  para s de 1 ate 1 faca
  escreval()
    escreval ("Olá ",loginv[l],", agora cadastre sua senha.")
    escreval()
    escreva("Senha: ")
     leia(senhav[s])
  fimpara
  limpatela
  escreval("Por favor digite o seu LOGIN e SENHA cadastrados anteriormente.")
  escreva("Usuário: ")
  leia(login)
  escreva("Senha  : ")
  leia(senha)
      se (login= loginv[l]) e (senha= senhav[s]) então //comparação para permitir
          menu_principal()                              //que o usuário entre no sistema
      senao
  escreval()
  escreval("Seu Login ou Senha não está de acordo com o que foi cadastrado")
  escreval("em nosso sistema.")
  escreval()
  escreval ("Tecle ENTER para refazer o cadastro!")
  leia (opc)
  limpatela
     fimse
ate (login=loginv[l]) e (senha=senhav[s])
fimprocedimento


                         // ABAIXO TEMOS O ESTOQUE //

// ----------------------------MENU PRINCIPAL-------------------------------//

procedimento menu_principal()
inicio
  repita
      limpaTela
      escreval("-------------Menu------------")
      escreval()
      escreval("       1-Vender Produtos    ")
      escreval("       2-Estoque            ")
      escreval("       3-Valor em Caixa     ")
      escreval("       5-Sair               ")
      escreval()
      escreval("       0-Relatório Final    ")
      escreval()
      escreval("  Olá, ",login,"!")
      escreval()
      ESCREVAL("OBS: Durante todo o uso do programa, utilize apenas números")
      escreval()
      escreva ("Comando: ")
      leia(opc)
      escolha (opc)
      caso "1"
         limpatela
         menu_venda()        //FEITO
      caso "2"
         limpatela
         menu_estoque()      //FEITO
      caso "3"
         limpatela
         valor_caixa()      //EM DESENVOLVIMENTO
      caso "0"
          limpatela
          relatorio_final   //EM DESENVOLVIMENTO
      caso "5"
      fimEscolha
   ate opc="5"
fimProcedimento

                          // ABAIXO TEMOS O ESTOQUE //

// --------------------CADASTRO DE PRODUTOS (NO ESTOQUE)---------------------//

procedimento cadastro_item    //Procedimento para cadastrar produtos no estoque
inicio

   codItem := codItem+1
   escreval("**  Cadastro de produto  **")
   escreva ("Descrição      :")
   leia(descricoes[codItem])
   escreva ("Quantidade     :")
   leia(quantidades[codItem])
   escreva ("Preço de CUSTO :")
   leia (precosCustos[codItem])
   escreva ("Preço de VENDA :")
   leia (precosVendas[codItem])
   //Abaixo irá mostrar o último produto cadastrado
   escreval()
   escreval()
   escreval ("Você cadastrou ",descricoes[coditem])
   escreval ("Quantidade  :",quantidades[coditem])
   escreval ("Custo       :",precosCustos[coditem])
   escreval ("Preço     R$:",precosVendas[coditem])
   escreval("Pressione ENTER para voltar ao menu")
   leia(opc)
fimProcedimento


// -----------------MOSTRAR PRODUTOS CADASTRADOS E SUAS INFOS----------------//


procedimento imprimir_produtos()//Prodedimento para imprimir os produtos cadastrados
var
   i :inteiro
inicio
   escreval("Você possui no estoque os seguintes itens: ")
   para i de 1 ate codItem faca //do primeiro até a quantidade já cadastrada
      escreval()
      escreval("Código         :",i)
      escreval("Descrição      :",descricoes[i])
      escreval("Quantidade     :",quantidades[i])
      escreval("Preço de CUSTO :",precosCustos[i])
      escreval("Preço de VENDA : R$:",precosVendas[i])
      escreval("------------------------------------------")
      escreval()
   fimpara
   escreva ("Pressione ENTER para voltar ao menu")
   leia(opc)  //apenas para aguardar até que pressioner ENTER. Imprimir um de cada vez
fimProcedimento


// -----------------EDITAR QUANTIDADE QUE POSSUI NO ESTOQUE------------------//


procedimento editar()
   var
      novaQtd :inteiro
   inicio
   escreval("Digite o código do item que deseja pesquisar (ex: 57): ")
   escreval("Lembre-se, todos os números devem ser por ...")
   leia(icod)
   se (icod >=1) E (icod <= codItem) então //se é um código válido
      escreval("Código         :",icod) //o código é a posição no vetor!!!
      escreval("Descrição      :",descricoes[icod])
      escreval("Quantidade     :",quantidades[icod])
      //falta exibir o preço de custo
      //falta exibir o preço de venda
      escreval()
      escreval("Digite a quantidade correta que possui no estoque, ou")
      escreval("caso não queira modificar, digite a quantidade atual.")
      leia(novaQtd)
      quantidades[icod]:=novaQtd //atualiza a quantidade
      escreval("O produto ",descricoes[icod]," agora possui ",quantidades[icod]," unidades")
      escreval()
      escreval("Pressione ENTER para continuar")
      leia (opc)
   fimse
fimprocedimento


// ---------------------------MENU DO ESTOQUE--------------------------------//


procedimento menu_estoque()
inicio
   repita
      limpaTela
      escreval("--------ESTOQUE - PDV--------")
      escreval()
      escreval("       1-Cadastro de Item   ")
      escreval("       2-Pesquisar/Editar   ")
      escreval("       3-?                  ")
      escreval("       5-Menu Principal     ")
      escreval()
      escreval("       0-*Imprimir produtos ")
      escreval()
      escreval("Possuem atualmente",codItem," produtos")
      escreval("   cadastrados no estoque!")
      escreval("-------------------------------")
      leia(opc)
      escolha (opc)
      caso "1"
         limpaTela
         cadastro_item()      //qdn esse método é invocado, ao finalizar, o programa vai continuar daqui...
      caso "2"
         limpaTela
         editar()             //editar quantidade de produtos no estq
      {caso "3"
         limpatela
       }                      //VAZIO
      caso "0"
         limpaTela
         imprimir_produtos()  //mostrar produtos cadastrados
      caso "5"
         limpatela
         menu_principal()     //voltar ao menu principal
      fimEscolha
   ate opc="5"
fimProcedimento


                         // ABAIXO TEMOS A VENDA //

//----------------------------EXCLUIR PRODUTO-------------------------------//
//ASS: Darlan de Souza Pereira ;)


procedimento excluir_itemvenda()    //Procedimento para excluir produtos do carrinho de vendas

   var
   i, cod, qtit            :inteiro
   qtditpc, precototalaux :real
inicio

   escreval("Excluir itens da lista de vendas")
   escreval("Digite o codigo do item: ")
     leia(cod)
   escreval("Digite a quantidade de itens que deseja excluir:")
     leia(qtdit)
   escreval("Digite novamente a quantidade de itens para confirmar:")
     leia(qtditpc)
   se (qtdit = qtditpc) então   //usado para retornar ao menu se confirmação diverjir
   para i de cod ate cod faca
         //acrescenta itens no estoque
         quantidades[i] := quantidades[i] + qtdit
         //retira itens vendidos
         quantidadevenda := quantidadevenda - qtdit
         vquantidadevenda[i] := vquantidadevenda[i] - qtdit
         //retira o preco das vendas excluidas
         precototalaux := precosVendas[i] * qtditpc
         precototalvenda := precototalvenda - precototalaux
         vprecoit[i] := precototalaux
      escreval()
      escreval("Código            :",i)
      escreval("Descrição         : ",descricoes[i])
      escreval("Quantidade vendida: ",vquantidadevenda[i])
      escreval("Preço: R$:",precototalvenda)
      escreval("------------------------------------------")
      escreval()
   fimpara
    senao
      escreva ("Pressione ENTER para voltar ao menu")
      leia(opc)  //apenas para aguardar até que pressioner ENTER. Imprimir um de cada vez
   fimse
fimProcedimento


//---------------------------------VENDER PRODUTO----------------------------//

procedimento vender_item()//Procedimento para adicionar produtos no carrinho de vendas

   var
   i :inteiro
   cod :inteiro
   qtdit :inteiro
   qtditpc :real
   precototalaux :real  //aux
inicio
   
   escreval("Campo para vender itens")
   escreval("Digite o codigo do item: ")
     leia(cod)
   escreval("Digite a quantidade de itens que deseja vender:")
     leia(qtdit)
   escreval("Digite novamente a quantidade de itens para confirmar:")
     leia(qtditpc)
   se (qtdit = qtditpc) então //usado para retornar ao menu se confirmação diverjir
   para i de cod ate cod faca
   //retira itens no estoque
   quantidades[i] := quantidades[i] - qtdit
   //acrescenta itens nas vendas
   quantidadevenda := qtdit + quantidadevenda
   vquantidadevenda[i] := qtdit
   //acrescenta o preco do item no preco total das vendas
   precototalaux := precosVendas[i] * qtditpc
   precototalvenda := precototalaux + precototalvenda
   vprecoit[i] := precototalaux
      escreval()
      escreval("Código            : ",i)
      escreval("Descrição         : ",descricoes[i])
      escreval("Quantidade vendida: ",vquantidadevenda[i])
      escreval("Preço: R$:",precototalvenda)
      escreval("------------------------------------------")
      escreval()
   fimpara
   senao
   escreva ("Pressione ENTER para voltar ao menu")
   leia(opc)  //apenas para aguardar até que pressioner ENTER. Imprimir um de cada vez
   fimse
fimProcedimento


//---------------------------IMPRIMIR PRODUTOS VENDIDOS----------------------//


procedimento imprimir_vendas()//Prodedimento para imprimir as vendas cadastradas
var
   i :inteiro
cont :inteiro
inicio
   escreval("Você vendeu os seguintes itens: ")
   para i de 1 ate coditem faca //do primeiro até a quantidade já cadastrada
   se (vquantidadevenda[i] >= 1 ) então
      cont := cont + 1
      escreval()
      escreval("Código         :",i)
      escreval("Descrição      : ",descricoes[i])
      escreval("Quantidade vendida    :",vquantidadevenda[i])
      escreval("preco do item:",precosVendas[i])
      escreval("SubTotal :",vprecoit[i])
   senao
   escreval()
   fimse
   fimpara
   escreval("Preço Total : R$:",precototalvenda)
      escreval("------------------------------------------")
   escreva ("Pressione ENTER para voltar ao menu de vendas")
   leia(opc)  //apenas para aguardar até que pressioner ENTER. Imprimir um de cada vez
 fimProcedimento


//-------------------------------MENU DE VENDA-------------------------------//


procedimento menu_venda()
inicio
   repita
      limpaTela
      escreval("--------Menu de Vendas--------         ")
      escreval()
      escreval("       1-Vender                        ")
      escreval("       2-excluir item                  ")
      escreval("       3-Finalizar compra?(?)          ")
      escreval("       5-Menu Principal                ")
      escreval()
      escreval("       0-*Relatorio de venda           ")
      escreval()
      escreval("Preco Total: " ,precototalvenda)
      escreval("Quantidade Total:" ,quantidadevenda)
      escreval("----------------------------------     ")
        leia(opc)
      escolha (opc)
      caso "1"
         limpatela
         vender_item        //vender item (deve ter no estoque)
      caso "2"
         limpatela
         excluir_itemvenda  //cancelar produto da venda
      caso "3"
         limpatela
         //VAZIO
      caso "0"
         limpatela
         imprimir_vendas()   //relatório das vendas
      caso "5"
         limpatela
         menu_principal()    //voltar ao menu principal

      fimEscolha
   ate opc="5"
fimProcedimento




INICIO
   codItem <- 0  //inicializa o controlador de código
   login()       //indicando onde o código deve começar
FIMALGORITMO

 

 

Spoiler

procedimento vender_item()//Procedimento para adicionar produtos no carrinho de vendas

   var
   i :inteiro
   cod :inteiro
   qtdit :inteiro
   qtditpc :real
   precototalaux :real  //aux
inicio
   
   escreval("Campo para vender itens")
   escreval("Digite o codigo do item: ")
     leia(cod)
   escreval("Digite a quantidade de itens que deseja vender:")
     leia(qtdit)
   escreval("Digite novamente a quantidade de itens para confirmar:")
     leia(qtditpc)
   se (qtdit = qtditpc) então //usado para retornar ao menu se confirmação diverjir
   para i de cod ate cod faca
   //retira itens no estoque
   quantidades[i] := quantidades[i] - qtdit
   //acrescenta itens nas vendas
   quantidadevenda := qtdit + quantidadevenda
   vquantidadevenda[i] := qtdit
   //acrescenta o preco do item no preco total das vendas
   precototalaux := precosVendas[i] * qtditpc
   precototalvenda := precototalaux + precototalvenda
   vprecoit[i] := precototalaux
      escreval()
      escreval("Código            : ",i)
      escreval("Descrição         : ",descricoes[i])
      escreval("Quantidade vendida: ",vquantidadevenda[i])
      escreval("Preço: R$:",precototalvenda)
      escreval("------------------------------------------")
      escreval()
   fimpara
   senao
   escreva ("Pressione ENTER para voltar ao menu")
   leia(opc)  //apenas para aguardar até que pressioner ENTER. Imprimir um de cada vez
   fimse
fimProcedimento

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá.


Sobre:

   escreval("Digite novamente a quantidade de itens para confirmar:")
   leia(qtditpc)
   se (qtdit = qtditpc) então //usado para retornar ao menu se confirmação diverjir
      para i de cod ate cod faca
         //retira itens no estoque
         quantidades[i] := quantidades[i] - qtdit
         //acrescenta itens nas vendas

Você deve atuar somente no produto que está vendendo... esse para ai estaria erroneamente atualizando todos os produtos.

 

Precisaria utilizar algo como:

quantidades[cod]

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...