Ir ao conteúdo

Posts recomendados

Postado

No relatório funcionário mostra o nome do funcionário, cliente atendido, o produto, o código do produto, porém não mostra a quantidade que o cliente comprou.

Já o relatório do cliente, ele mostra o nome do cliente, produto, porém não mostra a quantidade nem o total que a pessoa comprou.


O que faço pra resolver esses erros?

 

Program Pzim ;
uses crt;

type cliente=record
          nomecli:string;
        telcli:integer;
        codcli:integer;
End;

type funcionario=record
     codfun:integer;
     nomefun:string;
     telfun:integer;                 
End;

type produto=record
         codprod:integer;
         nomeprod:string;
         precoprod:real;
End;

type venda=record
         codvenda:integer;
         codclivenda:integer;
         codfunvenda:integer;
         codprovenda:integer;
         quant:integer;
         total:real;
         diavenda:integer;
         mesvenda:integer;
         horavenda:integer;
         minutovenda:integer;
         anovenda:integer;
         
End;


var 
 clivet:array[1..5] of cliente;
 funcvet:array[1..5] of funcionario;
 prodvet:array[1..5] of produto;
 vendvet:array[1..5] of venda;
 Dia, Mes, Ano, Dia_Semana, Hora, Minuto, Segundo, Dec_Segundo : integer;
 op,op2,op3:integer;
 i, j,x:integer;
 resp,resp2,resp3,resp4,resp5,nomefunc,funcinome,cod_cli:string;
 precotot:real;
 anorel,mesrel,cod_cliente,funcr:integer;
 
 
 procedure menu;
 begin
 clrscr;
  writeln('----Menu Principal----');
    writeln('[1] - Cadastros - ');
    writeln('[2] - Vendas - ');
    writeln('[3] - Relatórios - ');
    writeln('[4] - Sair - ');
    writeln('Informe a opção de seu interesse');
    readln(op);
 End;
 
 procedure menucadastro;
 begin
 clrscr;
  writeln('----Menu de Cadastros----');
    writeln('[1] - Cadastrar Cliente - ');                                                                          
    writeln('[2] - Cadastrar Funcionário - ');
    writeln('[3] - Cadastrar Produto - ');
    writeln('[4] - Volta para o menu principal - ');
    writeln('Informe a opção de seu interesse');
    readln(op2);
 End;
 
 procedure cadcliente;
 begin
 clrscr;
   for i:=1 to 5 do
   begin
    clrscr;
     if clivet[i].nomecli='' then
     begin
                            writeln('----Cadastro Cliente----');
                                 writeln('Informe o codigo do cliente');
                                 readln(clivet[i].codcli);
                                 writeln('Informe o nome do cliente');
                                 readln(clivet[i].nomecli);
                                 writeln('Informe o telefone do cliente');
                                 readln(clivet[i].telcli);
                                 writeln('Deseja cadastrar um novo cliente?[S/N]');
                                 readln(resp);
                                  if UpCase (resp)='N' then
                                  begin
                                   exit;
                                  end;
     end;
     

   end;
 End;
 
 procedure cadfuncionario;
 begin
 clrscr;
   for i:=1 to 5 do
   begin
    clrscr;
     if funcvet[i].nomefun='' then
     begin
                            writeln('----Cadastro Funcionário----');
                                 writeln('Informe o codigo do funcionário');
                                 readln(funcvet[i].codfun);
                                 writeln('Informe o nome do  funcionário');
                                 readln(funcvet[i].nomefun);
                                 writeln('Informe o telefone do funcionário');
                                 readln(funcvet[i].telfun);
                                 writeln('Deseja cadastrar um novo funcionário?[S/N]');
                                 readln(resp2);
                                  if UpCase (resp2)='N' then
                                  begin
                                   exit;
                                  end;
     end;
                     
   end;
 End; 
 
 procedure cadproduto;
 begin
 clrscr;
   for i:=1 to 5 do
   begin
    clrscr;
     if prodvet[i].nomeprod='' then
     begin
                            writeln('----Cadastro Produto----');
                                 writeln('Informe o codigo do produto');
                                 readln(prodvet[i].codprod);
                                 writeln('Informe o nome do  produtoo');
                                 readln(prodvet[i].nomeprod);
                                 writeln('Informe o preço do produto');
                                 readln(prodvet[i].precoprod);
                                 writeln('Deseja cadastrar um novo produto?[S/N]');
                                 readln(resp3);
                                  if UpCase (resp3)='N' then
                                  begin
                                   exit;
                                  end;
     end;
                     
   end;
 End; 
 
 
 
procedure vendas;
 begin
 clrscr;
   for i:=1 to 5 do
   begin
    clrscr;
     if prodvet[i].nomeprod='' then
     begin
     
                            writeln('----Vendas----');
                                 writeln('Informe o codigo da venda');
                                 readln(vendvet[i].codvenda);
                                 writeln('Informe o codigo do cliente');
                                 readln(vendvet[i].codclivenda);
                                 writeln('Informe o codigo do funcionario');
                                 readln(vendvet[i].codfunvenda);
                                 
                                 for x:=1 to 5 do
                                  begin
                                    if prodvet[x].nomeprod<>'' then
                                     begin
                                       writeln('');
                       writeln('Produto: ',prodvet[x].nomeprod,' Cod produto: ',prodvet[x].codprod,' Preço: ', prodvet[x].precoprod:6:2);
                       writeln('');
                                    end;                                                
                                  end;
                                  
                                 writeln('Informe o codigo do produto');
                                 readln(vendvet[i].codprovenda);
                                 writeln('Informe a quantidade');
                                 readln(vendvet[i].quant);
                                 GetDate(Ano, Mes, Dia, Dia_Semana);
                                 GetTime(Hora, Minuto, Segundo, Dec_Segundo);
                                
                                 vendvet[i].horavenda:=hora;
                                 vendvet[i].minutovenda:=minuto;
                                 vendvet[i].diavenda:=dia;
                                 vendvet[i].mesvenda:=mes;
                                 vendvet[i].anovenda:=ano;
                                 
                                 
                                   for j:= 1 to 5 do
                                     begin
                                       if vendvet[i].codprovenda=prodvet[j].codprod then
                                         begin
                                           precotot:=prodvet[j].precoprod;
                                         end;
                                     end;
                                 vendvet[i].total:=precotot*vendvet[i].quant;   
                                 writeln ('Total: ',vendvet[i].total:6:2);
                                 writeln('Deseja realizar uma nova compra?[S/N]');
                                 readln(resp4);
                                 
                                  if UpCase (resp4)='N' then
                                  begin
                                   exit;
                                  end;
     end;
                     
   end;
 End; 

function tot(valor1,valor2:real):real;
begin
        valor1:=valor1+valor2;
        tot:=valor1;
End; 
 
procedure menurelatorio;
begin
  writeln('[1] Relatório Mensal');
  writeln('[2] Relatório Anual');
  writeln('[3] Relatório por Funcionário');
  writeln('[4] Relatório por Cliente');
  writeln('Digite a opção desejada');
  readln(op3);
  
  case op3 of
   1:begin
    clrscr;
       writeln('Digite o ano');
       readln(anorel);
       writeln('Digite o mês');
       readln(mesrel);
       
       for i:=1 to 5 do
       begin
          if anorel=vendvet[i].anovenda then
          begin 
              if mesrel=vendvet[i].mesvenda then
               begin
                  writeln('Produto: ',prodvet[i].nomeprod,' Quantidade: ',vendvet[i].quant ,' Total: ',vendvet[i].total:6:2);                 
               end;
          end;
       end;
     end;
     
   2:begin
    clrscr;
       writeln('Digite o ano');
       readln(anorel);
       
       for i:=1 to 5 do
        begin
           if anorel=vendvet[i].anovenda then
             begin
             writeln('Produto: ',prodvet[i].nomeprod,' Quantidade: ',vendvet[i].quant ,' Total: ',vendvet[i].total:6:2);
           end;  
         end;
        End;
        
        
        3:begin
            clrscr;        
           writeln('Informe o codigo do funcionário em questão');
           readln(funcr);
           
               for i:=1 to 5 do
                begin
                    if funcr=vendvet[i].codfunvenda then
                     begin
                      for j:=1 to 5 do
                      begin
                        if funcr= funcvet[j].codfun then
                         begin
                          funcinome:=funcvet[j].nomefun; 
                         end;
                       writeln('Funcionário: ',funcinome, ' Cliente Atendido: ',clivet[j].nomecli);
                       writeln('Produto: ',prodvet[j].nomeprod, ' Codigo do produto: ',prodvet[j].codprod, ' Quantidade: ',vendvet[j].quant);
                       break;
                       end;
                     end;
                end;
                                           
        End;
        
        4:begin
           clrscr;
           writeln('Informe o codigo do cliente');
           readln(cod_cliente);
             for i:=1 to 5 do
               begin
                 if cod_cliente=clivet[i].codcli then
                  begin
                     for j:=1 to 10 do
                     begin
                        if cod_cliente=clivet[j].codcli then
                          begin
                              cod_cli:=clivet[j].nomecli; 
                          end;
                          writeln('Nome: ',clivet[j].nomecli,' Produto: ',prodvet[j].nomeprod ,' Quantidade: ',vendvet[j].quant,' Total:R$ ',vendvet[j].total:6:2);
                          break;
                     end;
                      //writeln('Nome: ',clivet[i].nomecli,' Produto: ',prodvet[i].nomeprod ,' Quantidade: ',vendvet[i].quant,' Total:R$ ',vendvet[i].total:6:2);
                 end; 
             end;
        
        End;
        
        
    End;       
End;
 
 
 
 
 
 
 
 
 
 
 
Begin
repeat
 menu;
 case op of 
       1:begin
             repeat
                   menucadastro;
                        case op2 of
                              1:begin
                                     cadcliente;
                            end;
                                2:begin
                                       cadfuncionario;
                                  end;
                                    3:begin
                                           cadproduto;
                                  end;    
                end;
                        until op2=4;
                    
    end;
           
           2:begin
                    vendas;
             end;
           
           3:begin
                   repeat
                    clrscr;
                         menurelatorio;
                         writeln('Deseja ver o relatório novamente?');
                         readln(resp5);
                             until UpCase (resp5)='N'; 
                   end;
                  
End; 
until op=4;
       
End.

pasnew.docx

  • Membro VIP
Postado
Em 04/12/2020 às 22:28, Juju122 disse:


ype cliente=record
          nomecli:string;
        telcli:integer;
        codcli:integer;
End;

type funcionario=record
     codfun:integer;
     nomefun:string;
     telfun:integer;                 
End;

type produto=record
         codprod:integer;
         nomeprod:string;
         precoprod:real;
End;

type venda=record
         codvenda:integer;
         codclivenda:integer;
         codfunvenda:integer;
         codprovenda:integer;
         quant:integer;
         total:real;
         diavenda:integer;
         mesvenda:integer;
         horavenda:integer;
         minutovenda:integer;
         anovenda:integer;
         
End;

 

 

  1. só precisa declarar o type uma vez;
  2. você está repetindo o nome do tipo para cada variável do record, está redundante.

Pode seria ser algo assim:

type
  cliente = record
              cod: integer;
              nome: string;
              tel: integer;
            end;

  funcionario = record
                  cod: integer;
                  nome: string;
                  tel: integer;                 
                end;

  produto = record
              cod: integer;
              nome: string;
              preco: real;
            end;

  venda = record
            cod: integer;
            codCli: integer;
            codFun: integer;
            codPro: integer;
            quant: integer;
            total: real;
            dia: integer;
            mes: integer;
            ano: integer;
            hora: integer;
            minuto: integer;
          end;

 

 

Sobre:

Em 04/12/2020 às 22:28, Juju122 disse:

No relatório funcionário mostra o nome do funcionário, cliente atendido, o produto, o código do produto, porém não mostra a quantidade que o cliente comprou.

Já o relatório do cliente, ele mostra o nome do cliente, produto, porém não mostra a quantidade nem o total que a pessoa comprou.


O que faço pra resolver esses erros?

 

As posições de cada vetor não respectivamente relacionados... Basta utilizar as referências corretas.

 

Por exemplo, no item 3:

 

Em 04/12/2020 às 22:28, Juju122 disse:


        3:begin
            clrscr;        
           writeln('Informe o codigo do funcionário em questão');
           readln(funcr);
           
               for i:=1 to 5 do
                begin
                    if funcr=vendvet[i].codfunvenda then
                     begin
                      for j:=1 to 5 do
                      begin
                        if funcr= funcvet[j].codfun then
                         begin
                          funcinome:=funcvet[j].nomefun; 
                         end;
                       writeln('Funcionário: ',funcinome, ' Cliente Atendido: ',clivet[j].nomecli);
                       writeln('Produto: ',prodvet[j].nomeprod, ' Codigo do produto: ',prodvet[j].codprod, ' Quantidade: ',vendvet[j].quant);
                       break;
                       end;
                     end;
                end;
                                           
        End;

 

 

Poderia ser algo como:

 

3:begin
    ClrScr;        
    writeln('Informe o codigo do funcionário em questão');
    readln(funcR);

    writeln('');
    writeln('Funcionário: ', funcVet[funcR].nome);
    for i:=1 to 5 do
    begin
      if vendVet[i].codFun = funcR then
      begin
        writeln('Cliente Atendido: ', cliVet[vendVet[i].codCli].nome);
        writeln('Produto: ', prodVet[vendVet[i].codProd].nome, ' Codigo do produto: ', vendVet[i].codProd, ' Quantidade: ', vendvet[i].quant);
      end;
    end;
  end; //3

 

 

 

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!