Ir ao conteúdo
  • Cadastre-se

Pascal/Delphi Erro no relatório cliente e funcionário.


Posts recomendados

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

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
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

 

 

 

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