#include #include #include #include #include struct registro{ char nombre[30]; char direccion[30]; char telefono[11]; int edad; } datos; FILE *p_archivo; int c; void alta(), listado(), consulta(), modificacion(), menu_modificacion(), baja(), menu(); void main(){ menu(); } void menu(){ int opcion=1; while(opcion!= '0'){ clrscr(); printf("\n1-Alta"); printf("\n2-Listado"); printf("\n3-Consulta"); printf("\n4-Modificacion"); printf("\n5-Vaciado"); printf("\n6-Baja"); printf("\n0-Salir"); printf("\n\nElija una opci¢n :"); opcion=getch(); switch(opcion){ case '1': alta();break; case '2': listado();break; case '3': consulta();break; case '4': modificacion();break; case '6': baja();break; default: printf("\Error"); break; } } } void alta(){ clrscr(); flushall(); printf("Ingrese el Nombre :"); gets(datos.nombre); printf("Ingrese la Direccion :"); gets(datos.direccion); printf("Ingrese el Tel‚fono :"); gets(datos.telefono); printf("Ingrese la edad :"); scanf("%i",&datos.edad); p_archivo = fopen("agenda.bin","ab"); if (p_archivo==NULL){ printf("No se abrio el archivo"); getch(); exit(1); } fwrite(&datos,sizeof(datos),1,p_archivo); fclose(p_archivo); } void listado(){ clrscr(); p_archivo = fopen("agenda.bin","rb"); if (p_archivo==NULL){ printf("No se abrio el archivo"); getch(); exit(1); } printf("Nombre Direccion Telefono Edad\n"); printf("------------------------------------------------\n"); while(fread(&datos,sizeof(datos),1, p_archivo)!=NULL) printf("%-15s %-15s %11s %3i\n", datos.nombre, datos.direccion, datos.telefono, datos.edad); fclose(p_archivo); getch(); } void consulta(){ char *nom; clrscr(); gotoxy(10,2); printf("Ingrese el nombre a consultar:"); flushall(); gets(nom); p_archivo = fopen("agenda.bin","rb"); if (p_archivo==NULL){ printf("No se abrio el archivo"); getch(); exit(1); } while(fread(&datos,sizeof(datos),1, p_archivo)!=NULL) if (strstr(datos.nombre,nom)!=NULL){ gotoxy(15,5); printf("Nombre :%-15s ",datos.nombre); gotoxy(15,7); printf("Direcci¢n :%-15s ",datos.direccion); gotoxy(15,9); printf("Tel‚fono :%-11s ",datos.telefono); gotoxy(15,11); printf("Edad :%2i ",datos.edad); getch(); } fclose(p_archivo); getch(); } void modificacion(){ char *nom; c=0; clrscr(); gotoxy(10,2); printf("Ingrese el nombre a modificar:"); flushall(); gets(nom); p_archivo = fopen("agenda.bin","rb+"); if (p_archivo==NULL){ printf("No se abrio el archivo"); getch();exit(1);} while(fread(&datos,sizeof(datos),1, p_archivo)!=NULL){ c++; if (strcmpi(datos.nombre,nom)==NULL) menu_modificacion(); } fclose(p_archivo); } void menu_modificacion(){ char op=' '; while (op!='S'&&op!='G'){ clrscr(); gotoxy(15,5); printf("1-Nombre :%-15s ",datos.nombre); gotoxy(15,7); printf("2-Direcci¢n :%-15s ",datos.direccion); gotoxy(15,9); printf("3-Tel‚fono :%-11s ",datos.telefono); gotoxy(15,11); printf("4-Edad :%2i ",datos.edad); gotoxy(15,13); printf("S-Salir sin grabar"); gotoxy(15,15); printf("G-Grabar y Salir "); op=toupper(getch()); gotoxy(15,17); switch(op){ case '1':printf("Ingrese el nuevo nombre :"); flushall(); gets(datos.nombre); break; case '2':printf("Ingrese la nueva direcci¢n :"); flushall(); gets(datos.direccion); break; case '3':printf("Ingrese el nuevo telefono :"); flushall(); gets(datos.telefono); break; case '4':printf("Ingrese la nueva edad :"); scanf("%i",&datos.edad); ;break; case 'G':fseek(p_archivo,(c-1)*sizeof(datos),0); fwrite(&datos,sizeof(datos),1,p_archivo); break; case 'S':;break; } } } void baja(){ #define NO 0 #define SI 1 #define TEMPORAL "agenda.tmp" #define AGENDA "agenda.bin" char *nom; FILE *p_temporal; int encontrado = NO; clrscr(); gotoxy(10,2); printf("Ingrese el nombre a eliminar :"); flushall(); gets(nom); p_archivo = fopen(AGENDA,"rb+"); p_temporal = fopen(TEMPORAL,"wb"); if (p_archivo==NULL||p_temporal==NULL){ printf("No se abri¢ el archivo"); getch();exit(1);} while(fread(&datos,sizeof(datos),1, p_archivo)!=NULL){ if (strcmpi(datos.nombre,nom)==NULL) encontrado=SI; else fwrite(&datos,sizeof(datos),1,p_temporal); } fclose(p_archivo); fclose(p_temporal); remove(AGENDA); rename(TEMPORAL,AGENDA); if(encontrado) printf("\nSe elimin¢ la persona buscada"); else printf("\nNo se encontr¢ la persona"); getch(); }