Programming
T05-001-07 Cines.
Enunciado
Menú de opciones.
La creación, listado y borrado de una sala, se va a poder repetir tantas veces como el usuario quiera, sin tener que ejecutar varias veces la aplicación. Para ello, vamos a mostrar repetidamente un menú de opciones como el que se muestra en el OUTPUT, hasta que el usuario pulse la opción 0, que será la de salir.
Las salidas correspondientes al menú se deberán mostrar desde un método de la clase principal llamado
imprimirMenu(), el cual recibirá:
- un objeto
Scanner, que se utilizará para leer del teclado la opción elegida por el usuario. Esta opción será la que se devuelva al usuario siempre que sea una de las opciones elegibles. Si la opción está fuera del rango elegible, se mostrará al usuario de nuevo el menú.- un booleano que indicará si la sala ha sido creada todavía es
null. En el caso de que la sala no exista todavía, no se deberían mostrar las opciones de borrar y listar sala.Desde el método
main()se llamará al método deimprimirMenu()y se gestionará la opción elegida por el usuario.En relación esas opciones: la opción 1 solo se ejecutará si la sala todavía es
null.El resto de las opciones se ejecutarán únicamente si la sala es distint de
null.Excepto la opción 1, el resto de las opciones (y las que se vayan desarrollando en los ejercicios posteriores) se gestionarán a través de un switch, integrando toda la lógica necesaria en cada uno de los
case, excepto la que se tenga que declarar en los métodos de la claseSalaCine.
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;
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;
}
}
} 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.print("Elija una opcion: ");
opcion = sc.nextInt();
System.out.println();
} while (opcion < 0 || opcion > 3);
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) {
this.precioEntrada = precioEntrada;
}
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);
}
}
Input
1 Central 100 3 2 1 Central 100 2 3 0
1 Rialto 120 3 2 1 Rialto 120 2 3 1 Rialto 120 3 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 Elija una opcion: LISTAR SALAS de CINE ------------------- Sala: Central Aforo: 100 ======== = MENU = ======== 0. Salir GESTIONAR SALA -------------------- 1. Crear sala de cine 2. Borrar sala de cine 3. Listar salas de cine Elija una opcion: BORRAR SALA de CINE ------------------- ======== = 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 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:
======== = 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 Elija una opcion: LISTAR SALAS de CINE ------------------- Sala: Rialto Aforo: 120 ======== = MENU = ======== 0. Salir GESTIONAR SALA -------------------- 1. Crear sala de cine 2. Borrar sala de cine 3. Listar salas de cine Elija una opcion: BORRAR SALA de CINE ------------------- ======== = 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 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 Elija una opcion: LISTAR SALAS de CINE ------------------- Sala: Rialto Aforo: 120 ======== = MENU = ======== 0. Salir GESTIONAR SALA -------------------- 1. Crear sala de cine 2. Borrar sala de cine 3. Listar salas de cine Elija una opcion: BORRAR SALA de CINE ------------------- ======== = MENU = ======== 0. Salir GESTIONAR SALA -------------------- 1. Crear sala de cine Elija una opcion:

