#include #include #include #include struct agenda { struct agenda *sig; struct agenda *ant; char nom[30],dir[30],tel[30],email[30]; }; int op,band=0; char var[30]; struct agenda *primero=NULL,*ultimo,*aux; int opciones() { int op; system("clear"); printf("\n"); printf("1. Altas\n"); printf("2. Bajas\n"); printf("3. Cambios\n"); printf("4. Consulta general\n"); printf("5. Consulta Especifica\n"); printf("6. Guardar\n"); printf("7. Salir\n"); printf("\nElige una opcion: ");scanf("%i",&op); return op; } void guardar_a_archivo() { int x; int f1=open("BD.db",O_WRONLY | O_TRUNC | O_CREAT,0666); if(f1>0) { for(aux=primero;aux!=NULL;aux=aux->sig) { write(f1,aux,sizeof(struct agenda)); } } close(f1); } void carga_archivo() { int x,f1; struct agenda buffer; f1=open("BD.db",O_RDONLY); if(f1>0) { while((x=read(f1,&buffer,sizeof(buffer))!=0)) { aux=primero; if(primero==NULL) { primero=(struct agenda *) malloc (sizeof(struct agenda)); strcpy(primero->nom,buffer.nom); strcpy(primero->dir,buffer.dir); strcpy(primero->tel,buffer.tel); strcpy(primero->email,buffer.email); // printf("\n%s %i--<",primero->nom,x); primero->sig=NULL; primero->ant=NULL; ultimo=primero; } else { aux=ultimo; ultimo=(struct agenda *) malloc (sizeof(struct agenda)); strcpy(ultimo->nom,buffer.nom); strcpy(ultimo->dir,buffer.dir); strcpy(ultimo->tel,buffer.tel); strcpy(ultimo->email,buffer.email); aux->sig=ultimo; ultimo->sig=NULL; ultimo->ant=aux; aux=ultimo; } } } close(f1); } int main() { char nombrefile[20]; carga_archivo(); for(;;) { op=opciones(); if(op==1) { printf("\n\n\n"); getchar(); aux=primero; if (primero==NULL) { primero=(struct agenda *)malloc(sizeof(struct agenda)); printf("Nombre: "); gets(var); strcpy(primero->nom, var ); printf("Direccion: "); gets(var); strcpy(primero->dir, var ); printf("Telefono: "); gets(var); strcpy(primero->tel, var ); printf("Email: "); gets(var); strcpy(primero->email,var); primero->ant=NULL; primero->sig=NULL; ultimo=primero; } else { aux=ultimo; ultimo=(struct agenda *)malloc(sizeof(struct agenda)); printf("Nombre: "); gets(var); strcpy(ultimo->nom, var ); printf("Direccion: "); gets(var); strcpy(ultimo->dir, var ); printf("Telefono: "); gets(var); strcpy(ultimo->tel, var ); printf("Email: "); gets(var); strcpy(ultimo->email,var); aux->sig=ultimo; ultimo->sig=NULL; ultimo->ant=aux; aux=ultimo; } getchar(); } if(op==2) { system("clear"); if(primero==NULL) printf("No hay datos"); else { getchar(); band=0; printf("\n\nNombre: "); gets(var); for(aux=primero;aux!=NULL;aux=aux->sig) { if( strcmp(var,aux->nom)==0 ) band=1; } if(band==0) printf("no se encontro ese dato"); else { printf("Eliminado"); for(aux=primero; strcmp(aux->nom,var)!=0 ;aux=aux->sig); if (aux==primero) { if ( primero->sig==NULL && primero->ant==NULL ) primero=NULL; else { aux=primero; primero=primero->sig; primero->ant=NULL; } } else { if ( aux==ultimo ) { aux=ultimo->ant; aux->sig=NULL; ultimo=aux; } else { if (aux->ant!=NULL) (aux->ant)->sig = aux->sig; if (aux->sig!=NULL) (aux->sig)->ant = aux->ant; } } } } getchar(); } if(op==3) { system("clear"); if(primero==NULL) printf("No hay datos"); else { getchar(); band=0; printf("\n\nNombre A Modificar: "); gets(var); for(aux=primero;aux!=NULL;aux=aux->sig) { if( strcmp(var,aux->nom)==0 ) { printf("\nNuevo Direccion: "); gets(aux->dir); printf("Nuevo Telefono: "); gets(aux->tel); printf("Nuevo Email: "); gets(aux->email); band=1; break; } } if(band==0) printf("No se encontro esa persona"); } getchar(); } if(op==8) carga_archivo(); if(op==4) { system("clear"); if(primero==NULL) printf("No hay datos\n"); else { for(aux=primero;aux!=NULL;aux=aux->sig) { printf("\n\n"); printf("Nombre: %s",aux->nom); printf("\nDireccion: %s",aux->dir); printf("\nTelefono: %s",aux->tel); printf("\nEmail: %s",aux->email); } } getchar(); } if(op==5) { system("clear"); carga_archivo(); if(primero==NULL) printf("No hay datos"); else { band=0; getchar(); printf("\n\nNombre A Buscar "); gets(var); for(aux=primero;aux!=NULL;aux=aux->sig) { if( strcmp(var,aux->nom)==0 ) { printf("\n\n"); printf("Nombre: %s",aux->nom); printf("\nDireccion: %s",aux->dir); printf("\nTelefono: %s",aux->tel); printf("\nEmail: %s",aux->email); printf("\n\nSi se encontro el dato"); band=1; break; } } if(band==0) printf("No esta ese nombre\n"); } getchar(); } if(op==6) { guardar_a_archivo(); } if(op==7) exit(0); getchar(); } }