Documentos de Académico
Documentos de Profesional
Documentos de Cultura
h>
#include <stdlib.h>
#include <strings.h>
#include"structAgendaReg.h"
int main(void)
{
FILE *fich;
int num_reg;
int i,j;
int YN;
int basura;
_contacto *pAux;
primero = NULL;
ultimo = NULL;
//Se abre el archivo de datos para lectura o se crea si no existe
if((fich = abrir_datos(&num_reg)) == NULL){
puts("Error en la lectura de disco");
exit(2);
return 2;
}
fclose(fich); //Se cierra el archivo tras recuperar los datos.
num_contactos = num_reg; //igualamos el total de contactos con el total de
//registros leidos.
menu();
scanf("%d",&YN);
while(YN != 0){
switch(YN){
case 4: //ordenar
system("clear");
menu();
puts("Selecciones el campo de ordenación \"1 Número de registro 2 Nombre\"");
scanf("%d",&j);
pAux = primero;
for(i=0;i<num_contactos;i++){
while(pAux->sigu != NULL){
burbuja(pAux,j);
pAux = pAux->sigu;
}
pAux = primero->sigu;
}
break;
default:
break;
}
puts("Pulsa [ENTER] para continuar");
basura = getc(stdin); //Recoge del buffer el último ENTER
basura = getc(stdin);
menu();
scanf("%d",&YN);
if(YN < 0 || YN >4)
YN = 2;
}
return 0;
}
//archivo: structAgendaReg.c
#include<strings.h>
#include<stdio.h>
#include<stdlib.h>
#include"structAgendaReg.h"
void add_contacto(void){
_contacto *auxi;
_contacto *nuevo;
//pedimos memoria en el heap para albergar un nuevo contacto
nuevo = (_contacto *)malloc(sizeof(_contacto));
//Añadimos al final
if(dia<10)
sprintf(day,"0%d",dia);
else
sprintf(day,"%d",dia);
if(mes<10)
sprintf(month,"0%d",mes);
else
sprintf(month,"%d",mes);
sprintf(fecha,"%s/%s/%d",day,month,anio);
}
void add_first_contacto(void){
_contacto *nuevo;
nuevo = (_contacto *)malloc(sizeof(_contacto));
if(nuevo == NULL)
exit(1);
nuevo->num_reg = num_contactos;
puts("Datos del nuevo contacto");
printf("Nombre: ");
scanf("%s",nuevo->nombre);
printf("Primer apellido: ");
scanf("%s",nuevo->apell);
printf("Fecha de nacimiento: \n");
printf("\tDia: ");
scanf("%d",&nuevo->fecha.dia);
printf("\tMes: ");
scanf("%d",&nuevo->fecha.mes);
printf("\tAño: ");
scanf("%d",&nuevo->fecha.anio);
validarFecha(nuevo->fecha.dia, nuevo->fecha.mes, nuevo->fecha.anio,nuevo-
>fechaCumple);
//scanf("%s",nuevo->fechaCumple);
printf("Teléfono de contacto: ");
scanf("%s",nuevo->tlf);
if(primero == NULL){
primero = nuevo;
ultimo = nuevo;
num_contactos = 1;
}
void menu(void){
system("clear");
printf("1 Añadir contacto\t 2 Ver contactos\t 3 Guardar\t 4 Ordenar\t0 Salir\n\n ");
printf("reg.\tNombre \t\tApellido\t\tFecha Nac.\tTlf contacto\n");
printf("-------------------------------------------------------------------------------------\n");
}
FILE *f;
_contacto *auxi;
_contacto *nuevo;
int i;
if(nuevo == NULL)
exit(1);
nuevo->num_reg = i+1;
fscanf(f,"%s",nuevo->nombre);
fscanf(f,"%s",nuevo->apell);
fscanf(f,"%s",nuevo->fechaCumple);
fscanf(f,"%s",nuevo->tlf);
}
return f;
//Archivo: burbuja2.c
/*Esta función ordena los registros según la disposición dada por el cliente
Las opciones de ordenación son:
1. por registro (por defecto)
2. por nombre
*/
if(ele1 != NULL){
if(modo == 2) //Ordenación por nombre
resp = cmpWord(ele1->nombre, ele1->sigu->nombre);
if(modo == 1)//Ordenación por número de registro
resp = cmpInt(ele1->num_reg, ele1->sigu->num_reg);
if(resp == 1){
strcpy(aux2->nombre, ele1->nombre);
strcpy(aux2->apell, ele1->apell);
strcpy(aux2->fechaCumple, ele1->fechaCumple);
aux2->num_reg = ele1->num_reg;
strcpy(ele1->nombre, ele1->sigu->nombre);
strcpy(ele1->apell, ele1->sigu->apell);
strcpy(ele1->fechaCumple, ele1->sigu->fechaCumple);
ele1->num_reg = ele1->sigu->num_reg;
strcpy(ele1->sigu->nombre, aux2->nombre);
strcpy(ele1->sigu->apell, aux2->apell);
strcpy(ele1->sigu->fechaCumple,aux2->fechaCumple);
ele1->sigu->num_reg = aux2->num_reg;
}
}
}
int cmpWord( char *elem1 , char *elem2)
{
int resp = strcmp(elem1, elem2);
//Archivo: structAgendaReg.h
/*
Estructura de datos para la base de datos de AGENDA
Variables globales y declaración de funciones
*/
#ifndef RegistroAgenda
#define RegistroAgenda 1
struct date{
int dia;
int mes;
int anio;
};
_contacto *primero;
_contacto *ultimo;
int num_contactos;
#endif