Está en la página 1de 22

Agenda 2011

/*
Agenda
Desarrollado por: Juan Camilo Velsquez Rivera
Universidad Autnoma de Manizales (UAM)
Noviembre 2011
*/
#include<conio.h>
#include<stdio.h>
#include<string.h>
struct datos//Creacin de un nuevo tipo de dato llamado datos
{
char nombre[40];
char correo[40];
char tel[20];
};
datos contacto[50];//Declaracin de la variable contacto de tipo datos
void nuevo();//Declaracin del proceso nuevo, el cual agrega un nuevo contacto
void mostrar();//Declaracin del proceso mostrar, el cual muestra los contacto existentes
void buscar();//Declaracin del proceso buscar, el cual busca contactos
void editar();//Declaracin del proceso editar, el cual modifica informacin de algn contacto

Agenda 2011
int c=(-1);//Declaracin de la variable "c", la cual lleva la cuenta del nmero de contactos. Se incializa en -1 ya que los arreglos inician en 0
main()
{
int w=0, opc, rh, rv;//"w" es la variable encargada de controlar el ciclo principal
while (w==0)
{
clrscr();
for(rh=12; rh<=67; rh++)//"rh" es la variable para las lneas horizontales del cuadro del men principal
{
textcolor(400);
gotoxy(rh,6); cprintf("");
gotoxy(rh,19); cprintf("");
}
for(rv=7; rv<=18; rv++)//"rh" es la variable para las lneas verticales del cuadro del men principal
{
textcolor(400);
gotoxy(12,rv); cprintf("");
gotoxy(67,rv); cprintf("");
}
gotoxy(38,7); textcolor(25); cprintf("MEN");

Agenda 2011
gotoxy(14,10); printf("Presione el nmero de la opcin que desee y confirme");
gotoxy(14,12); printf("1. Agregar Contacto");
gotoxy(14,13); printf("2. Mostrar Contactos");
gotoxy(14,14); printf("3. Buscar Contacto");
gotoxy(14,15); printf("4. Modificar Contacto");
gotoxy(14,16); printf("5. Salir");
gotoxy(39,18); scanf("%i", &opc);
switch(opc)
{
case 1:
nuevo();//Invocacin al proceso "nuevo"
break;
case 2:
mostrar();//Invocacin al proceso "mostrar"
break;
case 3:
buscar();//Invocacin al proceso "buscar"
break;
case 4:
editar();//Invocacin al proceso "editar"

Agenda 2011
break;
case 5:
clrscr();
gotoxy(35,12); textcolor(10); cprintf("Hasta luego");
w=1;//Se modifica la variable "w" para que el programa termine
break;
default:
gotoxy(6,20); textcolor(12); cprintf("Por favor ingrese el nmero correspondiente a alguna de las opciones\n");
break;
}
getch();
}
}
void nuevo()
{
int d=0, d1=0, opc1;//"d" es la variable que controla el ciclo para agregar contactos, "d1" controla el ciclo para cuando se ingresa una opcin incorrecta
do
{
clrscr();
c=c+1;//Cada vez que se ingresa al ciclo de agregar contacto, la variable "c" aumenta en 1 y as lleva la cuenta del nmero de contactos

Agenda 2011
gotoxy(36,2); textcolor(9); cprintf("NUEVO CONTACTO");
gotoxy(1,3); textcolor(15); cprintf("________________________________________________________________________________");
gotoxy(2,5); printf("Nombre(s) y Apellidos: ");
gets(contacto[c].nombre);
gets(contacto[c].nombre);
gotoxy(2,6); printf("Telfono: ");
gets(contacto[c].tel);
gotoxy(2,7); printf("Correo Electrnico: ");
gets(contacto[c].correo);
gotoxy(2,9); printf("Nuevo contacto guardado");
gotoxy(2,11); printf("Desea:");
gotoxy(2,12); printf("1. Agregar un nuevo contacto");
gotoxy(2,13); printf("2. Volver al men principal\n");
do
{
scanf("%i", &opc1);
switch(opc1)//Decide cul de las opciones ingres el usuario y ejecuta el cdigo correspondiente
{
case 1:
d1=1;

Agenda 2011
break;
case 2:
d1=1;
d=1;
break;
default:
gotoxy(6,16); textcolor(12); cprintf("Por favor ingrese el nmero correspondiente a alguna de las opciones");
break;
}
}while(d1==0);
}while(d==0);
}
void mostrar()
{
int i;//Declaracin de la variable "i", la cual es la variable para el ciclo que muestra los contactos
clrscr();
gotoxy(35,2); textcolor(9); cprintf("CONTACTOS");
gotoxy(1,3); textcolor(15); cprintf("________________________________________________________________________________");
textcolor(3);
gotoxy(2,5); cprintf("N");

Agenda 2011
gotoxy(17,5); cprintf("Nombre");
gotoxy(38,5); cprintf("Telfono");
gotoxy(61,5); cprintf("Correo");
for(i=0; i<=c; i++)
{
gotoxy(2,(7+i)); printf("%i", (i+1));
textcolor(3); gotoxy(4,(7+i)); cprintf("|");
gotoxy(5,(7+i)); puts(contacto[i].nombre);
textcolor(3); gotoxy(36,(7+i)); cprintf("|");
gotoxy(37,(7+i)); puts(contacto[i].tel);
textcolor(3); gotoxy(48,(7+i)); cprintf("|");
gotoxy(49,(7+i)); puts(contacto[i].correo);
}
}
void buscar()
{
char nombre[30], tel[10], correo[30];//"nombre", "tel" y "correo" son las variable que se leen segn corresponda para buscar respectivamente algn nombre, telfono o correo
int b, bc, bn, bt, cb, d=0, d1=0, d2=0, opc3;//"b" es la variable del ciclo de bsqueda, "cb" es la variable que del criterio de bsqueda, "d" es la variable que controla el ciclo de
buscar, "d1" y "d2" son las variables que controlan los ciclos de opcin
do

Agenda 2011
{
clrscr();
gotoxy(32,2); textcolor(9); cprintf("BUSCAR CONTACTO");
gotoxy(1,3); textcolor(15); cprintf("________________________________________________________________________________");
gotoxy(2,5); printf("Ingrese el criterio de bsqueda: ");
gotoxy(2,7); printf("1. Nombre");
gotoxy(2,8); printf("2. Telfono");
gotoxy(2,9); printf("3. Correo\n");
do
{
scanf("%i", &cb);
switch(cb)//Decide cul de las opciones ingres el usuario y ejecuta el cdigo correspondiente
{
case 1:
clrscr();
gotoxy(32,2); textcolor(9); cprintf("BUSCAR CONTACTO");
gotoxy(1,3); textcolor(15); cprintf("________________________________________________________________________________");
gotoxy(2,5); printf("Ingrese el nombre a buscar: ");
gets(nombre);
gets(nombre);

Agenda 2011
textcolor(3);
gotoxy(2,7); cprintf("N");
gotoxy(18,7); cprintf("Nombre");
gotoxy(39,7); cprintf("Telfono");
gotoxy(62,7); cprintf("Correo");
bn=0;
for(b=0; b<=c; b++)
{
if(NULL!=strstr(contacto[b].nombre,nombre))//La funcin "strstr" busca una cadena dentro de otra, y as cuando encuentra alguna coincidencia imprime el contacto
{
bn=bn+1;//Lleva la cuenta del nmero de contactos encontrados por nombre
gotoxy(2,(8+bn)); printf("%i", (b+1));
textcolor(3); gotoxy(5,(8+bn)); cprintf("|");
gotoxy(6,(8+bn)); puts(contacto[b].nombre);
textcolor(3); gotoxy(37,(8+bn)); cprintf("|");
gotoxy(38,(8+bn)); puts(contacto[b].tel);
textcolor(3); gotoxy(49,(8+bn)); cprintf("|");
gotoxy(50,(8+bn)); puts(contacto[b].correo);
}
}

Agenda 2011
if(bn==0)
{
gotoxy(26,10); printf("No se encontraron resultados");
}
else
{
gotoxy(24,(10+bn)); printf("Se encontraron %i coincidencias", bn);
}
d1=1;
break;
case 2:
clrscr();
gotoxy(32,2); textcolor(9); cprintf("BUSCAR CONTACTO");
gotoxy(1,3); textcolor(15); cprintf("________________________________________________________________________________");
gotoxy(2,5); printf("Ingrese el telfono a buscar: ");
gets(tel);
gets(tel);
textcolor(3);
gotoxy(2,7); cprintf("N");
gotoxy(18,7); cprintf("Nombre");

10

Agenda 2011
gotoxy(39,7); cprintf("Telfono");
gotoxy(62,7); cprintf("Correo");
bt=0;
for(b=0; b<=c; b++)
{
if(NULL!=strstr(contacto[b].tel,tel))
{
bt=bt+1;//Lleva la cuenta del nmero de contactos encontrados por telfono
gotoxy(2,(8+bt)); printf("%i", (b+1));
textcolor(3); gotoxy(5,(8+bt)); cprintf("|");
gotoxy(6,(8+bt)); printf("%s", contacto[b].nombre);
textcolor(3); gotoxy(37,(8+bt)); cprintf("|");
gotoxy(38,(8+bt)); printf("%s", contacto[b].tel);
textcolor(3); gotoxy(49,(8+bt)); cprintf("|");
gotoxy(50,(8+bt)); printf("%s", contacto[b].correo);
}
}
if(bt==0)
{
gotoxy(26,10); printf("No se encontraron resultados");

11

Agenda 2011
}
else
{
gotoxy(24,(10+bt)); printf("Se encontraron %i coincidencias", bt);
}
d1=1;
break;
case 3:
clrscr();
gotoxy(32,2); textcolor(9); cprintf("BUSCAR CONTACTO");
gotoxy(1,3); textcolor(15); cprintf("________________________________________________________________________________");
gotoxy(2,5); printf("Ingrese el correo a buscar: ");
gets(correo);
gets(correo);
textcolor(3);
gotoxy(2,7); cprintf("N");
gotoxy(18,7); cprintf("Nombre");
gotoxy(39,7); cprintf("Telfono");
gotoxy(62,7); cprintf("Correo");
bc=0;

12

Agenda 2011
for(b=0; b<=c; b++)
{
if(NULL!=strstr(contacto[b].correo,correo))
{
bc=bc+1;//Lleva la cuenta del nmero de contactos entontrados por correo
gotoxy(2,(8+bc)); printf("%i", (b+1));
textcolor(3); gotoxy(5,(8+bc)); cprintf("|");
gotoxy(6,(8+bc)); printf("%s", contacto[b].nombre);
textcolor(3); gotoxy(37,(8+bc)); cprintf("|");
gotoxy(38,(8+bc)); printf("%s", contacto[b].tel);
textcolor(3); gotoxy(49,(8+bc)); cprintf("|");
gotoxy(50,(8+bc)); printf("%s", contacto[b].correo);
}
}
if(bc==0)
{
gotoxy(26,10); printf("No se encontraron resultados");
}
else
{

13

Agenda 2011
gotoxy(24,(10+bc)); printf("Se encontraron %i coincidencias", bc);
}
d1=1;
break;
default:
gotoxy(6,15); textcolor(12); cprintf("Por favor ingrese el nmero correspondiente a alguna de las opciones");
break;
}
}while(d1==0);
printf("\n\n Desea:");
printf("\n 1. Realizar una nueva bsqueda");
printf("\n 2. Volver al men principal\n");
do
{
scanf("%i", &opc3);
switch(opc3)//Decide cul de las opciones ingres el usuario y ejecuta el cdigo correspondiente
{
case 1:
d2=1;
break;

14

Agenda 2011
case 2:
d2=1;
d=1;
break;
default:
gotoxy(6,15); textcolor(12); cprintf("Por favor ingrese el nmero correspondiente a alguna de las opciones");
break;
}
}while(d2==0);
}while(d==0);
}
void editar()
{
char nombre[30];//"nombre" es la variable que se utiliza para encontrar el contacto que se desea modificar
int b, d=0, d1=0, d2=0, mc, opc4, opc41;//"b" es la variable del ciclo de bsqueda del contacto a modificar; "d", "d1", y "d2" cumplen la misma funcin que en los procesos
anteriores
do
{
mc=0;
clrscr();

15

Agenda 2011
gotoxy(31,2); textcolor(9); cprintf("MODIFICAR CONTACTO");
gotoxy(1,3); textcolor(15); cprintf("________________________________________________________________________________");
gotoxy(2,5); printf("Ingrese el nombre completo del contacto que desea modificar: ");
gotoxy(2,6); printf("(En caso de no saber el nombre completo vaya a buscar contacto)");
gotoxy(2,8); gets(nombre);gets(nombre);
for(b=0; b<=c; b++)
{
if(0==strcmp(contacto[b].nombre,nombre))//La funcin "strcmp" compara dos cadenas de caracteres, y si son iguales retorna un 0
{
mc=mc+1;//Se utiliza para identificar si el contacto que se desea modificar ha sido encontrado o no
gotoxy(2,10); printf("Desea modificar:");
gotoxy(2,12); printf("1. Nombre");
gotoxy(2,13); printf("2. Telfono");
gotoxy(2,14); printf("3. Correo");
gotoxy(2,15); printf("4. Nombre y telfono");
gotoxy(2,16); printf("5. Nombre y correo");
gotoxy(2,17); printf("6. Telfono y correo");
gotoxy(2,18); printf("7. Nombre, telfono y correo");
do
{

16

Agenda 2011
gotoxy(39,20); scanf("%i", &opc4);
switch(opc4)//Decide cul de las opciones ingres el usuario y ejecuta el cdigo correspondiente
{
case 1:
clrscr();
gotoxy(31,2); textcolor(9); cprintf("MODIFICAR CONTACTO");
gotoxy(1,3); textcolor(15); cprintf("________________________________________________________________________________");
gotoxy(2,5); printf("Ingrese el nuevo nombre: ");
gets(contacto[b].nombre); gets(contacto[b].nombre);
gotoxy(29,8); printf("Nuevo nombre guardado");
d1=1;
break;
case 2:
clrscr();
gotoxy(31,2); textcolor(9); cprintf("MODIFICAR CONTACTO");
gotoxy(1,3); textcolor(15); cprintf("________________________________________________________________________________");
gotoxy(2,6); printf("Ingrese el nuevo telfono: ");
gets(contacto[b].tel); gets(contacto[b].tel);
gotoxy(28,8); printf("Nuevo telfono guardado");
d1=1;

17

Agenda 2011
break;
case 3:
clrscr();
gotoxy(31,2); textcolor(9); cprintf("MODIFICAR CONTACTO");
gotoxy(1,3); textcolor(15); cprintf("________________________________________________________________________________");
gotoxy(2,5); printf("Ingrese el nuevo correo: ");
gets(contacto[b].correo); gets(contacto[b].correo);
gotoxy(29,8); printf("Nuevo correo guardado");
d1=1;
break;
case 4:
clrscr();
gotoxy(31,2); textcolor(9); cprintf("MODIFICAR CONTACTO");
gotoxy(1,3); textcolor(15); cprintf("________________________________________________________________________________");
gotoxy(2,5); printf("Ingrese el nuevo nombre: ");
gets(contacto[b].nombre); gets(contacto[b].nombre);
gotoxy(2,6); printf("Ingrese el nuevo telfono: ");
gets(contacto[b].tel);
gotoxy(24,9); printf("Nuevo nombre y telfono guardados");
d1=1;

18

Agenda 2011
break;
case 5:
clrscr();
gotoxy(31,2); textcolor(9); cprintf("MODIFICAR CONTACTO");
gotoxy(1,3); textcolor(15); cprintf("________________________________________________________________________________");
gotoxy(2,5); printf("Ingrese el nuevo nombre: ");
gets(contacto[b].nombre); gets(contacto[b].nombre);
gotoxy(2,6); printf("Ingrese el nuevo correo: ");
gets(contacto[b].correo);
gotoxy(29,9); printf("Nuevo nombre y correo guardados");
d1=1;
break;
case 6:
clrscr();
gotoxy(31,2); textcolor(9); cprintf("MODIFICAR CONTACTO");
gotoxy(1,3); textcolor(15); cprintf("________________________________________________________________________________");
gotoxy(2,5); printf("Ingrese el nuevo telfono: ");
gets(contacto[b].tel); gets(contacto[b].tel);
gotoxy(2,6); printf("Ingrese el nuevo correo: ");
gets(contacto[b].correo);

19

Agenda 2011
gotoxy(24,9); printf("Nuevo telfono y correo guardados");
d1=1;
break;
case 7:
clrscr();
gotoxy(31,2); textcolor(9); cprintf("MODIFICAR CONTACTO");
gotoxy(1,3); textcolor(15); cprintf("________________________________________________________________________________");
gotoxy(2,5); printf("Ingrese el nuevo nombre: ");
gets(contacto[b].nombre); gets(contacto[b].nombre);
gotoxy(2,6); printf("Ingrese el nuevo telfono: ");
gets(contacto[b].tel);
gotoxy(2,7); printf("Ingrese el nuevo correo: ");
gets(contacto[b].correo);
gotoxy(20,10); printf("Nuevo nombre, telfono y correo guardados");
d1=1;
break;
default:
gotoxy(6,22); textcolor(12); cprintf("Por favor ingrese el nmero correspondiente a alguna de las opciones");
break;
}

20

Agenda 2011
}while(d1==0);
}
}
if(mc==0)//Si no se encontr ningn contacto, entonces "mc" nunca se modific y por lo tanto continu valiendo 0; lo que quiere decir que el contacto no se encotr
{
gotoxy(14,11); printf("El nombre de contacto ingresado no ha sido encontrado");
}
printf("\n\n Desea:");
printf("\n 1. Realizar una nueva modificacin");
printf("\n 2. Volver al men principal\n");
do
{
scanf("%i", &opc41);
switch(opc41)//Decide cul de las opciones ingres el usuario y ejecuta el cdigo correspondiente
{
case 1:
d2=1;
break;
case 2:
d2=1;

21

Agenda 2011
d=1;
break;
default:
textcolor(12); cprintf("\n\n

Por favor ingrese el nmero correspondiente a alguna de las opciones");

break;
}
}while(d2==0);
}while(d==0);
}

22

También podría gustarte