Programming
T05-001-07 Cines.
Enunciado
Calcular la recaudación.
Crea la Opción de menú
8. Calcular recaudacion.Esta opción debe dar información de:
- el nombre de la sala, utilizando el método creado anteriormente
getNombre().- el porcentaje de ocupación de la sala, utilizando el método creado anteriormente
getPorcentajeOcupacion().- la recaudación obtenida, haciendo uso de un nuevo método de la clase
SalaCine, que se llamarágetIngresos().El nuevo método
getIngresos()calculará la recaudación obtenida por la venta de las entradas. Para ello, hará uso de los métodosgetPrecioEntrada()ygetButacasOcupadas(). El resultado obtenido por la multiplicación de los dos valores anteriores se enviará al métodoredondearDecimales(), para que lo redondee a 2 decimales.
Solución
package cines;
import java.util.Scanner;
public class Cines {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int opcion;
String nombreSala;
int aforo;
String pelicula;
double precioEntrada;
int numEntradas;
double recaudacionTotal;
SalaCine sala = null;
do {
opcion = imprimirMenu(sc, sala != null);
if (opcion == 1 && sala == null) {
System.out.println("CREAR SALA de CINE");
System.out.println("-------------------");
System.out.print("Nombre de sala: ");
nombreSala = sc.nextLine();
System.out.print("Aforo de sala: ");
aforo = sc.nextInt();
try {
sala = new SalaCine(nombreSala, aforo);
} catch (IllegalArgumentException ex) {
System.out.println("ERROR: Valores erroneos para sala");
}
} else if (sala != null) {
switch (opcion) {
case 2:
System.out.println("BORRAR SALA de CINE");
System.out.println("-------------------");
sala = null;
break;
case 3:
System.out.println("LISTAR SALAS de CINE");
System.out.println("-------------------");
System.out.println("Sala: " + sala.getNombre() + "\tAforo: " + sala.getAforo());
break;
case 4:
System.out.println("CREAR SESION DE PROYECCION");
System.out.println("-------------------");
System.out.print("Nombre de la pelicula: ");
pelicula = sc.nextLine();
sala.setPelicula(pelicula);
System.out.print("Precio de la entrada: ");
try {
precioEntrada = Double.parseDouble(sc.nextLine());
sala.setPrecioEntrada(precioEntrada);
} catch (NumberFormatException ex1) {
System.out.println("ERROR: Valor introducido incorrecto");
} catch (NullPointerException ex2) {
System.out.println("ERROR: Valor NO introducido");
}
break;
case 5:
System.out.println("LISTAR CARTELERA");
System.out.println("-------------------");
System.out.println("Sala: " + sala.getNombre() + "\tAforo: "
+ sala.getAforo());
System.out.println("\tPelicula: " + sala.getPelicula()
+ "\t\tPrecio de la entrada: " + sala.getPrecioEntrada() + " euros");
System.out.println("\tButacas ocupadas: " + sala.getButacasOcupadas()
+ "\tButacas libres: " + sala.getButacasLibres()
+ "\tPorcentaje de ocupacion: " + sala.getPorcentajeOcupacion());
break;
case 6:
System.out.println("VENDER ENTRADAS");
System.out.println("-------------------");
System.out.print("Cantidad de entradas: ");
numEntradas = sc.nextInt();
try {
sala.venderEntradas(numEntradas);
} catch (IllegalArgumentException ex) {
System.out.println("ERROR: Numero de entradas incorrecto");
}
break;
case 7:
System.out.println("DEVOLVER ENTRADAS");
System.out.println("-------------------");
System.out.print("Cantidad de entradas: ");
numEntradas = sc.nextInt();
try {
sala.devolverEntradas(numEntradas);
} catch (IllegalArgumentException ex) {
System.out.println("ERROR: Numero de entradas incorrecto");
}
break;
case 8:
System.out.println("CALCULAR RECAUDACION");
System.out.println("-------------------");
System.out.println("Sala: " + sala.getNombre()
+ "\tPorcentaje de ocupacion: " + sala.getPorcentajeOcupacion()
+ "\tRecaudacion: " + sala.getIngresos() + " euros");
break;
}
}
} while (opcion != 0);
}
public static int imprimirMenu(Scanner sc, boolean existeSala) {
int opcion;
do {
System.out.println("\n========");
System.out.println("= MENU =");
System.out.println("========");
System.out.println("\t0. Salir");
System.out.println("GESTIONAR SALA");
System.out.println("--------------------");
System.out.println("\t1. Crear sala de cine");
if (existeSala) {
System.out.println("\t2. Borrar sala de cine");
System.out.println("\t3. Listar salas de cine");
System.out.println("GESTIONAR CARTELERA");
System.out.println("--------------------");
System.out.println("\t4. Crear sesion de proyeccion");
System.out.println("\t5. Listar cartelera");
System.out.println("GESTIONAR ENTRADAS");
System.out.println("--------------------");
System.out.println("\t6. Vender entradas");
System.out.println("\t7. Devolver entradas");
System.out.println("\t8. Calcular recaudacion");
}
System.out.print("Elija una opcion: ");
opcion = sc.nextInt();
System.out.println();
} while (opcion < 0 || opcion > 8);
sc.nextLine();
return opcion;
}
}
class SalaCine {
private String nombre;
private int aforo;
private int butacasOcupadas;
private String pelicula;
private double precioEntrada;
public SalaCine() {
this.nombre = "Sala";
this.aforo = 100;
this.butacasOcupadas = 0;
this.pelicula = "";
this.precioEntrada = 0.00;
}
public SalaCine(String nombre, int aforo) {
if ((aforo <= 0) || "".equals(nombre)) {
throw new IllegalArgumentException();
} else {
this.nombre = nombre;
this.aforo = aforo;
this.butacasOcupadas = 0;
this.pelicula = "";
this.precioEntrada = 0.00;
}
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public void setAforo(int aforo) {
if (aforo <= 0) {
throw new IllegalArgumentException();
} else {
this.aforo = aforo;
}
}
public void setButacasOcupadas(int butacasOcupadas) {
if (butacasOcupadas < 0 || butacasOcupadas > this.getAforo()) {
throw new IllegalArgumentException();
} else {
this.butacasOcupadas = butacasOcupadas;
}
}
public void setButacasLibres(int butacasLibres) {
if (butacasLibres < 0 || butacasLibres > this.aforo) {
throw new IllegalArgumentException();
} else {
this.butacasOcupadas = this.getAforo() - butacasLibres;
}
}
public void setPelicula(String pelicula) {
this.pelicula = pelicula;
}
public void setPrecioEntrada(double precioEntrada) {
if (precioEntrada < 0) {
throw new IllegalArgumentException();
} else {
this.precioEntrada = redondearDecimales(precioEntrada, 2);
}
}
public String getNombre() {
return nombre;
}
public int getAforo() {
return this.aforo;
}
public int getButacasOcupadas() {
return this.butacasOcupadas;
}
public int getButacasLibres() {
return this.aforo - this.butacasOcupadas;
}
public String getPelicula() {
return this.pelicula;
}
public double getPrecioEntrada() {
return this.precioEntrada;
}
public double getPorcentajeOcupacion() {
return (this.getButacasOcupadas() * 100 / this.getAforo());
}
public double getIngresos() {
return redondearDecimales(this.getPrecioEntrada() * this.getButacasOcupadas(), 2);
}
public void vaciarSala() throws IllegalArgumentException {
this.setButacasOcupadas(0);;
this.setPelicula("");
this.setPrecioEntrada(0.0);
}
public boolean estaLlena() {
return (this.getButacasOcupadas() == this.getAforo());
}
public boolean estaVacia() {
return (this.getButacasOcupadas() == 0);
}
public void venderEntradas(int numeroEntradas) {
if ((numeroEntradas + this.getButacasOcupadas() > this.getAforo()) || (numeroEntradas <= 0)) {
throw new IllegalArgumentException();
} else {
this.setButacasOcupadas(this.getButacasOcupadas() + numeroEntradas);
}
}
public void devolverEntradas(int numeroEntradas) {
if ((numeroEntradas > this.getButacasOcupadas()) || (numeroEntradas <= 0)) {
throw new IllegalArgumentException();
} else {
this.setButacasOcupadas(this.getButacasOcupadas() - numeroEntradas);
}
}
private double redondearDecimales(double numero, int decimales) {
int potencia = 10;
for (; decimales > 0; decimales--) {
potencia *= 10;
}
return ((double) Math.round(numero * 100) / 100);
}
}
Input
1 Central 100 4 Ben-Hur 2.675 6 20 7 10 5 8 2 0
1 Rialto 120 4 Los Intocables 3.764 6 30 7 20 5 8 2 0
Output
======== = MENU = ======== 0. Salir GESTIONAR SALA -------------------- 1. Crear sala de cine Elija una opcion: CREAR SALA de CINE ------------------- Nombre de sala: Aforo de sala: ======== = MENU = ======== 0. Salir GESTIONAR SALA -------------------- 1. Crear sala de cine 2. Borrar sala de cine 3. Listar salas de cine GESTIONAR CARTELERA -------------------- 4. Crear sesion de proyeccion 5. Listar cartelera GESTIONAR ENTRADAS -------------------- 6. Vender entradas 7. Devolver entradas 8. Calcular recaudacion Elija una opcion: CREAR SESION DE PROYECCION ------------------- Nombre de la pelicula: Precio de la entrada: ======== = MENU = ======== 0. Salir GESTIONAR SALA -------------------- 1. Crear sala de cine 2. Borrar sala de cine 3. Listar salas de cine GESTIONAR CARTELERA -------------------- 4. Crear sesion de proyeccion 5. Listar cartelera GESTIONAR ENTRADAS -------------------- 6. Vender entradas 7. Devolver entradas 8. Calcular recaudacion Elija una opcion: VENDER ENTRADAS ------------------- Cantidad de entradas: ======== = MENU = ======== 0. Salir GESTIONAR SALA -------------------- 1. Crear sala de cine 2. Borrar sala de cine 3. Listar salas de cine GESTIONAR CARTELERA -------------------- 4. Crear sesion de proyeccion 5. Listar cartelera GESTIONAR ENTRADAS -------------------- 6. Vender entradas 7. Devolver entradas 8. Calcular recaudacion Elija una opcion: DEVOLVER ENTRADAS ------------------- Cantidad de entradas: ======== = MENU = ======== 0. Salir GESTIONAR SALA -------------------- 1. Crear sala de cine 2. Borrar sala de cine 3. Listar salas de cine GESTIONAR CARTELERA -------------------- 4. Crear sesion de proyeccion 5. Listar cartelera GESTIONAR ENTRADAS -------------------- 6. Vender entradas 7. Devolver entradas 8. Calcular recaudacion Elija una opcion: LISTAR CARTELERA ------------------- Sala: Central Aforo: 100 Pelicula: Ben-Hur Precio de la entrada: 2.68 euros Butacas ocupadas: 10 Butacas libres: 90 Porcentaje de ocupacion: 10.0 ======== = MENU = ======== 0. Salir GESTIONAR SALA -------------------- 1. Crear sala de cine 2. Borrar sala de cine 3. Listar salas de cine GESTIONAR CARTELERA -------------------- 4. Crear sesion de proyeccion 5. Listar cartelera GESTIONAR ENTRADAS -------------------- 6. Vender entradas 7. Devolver entradas 8. Calcular recaudacion Elija una opcion: CALCULAR RECAUDACION ------------------- Sala: Central Porcentaje de ocupacion: 10.0 Recaudacion: 26.8 euros ======== = MENU = ======== 0. Salir GESTIONAR SALA -------------------- 1. Crear sala de cine 2. Borrar sala de cine 3. Listar salas de cine GESTIONAR CARTELERA -------------------- 4. Crear sesion de proyeccion 5. Listar cartelera GESTIONAR ENTRADAS -------------------- 6. Vender entradas 7. Devolver entradas 8. Calcular recaudacion Elija una opcion: BORRAR SALA de CINE ------------------- ======== = MENU = ======== 0. Salir GESTIONAR SALA -------------------- 1. Crear sala de cine Elija una opcion:
======== = MENU = ======== 0. Salir GESTIONAR SALA -------------------- 1. Crear sala de cine Elija una opcion: CREAR SALA de CINE ------------------- Nombre de sala: Aforo de sala: ======== = MENU = ======== 0. Salir GESTIONAR SALA -------------------- 1. Crear sala de cine 2. Borrar sala de cine 3. Listar salas de cine GESTIONAR CARTELERA -------------------- 4. Crear sesion de proyeccion 5. Listar cartelera GESTIONAR ENTRADAS -------------------- 6. Vender entradas 7. Devolver entradas 8. Calcular recaudacion Elija una opcion: CREAR SESION DE PROYECCION ------------------- Nombre de la pelicula: Precio de la entrada: ======== = MENU = ======== 0. Salir GESTIONAR SALA -------------------- 1. Crear sala de cine 2. Borrar sala de cine 3. Listar salas de cine GESTIONAR CARTELERA -------------------- 4. Crear sesion de proyeccion 5. Listar cartelera GESTIONAR ENTRADAS -------------------- 6. Vender entradas 7. Devolver entradas 8. Calcular recaudacion Elija una opcion: VENDER ENTRADAS ------------------- Cantidad de entradas: ======== = MENU = ======== 0. Salir GESTIONAR SALA -------------------- 1. Crear sala de cine 2. Borrar sala de cine 3. Listar salas de cine GESTIONAR CARTELERA -------------------- 4. Crear sesion de proyeccion 5. Listar cartelera GESTIONAR ENTRADAS -------------------- 6. Vender entradas 7. Devolver entradas 8. Calcular recaudacion Elija una opcion: DEVOLVER ENTRADAS ------------------- Cantidad de entradas: ======== = MENU = ======== 0. Salir GESTIONAR SALA -------------------- 1. Crear sala de cine 2. Borrar sala de cine 3. Listar salas de cine GESTIONAR CARTELERA -------------------- 4. Crear sesion de proyeccion 5. Listar cartelera GESTIONAR ENTRADAS -------------------- 6. Vender entradas 7. Devolver entradas 8. Calcular recaudacion Elija una opcion: LISTAR CARTELERA ------------------- Sala: Rialto Aforo: 120 Pelicula: Los Intocables Precio de la entrada: 3.76 euros Butacas ocupadas: 10 Butacas libres: 110 Porcentaje de ocupacion: 8.0 ======== = MENU = ======== 0. Salir GESTIONAR SALA -------------------- 1. Crear sala de cine 2. Borrar sala de cine 3. Listar salas de cine GESTIONAR CARTELERA -------------------- 4. Crear sesion de proyeccion 5. Listar cartelera GESTIONAR ENTRADAS -------------------- 6. Vender entradas 7. Devolver entradas 8. Calcular recaudacion Elija una opcion: CALCULAR RECAUDACION ------------------- Sala: Rialto Porcentaje de ocupacion: 8.0 Recaudacion: 37.6 euros ======== = MENU = ======== 0. Salir GESTIONAR SALA -------------------- 1. Crear sala de cine 2. Borrar sala de cine 3. Listar salas de cine GESTIONAR CARTELERA -------------------- 4. Crear sesion de proyeccion 5. Listar cartelera GESTIONAR ENTRADAS -------------------- 6. Vender entradas 7. Devolver entradas 8. Calcular recaudacion Elija una opcion: BORRAR SALA de CINE ------------------- ======== = MENU = ======== 0. Salir GESTIONAR SALA -------------------- 1. Crear sala de cine Elija una opcion:

