Advertisement
MarceloSousa

Locacao

Dec 5th, 2013
307
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 8.35 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include "carro_locacao.h"
  5. #include "arquivos.h"
  6.  
  7.  void carro_locacao_menu(void) {
  8.     short int opcao_menu = 1;
  9.  
  10.  
  11.     while (opcao_menu != 0) {
  12.     clrscr();
  13.     mensagem_menu("LOCAÇÃO DE CARROS\n");
  14.     printf("  _____________________________\n");
  15.     printf("|| (1)Nossa Frota              ||\n");
  16.     printf("|| (2)Simulador de Tarifa      ||\n");
  17.     printf("|| (3)Locar Carro              ||\n");
  18.     printf("|| (0)Voltar Menu Principal    ||\n");
  19.     printf("||_____________________________||\n");
  20.     printf("Digite sua Opção: ");
  21.     scanf("%d",&opcao_menu);
  22.  
  23.     switch (opcao_menu) {
  24.          case 1: locacao_frota(); break;
  25.          case 2: locacao_tarifas(); break;
  26.          case 3: locacao_locar(); break;
  27.          case 0: main(); break;
  28.          default: mensagem("Opcao Inválida");
  29.     }
  30.   }
  31.  
  32. }
  33.  
  34. void locacao_frota(void){
  35.      FILE * p;
  36.      tcarro reg_carro;
  37.     clrscr();
  38.      printf("\nListagem de toda Frota\n");
  39.  
  40.      p = (FILE *) abre_arquivo("carro.dat");
  41.      if (p == NULL)
  42.          mensagem("Erro ao criar/abrir arquivo carro.dat");
  43.      else {
  44.          while (!feof(p)) {
  45.                fread(&reg_carro, sizeof(tcarro), 1, p);
  46.                if (!feof(p)){
  47.                     if(reg_carro.flag==0)
  48.                    printf("\n%5d %-30s %-20s %10.2f", reg_carro.id, reg_carro.nome, reg_carro.marca, reg_carro.valor);}
  49.          }
  50.          fclose(p);
  51.          mensagem("Fim da listagem");
  52.      }
  53.  
  54.  
  55. }
  56.  
  57. void locacao_tarifas(void){
  58.     short int listar,id,valid_id,dias,protecao;
  59.     float res_simulacao;
  60.     do{
  61.     clrscr();
  62.     mensagem_menu("SIMULAÇÃO DE TARIFAS");
  63.     printf("\n\nDeseja Visualizar nossa Frota?\n (1) SIM / (2) NÃO: ");
  64.     scanf("%d",&listar);
  65.     switch(listar){
  66.         case 1: carro_lista();break;
  67.         case 2: break;
  68.         default: mensagem("Opção Inválida");}} while(listar<1||listar>2);
  69.  
  70.     do {
  71.     clrscr();
  72.     mensagem_menu("SIMULAÇÃO DE TARIFAS");
  73.     printf("\n\nInforme o ID do Carro Desejado: ");
  74.     scanf("%i",&id);
  75.     valid_id=id_invalido(id);
  76.  
  77.     if(valid_id!=0)
  78.         mensagem("ID Inválido");
  79.  
  80.     }while (valid_id!=0);
  81.     clrscr();
  82.  
  83.  
  84.     mensagem_menu("SIMULAÇÃO DE TARIFAS");
  85.     printf("\n\n");
  86.     consulta_id(id);
  87.  
  88.     printf("Por Quantos Dias Deseja locar o Carro? ");
  89.     scanf("%d",&dias);
  90.     printf("\nDeseja Contratar alguma Proteção?");
  91.     printf("__________________________________\n");
  92.     printf("|         PROTEÇÕES               |\n");
  93.     printf("|(1) Gold Basic                   |\n");
  94.     printf("|(2) Gold Premium                 |\n");
  95.     printf("|(3) Gold Total                   |\n");
  96.     printf("|(4) Informação Sobre as Proteções|\n");
  97.     printf("|(0) Não Contratar Proteção       |\n");
  98.     printf("|_________________________________|\n");
  99.     printf("Informe Sua Opção: ");
  100.     scanf("%d",&protecao);
  101.     switch(protecao){
  102.         case 4: info_protecao();break;
  103.         case 0: carro_locacao_menu();break;
  104.     }
  105.     res_simulacao=calculo_tarifa(id,dias,protecao);
  106.     printf("Valor de Res: %.1f",res_simulacao);
  107.     getch();
  108.  
  109. }
  110.  
  111. void locacao_locar(void){
  112.  int id_cliente, id_carro,confirmacao_1,confirmacao_2,i,dias,protecao,valor_tarifa;
  113.     char cod_locacao[6];
  114.     FILE * p_carro, * p_cliente,  * p_locacao;
  115.     tcarro reg_carro;
  116.     tcliente reg_cliente;
  117.     tlocacao reg_locacao;
  118.  
  119.     srand(time(NULL));
  120.  
  121.     printf("informe o id do cliente\n");
  122.     scanf("%d",&id_cliente);
  123.  
  124.     p_cliente=fopen("cliente.dat","rb");
  125.     fseek(p_cliente,(id_cliente-1)*sizeof(tcliente),SEEK_SET);
  126.     fread(&reg_cliente,sizeof(tcliente),1,p_cliente);
  127.  
  128.     printf("informe o id do carro\n");
  129.     scanf("%d",&id_carro);
  130.  
  131.     p_carro=fopen("carro.dat","rb");
  132.     fseek(p_carro,(id_carro-1)*sizeof(tcarro),SEEK_SET);
  133.     fread(&reg_carro,sizeof(tcarro),1,p_carro);
  134.  
  135.     printf("Informe Por Quantos Dias Deseja Locar o Carro: ");
  136.     scanf("%d",&dias);
  137.  
  138.     printf("\nDeseja Contratar alguma Proteção?");
  139.     printf("|\n_________________________________|\n");
  140.     printf("|         PROTEÇÕES               |\n");
  141.     printf("|(1) Gold Basic                   |\n");
  142.     printf("|(2) Gold Premium                 |\n");
  143.     printf("|(3) Gold Total                   |\n");
  144.     printf("|(4) Informação Sobre as Proteções|\n");
  145.     printf("|(0) Não Contratar Proteção       |\n");
  146.     printf("|_________________________________|\n");
  147.  
  148.     printf("Informe Sua Opção: ");
  149.     scanf("%d",&protecao);
  150.  
  151.  
  152.     switch(protecao){
  153.         case 4: info_protecao();break;
  154.         case 0: carro_locacao_menu();break;}
  155.  
  156.     valor_tarifa= calculo_tarifa(id_carro,dias,protecao);
  157.  
  158.  
  159.  
  160.  
  161.     //p_locacao = fopen ("locacao.dat","wb+");
  162.  
  163.  
  164.     printf("Valor de id Cliente: %d\nValor de id Carro: %d\n",id_cliente,id_carro);
  165.     printf("Deseja Locar Este Carro (1) SIM / (2) NÃO");
  166.     scanf("%d",&confirmacao_1);
  167.  
  168.  
  169.     switch(confirmacao_1){
  170.  
  171.         case 1: {
  172.  
  173.                     p_locacao = (FILE *) abre_arquivo("locacao.dat");
  174.                      if (p_locacao == NULL)
  175.                          mensagem("Erro ao criar/abrir arquivo locacao.dat");
  176.                 reg_locacao.id_cliente = id_cliente;
  177.                 reg_locacao.id_carro = id_carro;
  178.                 for(i=0;i<=strlen(reg_carro.nome);i++){
  179.                 reg_locacao.nome_carro[i] = reg_carro.nome[i];}
  180.                 for(i=0;i<=strlen(reg_carro.marca);i++){
  181.                 reg_locacao.marca_carro[i] = reg_carro.marca[i];}
  182.                 reg_locacao.dias = dias;
  183.                 reg_locacao.protecao = protecao;
  184.                 reg_locacao.valor = valor_tarifa;
  185.                 reg_locacao.flag = 1;
  186.  
  187.  
  188.                 printf("\nConfirma a Locação (1)SIM / (2)NÃO: ");
  189.                 scanf("%d",&confirmacao_2);
  190.                 switch(confirmacao_2){
  191.  
  192.                     case 1:
  193.                            
  194.                             fseek(p_locacao, 0L, SEEK_END);
  195.                             fwrite(&reg_locacao, sizeof(tlocacao), 1, p_locacao);
  196.                             //printf("id_cliente: %d\nid_carro: %d\nnome_carro: %s\nmarca_carro: %s\ndias: %d\nprotecao: %d\nflag: %d\nvalor: %f\n",reg_locacao.id_cliente,reg_locacao.id_carro,reg_locacao.nome_carro,reg_locacao.marca_carro,reg_locacao.dias,reg_locacao.protecao,reg_locacao.flag,reg_locacao.valor);
  197.                             //getch();
  198.                             fclose(p_locacao);
  199.                             mensagem("Locação Concluída com Sucesso!");break;
  200.  
  201.                     case 2:
  202.                             mensagem("Locação Não Confirmada");
  203.                             carro_locacao_menu();break;
  204.  
  205.                     default: mensagem("Opção Inválida!");}
  206.  
  207.  
  208.                 }
  209.  
  210.     }}
  211. float calculo_tarifa(int id, int dias , int protecao){
  212.     float valor_tarifa,val_protecao;
  213.     tcarro reg_carro;
  214.     FILE * p;
  215.  
  216.     switch(protecao){
  217.         case 1 : val_protecao = 33.9 ; break ;
  218.         case 2 : val_protecao = 48.9 ; break ;
  219.         case 3 : val_protecao = 57.9 ; break ;
  220.     }
  221.     p = fopen("carro.dat","rb");
  222.     fseek(p,(id-1)*sizeof(tcarro),SEEK_SET);
  223.     fread(&reg_carro,sizeof(tcarro),1,p);
  224.     valor_tarifa = (reg_carro.valor + val_protecao) * dias;
  225.  
  226.     fclose(p);
  227.  
  228.     return valor_tarifa;
  229. }
  230. void info_protecao(void){
  231.     clrscr();
  232.     printf("PROTEÇÃO GOLD BASIC\n");
  233.     printf("Cobertura do veículo em casos de colisão, \ndevendo o Locatário participar com \nno máximo de:R$ 2.000,00\ne nos casos de roubo, furto, incêndio ou perda\ntotal, devendo o Locatário participar\ncom no máximo de:R$ 3.000,00");
  234.     printf("\n\n\nPROTEÇÃO GOLD PREMIUM\n");
  235.     printf("Cobertura do veículo em casos de colisão, \ndevendo o Locatário participar com \nno máximo de:R$ 1.500,00\ne nos casos de roubo, furto, incêndio ou perda\n total, devendo o Locatário participar\n com no máximo de:R$ 2.000,00");
  236.      printf("\n\n\nPROTEÇÃO GOLD TOTAL\n");
  237.     printf(" Cobertura do veículo em casos de colisão, \ndevendo o Locatário participar com \nno máximo de:R$ 2.000,00\ne nos casos de roubo, furto, incêndio ou perda\n total, devendo o Locatário participar\n com no máximo de:R$ 3.000,00\nCobertura a terceiros: Danos Materiais R$ 20.000,00,\n Danos pessoais R$ 50.000,00 devendo o Locatário \nparticipar com no máximo de :R$ 1.000,00");
  238. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement