Baixe o app para aproveitar ainda mais
Prévia do material em texto
#include <stdio.h> #include <stdlib.h> void limpaBuffer(){ setbuf(stdin, NULL); } typedef struct{ char nome[50], local[50], fone[50]; char nasc[15]; char indice; } contato; FILE * bd; contato x; void cadastro(){ bd=fopen("binAgenda.bin","ab"); fseek(bd,0L, SEEK_END); char quit='\0'; while(quit != 'n'){ printf("\n Cadastro de Pessoas. \n"); printf("\n Nome do Contato: "); limpaBuffer(); gets(x.nome); printf("\n Endereco: "); limpaBuffer(); gets(x.local); printf("\n Telefone: "); limpaBuffer(); gets(x.fone); printf("\n Data de Nascimento: "); limpaBuffer(); gets(x.nasc); x.indice='1'; if(fwrite(&x, sizeof(contato), 1, bd) != 1){ printf("\n Erro de gravacao!! \n"); exit (1); }else{ printf("\n Gravacao efetuada com sucesso!! \n"); } printf("\n Deseja cadastrar Outro?? s - sim n - sair: "); limpaBuffer(); scanf("%c", &quit); system("cls"); } fclose (bd); } void apagarBanco(){ int i = 0; printf("\n Para excluir o arquivo digite: [1] para SIM ou [0] para NAO : "); scanf("%d", &i); if (i==1){ printf("\n Arquivo excluido. \n"); system("del binAgenda.bin"); exit(1); }else{ printf("\n Erro para excluir!!!"); exit(1); } fclose(bd); } void mostraTodos(){ int i=0; bd = fopen("binAgenda.bin", "rb+"); fseek(bd, 0L, SEEK_SET); fread(&x, sizeof(contato), 1, bd); do{ if(x.indice!='0'){ printf("\n|Nome: %s|Localidade: %s|Telefone: %s|Nasc: %s|", x.nome,x.local, x.fone, x.nasc); i++; } fread(&x, sizeof(contato), 1, bd); } while(!feof(bd)); printf("\n\n\t\t Total de Cadastros: [%d] \n\n", i); fclose(bd); system("pause"); system("cls"); } int consultar(){ contato busca; int achou=-1, posicao=0; char nomeSearch[50]; bd = fopen("binAgenda.bin", "rb"); printf("\n Digite o nome a ser localizado: "); limpaBuffer(); gets(nomeSearch); rewind(bd); while((!feof(bd))&&(achou==-1)){ fread(&x, sizeof(contato), 1, bd); if(!feof(bd)){ if(strcmp(nomeSearch, x.nome)==0){ if(x.indice=='0'){ posicao=-2; printf("\n Pessoa nao cadastrada!!"); exit (1); } achou=1; printf("\n|Nome: %s|Localidade: %s|Telefone: %s|Nasc: %s|\n\n", x.nome,x.local, x.fone, x.nasc); system("pause"); system("cls"); }else{ posicao++; } }else{ posicao=-1; } } if (achou==-1){ printf("\nNao foi encontrado"); posicao=-1; } fclose(bd); return posicao; } void deletarRegistro(){ int search; search=consultar(); if(search==-1){ printf("\n Pessoa nao cadastrada! \n"); exit(1); }else{ if(search==-2){ printf("\n Pessoa removida. \n"); }else{ bd = fopen("binAgenda.bin", "rb+"); fseek(bd, search*sizeof(contato), SEEK_SET); fread(&x, sizeof(contato), 1, bd); printf("\n|Nome: %s|Localidade: %s|Telefone: %s|Nasc: %s|\n", x.nome,x.local, x.fone, x.nasc); printf("\n A pessoa %d sera excluida.", (search+1)); x.indice='0'; fseek(bd, search*sizeof(contato), SEEK_SET); if(fwrite(&x, sizeof(contato), 1, bd) != 1){ printf("\n Erro na exclusao!! \n"); exit (1); }else{ printf("\n Exclusao feita com sucesso!! \n\n"); } } } system("pause"); system("cls"); fclose(bd); } void zerarAgenda(){ int op = 0; printf("\n Para zerar a Agenda digite: [1] para SIM ou [0] para NAO : "); scanf("%d", &op); if (op==1){ bd = fopen("binAgenda.bin", "wb"); printf("\n Arquivo zerar com sucesso!! \n"); exit(1); }else{ printf("\n Arquivo nao foi zerado!!"); exit(1); } fclose(bd); } void localiza(){ int search; search = consultar(); if(search==-1){ printf("\n Contato nao cadastrado!!"); } else if(search==-2){ printf("\n Contato nao cadastrado!!"); }else{ bd = fopen("binAgenda.bin", "rb+"); fseek(bd,search*sizeof(contato),SEEK_SET); fread(&x, sizeof(contato), 1, bd); } fclose(bd); } main() { int menu=0; int op=0; while(op!=1){ printf("\n \t Escolha uma opcao do menu: "); printf("\n \t 1 Cadastro"); printf("\n \t 2 Pesquisa"); printf("\n \t 3 Mostrar todos"); printf("\n \t 4 Remover contato"); printf("\n \t 5 Limpar dados do arquivo"); printf("\n \t 6 Excluir o arquivo todo"); printf("\n \t 0 Sair do programa\n"); printf("\n Digite a sua opcao: "); scanf("%d", &menu); switch (menu){ case 1: system("cls"); cadastro(); break; case 2: system("cls"); consultar(); break; case 3: system("cls"); mostraTodos(); break; case 4: system("cls"); deletarRegistro(); break; case 5: system("cls"); zerarAgenda(); break; case 6: system("cls"); apagarBanco(); break; case 0: system("cls"); exit (1); break; default: system("cls"); printf("\n Opcao Inexistente."); break; } } }
Compartilhar