Leal9001

trabfinal3

Dec 13th, 2014
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 13.00 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include <time.h>
  5.  
  6. typedef struct produto {
  7.         int id;
  8.         int categoria;
  9.         char modelo [20];
  10.         float preco;
  11.         int desconto;
  12.         char seccao;
  13.         int num;
  14. } Produto;
  15.  
  16. typedef struct {
  17.         int dia, mes, ano;
  18. } data_fat;
  19.  
  20. typedef struct {
  21.         int id_fat;
  22.         int nif;
  23.         char nome [50];
  24.         int id_prod;
  25.         int valor;
  26.         data_fat data;
  27. } fatura;
  28.  
  29. void abrir_loja (Produto *ptr) {
  30.         FILE *ptr_f;
  31.         char stock[100]="stock.txt";
  32.         ptr_f = fopen(stock,"r");
  33.         int i[14];
  34.         int a1;
  35.         int a2;
  36.         char a3 [20];
  37.         float a4;
  38.         int a5;
  39.         char a6;
  40.         int a7;
  41.         while(!feof(ptr_f)) {
  42.                 fscanf(ptr_f," %d %d %s %f %d %c", &a1, &a2, a3, &a4, &a5, &a6);
  43.                 switch(a1) {
  44.                     case 1: ptr[0].num = i[0]++; break;
  45.                     case 2: (ptr[1]).num = i[1]++; break;
  46.                     case 3: (ptr[2]).num = i[2]++; break;
  47.                     case 4: (ptr[3]).num = i[3]++; break;
  48.                     case 5: (ptr[4]).num = i[4]++; break;
  49.                     case 6: (ptr[5]).num = i[5]++; break;
  50.                     case 7: (ptr[6]).num = i[6]++; break;
  51.                     case 8: (ptr[7]).num = i[7]++; break;
  52.                     case 9: (ptr[8]).num = i[8]++; break;
  53.                     case 10: (ptr[9]).num = i[9]++; break;
  54.                     case 11: (ptr[10]).num = i[10]++; break;
  55.                     case 12: (ptr[11]).num = i[11]++; break;
  56.                     case 13: (ptr[12]).num = i[12]++; break;
  57.                     case 14: (ptr[13]).num = i[13]++; break;
  58.                     case 15: (ptr[14]).num = i[14]++; break;
  59.                 }
  60.         }
  61.        
  62.     fclose(ptr_f);
  63. }
  64.  
  65.  
  66. void ver_catalogo(int c1, Produto *ptr) {
  67.  
  68.                      switch(c1) {
  69.                     case 1: printf("1 - Mesa %s - %.2f€ com %d%% de Desconto = %3.2f€ - Secção %c\n", ptr[0].modelo, ptr[0].preco, ptr[0].desconto, (ptr[0].preco-((ptr[0].preco)*(ptr[0].desconto))/100), ptr[0].seccao);
  70.                             printf("2 - Mesa %s - %.2f€ com %d%% de Desconto = %3.2f€ - Secção %c\n", ptr[1].modelo, ptr[1].preco, ptr[1].desconto,(ptr[1].preco-((ptr[1].preco)*(ptr[1].desconto))/100) , ptr[1].seccao);
  71.                             printf("3 - Mesa %s - %.2f€ com %d%% de Desconto = %3.2f€ - Secção %c\n\n", ptr[2].modelo, ptr[2].preco, ptr[2].desconto,(ptr[2].preco-((ptr[2].preco)*(ptr[2].desconto))/100) , ptr[2].seccao); break;
  72.  
  73.                     case 2:  printf("1 - Cadeira %s - %.2f€ com %d%% de Desconto = %.2f€ - Secção %c\n", ptr[3].modelo, ptr[3].preco, ptr[3].desconto,(ptr[3].preco-((ptr[3].preco)*(ptr[3].desconto))/100) , ptr[3].seccao);
  74.                              printf("2 - Cadeira %s - %.2f€ com %d%% de Desconto = %.2f€ - Secção %c\n", ptr[4].modelo, ptr[4].preco, ptr[4].desconto, (ptr[4].preco-((ptr[4].preco)*(ptr[4].desconto))/100), ptr[4].seccao);
  75.                              printf("3 - Cadeira %s - %.2f€ com %d%% de Desconto = %.2f€ - Secção %c\n\n", ptr[5].modelo, ptr[5].preco, ptr[5].desconto,(ptr[5].preco-((ptr[5].preco)*(ptr[5].desconto))/100) , ptr[5].seccao); break;
  76.  
  77.                     case 3:  printf("1 - Cama %s - %.2f€ com %d%% de Desconto = %.2f€ - Secção %c\n", ptr[6].modelo, ptr[6].preco, ptr[6].desconto,(ptr[6].preco-((ptr[6].preco)*(ptr[6].desconto))/100) , ptr[6].seccao);
  78.                              printf("2 - Cama %s - %.2f€ com %d%% de Desconto = %.2f€ - Secção %c\n", ptr[7].modelo, ptr[7].preco, ptr[7].desconto,(ptr[7].preco-((ptr[7].preco)*(ptr[7].desconto))/100) , ptr[7].seccao);
  79.                              printf("3 - Cama %s - %.2f€ com %d%% de Desconto = %.2f€ - Secção %c\n\n", ptr[8].modelo, ptr[8].preco, ptr[8].desconto,(ptr[8].preco-((ptr[8].preco)*(ptr[8].desconto))/100) , ptr[8].seccao); break;
  80.  
  81.                     case 4:  printf("1 - Roupeiro %s - %.2f€ com %d%% de Desconto = %.2f€ - Secção %c\n", ptr[9].modelo, ptr[9].preco, ptr[9].desconto, (ptr[9].preco-((ptr[9].preco)*(ptr[9].desconto))/100), ptr[9].seccao);
  82.                              printf("2 - Roupeiro %s - %.2f€ com %d%% de Desconto = %.2f€ - Secção %c\n", ptr[10].modelo, ptr[10].preco, ptr[10].desconto,(ptr[10].preco-((ptr[10].preco)*(ptr[10].desconto))/100) , ptr[10].seccao);
  83.                              printf("3 - Roupeiro %s - %.2f€ com %d%% de Desconto = %.2f€ - Secção %c\n\n", ptr[11].modelo, ptr[11].preco, ptr[11].desconto, (ptr[11].preco-((ptr[11].preco)*(ptr[11].desconto))/100), ptr[11].seccao); break;
  84.  
  85.                     case 5:  printf("1 - Armário %s - %.2f€ com %d%% de Desconto = %.2f€ - Secção %c\n", ptr[12].modelo, ptr[12].preco, ptr[12].desconto,(ptr[12].preco-((ptr[12].preco)*(ptr[12].desconto))/100) , ptr[12].seccao);
  86.                              printf("2 - Armário %s - %.2f€ com %d%% de Desconto = %.2f€ - Secção %c\n", ptr[13].modelo, ptr[13].preco, ptr[13].desconto,(ptr[13].preco-((ptr[13].preco)*(ptr[13].desconto))/100) , ptr[13].seccao);
  87.                              printf("3 - Armário %s - %.2f€ com %d%% de Desconto = %.2f€ - Secção %c\n\n", ptr[14].modelo, ptr[14].preco, ptr[14].desconto,(ptr[14].preco-((ptr[14].preco)*(ptr[14].desconto))/100), ptr[14].seccao); break;
  88.  
  89.                     case 6:  printf("1 - Mesa %s - %.2f€ com %d%% de Desconto = %3.2f€ - Secção %c\n", ptr[0].modelo, ptr[0].preco, ptr[0].desconto,(ptr[0].preco-((ptr[0].preco)*(ptr[0].desconto))/100) , ptr[0].seccao);
  90.                              printf("2 - Mesa %s - %.2f€ com %d%% de Desconto = %3.2f€ - Secção %c\n", ptr[1].modelo, ptr[1].preco, ptr[1].desconto,(ptr[1].preco-((ptr[1].preco)*(ptr[1].desconto))/100) , ptr[1].seccao);
  91.                              printf("3 - Mesa %s - %.2f€ com %d%% de Desconto = %3.2f€ - Secção %c\n\n", ptr[2].modelo, ptr[2].preco, ptr[2].desconto, (ptr[2].preco-((ptr[2].preco)*(ptr[2].desconto))/100), ptr[2].seccao);
  92.                              printf("4 - Cadeira %s - %.2f€ com %d%% de Desconto = %.2f€ - Secção %c\n", ptr[3].modelo, ptr[3].preco, ptr[3].desconto,(ptr[3].preco-((ptr[3].preco)*(ptr[3].desconto))/100) , ptr[3].seccao);
  93.                              printf("5 - Cadeira %s - %.2f€ com %d%% de Desconto = %.2f€ - Secção %c\n", ptr[4].modelo, ptr[4].preco, ptr[4].desconto,(ptr[4].preco-((ptr[4].preco)*(ptr[4].desconto))/100) , ptr[4].seccao);
  94.                              printf("6 - Cadeira %s - %.2f€ com %d%% de Desconto = %.2f€ - Secção %c\n\n", ptr[5].modelo, ptr[5].preco, ptr[5].desconto,(ptr[5].preco-((ptr[5].preco)*(ptr[5].desconto))/100) , ptr[5].seccao);
  95.                              printf("7 - Cama %s - %.2f€ com %d%% de Desconto = %.2f€ - Secção %c\n", ptr[6].modelo, ptr[6].preco, ptr[6].desconto,(ptr[6].preco-((ptr[6].preco)*(ptr[6].desconto))/100) , ptr[6].seccao);
  96.                              printf("8 - Cama %s - %.2f€ com %d%% de Desconto = %.2f€ - Secção %c\n", ptr[7].modelo, ptr[7].preco, ptr[7].desconto, (ptr[7].preco-((ptr[7].preco)*(ptr[7].desconto))/100), ptr[7].seccao);
  97.                              printf("9 - Cama %s - %.2f€ com %d%% de Desconto = %.2f€ - Secção %c\n\n", ptr[8].modelo, ptr[8].preco, ptr[8].desconto,(ptr[8].preco-((ptr[8].preco)*(ptr[8].desconto))/100) , ptr[8].seccao);
  98.                              printf("10 - Roupeiro %s - %.2f€ com %d%% de Desconto = %.2f€ - Secção %c\n", ptr[9].modelo, ptr[9].preco, ptr[9].desconto,(ptr[9].preco-((ptr[9].preco)*(ptr[9].desconto))/100) , ptr[9].seccao);
  99.                              printf("11 - Roupeiro %s - %.2f€ com %d%% de Desconto = %.2f€ - Secção %c\n", ptr[10].modelo, ptr[10].preco, ptr[10].desconto, (ptr[10].preco-((ptr[10].preco)*(ptr[10].desconto))/100), ptr[10].seccao);
  100.                              printf("12 - Roupeiro %s - %.2f€ com %d%% de Desconto = %.2f€ - Secção %c\n\n", ptr[11].modelo, ptr[11].preco, ptr[11].desconto,(ptr[11].preco-((ptr[11].preco)*(ptr[11].desconto))/100) , ptr[11].seccao);
  101.                              printf("13 - Armário %s - %.2f€ com %d%% de Desconto = %.2f€ - Secção %c\n", ptr[12].modelo, ptr[12].preco, ptr[12].desconto,(ptr[12].preco-((ptr[12].preco)*(ptr[12].desconto))/100) , ptr[12].seccao);
  102.                              printf("14 - Armário %s - %.2f€ com %d%% de Desconto = %.2f€ - Secção %c\n", ptr[13].modelo, ptr[13].preco, ptr[13].desconto,(ptr[13].preco-((ptr[13].preco)*(ptr[13].desconto))/100) , ptr[13].seccao);
  103.                              printf("15 - Armário %s - %.2f€ com %d%% de Desconto = %.2f€ - Secção %c\n\n", ptr[14].modelo, ptr[14].preco, ptr[14].desconto, (ptr[14].preco-((ptr[14].preco)*(ptr[14].desconto))/100), ptr[14].seccao); break;
  104.  
  105.                             }
  106.                  }
  107.  
  108. void efetuar_compra(Produto *ptr, fatura *fat) {
  109.      int c1, c2, i=0, j, fnif;
  110.      float fvalor;
  111.      char c3, c4, fnome[50];
  112.      printf("Qual é o seu NIF? "); scanf("%d", &fnif);
  113.      printf("\nEm que nome pretende deixar esta fatura? "); gets(fnome);
  114.      while ((c3 != 'N' || c3 != 'n')) {          
  115.            printf("\nDe que categoria deseja comprar?\n1 - Mesas\n2 - Cadeiras\n3 - Camas\n4 - Roupeiros\n5 - Armários\n"); scanf("%d", &c1);
  116.            ver_catalogo(c1, ptr);
  117.            printf("Escolha o numero do produto: "); scanf("%d", &c2);
  118.            printf("Pretende efetuar outra compra?\nS - Sim\nN - Não\n"); scanf("%c", &c3);
  119.            fat[i].nif = fnif;
  120.            fat[i].nome = &fnome;
  121.            fat[i].id_fat++;
  122.            fat[i].id_prod = c1*3-3+c2;
  123.            fat[i].valor = (ptr[fat[i].id_prod-1].preco-((ptr[fat[i].id_prod-1].preco)*(ptr[fat[i].id_prod-1].desconto))/100);
  124.            fat[i].data.dia = 13; fat[i].data.dia = 12; fat[i].data.dia = 14;
  125.            i++;
  126.            
  127.            if(c3 == 'N' || c3 == 'n') j=i;
  128.      }
  129.      for (i=0;i=j;i++) {
  130.          printf("%d %d %s %d %.2f %d-%d-%d\n", fat[i].id_fat, fat[i].nif, fat[i].nome, fat[i].id_prod, fat[i].valor, fat[i].data.dia, fat[i].data.mes, fat[i].data.ano);
  131.          fvalor = fvalor + fat[i].valor;
  132.      }
  133.      printf("O valor total da sua compra é de %.2f euros. Deseja continuar?\nS - Sim\nN - Não\n", fvalor); scanf("%c", &c4);
  134. }
  135.  
  136. main() {
  137.        
  138.         char escolha, a;
  139.         int i,c1;
  140.         Produto basededados[15] = {{1, 1, "Inverno", 29.90, 0, 'A', 0},
  141.                       {2, 1, "Verao" ,19.90, 0 ,'A', 0},
  142.                       {3, 1, "Primavera", 14.90 ,5 ,'B', 0},
  143.                       {4, 2, "Fashion", 59.90, 0, 'A', 0},
  144.                       {5, 2, "Cool", 39.90, 10, 'C', 0},
  145.                       {6, 2, "Awesome", 49.90, 30, 'C', 0},
  146.                       {7, 3, "Baixa", 119.90, 0, 'D', 0},
  147.                       {8, 3, "Media", 169.90, 0, 'E', 0},
  148.                       {9, 3, "Alta", 259.90, 15, 'F', 0},
  149.                       {10, 4, "Europeu", 129.90, 50, 'G', 0},
  150.                       {11, 4, "Asiatico", 699.90 , 0,'H', 0},
  151.                       {12, 4, "Americano", 399.90, 0, 'I', 0},
  152.                       {13, 5, "Madeira", 219.90, 0, 'J', 0},
  153.                       {14, 5, "Plastico", 59.90, 25, 'K', 0},
  154.                       {15, 5, "Metal", 159.90, 0, 'N', 0}
  155.                    };
  156.         fatura dadosfatura[50];
  157.         abrir_loja(basededados);
  158.         do {
  159.                
  160.                 printf("\n***** YKEA - Cliente *****\n");
  161.                 printf("1 - Ver Catalogo\n");
  162.                 printf("2 - Efetuar Compra\n");
  163.                 printf("3 - Histórico de Compras\n");
  164.                 printf("4 - Promoções\n");
  165.                 printf("5 - Mapa da Loja\n");
  166.                 printf("S - Sair\n");
  167.                 printf("A - Modo Admin\n");
  168.                 printf("**************************\n\n");
  169.                 printf("O que deseja fazer? (use o número ou a letra correspondente do menu)\n");
  170.                 scanf(" %c", &escolha);
  171.        
  172.                 switch(escolha){
  173.                         case '1':
  174.                      printf("Que categoria deseja ver:\n1 - Mesas\n2 - Cadeiras\n3 - Camas\n4 - Roupeiros\n5 - Armários\nT - Todos\n");
  175.                      scanf("%d", &c1);
  176.                              ver_catalogo(c1, basededados);
  177.                         break;
  178.                                          
  179.                         case '2': efetuar_compra(basededados, dadosfatura);
  180.                              break;
  181.                                          
  182.                         case '3': break;
  183.                                          
  184.                         case '4': break;
  185.                        
  186.                         case '5': break;
  187.                        
  188.                         case 's':
  189.                         case 'S': break;
  190.                        
  191.                         case 'a':
  192.                         case 'A': break;
  193.                         default : printf("Opção Inválida\n"); break;
  194.                
  195.                 }
  196.  
  197.                 printf("Deseja fazer outra operação? (s=sim/n=não)\n");
  198.                 scanf(" %c", &a);      
  199.         }
  200.         while(a!='n');
  201. }
Advertisement
Add Comment
Please, Sign In to add comment