JorelFerreira00

mercado.c

Dec 31st, 2018
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.39 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <locale.h>
  5.  
  6. //ESTRUTURA CRIADA PARA ASSOCIAR AS INFORMAÇÕES DE UM PRODUTO(PRODUTO = NOME, PRECO E CODIGO)
  7. typedef struct produtos{
  8.     char nome[10];
  9.     float preco;
  10.     int codigo;
  11. }Produtos;
  12.  
  13. //FUNCAO MENU - PRINTA O MENU NA TELA E LE A OPCAO ESCOLHIDA PELO USUARIO(RETORNA ESSA OPCAO)
  14. int menu(){
  15.     int op;
  16.     printf("\t1 - Cadastrar produto\n");
  17.     printf("\t2 - Realizar compras\n");
  18.     printf("\t3 - Excluir produto\n");
  19.     printf("\t4 - Consultar produto\n");
  20.     printf("\t0 - Sair\n");
  21.     printf("Opção: ");
  22.     scanf("%d", &op);
  23.     return op;
  24. }
  25.  
  26. int main(){
  27.   //variaveis
  28.     Produtos *produto;                                                          //MEMORIA PRINCIPAL - ponteiro para os produtos, cada produto te seu codigo, nome e preco
  29.     FILE *arq;                                                                  //MEMORIA SECUNDARIA(HD) - arquivo de catalogo de produtos
  30.     int op = -1;                                                                //opcao escolhida pelo usuario no MENU
  31.     int quant_prod = 1;                                                         //quantidade de produtos cadastrados
  32.   //setup
  33.     setlocale(LC_ALL, "");                                                      //definindo o local do prog para o especificado pelo SO do usuario
  34.     produto = (Produtos *) malloc(sizeof(Produtos));                            //alocando espaco na memoria principal para o primeiro produto
  35.     if(produto==NULL){                                                          //testando se alocou o espaco de memoria
  36.         printf("Erro 404 - Não foi possível alocar memória para o produto\n");
  37.     }
  38.     arq = fopen("Catalogo.txt", "r");                                           //abrindo o arquivo catalogo em modo leitura
  39.     if(arq==NULL){                                                              //testando se arquivo foi aberto    
  40.         printf("Não foi possível acessar o caxtalogo de produtos!\n");
  41.     }else{
  42.         while(!feof(arq)){                                                      //carregando informacoes do arq (memoria secundaria) nas suas variaveis(memoria principal)
  43.             fscanf(arq, "%d", &produto[quant_prod-1].codigo);
  44.             fscanf(arq, "%s", produto[quant_prod-1].nome);
  45.             fscanf(arq, "%f", &produto[quant_prod-1].preco);
  46.             quant_prod++;
  47.         }
  48.     }
  49.     fclose(arq);                                                                //fechando arq
  50.   //run
  51.     while(op!=0){
  52.         setbuf(stdin, NULL);                                                    //limpando o buffer para a entrada do teclado
  53.         op = menu();                                                            //printando o menu e lendo a opcao escolhida pelo usuario
  54.         switch(op){
  55.             case 0:
  56.                 break;
  57.           /*CADASTRAR NOVO PRODUTO*/
  58.             case 1:
  59.                 produto = (Produtos *) realloc(produto, quant_prod*sizeof(Produtos));   //realocando a memoria para os produtos
  60.                 printf("Digite o nome do produto: ");                                   //lendo informações do novo produto...
  61.                 scanf("%s", produto[quant_prod-1].nome);
  62.                 printf("Digite o codigo do produto: ");
  63.                 scanf("%d", &produto[quant_prod-1].codigo);
  64.                 printf("Digite o preço do produto: ");
  65.                 scanf("%f", &produto[quant_prod-1].preco);
  66.                 arq = fopen("Catalogo.txt", "a");                                       //abrindo catalogo em modo escrita
  67.                 fprintf(arq, "%d\n", produto[quant_prod-1].codigo);                     //escrevendo no catalogo...
  68.                 fprintf(arq, "%s\n", produto[quant_prod-1].nome);
  69.                 fprintf(arq, "%f\n", produto[quant_prod-1].preco);
  70.                 fclose(arq);                                                            //fechando o catalogo
  71.                 break;
  72.           /*PESQUISANDO UM PRODUTO*/
  73.             case 4:
  74.                 int codigo, erro = 1;                                           //variaveis
  75.                 printf("Digite o codigo do produto: ");                         //lendo o codigo do produto a ser pesquisado...
  76.                 scanf("%d", &codigo);
  77.                 for(int i=0; i<quant_prod; i++){                                //pesquisando produto
  78.                     if(codigo==produto[i].codigo){
  79.                         printf("Nome: %s\n", produto[i].nome);                  //achou? motrando informações do produto(nome e preço)
  80.                         printf("Preço: %f\n", produto[i].preco);
  81.                         erro = 0;
  82.                     }
  83.                 }
  84.                 if(erro==1){                                                    //nao achou?
  85.                     printf("\nProduto não encontrado!\n\n");                    //mensagem avisando que nao achou
  86.                 }
  87.                 break;
  88.         }
  89.         system("pause");                                                        //pausa sistema para que o usuario tenha tempo de ler as informaçoes mostrada na tela
  90.         system("cls");                                                          //limpa a tela para retornar ao menu
  91.     }
  92.  
  93.    //encerrando
  94.     free(produto);                                                              //libera memoria alocada
  95.     return 0;
  96. }
Add Comment
Please, Sign In to add comment