You are on page 1of 7

#include<stdio.

h>
#include<stdlib.h>
#include<conio.h>
#include<iostream.h>
#include<string.h>
struct NODO
{
char apellp[15],apellm[15],nom[15],dni[10];
struct per
{
char dia[5],mes[5],ao[10],edad[5];
}nac;
int num;
struct NODO *sgte;
};
struct NODO *cabecera;
struct NODO *cola;
int showmenu();
void insreg();
void modreg();
void delreg();
void showreg();
void busreg();
void main()
{
int op;
cabecera=0;
cola=0;
do{
clrscr();
op=showmenu();
switch(op)
{
case 1:clrscr();insreg();getch();break;
case 2:clrscr();showreg();getch();break;
case 3:clrscr();busreg();getch();break;
case 4:clrscr();modreg();getch();break;
case 5:clrscr();delreg();getch();break;
case 6:clrscr();break;
}
}while(op!=6);
}
int showmenu()
{
int op;
cout<<"\n\n >> MENU :\n";
cout<<" ____\n";
cout<<"(1)> INSERTAR NUEVO REGISTRO \n";
cout<<"(2)> MOSTRAR REGISTRO \n";
cout<<"(3)> BUSCAR EN LISTA\n";
cout<<"(4)> MODIFICAR REGISTRO \n";
cout<<"(5)> ELIMINAR REGISTRO \n";
cout<<"(6)> SALIR \n";
cout<<"\n\n> Elija Su Opcion : ";
cin>>op;
return op;
}
void insreg()
{
cout<<"\n INSERTANDO NUEVO REGISTRO\n";
struct NODO *nuevo;
nuevo=(struct NODO *)malloc(sizeof(struct NODO));
if(nuevo==0)
{
cout<<"NO EXISTE MEMORIA DISPONIBLE";
}
else
{
cout<<"\n> N° DE REGISTRO : ";
scanf("%d",&nuevo->num);
cout<<"\n> APELLIDO PATERNO :";fflush(stdin);
gets(nuevo->apellp);
cout<<"\n> APELLIDO MATERNO :";fflush(stdin);
gets(nuevo->apellm);
cout<<"\n> NOMBRE :";fflush(stdin);
gets(nuevo->nom);
cout<<"\n> D.N.I. :";fflush(stdin);
gets(nuevo->dni);
cout<<"\n> FECHA DE NACIMIENTO :";
cout<<"\n\n->> DIA : ";fflush(stdin);
gets(nuevo->nac.dia);
cout<<"\n->> MES : ";fflush(stdin);
gets(nuevo->nac.mes);
cout<<"\n->> AÑO : ";fflush(stdin);
gets(nuevo->nac.ao);
cout<<"\n-> EDAD : ";fflush(stdin)
;
gets(nuevo->nac.edad);
nuevo->sgte=0;
if(cabecera==0)
{
cabecera=nuevo;
cola=nuevo;
}
else
{
cola->sgte=nuevo;
cola=nuevo;
}
}
}
void modreg()
{
cout<<"\n MODIFICANDO UN REGISTRO DE LA LISTA\n";
struct NODO *indice;
indice=cabecera;
int num;
cout<<"\n-> NUMERO DE REGISTRO A MODIFICAR :\n\n|->> ";
scanf("%d",&num);
clrscr();
cout<<"\n MODIFICANDO UN REGISTRO DE LA LISTA";
printf("\n\n-> MODIFICANDO REGISTRO NUMERO %d :\n\n",num);
for(indice==cabecera;indice!=0;indice=indice->sgte)
{
while(indice->num==num)
{
cout<<"\n-> N° DE REGISTRO : ";
scanf("%d",&indice->num);
cout<<"\n-> APELLIDO PATERNO :";fflush(stdin);
gets(indice->apellp);
cout<<"\n-> APELLIDO MATERNO :";fflush(stdin);
gets(indice->apellm);
cout<<"\n-> NOMBRE :";fflush(stdin);
gets(indice->nom);
cout<<"\n-> D.N.I. :";fflush(stdin);
gets(indice->dni);
cout<<"\n-> FECHA DE NACIMIENTO :";
cout<<"\n\n->> DIA : ";fflush(stdin);
gets(indice->nac.dia);
cout<<"\n->> MES : ";fflush(stdin);
gets(indice->nac.mes);
cout<<"\n->> AÑO : ";fflush(stdin);
gets(indice->nac.ao);
cout<<"\n-> EDAD : ";fflush(stdin)
;
gets(indice->nac.edad);
break;
}
}
}
void delreg()
{
cout<<"\n BORRANDO UN REGISTRO";
struct NODO *indice1,*indice2,*indice3;
int num,numa,op;
if(cabecera==0 && cola==0)
{
cout<<"\n\n-> No hay elementos en la lista.";
}
if(cabecera==cola && cabecera!=0)
{
cabecera=0;
cola=0;
cout<<"\n\n-> Se elimino el unico registro existente.";
}
else
{
cout<<"\n\n-> ¿Que registro desea eliminar? :\n";
cout<<"\n-> El primero > 1 > ";
cout<<"\n-> El ultimo > 2 > ";
cout<<"\n-> O cualquier otro > 3 > ";
cout<<"\n-> Salir > 4 > \n\n|->> ";
scanf("%d",&op);
numa=num-1;
indice1=cabecera;
if(op==1)
{
indice2=cabecera->sgte;
free(cabecera);
cabecera=indice2;
cout<<"\n\n-> Se elimino el primer registro exitosamente
.";
}
if(op==2)
{
for(indice1==cabecera;indice1!=0;indice1=indice1->sgte)
{
if(indice1->num==(cola->num-1))
{
indice2=indice1;
}
if(indice1==cola)
{
indice2->sgte=indice1->sgte;
free(indice1);
cola=indice2;
}
}
cout<<"\n\n-> Se elimino el ultimo registro exitosamente
.";
}
if(op==3)
{
cout<<"\n\n-> REGISTRO QUE DESEA BORRAR : ";
scanf("%d",&num);
numa=num-1;
for(indice1==cabecera;indice1!=0;indice1=indice1->sgte)
{
if(indice1->num==numa)
{
indice2=indice1;
}
if(indice1->num==num)
{
indice2->sgte=indice1->sgte;
free(indice1);
}
}
cout<<"\n\n-> Se elimino el registro exitosamente.";
}
}
}
void showreg()
{
int op;
cout<<"\n MOSTRANDO UN REGISTRO";
cout<<"\n\n-> DESEA :\n\n|->> Mostrar el total de registros. (OPCION 1)"
;
cout<<"\n->> Mostrar un solo registro. (OPCION 2)\n\n|->> ";
scanf("%d",&op);
clrscr();
struct NODO *indice;
indice=cabecera;
if(op==1)
{
printf(" \n\n | N°| D.N.I. | FECH-NACIMIENTO | EDAD | N
OMBRE COMPLETO |\n");
printf(" ______________________________________________________
_______________ \n");
for(indice==cabecera;indice!=0;indice=indice->sgte)
{
printf("\n %d %s %s/%s/%s %s %s %s,
%s\n",indice->num,indice->dni,indice->nac.dia,indice->nac.mes,indice->nac.ao,ind
ice->nac.edad,indice->apellp,indice->apellm,indice->nom);
}
}
else
{
int num;
cout<<"\n\n-> NUMERO DE REGISTRO :";
scanf("%d",&num);
printf(" \n\n | N°| D.N.I. | FECH-NACIMIENTO | EDAD | N
OMBRE COMPLETO |\n");
printf(" ______________________________________________________
_______________ \n");
for(indice==cabecera;indice!=0;indice=indice->sgte)
{
if(num==indice->num)
printf("\n %d %s %s/%s/%s %s %s %s,
%s\n",indice->num,indice->dni,indice->nac.dia,indice->nac.mes,indice->nac.ao,ind
ice->nac.edad,indice->apellp,indice->apellm,indice->nom);
}
}
}
void busreg()
{
int op,a=0;
char dato[50];
struct NODO *indice;
indice=cabecera;
cout<<"\n BUSCANDO EN LA LISTA \n\n";
cout<<"-> SELECCIONE DATO QUE INGRESARA :\n\n";
cout<<"-<1> D.N.I.\n";
cout<<"-<2> EDAD\n";
cout<<"-<3> NOMBRE\n";
cout<<"-<4> APELLIDO PATERNO\n";
cout<<"-<5> APELLIDO MATERNO\n";
cout<<"\n\n->> ";
scanf("%d",&op);
cout<<"\n\n-> Ingrese dato :\n\n|->> ";fflush(stdin);
gets(dato);
switch(op)
{
// Comparando DNI //
case 1:
clrscr();
printf(" \n\n | N°| D.N.I. | FECH-NACIMIENTO | EDAD | N
OMBRE COMPLETO |\n");
printf(" ______________________________________________________
_______________ \n");
for(indice==cabecera;indice!=0;indice=indice->sgte)
{
if(strncmp(indice->dni,dato,8)==0)
{
printf("\n %d %s %s/%s/%s %s
%s %s, %s\n",indice->num,indice->dni,indice->nac.dia,indice->nac.mes,indice->na
c.ao,indice->nac.edad,indice->apellp,indice->apellm,indice->nom);
a=a+1;
}
}
if(a=0)
printf(" * No se encontraron elementos...");
break;
//Comparando EDAD//
case 2:
clrscr();
printf(" \n\n | N°| D.N.I. | FECH-NACIMIENTO | EDAD | N
OMBRE COMPLETO |\n");
printf(" ______________________________________________________
_______________ \n");
for(indice==cabecera;indice!=0;indice=indice->sgte)
{
if(strncmp(indice->nac.edad,dato,2)==0)
{
printf("\n %d %s %s/%s/%s %s
%s %s, %s\n",indice->num,indice->dni,indice->nac.dia,indice->nac.mes,indice->na
c.ao,indice->nac.edad,indice->apellp,indice->apellm,indice->nom);
a=a+1;
}
}
if(a=0)
printf(" * No se encontraron elementos...");
break;
//Comparando NOMBRE//
case 3:
clrscr();
printf(" \n\n | N°| D.N.I. | FECH-NACIMIENTO | EDAD | N
OMBRE COMPLETO |\n");
printf(" ______________________________________________________
_______________ \n");
for(indice==cabecera;indice!=0;indice=indice->sgte)
{
if(strncmp(indice->nom,dato,10)==0)
{
printf("\n %d %s %s/%s/%s %s
%s %s, %s\n",indice->num,indice->dni,indice->nac.dia,indice->nac.mes,indice->na
c.ao,indice->nac.edad,indice->apellp,indice->apellm,indice->nom);
a=a+1;
}
}
if(a=0)
printf(" * No se encontraron elementos...");
break;
//Comparando APELLIDO PATERNO//
case 4:
clrscr();
printf(" \n\n | N°| D.N.I. | FECH-NACIMIENTO | EDAD | N
OMBRE COMPLETO |\n");
printf(" ______________________________________________________
_______________ \n");
for(indice==cabecera;indice!=0;indice=indice->sgte)
{
if(strncmp(indice->apellp,dato,10)==0)
{
printf("\n %d %s %s/%s/%s %s
%s %s, %s\n",indice->num,indice->dni,indice->nac.dia,indice->nac.mes,indice->na
c.ao,indice->nac.edad,indice->apellp,indice->apellm,indice->nom);
a=a+1;
}
}
if(a=0)
printf(" * No se encontraron elementos...");
break;
//Comparando APELLIDO MATERNO//
case 5:
clrscr();
printf(" \n\n | N°| D.N.I. | FECH-NACIMIENTO | EDAD | N
OMBRE COMPLETO |\n");
printf(" ______________________________________________________
_______________ \n");
for(indice==cabecera;indice!=0;indice=indice->sgte)
{
if(strncmp(indice->apellm,dato,10)==0)
{
printf("\n %d %s %s/%s/%s %s
%s %s, %s\n",indice->num,indice->dni,indice->nac.dia,indice->nac.mes,indice->na
c.ao,indice->nac.edad,indice->apellp,indice->apellm,indice->nom);
a=a+1;
}
}
if(a=0)
printf(" * No se encontraron elementos...");
break;
}
}

You might also like