Sie sind auf Seite 1von 8

//PROGRAMA EN LENGUAJE C QUE REALIZA LOS SIGUIENTES A TRAVES DE ESTRUCTURAS Y AP UNTADORES, ASIGNACION DINAMICA DE MEMORIA. /* 1.- Registro de contactos.

El sistema solicitar los siguientes datos, nombre, ape llido paterno, apellido materno, direccion, telefono, gnero y direccion de corre o electronico; de estos campos los correspondientes a nombre, apellidos, telefon o y correo son obligatorios, es decir, el usuario no puede dejar estos campos e n blanco. 2.- consulta de registros, el usuario podr elegir una de las siguientes opciones buscar un registro, la busqueda podra hacerse por numero telefonico o nombre. Bu squeda alfabetica el usuario podr imprimir los registros que inicien con una letr a especifica, al finalizar la busqueda alfabetica el sistema mostrar los registro s encontrados. 3.- Editar registro. El sistema mostrara todos los registros de la agenda(solo n ombre y apellidos) acompaado de un numero ndice asociado, si los registros mostrad os no pueden ser visualizados no pueden en una sola pantalla se deberan establec iendo las pausas que se crean necesarias. La edicion inicia una vez desplegados todos los registros, y al usuario se le solicitara el numero de registro que se desea modificar, el sistema mostrara los datos del registro deseado y se procede ra a su edicin. solicitar confirmacin. 4.- Eliminar registro. El sistema mostrara todos los registros tal como en la op cion 3 es decir el nombre y el ndice asociado al finalizar la impresion el sistem a solicitara el numero de registro que se desea eliminar, se mostrara los datos registro correspondiente y se solicitara confirmacion para su eliminacin . 5.- Salir */ //LIBRERIAS #include<stdio.h> #include<conio.h> #include<conio2.h> #include<string.h> //CONSTANTES DEFINIDAS #define SALIR 0 #define EDITAR 1 #define ELIMINAR 2 #define NOMBRE 0 #define APELLIDOP 1 #define APELLIDOM 2 #define TELEFONO 3 #define CORREO 4 //PROTOTIPOS DE FUNCIN void menu1 (void); void nuevo(void); void recibir_datos(void); void obtener(char *cadena, short n_mensaje ); void consultar (void); void editar (void); void eliminar (void); short confirmacion (short n_mensaje); void error (void); void imprimir_datos(void); //ESTRUCTURA struct agenda{ char nombre[3][15];

char telefono[12]; char direccion[30]; char mail[30]; char genero[2]; int n_registro; struct agenda *anterior, *siguiente; }*inicio=NULL, *fin, *aux; //VARIABLES GLOBALES short control=0, opcion=0; main() { textcolor(WHITE); while(opcion!=5) { menu1(); scanf("%d", &opcion); fflush(stdin); switch(opcion) { case 1: nuevo(); break; case 2: consultar(); break; case 3: editar(); break; case 4: eliminar(); break; case 5: system("cls"); opcion=confirmacion(SALIR); if(opcion==1) { opcion=5; printf("Usted Va a Salir..."); getch(); } break; default: error(); break; }//fin del switch }//fin del while }//fin de main void menu1 (void) { system("cls"); printf("\n\t\t\tQUE DESEA HACER?"); printf("\n\t1.-AGREGAR REGISTRO"); printf("\n\t2.-CONSULTAR REGISTRO"); printf("\n\t3.-EDITAR REGISTRO"); printf("\n\t4.-ELIMINAR REGISTRO"); printf("\n\t5.-SALIR DEL PROGRAMA"); printf("\n\t ELIJA: "); }

void nuevo (void) { if (control==0) { inicio=(struct agenda *)(malloc (sizeof(struct agenda))); inicio->anterior=NULL; inicio->siguiente=NULL; aux=inicio; fin=inicio; aux->n_registro=1; control=1; } else { aux=fin; aux->siguiente= (struct agenda *)(malloc (sizeof(struct agenda))); aux->siguiente->anterior=aux; aux=aux->siguiente; aux->siguiente=NULL; fin=aux; aux->n_registro=aux->anterior->n_registro+1; } recibir_datos(); //return a; } void recibir_datos(void) { //OBTIENE NOMBRE Y APELLIDOS Y NO DEJA AVANZAR SI NO SON CORRECTOS obtener(aux->nombre[0], NOMBRE); obtener(aux->nombre[1], APELLIDOP); obtener(aux->nombre[2], APELLIDOM); system("cls"); printf("Teclea la direccion: "); gets(aux->direccion); //OBTIENE EL GENERO Y NO DEJA CONTINUAR SI NO ES CORRECTO system("cls"); do { printf("Teclea el genero (H:Hombre, M:Mujer): "); gets(aux->genero); if(aux->genero[0]!='H' && aux->genero[0]!='M' && aux->genero[0]!='h' && aux->genero[0]!='m') { system("cls"); printf("El genero no es correcto, teclealo nuevamente\n\n"); continue; } }while (aux->genero[0]!='H' && aux->genero[0]!='M' && aux->genero[0]!='h' && aux->genero[0]!='m'); //OBTIENE CORREO Y TELEFONO Y NO DEJA AVANZAR SI NO ES CORRECTO obtener(aux->telefono, TELEFONO); obtener(aux->mail, CORREO); } void obtener(char *cadena, short n_mensaje) { char *mensajes[]={"Nombre", "apellido paterno", "apellido materno", "telefo no","correo electronico"}; char cadenaaux[30]; system("cls"); printf("Teclea el %s: ", mensajes[n_mensaje]);

gets(cadenaaux); while(cadenaaux[0]=='\0') { system("cls"); printf("El campo \"%s\" esta vacio", mensajes[n_mensaje]); error(); printf("\n%s: ", mensajes[n_mensaje]); gets(cadenaaux); } strcpy(cadena, cadenaaux); } void consultar(void) { short opcion=0, control=0; int cont=1; char cadenabus[30], letrabus; system("cls"); if(inicio!=NULL) { while(opcion<1 || opcion > 3) { printf("Como desea realizar la consulta?: printf("\n1.- Nombre"); printf("\n2.- Telefono"); printf("\n3.- Buscar por letra inicial"); printf("\nElija: "); scanf("%d", &opcion); fflush(stdin); if(opcion<1 || opcion>3) error(); } aux=inicio;

");

switch(opcion) { case 1: printf("\n\nTecle el nombre que desea buscar: "); gets(cadenabus); system("cls"); while (aux!=NULL) { if(strcmp(aux->nombre[0], cadenabus)==0) { imprimir_datos(); control=1; } aux=aux->siguiente; } break; case 2: printf("\n\nTecle el telefono que desea buscar: "); gets(cadenabus); system("cls"); while (aux!=NULL) { if(strcmp(aux->telefono, cadenabus)==0) { imprimir_datos(); control=1; }

aux=aux->siguiente; } break; case 3: printf("\n\nTeclea la letra que deseas buscar: "); scanf("%c", &letrabus); fflush(stdin); system("cls"); while(aux!=NULL) { if(letrabus==aux->nombre[0][0]) { printf("%d.- %s %s %s", cont++, aux->nombre[0], aux->nombr e[1], aux->nombre[2]); control=1; } aux=aux->siguiente; } break; } if(control==0) { system("cls"); printf("No se encontro ningun registro"); } } else printf("No existe ningun registro"); getch(); } void imprimir_datos(void) { printf("RESULTADOS:\n\n"); printf("Nombre: %s %s %s", aux->nombre[0],aux->nombre[1],aux->nombre[2]) ; printf("\nDireccion: %s", aux->direccion); printf("\nTelefono: %s", aux->telefono); printf("\nCorreo: %s", aux->mail); printf("\nGenero: %s", aux->genero); printf("\n"); } void editar (void) { int editar, cont=1; system("cls"); if(inicio!=NULL) { printf("EDITANDO\n"); aux=inicio; while(aux!=NULL) { printf("%d.- %s %s %s\n", aux->n_registro, aux->nombre[0], aux->nombr e[1], aux->nombre[2]); if(cont%20==0) { printf("\nPresione una tecla para seguir desplegando..."); getch(); } cont++;

aux=aux->siguiente; } printf("\n\nQue registro desea editar? "); scanf("%d", &editar); fflush(stdin); while( editar > (fin->n_registro) || editar < 0) { error(); printf("\nTecle un numero menor o igual que %d", fin->n_registro); scanf("%d", &editar); } system("cls"); aux=inicio; while(aux->n_registro!=editar) aux=aux->siguiente; imprimir_datos(); editar=confirmacion(EDITAR); if(editar==1) { recibir_datos(); printf("Registro editado exitosamente"); } } else printf("No hay ningun registro"); getch(); } void eliminar (void) { int eliminar, cont=1; system("cls"); if(inicio!=NULL) { printf("ELIMINANDO\n"); aux=inicio; while(aux!=NULL) { printf("%d.- %s %s %s\n", aux->n_registro, aux->nombre[0], aux->nomb re[1], aux->nombre[2]); if(cont%20==0) { printf("\nPresione una tecla para seguir desplegando..."); getch(); } cont++; aux=aux->siguiente; } printf("\n\nQue registro desea eliminar? "); scanf("%d", &eliminar); while(eliminar>fin->n_registro|| eliminar < 0) { error(); printf("Tecle un numero menor que igual o menor %d: ", fin->n_regi stro); scanf("%d", &eliminar); fflush(stdin); } aux=inicio;

while(aux->n_registro!=eliminar) aux=aux->siguiente; imprimir_datos(); eliminar=confirmacion(ELIMINAR); if(eliminar==1) { if(inicio->siguiente==NULL) printf("Solo tiene un registro, No puede eliminarlo"); else { if(aux!=inicio) aux->anterior->siguiente=aux->siguiente; if (aux!=fin) aux->siguiente->anterior=aux->anterior; if(aux==inicio) inicio=inicio->siguiente; if(aux==fin) fin=fin->anterior; free(aux); printf("Registro editado exitosamente"); aux=inicio->siguiente; inicio->n_registro=1; while(aux!=NULL) { aux->n_registro=aux->anterior->n_registro+1; aux=aux->siguiente; } } } } else printf("No hay ningun registro"); getch(); } short confirmacion (short n_mensaje) { char *mensaje[]={"salir del programa","editar el registro", "eliminar el re gistro"}; int respuesta; while(1) { printf("Esta seguro que desea %s?", mensaje[n_mensaje]); printf("\n1.- Si\n2.- No\n"); scanf("%d",&respuesta); if (respuesta <1 || respuesta > 2) printf("No tecleo algo correcto"); else break; } return respuesta; } void error (void) { textcolor(RED); system("cls"); printf("NO TECLEO ALGO VALIDO, INTENTELO DE NUEVO"); fflush(stdin); textcolor(WHITE);

getch(); }

Das könnte Ihnen auch gefallen