#include #include #include #include #include #include #include #include "a:\gui.h" #include "k:\lib\libre.h" #include "a:\iconos.h" char titulo[80]={"Programa Gesti¢n del VideoClub Alfa. Juan L¢pez Fern ndez"}; int estoy_en=1;// Indica el men£ en el que me encuentro. int select_actual=1; // Indica que opci¢n est  seleccionada actualmente. int n_op_menu=5; // N£mero de opciones del menu. (default menu1=5) int refresco=1; // Para el calor... Refresca la pantalla :-). int codigo_max=0, codigo_maxp=0, codigo_maxa=0; int *p_estoy_en=&estoy_en;// -- Punteros a sus respectivas variables. -- int *p_select_actual=&select_actual; int *p_n_op_menu=&n_op_menu; int *p_refresco=&refresco; // -------- Definici¢n de los patrones o "templates" --------------------- struct peliculas { char titulo[20], tema[10], director[21], duracion[4]; int codigo, n_alquileres, alq; }; struct clientes{ char nombre[11], apellidos[21], direccion[21], telefono[11]; int codigo; }; struct alquileres { int lista_pelis[5], socios, codigo; float fecha_dev; }; // ---------------- Fin de la definici¢n de los patrones. ----------------- struct peliculas pelis[50]; // Declaraci¢n de arrays struct clientes socios[50]; // de estructuras. struct alquileres presta[50]; // A nivel global. void modo_grafico(); void menu(int, int); void miga(int*, int*); void localizacion(int, int, int); void reloj(int, int); void altas_clientes(int); void bajas_clientes(int); void modificar_clientes(int); void listar_clientes(int); void altas_peliculas(int); void bajas_peliculas(int); void modificar_peliculas(int); void listar_peliculas(int); void altas_alquileres(int); void modificar_alquileres(int); //void listar_alquileres(int); void bajas_alquileres(int); // *********************************************************************** // PROGRAMA PRINCIPAL // *********************************************************************** void main() { modo_grafico(); //presentacion(); // Me pregunto si llegar‚ a hacerla... ;-). Creo que no. menu(estoy_en, select_actual); int tecla1, tecla12, sw=1; while(sw==1){ reloj(423,100); tecla1=getch(); if(tecla1==0) // leemos tecla especial. { tecla12=getch(); switch(tecla12) { case 72: // Flecha arriba if (select_actual<=1) select_actual=1; else { select_actual--; menu(estoy_en, select_actual); } break; case 80: // Flecha abajo if (select_actual>=n_op_menu) select_actual=n_op_menu; else{ select_actual++; menu(estoy_en, select_actual); } break; } // fin del switch-case }// fin del if else if (tecla1==13) // MIGA DEL ASUNTO { miga(p_estoy_en, p_select_actual); menu(estoy_en, select_actual); } else if (tecla1==27) if (estoy_en==1) // Se acab¢ la funci¢n... sw=0; else // Navegaci¢n descendente por men£s. { *p_estoy_en/=10; *p_n_op_menu=5; *p_select_actual=1; *p_refresco=1; menu(estoy_en,select_actual); } } // fin del while // getch(); closegraph(); } // *********************************************************************** // --- FUNCIONES DEL PROGRAMA --- // *********************************************************************** // ------------------------------------------------------------------------ // FUNCIàN MIGA (MIGA DEL ASUNTO) // (con punteros!, como mola...) // ------------------------------------------------------------------------ void miga(int *p_estoy_en,int *p_select_actual) { *p_refresco=1; // antes de nada tomemos una coca-cola... ;-) switch (*p_estoy_en) // veamos que hay que hacer: { case 1: // naveguemos por los men£s: ir a menu 1.x switch (*p_select_actual) { case 1: *p_estoy_en=11; *p_select_actual=1; *p_n_op_menu=5; break; case 2: *p_estoy_en=12; *p_select_actual=1; *p_n_op_menu=5; break; case 3: *p_estoy_en=13; *p_select_actual=1; *p_n_op_menu=4; break; case 4: *p_estoy_en=14; *p_select_actual=1; *p_n_op_menu=3; break; case 5: exit(1); break; } // fin del switch-case(select_actual) de navegaci¢n de men£s. break;//fin del case 1 general. case 11: // Estamos en las opciones del menu1. switch (select_actual) // veamos que hay que hacer. { case 1: // ALTAS DE CLIENTES. altas_clientes(50); break; case 2: //BAJAS DE CLIENTES. bajas_clientes(50); break; case 3: //MODIFICAR CLIENTES. modificar_clientes(50); break; case 4: // LISTAR CLIENTES. listar_clientes(50); break; case 5: // VOLVER AL MENU 1. *p_estoy_en=1; *p_select_actual=1; *p_n_op_menu=5; break; } break; case 12: switch (select_actual) // veamos que hay que hacer. { case 1: // ALTAS DE PELICULAS. altas_peliculas(50); break; case 2: //BAJAS DE PELICULAS. bajas_peliculas(50); break; case 3: //MODIFICAR PELICULAS. modificar_peliculas(50); break; case 4: // LISTAR PELICULAS. listar_peliculas(50); break; case 5: // VOLVER AL MENU 1. *p_estoy_en=1; *p_select_actual=1; *p_n_op_menu=5; break; } break; case 13: switch (select_actual) // veamos que hay que hacer. { case 1: // ALTAS DE ALQUILERES. altas_alquileres(50); break; case 2: //MODIFICAR ALQUILERES. //modificar_alquileres(50); break; case 3: //LISTAR ALQUILERES. //listar_alquileres(50); break; case 4: // VOLVER AL MENU 1. *p_estoy_en=1; *p_select_actual=1; *p_n_op_menu=5; break; } break; case 14: switch (select_actual) // veamos que hay que hacer. { case 1: // BAJAS DE ALQUILERES. //bajas_alquileres(50); break; case 2: // VOLVER AL MENU 1. *p_estoy_en=1; *p_select_actual=1; *p_n_op_menu=5; break; } break; } // fin del switch-case(estoy_en) general (TOCHO). } // fin de la funci¢n miga // ----------------------------------------------------------------------- // FUNCIàN QUE INICIA EL MODO GRµFICO // ----------------------------------------------------------------------- void modo_grafico(){ int gdriver = DETECT, gmode, errorcode; initgraph(&gdriver, &gmode, "c:\\tc\\bgi"); errorcode = graphresult(); if (errorcode != grOk){ printf("Error al iniciar el modo gr fico: %s\n", grapherrormsg(errorcode)); printf("Pulse cualquier tecla1 para finalizar..."); getch(); exit(1); } } // ----------------------------------------------------------------------- // FUNCION MENU // ----------------------------------------------------------------------- void menu(int estoy_en, int select_actual) { //-------------------- CABECERA DE LA PANTALLA ----------------------- if (*p_refresco) // tomamos otro refresco... (ahora una fanta lim¢n). { setviewport(0, 0, getmaxx(), getmaxy(), 0); settextstyle(2, 0, 5); ventana(1, 1, getmaxx(), getmaxy(),titulo,1,9); boton(5, 30, getmaxx()-5, 80, 0, "", 9, 3); setcolor(8); line(5, 90, getmaxx()-5, 90); // dibujamos una doble setcolor(15); line(5, 91, getmaxx()-5, 91); // l¡nea. settextstyle(7,0,6); setcolor (1); // caja central con nuestro outtextxy(110,23,"Video Club ALFA"); // logo del videoclub. setcolor(8); line(5, 134, getmaxx()-5, 134); // dibujamos otra doble setcolor(15); line(5, 135, getmaxx()-5, 135); // l¡nea. localizacion(estoy_en,125,105); // mostramos en una barra donde estamos *p_refresco=0; // demasiadas burbujas... } //----------------- fin de la cabecera de la pantalla ------------------ setviewport(185, 180, 600, 300, 0); // zona de los botones. switch (estoy_en) // Mostramos un men£ seg£n donde estemos. { case 1: // ------------- MENU PRINCIPAL ------------------------------ settextstyle(2,0,6); boton(0, 5, 250, 30, 0, "1.- Gesti¢n de Clientes", 16,7); boton(0, 45, 250, 70, 0, "2.- Gesti¢n de Pel¡culas", 16,7); boton(0, 85, 250, 110, 0, "3.- Alquileres", 16,7); boton(0, 125, 250, 150, 0, "4.- Devoluciones", 16,7); boton(0, 165, 250, 190, 0, "5.- Salir", 16,7); break; case 11: // ---------------- MENU CLIENTES --------------------------- settextstyle(2,0,6); boton(0, 5, 250, 30, 0, "1.- Altas de Clientes", 16,7); boton(0, 45, 250, 70, 0, "2.- Bajas de Clientes", 16,7); boton(0, 85, 250, 110, 0, "3.- Modificaciones", 16,7); boton(0, 125, 250, 150, 0, "4.- Listado de clientes", 16,7); boton(0, 165, 250, 190, 0, "5.- Volver", 16,7); break; case 12: // ------------- MENU GESTION DE PEDIDOS --------------------- settextstyle(2,0,6); boton(0, 5, 250, 30, 0, "1.- Altas de Pel¡culas", 16,7); boton(0, 45, 250, 70, 0, "2.- Bajas de Pel¡culas", 16,7); boton(0, 85, 250, 110, 0, "3.- Modificaciones", 16,7); boton(0, 125, 250, 150, 0, "4.- Listado de datos", 16,7); boton(0, 165, 250, 190, 0, "5.- Volver", 16,7); break; case 13: //------------------ MENU 3: ALQUILERES -------------------- settextstyle(2,0,6); boton(0, 5, 250, 30, 0, "1.- Altas de Alquiler", 16,7); boton(0, 45, 250, 70, 0, "2.- Modificar", 16,7); boton(0, 85, 250, 110, 0, "3.- Listar Alquileres", 16,7); boton(0, 125, 250, 150, 0, "4.- Volver", 16,7); break; case 14:// ------------------- MENU 4: DEVOLUCIONES ------------------ settextstyle(2,0,6); boton(0, 5, 250, 30, 0, "1.- Devoluciones", 16,7); boton(0, 45, 250, 70, 0, "2.- Modificaciones", 16,7); boton(0, 85, 250, 110, 0, "3.- Volver", 16,7); break; } //fin del switch-case(estoy_en). setlinestyle(1,0,2); switch (select_actual)// Ahora pintamos un recuadro al bot¢n seleccionado. { case 1: rectangle(5,9,245,26); setlinestyle(0,0,2);rectangle(0,5,250,30); break; case 2: rectangle(5,49,245,66); setlinestyle(0,0,2);rectangle(0,45,250,70); break; case 3: rectangle(5, 89, 245, 106); setlinestyle(0,0,2);rectangle(0,85,250,110); break; case 4: rectangle(5, 129, 245, 146); setlinestyle(0,0,2);rectangle(0,125,250,150); break; case 5: rectangle(5,169, 245, 186); setlinestyle(0,0,2);rectangle(0,165,250,190); break; } // fin del switch-case(select_actual). setlinestyle(0,0,0); // volvemos a poner el estilo de l¡nea normal. } // fin de la funci¢n men£. // ------------------------------------------------------------------------ // FUNCIàN LOCALIZACIàN // ------------------------------------------------------------------------ void localizacion(int estoy_en, int x, int y) { settextstyle(2,0,5); boton(5,100,getmaxx()-225,124,1,"Localizaci¢n:",8,7); setcolor(1); switch (estoy_en) { case 1: outtextxy(x,y,"Men£ General"); break; case 11: outtextxy(x,y, "Men£ General / Gesti¢n de Clientes"); break; case 12: outtextxy(x,y, "Men£ General / Gesti¢n de Pedidos"); break; case 13: outtextxy(x,y, "Men£ General / Alquileres"); break; case 14: outtextxy(x,y, "Men£ General / Devoluciones"); break; } // fin del switch-case } // fin de la funci¢n. // ------------------------------------------------------------------------ // FUNCIàN RELOJ // ------------------------------------------------------------------------ void reloj (int x, int y) { setviewport(0,0,getmaxx(),getmaxy(),1); time_t t; time(&t); settextstyle(2,0,5); boton (x,y,x+210,y+25,0,ctime(&t),1,7); } // ------------------------------------------------------------------------ // FUNCIàN ALTAS DE CLIENTES // ------------------------------------------------------------------------ void altas_clientes(int n) { int j=0; while (j0) j++; if (jcodigo_max){ setviewport(305,318,560,400,1); ventana(1,1,250,75,"Error",4,0); setcolor(0);settextstyle(2,0,5); outtextxy(12,40,"El cliente no es socio nuestro."); sound(500);delay(300);nosound(); getch();setviewport(0,0,getmaxx(),getmaxy(),0); setcolor(7);setfillstyle(1,7);bar(305,318,560,400); setviewport(70,160,getmaxx(),getmaxy(),0); outtextxy(130,192,codigo); introcad(130,192,codigo,12,0,2,5,7); } icon8(10,193); setcolor(0); outtextxy(130,72,socios[atoi(codigo)-1].nombre); outtextxy(130,102,socios[atoi(codigo)-1].apellidos); outtextxy(130,132,socios[atoi(codigo)-1].direccion); outtextxy(130,162,socios[atoi(codigo)-1].telefono); setviewport(305,318,560,400,1); ventana(1,1,250,75,"Confirmar eliminaci¢n",4,0); setcolor(0);settextstyle(2,0,5); outtextxy(30,40,"¨Est  seguro? (s/n)"); char respuesta=getch(); while(respuesta!='n' && respuesta!='s') respuesta=getch(); if (respuesta=='s') socios[atoi(codigo)-1].codigo=-1; } } // ------------------------------------------------------------------------ // FUNCIàN MODIFICAR CLIENTES // ------------------------------------------------------------------------ void modificar_clientes(int n){ int j=0; while (jcodigo_max || atoi(codigo)<=0 || socios[atoi(codigo)-1].codigo==-1){ setviewport(305,318,560,400,1); ventana(1,1,250,75,"Error",4,0); setcolor(0);settextstyle(2,0,5); outtextxy(12,40,"El cliente no es socio nuestro."); sound(500);delay(300);nosound(); getch();setviewport(0,0,getmaxx(),getmaxy(),0); setcolor(7);setfillstyle(1,7);bar(305,318,560,400); setviewport(70,160,getmaxx(),getmaxy(),0); outtextxy(130,192,codigo); introcad(130,192,codigo,12,0,2,5,7); } icon8(10,193); setcolor(0); outtextxy(130,72,socios[atoi(codigo)-1].nombre); outtextxy(130,102,socios[atoi(codigo)-1].apellidos); outtextxy(130,132,socios[atoi(codigo)-1].direccion); outtextxy(130,162,socios[atoi(codigo)-1].telefono); setcolor(8); outtextxy(30,190,"C¢digo:"); setcolor(7);outtextxy(20,30,"Introduzca el C¢digo del Cliente:"); setcolor(4);outtextxy(20,30,"Elija el Campo a Modificar:"); setcolor(1); outtextxy(30,70,"Nombre:"); setcolor(1); outtextxy(30,100,"Apellidos:"); setcolor(1); outtextxy(30,130,"Direcci¢n:"); setcolor(1); outtextxy(30,160,"Telefono:"); int tecla1, tecla12, sw=1,pos=1,y=73;// pos es el campo (1) icon9(10,y,4); while(sw==1){ tecla1=getch(); if(tecla1==0) // leemos tecla especial. { tecla12=getch(); switch(tecla12) { case 72: // Flecha arriba if (pos>1){ pos--;icon9(10,y,7); y-=30; icon9(10,y,4); } break; case 80: // Flecha abajo if (pos<4){ pos++;icon9(10,y,7); y+=30; icon9(10,y,4); } break; } // fin del switch-case }// fin del if else if (tecla1==13) // MIGA DEL ASUNTO { icon9(10,y,2); switch(pos){ case 1: setcolor(7);outtextxy(130,72,socios[atoi(codigo)-1].nombre); introcad(130,72,socios[atoi(codigo)-1].nombre,11,16,2,5,7); break; case 2: setcolor(7);outtextxy(130,102,socios[atoi(codigo)-1].apellidos); introcad(130,102,socios[atoi(codigo)-1].apellidos,21,16,2,5,7); break; case 3: setcolor(7);outtextxy(130,132,socios[atoi(codigo)-1].direccion); introcad(130,132,socios[atoi(codigo)-1].direccion,21,16,2,5,7); break; case 4: setcolor(7);outtextxy(130,162,socios[atoi(codigo)-1].telefono); introcad(130,162,socios[atoi(codigo)-1].telefono,11,16,2,5,7); break; } icon9(10,y,4); } else if (tecla1==27) sw=0; } // fin del while } } // ------------------------------------------------------------------------ // FUNCIàN LISTAR CLIENTES // ------------------------------------------------------------------------ void listar_clientes(int n){ int j=0; while (j0){ char cod[6]; sprintf(cod,"%d",socios[j].codigo); outtextxy(10,y,cod); outtextxy(58,y,socios[j].nombre); outtextxy(152,y,socios[j].apellidos); outtextxy(332,y,socios[j].direccion); outtextxy(512,y,socios[j].telefono); y+=15;con++; } } getch(); } } // ------------------------------------------------------------------------ // FUNCIàN ALTAS DE PELICULAS // ------------------------------------------------------------------------ void altas_peliculas(int n){ int j=0; while (j0) j++; if (jcodigo_maxp){ setviewport(305,318,560,400,1); ventana(1,1,250,75,"Error",4,0); setcolor(0);settextstyle(2,0,5); outtextxy(12,40,"La pel¡cula no es conocida."); sound(500);delay(300);nosound(); getch();setviewport(0,0,getmaxx(),getmaxy(),0); setcolor(7);setfillstyle(1,7);bar(305,318,560,400); setviewport(70,160,getmaxx(),getmaxy(),0); outtextxy(130,222,codigo); introcad(130,222,codigo,12,0,2,5,7); } icon8(10,223); setcolor(0); outtextxy(130,72,pelis[atoi(codigo)-1].titulo); outtextxy(130,102,pelis[atoi(codigo)-1].director); outtextxy(130,132,pelis[atoi(codigo)-1].duracion); outtextxy(130,162,pelis[atoi(codigo)-1].tema); char na[6]={NULL}; sprintf(na,"%d",pelis[atoi(codigo)-1].n_alquileres); outtextxy(130,192,na); setviewport(305,318,560,400,1); ventana(1,1,250,75,"Confirmar eliminaci¢n",4,0); setcolor(0);settextstyle(2,0,5); outtextxy(30,40,"¨Est  seguro? (s/n)"); char respuesta=getch(); while(respuesta!='n' && respuesta!='s') respuesta=getch(); if (respuesta=='s') pelis[atoi(codigo)-1].codigo=-1; } } // ------------------------------------------------------------------------ // FUNCIàN MODIFICAR PELICULAS // ------------------------------------------------------------------------ void modificar_peliculas(int n){ int j=0; while (jcodigo_maxp || atoi(codigo)<=0 || pelis[atoi(codigo)-1].codigo==-1){ setviewport(305,318,560,400,1); ventana(1,1,250,75,"Error",4,0); setcolor(0);settextstyle(2,0,5); outtextxy(12,40,"La pel¡cula no es conocida."); sound(500);delay(300);nosound(); getch();setviewport(0,0,getmaxx(),getmaxy(),0); setcolor(7);setfillstyle(1,7);bar(305,318,560,400); setviewport(70,160,getmaxx(),getmaxy(),0); outtextxy(130,222,codigo); introcad(130,222,codigo,12,0,2,5,7); } icon8(10,223); setcolor(0); outtextxy(130,72,pelis[atoi(codigo)-1].titulo); outtextxy(130,102,pelis[atoi(codigo)-1].director); outtextxy(130,132,pelis[atoi(codigo)-1].duracion); outtextxy(130,162,pelis[atoi(codigo)-1].tema); char na[6]={NULL}; sprintf(na,"%d",pelis[atoi(codigo)-1].n_alquileres); outtextxy(130,192,na); setcolor(8); outtextxy(30,220,"C¢digo:"); setcolor(7);outtextxy(20,30,"Introduzca el C¢digo de la Pel¡cula:"); setcolor(4);outtextxy(20,30,"Elija el Campo a Modificar:"); setcolor(1); outtextxy(30,70,"T¡tulo:"); setcolor(1); outtextxy(30,100,"Director:"); setcolor(1); outtextxy(30,130,"Duraci¢n:"); setcolor(1); outtextxy(30,160,"Tema:"); int tecla1, tecla12, sw=1,pos=1,y=73;// pos es el campo (1) icon9(10,y,4); while(sw==1){ tecla1=getch(); if(tecla1==0) // leemos tecla especial. { tecla12=getch(); switch(tecla12) { case 72: // Flecha arriba if (pos>1){ pos--;icon9(10,y,7); y-=30; icon9(10,y,4); } break; case 80: // Flecha abajo if (pos<4){ pos++;icon9(10,y,7); y+=30; icon9(10,y,4); } break; } // fin del switch-case }// fin del if else if (tecla1==13) // MIGA DEL ASUNTO { icon9(10,y,2); switch(pos){ case 1: setcolor(7);outtextxy(130,72,pelis[atoi(codigo)-1].titulo); introcad(130,72,pelis[atoi(codigo)-1].titulo,20,16,2,5,7); break; case 2: setcolor(7);outtextxy(130,102,pelis[atoi(codigo)-1].director); introcad(130,102,pelis[atoi(codigo)-1].director,20,16,2,5,7); break; case 3: setcolor(7);outtextxy(130,132,pelis[atoi(codigo)-1].duracion); introcad(130,132,pelis[atoi(codigo)-1].duracion,4,16,2,5,7); break; case 4: setcolor(7);outtextxy(130,162,pelis[atoi(codigo)-1].tema); introcad(130,162,pelis[atoi(codigo)-1].tema,11,16,2,5,7); break; } icon9(10,y,4); } else if (tecla1==27) sw=0; } // fin del while } } // ------------------------------------------------------------------------ // FUNCIàN LISTAR PELICULAS // ------------------------------------------------------------------------ void listar_peliculas(int n){ int j=0; while (j0){ char cod[6]; sprintf(cod,"%d",pelis[j].codigo); outtextxy(10,y,cod); outtextxy(58,y,pelis[j].titulo); outtextxy(220,y,pelis[j].director); outtextxy(382,y,pelis[j].duracion); char aux[6]; sprintf(aux,"%d",pelis[j].n_alquileres); outtextxy(424,y,aux); outtextxy(514,y,pelis[j].tema); y+=15;con++; } } getch(); } } // ------------------------------------------------------------------------ // FUNCIàN ALTAS DE ALQUILERES // ------------------------------------------------------------------------ void altas_alquileres(int n){ int j=0; while (j0) j++; if (jcodigo_max || atoi(codigo)<=0 || socios[atoi(codigo)-1].codigo==-1){ setviewport(305,318,560,400,1); ventana(1,1,250,75,"Error",4,0); setcolor(0);settextstyle(2,0,4); outtextxy(30,40,"Cliente no v lido. ¨Repetir? (s/n)"); sound(500);delay(300);nosound(); a=getch(); while (a!='s' && a!='n') a=getch(); if (a=='s'){ setviewport(0,0,getmaxx(),getmaxy(),0); setcolor(7);setfillstyle(1,7);bar(305,318,560,400); setviewport(70,160,getmaxx(),getmaxy(),0); settextstyle(2,0,5);outtextxy(130,72,codigo); introcad(130,72,codigo,6,0,2,5,7); } else{ sw2=0; break; } } presta[j].socios=socios[atoi(codigo)-1].codigo; if (sw2){ int con=0,x=130; while(con<5){ icon8(10,73); setcolor(0); outtextxy(235,72,socios[atoi(codigo)-1].nombre); outtextxy(320,72,socios[atoi(codigo)-1].apellidos); icon2(10,103); introcad(130,102,codigo,6,0,2,5,7); while(atoi(codigo)>codigo_maxp || atoi(codigo)<=0 || pelis[atoi(codigo)-1].codigo==-1 || pelis[atoi(codigo)-1].alq==1){ setviewport(305,318,560,400,1); ventana(1,1,250,75,"Error",4,0); setcolor(0);settextstyle(2,0,4); outtextxy(20,40,"Pelicula no disponible. ¨Repetir? (s/n)"); sound(500);delay(300);nosound(); a=getch(); while (a!='s' && a!='n') a=getch(); if (a=='s'){ setviewport(0,0,getmaxx(),getmaxy(),0); setcolor(7);setfillstyle(1,7);bar(305,318,560,400); setviewport(70,160,getmaxx(),getmaxy(),0); settextstyle(2,0,5);outtextxy(130,102,codigo); introcad(130,102,codigo,6,0,2,5,7); } else{ sw2=0; break; } } if (sw2){ icon8(10,103); setcolor(0); outtextxy(240,102,pelis[atoi(codigo)-1].titulo); pelis[atoi(codigo)-1].alq=1; presta[j].lista_pelis[con]=pelis[atoi(codigo)-1].codigo; (pelis[atoi(codigo)-1].n_alquileres)++; } if (con<5){ setviewport(305,318,560,400,1); ventana(1,1,250,75,"Pel¡culas",1,0); setcolor(0);settextstyle(2,0,4); outtextxy(20,40,"¨Quiere introducir m s pel¡culas? (s/n)"); settextstyle(2,0,5); a=getch(); while (a!='s' && a!='n') a=getch(); if (a=='s'){ setviewport(0,0,getmaxx(),getmaxy(),0); setcolor(7);setfillstyle(1,7);bar(305,318,560,400); setviewport(70,160,getmaxx(),getmaxy(),0); settextstyle(2,0,5);outtextxy(130,102,codigo); if (sw2){ outtextxy(240,102,pelis[atoi(codigo)-1].titulo); setcolor(0); outtextxy(x,132,codigo); con++;x+=50; } sw2=1; } else{ if (presta[j].lista_pelis[0]==0) presta[j].codigo=0; else{ codigo_maxa=j+1; } break; } } } } }while(sw); } else{ // imprimir tabla llena } } // ------------------------------------------------------------------------ // FUNCIàN ALTAS DE ALQUILERES // ------------------------------------------------------------------------ void modificar_alquileres(int n){ int j=0; while (jcodigo_maxa || atoi(codigo)<=0 || presta[atoi(codigo)-1].codigo==-1){ setviewport(305,318,560,400,1); ventana(1,1,250,75,"Error",4,0); setcolor(0);settextstyle(2,0,5); outtextxy(20,40,"El alquiler no existe."); sound(500);delay(300);nosound(); getch();setviewport(0,0,getmaxx(),getmaxy(),0); setcolor(7);setfillstyle(1,7);bar(305,318,560,400); setviewport(70,160,getmaxx(),getmaxy(),0); outtextxy(330,102,codigo); introcad(330,102,codigo,12,0,2,5,7); } icon8(230,103); setcolor(8); outtextxy(250,100,"C¢digo:"); setcolor(1); outtextxy(30,100,"Pel¡cula 1:"); setcolor(1); outtextxy(30,130,"Pel¡cula 2:"); setcolor(1); outtextxy(30,160,"Pel¡cula 3:"); setcolor(1); outtextxy(30,190,"Pel¡cula 4:"); setcolor(1); outtextxy(30,220,"Pel¡cula 5:"); char aux[6]; sprintf(aux,"%d",presta[atoi(codigo)-1].lista_pelis[0]); setcolor(0);outtextxy(130,102,aux); sprintf(aux,"%d",presta[atoi(codigo)-1].lista_pelis[1]); outtextxy(130,132,aux); sprintf(aux,"%d",presta[atoi(codigo)-1].lista_pelis[2]); outtextxy(130,162,aux); sprintf(aux,"%d",presta[atoi(codigo)-1].lista_pelis[3]); outtextxy(130,192,aux); sprintf(aux,"%d",presta[atoi(codigo)-1].lista_pelis[4]); outtextxy(130,222,aux); sprintf(aux,"%d",presta[atoi(codigo)-1].socios); outtextxy(130,72,aux); outtextxy(130,235,socios[(presta[atoi(codigo)-1].socios)-1].nombre); outtextxy(130,320,socios[(presta[atoi(codigo)-1].socios)-1].apellidos); int tecla1, tecla12, sw=1,pos=1,y=103;// pos es el campo (1) icon9(10,y,4); while(sw==1){ tecla1=getch(); if(tecla1==0) // leemos tecla especial. { tecla12=getch(); switch(tecla12) { case 72: // Flecha arriba if (pos>1){ pos--;icon9(10,y,7); y-=30; icon9(10,y,4); } break; case 80: // Flecha abajo if (pos<5){ pos++;icon9(10,y,7); y+=30; icon9(10,y,4); } break; } // fin del switch-case }// fin del if else if (tecla1==13) // MIGA DEL ASUNTO { icon9(10,y,2); char aux[6];int sw2=1; switch(pos){ case 1: sprintf(aux,"%d",presta[atoi(codigo)-1].lista_pelis[0]); setcolor(7);outtextxy(130,102,aux); introcad(130,102,aux,6,16,2,5,7); while(atoi(codigo)>codigo_maxp || atoi(codigo)<=0 || pelis[atoi(codigo)-1].codigo==-1 || pelis[atoi(codigo)-1].alq==1){ setviewport(305,318,560,400,1); ventana(1,1,250,75,"Error",4,0); setcolor(0);settextstyle(2,0,4); outtextxy(20,40,"Pelicula no disponible. ¨Repetir? (s/n)"); sound(500);delay(300);nosound(); int a=getch(); while (a!='s' && a!='n') a=getch(); if (a=='s'){ setviewport(0,0,getmaxx(),getmaxy(),0); setcolor(7);setfillstyle(1,7);bar(305,318,560,400); setviewport(70,160,getmaxx(),getmaxy(),0); settextstyle(2,0,5);outtextxy(130,102,codigo); introcad(130,102,codigo,6,0,2,5,7); } else{ sw2=0; break; } } if (sw2) presta[atoi(codigo)-1].lista_pelis[0]=atoi(aux); else{ setcolor(0);outtextxy(130,102,aux); } break; case 2: sprintf(aux,"%d",presta[atoi(codigo)-1].lista_pelis[1]); setcolor(7);outtextxy(130,132,aux); introcad(130,132,aux,6,16,2,5,7); presta[atoi(codigo)-1].lista_pelis[1]=atoi(aux); break; case 3: sprintf(aux,"%d",presta[atoi(codigo)-1].lista_pelis[2]); setcolor(7);outtextxy(130,162,aux); introcad(130,162,aux,4,16,2,5,7); presta[atoi(codigo)-1].lista_pelis[2]=atoi(aux); break; case 4: sprintf(aux,"%d",presta[atoi(codigo)-1].lista_pelis[3]); setcolor(7);outtextxy(130,192,aux); introcad(130,192,aux,11,16,2,5,7); presta[atoi(codigo)-1].lista_pelis[3]=atoi(aux); break; } icon9(10,y,4); } else if (tecla1==27) sw=0; } // fin del while } getch(); } void bajas_alquileres(int n){ int j=0; while (jcodigo_maxp){ setviewport(305,318,560,400,1); ventana(1,1,250,75,"Error",4,0); setcolor(0);settextstyle(2,0,5); outtextxy(12,40,"El alquiler no exuiste."); sound(500);delay(300);nosound(); getch();setviewport(0,0,getmaxx(),getmaxy(),0); setcolor(7);setfillstyle(1,7);bar(305,318,560,400); setviewport(70,160,getmaxx(),getmaxy(),0); outtextxy(130,192,codigo); introcad(130,192,codigo,12,0,2,5,7); } icon8(10,223); setcolor(0); char na[6]={NULL}; sprintf(na,"%d",pelis[atoi(codigo)-1].n_alquileres); outtextxy(130,192,na); setviewport(305,318,560,400,1); ventana(1,1,250,75,"Confirmar eliminaci¢n",4,0); setcolor(0);settextstyle(2,0,5); outtextxy(30,40,"¨Est  seguro? (s/n)"); char respuesta=getch(); while(respuesta!='n' && respuesta!='s') respuesta=getch(); if (respuesta=='s') pelis[atoi(codigo)-1].codigo=-1; } }