//BIBLIOTECAS EMPLEADAS
//Bibliotecas
#include<stdlib.h>
#include<math.h>
#include<ctype.h>
#include<alloc.h>
#include<string.h>
#include<dos.h>
#include<stdio.h>
#include<bios.h>
#include<conio.h>
#define color1 7
#define color2 127

//VARIABLES GLOBALES
struct datos{   char apellidos[21];
		char nombre[16];
		char direccion[21];
		char localidad[21];
		char provincia[11];
		char cod_postal[6];
		char edad[3];
		char tfno[10];
		char dni[10];
		char instrumento[11];
	     }datos;

typedef struct nodo{   char apellidos[21];
		       char nombre[16];
		       char direccion[21];
		       char localidad[21];
		       char provincia[11];
		       char cod_postal[6];
		       char edad[3];
		       char tfno[10];
		       char dni[10];
		       char instrumento[11];
		       struct nodo *sig;
		   }PERSONAS;

struct simbolo{   char letra;

	      }simbolo;

typedef struct nodo1{   char letra;
			struct nodo1 *sig;
			struct nodo1 *ant;

		    }LET;
int matriz1=0;
int opcion=1;
PERSONAS *plista=NULL;
char matriz2[80];

//DECLARACION DE FUNCIONES
void graba();
void diario(int subopcion);
void captura(int tam,int elec,char nombre[80],int x,int y);
void MUSICOS(int subopcion);
void recupera();
void introducir();
void borrar();
void contenido();
void busca();
void visualizadag(void);
void visualizaag(char nombre[8]);
LET * introduceag(char nombre[8]);
void hora(void);
void creditos(void);
void dibujaeleccion();
void dibujasubmenu1();
void recuadro(int x,int y,int x1,int y1,int o);
void marco(int x,int y,int x1,int y1);
void ayudas();
void menu(void);

//FUNCION PRINCIPAL
void main()
{
int a=0;
recupera();
clrscr();
textbackground(0);
_setcursortype(_NOCURSOR);
menu();
while(opcion!=6||a!=7181)
	{
	dibujaeleccion();
	while(!kbhit())
	 {
	 hora();
	 }
	a=bioskey(0);
	if(a==7181&&opcion!=6) dibujasubmenu1();
	if(a==19712) opcion++;
	if(a==19200) opcion--;
	if(opcion==0) opcion=6;
	if(opcion==7) opcion=1;
	}
graba();
//system("copy indiceag.dat indiceag.seg");
//system("copy agenda.dat agenda.seg");
//system("copy tel.dat tel.seg");
_setcursortype(_NORMALCURSOR);
textbackground(0);
clrscr();
}

//DIBUJA EL INTERFAZ GENERAL
void menu()
{
clrscr();
textattr(color1);
recuadro(2,2,79,24,1);
recuadro(2,1,79,1,0);
recuadro(2,25,79,25,0);
}

//DIBUJA ELECCION
void dibujaeleccion()
{
//textattr(LIGHTGRAY);
textattr(color2);
gotoxy(5,1);
cprintf("Actuaciones    Musicos    Organismos    Archivos    Informacion    Salir");
gotoxy(3,25);
cprintf("Copyrights() o derechos de copia()");
textattr(color1);
switch(opcion)
	{
	case 1:gotoxy(5,1);cprintf("Actuaciones");break;
	case 2:gotoxy(20,1);cprintf("Musicos");break;
	case 3:gotoxy(31,1);cprintf("Organismos");break;
	case 4:gotoxy(45,1);cprintf("Archivos");break;
	case 5:gotoxy(57,1);cprintf("Informacion");break;
	case 6:gotoxy(72,1);cprintf("Salir");break;
	}
}

//DIBUJA SUBMENUS
void dibujasubmenu1()
{
//subopcion son CURSOS,subopcion1 son CLASES DE CURSOS
//subopcion son eleccion de submenus
int a=0,subopcion1=1,subopcion2=1,subopcion3=1;
int subopcion4=1,subopcion41=1,subopcion42=1,subopcion5=1;
while(a!=7181&&a!=283)
{
switch(opcion)
	{
	case 1: //ACTUACIONES
		recuadro(5,2,20,7,2);
		marco(5,2,19,7);
		while(a!=7181&&a!=283&&a!=19712&&a!=19200)
		{
		textattr(color2);
		gotoxy(7,3);cprintf("Toros");
		gotoxy(7,4);cprintf("Procesiones");
		gotoxy(7,5);cprintf("Conciertos");
		gotoxy(7,6);cprintf("Varios");
		textattr(color1);
		switch(subopcion1)
			{
			case 1:	gotoxy(7,3);cprintf("Toros");break;
			case 2: gotoxy(7,4);cprintf("Procesiones");break;
			case 3: gotoxy(7,5);cprintf("Conciertos");break;
			case 4: gotoxy(7,6);cprintf("Varios");break;
			}
		while(!kbhit())
		 {
		 hora();
		 }
		a=bioskey(0);
		if(a==20480) subopcion1++;
		if(a==18432) subopcion1--;
		if(subopcion1==0) subopcion1=4;
		if(subopcion1==5) subopcion1=1;
		}
		if(a!=283&&a!=19712&&a!=19200) diario(subopcion1);
		textattr(color1);recuadro(5,2,21,8,1);
		break;
	case 2: //MUSICOS
		recuadro(20,2,33,7,2);
		marco(20,2,33,7);
		while(a!=7181&&a!=283&&a!=19712&&a!=19200)
		{
		textattr(color2);
		gotoxy(22,3);cprintf("Introducir");
		gotoxy(22,4);cprintf("Ver lista");
		gotoxy(22,5);cprintf("Borrar");
		gotoxy(22,6);cprintf("Buscar");
		textattr(color1);
		switch(subopcion2)
			{
			case 1:	gotoxy(22,3);cprintf("Introducir");break;
			case 2:	gotoxy(22,4);cprintf("Ver lista");break;
			case 3:	gotoxy(22,5);cprintf("Borrar");break;
			case 4:	gotoxy(22,6);cprintf("Buscar");break;
			}
		while(!kbhit())
		 {
		 hora();
		 }
		a=bioskey(0);
		if(a==20480) subopcion2++;
		if(a==18432) subopcion2--;
		if(subopcion2==0) subopcion2=4;
		if(subopcion2==5) subopcion2=1;
		}
		if(a!=283&&a!=19712&&a!=19200)
		 {
		 MUSICOS(subopcion2);
		 }
		textattr(color1);recuadro(20,2,34,8,1);
		break;
	case 3: //ORGANISMOS
		recuadro(31,2,45,8,2);
		marco(31,2,45,8);
		while(a!=7181&&a!=283&&a!=19712&&a!=19200)
		{
		textattr(color2);
		gotoxy(33,3);cprintf("Oficiales");
		gotoxy(33,4);cprintf("Hermandades");
		gotoxy(33,5);cprintf("Toros");
		gotoxy(33,6);cprintf("Entidades");
		gotoxy(33,7);cprintf("Varios");
		textattr(color1);
		switch(subopcion3)
			{
			case 1:	gotoxy(33,3);cprintf("Oficiales");break;
			case 2:	gotoxy(33,4);cprintf("Hermandades");break;
			case 3:	gotoxy(33,5);cprintf("Toros");break;
			case 4:	gotoxy(33,6);cprintf("Entidades");break;
			case 5:	gotoxy(33,7);cprintf("Varios");break;

			}
		while(!kbhit())
		 {
		 hora();
		 }
		a=bioskey(0);
		if(a==20480) subopcion3++;
		if(a==18432) subopcion3--;
		if(subopcion3==0) subopcion3=5;
		if(subopcion3==6) subopcion3=1;
		}
		textattr(color1);recuadro(31,2,46,9,1);
		break;
	  case 4://ARCHIVOS
		recuadro(45,2,64,7,2);
		marco(45,2,64,7);
		while(a!=7181&&a!=283&&a!=19712&&a!=19200)
		{
		textattr(color2);
		gotoxy(47,3);cprintf("Marchas");
		gotoxy(47,4);cprintf("Paso dobles");
		gotoxy(47,5);cprintf("Obras/Concientos");
		gotoxy(47,6);cprintf("Varios");
		textattr(color1);
		switch(subopcion4)
			{
			case 1:	gotoxy(47,3);cprintf("Marchas");break;
			case 2:	gotoxy(47,4);cprintf("Paso dobles");break;
			case 3:	gotoxy(47,5);cprintf("Obras/Conciertos");break;
			case 4:	gotoxy(47,6);cprintf("Varios");break;
			}
		while(!kbhit())
		 {
		 hora();
		 }
		a=bioskey(0);
		if(a==20480) subopcion4++;
		if(a==18432) subopcion4--;
		if(subopcion4==0) subopcion4=4;
		if(subopcion4==5) subopcion4=1;
		}
		if(a!=283&&a!=19712&&a!=19200)
		   {
		    a=0;
		    if (subopcion4==1)
			  {
			  recuadro(65,2,77,5,2);
			  marco(65,2,77,5);
			  while(a!=7181&&a!=283&&a!=19712&&a!=19200)
			      {
			      textattr(color2);
			      gotoxy(66,3);cprintf("Militares");
			      gotoxy(66,4);cprintf("Procesiones");
			      textattr(color1);
			      switch(subopcion41)
				{
				case 1: gotoxy(66,3);cprintf("Militares");break;
				case 2: gotoxy(66,4);cprintf("Procesiones");break;
				}
			      while(!kbhit())
				{
				hora();
				}
			      a=bioskey(0);
			      if(a==20480) subopcion41++;
			      if(a==18432) subopcion41--;
			      if(subopcion41==0) subopcion41=2;
			      if(subopcion41==3) subopcion41=1;
			      }
			textattr(color1);recuadro(65,2,78,6,1);
			dibujasubmenu1();
			  }
		    if (subopcion4==2)
			  {
			  recuadro(65,2,76,5,2);
			  marco(65,2,76,5);
			  while(a!=7181&&a!=283&&a!=19712&&a!=19200)
				{
				textattr(color2);
				gotoxy(66,3);cprintf("Toros");
				gotoxy(66,4);cprintf("Conciertos");
				textattr(color1);
				switch(subopcion42)
				  {
				  case 1: gotoxy(66,3);cprintf("Toros");break;
				  case 2: gotoxy(66,4);cprintf("Conciertos");break;
				  }
				while(!kbhit())
				 {
				 hora();
				 }
				a=bioskey(0);
				if(a==20480) subopcion42++;
				if(a==18432) subopcion42--;
				if(subopcion42==0) subopcion42=2;
				if(subopcion42==3) subopcion42=1;
				}
			textattr(color1);recuadro(65,2,78,6,1);
			dibujasubmenu1();
			  }
		   }
		textattr(color1);recuadro(45,2,65,8,1);
		break;
	case 5: //INFORMACION
		recuadro(57,2,68,5,2);
		marco(57,2,68,5);
		while(a!=7181&&a!=283&&a!=19712&&a!=19200)
		{
		textattr(color2);
		gotoxy(59,3);cprintf("Ayuda");
		gotoxy(59,4);cprintf("Creditos");
		textattr(color1);
		switch(subopcion5)
			{
			case 1:	gotoxy(59,3);cprintf("Ayuda");break;
			case 2:	gotoxy(59,4);cprintf("Creditos");break;
			}
		while(!kbhit())
		 {
		 hora();
		 }
		a=bioskey(0);
		if(a==20480) subopcion5++;
		if(a==18432) subopcion5--;
		if(subopcion5==0) subopcion5=2;
		if(subopcion5==3) subopcion5=1;
		}
		if(subopcion5==1&&a!=283&&a==7181) ayudas();
		else if(a!=283&&a==7181/*a!=19712&&a!=19200*/) creditos();
		//if(a!=283&&a!=19712&&a!=19200)
		// {
		// MUSICOS(subopcion2);
		// }
		textattr(color1);recuadro(57,2,69,6,1);
		break;

	case 6: //SALIR
		while(!kbhit())
		 {
		 hora();
		 }
		a=bioskey(0);
		break;
	}
if(a==19712) {a=0;opcion++;}
if(a==19200) {a=0;opcion--;}
if(opcion==0) opcion=6;
if(opcion==7) opcion=1;
dibujaeleccion();
}
}
//FUNCION PARA CREAR UN RECUADRO EN LAS COORDENADAS INDICADAS
void recuadro(int x,int y,int x1,int y1,int o)
{
int a,b;
textattr(color1);
for(a=x;a!=x1+1;a++)
	for(b=y;b!=y1+1;b++)
	{
	gotoxy(a,b);
	if(o==0||o==2) cprintf("Û");
	else cprintf("²");
	}
if(o==2)
	{
	textattr(0);
	for(a=y+1;a<y1+2;a++)
		{
		gotoxy(x1+1,a);
		cprintf("Û");
		}
	for(a=x+1;a<x1+1;a++)
		{
		gotoxy(a,y1+1);
		cprintf("Û");
		}
	}
}

//FUNCION PARA ENMARCAR UN RECUADRO
void marco(int x,int y,int x1,int y1)
{
int a,b;
textattr(color2);
gotoxy(x,y);
cprintf("É");
gotoxy(x,y1);
cprintf("È");
gotoxy(x1,y);
cprintf("»");
gotoxy(x1,y1);
cprintf("¼");

for(a=x+1;a!=x1;a++)
{
   gotoxy(a,y);
   cprintf("Í");
   gotoxy(a,y1);
   cprintf("Í");

}

for(b=y+1;b!=y1;b++)
{
   gotoxy(x,b);
   cprintf("º");
   gotoxy(x1,b);
   cprintf("º");

}
}
/////////////////////////////////INFORMACION////////////////////////////////
//AYUDAS
void ayudas()
{
char texto[30]="AYUDA PARA EL USO DEL PROGRAMA";
int i;
recuadro(2,2,79,24,0);
marco(2,2,79,24);
for(i=0;i<30;i++)
	{
	hora();
	gotoxy(i+25,2);
	sound(100);
	delay(100);
	nosound();
	delay(100);
	cprintf("%c",texto[i]);
	}
gotoxy(14,5);
cprintf("TECLAS GENERALES:CURSORES PARA MOVERSE POR MENUS");
gotoxy(32,6);
cprintf("RETURN PARA SELECCIONAR  OPCION");
gotoxy(14,8);
cprintf("FINALIZAR:OPCION PARA SALIR DEL PROGRAMA");
gotoxy(14,10);
cprintf("INFORMACION:[AYUDAS]   PARA ESTA PANTALLA");
gotoxy(26,11);
cprintf("[CREDITOS] CREADOR Y SALUDOS");
gotoxy(14,13);
cprintf("MUSICOS:[INTRODUCIR] PARA GUARDAR NUEVOS MUSICOS");
gotoxy(24,14);
cprintf("[VER LISTA]  VISUALIZA TODOS LOS MUSICOS");
gotoxy(24,15);
cprintf("[BORRAR]     PIDE NOMBRE Y direccion A BORRAR");
gotoxy(24,16);
cprintf("[BUSCAR]     PIDE NOMBRE Y BUSCA EL TELEFONO");
gotoxy(14,18);
cprintf("DIARIO:[INTODUCIR]    PARA GUARDAR INFORMACION EN LA AGENDA");
gotoxy(21,19);
cprintf("[VER DIA AG.]  PARA VISUALIZAR UN DIA EN CONCRETO");
gotoxy(21,20);
cprintf("[VER TODA AG.] PARA VER TODA LA AGENDA DIA A DIA");
gotoxy(12,23);
cprintf("NOTA:LOS NOMBRES,APODOS Y NUMEROS DIPONEN DE 20 CARACTERES");
while(!kbhit())
	{
	hora();
	}
recuadro(2,2,79,24,1);
}
//CREDITOS
void creditos()
{

recuadro(23,10,60,15,0);
marco(23,10,60,15);
gotoxy(25,11);
cprintf("Programador: OSCAR GANDUL ALONSO");
gotoxy(25,12);
cprintf("Agradecimientos a JD,MATI...");
gotoxy(25,13);
cprintf("Programa realizado para:");
gotoxy(25,14);
textattr(123);
cprintf("LA BANDA DE MUSICA TEJERA");
textattr(color1);
while(!kbhit())
{
hora();
}
textattr(color1);
recuadro(23,10,60,15,1);
}

/////////////////////////////////MUSICOS//////////////////////////////////
//FUNCION PRINCIPAL
void MUSICOS(int subopcion)
{
switch(subopcion)
	{
	case 1:introducir();break;
	case 2:contenido();break;
	case 3:borrar();break;
	case 4:busca();break;
	}
}
//METE DATOS
void introducir()
{
PERSONAS *lista;
lista=plista;
recuadro(9,5,68,19,2);
marco(9,5,68,19);
while(lista->sig!=NULL)
 {
 lista=lista->sig;
 }
lista->sig=(PERSONAS *)malloc(sizeof(PERSONAS));
gotoxy(10,6);
cprintf("Apellidos:");
gotoxy(41,6);
cprintf("Nombre:");
gotoxy(10,8);
cprintf("Direccion:");
gotoxy(10,10);
cprintf("Localidad:");
gotoxy(41,10);
cprintf("Provincia:");
gotoxy(10,12);
cprintf("C.P.:");
gotoxy(36,12);
cprintf("Edad:");
gotoxy(51,12);
cprintf("Tfno:");
gotoxy(10,14);
cprintf("DNI:");
gotoxy(36,14);
cprintf("Instrumento:");
captura(20,2,lista->apellidos,20,6);
captura(15,2,lista->nombre,48,6);
captura(20,2,lista->direccion,20,8);
captura(20,2,lista->localidad,20,10);
captura(10,2,lista->provincia,51,10);
captura(5,2,lista->cod_postal,16,12);
captura(2,2,lista->edad,41,12);
captura(9,2,lista->tfno,56,12);
captura(9,2,lista->dni,14,14);
captura(10,2,lista->instrumento,48,14);
lista=lista->sig;
lista->sig=NULL;
textattr(color1);
recuadro(9,5,69,20,1);
/*gotoxy(27,11);
cprintf("Nombre:");
captura(10,1,lista->nombre,34,11);
gotoxy(27,12);
cprintf("Apodo:");
captura(11,1,lista->apodo,33,12);
gotoxy(27,13);
cprintf("Numero:");
captura(10,1,lista->numero,34,13);*/
//textattr(color1);
//recuadro(25,10,53,15,1);
}
/*//METE DATOS
void introducir()
{
PERSONAS datos;
FILE *fp;
if ((fp=fopen("musico.dat","ab"))==NULL) fp=fopen("musico.dat","wb");
recuadro(9,5,68,19,2);
marco(9,5,68,19);
gotoxy(10,6);
cprintf("Apellidos:");
gotoxy(41,6);
cprintf("Nombre:");
gotoxy(10,8);
cprintf("Direccion:");
gotoxy(10,10);
cprintf("Localidad:");
gotoxy(41,10);
cprintf("Provincia:");
gotoxy(10,12);
cprintf("C.P.:");
gotoxy(36,12);
cprintf("Edad:");
gotoxy(51,12);
cprintf("Tfno:");
gotoxy(10,14);
cprintf("DNI:");
gotoxy(36,14);
cprintf("Instrumento:");
captura(20,2,datos.apellidos,20,6);
captura(15,2,datos.nombre,48,6);
captura(20,2,datos.direccion,20,8);
captura(20,2,datos.localidad,20,10);
captura(10,2,datos.provincia,51,10);
captura(5,2,datos.cod_postal,16,12);
captura(2,2,datos.edad,41,12);
captura(9,2,datos.tfno,56,12);
captura(9,2,datos.dni,14,14);
captura(10,2,datos.instrumento,48,14);
textattr(LIGHTGRAY);
recuadro(9,5,69,20,1);
fwrite(&datos,sizeof(datos),1,fp);
fclose(fp);
}*/
//BORRA DE LA LISTA
void borrar()
{
int encontrado=0;
char dni[9],nombre[16],apellidos[21];
PERSONAS *p,*pant;
recuadro(18,10,62,14,2);
marco(18,10,62,14);
gotoxy(21,11);
cprintf("Introduce nombre:");
captura(15,0,nombre,38,11);
gotoxy(21,12);
cprintf("Introduce apellidos:");
captura(20,0,apellidos,41,12);
p=plista;
pant=0;
while(strcmp(nombre,p->nombre)!=0&&strcmp(apellidos,p->apellidos)!=0&&(p!=NULL))
	{
	pant=p;
	p=p->sig;
	encontrado=0;
	}
if(strcmp(nombre,p->nombre)==0&&strcmp(apellidos,p->apellidos)==0)
	{
	if(pant==0) {plista=p->sig;free(p);}
	pant->sig=p->sig;
	free(p);
	encontrado=1;
	}
if(encontrado==0) {gotoxy(21,13);cprintf("No se encontro");}
else {gotoxy(21,13);cprintf("Nombre borrado");}
while(!kbhit())
{
hora();
}
fflush(stdin);
textattr(color1);
recuadro(18,10,63,15,1);
}
//r para inicio de carro
//MUESTRA EL CONTENIDO
void contenido()
{
int a,c=0,num=1,y=2;
PERSONAS *lista;
recuadro(2,2,79,24,0);
marco(2,2,79,24);
lista=plista;
while(lista->sig!=NULL)
 {
 c++;
 gotoxy(5,y+1);
 cprintf("%d.-%s  %s   DNI:%s",num,lista->nombre,lista->apellidos,lista->dni);
 gotoxy(8,y+2);
 cprintf("%s",lista->direccion);
 gotoxy(8,y+3);
 cprintf("%5s  %20s   %10s tfno:%9s\n",lista->cod_postal,lista->localidad,lista->provincia,lista->tfno);
 y=y+3;
 if(c==7)
   {
   y=2;c=0;gotoxy(37,24);cprintf("[PULSE TECLA]");
   while(!kbhit())
	{
	hora();
	}
   while( kbhit() ) getch();
   textattr(color1);
   recuadro(3,3,78,23,0);textattr(color2);}
 lista=lista->sig;
 num++;
 }
if(c==0)
	{
	marco(23,10,60,14);
	gotoxy(29,12);
	cprintf("NO SE ENCONTRARON TELEFONOS");
	}
while(!kbhit())
{
hora();
}
fflush(stdin);
textattr(color1);
recuadro(2,2,79,24,1);
}
/*//MUESTRA EL CONTENIDO
void contenido()
{
int a,c=2,paso=0,num=1;
//INFO *lista;
PERSONAS datos;
FILE *fp;
fp=fopen("musico.dat","rb");
recuadro(2,2,79,24,0);
marco(2,2,79,24);
//lista=plista;
while(!feof(fp))
 {
 if (paso==1)
 {
 gotoxy(5,c+1);
 cprintf("%d.-%s  %s   DNI:%s",num,datos.nombre,datos.apellidos,datos.dni);
 gotoxy(8,c+2);
 cprintf("%s",datos.direccion);
 gotoxy(8,c+3);
 cprintf("%5s  %20s   %10s tfno:%9s\n",datos.cod_postal,datos.localidad,datos.provincia,datos.tfno);
// lista=lista->sig;
 c=c+4;
 num++;
 if(c==22)
   {
   c=2;gotoxy(37,24);cprintf("[PULSE TECLA]");
   while(!kbhit())
	{
	hora();
	}
   while( kbhit() ) getch();
   textattr(LIGHTGRAY);
   recuadro(3,3,78,23,0);textattr(color2);
   }
   }
   fread(&datos,sizeof(datos),1,fp);
   paso=1;
   }
if(c==0)
   {
   marco(23,10,60,14);
   gotoxy(29,12);
   cprintf("NO SE ENCONTRARON MUSICOS");
   }
while(!kbhit())
	{
	hora();
	}
fflush(stdin);
textattr(LIGHTGRAY);
recuadro(2,2,79,24,1);
fclose(fp);
}            */
//BUSCA EL NOMBRE DE UNA PERSONA
void busca()
{
char nombre[16],apellidos[21];
int a,b=0,c=0;
PERSONAS *lista;
lista=plista;
recuadro(2,2,79,24,0);
marco(2,2,79,24);
gotoxy(4,3);
cprintf("Nombre:");
captura(15,0,nombre,11,3);
gotoxy(4,4);
cprintf("Apellidos:");
captura(20,0,apellidos,14,4);
while(lista->sig!=NULL)
{
if(c==20)
	{c=0;gotoxy(37,24);cprintf("[PULSE UNA TECLA]");
	while(!kbhit())
	{
	hora();
	}
	fflush(stdin);recuadro(2,2,79,24,0);}
if(strcmp(nombre,lista->nombre)==0&&strcmp(apellidos,lista->apellidos)==0)
	{
	recuadro(9,5,68,19,2);
	marco(9,5,68,19);
	gotoxy(10,6);
	cprintf("Apellidos:%s",datos.apellidos);
	gotoxy(41,6);
	cprintf("Nombre:%s",datos.nombre);
	gotoxy(10,8);
	cprintf("Direccion:%s",datos.direccion);
	gotoxy(10,10);
	cprintf("Localidad:%s",datos.localidad);
	gotoxy(41,10);
	cprintf("Provincia:%s",datos.provincia);
	gotoxy(10,12);
	cprintf("C.P.:%s",datos.cod_postal);
	gotoxy(36,12);
	cprintf("Edad:%s",datos.edad);
	gotoxy(51,12);
	cprintf("Tfno:%s",datos.tfno);
	gotoxy(10,14);
	cprintf("DNI:%s",datos.dni);
	gotoxy(36,14);
	cprintf("Instrumento:%s",datos.instrumento);
	b=1;
	c++;
	}
lista=lista->sig;
}
if(b==0) {gotoxy(4,5);cprintf("Nombre no encontrado");}
while(!kbhit())
{
hora();
}
fflush(stdin);
textattr(color1);
recuadro(2,2,79,24,1);
}
/*//BUSCA EL NOMBRE DE UNA PERSONA
void busca()
{
char apellidos[20],nombre[15];
int encontrado=0;
PERSONAS datos;
FILE *fp;
fp=fopen("musico.dat","rb");
recuadro(2,2,79,24,0);
marco(2,2,79,24);
gotoxy(4,3);
cprintf("Nombre:");
captura(15,0,nombre,20,3);
gotoxy(4,4);
cprintf("Apellidos:");
captura(20,0,apellidos,20,4);
while(!feof(fp)&&encontrado==0)
{
//while(!kbhit())
//	{
//	hora();
//	}
fread (&datos,sizeof(datos),1,fp);
if(strcmp(nombre,datos.nombre)==0&&strcmp(apellidos,datos.apellidos)==0)
	{
	encontrado=1;
	recuadro(9,5,68,19,2);
	marco(9,5,68,19);
	gotoxy(10,6);
	cprintf("Apellidos:%s",datos.apellidos);
	gotoxy(41,6);
	cprintf("Nombre:%s",datos.nombre);
	gotoxy(10,8);
	cprintf("Direccion:%s",datos.direccion);
	gotoxy(10,10);
	cprintf("Localidad:%s",datos.localidad);
	gotoxy(41,10);
	cprintf("Provincia:%s",datos.provincia);
	gotoxy(10,12);
	cprintf("C.P.:%s",datos.cod_postal);
	gotoxy(36,12);
	cprintf("Edad:%s",datos.edad);
	gotoxy(51,12);
	cprintf("Tfno:%s",datos.tfno);
	gotoxy(10,14);
	cprintf("DNI:%s",datos.dni);
	gotoxy(36,14);
	cprintf("Instrumento:%s",datos.instrumento);
	}
}
if(encontrado==0) {gotoxy(4,5);cprintf("Nombre no encontrado");}
while(!kbhit())
{
hora();
}
fflush(stdin);
textattr(7);
recuadro(2,2,79,24,1);
fclose(fp);
} */
//RECUPERA
void recupera()
{
FILE *fp;
PERSONAS *lista;
if((fp=fopen("musico.dat","rb"))==NULL) fp=fopen("musico.dat","wb");
else
	{
	fread(&datos,sizeof(datos),1,fp);
	lista=(PERSONAS *)malloc(sizeof(PERSONAS));
	plista=lista;
	strcpy(lista->apellidos,datos.apellidos);
	strcpy(lista->nombre,datos.nombre);
	strcpy(lista->direccion,datos.direccion);
	strcpy(lista->localidad,datos.localidad);
	strcpy(lista->provincia,datos.provincia);
	strcpy(lista->cod_postal,datos.cod_postal);
	strcpy(lista->edad,datos.edad);
	strcpy(lista->tfno,datos.tfno);
	strcpy(lista->dni,datos.dni);
	strcpy(lista->instrumento,datos.instrumento);
	while(!feof(fp))
	 {
	 fread(&datos,sizeof(datos),1,fp);
	 lista->sig=(PERSONAS *)malloc(sizeof(PERSONAS));
	 lista=lista->sig;
	 strcpy(lista->apellidos,datos.apellidos);
	 strcpy(lista->nombre,datos.nombre);
	 strcpy(lista->direccion,datos.direccion);
	 strcpy(lista->localidad,datos.localidad);
	 strcpy(lista->provincia,datos.provincia);
	 strcpy(lista->cod_postal,datos.cod_postal);
	 strcpy(lista->edad,datos.edad);
	 strcpy(lista->tfno,datos.tfno);
	 strcpy(lista->dni,datos.dni);
	 strcpy(lista->instrumento,datos.instrumento);
	 }
	}
lista->sig=NULL;
fclose(fp);
}
/////////////////////////////////DIARIO//////////////////////////////////////
void diario(int subopcion)
{
//char clave[20];
//recuadro(30,10,53,14,0);
//marco(30,10,53,14);
//gotoxy(31,12);
//cprintf("CLAVE:");
//captura(16,0,clave,37,12);
//if (strcmp(clave,"PROHIBIDOX")==0)
	switch(subopcion)
		{
		case 1:visualizaag("toros");introduceag("toros");break;
		case 2:visualizaag("proce");introduceag("proce");break;
		case 3:visualizaag("conci");introduceag("conci");break;
		case 4:visualizaag("vario");introduceag("vario");break;
//		case 2:visualizadag();break;
//		case 3:visualizaag("toros");break;
		}
/*else
	{
	gotoxy(31,13);
	cprintf("CLAVE INCORRECTA");
	getch();
	}*/
recuadro(30,10,53,14,1);
}
//INTRODUCE AGENDA
LET * introduceag(char nombre[8])
{
FILE *fp,*fp1;
LET *letra,*letrant,*pletra;
long espacio;
struct date d;
int x=3,y=3;
char a='0';
recuadro(2,2,79,24,0);
marco(2,2,79,24);
letra=(LET *)malloc(sizeof(LET));
pletra=letra;
letra->ant=NULL;
while(a!='\x1B')
	{
	x++;
	if(x==79) {x=3;y=y+1;}
	if(x==3&&y>3&&letra->letra=='\b') {x=78;y=y-1;}
	if(y==20)
	 {
	 gotoxy(37,24);cprintf("[PULSE UNA TECLA]");
	 while(!kbhit())
	{
	hora();
	}
	textattr(color1);recuadro(3,3,78,23,0);textattr(color2);x=3;y=3;
	 }
	gotoxy(x,y);
	cprintf("±");
	while(!kbhit())
	{
	hora();
	}
	a=getch();
	gotoxy(x,y);
	cprintf("%c",a);
	letra->letra=a;
	letrant=letra;
	letra->sig=(LET *)malloc(sizeof(LET));
	if(letra->letra=='\b'&&y>2&&x>3)
		{
		gotoxy(x,y);cprintf(" ");
		gotoxy(x-1,y);cprintf(" ");x=x-2;
		letra->sig=NULL;
		letra=letra->ant;
		}
	else if(letra->letra=='\b'&&y>2&&x==3) {x=2;}
	else {
		letra=letra->sig;
		letra->ant=letrant;
	     }
	}
letra->sig=NULL;
textattr(color1);
recuadro(2,2,79,24,1);
fp1=fopen("indiceag.dat","a+b");
//fp=fopen("agenda.dat","a+b");
fp=fopen(nombre,"a+b");
letra=pletra;
while(letra->sig!=NULL)
	{
	simbolo.letra=letra->letra;
	fwrite(&simbolo.letra,sizeof(simbolo),1,fp);
	letra=letra->sig;
	}
getdate(&d);
espacio=ftell(fp);
fwrite(&d,sizeof(d),1,fp1);
fwrite(&espacio,sizeof(long),1,fp1);
fclose(fp1);
fclose(fp);
return pletra;
}
//VISUALIZA AGENDA DE UN DIA EN CONCRETO
void visualizadag(void)
{
FILE *fp,*fp1;
LET *letra,*pletra,*letrant;
struct date d;
long espacio=0;
long longitud=0;
char pegote[10];
int dia=0,mes=0,ano=0;
int x=3,y=4,encontrado=0;
recuadro(2,2,79,24,0);
marco(2,2,79,24);
gotoxy(4,3);
cprintf("Dia:");
captura(2,1,pegote,8,3);
dia=matriz1;
gotoxy(14,3);
cprintf("Mes:");
captura(2,1,pegote,18,3);
mes=matriz1;
gotoxy(24,3);
cprintf("A¤o:");
captura(4,1,pegote,28,3);
ano=matriz1;
letra=(LET *)malloc(sizeof(LET));
if((fp=fopen("agenda.dat","rb"))==NULL)
	{gotoxy(3,3);cprintf("     NO HAY DATOS EN ESTA OPCION     ");getch();}
else
{
fp1=fopen("indiceag.dat","rb");
while(!feof(fp1)&&encontrado==0)
	{
	fread(&d,sizeof(d),1,fp1);
	if(dia==d.da_day&&mes==d.da_mon&&ano==d.da_year)
		{
		encontrado=1;
		}
	longitud=espacio;
	fread(&espacio,sizeof(long),1,fp1);
	}
if(encontrado==1)
{
fseek(fp,longitud,SEEK_SET);
pletra=letra;
fread(&simbolo.letra,sizeof(simbolo),1,fp);
letra->letra=simbolo.letra;
letra->ant=NULL;
fread(&simbolo.letra,sizeof(simbolo),1,fp);
while(simbolo.letra!='\x1B')
	{
	letrant=letra;
	letra->sig=(LET *)malloc(sizeof(LET));
	letra=letra->sig;
	letra->letra=simbolo.letra;
	letra->ant=letrant;
	fread(&simbolo.letra,sizeof(simbolo),1,fp);
	}
letra->sig=NULL;
letra=pletra;
while(letra->sig!=NULL)
	{
	x++;
	if(x==79) {x=3;y=y+1;}
	if(y==20)
	{gotoxy(37,24);cprintf("[PULSE UNA TECLA]");
	while(!kbhit())
	{
	hora();
	}
	fflush(stdin);
	textattr(color1);recuadro(3,3,78,23,0);textattr(color2);x=3;y=3;}
	gotoxy(x,y);
	cprintf("%c",letra->letra);
	letra=letra->sig;
	}
x++;
if(x==79) {x=3;y=y+1;}
gotoxy(x,y);
cprintf("%c",letra->letra);
}
else
	{
	gotoxy(4,4);
	cprintf("NO SE ENCONTRO ESTA FECHA");
	}
while(!kbhit())
{
hora();
}
}
fflush(stdin);
textattr(color1);
recuadro(2,2,79,24,1);
fclose(fp);
fclose(fp1);
}
//VISUALIZA AGENDA DESDE EL PRINCIPIO
void visualizaag(char nombre[8])
{
FILE *fp,*fp1;
LET *letra,*pletra,*letrant;
struct date d;
long pego=0;
long espacio=0;
long longitud=0;
char pegote[10];
int dia=0,mes=0,ano=0;
int x=3,y=4,encontrado=0;
int salir=0;
recuadro(2,2,79,24,0);
marco(2,2,79,24);
letra=(LET *)malloc(sizeof(LET));
//if((fp=fopen("agenda.dat","rb"))==NULL)
if((fp=fopen(nombre,"rb"))==NULL)
	{gotoxy(3,3);cprintf("[NO HAY DATOS EN LA AGENDA]");getch();}
else
{
fp1=fopen("indiceag.dat","rb");
while(salir!=1)
{
recuadro(3,3,78,23,0);
textattr(color2);
fseek(fp1,pego,SEEK_SET);
fread(&d,sizeof(d),1,fp1);
fread(&espacio,sizeof(espacio),1,fp1);
pego=ftell(fp1);
if(feof(fp1)) salir=1;
else
{
fseek(fp1,0,SEEK_SET);
dia=d.da_day;
mes=d.da_mon;
ano=d.da_year;
gotoxy(3,3);
cprintf("dia:%d mes:%d a¤o:%d",dia,mes,ano);
x=3;y=4;
espacio=0;
encontrado=0;
while(!feof(fp1)&&encontrado==0)
	{
	fread(&d,sizeof(d),1,fp1);
	if(dia==d.da_day&&mes==d.da_mon&&ano==d.da_year)
		{
		encontrado=1;
		}
	longitud=espacio;
	fread(&espacio,sizeof(long),1,fp1);
	}
if(encontrado==1)
{
fseek(fp,longitud,SEEK_SET);
pletra=letra;
fread(&simbolo.letra,sizeof(simbolo),1,fp);
letra->letra=simbolo.letra;
letra->ant=NULL;
fread(&simbolo.letra,sizeof(simbolo),1,fp);
while(simbolo.letra!='\x1B')
	{
	letrant=letra;
	letra->sig=(LET *)malloc(sizeof(LET));
	letra=letra->sig;
	letra->letra=simbolo.letra;
	letra->ant=letrant;
	fread(&simbolo.letra,sizeof(simbolo),1,fp);
	}
letra->sig=NULL;
letra=pletra;
while(letra->sig!=NULL)
	{
	x++;
	if(x==79) {x=3;y=y+1;}
	if(y==20)
	{gotoxy(37,24);cprintf("[PULSE UNA TECLA]");
	while(!kbhit())
	{
	hora();
	}
	while( kbhit() ) getch();
	fflush(stdin);
	textattr(color1);recuadro(3,3,78,23,0);textattr(color2);x=3;y=3;}
	gotoxy(x,y);
	cprintf("%c",letra->letra);
	letra=letra->sig;
	}
x++;
if(x==79) {x=3;y=y+1;}
gotoxy(x,y);
cprintf("%c",letra->letra);
}
else
	{
	gotoxy(4,4);
	cprintf("NO SE ENCONTRO ESTA FECHA");
	}
while(!kbhit())
{
hora();
}
while( kbhit() ) getch();
}
}
}
fflush(stdin);
textattr(color1);
recuadro(2,2,79,24,1);
fclose(fp);
fclose(fp1);
}
/////////////////////////////////FICHEROS////////////////////////////////////
void ficheros(char nombre[8])
{
visualizaag(nombre);
introduceag(nombre);
}
///////////////////////////////////CAPTURA///////////////////////////////////
void captura(int tam,int elec,char nombre[80],int x,int y)
{
 int i=0,c=0,c1=0;
  matriz1=0;
 if(elec==0)
     { do
	{
	 gotoxy(x+i,y);
	 cprintf("þ");
	 if (i<tam) {
	 gotoxy(x+i+1,y);
	 cprintf(" ");
		   }
	 while(!kbhit())
	    {
	     hora();
	    }
	 matriz2[i]=getch();
	 matriz2[i]=toupper(matriz2[i]);
	 if(matriz2[i]=='\b')
	    {
	    c--;
	    if(c==-1) c=0;
	    i--;
	    if(i==-1) i=0;
	    gotoxy(x+i,y);
	    cprintf(" ");
	    }
	   else
	       {
	       if ((isalpha(matriz2[i])!=0||matriz2[i]==' '||matriz2[i]=='¤'||matriz2[i]=='¥')&&(c!=tam))
		   {
		   gotoxy(x+i,y);
		   cprintf("%c",matriz2[i]);
		   i++;
		   c++;
		   }
	}
	}while(matriz2[i]!='\r');
    matriz2[i]='\0';
    strcpy(nombre,matriz2);
    }
else { do
	{
	 gotoxy(x+i,y);
	 cprintf("þ");
	  if (i<tam) {
	  gotoxy(x+i+1,y);
	  cprintf(" ");
		    }
	 while(!kbhit())
	  {
	   hora();
	  }
	 matriz2[i]=getch();
	 matriz2[i]=toupper(matriz2[i]);
	 if(matriz2[i]=='\b')
	  {
	  c--;
	  if(c==-1) c=0;
	  i--;
	  if(i==-1) i=0;
	  gotoxy(x+i,y);
	  cprintf(" ");
	  }
	 else
	  {
	  if (c!=tam&&matriz2[i]!='\r')
	   {
	   gotoxy(x+i,y);
	   cprintf("%c",matriz2[i]);
	   i++;
	   c++;
	   }
	}
	}while(matriz2[i]!='\r');
	matriz2[i]='\0';
	strcpy(nombre,matriz2);
	}
if (elec==1)
  {
  c1=i;
  while(c1!=0)
	{
	c1--;
	matriz1=matriz1+((matriz2[c1])-48)*(pow(10,i-c1-1));
	}
  }
gotoxy(x+i,y);
cprintf(" ");

}
////////////////////////////////////RELOJ/////////////////////////////////////
//HORA
void hora()
{
struct  time t;
gettime(&t);
gotoxy(72,25);
textattr(47);
cprintf("%2d:%02d:%02d",t.ti_hour, t.ti_min, t.ti_sec);
textattr(color2);
}
////////////////////////////GRABANDO DATOS ANTES DE SALIR/////////////////////
void graba()
{
PERSONAS *lista;
FILE *fp;
fp=fopen("MUSICO.dat","wb");
lista=plista;
while(lista->sig!=NULL)
 {
 strcpy(datos.apellidos,lista->apellidos);
 strcpy(datos.nombre,lista->nombre);
 strcpy(datos.direccion,lista->direccion);
 strcpy(datos.localidad,lista->localidad);
 strcpy(datos.provincia,lista->provincia);
 strcpy(datos.cod_postal,lista->cod_postal);
 strcpy(datos.edad,lista->edad);
 strcpy(datos.tfno,lista->tfno);
 strcpy(datos.dni,lista->tfno);
 strcpy(datos.instrumento,lista->tfno);
 fwrite(&datos,sizeof(datos),1,fp);
 lista=lista->sig;
 }
fclose(fp);
}





