#include #include #include #define MAXPROD 50 // Antiga declaracao de vetores independentes // char Produto[MAXPROD][30]; // int CodProd[MAXPROD]; // double Preco [MAXPROD]; // Criacao de um registro unico typedef struct { int CodProd; char Produto[80]; double Preco; } t_prod; // Declaracao do Vetor de Produtos // t_prod Tabela[MAXPROD]; t_prod *Tabela1; t_prod *Tabela2; char nomprod[80]; int codp; double pr; int continua=1; int total=0; int opcao; int achei; int i; // SUB-ROTINAS // INSERE int insere(void) { int totins; int i; printf("1 - Inserir dados\n"); printf("\n"); printf("Quantos dados deseja inserir? "); scanf ("%d",&totins); Tabela2=(t_prod *)calloc(totins,sizeof(t_prod)); for (i=0; i < totins; i++) { printf("Digite o codigo do produto: "); scanf("%d",&codp); printf("Digite o nome do produto : "); fflush(stdin); gets(nomprod); printf("Digite o preco do produto : "); scanf("%lf",&pr); strupr(nomprod); strcpy(Tabela2[i].Produto,nomprod); Tabela2[i].CodProd=codp; Tabela2[i].Preco=pr; } printf("> Adicionado\n"); printf("\n"); system("pause"); total=totins; return(totins); } // LISTAR void listar(totlido,totdigit) int totlido; int totdigit; { printf("2 - Listar dados\n"); printf("\n"); printf("Dados Lidos do Disco:\n"); for (i=0; i < totlido; i++) { printf("* Item : [%d]\n",i); printf(" Codigo : %d\n", Tabela1[i].CodProd); printf(" Produto: %s\n", Tabela1[i].Produto); printf(" Preco : %.2lf\n",Tabela1[i].Preco); } system("pause"); printf("Dados Digitados:\n"); for (i=0; i < totdigit; i++) { printf("* Item : [%d]\n",i); printf(" Codigo : %d\n", Tabela2[i].CodProd); printf(" Produto: %s\n", Tabela2[i].Produto); printf(" Preco : %.2lf\n",Tabela2[i].Preco); } system("pause"); } // CONSULTAR void consultar(void) { printf("3 - Consultar dados\n"); printf("\n"); printf("Digite o nome do produto procurado: "); fflush(stdin); gets(nomprod); achei=0; strupr(nomprod); for (i=0; i < total; i++) { if (strstr(Tabela2[i].Produto,nomprod) != 0) { printf("* Item : [%d]\n",i); printf("Codigo : %d\n", Tabela2[i].CodProd); printf("Produto: %s\n", Tabela2[i].Produto); printf("Preco : %.2lf\n",Tabela2[i].Preco); achei=1; } } if (!achei) printf("> Produto nao encontrado!\n"); printf("\n"); system("pause"); } // SALVAR void salvar(totlido,totdigit) int totlido; int totdigit; { FILE *Arq; printf("4 - Salvar dados\n"); printf("\n"); Arq=fopen("Dados.txt","wt"); if (Arq == NULL) printf (">> ERRO NO SALVAMENTO DO ARQUIVO!\n"); else { fprintf(Arq,"%d\n",totlido+totdigit); for (i=0; i < totlido; i++) { printf("* Item : [%d]\n",i); fprintf(Arq,"%d\n", Tabela1[i].CodProd); fprintf(Arq,"%s\n", Tabela1[i].Produto); fprintf(Arq,"%.2lf\n",Tabela1[i].Preco); } for (i=0; i < totdigit; i++) { printf("* Item : [%d]\n",i); fprintf(Arq,"%d\n", Tabela2[i].CodProd); fprintf(Arq,"%s\n", Tabela2[i].Produto); fprintf(Arq,"%.2lf\n",Tabela2[i].Preco); } fprintf(Arq,"-1"); printf(">> Arquivo Salvo!\n"); fclose(Arq); } printf("\n"); system("pause"); } // LER int ler(void) { FILE *Arq; int totdados; int i,j; printf("5 - Ler dados\n"); printf("\n"); Arq=fopen("Dados.txt","rt"); if (Arq == NULL) printf (">> ERRO NA LEITURA DO ARQUIVO!\n"); else { fscanf(Arq,"%d",&totdados); Tabela1=(t_prod *)calloc(totdados,sizeof(t_prod)); for (i=0; i < totdados; i++) { fscanf(Arq,"%d ",&Tabela1[i].CodProd); if (Tabela1[i].CodProd==-1) break; fgets(Tabela1[i].Produto,80,Arq); // Se tiver um '\n' na descricao do produto, remove for (j=0; j < strlen(Tabela1[i].Produto); j++) if (Tabela1[i].Produto[j]=='\n') Tabela1[i].Produto[j]=' '; fscanf(Arq,"%lf ",&(Tabela1[i].Preco)); printf("* Item Lido: [%d]\n",i); } printf(">> Arquivo Lido!\n"); fclose(Arq); } printf("\n"); system("pause"); return(totdados); } // // MAIN // void main(void) { int totlido=0; int totdigit=0; /* Menu da Aplicacao */ while (continua) { system("cls"); printf(">> Controle de Produtos <<\n"); printf("\n"); printf("Menu:\n"); printf("1 - Inserir dados\n"); printf("2 - Listar dados\n"); printf("3 - Consultar dados\n"); printf("4 - Salvar dados\n"); printf("5 - Ler dados\n"); printf("0 - Sair do programa\n"); printf("Digite sua opcao: "); scanf ("%d",&opcao); printf("\n"); switch(opcao) { case 1: totdigit=insere(); break; case 2: listar(totlido,totdigit); break; case 3: consultar(); break; case 4: salvar(totlido,totdigit); break; case 5: totlido=ler(); break; case 0: printf("Deseja mesmo sair (0=Nao,1=Sim)? "); scanf("%d",&opcao); if (opcao == 1) continua=0; break; default: printf ("> Opcao invalida!\n"); system("pause"); break; } } printf("\n"); system("PAUSE"); // return 0; }