Locadora de Veículos


program LocadoraDeVeiculos;
//registro carro
      type dados_carro = record
      modelo: string;
      marca: string;
      valor_diaria: real;
      situacao: string;
      cliente_atual: string;
      quantidade_diarias: integer;
      end;
     
      type dados_cliente = record
      codigo: integer;
      nome: string;
      telefone: integer;
      end;

      var carro: array [1..30] of dados_carro;
      cliente: array[1..50] of dados_cliente;
      n,posicao: integer;
      opc: char;
      temp_modelo: string;
      total:real;
      opc_final: integer;

      procedure Menu;
      begin
            writeln (' ____________________________');
            writeln ('|     ALUGUEL DE CARROS     |');
            writeln ('|                           |');
            writeln ('| 1 - CADASTRO DE VEICULOS  |');
            writeln ('| 2 - SAIDA DE VEICULOS     |');
            writeln ('| 3 - DEVOLUCAO DE VEICULOS |');
            writeln ('| 4 - SAIR DO PROGRAMA      |');
            writeln ('|___________________________|');
            readln (opc);
      end;

      procedure Entrada;
      begin

            //inicializando o vetor na posicao 1
            carro[1].modelo:='';
            carro[1].marca:='';
            carro[1].valor_diaria:=0;
            carro[1].cliente_atual:='';
            carro[1].situacao:='Disponivel';
            carro[1].quantidade_diarias:=0;


            for n:=1 to 30 do
            begin
                  writeln ('___________','Carro', n, '___________');
                  writeln ('Modelo:');
                  readln (carro[n].modelo);
                  writeln ('Marca:');
                  readln (carro[n].marca);
                  writeln ('Valor da Diaria');
                  readln (carro[n].valor_diaria);
                  carro[n].situacao:='Disponivel';
                  carro[n].cliente_atual:='';
                  carro[n].quantidade_diarias:=0;
            end;

            for n:=n+1 to 30 do
            begin
                  carro[n+1].modelo:='';
                  carro[n+1].marca:='';
                  carro[n+1].valor_diaria:=0;
                  carro[n+1].cliente_atual:='';
                  carro[n+1].situacao:='Disponivel';
                  carro[n+1].quantidade_diarias:=0;
            end;


            writeln ('Tecle enter para voltar ao Menu Inicial');


      end;



      procedure Saida;
      begin
     
         Writeln ('Modelo do Carro:');
         readln (temp_modelo);

         for n:=1 to 30 do
         begin
                  if (carro[n].situacao='Disponivel') and (temp_modelo=carro[n].modelo) then
                                          begin

                                          Writeln ('Cliente');
                                          readln (carro[n].cliente_atual);
                                          Writeln ('Quantidade de Diarias');
                                          readln (carro[n].quantidade_diarias);
                                          carro[n].situacao:='Alugado';
                                          end;

       if (carro[n].situacao='Alugado') and (temp_modelo=carro[n].modelo) then
       begin
       writeln ('Carro Alugado!');
            end;
  end;

   end;

      function produto(a: real; var b: integer):real;
            begin
                  produto:=a*b;
            end;

      procedure Devolucao;
      begin //inicio do procedimento
            Writeln ('Digite o modelo');
            readln (temp_modelo);

            for posicao:=1 to 30 do
            begin
                  if (temp_modelo=carro[posicao].modelo) then
                  begin

                        writeln ('Cliente:',carro[posicao].cliente_atual);
                        writeln ('Modelo: ', carro[posicao].modelo);
                        total:= produto(carro[posicao].valor_diaria , carro[posicao].quantidade_diarias);
                        writeln ('Valor total: ', total:2:2);
                        carro[posicao].situacao := 'Disponivel';
                        carro[posicao].cliente_atual:= '';
                        carro[posicao].quantidade_diarias:=0;
                        writeln ('Saida de carro concluida com sucesso!');
                  end;
            end;


      end;


 procedure Sair;
 begin
        writeln (' ____________________________');
            writeln ('|          OBRIGADO!        |');
            writeln ('|                           |');
            writeln ('| Desenvolvido por:         |');
            writeln ('| Matheus Luiz              |');
            writeln ('| Thalles Martins           |');
            writeln ('| Thiago Almeida            |');
            writeln ('|                           |');
            writeln ('|       GRUPO ZURIQUE       |');
            writeln ('|WWW.ZURIQUEAED.BLOGSPOT.COM|');
            writeln ('|                           |');
            writeln ('|   TWITTER: @zuriqueaqed   |');
            writeln ('|___________________________|');
        writeln ('');
        writeln ('Tecle qualquer letra para sair');
        readln; //funcao do Pascal para fechar.
       halt;
  end;



begin //inicio do programa principal
            opc_final:=0;
            repeat
                        Menu;
                        case (opc) of
                              '1': Entrada; //chama o procedimento Entrada
                              '2': Saida; //chama procedimento Saida
                              '3':Devolucao; //chama o procedimento Devolucao
                              '4': Sair; //chama o procedimento Sair
                        end;

            until opc_final<>0;
end. //fim do programa principal