C/Visual C - AGENDA CON FUNCIONES EN C

 
Vista:

AGENDA CON FUNCIONES EN C

Publicado por kuku (1 intervención) el 16/04/2007 20:48:50
Hola, tengo q hacer una agenda de contactos con funciones en c, pero no se cmo aplicar las funciones. Tengo el codigo de la agenda sin las funciones y queria pediros si me podeis decir como seria la agenda hecha con funciones, os dejo mi codigo.
Lo q pide el ejercicio es en un menu:1.Agregar contactos,2.Listar todos,3.Buscar un contacto por nombre,4.Borrar un contacto,5.Quien cumple años,6.Salir.

#include <stdio.h>
#include <stdlib.h>
#include <conio.c>
#include <time.h>

struct fechas
{
int dia_semana;
int dia;
int mes;
int ano;
};

struct fechas ordenador;

struct agenda
{
char nombre[50];
char apellido1[50];
char apellido2[50];
int edad[3];
int telefono[9];
int movil[9];
char mail[30];
int fecha[10];
struct fechas ordenador;
};
struct agenda contactos[100];

int main(int argc, char *argv[])
{
int opcion,i=0,x=0;
int MAX=100,cont=0,pos=0;
char contactos2[50],contactos3[50];

time_t temp;
struct tm *fecha;

do{

printf ("1- Agregar un contacto\n");
printf (" 2- Listar todos los contactos\n");
printf ("3- Buscar un contacto por nombre\n");
printf ("4- Borrar un contacto\n");
printf ("5- Quien cumple los annos hoy\n");
printf ("6- Salir\n\n");
printf ("Selecciona una opcion: ");
fflush(stdin);
scanf("%d",&opcion);

switch(opcion)
{
case 1: //Agregar contacto

if(cont == MAX)
{
printf("Agenda llena.");
getch();
}
else
{
cont++;
system("cls");
printf("Introduzca un nombre: ");
fflush(stdin);
scanf("%s", contactos[cont].nombre);
printf("Introduzca el primer apellido: ");
fflush(stdin);
scanf("%s", contactos[cont].apellido1);
printf("Introduzca el segundo apellido: ");
fflush(stdin);
scanf("%s", contactos[cont].apellido2);
printf("Introduzca la edad: ");
fflush(stdin);
scanf("%s", contactos[cont].edad);
printf("Introduzca el numero de telefono: ");
fflush(stdin);
scanf("%s", contactos[cont].telefono);
printf("Introduzca el movil: ");
scanf("%s", contactos[cont].movil);
printf("Introduzca el e-mail: ");
fflush(stdin);
scanf("%s", contactos[cont].mail);
printf("Introducza la fecha de nacimiento: ");
fflush(stdin);
scanf("%s", contactos[cont].fecha);
}

printf("\n Pulse enter para volver al menu.");
getch();
system("cls");


break;


case 2: //Listar todo
system("cls");
for(i=1;i<=cont;i++)
{
printf("Nombre: %s\n", contactos[*i].nombre);
printf("Apellido primero: %s\n", contactos[*i].apellido1);
printf("Apellido segundo: %s\n", contactos[*i].apellido2);
printf("Edad: %s\n", contactos[*i].edad);
printf("Telefono: %s\n", contactos[*i].telefono);
printf("Movil: %s\n", contactos[*i].movil);
printf("E-mail: %s\n", contactos[*i].mail);
printf("Fecha de nacimiento: %s\n", contactos[*i].fecha);
}
getch();
system("cls");
break;


case 3: //Buscar por nombre
system("cls");
fflush(stdin);
printf("Introduzca el nombre del contacto que desea buscar: ");
gets(contactos2);
for(i=1;i<=MAX;i++)
{
if(strcmp(contactos2,contactos[*i].nombre)==0)
{
printf("Nombre: %s\n", contactos[*i].nombre);
printf("Apellido primero: %s\n", contactos[*i].apellido1);
printf("Apellido segundo: %s\n", contactos[*i].apellido2);
printf("Edad: %s\n", contactos[*i].edad);
printf("Telefono: %s\n", contactos[*i].telefono);
printf("Movil: %s\n", contactos[*i].movil);
printf("E-mail: %s\n", contactos[*i].mail);
printf("Fecha de nacimiento: %s\n", contactos[*i].fecha);
}
}
getch();
system("cls");
break;


case 4: //Borrar
system("cls");
fflush(stdin);
printf("Introduzca el nombre del contacto que desea borrar: ");
scanf("%s",contactos3);

for (i=0;i<MAX;i++)
{
if(strcmp(contactos3,contactos[i].nombre)==0)
{
contactos[i]=contactos[i+1];
for(x=i;x<cont;x++)
{
contactos[x]=contactos[x+1];
}
x--;
cont--;
}
}
system("cls");
break;


case 5: //¿Quien cumple años?

temp = time(NULL);

fecha = localtime(&temp);

ordenador.dia_semana=fecha->tm_wday;

ordenador.dia=fecha->tm_mday;

ordenador.mes=fecha->tm_mon;

ordenador.mes=ordenador.mes+1;

ordenador.ano=fecha->tm_year;

ordenador.ano=ordenador.ano+1900;

break;

break;


case 6: //Salir

break;

}
}while (opcion!<6);


system("PAUSE");
return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:AGENDA CON FUNCIONES EN C

Publicado por Nelek (816 intervenciones) el 17/04/2007 07:42:01
Hola,

lo que tienes que hacer es poner lo que pone en cada caso del switch dentro de una funcion y luego llamarlo, a grosso-modo quedaria:

#include <stdio.h>
#include <stdlib.h>
#include <conio.c>
#include <time.h>

struct fechas
{
int dia_semana;
int dia;
int mes;
int ano;
};

struct fechas ordenador;

struct agenda
{
char nombre[50];
char apellido1[50];
char apellido2[50];
int edad[3];
int telefono[9];
int movil[9];
char mail[30];
int fecha[10];
struct fechas ordenador;
};
struct agenda contactos[100];

void escribir_menu ()
{
printf ("1- Agregar un contacto\n");
printf (" 2- Listar todos los contactos\n");
printf ("3- Buscar un contacto por nombre\n");
printf ("4- Borrar un contacto\n");
printf ("5- Quien cumple los annos hoy\n");
printf ("6- Salir\n\n");
printf ("Selecciona una opcion: ");
}

void agregar_contacto ()
{
if(cont == MAX)
{
printf("Agenda llena.");
getch();
}
else
{
cont++;
system("cls");
printf("Introduzca un nombre: ");
fflush(stdin);
scanf("%s", contactos[cont].nombre);
printf("Introduzca el primer apellido: ");
fflush(stdin);
scanf("%s", contactos[cont].apellido1);
printf("Introduzca el segundo apellido: ");
fflush(stdin);
scanf("%s", contactos[cont].apellido2);
printf("Introduzca la edad: ");
fflush(stdin);
scanf("%s", contactos[cont].edad);
printf("Introduzca el numero de telefono: ");
fflush(stdin);
scanf("%s", contactos[cont].telefono);
printf("Introduzca el movil: ");
scanf("%s", contactos[cont].movil);
printf("Introduzca el e-mail: ");
fflush(stdin);
scanf("%s", contactos[cont].mail);
printf("Introducza la fecha de nacimiento: ");
fflush(stdin);
scanf("%s", contactos[cont].fecha);
}

printf("\n Pulse enter para volver al menu.");
getch();
system("cls");
}

int main(int argc, char *argv[])
{
int opcion,i=0,x=0;
int MAX=100,cont=0,pos=0;
char contactos2[50],contactos3[50];

time_t temp;
struct tm *fecha;

do{

fflush(stdin);
scanf("%d",&opcion);

switch(opcion)
{
case 1:
agregar_contacto ();
break;


Y asi con el resto.

En una funcion lo que va delante en la declaracion es el retorno y lo que va en los parentesis es lo que le pasas por parametro. Puedes tener montones de parametros pero solo un tipo de dato de retorno (aunque puede ser distintas variables del mismo tipo). Tambien tienes que declarar las funciones en el *.h si estas programando por modulos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:AGENDA CON FUNCIONES EN C

Publicado por kuku (6 intervenciones) el 18/04/2007 23:06:48
Hola. Muchas gracias por responder, he intentado hacer el codigo haciendolo como dices, pero no me compila, no se q falla y q esta mal. Por cierto el void en clase no lo he usado, he seguido tu ejemplo, ¿pero hay otra forma para no poner el void?
Otra cosa ¿no hay q usar como puteros con el asterisoco o algo asi?
Y ya por ultimo ¿esto esta bien puesto donde lo puse:
system("PAUSE");
return 0; ?

A ver si me podeis decir como estaria bien del todo, muchas gracias por la ayuda.

#include <stdio.h>
#include <stdlib.h>
#include <conio.c>
#include <time.h>

struct fechas
{
int dia_semana;
int dia;
int mes;
int ano;
};

struct fechas ordenador;

struct agenda
{
char nombre[50];
char apellido1[50];
char apellido2[50];
int edad[3];
int telefono[9];
int movil[9];
char mail[30];
int fecha[10];
struct fechas ordenador;
};
struct agenda contactos[100];

void escribir_menu ()
{
printf ("1- Agregar un contacto\n");
printf ("2- Listar todos los contactos\n");
printf ("3- Buscar un contacto por nombre\n");
printf ("4- Borrar un contacto\n");
printf ("5- Quien cumple los annos hoy\n");
printf ("6- Salir\n\n");
printf ("Selecciona una opcion: ");
fflush(stdin);
scanf("%d",&opcion);

void agregar_contacto ()
{
if(cont == MAX)
{
printf("Agenda llena.");
getch();
}
else
{
cont++;
system("cls");
printf("Introduzca un nombre: ");
fflush(stdin);
scanf("%s", contactos[cont].nombre);
printf("Introduzca el primer apellido: ");
fflush(stdin);
scanf("%s", contactos[cont].apellido1);
printf("Introduzca el segundo apellido: ");
fflush(stdin);
scanf("%s", contactos[cont].apellido2);
printf("Introduzca la edad: ");
fflush(stdin);
scanf("%s", contactos[cont].edad);
printf("Introduzca el numero de telefono: ");
fflush(stdin);
scanf("%s", contactos[cont].telefono);
printf("Introduzca el movil: ");
scanf("%s", contactos[cont].movil);
printf("Introduzca el e-mail: ");
fflush(stdin);
scanf("%s", contactos[cont].mail);
printf("Introducza la fecha de nacimiento: ");
fflush(stdin);
scanf("%s", contactos[cont].fecha);
}

printf("\n Pulse enter para volver al menu.");
getch();
system("cls");
}

void listar ()
{
system("cls");
for(i=1;i<=cont;i++)
{
printf("Nombre: %s\n", contactos[*i].nombre);
printf("Apellido primero: %s\n", contactos[*i].apellido1);
printf("Apellido segundo: %s\n", contactos[*i].apellido2);
printf("Edad: %s\n", contactos[*i].edad);
printf("Telefono: %s\n", contactos[*i].telefono);
printf("Movil: %s\n", contactos[*i].movil);
printf("E-mail: %s\n", contactos[*i].mail);
printf("Fecha de nacimiento: %s\n", contactos[*i].fecha);
}
getch();
system("cls");
}

void buscar ()
{
system("cls");
fflush(stdin);
printf("Introduzca el nombre del contacto que desea buscar: ");
gets(contactos2);
for(i=1;i<=MAX;i++)
{
if(strcmp(contactos2,contactos[*i].nombre)==0)
{
printf("Nombre: %s\n", contactos[*i].nombre);
printf("Apellido primero: %s\n", contactos[*i].apellido1);
printf("Apellido segundo: %s\n", contactos[*i].apellido2);
printf("Edad: %s\n", contactos[*i].edad);
printf("Telefono: %s\n", contactos[*i].telefono);
printf("Movil: %s\n", contactos[*i].movil);
printf("E-mail: %s\n", contactos[*i].mail);
printf("Fecha de nacimiento: %s\n", contactos[*i].fecha);
}
}
getch();
system("cls");
}

void borrar ()
{
system("cls");
fflush(stdin);
printf("Introduzca el nombre del contacto que desea borrar: ");
scanf("%s",contactos3);

for (i=0;i<MAX;i++)
{
if(strcmp(contactos3,contactos[i].nombre)==0)
{
contactos[i]=contactos[i+1];
for(x=i;x<cont;x++)
{
contactos[x]=contactos[x+1];
}
x--;
cont--;
}
}
system("cls");
}

void cumple ()
{

temp = time(NULL);

fecha = localtime(&temp);

ordenador.dia_semana=fecha->tm_wday;

ordenador.dia=fecha->tm_mday;

ordenador.mes=fecha->tm_mon;

ordenador.mes=ordenador.mes+1;

ordenador.ano=fecha->tm_year;

ordenador.ano=ordenador.ano+1900;
}

system("PAUSE");
return 0;
}
int main(int argc, char *argv[])
{
int opcion,i=0,x=0;
int MAX=100,cont=0,pos=0;
char contactos2[50],contactos3[50];

time_t temp;
struct tm *fecha;

do{

fflush(stdin);
scanf("%d",&opcion);

switch(opcion)
{
case 1:
agregar_contacto ();
break;

case 2: //Listar todo
liscar ();
break;

case 3: //Buscar por nombre
buscar ();
break;

case 4: //Borrar
borrar ();
break;

case 5: //¿Quien cumple años?
cumple ();
break;

case 6: //Salir

break;

}
}while (opcion!<6);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:AGENDA CON FUNCIONES EN C

Publicado por johan (1 intervención) el 27/04/2007 02:57:36
Hola ...

Esta buena el programa de la agenda, pero seria mucha molestia de decirme como de hace una agenda con con estructuras( struct) en terminos de archivo, con menu y opcion de busqueda y visualizar datos...porfa ayudame a solucionar este problema...

agradezco su colaboracion....

att: johan
Universitario
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar