Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <time.h>
- typedef struct produto {
- int id;
- int categoria;
- char modelo [20];
- float preco;
- int desconto;
- char seccao;
- int num;
- } Produto;
- typedef struct {
- int dia, mes, ano;
- } data_fat;
- typedef struct {
- int id_fat;
- int nif;
- char nome[50];
- int id_prod;
- float valor;
- data_fat data;
- } fatura;
- void abrir_loja (Produto *ptr) {
- FILE *ptr_f;
- char stock[100]="stock.txt";
- ptr_f = fopen(stock,"r");
- int i[14];
- int a1;
- int a2;
- char a3 [20];
- float a4;
- int a5;
- char a6;
- int a7;
- while(!feof(ptr_f)) {
- fscanf(ptr_f," %d %d %s %f %d %c", &a1, &a2, a3, &a4, &a5, &a6);
- switch(a1) {
- case 1: ptr[0].num = i[0]++; break;
- case 2: (ptr[1]).num = i[1]++; break;
- case 3: (ptr[2]).num = i[2]++; break;
- case 4: (ptr[3]).num = i[3]++; break;
- case 5: (ptr[4]).num = i[4]++; break;
- case 6: (ptr[5]).num = i[5]++; break;
- case 7: (ptr[6]).num = i[6]++; break;
- case 8: (ptr[7]).num = i[7]++; break;
- case 9: (ptr[8]).num = i[8]++; break;
- case 10: (ptr[9]).num = i[9]++; break;
- case 11: (ptr[10]).num = i[10]++; break;
- case 12: (ptr[11]).num = i[11]++; break;
- case 13: (ptr[12]).num = i[12]++; break;
- case 14: (ptr[13]).num = i[13]++; break;
- case 15: (ptr[14]).num = i[14]++; break;
- }
- }
- fclose(ptr_f);
- }
- void catalogo (int c1, Produto *ptr) {
- switch(c1) {
- 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);
- 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);
- 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;
- 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);
- 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);
- 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;
- 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);
- 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);
- 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;
- 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);
- 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);
- 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;
- 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);
- 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);
- 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;
- 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);
- 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);
- 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);
- 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);
- 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);
- 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);
- 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);
- 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);
- 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);
- 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);
- 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);
- 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);
- 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);
- 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);
- 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;
- default:
- printf("Inseriu uma opcao invalida\n");break;
- }
- }
- void ver_catalogo( Produto *ptr) {
- int c1;
- printf("Que categoria deseja ver:\n1 - Mesas\n2 - Cadeiras\n3 - Camas\n4 - Roupeiros\n5 - Armários\n6 - Todos\n");
- scanf("%d", &c1);
- catalogo(c1, ptr);
- }
- void efetuar_compra(Produto *ptr, fatura *fat) {
- int c1, c2, i=0, j, fnif;
- float fvalor;
- char c3, c4, fnome;
- fat[-1].id_fat= 2026;
- printf("Qual e o seu NIF? "); scanf("%d", &fnif);
- printf("\nEm que nome pretende deixar esta fatura? ");
- scanf("%s",(*fat).nome);
- do {
- printf("\nDe que categoria deseja comprar?\n1 - Mesas\n2 - Cadeiras\n3 - Camas\n4 - Roupeiros\n5 - Armários\n"); scanf("%d", &c1);
- catalogo(c1, ptr);
- printf("Escolha o numero do produto: "); scanf("%d", &c2);
- printf("Pretende efetuar outra compra?\nS - Sim\nN - Nao\n"); scanf(" %c", &c3);
- fat[i].nif = fnif;
- fat[i].id_fat = (fat[i-1].id_fat )+1;
- fat[i].id_prod = c1*3-3+c2;
- 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);
- (*fat).data.dia = 13; (*fat).data.dia = 12; (*fat).data.dia = 14;
- i++;
- ptr[(fat[i].id_prod)-1].num--;
- if((c3 == 'N') || (c3 == 'n')) j=i;
- }
- while ((c3 != 'N') && (c3 != 'n')) ;
- printf("\n FACTURA: \n");
- fvalor = 0;
- for (i=0;i<j;i++) {
- printf("%d %d %s %d %.2f \n", fat[i].id_fat, fat[i].nif, (*fat).nome, fat[i].id_prod, fat[i].valor );
- fvalor = fvalor + fat[i].valor;
- }
- printf("\nO valor total da sua compra e de %0.2f euros.\n\n", fvalor);
- }
- void fechar_loja(Produto *ptr) {
- printf("cenas");
- FILE *ptr_f;
- char stock[100]="stock.txt";
- ptr_f = fopen(stock,"w");
- int i, j;
- for (i=0;i<15;i++) {
- 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);
- }
- fclose(ptr_f);
- exit(1);
- }
- main() {
- char escolha, a;
- int i,c1;
- Produto basededados[15] = {{1, 1, "Inverno", 29.90, 0, 'A', 0},
- {2, 1, "Verao" ,19.90, 0 ,'A', 0},
- {3, 1, "Primavera", 14.90 ,5 ,'B', 0},
- {4, 2, "Fashion", 59.90, 0, 'A', 0},
- {5, 2, "Cool", 39.90, 10, 'C', 0},
- {6, 2, "Awesome", 49.90, 30, 'C', 0},
- {7, 3, "Baixa", 119.90, 0, 'D', 0},
- {8, 3, "Media", 169.90, 0, 'E', 0},
- {9, 3, "Alta", 259.90, 15, 'F', 0},
- {10, 4, "Europeu", 129.90, 50, 'G', 0},
- {11, 4, "Asiatico", 699.90 , 0,'H', 0},
- {12, 4, "Americano", 399.90, 0, 'I', 0},
- {13, 5, "Madeira", 219.90, 0, 'J', 0},
- {14, 5, "Plastico", 59.90, 25, 'K', 0},
- {15, 5, "Metal", 159.90, 0, 'N', 0}
- };
- fatura dadosfatura[50];
- abrir_loja(basededados);
- do {
- printf("\n***** YKEA - Cliente *****\n" );
- printf("1 - Ver Catalogo\n");
- printf("2 - Efetuar Compra\n");
- printf("3 - Historico de Compras\n");
- printf("4 - Promocoes\n");
- printf("5 - Mapa da Loja\n");
- printf("S - Sair\n");
- printf("A - Modo Admin\n");
- printf("**************************\n\n");
- printf("O que deseja fazer? (use o numero ou a letra correspondente do menu)\n");
- scanf(" %c", &escolha);
- switch(escolha){
- case '1': ver_catalogo( basededados);
- break;
- case '2':efetuar_compra(basededados, dadosfatura);
- break;
- case '3': break;
- case '4': break;
- case '5': break;
- case 's':
- case 'S': printf("cenas"); fechar_loja(basededados); break;
- case 'a':
- case 'A': break;
- default : printf("Operacao Invalida\n"); break;
- }
- printf("Deseja fazer outra operacao? (s=sim/n=não)\n");
- scanf(" %c", &a);
- }
- while(a!='n');
- }
Advertisement
Add Comment
Please, Sign In to add comment