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()ygetButacasOcupadas().
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:

