OSCAR/BANDA.BAK
2021-09-12 19:50:38 +02:00

1447 lines
29 KiB
Plaintext
Raw Blame History

//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("<22>");
else cprintf("<22>");
}
if(o==2)
{
textattr(0);
for(a=y+1;a<y1+2;a++)
{
gotoxy(x1+1,a);
cprintf("<22>");
}
for(a=x+1;a<x1+1;a++)
{
gotoxy(a,y1+1);
cprintf("<22>");
}
}
}
//FUNCION PARA ENMARCAR UN RECUADRO
void marco(int x,int y,int x1,int y1)
{
int a,b;
textattr(color2);
gotoxy(x,y);
cprintf("<22>");
gotoxy(x,y1);
cprintf("<22>");
gotoxy(x1,y);
cprintf("<22>");
gotoxy(x1,y1);
cprintf("<22>");
for(a=x+1;a!=x1;a++)
{
gotoxy(a,y);
cprintf("<22>");
gotoxy(a,y1);
cprintf("<22>");
}
for(b=y+1;b!=y1;b++)
{
gotoxy(x,b);
cprintf("<22>");
gotoxy(x1,b);
cprintf("<22>");
}
}
/////////////////////////////////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("<22>");
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("<22>");
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]=='<27>'||matriz2[i]=='<27>')&&(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("<22>");
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);
}
// -------------------------------- * ------------------------------
#define ANCHO 80;
typedef struct PTexto
{
char *LineaC;
};
void RefreshTexto( PTexto *PT, int NLineas, int NLinicio )
{
int i, j;
for ( i = 0; i < NLinicio; i++ )
PT++;
for ( i = NLinicio, j = 0; i < NLineas && j < 21; i++, j++ )
{
gotoxy( 2, j );
printf( "%s", PT -> LineaC );
PT++;
}
}
void PTextos( char *file )
{
FILE *PFio;
PTexto *PTxt, *p_aux;
int NumL;
if ( ( PFio = fopen( file, "rw+" ) ) == NULL )
{
// No se puede abrir el fichero -ERROR-
return;
} else {
// Seguimos
// No hay memoria -ERROR-
return;
p_aux = PTxt;
NumL = 1;
while ( !eof( PFio ) )
{
NumL++;
if ( ( PTxt = (PTexto *)calloc( sizeof(PTexto *), NumL ) ) == NULL )
{
// -ERROR
return;
}
if ( p_aux -> LineaC = (char *)calloc( sizeof( char ), 80 ) ) == NULL )
{
// -ERROR-
return;
} else {
// Leemos el caracter
fscanf( PFio, "%80s", p_aux -> LineaC );
}
p_aux ++;
};
RefreshTexto( PTxt, NumL, 0 );
}
}