Created
November 9, 2016 02:22
-
-
Save moscoquera/c631e219aa8cf480d8777e14f10ecff8 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <stdlib.h> | |
#include <string.h> | |
#define LIMIT 30 //Define el limite | |
#define M 100 //Define el otro limite (?) | |
typedef struct //Definiendo la estructura | |
{ | |
int dni; | |
char apellido[LIMIT]; | |
char nombre[LIMIT]; | |
int celular; | |
char mail[LIMIT]; | |
int nac_y; | |
int nac_m; | |
int nac_d; | |
}contacto; | |
contacto AgregarContacto(int *CantCont); | |
void GuardarContacto(contacto *Agenda[], int max,int *CantCont); | |
void FindDNI(contacto *agenda[], int max); | |
void ImprimirContacto(contacto *agenda); | |
int main(void) { | |
contacto Agenda[M]; | |
int CantCont = 0; | |
int menu; | |
do | |
{ | |
printf("\n1: Agregar contacto\n"); | |
printf("2: Busqueda por DNI\n"); | |
printf("3: Listado ordenado\n"); | |
printf("4: \n"); | |
printf("5: Listado por cumpleaños\n"); | |
printf("6: Borrar contacto\n"); | |
printf("7: Salir\n"); | |
printf("Opcion: "); | |
scanf("%d", &menu); | |
switch (menu) | |
{ | |
case 1:Agenda[CantCont] = AgregarContacto(&CantCont); | |
GuardarContacto(&Agenda, M, &CantCont); | |
break; | |
case 2:FindDNI(&Agenda, M); | |
break; | |
case 3: | |
break; | |
case 4: | |
break; | |
case 5: | |
break; | |
case 6: | |
break; | |
case 7: | |
printf("\n Salida exitosa. \n\n\n"); //Mensaje de salida | |
system("pause"); //Para el programa | |
return EXIT_SUCCESS; | |
break; | |
default: printf("Opcion incorrecta.\n"); | |
break; | |
} | |
} while (menu <= 7); //Loopea el menu | |
system("pause"); | |
return EXIT_SUCCESS; | |
} | |
contacto AgregarContacto(int *CantCont){ //AGREGA EL CONTACTO | |
contacto AG_Contacto; | |
char add_name[LIMIT]; //Cadenas auxiliares | |
char add_lname[LIMIT]; | |
char add_mail[LIMIT]; | |
int add_dni=0; // Inicializa las variables | |
int add_cel=0; | |
int add_bd=0; | |
int add_bm=0; | |
int add_by=0; // ^ | |
printf("\nNombre:"); //Muestra en pantalla para ingresar el nombre | |
scanf("%s",&add_name); //Ingresa nombre | |
add_name[29]='/0'; //Corta la cadena para que no haya basura | |
printf("\nApellido:"); | |
scanf("%s",&add_lname); | |
add_lname[29]='/0'; | |
printf("\nDni:"); | |
scanf("%d",&add_dni); | |
getc(stdin); | |
AG_Contacto.dni=add_dni; //Al ser un entero se pasa directamente a la estructura | |
printf("\nMail:"); | |
scanf("%s",&add_mail); | |
add_mail[29]='/0'; | |
printf("\nCelu:"); | |
scanf("%d",&add_cel); | |
AG_Contacto.celular=add_cel; //Lo mismo que antes, entero, directo. | |
printf("\nFecha Nacimiento: (dd/mm/aa/) "); | |
scanf("%d",&add_bd); | |
AG_Contacto.nac_d=add_bd; //Se pasa la fecha de nacimiento a la estructura | |
scanf("%d",&add_bm); | |
AG_Contacto.nac_m=add_bm; //same | |
scanf("%d",&add_by); | |
AG_Contacto.nac_y=add_by; //same | |
strcpy(AG_Contacto.nombre, add_name); //Pasa el nombre mediante una copia de cadena | |
strcpy(AG_Contacto.apellido, add_lname); //Pasa el apellido igual | |
strcpy(AG_Contacto.mail, add_mail); //El mail de la misma manera | |
*CantCont=+1; //Suma la cantidad de contactos de la agenda | |
return AG_Contacto; //Retorna la estructura | |
} | |
void GuardarContacto(contacto *agenda[], int max, int *CantCont) { | |
int i = 0; | |
FILE *contagenda; //Puntero al archivo | |
contagenda = fopen("ContAgenda.dat", "ab"); //Abre el archivo | |
if (contagenda == NULL) { | |
printf("no se pudo abrir el archivo"); | |
exit(EXIT_FAILURE); | |
} | |
if (CantCont>100) { | |
fwrite(&agenda[i], sizeof(contacto), 1, contagenda); //Gaurda en el archivo | |
} | |
fclose(contagenda); | |
} | |
void FindDNI(contacto *agenda[], int max) { //Retorna la posicion del DNI solicitado | |
int dni = 0; | |
int i = 0; | |
printf("\n Busqueda por DNI."); | |
printf("\n Ingrese DNI: "); | |
scanf("%d", &dni); | |
contacto auxcont; | |
FILE *contagenda; | |
contagenda = fopen("ContAgenda.dat", "rb"); | |
if (contagenda == NULL) { | |
printf("no se pudo abrir el archivo"); | |
exit(EXIT_FAILURE); | |
} | |
while (!feof(contagenda)) { | |
fread(&auxcont, sizeof(contacto), 1, contagenda); //ACA DEBERIA ESTAR EL PROBLEMA. | |
if (auxcont.dni == dni) { | |
fclose(contagenda); | |
ImprimirContacto(&auxcont); | |
return; | |
} | |
i++; | |
} | |
printf("\n Dni no encontrado"); | |
} | |
void ImprimirContacto(contacto *agenda) { | |
printf("%s\n", agenda->nombre); | |
printf("%s\n", agenda->apellido); | |
printf("%d\n", agenda->dni); | |
printf("%s\n", agenda->mail); | |
printf("%d\n", agenda->celular); | |
printf("%d/", agenda->nac_d); | |
printf("%d/", agenda->nac_m); | |
printf("%d/\n", agenda->nac_y); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment