Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Davi_Americo

Baixa em Estoque PASCAL

Recommended Posts

Boa noite, está é minha primeira postagem nos fóruns aqui no Clube do Hardware, caso eu cometa algum erro me perdoem irei corrigir no próximo.

 

Estou com a seguinte dúvida em um trabalho na faculdade, preciso fazer um programa em pascal, usando procedimentos onde eu tenho que cadastrar clientes, com dados de cada cliente, além de clientes tenho que cadastrar produtos com seus respectivos dados.

 

Além destes tenho que cadastrar vendas, onde tenho que atualizar o meu vetor produtos com a baixa da quantidade de produtos realizados na venda, como posso realizar esta baixa de estoque?

 

Irei anexar o meu código até agora, todos os menus estão funcionando normalmente, minha dúvida está apenas no menu de cadastro de vendas e em nota fiscal. Espero alguma retorno.

 

Código fonte:

Program Sistemas_de_Vendas;constmax = 100;typeprodutosRegistro = record         // Registros de clientes  nomeProduto:string;  preco: real;  quantidade,codigo: integer;end; clientesRegistro = record             // Registros de Produtos   nomeCliente, cpf, rg, telefone: string;end;var  posicaoCliente, posicaoProduto, alternativa, indiceProduto, codigo_procura, quantidade_comprada: integer;  clientes:array[1..max] of clientesRegistro;  produtos:array[1..max] of produtosRegistro;  clienteNovo:char;  usuario,senha: string;procedure cadastro_clientes; // Procedimento para cadastro de clientesbegin   clrscr;   if (posicaoCliente <= max) then	  begin	       writeln('**************************************************************');	       writeln('********************* CADASTRO PRODUTO ***********************');	       writeln;            writeln('Nome: ');            gotoxy(35,4); writeln('Cpf: ');            writeln('RG: ');            gotoxy(35,5); writeln('Telefone: ');            writeln('**************************************************************');            gotoxy(7,4); readln(clientes[posicaoCliente].nomeCliente);            gotoxy(40,4); readln(clientes[posicaoCliente].cpf);            gotoxy(5,5); readln(clientes[posicaoCliente].rg);            gotoxy(45,5); readln(clientes[posicaoCliente].telefone);            posicaoCliente := posicaoCliente + 1;            readln;                         clrscr;             gotoxy(20,10);		   write('Deseja cadastrar um novo cliente?');		   gotoxy(24,11);		   write('1 - Sim ou 2 - Não: ');		   read(alternativa);		    if (alternativa = 1) then		     begin		      cadastro_clientes;		     end;			clrscr; 	          end       else        begin		writeln('Banco de Dados Cheio');		readln;	   end;		     end;procedure cadastro_produtos; // Procedimento para cadastro de produtosbegin      clrscr;      if (posicaoProduto <= max) then        begin             writeln('**************************************************************');	        writeln('********************* CADASTRO PRODUTO ***********************');	        writeln;             writeln('Nome Produto: ');                     gotoxy(35,4); writeln('Código: ');             writeln('Preço: ');             gotoxy(35,5); writeln('Quantidade: ');             writeln('**************************************************************');             gotoxy(15,4); readln(produtos[posicaoProduto].nomeProduto);             gotoxy(43,4); readln(produtos[posicaoProduto].codigo);             gotoxy(8,5); readln(produtos[posicaoProduto].preco);             gotoxy(48,5); readln(produtos[posicaoProduto].quantidade);             posicaoProduto := posicaoProduto + 1;             readln;                           clrscr;              gotoxy(20,10);		    write('Deseja cadastrar um novo produto?');		    gotoxy(24,11);		    write('1 - Sim ou 2 - Não: ');		    read(alternativa);		     if (alternativa = 1) then		     begin		      cadastro_produtos;		     end;			clrscr; 	            end         else          begin           writeln('Estoque Lotado');           readln;          end;              end;procedure cadastro_vendas; // Procedimento para cadastro de vendas DÚVIDAbegin    writeln;   writeln('Produtos Disponíveis:');   for indiceProduto:=1 to (posicaoProduto - 1) do    begin     writeln;      writeln('Nome: ',produtos[indiceProduto].nomeProduto);     writeln('Código: ',produtos[indiceProduto].codigo);     writeln('Quantidade em estoque: ',produtos[indiceProduto].quantidade);     writeln;     writeln('----------------');     writeln;    end;    write('Digite o código do produto para venda: ');    readln(codigo_procura);    write('Quantidade desejada: ');    readln(quantidade_comprada);    clrscr;  end;   procedure relatorio_clientes; // Procedimento para relatório de clientesvarindiceCliente: integer;begin	clrscr;     writeln('*******************************************************************');	writeln('********************* RELATÓRIO DE CLIENTES ***********************');	writeln;        for indiceCliente:=1 to (posicaoCliente - 1) do	    begin	     writeln('Nome:',clientes[indiceCliente].nomeCliente);          writeln('CPF:',clientes[indiceCliente].cpf);	     writeln('RG:',clientes[indiceCliente].rg);	     writeln('Telefone:',clientes[indiceCliente].telefone);	     writeln('-----------------------------------');	     writeln;	    end;	    readln;                end;procedure relatorio_produtos; // Procedimento para relatório de produtosbegin     clrscr;     writeln('*******************************************************************');	writeln('********************* RELATÓRIO DE PRODUTOS ***********************');	writeln;       for indiceProduto:=1 to (posicaoProduto - 1) do	   begin	     writeln('Nome Produto: ',produtos[indiceProduto].nomeProduto);	     writeln('Código: ',produtos[indiceProduto].codigo);	     writeln('Preço: ',produtos[indiceProduto].preco:2:2);	     writeln('Quantidade: ',produtos[indiceProduto].quantidade);	     writeln('-----------------------------------');	     writeln;	   end;	   readln; end;  procedure tela_inicial;  //Procedimento do Menu Principal  var   opcao: integer; begin    opcao:=0;    while(opcao<>9) do      begin        writeln('                    MENU PRINCIPAL          ');        writeln('                                            ');        writeln('                                            ');        writeln('                SEJA BEM VINDO ',usuario     );	   writeln('                                             ');	   writeln('                                             ');	   writeln('          -----------------------------------');         writeln('          |      [1] Cadastrar Clientes      |');        writeln('          |      [2] Cadastrar Produtos      |');        writeln('          |      [3] Cadastrar Vendas        |');        writeln('          |      [4] Relatório de Clientes   |');        writeln('          |      [5] Relatório de Produtos   |');        writeln('          |      [6] Emitir Nota Fiscal      |');	   writeln('          |      [9] Encerrar                |');        writeln('          ----------------------------------- ');        write('             Escolha a opção desejada => ');        readln(opcao);        clrscr;             case opcao of		   1: begin	 	       cadastro_clientes;	                end;  	    	         	   2: begin	     		   cadastro_produtos;		 	      end;	    	    	    3: begin	      	         cadastro_vendas;	      		  end; 				  	   4: begin	      	        relatorio_clientes;	      	       end; 				 	   5: begin	     		  relatorio_produtos;			   	      end;			    9: writeln('Acabou o Programa');	    		else		   writeln('Opção inválida');		   opcao:=0;		   readln;	  	  end;        	        end;end;// Programa PrincipalBegin  writeln('-----------------------------------------------------------------------------');  writeln('|                                                                           |');  writeln('|                                                                           |');  writeln('|                                                                           |');  writeln('|                                                                           |');  writeln('|                                Usuário:                                   |');  writeln('|                                  Senha:                                   |');  writeln('|                                                                           |');  writeln('|                                                                           |');  writeln('|                                                                           |');  writeln('|                                                                           |');  writeln('|                                                                           |');  writeln('-----------------------------------------------------------------------------');  gotoxy(42,6);  readln(usuario);  gotoxy(42,7);  readln(senha);  clrscr;    posicaoCliente := 1;  posicaoProduto := 1;  tela_inicial;         	              End.     


Sistema de Vendas.txt

Editado por Simon Viegas
Incorpado código a postagem. Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

Além destes tenho que cadastrar vendas, onde tenho que atualizar o meu vetor produtos com a baixa da quantidade de produtos realizados na venda, como posso realizar esta baixa de estoque?

 

Pelo que eu entendi, basta você "subtrair" na quantidade em estoque, a mesma quantidade que foi vendida em "vendas"... não?

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Eu estava pesquisando e descobri que no procedimento de cadastro_vendas, eu tenho que fazer uma busco no vetor produtos se o código que eu digitar é válido, se for ele faz essa subtração na quantidade de produtos no vetor produtos, porém sou iniciante e não sei como usar esse procedimento de busca.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Olá.

    Eu estava pesquisando e descobri que no procedimento de cadastro_vendas, eu tenho que fazer uma busco no vetor produtos se o código que eu digitar é válido, se for ele faz essa subtração na quantidade de produtos no vetor produtos, porém sou iniciante e não sei como usar esse procedimento de busca.

     

    A busca é relativamente simples. Basta percorrer vetor correspondente e compara o valor a ser pesquisado com o valor que contém o produto. Algo do tipo:

    ACHOU:=false; //inicializa como não encontradofor indiceProduto:=1 to posicaoProduto do //percorrer toda lista de produtos  begin  if codigo_procura = produtos[indiceProduto].codigo then //se corresponder...     begin     ACHOU:=true; //marca como encontrado     ....     ...     break; //interrompe o laço de repetição (nã faz sentido continuar pesquisando)     end;  end;

    Ai você pode usar esse <ACHOU> como referência para continuar ou não o processo... por ai vai.

     

    No aguardo.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • vou tentar implementar este seu código aqui no meu, você acha melhor colocar esse código dentro de uma função de nome busca?

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    vou tentar implementar este seu código aqui no meu, você acha melhor colocar esse código dentro de uma função de nome busca?

    Sim...uma function cairia bem. Poderia fazer ela retorna a posição do produto por exemplo...

    Obs.: aquele meu código é só uma base

     

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×