
//bibliotecas empleadas
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<dos.h>
//declaracion de funciones
void inicio();
void recuadro(int x,int y,int x1,int y1);
void principal(void);
char menu(char o);
char menu1(char peliculas[4][15],int sesiones[3],int salas[4]);
char menu2(char peliculas[4][15],int sesiones[3],int cliente[100][3],
	   int importe[50],int c[1]);
char menu3(int cliente[100][3],int importe[50],int c[1]);
void error(void);
void final(void);
//funcion principal
void main(void)
{
	clrscr();
	principal();
}
//funcion que llama a todas las funciones
void principal()
{
char o=' ';
char peliculas[4][15]={"0","0","0","0"};
int sesiones[3]={0,0,0};
int salas[4]={0,0,0,0};
int cliente[100][3];
int importe[50];
int i,i1;
int c[1]={0};
	//inicializa cliente
	for(i=0;i<3;i++)
	for(i1=0;i1<100;i1++)
	cliente[i1][i]=0;
	//inicializa importe
	for(i=0;i<50;i++)
	importe[i]=0;

	inicio();
	while(o!='4')
	{
	o=menu(o);
	switch(o)
		{
		case '1':
		 o=menu1(peliculas,sesiones,salas);
		 break;
		case '2':
		 o=menu2(peliculas,sesiones,cliente,importe,c);
		 break;
		case '3':
		 o=menu3(cliente,importe,c);
		 break;
		case '4':
		 final();
		 break;
		default :
			error();
		}
	}
}
//funcion crea un recuadro en la coordenadas indicadas
void recuadro(int x,int y,int x1,int y1)
{
int a,b;
	for(a=x;a!=x1+1;a++)
	for(b=y;b!=y1+1;b++)
	{
	gotoxy(a,b);
	cprintf("Û");
	}
}
//funcion para el menu principal
char menu(char o)
{
	textbackground(0);
	clrscr();
	textcolor(4);
	recuadro(26,8,56,18);
	textbackground(4);
	textcolor(15);
	gotoxy(28,10);
	cprintf("1.-Peliculas en proyeccion");
	gotoxy(28,12);
	cprintf("2.-Ventas");
	gotoxy(28,14);
	cprintf("3.-Resultados");
	gotoxy(28,16);
	cprintf("4.-Finalizar el programa");
	if(o==' ')o=getch();
	return o;
}
//menu primero
char menu1(char peliculas[4][15],int sesiones[3],int salas[4])
{
char o='0';
int i,n;
		textbackground(0);
		textcolor(1);
		recuadro(1,1,31,10);
		textbackground(1);
		textcolor(15);
		gotoxy(2,2);
		cprintf("1.-Dar de alta a 4 peliculas");
		gotoxy(2,4);
		cprintf("2.-Modificar una pelicula");
		gotoxy(2,6);
		cprintf("3.-Precios para las sesiones");
		gotoxy(2,8);
		cprintf("4.-Capacidad de las salas");
		o=getch();
		switch(o)
		{
			//Dar de alta a 4 peliculas
			case '1':
				clrscr();
				for(i=0;i<4;i++)
				{
				gotoxy(30,12);
				cprintf("Introduzca Pelicula %i¦:",i+1);
				gotoxy(53,12);
				gets(peliculas[i]);
				gotoxy(53,12);
				printf("                       ");
				}
			break;
			//modificar una pelicula
			case '2':
				clrscr();
				for(i=0;i<4;i++)
					{
					gotoxy(30,12+i);
					cprintf("%i.-%s",i+1,peliculas[i]);
					}
				gotoxy(25,18);
				cprintf("Introduzca pelicula a cambiar:");
				scanf("%d",&n);
				//se pone getchar porque sino no sale
				getchar();
				gotoxy(25,20);
				cprintf("Introduzca nuevo nombre:");
				gets(peliculas[n-1]);
			break;
			//poner los precios de las 3 sesiones
			case '3':
				clrscr();
				for(i=0;i<3;i++)
				     {
				     gotoxy(30,12);
				     cprintf("Precios de Sesiones %i¦:",i+1);
				     gotoxy(53,12);
				     scanf("%d",&sesiones[i]);
				     gotoxy(53,12);
				     printf("                       ");
				     }
			break;
			//capacidad de las 4 salas
			case '4':
				clrscr();
				for(i=0;i<4;i++)
				      {
				      gotoxy(30,12);
				      cprintf("Capacidad de sala %i¦:",i+1);
				      gotoxy(51,12);
				      scanf("%i",&salas[i]);
				      gotoxy(51,12);
				      printf("                       ");
				      }
			break;
			default :
				if(o!=' ') error();
		}
if(o==' ') return ' ';
else return '1';
}
//menu segundo
char menu2(char peliculas[4][15],int sesiones[3],int cliente[100][3],int importe[50],int c[1])
{
int i,n;
		textbackground(2);
		textcolor(15);

		clrscr();
		printf("\t\t\t\tSELECCION DE PELICULA");
		for(i=0;i<4;i++)
		{
		gotoxy(39,12+i);
		cprintf("%i.-%s",i+1,peliculas[i]);
		}
		gotoxy(34,22);
		cprintf("Elija pelicula:");
		scanf("%i",&n);
		cliente[c[1]][0]=n;

		clrscr();
		printf("\t\t\t\tSELECCION DE LA SESION");
		gotoxy(28,14);for(i=0;i<3;i++)
		{
		gotoxy(39,12+i);
		cprintf("%i.-%d",i+1,sesiones[i]);
		}
		gotoxy(34,22);
		cprintf("Elija sesion:");
		scanf("%i",&n);
		cliente[c[1]][1]=n;

		clrscr();
		printf("\t\t\t\tSELECCION DE ENTRADAS");
		gotoxy(34,12);
		cprintf("Numero de entradas:");
		scanf("%i",&n);
		cliente[c[1]][2]=n;

		clrscr();
		//calculo del importe
		importe[c[1]]=(cliente[c[1]][2])*(sesiones[cliente[c[1]][1]-1]);
		gotoxy(34,12);
		cprintf("IMPORTE TOTAL:%i",importe[c[1]]);
		c[1]++;
		getch();
return ' ';
}
//menu tercero
char menu3(int cliente[100][3],int importe[50],int c[1])
{
char o='0';
int i;
int suma[4]={0,0,0,0};

		textbackground(0);
		textcolor(3);
		recuadro(49,14,80,24);
		textbackground(3);
		textcolor(15);
		gotoxy(52,16);
		cprintf("1.-Localidades por sala");
		gotoxy(52,19);
		cprintf("2.-Importe total de ventas");
		gotoxy(52,22);
		cprintf("3.-Localidades por sesion");
		o=getch();
		switch(o)
		{
			case '1':
			      clrscr();
			      for(i=0;i<c[1]+1;i++)
					{
					if(cliente[i][0]==1) suma[0]=suma[0]+cliente[i][2];
					if(cliente[i][0]==2) suma[1]=suma[1]+cliente[i][2];
					if(cliente[i][0]==3) suma[2]=suma[2]+cliente[i][2];
					if(cliente[i][0]==4) suma[3]=suma[3]+cliente[i][2];

					}
			      for(i=1;i<5;i++)
			      {
			      gotoxy(30,12+i);
			      cprintf("Localidades de sala %i¦:%i",i,suma[i-1]);
			      }
			      getch();
			break;
			case '2':
				clrscr();
				for(i=0;i<c[1];i++)
					{
					suma[0]=suma[0]+importe[i];
					}
				gotoxy(35,10);
				cprintf("Importe total:%i",suma[0]);
				getch();
			break;
			case '3':
				clrscr();
				for(i=0;i<c[1]+1;i++)
					{
					if(cliente[i][1]==1) suma[0]=suma[0]+cliente[i][2];
					if(cliente[i][1]==2) suma[1]=suma[1]+cliente[i][2];
					if(cliente[i][1]==3) suma[2]=suma[2]+cliente[i][2];
					}
				for(i=1;i<4;i++)
			      {
			      gotoxy(30,12+i);
			      cprintf("Localidades de sesion %i¦:%i",i,suma[i-1]);
			      }
				getch();
			break;
			default :
				if(o!=' ') error();
		}
if(o==' ') return ' ';
else return '3';

}
//error
void error()
{
	textcolor(10);
		gotoxy(32,2);
		cprintf("Eleccion incorrecta");
		getch();
		printf("                   ");

}
//pantalla de presentacion
void inicio()
{
char texto[12]={"BIENVENIDO"};
int x,y,z;
randomize();

z=(rand() %14)+1;
textcolor(z);
for(x=1;x<70;x++)
{
gotoxy(x,12);
cprintf(" %s",texto);
delay(25);
}
for(x=70;x>34;x--)
{
gotoxy(x,12);
cprintf("%s ",texto);
delay(25);
}
delay(1000);
for(y=13;y!=24;y++)
for(x=35;x<45;x=x+2)
	{
	gotoxy(x,y-1);
	cprintf(" ");
	gotoxy(x,y);
	cprintf("%c",texto[x-35]);
	gotoxy(x+1,25-y);
	cprintf(" ");
	gotoxy(x+1,24-y);
	cprintf("%c",texto[x-34]);
	delay(50);
	}
}
//final del programa
void final()
{
int x,y;
textbackground(0);
for(y=8;y<19;y++)
	{
	for(x=26;x<57;x++)
		{
		gotoxy(x,y);
		cprintf(" ");
		delay(10);
		}
	}
}
