Untitled
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