Public feed #602506

Miscellany

public text v1 · immutable
Raw Edit
·published 2007-07-04 03:22 UTC
rendered paste body
#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();
			}
		}