#include <iostream.h>
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <conio.c>
struct fecha
{
int dd;
int mm;
char aaaa[4];
};
struct direccion
{
char dir[50];
char disto[50];
char prov[50];
char dpto[50];
char pais[50];
};
struct persona
{
char cod[5];
char ap[40];
char am[20];
char nom[50];
char sex[2];
int telf;
fecha fnac;
direccion dire;
};
int menu();
void lecturapers(persona **p,int *dim,int *error);
void mostrarpers(persona *p,int dim,int error);
//Principal
//*********
int main()
{ persona *p;
int opcion,np,opbus,e,pos;
char cod[5],dato[50];
textbackground(15);
textcolor(0);
do{
opcion=menu();
switch(opcion)
{
case 1: lecturapers(&p,&np,&e);
break;
case 2: mostrarpers(p,np,e);
break;
}
}while(opcion);
return 0;
}
//Menu de Opciones
//****************
int menu()
{ int op,x,y,error=0;
x=22;
y=5;
do{
system("cls");
gotoxy(x+10,y-2);cout<<"DIRECTORIO TELEFONICO";
gotoxy(x+10,y-1);cout<<"---------------------";
gotoxy(x,y); cout<<"**************************************";
gotoxy(x,y+1);cout<<"* MENU PRINCIPAL *";
gotoxy(x,y+2);cout<<"* Ingresar Personas..........[1] *";
gotoxy(x,y+3);cout<<"* Mostrar Personas...........[2] *";
if(error==1)
{
gotoxy(x+10,y+11);textcolor(RED);cout<<"Operacion Invalida";textcolor(0);
}
error=1;
gotoxy(x,y+12);cout<<"ELEGIR OPCION:";cin>>op;
}while(op<0 || op>10);
return(op);
}
//Lectura de personas
//*******************
void lecturapers(persona **p,int *dim,int *error)
{ FILE *F;
int i,j,k,l,n,condi=0,condi1=0;
char op,cod[5],auxap[50];
system("CLS");
cout<<"Numero de personas que desea ingresar:";cin>>n;
*p = (struct persona*) malloc (n*sizeof (struct persona));
if(*p==NULL)
{
cout<<"NO HAY ESPACIO..Dimension fuera de rango...\n\n"<<endl;
system("pause");
exit(1);
}
F = fopen("D:/trabajo/Agenda.dat","ab+");
if(F==NULL)
{
printf(" No se puede abrir el archivo\n");
system("pause");
exit(1);
}
for(i=0;i<n;i++)
{
system("CLS");
gotoxy(5,4);printf("PERSONA %d ",i+1);
gotoxy(55,5);cout<<"Status:";
gotoxy(18,7);cout<<"DATOS PERSONASLES:";
gotoxy(18,8);cout<<"-----------------";
gotoxy(18,9);cout<<"Nombre(s):";
gotoxy(50,9);gets((*p+i)->nom);
gotoxy(18,10);cout<<"Apellido Paterno:";
gotoxy(50,10);gets((*p+i)->ap);
gotoxy(18,11);cout<<"Apellido Materno:";
gotoxy(50,11);gets((*p+i)->am);
gotoxy(18,12);cout<<"Sexo(F:Femenino,M:masculino):";
gotoxy(50,12);gets((*p+i)->sex);
do{
if(strcmp((*p+i)->sex,"f")==0)
{
strcpy((*p+i)->sex,"F");
condi=1;
}
else
{
if(strcmp((*p+i)->sex,"m")==0)
{
strcpy((*p+i)->sex,"M");
condi=1;
}
else
{
gotoxy(62,5);textcolor(RED);cout<<"Sexo Invalido";textcolor(0);
gotoxy(50,12);gets((*p+i)->sex);
}
}
}while(condi!=1);
gotoxy(18,13);cout<<"Fecha de Nac:";
gotoxy(50,13);cout<<"Dia:";
gotoxy(54,13);cin>>(*p+i)->fnac.dd;
do{
if((*p+i)->fnac.dd>31 ||(*p+i)->fnac.dd<0)
{
gotoxy(62,5);textcolor(RED);cout<<"Dia Invalido";textcolor(0);
gotoxy(54,13);cin>>(*p+i)->fnac.dd;
}
}while((*p+i)->fnac.dd>31 ||(*p+i)->fnac.dd<0);
gotoxy(57,13);cout<<"Mes:";
gotoxy(61,13);cin>>(*p+i)->fnac.mm;
do{
if((*p+i)->fnac.mm>12 ||(*p+i)->fnac.mm<0)
{
gotoxy(62,5);textcolor(RED);cout<<"Mes Invalido";textcolor(0);
gotoxy(61,13);cin>>(*p+i)->fnac.mm;
}
}while((*p+i)->fnac.mm>12 ||(*p+i)->fnac.mm<0);
gotoxy(64,13);printf("A%co:",165);
gotoxy(68,13);cin>>(*p+i)->fnac.aaaa;
/* do{
if((*p+i)->fnac.aaaa>2009 ||(*p+i)->fnac.aaaa<0)
{
gotoxy(62,5);textcolor(RED);cout<<"Mes Invalido";textcolor(0);
gotoxy(68,13);cin>>(*p+i)->fnac.aaaa;
}
}while((*p+i)->fnac.aaaa>2009 ||(*p+i)->fnac.aaaa<0); */
gotoxy(18,14);printf("Desea ocultar su a%co(s/n):",164);
gotoxy(50,14);cin>>op;
do{
if(op=='s' || op=='S')
{
strcpy((*p+i)->fnac.aaaa,"*"); //asignar el 0 para los que ocultan su fecha
condi=1;
}
else
{
if(op=='n' || op=='N')
{
condi=1; //se mantiene inalterable
}
else
{
gotoxy(62,5);textcolor(RED);cout<<"Opcion Invalida";textcolor(0);
gotoxy(50,14);cin>>op;
}
}
}while(condi!=1);
fflush(stdin);
gotoxy(18,16);cout<<"UBICACION:";
gotoxy(18,17);cout<<"---------";
gotoxy(18,18);cout<<"Direccion:";
gotoxy(50,18);gets((*p+i)->dire.dir);
gotoxy(18,19);cout<<"Distrito:";
gotoxy(50,19);gets((*p+i)->dire.disto);
gotoxy(18,20);cout<<"Provincia:";
gotoxy(50,20);gets((*p+i)->dire.prov);
gotoxy(18,21);cout<<"Departamento:";
gotoxy(50,21);gets((*p+i)->dire.dpto);
gotoxy(18,22);cout<<"Pais:";
gotoxy(50,22);gets((*p+i)->dire.pais);
gotoxy(18,23);cout<<"Telefono:";
gotoxy(50,23);cin>>(*p+i)->telf;
[B]//General el codigo
//*****************
for(j=0;j<2;j++)
{
cod[j]=(*p+i)->ap[j];
}
for(k=0;k<2;k++)
{
cod[j]=(*p+i)->am[k];
j++;
}
for(l=0;l<1;l++)
{
cod[j]=(*p+i)->nom[l];
}
strcpy((*p+i)->cod,cod);
gotoxy(5,7);cout<<"CODIGO";
gotoxy(5,8);cout<<"GENERADO:";
gotoxy(5,9);cout<<(*p+i)->cod; [/B]
gotoxy(18,25);system("pause");
}
*dim=n;
*error=1;
}
//Visualizacion de personas
//*************************
void mostrarpers(persona *p,int dim,int error)
{ //se mostrara dos personas por pantalla
int i,x,y,z,w;
x=8;y=7;
z=45;w=7;
system("cls");
//evita el error de mostrar sin crear
if(error!=1)
{
gotoxy(30,10);printf("'No haz ingresado datos'");
gotoxy(30,11);printf(" El programa se cerrara");
gotoxy(40,25);system("pause");
exit(1);
}
if(p==NULL)
{
printf("La Agenda esta vacia...\n\n");
}
else
{
for(i=0;i<dim;i++)
{
gotoxy(29,1);cout<<"VISUALIZACION DE PERSONAS";
gotoxy(29,2);cout<<"*************************";
gotoxy(x-3,4);cout<<"Numero de personas:"<<dim;
gotoxy(x,y-1);cout<<"CODIGO:"<<((p+i)->cod);
gotoxy(x,y); cout<<"Nombre(s):"<<((p+i)->nom);
[B] gotoxy(x,y+11);cout<<"Apellido Paterno:"<<((p+i)->ap);[/B]
gotoxy(x,y+2);cout<<"Apellido Materno:"<<((p+i)->am);
gotoxy(x,y+3);cout<<"Sexo:"<<(p+i)->sex;
gotoxy(x,y+4);cout<<"Telefono:"<<(p+i)->telf;
gotoxy(x,y+5);printf("Cumplea%cos-Fecha de Nac:",164);
if(strcmp((p+i)->fnac.aaaa,"*")==0)
{
cout<<(p+i)->fnac.dd<<"/"<<(p+i)->fnac.mm<<"(*)";
}
else
{
cout<<(p+i)->fnac.dd<<"/"<<(p+i)->fnac.mm<<"/"<<(p+i)->fnac.aaaa;
}
gotoxy(x,y+6);cout<<"Direccion:"<<((p+i)->dire.dir);
gotoxy(x,y+7);cout<<"Distrito:"<<((p+i)->dire.disto);
gotoxy(x,y+8);cout<<"Provincia:"<<(p+i)->dire.prov;
gotoxy(x,y+9);cout<<"Departamento:"<<(p+i)->dire.dpto;
gotoxy(x,y+10);cout<<"Pais:"<<(p+i)->dire.pais;
fflush(stdin);
gotoxy(5,20);cout<<"Se marca (*) cuando la persona quiere ocultar su anio de nacimiento";
gotoxy(40,25);system("pause");
system("cls");
}
}
}