Public feed
#602506
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<fcntl.h>
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();
}
}