Programming

T05-001-07 Cines.

Enunciado

Gestionar cartelera.

Crea el apartado de menú GESTIONAR CARTELERA, junto con la opción de menú:

  • 4. Crear sesion de proyeccion

Crear sesion de proyeccion

Debe solicitar, por teclado, tanto el nombre de la película como el precio de la entrada.

Como el precio de la entrada debe ser Double, utilizaremos el método parseDouble() de la clase Double. Este método puede lanzar la excepción NumberFormatException, que habrá que gestionar cuando se le invoque.

Habrá que hacer uso de los métodos setPelicula() y setPrecioEntrada() para establecer el valor de las propiedades pelicula y precioEntrada del objeto.

El método setPrecioEntrada() habrá que modificarlo para que únicamente acepte valores de precio positivo, por lo que, en caso de que el precio indicado sea negativo devolverá un nuevo objeto excepción de la clase IllegalArgumentException, debiendo gestionar dicha excepción en la invocación.

En el caso de que el precio de la entrada sea válido, se redondeará ese precio a 2 decimales antes de asignárselo a la propiedad precioEntrada, debiendo utilizar el procedimiento explicado este enlace y que ya se utilizó con anterioridad.

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 pelicula; Double precioEntrada; String nombreSala; int aforo; 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"); } catch (IllegalArgumentException ex) { System.out.println("ERROR: Precio NO valido"); } 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.print("Elija una opcion: "); opcion = sc.nextInt(); System.out.println(); } while (opcion < 0 || opcion > 4); 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 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 String getPelicula() { return this.pelicula; } public double getPrecioEntrada() { return this.precioEntrada; } 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) { double divisor; divisor = (double) Math.pow(10, decimales); return ((double) Math.round(numero * divisor) / divisor); } }

Input

1 Central 100 4 Ben-Hur Dos.675 4 Ben-Hur -2.675 4 Ben-Hur 2.675 2 0
1 Rialto 120 4 Los Intocables 3.764 4 Los Intocables -3.764 4 Los Intocables tres.764 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 Elija una opcion: CREAR SESION DE PROYECCION ------------------- Nombre de la pelicula: Precio de la entrada: ERROR: Valor introducido incorrecto ======== = 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 Elija una opcion: CREAR SESION DE PROYECCION ------------------- Nombre de la pelicula: Precio de la entrada: ERROR: Precio NO valido ======== = 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 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 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 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 Elija una opcion: CREAR SESION DE PROYECCION ------------------- Nombre de la pelicula: Precio de la entrada: ERROR: Precio NO valido ======== = 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 Elija una opcion: CREAR SESION DE PROYECCION ------------------- Nombre de la pelicula: Precio de la entrada: ERROR: Valor introducido incorrecto ======== = 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 Elija una opcion: BORRAR SALA de CINE ------------------- ======== = MENU = ======== 0. Salir GESTIONAR SALA -------------------- 1. Crear sala de cine Elija una opcion: