376 lines
11 KiB
Plaintext
376 lines
11 KiB
Plaintext
#include <graphics.h>
|
||
#include <stdlib.h>
|
||
#include <stdio.h>
|
||
#include <conio.h>
|
||
#include <dos.h>
|
||
#include <time.h>
|
||
#include "d:\progs_c\gui.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 *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];
|
||
char tema[10];
|
||
int duracion;
|
||
int n_alquileres;
|
||
};
|
||
struct clientes {
|
||
int codigo;
|
||
char nombre[25];
|
||
};
|
||
struct alquileres {
|
||
struct peliculas lista_pelis[5];
|
||
struct clientes socios;
|
||
float fecha_dev;
|
||
char finalizado;
|
||
};
|
||
// ---------------- Fin de la definici¢n de los patrones. -----------------
|
||
|
||
struct peliculas existencias[230]; // Declaraci¢n de arrays
|
||
struct clientes socios[100]; // de estructuras.
|
||
struct alquileres prestamos[100]; // A nivel global.
|
||
|
||
|
||
void modo_grafico();
|
||
void menu(int, int);
|
||
void miga(int*, int*);
|
||
void localizacion(int, int, int);
|
||
void reloj(int, int);
|
||
|
||
void introcad(char cad[],int a,int x,int y,int c,int s,int t);
|
||
void altas_clientes(int);
|
||
//int bajas_clientes(struct, int, int);
|
||
//void modificar_clientes(struct, int, int);
|
||
|
||
// ***********************************************************************
|
||
// PROGRAMA PRINCIPAL
|
||
// ***********************************************************************
|
||
void main() {
|
||
|
||
// struct peliculas existencias[500]; // probablemente no est‚ aqu¡.
|
||
// struct clientes socios[200];
|
||
// struct alquileres prestamos[200];
|
||
// <..inicializar las tablas..>.
|
||
|
||
modo_grafico();
|
||
//presentacion(); // Me pregunto si llegar‚ a hacerla... ;-).
|
||
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=3;
|
||
break;
|
||
case 4:
|
||
*p_estoy_en=14;
|
||
*p_select_actual=1;
|
||
*p_n_op_menu=3;
|
||
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(200);
|
||
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(), 1, 9, titulo);
|
||
boton(5, 30, getmaxx()-5, 80, 3, 0, "", 9);
|
||
|
||
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(110, 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, 7, 0, "1.- Gesti¢n de Clientes", 16);
|
||
boton(0, 45, 250, 70, 7, 0, "2.- Gesti¢n de Pedidos", 16);
|
||
boton(0, 85, 250, 110, 7, 0, "3.- Alquileres", 16);
|
||
boton(0, 125, 250, 150, 7, 0, "4.- Devoluciones", 16);
|
||
boton(0, 165, 250, 190, 7, 0, "5.- Salir", 16);
|
||
break;
|
||
|
||
case 11: // ---------------- MENU CLIENTES ---------------------------
|
||
settextstyle(2,0,6);
|
||
boton(0, 5, 250, 30, 7, 0, "1.- Altas de Clientes", 16);
|
||
boton(0, 45, 250, 70, 7, 0, "2.- Bajas de Clientes", 16);
|
||
boton(0, 85, 250, 110, 7, 0, "3.- Modificaciones", 16);
|
||
boton(0, 125, 250, 150, 7, 0, "4.- Listado de clientes", 16);
|
||
boton(0, 165, 250, 190, 7, 0, "5.- Salir", 16);
|
||
break;
|
||
|
||
case 12: // ------------- MENU GESTION DE PEDIDOS ---------------------
|
||
settextstyle(2,0,6);
|
||
boton(0, 5, 250, 30, 7, 0, "1.- Altas de Pel¡culas", 16);
|
||
boton(0, 45, 250, 70, 7, 0, "2.- Bajas de Pel¡culas", 16);
|
||
boton(0, 85, 250, 110, 7, 0, "3.- Modificaciones", 16);
|
||
boton(0, 125, 250, 150, 7, 0, "4.- Listado de datos", 16);
|
||
boton(0, 165, 250, 190, 7, 0, "5.- Salir", 16);
|
||
break;
|
||
|
||
case 13: //------------------ MENU 3: ALQUILERES --------------------
|
||
settextstyle(2,0,6);
|
||
boton(0, 5, 250, 30, 7, 0, "1.- Altas de Alquiler", 16);
|
||
boton(0, 45, 250, 70, 7, 0, "2.- Modificar", 16);
|
||
boton(0, 85, 250, 110, 7, 0, "3.- Volver", 16);
|
||
break;
|
||
|
||
case 14:// ------------------- MENU 4: DEVOLUCIONES ------------------
|
||
settextstyle(2,0,6);
|
||
boton(0, 5, 250, 30, 7, 0, "1.- Devoluciones", 16);
|
||
boton(0, 45, 250, 70, 7, 0, "2.- Modificaciones", 16);
|
||
boton(0, 85, 250, 110, 7, 0, "3.- Volver", 16);
|
||
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,7,1,"Localizaci¢n:",8);
|
||
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,7,0,ctime(&t),1);
|
||
}
|
||
|
||
// ------------------------------------------------------------------------
|
||
// FUNCIàN ALTAS DE CLIENTES
|
||
// ------------------------------------------------------------------------
|
||
void altas_clientes(int n) {
|
||
int j=0;
|
||
while (j<n && socios[j].codigo>0) j++;
|
||
if (j<n){
|
||
|
||
setviewport(300,150,getmaxx(),getmaxy(),0);
|
||
|
||
ventana(0,20,250,200,0,0,"Alta de Clientes");
|
||
|
||
introcad(socios[j].nombre,24,100,100,1,2,6);
|
||
socios[j].codigo=j;
|
||
}
|
||
else{
|
||
// imprimir tabla llena
|
||
}
|
||
} // fin de la funci¢n altas_clientes
|
||
|
||
|
||
|
||
void introcad(char cad[],int a,int x,int y,int c,int s,int t){
|
||
int i;
|
||
for (i=0;i<=a-1;i++) {
|
||
if (i<a-1){
|
||
cad[i]=getche();cad[i+1]=NULL;
|
||
setcolor(c);settextstyle(s,0,t);outtextxy(x,y,cad);
|
||
}
|
||
else
|
||
if (i==a-1 && cad[i]!=13){
|
||
cad[i]=getche();
|
||
if (cad[i]!=13){
|
||
sound(1000);delay(50);nosound();
|
||
}
|
||
i--;
|
||
}
|
||
if (cad[i]==13){
|
||
cad[i]=NULL;
|
||
break;
|
||
}
|
||
}
|
||
}
|