Untitled

 avatar
unknown
plain_text
9 months ago
5.9 kB
13
Indexable
import java.util.Scanner;

// Clase principal
public class SistemaRentaPeliculas {

    public static void main(String[] args) {

        Scanner entrada = new Scanner(System.in);
        ListaPeliculas catalogo = new ListaPeliculas();

        // Películas de ejemplo
        catalogo.agregar(new Pelicula("P001", "Inception", 148, "Ciencia Ficción", 3));
        catalogo.agregar(new Pelicula("P002", "Coco", 105, "Animación", 4));
        catalogo.agregar(new Pelicula("P003", "Parásitos", 132, "Suspenso", 2));

        while (true) {
            System.out.println("\n===== SISTEMA DE RENTA DE PELÍCULAS (CON NODOS) =====");
            System.out.println("1) Ver catálogo");
            System.out.println("2) Agregar película");
            System.out.println("3) Eliminar película");
            System.out.println("4) Rentar película");
            System.out.println("5) Devolver película");
            System.out.println("0) Salir");
            System.out.print("Elige una opción: ");

            int opcion = entrada.nextInt();
            entrada.nextLine();

            switch (opcion) {
                case 1:
                    catalogo.mostrar();
                    break;

                case 2:
                    System.out.print("Código: "); 
                    String codigo = entrada.nextLine();
                    System.out.print("Título: "); 
                    String titulo = entrada.nextLine();
                    System.out.print("Duración (min): "); 
                    int duracion = entrada.nextInt(); entrada.nextLine();
                    System.out.print("Género: "); 
                    String genero = entrada.nextLine();
                    System.out.print("Cantidad disponible: "); 
                    int stock = entrada.nextInt(); entrada.nextLine();

                    catalogo.agregar(new Pelicula(codigo, titulo, duracion, genero, stock));
                    System.out.println("✅ Película agregada.");
                    break;

                case 3:
                    System.out.print("Código a eliminar: ");
                    catalogo.eliminar(entrada.nextLine());
                    System.out.println("🗑 Película eliminada.");
                    break;

                case 4:
                    System.out.print("Código a rentar: ");
                    Pelicula r = catalogo.buscar(entrada.nextLine());
                    if (r != null && r.stock > 0) {
                        r.stock--;
                        r.rentadas++;
                        System.out.println("🎬 Renta realizada.");
                    } else {
                        System.out.println("❌ No hay stock disponible.");
                    }
                    break;

                case 5:
                    System.out.print("Código a devolver: ");
                    Pelicula d = catalogo.buscar(entrada.nextLine());
                    if (d != null && d.rentadas > 0) {
                        d.stock++;
                        d.rentadas--;
                        System.out.println("↩ Devolución realizada.");
                    } else {
                        System.out.println("⚠ Esa película no está rentada.");
                    }
                    break;

                case 0:
                    System.out.println("👋 ¡Gracias por usar el sistema!");
                    return;

                default:
                    System.out.println("⚠ Opción inválida, intenta otra vez.");
            }
        }
    }
}


// Clase Película
class Pelicula {
    String codigo;
    String titulo;
    int duracion;
    String genero;
    int stock;
    int rentadas;

    Pelicula(String codigo, String titulo, int duracion, String genero, int stock) {
        this.codigo = codigo;
        this.titulo = titulo;
        this.duracion = duracion;
        this.genero = genero;
        this.stock = stock;
        this.rentadas = 0;
    }
}


// Nodo de la Lista
class Nodo {
    Pelicula dato;
    Nodo siguiente;

    Nodo(Pelicula dato) {
        this.dato = dato;
        this.siguiente = null;
    }
}


// Lista enlazada de películas
class ListaPeliculas {
    Nodo cabeza;

    void agregar(Pelicula p) {
        Nodo nuevo = new Nodo(p);
        if (cabeza == null) {
            cabeza = nuevo;
        } else {
            Nodo actual = cabeza;
            while (actual.siguiente != null) {
                actual = actual.siguiente;
            }
            actual.siguiente = nuevo;
        }
    }

    Pelicula buscar(String codigo) {
        Nodo actual = cabeza;
        while (actual != null) {
            if (actual.dato.codigo.equals(codigo)) {
                return actual.dato;
            }
            actual = actual.siguiente;
        }
        return null;
    }

    void eliminar(String codigo) {
        if (cabeza == null) return;

        if (cabeza.dato.codigo.equals(codigo)) {
            cabeza = cabeza.siguiente;
            return;
        }

        Nodo actual = cabeza;
        while (actual.siguiente != null) {
            if (actual.siguiente.dato.codigo.equals(codigo)) {
                actual.siguiente = actual.siguiente.siguiente;
                return;
            }
            actual = actual.siguiente;
        }
    }

    void mostrar() {
        Nodo actual = cabeza;
        System.out.println("\n--- CATÁLOGO ---");
        while (actual != null) {
            Pelicula p = actual.dato;
            System.out.println(p.codigo + " | " + p.titulo + " | " + p.genero + " | Stock: " + p.stock + " | Rentadas: " + p.rentadas);
            actual = actual.siguiente;
        }
    }
}
Editor is loading...
Leave a Comment