terça-feira, 2 de outubro de 2012

{ Funcao : Faca um programa que permita a usuario incluir, alterar, excluir,   pesquisar e listar as informacoes num vetor de no maximo 200 clientes de   uma agencia bancaria. Tendo as seguintes informacoes: numero da conta,   nome, saldo e senha de 6 digitos.
Autor :
Data : 4/9/2012
Seção de Declarações }

Program Banco_Novo;

uses crt;

const
  max = 200;

type
  TContaCorrente =  record
                      num: integer;
                      nome: string[40];
                      saldo: real;
                      senha: string[6];
                    end;

TContas = array[1.. max] of TContaCorrente;

var
  contas                                : TContas;      { *** upos - ultima posicao *** }
  p, i, op, upos, pesq, erro            : integer;
  resp                                  : char;
  teste_senha,nova_senha,vsenha,senha_digitada     : string[6];


{*** PROCEDURE MOSTRAR DADOS DA CONTA - UTILIZADO EM QUASE TODAS AS PARTES DESTE PROGRAMA ***}

procedure MostrarConta(conta: TContaCorrente);

begin
  gotoxy (10,06); write ('        Cliente Cadastrado - Banco PASCAL:           ');
  gotoxy (10,07); write ('-----------------------------------------------------');
  gotoxy (10,08); write ('N£mero  Nome                            Saldo');
  gotoxy (10,09); write ('-------+-------------------------------+-------------');
  writeln;
  gotoxy (10,10); write (conta.num);
  gotoxy (18,10); write (conta.nome);
  gotoxy (53,10); write ('R$ ',conta.saldo:10:2);
end;

procedure criptografar_senha;
var
   s         : char;

begin
  i:= 1;
  while i <= 6 do
    begin
      s:=readkey;
      i:= i + 1;
      if (s <> ' ') then
        begin
          senha_digitada:= concat(senha_digitada+s);
          write ('*');
        end;
    end;
end;

function localizar: integer;

var
  achou: boolean;

begin
  p:= 1;
  achou := false;
  while (p <= upos) and (not achou) do  {not achou = achou = false}
    if pesq = contas[p].num then
      achou := true
    else
      p := p + 1;
  if achou then     {if achou then = if achou = true then}
    localizar := p
  else
    localizar := -1; { numero negativo ira interrompoer as procedures: }
end;                 { alterar, excluir, pesquisar, listar             }

{*** CADASTRAMENTO DE CLIENTES - Incluir ***}

procedure incluir;

begin
  clrscr;
  gotoxy (10,01); write ('         Abertura de nova conta          ');
  gotoxy (10,02); write ('---------------------------------------- ');

  gotoxy (10,04); write ('Ate o momento o banco tem ',upos,' clientes cadastrados');
  gotoxy (10,06); write ('Podendo chegar a numero ',max,' de clientes');

  if upos < max then
    begin
      gotoxy (10,24); write  ('Deseja realmente cadastrar uma nova conta [S/N] : ');
      readln (resp);
      if (resp = 's') or (resp = 'S') then
        begin
          gotoxy (10,24); write ('                                                   ');
          upos := upos + 1;                                                        {       upos - ultima posicao         }
          gotoxy (10,08); write ('N£mero: ');                readln (contas[upos].num);            
          gotoxy (10,09); write ('Nome  : ');                 readln (contas[upos].nome); 
          gotoxy (10,10); write ('Saldo Inicial: R$ ');   readln (contas[upos].saldo);
          gotoxy (10,12); write ('Digite a senha: ');
          criptografar_senha;
          contas[upos].senha:=senha_digitada;
          gotoxy (10,22); write ('Cadastramento de conta concluido com sucesso!!');
          delay (2500);
        end
     else
        begin
          gotoxy (10,22); write ('Nao foi registrado uma conta nova.');
        end;
      gotoxy (10,22); write ('Tecle [ENTER] para retornar oa menu principal');
    end
  else
    begin
      gotoxy (10,17); write ('Nosso numero de clientes ja esta complento');
      gotoxy (10,18); write ('Foi atingido o numero maximo de clientes');
      gotoxy (10,19); write ('Um total de ',upos,' de ',max);
      gotoxy (10,20); write ('Tecle [ENTER] para continuar.');
      readkey;
    end;
end;

{**** Procedimento para efetuar alteracoes nos dados dos clientes ****}

procedure alterar;

var
  opl: integer;
begin
  clrscr;
  gotoxy (10,01); write ('Alterarcao de dados no registro do cliente cadastrado: ');
  gotoxy (10,02); write ('---------- -- ----- -- -------- -- ------- ----------- ');

  gotoxy (10,04); write ('Digite o n£mero da conta a ser alterada: ');
  readln(pesq);
  p := localizar; {aciona a procedure localizar e recebe um informacao           }
  if p > 0 then   {se encontrou ou nao o numero da conta no registro de clientes }
    begin
      MostrarConta(contas[p]);
      gotoxy (10,12); write ('Qual o campo que deseja alterar?');
      gotoxy (10,13); write ('1 - Nome');
      gotoxy (10,14); write ('2 - Saldo');
      gotoxy (10,15); write ('3 - Senha');
      gotoxy (10,16); write ('9 - Voltar ao menu principal');

      gotoxy (10,18); write ('Digite a Opcao: '); readln(opl);
      if opl = 1 then
        begin
          gotoxy (14,20); write ('Nome: ');
          readln(contas[p].nome);
        end
      else
        if opl = 2 then
          begin
            gotoxy (14,20); write ('Saldo: R$');
            readln(contas[p].saldo);
          end
        else
          if opl = 3 then
            begin
              gotoxy (14,20); write ('Digite a nova senha: ');
              criptografar_senha;
              contas[upos].senha:=senha_digitada;
            end
          else
            if opl = 9 then
              begin
                gotoxy (14,24); write ('Tecle [ENTER] para voltar ao MENU PRINCIPAL')
              end;
      gotoxy (10,22); write ('Alera‡Æo de conta concluido com sucesso!!');
      delay (2500);
    end
  else
    begin
       gotoxy (14,24); write ('Conta nÆo localizada. Tecle [ENTER] para continuar.');
       readkey;
    end;
end;

{ *** PROCEDIMENTO PARA EXCLUIR CONTA DE CLIENTE *** }

procedure excluir;


begin
  clrscr;
  if upos > 0 then
    begin
       gotoxy (10,02); write ('Excluir Registro de Cliente Cadastrado: ');
       gotoxy (10,03); write ('------- -------- -- ------- ----------- ');

       gotoxy (10,05); write ('Digite o n£mero da conta a ser excluida: ');
       readln(pesq);
       p := localizar;
       if p > 0 then
         begin
           MostrarConta(contas[p]);
           gotoxy (10,24); write('Comfirma a exclusao <S/N>: ');
           readln(resp);
           resp := upcase(resp);
           if resp = 'S' then
            begin
              for i := p to upos - 1 do
                contas[i] := contas[i + 1];
              upos := upos - 1;
            end;
           gotoxy (10,24); write ('Conta excluida com sucesso!!');
           delay (2500);
         end
       else
         begin
           gotoxy (10,24);write('Conta nÆo localizada. Tecle [ENTER] para continuar.');
           readkey;
         end;
      end
  else
     begin
       gotoxy (07,08); write ('Banco Pascal');
       gotoxy (07,24); write ('NÆo existe informa‡Æo a excluir. Tecle [ENTER] para continuar.');
       readkey;
     end;
end;

procedure pesquisar;


begin
  clrscr;
  gotoxy (10,02); write ('Excluir Registro de Cliente Cadastrado: ');
  gotoxy (10,03); write ('------- -------- -- ------- ----------- ');

  gotoxy (10,05); write('Didite o n£mero da conta a ser localizada: ');
  readln(pesq);
  p := localizar;
  if p > 0 then
  begin
    MostrarConta(contas[p]);
    gotoxy (10,24); write('Tecle [ENTER] para continuar.');
    readkey;
  end
  else
  begin
    gotoxy (10,24); write('Conta nÆo localizada. Tecle [ENTER] para continuar.');
    readkey;
  end;
end;

procedure listar;

var
  l, x: integer;

begin
  X:=7;
  clrscr;
  if upos > 0 then
    begin
      l := 2;
      gotoxy (10,02); write ('Listagem dos Cliente Cadastrados - Banco PASCAL: ');
      gotoxy (10,03); write ('-------- --- ------- -----------   ----- ------- ');
      gotoxy (10,05); write ('N£mero  Nome                             Saldo');
      gotoxy (10,06); write ('-------+--------------------------------+-----------------');
      writeln;
      for i := 1 to upos do
        begin
          gotoxy (10,x); write (contas[i].num:7);
          gotoxy (18,x); write (contas[i].nome);
          gotoxy (53,x); write ('R$ ',contas[i].saldo:10:2);
          x:=x+1;
          if l < 22 then
            l := l + 1
          else
            begin
              gotoxy (10,24); write ('Tecle [ENTER] para continuar.');
              readkey;
              l := 1;
              clrscr;
              writeln('N£mero  Nome Saldo  : ');
            end
        end;
      gotoxy (10,24); write ('Tecle [ENTER] para continuar.');
      readkey;
    end
  else
    begin
      gotoxy (10,24); write ('NÆo exitem contas cadastradas. Tecle [ENTER] para continuar.');
      readkey;
    end;
end;
{
procedure extrato_bancario;

Type
    extrato     = record
                   operacao : integer;

var }

{ *** Principal parte do programa *** }
begin
  repeat
    clrscr;

{Comandos do programa}                        
                                                           
                                                           
    gotoxy (05,05); write ('        Banco Pascal');        
    gotoxy (05,06); write ('----------------------------');
    gotoxy (05,10); write ('       MENU PRINCIPAL       ');
    gotoxy (05,12); write ('----------------------------');

    gotoxy (13,14); write ('1 - Incluir');                
    gotoxy (13,15); write ('2 - Alterar');               
    gotoxy (13,16); write ('3 - Excluir');                
    gotoxy (13,17); write ('4 - Pesquisar');            
    gotoxy (13,18); write ('5 - Listar');                  
    gotoxy (13,19); write ('6 - Extrato');                
    gotoxy (13,20); write ('9 - Sair');                   
    gotoxy (10,22); write ('Digite a opcao: ');           
    val(readkey,op,erro);
    clrscr;
    case op of
      1: incluir;
      2: alterar;
      3: excluir;
      4: pesquisar;
      5: listar;
      6: begin
            gotoxy (26,19); writeln ('EM CONSTRUCAO'); readkey;
         end;
    end;
  until op = 9;
end.

Nenhum comentário:

Postar um comentário