Leal9001

trabfinal5.c

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