static Scanner leer = new Scanner(System.
in);
//static Scanner leer2 = new Scanner([Link]);
static int formato=0, pelic=0, horario=0, edad=0, cont=-1;
static String mStr[][] = new String[100][4];
static double mNum[][] = new double[100][5];
public static void main(String[] args) {
procesoGeneral();
}
private static void procesoGeneral(){
int resp=1;
while(resp==1){
cont++;
[Link]("***** Registro No. "+(cont+1)+" *****");
[Link]("**** Formatos disponibles ****");
[Link]("1. 2D\n2. 3D\nSeleccione un opción: ");
formato = validarEntrada([Link](), 1, 2);
if(formato==1){
formato2D();
}else{
formato3D();
}
[Link]("Ingrese la cant. de boletos: ");
mNum[cont][1] = validarEntrada([Link](), 1, 10);
[Link]("Ingrese la edad del cliente: ");
edad = validarEntrada([Link](), 18);
// Calcular el subtotal de la factura
mNum[cont][2] = mNum[cont][0] * mNum[cont][1];
if(edad>=60){
mNum[cont][3] = mNum[cont][2] * 0.25;
}else{
mNum[cont][3] = 0;
}
//acumDesc += desc;
totalDesc();
//total = subTotal - desc;
mNum[cont][4] = mNum[cont][2] - mNum[cont][3];
//acumTotal += total;
totales();
imprimirFactura();
[Link]("\nDesea agregar otra factura?");
[Link]("1. Si\n2. No\nIngrese su respuesta: ");
resp = validarEntrada([Link](), 1, 2);
}
//[Link]("\n***** Datos estadisticos *****");
imprimirReporte();
//[Link]("\n\nReporte total de ventas:.......... "+(totales()-
total));
//[Link]("Reporte del descuento:............ "+(totalDesc()-
desc));
}
private static double totales(){
double suma=0;
for (int i = 0; i <= cont; i++) {
suma += mNum[i][4];
}
return suma;
}
private static double totalDesc(){
double suma=0;
for (int i = 0; i <= cont; i++) {
suma += mNum[i][3];
}
return suma;
}
private static void imprimirFactura(){
[Link]("\n***** Exija su factura *****");
[Link]("***** Cine Tiffany ******");
[Link]("No. Factura: "+ cont);
[Link]("Película:.................. "+mStr[cont][1]);
[Link]("Formato:................... "+mStr[cont][0]);
[Link]("Horario:................... "+mStr[cont][2]);
[Link]("Sala:...................... "+mStr[cont][3]);
[Link]("Cantidad:.................. "+mNum[cont][1]);
[Link]("Precio:.................... "+mNum[cont][0]);
[Link]("SubTotal:.................. "+mNum[cont][2]);
[Link]("Descuento:................. "+mNum[cont][3]);
[Link]("Total a pagar:............. "+mNum[cont][4]);
}
private static void horariosBadBoys(){
mStr[cont][1] = nombrePelicula();
[Link]("*** Estos son los horarios de esta pelicula ***");
[Link]("1. 5pm.\n2. 8pm.\n3. 10pm.\nSeleccione el horario: ");
horario = validarEntrada([Link](), 1, 3);
mStr[cont][2] = nombreHorario();
}
private static void horariosSonic(){
mStr[cont][1] = nombrePelicula();
[Link]("*** Estos son los horarios de esta pelicula ***");
[Link]("1. 10am.\n2. 3pm.\n3. 5pm.\n4. 7pm.\n5. 9pm.\nSeleccione
el horario: ");
horario = validarEntrada([Link](), 1, 5);
mStr[cont][2] = nombreHorario();
}
private static void formato2D(){
mStr[cont][0] = "2D";
mNum[cont][0] = 100;
[Link]("*** Peliculas del fomato 2D ****");
[Link]("1. Bad boys para siempre (5pm, 8pm y 10pm)");
[Link]("2. Sonic: La película (10am, 3pm, 5pm, 7pm y 9pm)");
[Link]("3. Joker (5pm, 7pm y 9pm)");
[Link]("4. El Hombre Araña 3 (2pm, 4pm y 7pm)");
[Link]("Ingrese el código de la pelicula: ");
pelic = validarEntrada([Link](), 1, 4);
switch (pelic) {
case 1:
mStr[cont][3] = "Sala No. 1";
horariosBadBoys();
break;
case 2: //Sonic: La película (10am, 3pm, 5pm, 7pm y 9pm)
mStr[cont][3] = "Sala No. 4";
horariosSonic();
break;
case 3: // Joker (5pm, 7pm y 9pm)"
mStr[cont][1] = nombrePelicula();
mStr[cont][3] = "Sala No. 6";
[Link]("*** Estos son los horarios de esta pelicula
***");
[Link]("1. 5pm.\n2. 7pm.\n3. 9pm.\nSeleccione el horario:
");
horario = validarEntrada([Link](), 1, 3);
mStr[cont][2] = nombreHorario();
break;
case 4: //El Hombre Araña 3 (2pm, 4pm y 7pm)
mStr[cont][1] = "El Hombre Araña 3";
mStr[cont][3] = "Sala No. 8";
[Link]("*** Estos son los horarios de esta pelicula
***");
[Link]("1. 2pm.\n2. 4pm.\n3. 7pm.\nSeleccione el horario:
");
horario = validarEntrada([Link](), 1, 3);
mStr[cont][2] = nombreHorario();
break;
default:
mStr[cont][1] = "";
break;
}
}
private static void formato3D(){
mStr[cont][0] = "3D";
mNum[cont][0] = 200;
[Link]("*** Peliculas del fomato 2D ****");
[Link]("1. Bad boys para siempre (5pm, 8pm y 10pm)");
[Link]("2. Avengers: Endgame (3pm, 5pm y 7pm)");
[Link]("3. Sonic: La película (10am, 3pm, 5pm, 7pm y 9pm)");
[Link]("4. Avatar 2 (10am, 2pm, 4pm y 7pm)");
[Link]("Ingrese el código de la pelicula: ");
pelic = validarEntrada([Link](), 1, 4);
switch (pelic) {
case 1:
mStr[cont][3] = "Sala No. 2";
horariosBadBoys();
break;
case 2: //Avengers: Endgame (3pm, 5pm y 7pm)
mStr[cont][1] = "Avengers: Endgame";
mStr[cont][3] = "Sala No. 3";
[Link]("*** Estos son los horarios de esta pelicula
***");
[Link]("1. 3pm.\n2. 5pm.\n3. 7pm.\nSeleccione el horario:
");
horario = validarEntrada([Link](), 1, 3);
mStr[cont][2] = nombreHorario();
break;
case 3: // Sonic
mStr[cont][3] = "Sala No. 5";
horariosSonic();
break;
case 4: //Avatar 2 (10am, 2pm, 4pm y 7pm)
mStr[cont][1] = "Avatar 2";
mStr[cont][3] = "Sala No. 7";
[Link]("*** Estos son los horarios de esta pelicula
***");
[Link]("1. 10am.\n2. 2pm.\n3. 4pm.\n4. 7pm.\nSeleccione
el horario: ");
horario = validarEntrada([Link](), 1, 4);
mStr[cont][2] = nombreHorario();
break;
default:
mStr[cont][1] = "";
break;
}
}
// ( 5, 1, 7)
// Método genérico para validar las entradas de datos, además devuelve el valor
del parámetro.
private static int validarEntrada(int parametro, int LimInicial, int LimFinal){
boolean repetir;
do{ // Inicio del ciclo de repetición para validar las entradas.
repetir=false; // Asignación de valor a la variable booleana cada vez
que se repite el ciclo.
if(parametro<LimInicial || parametro>LimFinal){ // Condición para
determinar si el ciclo se repite o no
repetir=true; // Cambio del valor booleano si la condición se
cumple.
[Link]("\n***Error!!!, Vuelva a ingresar el dato
correctamente: ");
parametro = [Link](); //5
}
}while(repetir==true); // Condición que controla el ciclo de repetición de
la función.
return parametro; // Valor de retorno de la función al finalizar la
ejecución.
} // Llave de cierre de la función validarEntrada.
// Método genérico para validar las entradas de datos, además devuelve el valor
del parámetro.
private static int validarEntrada(int parametro, int LimInicial){
boolean repetir;
do{ // Inicio del ciclo de repetición para validar las entradas.
repetir=false; // Asignación de valor a la variable booleana cada vez
que se repite el ciclo.
if(parametro<LimInicial){ // Condición para determinar si el ciclo se
repite o no
repetir=true; // Cambio del valor booleano si la condición se
cumple.
[Link]("\n***Error!!!, Vuelva a ingresar el dato
correctamente: ");
parametro = [Link](); //5
}
}while(repetir==true); // Condición que controla el ciclo de repetición de
la función.
return parametro; // Valor de retorno de la función al finalizar la
ejecución.
} // Llave de cierre de la función validarEntrada.
private static String nombreHorario(){
if(formato==1){
String[][] horarios = { {"5:00 p.m.", "8:00 p.m.","10:00 p.m."},//Bad
boys para siempre (5pm, 8pm y 10pm).
{"10:00 a.m.","3:00 p.m.","5:00 p.m.","7:00 p.m.","9:00
p.m."},//Sonic: La película (10am, 3pm, 5pm, 7pm y 9pm).
{"5:00 p.m.","7:00 p.m.","9:00 p.m."},// Joker (5pm, 7pm y 9pm)
{"2:00 p.m.","4:00 p.m.","7:00 p.m."} }; //El Hombre Araña 3 (2pm,
4pm y 7pm).
return horarios[pelic-1][horario-1]; //[2][1]=
}else{
String[][] horarios = { {"5:00 p.m.", "8:00 p.m.","10:00 p.m."},//Bad
boys para siempre (5pm, 8pm y 10pm).
{"3:00 p.m.","5:00 p.m.","7:00 p.m."},//Avengers: Endgame (3pm, 5pm
y 7pm)
{"10:00 a.m.","3:00 p.m.","5:00 p.m.","7:00 p.m.","9:00
p.m."},//Sonic: La película (10am, 3pm, 5pm, 7pm y 9pm).
{"10:00 a.m.","2:00 p.m.","4:00 p.m.","7:00 p.m."} }; //. Avatar 2
(10am, 2pm, 4pm y 7pm)
return horarios[pelic-1][horario-1];
}
}
private static String nombrePelicula(){
if(formato==1){
String[] peliculas = {"Bad boys para siempre","Sonic: La
película","Joker","El Hombre Araña 3"};
return peliculas[pelic-1];
}else{
String[] peliculas = {"Bad boys para siempre","Avengers:
Endgame","Sonic: La película","Avatar 2"};
return peliculas[pelic-1];
}
}
private static void imprimirReporte(){
[Link]("\n\n****** Reporte total de ventas *********"); // 5,
23, 9, 12, 10, /7, 9, 10, 8, 10
[Link]("No. Película Formato Horario Sala
Cant. Precio Subtotal Desc Total");
[Link]("---------------------------------------------------------------
--------------------------------------");
for (int i = 0; i <= cont; i++) {
[Link]("%-5d",(i+1));
[Link]("%-23s",mStr[i][1]);
[Link]("%-9s",mStr[i][0]);
[Link]("%-12s",mStr[i][2]);
[Link]("%-10s",mStr[i][3]);
[Link]("%-7.0f",mNum[i][1]);
[Link]("%-9.0f",mNum[i][0]);
[Link]("%-10.0f",mNum[i][2]);
[Link]("%-8.0f",mNum[i][3]);
[Link]("%-10.0f",mNum[i][4]);
[Link]("");
}
[Link]("---------------------------------------------------------------
--------------------------------------");
[Link]("Totales:________________________________________________________
____________________ %-8.0f%-10.0f",totalDesc(),totales());
}