Cadastro de Clientes em Pascal Parte 4

Dando seguimento, vamos adicionar mais duas partes ao nosso programa: ALTERAR e EXCLUIR.

Tudo bem que o nosso programa ainda não esteja como muitos desejariam, mas vamos melhorar pouco a pouco até atingir a meta que irá satisfazer muitos trabalhos que outros professores pedem.

Lembro que a minha solução não é a única e que não é simplesmente para copiar, mas para aprender a criar o seu próprio programa.

Vamos ao programa.

ALTERAR: para alterar nós teremos que ver os dados que inserimos e para isso teremos que localizar o cliente, no programa iremos procurar pelo NOME que é o fator para diferenciar os clientes.

A procura deve começar pelo Cliente 1 e ir até o cliente procurado ou até o final que é o Cliente N (NClientes).

Caso não encontre mostre a mensagem: "Cliente não encontrado", caso contrário mostre o cliente e permita para reescrever.

Outra melhoria do programa será a troca do IF por CASE e agora nós temos 5 opções no menu e o CASE se adequa melhor ao programa.

EXCLUIR: no programa é parte mais complicada, mas também a que tem mais soluções diferentes.

A solução que irei adotar será localizar o Nome e depois pedir para confirmar, caso confirme:

O nome será marcado com # no ínicio do e não deverá mais aparecer na lista e para isso iremos alterar a opção 2 - Mostrar Clientes e checar se no início do nome não tem um sustenido (joguinho da velha, como quiserem).

Código Fonte:

 Program Cadastro_de_Clientes_Versao_4;  
 Uses Crt;  
 Var  
  Nome   : Array [1..15] of String[40];  
  Idade   : Array [1..15] of Integer;  
  Sexo   : Array [1..15] of Char;  
  i     : Integer;  
  NClientes : Integer; // Numero de Clientes  
  Opcao   : Integer;  
  s     : String;  
  b     : Boolean;  
 Begin  
  NClientes := 0; // Come‡a com 0 Clientes  
  Repeat  
   ClrScr;  
   WriteLn ('Cadastro de Clientes V1.0');  
   WriteLn;  
   WriteLn ('1 - Incluir Clientes');  
   WriteLn ('2 - Mostrar Clientes');  
   WriteLn ('3 - Alterar Clientes');  
   WriteLn ('4 - Excluir Clientes');  
   WriteLn ('5 - Sair');  
   WriteLn;  
   Write ('Opcao: '); ReadLn (Opcao);  
   Case Opcao of  
    1 :  
    Begin  
     NClientes := NClientes+1;  
     WriteLn ('Cliente No.:',NClientes);  
     Write ('Nome...:'); ReadLn (Nome[NClientes]);  
     Write ('Idade..:'); ReadLn (Idade[NClientes]);  
     Repeat  
      Write ('Sexo...:'); ReadLn (Sexo[NClientes]);  
     Until (Sexo[NClientes]='M') or (Sexo[NClientes]='F');  
    End;  
    2 :  
    Begin  
     For i := 1 to NClientes do  
     Begin  
      if (Copy(Nome[i],1,1)<>'#') Then  
      Begin  
       WriteLn ('Cliente No.: ',i);  
       WriteLn ('Nome.......: ',Nome[i]);  
       WriteLn ('Idade......: ',Idade[i]);  
       WriteLn ('Sexo.......: ',Sexo[i]);  
       WriteLn ('=======================================');  
      End;  
     End;  
     ReadLn;  
    End;  
    3 :  
    Begin  
     Write ('Entre com Nome do Cliente :');  
     ReadLn (s);  
     b := False; // Inicia que nao encotrou  
     i := 0;  
     Repeat  
      i := i + 1;  
      if Nome[i] = s then b := True;  
     Until (b) or (i>=NClientes);  
     if not(b) then  
     Begin  
      WriteLn ('Cliente nÆo encontrado!');  
      ReadLn;  
     End  
     Else  
     Begin  
      WriteLn ('Cliente No.: ',i);  
      WriteLn ('Nome.......: ',Nome[i]);  
      WriteLn ('Idade......: ',Idade[i]);  
      WriteLn ('Sexo.......: ',Sexo[i]);  
      WriteLn;  
      WriteLn ('Nome.......: ');ReadLn(Nome[i]);  
      WriteLn ('Idade......: ');ReadLn(Idade[i]);  
      WriteLn ('Sexo.......: ');ReadLn(Sexo[i]);  
     End;  
    End;  
    4 :  
    Begin  
     Write ('Entre com Nome do Cliente :');  
     ReadLn (s);  
     b := False; // Inicia que nao encotrou  
     i := 0;  
     Repeat  
      i := i + 1;  
      if Nome[i] = s then b := True;  
     Until (b) or (i>=NClientes);  
     if not(b) then  
     Begin  
      WriteLn ('Cliente nÆo encontrado!');  
      ReadLn;  
     End  
     Else  
     Begin  
      WriteLn ('Cliente No.: ',i);  
      WriteLn ('Nome.......: ',Nome[i]);  
      WriteLn ('Idade......: ',Idade[i]);  
      WriteLn ('Sexo.......: ',Sexo[i]);  
      WriteLn;  
      Repeat  
       Write ('Confirma (S/N)?');  
       ReadLn (s);  
      Until (s='S') or (s='N');  
      if s='S' then  
       Nome [i] := '#'+Nome[i];  
     End;  
    End;  
   End;  
  Until (Opcao=5);  
 End.  

Agora é a vez de vocês usarem a criatividade e comentarem um pouco para melhorar as idéias do programa.

Na próxima etapa vamos remover efetivamente o Cliente e não simplesmente marcá-lo.

Lembre-se quanto vale essa postagem? Quantas horas economizou? Ajude o blog a se manter e para que a cada dia tenha mais postagens completas como essa.

2 comentários:

  1. Gostei muito do seu blog cara! Excelente mesmo.
    Estou usando muitas das coisas quei você está ensinando nele para montar um projeto que com certeza vocês vão ouvir falar.
    Se bobear vou até pedir a sua ajuda porque o negocio vai ficar grande.
    Mas estou aqui programando aos pouquinhos para tudo dar certo! Parabens

    ResponderExcluir
  2. Bruno, pode contar com a minha ajuda. Se demoro um pouco para responder é que estou envolvido em alguns projetos.

    ResponderExcluir