Programming

T05-001-07 Cines.

Enunciado

Listar cartelera.

Crea la Opción de menú 5. Listar cartelera.

Esta opción debe dar información de:

  • el nombre de la sala, utilizando el método creado anteriormente getNombre()
  • el aforo, utilizando el método getAforo().
  • la película que está en cartelera, utilizando el método getPelicula().
  • el precio de la entrada, utilizando el método getPrecioEntrada().
  • las butacas ocupadas, utilizando el método getButacasOcupadas().
  • las butacas libres, utilizando el nuevo método getButacasLibres().
  • el porcentaje de ocupación de la sala, utilizando el nuevo método  getPorcentajeOcupacion().

public int getButacasLibres()

Devolverá el resultado de restar las butacas ocupadas al aforo máximo. Para ello, no accederemos directamente a las propiedades aforo y butacasOcupadas, sino a través de los métodos getAforo() y getButacasOcupadas().

public double getPorcentajeOcupacion()

Devolverá el resultado de multiplicar el número de butacas ocupadas por 100 y dividirlo por el aforo máximo.

Al igual que en el método anterior, no se debe acceder directamente a las propiedades sino a través de el método getter correspondiente.

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; } } } 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.print("Elija una opcion: "); opcion = sc.nextInt(); System.out.println(); } while (opcion < 0 || opcion > 5); 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.getAforo() - this.getButacasOcupadas(); } public String getPelicula() { return this.pelicula; } public double getPrecioEntrada() { return this.precioEntrada; } public double getPorcentajeOcupacion() { return (this.getButacasOcupadas() * 100 / this.getAforo()); } 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); } 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 5 2 0
1 Rialto 120 4 Los Intocables 3.764 5 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 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 Elija una opcion: LISTAR CARTELERA ------------------- Sala: Central Aforo: 100 Pelicula: Ben-Hur Precio de la entrada: 2.68 euros Butacas ocupadas: 0 Butacas libres: 100 Porcentaje de ocupacion: 0.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 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 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 Elija una opcion: LISTAR CARTELERA ------------------- Sala: Rialto Aforo: 120 Pelicula: Los Intocables Precio de la entrada: 3.76 euros Butacas ocupadas: 0 Butacas libres: 120 Porcentaje de ocupacion: 0.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 Elija una opcion: BORRAR SALA de CINE ------------------- ======== = MENU = ======== 0. Salir GESTIONAR SALA -------------------- 1. Crear sala de cine Elija una opcion: