Java
Ejercicios
Ejercicios
  • 02-Estructuras de control y bucles
    • Ejercicios de estructuras de control
    • Ejercicios de estructuras de control II
  • 06-Patrones de diseño
    • Ejercicio MVC en JAVA
  • 08-Flujos y Ficheros
    • Ejercicio de Redirección y Comunicación entre Procesos en Java
    • Ejercicio de Comunicación y Sincronización entre Tres Procesos en Java
  • 08-Flujos y Ficheros
  • 10-Swing
    • Ejercicio Aplicación de Notas Simples
    • Ejercicio Cálculadora básica
    • Ejercicio: Aplicación de Lista de Tareas con layouts
    • Ejercicio: Dibujo de figuras con Graphics
    • Ejercicio: Aplicación de Control de Color de un Rectángulo
    • Ejercicio: Dibujo de una clase vista
  • 03-Arrays y colecciones
    • 03.01-Arrays
      • Sistema de Gestión de Cine
      • Ejercicios básicos de arrays
    • 03.02-Colecciones
      • Sistema de Gestión de Canales de YouTube
  • 05-POO
    • 05.1-POO Iniciación
      • Ejercicio: Sistema de Gestión para una Biblioteca
      • Ejercicio de arrays. Aventura de los Patapons
      • Ejercicios básicos sobre POO
    • 05.2-POO Clases Abstractas
      • Sistema de Gestión de Vehículos
    • 05.6-Generales de POO
      • Ejercicio: Sistema de Gestión de Empleados
      • Aventuras en el Laberinto Encantado
      • Ejercicio de Pasapalabra
  • Soluciones
    • 02-Estructuras de control y bucles
      • [Solución] Ejercicios de estructuras de control II
    • 06-Patrones de diseño
      • [Solucion] Ejercicio MVC en JAVA
    • 08-Flujos y Ficheros
      • Solución de Ejercicio de Redirección y Comunicación entre Procesos en Java
      • Solución de Ejercicio de Comunicación y Sincronización entre Tres Procesos en Java
    • 10-Swing
      • [Solución] Ejercicio Aplicación de Notas Simples
      • [Solución] Ejercicio Cálculadora Simple
      • [Solución] Ejercicio: Aplicación de Lista de Tareas con layouts
      • [Solución] Ejercicio: Dibujo de figuras con Graphics
      • [Solución] Ejercicio: Dibujo de figuras con Graphics
      • [Solución] Ejercicio: Aplicación de Control de Color de un Rectángulo
    • 03-Arrays y colecciones
      • 03.01-Arrays
        • [Solución] Ejercicios de estructuras de control 2
        • [Solución] Sistema de Gestión de Cine
        • [Solución] Ejercicios básicos de arrays
      • 03.02-Colecciones
        • [Solución] Sistema de Gestión de Canales de YouTube
    • 05-POO
      • 05.1-POO Iniciación
        • [Solución] Ejercicio de arrays. Aventura de los Patapons
        • [Solución] Ejercicios básicos sobre POO
      • 05.2-POO Clases Abstractas
        • [Solución] Sistema de Gestión de Vehículos
      • 05.6-Generales de POO
        • Solución de Sistema de Gestión de Empleados
        • [Solución] Aventuras en el Laberinto Encantado
        • [Solución] Ejercicio de Pasapalabra
Powered by GitBook
On this page
  • Recursos ASCII
  • Cine.java (main)
  1. Soluciones
  2. 03-Arrays y colecciones
  3. 03.01-Arrays

[Solución] Sistema de Gestión de Cine

Previous[Solución] Ejercicios de estructuras de control 2Next[Solución] Ejercicios básicos de arrays

Last updated 1 year ago

Espero que no estés por aquí para echar un vistazo a la solución antes de resolverlo ... En caso de que le hayas terminado ¡Enhorabuena! ya queda menos, aquí te dejo la solución para que puedas comprobar otra forma de resolver el mismo problema.

RECUERDA Hay más de una solución posible para el mismo ejercicio, si funciona y cumples las buenas prácticas de programación ¡Te lo compro, aprobado!

Este ejercicio se ha desarrollado en una sola clase main donde se han ido declarando los métodos necesarios.

Recursos ASCII


    ```java
String header = """
 ______        _   _            _    ____        _          _____ _     _           
|  ____|      | | (_)          | |  / __ \\      | |        / ____| |   (_)          
| |__ ___  ___| |_ ___   ____ _| | | |  | |_ __ | |_   _  | (___ | |__  _ _ __  ___ 
|  __/ _ \\/ __| __| \\ \\ / / _` | | | |  | | '_ \\| | | | |  \\___ \\| '_ \\| | '_ \\/ __|
| | |  __/\\__ \\ |_| |\\ V / (_| | | | |__| | | | | | |_| |  ____) | | | | | |_) \\__ \\
|_|  \\___||___/\\__|_| \\_/ \\__,_|_|  \\____/|_| |_|_|\\__, | |_____/|_| |_|_| .__/|___/
                                                    __/ |                | |        
                                                   |___/                 |_|        
""";

String title = """
   #                                                                                                                                                       
  # #   #      # ###### #    #        ###### #          ####   ####  #####   ##   #    #  ####     #####    ##    ####    ##        # ###### #####   ####  
 #   #  #      # #      ##   #        #      #         #    # #    #   #    #  #  #    # #    #    #    #  #  #  #       #  #       # #      #    # #    # 
#     # #      # #####  # #  #        #####  #         #    # #        #   #    # #    # #    #    #    # #    #  ####  #    #      # #####  #    # #    # 
####### #      # #      #  # # ###    #      #         #    # #        #   ###### #    # #    #    #####  ######      # ######      # #      #####  #    # 
#     # #      # #      #   ## ###    #      #         #    # #    #   #   #    #  #  #  #    #    #      #    # #    # #    # #    # #      #   #  #    # 
#     # ###### # ###### #    #  #     ###### ######     ####   ####    #   #    #   ##    ####     #      #    #  ####  #    #  ####  ###### #    #  ####  
                               #
""";

String monster = """
    ,'\"   _      _   \"`.
    /.__, ._  -=- _\"`    Y
   (.____.-.`      \"\"`   j
    VvvvvvV`.Y,.    _.,-'       ,     ,     ,
       Y    ||,   '\"\\         ,/    ,/    ./
       |   ,'  ,     `-..,'_,'/___,'/   ,'/   ,
  ..  ,;,,',-'\"\\,'  ,  .     '     ' \"\"' '--,/    .. ..
,'. `.`---'     `, /  , Y -=-    ,'   ,   ,. .`-..||_|| ..
ff\\\\`. `._        /f ,'j j , ,' ,   , f ,  \\=\\ Y   || ||`||_..
l` \\` `.`.\"`-..,-' j  /./ /, , / , / /l \\   \\=\\l   || `' || ||...
`  `   `-._ `-.,-/ ,' /\"/-/-/-/-\"'''\"`.`.  `'.\\--`'--..`'_`' || ,
          \"`-_,',  ,'  f    ,   /      `._    ``._     ,  `-.`'//         ,
        ,-\"'' _.,-'    l_,-'_,,'          \"`-._ . \"`. /|     `.'\\ ,       |
      ,',.,-'\"          \\=) ,`-.         ,    `-'._`.V |       \\ // .. . /j
      |f\\\\               `._ )-.\"`.     /|         `.| |        `.`-||-\\\\/
      l` \\`                 \"`._   \"`--' j          j' j          `-`---'
       `  `                     \"`,-  ,'/       ,-'\"  /
                               ,'\",__,-'       /,, ,-'
                               Vvv'            VVv'
""";

Cine.java (main)

import java.util.Scanner;

public class cine {
    static char[][] sala = new char[12][20];
    static int recaudacion = 0;
    public static void main(String[] args) {
        // Definir el tamaño del rectángulo
        int ancho = 70;
        int alto = 8;
        int opcion;
        
        //llamar al metodo para rellenar el array de 0
        rellenarArray();

       String caratula = """
     ______        _   _            _    ____        _          _____ _     _           
    |  ____|      | | (_)          | |  / __ \\      | |        / ____| |   (_)          
    | |__ ___  ___| |_ ___   ____ _| | | |  | |_ __ | |_   _  | (___ | |__  _ _ __  ___ 
    |  __/ _ \\/ __| __| \\ \\ / / _` | | | |  | | '_ \\| | | | |  \\___ \\| '_ \\| | '_ \\/ __|
    | | |  __/\\__ \\ |_| |\\ V / (_| | | | |__| | | | | | |_| |  ____) | | | | | |_) \\__ \\
    |_|  \\___||___/\\__|_| \\_/ \\__,_|_|  \\____/|_| |_|_|\\__, | |_____/|_| |_|_| .__/|___/
                                                        __/ |                | |        
                                                       |___/                 |_|        
""";
        
do {
            System.out.println(caratula);
            // Dibujar el rectángulo con el texto

            menu(ancho, alto, "1-Mostrar pelicula en cartelera", "2-Mostrar estado de la sala", "3-Comprar entrada", "4-Devolver entrada", "5-Mostrar la recaudación hasta el momento", "0-Salir");

          
            System.out.println("\n");
            System.out.println("Introduce una opción :");
            Scanner sc=new Scanner(System.in);
            opcion=sc.nextInt(); 
            switch (opcion) { //determino el switch en funcion de la opcion elegida
                case 1: 
                
                mostrarPelicula();
                
                break;
                case 2 :

                mostrarButacas();
                 break;
                case 3 :
                comprarEntrada();
                 break;
                case 4 :
                devolverEntrada();
                 break;
                case 5 :
                mostrarRecaudacion();
                 break;
                case 0 : System.out.println(" Salir\n");
                 break;
                default: System.out.println("No coincide con ninguna de las opciones");
                 break;

            }
            //determino el switch en funcion de la opcion elegida
                    } while (opcion != 0);

    }

    // Método para dibujar el rectángulo con texto en los lados
    public static void menu(int ancho, int alto, String opcion1, String opcion2, String opcion3, String opcion4, String opcion5, String opcion6) {
        for (int i = 0; i < alto; i++) {
            for (int j = 0; j < ancho; j++) {
                // Imprimir asteriscos en los bordes superior e inferior del rectángulo
                if (i == 0 || i == alto - 1) {
                    System.out.print("*");
                } else {
                    // Imprimir espacios en blanco y texto en las posiciones correctas
                    if (j == 0 || j == ancho - 1) {
                        System.out.print("*");
                    } else if (i == 1 && j == 15) { // Posición de la primera opción
                        System.out.print(opcion1);
                        j += opcion1.length() - 1; // Saltar la longitud de la opción1
                    } else if (i == 2 && j == 15) { // Posición de la segunda opción
                        System.out.print(opcion2);
                        j += opcion2.length() - 1; // Saltar la longitud de la opción2
                    } else if (i == 3 && j == 15) { // Posición de la segunda opción
                        System.out.print(opcion3);
                        j += opcion3.length() - 1;
                    } else if (i == 4 && j == 15) { // Posición de la segunda opción
                        System.out.print(opcion4);
                        j += opcion4.length() - 1;
                    } else if (i == 5 && j == 15) { // Posición de la segunda opción
                        System.out.print(opcion5);
                        j += opcion5.length() - 1;
                    } else if (i == 6 && j == 15) { // Posición de la segunda opción
                        System.out.print(opcion6);
                        j += opcion6.length() - 1;
                    } else {
                        System.out.print(" ");
                    }
                }
            }
            // Nueva línea después de cada fila
            System.out.println();
        }
    }
    
    public static void mostrarPelicula() {
    
    String titulo= ("   #                                                                                                                                                       \n" +
"  # #   #      # ###### #    #        ###### #          ####   ####  #####   ##   #    #  ####     #####    ##    ####    ##        # ###### #####   ####  \n" +
" #   #  #      # #      ##   #        #      #         #    # #    #   #    #  #  #    # #    #    #    #  #  #  #       #  #       # #      #    # #    # \n" +
"#     # #      # #####  # #  #        #####  #         #    # #        #   #    # #    # #    #    #    # #    #  ####  #    #      # #####  #    # #    # \n" +
"####### #      # #      #  # # ###    #      #         #    # #        #   ###### #    # #    #    #####  ######      # ######      # #      #####  #    # \n" +
"#     # #      # #      #   ## ###    #      #         #    # #    #   #   #    #  #  #  #    #    #      #    # #    # #    # #    # #      #   #  #    # \n" +
"#     # ###### # ###### #    #  #     ###### ######     ####   ####    #   #    #   ##    ####     #      #    #  ####  #    #  ####  ###### #    #  ####  \n" +
"                               #");
    String monstruo=("     ,'\"   _      _   \"`.\n" +
"     /.__, ._  -=- _\"`    Y\n" +
"    (.____.-.`      \"\"`   j\n" +
"     VvvvvvV`.Y,.    _.,-'       ,     ,     ,\n" +
"        Y    ||,   '\"\\         ,/    ,/    ./\n" +
"        |   ,'  ,     `-..,'_,'/___,'/   ,'/   ,\n" +
"   ..  ,;,,',-'\"\\,'  ,  .     '     ' \"\"' '--,/    .. ..\n" +
" ,'. `.`---'     `, /  , Y -=-    ,'   ,   ,. .`-..||_|| ..\n" +
"ff\\\\`. `._        /f ,'j j , ,' ,   , f ,  \\=\\ Y   || ||`||_..\n" +
"l` \\` `.`.\"`-..,-' j  /./ /, , / , / /l \\   \\=\\l   || `' || ||...\n" +
" `  `   `-._ `-.,-/ ,' /`\"/-/-/-/-\"'''\"`.`.  `'.\\--`'--..`'_`' || ,\n" +
"            \"`-_,',  ,'  f    ,   /      `._    ``._     ,  `-.`'//         ,\n" +
"          ,-\"'' _.,-'    l_,-'_,,'          \"`-._ . \"`. /|     `.'\\ ,       |\n" +
"        ,',.,-'\"          \\=) ,`-.         ,    `-'._`.V |       \\ // .. . /j\n" +
"        |f\\\\               `._ )-.\"`.     /|         `.| |        `.`-||-\\\\/\n" +
"        l` \\`                 \"`._   \"`--' j          j' j          `-`---'\n" +
"         `  `                     \"`,-  ,'/       ,-'\"  /\n" +
"                                 ,'\",__,-'       /,, ,-'\n" +
"                                 Vvv'            VVv'");
    
            System.out.println(titulo);
            System.out.println(monstruo);
    
}

public static void rellenarArray(){
    for (int i = 0; i < sala.length; i++) {
        for (int j = 0; j < sala[i].length; j++) {
            sala[i][j] = '0';
        }
    }
}

public static void mostrarButacas(){
    for (int i = 0; i < sala.length; i++) {
        for (int j = 0; j < sala[i].length; j++) {
            System.out.print(sala[i][j] + " ");
        }
        System.out.println(); //salto de linea despues de imprimir 20 ceros
    }
}

public static void comprarEntrada(){
    Scanner sc = new Scanner(System.in);
    System.out.println("Introduce  el numero de fila");
    int fila = sc.nextInt()-1;
    System.out.println("Introduce el numero de butaca");
    int butaca = sc.nextInt()-1;
    sc.nextLine(); //limpiar buffer
    System.out.println("La entrada son 3 euros, ¿está de acuerdo? (s/n)");
    String decision = sc.nextLine();

    if(decision.equals("s")){
        if(sala[fila][butaca] == '0'){
            System.out.println("IMPRIMIENDO ENTRADA");
            System.out.println("--------------------------");
            System.out.println("***************************************************************");
            System.out.println("* Festival Only Ships                   Sala: Nostrono        *");
            System.out.println("* Fila: " + fila + " Butaca: " + butaca + "                   Precio: 3 euros        *");
            System.out.println("***************************************************************");
            System.out.println("--------------------------");

            sala[fila][butaca] = 'X';
            recaudacion = recaudacion + 3;
            mostrarButacas();
        }else{
            System.out.println("Transacción no pudo realizarse por que la entrada ya esta vendida");
        }
    }else if(decision.equals("n")){
        System.out.println("Entrada no aceptada");
        return;
    }

}

public static void devolverEntrada(){
    Scanner sc = new Scanner(System.in);
    System.out.println("Introduce  el numero de fila");
    int fila = sc.nextInt()-1;
    System.out.println("Introduce el numero de butaca");
    int butaca = sc.nextInt()-1;
    sc.nextLine(); //limpiar buffer
    System.out.println("Se devolverá 3 euros, ¿está de acuerdo? (s/n)");
    String decision = sc.nextLine();

    if(decision.equals("s")){
        if(sala[fila][butaca] == 'X'){
            sala[fila][butaca] = '0';
            recaudacion = recaudacion - 3;
            System.out.println("Entrada devuelta");
        }else{
            System.out.println("Transacción no pudo realizarse por que la entrada no había sido vendida");
        }
    }
    
}
public static void mostrarRecaudacion(){
    System.out.println("La recaudación es de: " + recaudacion + " euros");
}
}
😉
🧠