#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> void mostrar_menu(); void menu2(); void anadir_contacto(); void mostrar_lista(); void crear_archivo(); void eliminar_primero(); void eliminar_ultimo(); void bienvenida(); void visualizar_agenda(); void agregar_ultimo(); void buscar(); void ordenar_descendente(); struct _agenda { char nombre[20]; char telefono[12]; struct _agenda *siguiente; }; struct _agenda *primero, *ultimo; main() { bienvenida(); mostrar_menu(); getch(); }; void bienvenida(){ printf ("\t Bienvenido al programa de creacion de tu agenda electronica\n\n"); }; void ordenar_descendente(){ } void visualizar_agenda(){ char caracter; FILE *pf; system("cls"); if((pf=fopen("miagenda.txt", "rb"))==NULL) { puts("\nLa agenda no se a creado aun"); getch(); } puts("\nSu agenda electronica\n"); caracter = getc(pf); while(caracter!=EOF) { printf("%c", caracter); caracter = getc(pf); }; getch(); }; void buscar(){ char name[20]; printf ("Nombre a buscar: "); scanf ("%s",&name); _agenda *nodo; nodo = (struct _agenda *) malloc(sizeof (struct _agenda)); nodo = primero; while(nodo!=NULL){ if( strcmp( name, nodo->nombre) == 0 ){ //if( strcmp( name, nodo->nombre)){ printf ("%s | %s",nodo->nombre,nodo->telefono); } nodo = nodo->siguiente; } }
void mostrar_menu() { char opcion; printf("\n\nMenu:\n=====\n\n"); printf("1.- Ingresar nuevo contacto a la agenda\n"); printf("2.- Borrar primer contacto\n"); printf("3.- Borrar ultimo elemento\n"); printf("4.- Mostrar contactos ingresados\n"); printf("5.- TERMINAR DE GUARDAR CONTACTOS\n"); printf("6.- Salir\n\n"); printf("Escoge una opcion: ");fflush(stdout); opcion = getch(); switch ( opcion ) { case '1': anadir_contacto(); break; case '2': eliminar_primero(); break; case '3': eliminar_ultimo(); break; case '4': mostrar_lista(); break; case '5': crear_archivo(); break; case '6': exit(0); default: printf( "Opción no válida\n" ); break; } } void menu2(){ char op; system("cls"); printf ("Su agenda a sido creada con exito!\n\n"); printf ("Que decea hacer?\n"); printf ("1.- Visualizar agenda en pantala\n"); printf ("2.- Abrir miagenda.txt\n"); printf ("3.- Buscar Contacto\n"); op=getch(); switch (op){ case '1': visualizar_agenda(); break; case '2': system("\"miagenda.txt"); system("cls"); printf ("\n\nagenda Abierta."); break; case '3': buscar(); break; default: printf ("\nEsta opcion no es valida"); getch(); menu2(); } }; /* Con esta función añadimos un elemento al final de la lista */ void anadir_contacto() { struct _agenda *nuevo; /* reservamos memoria para el nuevo elemento */ nuevo = (struct _agenda *) malloc(sizeof(struct _agenda)); if (nuevo==NULL) printf( "No hay memoria disponible!\n"); printf("\nNuevo Contacto:\n"); printf("Nombre: "); fflush(stdout); gets(nuevo->nombre); printf("Teléfono: "); fflush(stdout); gets(nuevo->telefono); /* el campo siguiente va a ser NULL por ser el último elemento de la lista */ nuevo->siguiente = NULL; /* ahora metemos el nuevo elemento en la lista. lo situamos al final de la lista */ /* comprobamos si la lista está vacía. si primero==NULL es que no hay ningún elemento en la lista. también vale ultimo==NULL */ if (primero==NULL) { printf( "Primer elemento\n"); primero = nuevo; ultimo = nuevo; } else { /* el que hasta ahora era el último tiene que apuntar al nuevo */ ultimo->siguiente = nuevo; /* hacemos que el nuevo sea ahora el último */ ultimo = nuevo; } system("pause"); system("cls"); main(); } /*void ordenarLista(_agenda _actual){ while(_agenda->siguiente != NULL) { siguiente = actual->siguiente; while(siguiente!=NULL) { if(actual->nombre > siguiente->nombre) { t = siguiente->nombre; siguiente->nombre = actual->nombre; actual->nombre = t; } siguiente = siguiente->siguiente; } actual = actual->siguiente; siguiente = actual->siguiente; } }*/
void mostrar_lista() { struct _agenda *auxiliar,*siguiente; /* lo usamos para recorrer la lista */ int i; i=0; auxiliar = primero; printf("\n\nMostrando la lista completa:\n\n"); while (auxiliar!=NULL) { printf( "Nombre: %s | Telefono: %s\n",auxiliar->nombre,auxiliar->telefono); auxiliar = auxiliar->siguiente; i++; } if (i==0) printf( "\nLa lista está vacia!!\n" ); system("pause"); system("cls"); main(); }
void eliminar_primero(){ //Funcion para eliminar primera letra del avecedario struct _agenda *auxiliar; //Se crea un nodo auxiliar auxiliar = primero; //a axuxiliar se le asigna la primera letra primero = primero->siguiente; // primero se la asigna la segunda letra free( auxiliar ); // liberas memoria la memoria de auxiliar que viene siendo la primera letra borrandola de la lista printf ("\n"); printf ("\nContacto eliminado\n"); system("pause"); system("cls"); main(); };
void eliminar_ultimo(){ // Funcion para rliminar el ultimo de la lista _agenda *auxiliar = primero; // Se crea un nodo llamado auxiliar a la cual se le asigna la primera letra while( auxiliar != NULL ) { //Mientras que auxiliar no sea NULL if( auxiliar->siguiente != NULL && auxiliar->siguiente->siguiente == NULL ) //Si la que le sigue a auxiliar no es null { //y la que le sigue a la siguiente de auxiliar es null // significa que auxiliar es el penúltimo free( auxiliar->siguiente ); // borrás el úlitmo auxiliar->siguiente = NULL; // auxiliar pasa a ser ultimo } auxiliar = auxiliar->siguiente; } printf ("\n"); printf ("\nContacto eliminado\n"); system("pause"); system("cls"); main(); }; void crear_archivo(){ struct _agenda *auxiliar; FILE *archivo; auxiliar = primero; archivo=fopen("miagenda.txt","a"); int i; if (!archivo) { printf ("La agenda no fue creada!\n"); }else{
while (auxiliar!=NULL){ fprintf(archivo,"Nombre: %s \nTelefono: %s\n",auxiliar->nombre,auxiliar->telefono); fputs("------------------------------------------\n",archivo); auxiliar = auxiliar->siguiente; i++; }; printf ("\n"); } fclose(archivo); menu2(); }; |