Buscar

agendaBinaria

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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;
 }
 }
}

Outros materiais