Proyecto Agenda

Páginas: 5 (1016 palabras) Publicado: 18 de mayo de 2015
Benemérita Universidad Autónoma de Puebla


Ingeniería en ciencias de la computación


Programación 1


Canto Gómez Ángel Bernardo


Proyecto: Agenda


Mejía Hernández Miguel

//El Programa consiste en almacenar datos personales
//como una agenda virtual con las opciones de:
//1-ver el contenido de la agenda ya con los nombres ordenados
//2-dar de alta una persona con sus datos personales//3-buscar el telefono anotando el nombre de la persona

#include
#include
#include
#define MAXCADENA 200
enum { Ver=1, Alta, Buscar, Salir };

struct Entrada {
char * nombre;
char * direccion;
char * telefono;
char * correo;
char * celular;
};

struct NodoAgenda {
struct Entrada datos;
struct NodoAgenda * sig;
};

typedef struct NodoAgenda * TipoAgenda;

voidquita_fin_de_linea(char linea[])
{
int i;
for (i=0; linea[i] != '\0'; i++)
if (linea[i] == '\n') {
linea[i] = '\0';
break;
}
}

void muestra_entrada(struct NodoAgenda * e)
// Podr´ýamos haber pasado e por valor, pero resulta mas eficiente (y no mucho mas
// incomodo) hacerlo por referencia: pasamos asi solo 4 bytes en lugar de 12.
{
printf ("Nombre : %s\n", e->datos.nombre);
printf ("Direccion:%s\n", e->datos.direccion);
printf ("Telefono : %s\n", e->datos.telefono);
printf ("Correo : %s\n", e->datos.correo);
printf ("Celular : %s\n", e->datos.celular);
}
void libera_entrada(struct NodoAgenda * e)
{
int i;

free(e->datos.nombre);
free(e->datos.direccion);
free(e->datos.telefono);
free(e->datos.correo);
free(e->datos.celular);
free(e);
}


TipoAgenda crea_agenda(void)
{
return NULL;
}struct NodoAgenda * buscar_entrada_por_nombre(TipoAgenda agenda, char nombre[])
{
struct NodoAgenda * aux;

for (aux = agenda; aux != NULL; aux = aux->sig)
if (strcmp(aux->datos.nombre, nombre) == 0)
return aux;

return NULL;
}
//En esta parte del codigo se ordenan alfabeticamente
TipoAgenda busca_posicion_insertar (TipoAgenda agenda, char nombre[],TipoAgenda e){

struct NodoAgenda * aux, *siguiente, * anterior;
int cont;

aux = agenda;
anterior = aux;
cont = 0;

while (aux != NULL) {
cont++;
if ((strcmp(aux ->datos.nombre, nombre))>0) break;

anterior = aux;

siguiente = aux->sig;
aux = siguiente;
};

if (anterior == agenda)
{
//printf("Anterior == Agenda %d \n", cont);
if (( cont > 0) && (aux !=anterior )) {
e->sig = anterior->sig;
anterior->sig = e;
}
else
{
e->sig = agenda;
agenda = e;
}
}
else {
e->sig=anterior->sig;
anterior->sig = e;
}
//printf("Nodos: %d \n", cont);
return agenda;
}


TipoAgenda anyadir_entrada(TipoAgenda agenda, charnombre[],
char direccion[], char telefono[], char correo[],char celular[])
{
struct NodoAgenda * aux, * e;

/* Averiguar si ya tenemos una persona con ese nombre */
if (buscar_entrada_por_nombre(agenda, nombre) != NULL)
return agenda;

/* Si llegamos aqui, es porque no teniamos registrada a esa persona. */
e = malloc(sizeof(struct NodoAgenda));
e->datos.nombre = malloc((strlen(nombre)+1)*sizeof(char));strcpy(e->datos.nombre, nombre);
e->datos.direccion = malloc((strlen(direccion)+1)*sizeof(char));
strcpy(e->datos.direccion, direccion);
e->datos.telefono = malloc((strlen(telefono)+1)*sizeof(char));
strcpy(e->datos.telefono, telefono);
e->datos.correo = malloc((strlen(correo)+1)*sizeof(char));
strcpy(e->datos.correo, correo);
e->datos.celular = malloc((strlen(celular)+1)*sizeof(char));strcpy(e->datos.celular, celular);

agenda = busca_posicion_insertar(agenda, nombre, e);
//e->sig= aux;
//agenda->sig = e;

//e->sig = agenda;
//agenda = e;
return agenda;
}


void muestra_agenda(TipoAgenda agenda)
{
struct NodoAgenda * aux;

for (aux = agenda; aux != NULL; aux = aux->sig)
muestra_entrada(aux);
}


void libera_agenda(TipoAgenda agenda)
{
struct NodoAgenda * aux, *siguiente;

aux = agenda;...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Agenda proyecto
  • Agenda 21 proyecto
  • Agenda de gestion Proyecto la Hoja
  • Proyecto Cuaderno Agenda
  • agenda
  • Agenda
  • agenda
  • Agenda

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS