Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #include <locale.h>
- //ESTRUTURA CRIADA PARA ASSOCIAR AS INFORMAÇÕES DE UM PRODUTO(PRODUTO = NOME, PRECO E CODIGO)
- typedef struct produtos{
- char nome[10];
- float preco;
- int codigo;
- }Produtos;
- //FUNCAO MENU - PRINTA O MENU NA TELA E LE A OPCAO ESCOLHIDA PELO USUARIO(RETORNA ESSA OPCAO)
- int menu(){
- int op;
- printf("\t1 - Cadastrar produto\n");
- printf("\t2 - Realizar compras\n");
- printf("\t3 - Excluir produto\n");
- printf("\t4 - Consultar produto\n");
- printf("\t0 - Sair\n");
- printf("Opção: ");
- scanf("%d", &op);
- return op;
- }
- int main(){
- //variaveis
- Produtos *produto; //MEMORIA PRINCIPAL - ponteiro para os produtos, cada produto te seu codigo, nome e preco
- FILE *arq; //MEMORIA SECUNDARIA(HD) - arquivo de catalogo de produtos
- int op = -1; //opcao escolhida pelo usuario no MENU
- int quant_prod = 1; //quantidade de produtos cadastrados
- //setup
- setlocale(LC_ALL, ""); //definindo o local do prog para o especificado pelo SO do usuario
- produto = (Produtos *) malloc(sizeof(Produtos)); //alocando espaco na memoria principal para o primeiro produto
- if(produto==NULL){ //testando se alocou o espaco de memoria
- printf("Erro 404 - Não foi possível alocar memória para o produto\n");
- }
- arq = fopen("Catalogo.txt", "r"); //abrindo o arquivo catalogo em modo leitura
- if(arq==NULL){ //testando se arquivo foi aberto
- printf("Não foi possível acessar o caxtalogo de produtos!\n");
- }else{
- while(!feof(arq)){ //carregando informacoes do arq (memoria secundaria) nas suas variaveis(memoria principal)
- fscanf(arq, "%d", &produto[quant_prod-1].codigo);
- fscanf(arq, "%s", produto[quant_prod-1].nome);
- fscanf(arq, "%f", &produto[quant_prod-1].preco);
- quant_prod++;
- }
- }
- fclose(arq); //fechando arq
- //run
- while(op!=0){
- setbuf(stdin, NULL); //limpando o buffer para a entrada do teclado
- op = menu(); //printando o menu e lendo a opcao escolhida pelo usuario
- switch(op){
- case 0:
- break;
- /*CADASTRAR NOVO PRODUTO*/
- case 1:
- produto = (Produtos *) realloc(produto, quant_prod*sizeof(Produtos)); //realocando a memoria para os produtos
- printf("Digite o nome do produto: "); //lendo informações do novo produto...
- scanf("%s", produto[quant_prod-1].nome);
- printf("Digite o codigo do produto: ");
- scanf("%d", &produto[quant_prod-1].codigo);
- printf("Digite o preço do produto: ");
- scanf("%f", &produto[quant_prod-1].preco);
- arq = fopen("Catalogo.txt", "a"); //abrindo catalogo em modo escrita
- fprintf(arq, "%d\n", produto[quant_prod-1].codigo); //escrevendo no catalogo...
- fprintf(arq, "%s\n", produto[quant_prod-1].nome);
- fprintf(arq, "%f\n", produto[quant_prod-1].preco);
- fclose(arq); //fechando o catalogo
- break;
- /*PESQUISANDO UM PRODUTO*/
- case 4:
- int codigo, erro = 1; //variaveis
- printf("Digite o codigo do produto: "); //lendo o codigo do produto a ser pesquisado...
- scanf("%d", &codigo);
- for(int i=0; i<quant_prod; i++){ //pesquisando produto
- if(codigo==produto[i].codigo){
- printf("Nome: %s\n", produto[i].nome); //achou? motrando informações do produto(nome e preço)
- printf("Preço: %f\n", produto[i].preco);
- erro = 0;
- }
- }
- if(erro==1){ //nao achou?
- printf("\nProduto não encontrado!\n\n"); //mensagem avisando que nao achou
- }
- break;
- }
- system("pause"); //pausa sistema para que o usuario tenha tempo de ler as informaçoes mostrada na tela
- system("cls"); //limpa a tela para retornar ao menu
- }
- //encerrando
- free(produto); //libera memoria alocada
- return 0;
- }
Add Comment
Please, Sign In to add comment