Reto07_Estructuras‐de‐datos - Jul1anT/Retos-OOP_2025 GitHub Wiki

Sistema de Gestión de Menú y Pedidos

Descripción

Este sistema permite la gestión de un menú de restaurante y el manejo de pedidos. Ofrece funcionalidades para agregar, actualizar y eliminar elementos del menú, así como procesar pedidos en cola y aplicar descuentos automáticos.

Características Principales

1. Gestión del Menú

  • Agregar elementos al menú: Se pueden añadir bebidas, aperitivos y platos principales con nombre, precio y tamaño.
  • Actualizar elementos existentes: Modificar detalles de un ítem del menú.
  • Eliminar elementos: Remover ítems del menú.
  • Persistencia de datos: Guardar y cargar el menú en un archivo JSON.

2. Gestión de Pedidos

  • Crear pedidos: Permite seleccionar ítems del menú y definir cantidades.
  • Aplicar descuentos: Se ofrece un descuento automático si la cantidad de productos en el pedido supera un umbral.
  • Procesar pedidos: Los pedidos se gestionan en una cola FIFO (First In, First Out).
  • Visualizar pedidos pendientes.

Estructura del Código

Clases Principales

MenuItem

Representa un ítem del menú con atributos:

  • name: Nombre del producto.
  • price: Precio del producto.
  • size: Tamaño del producto.

MenuManager

Maneja la gestión del menú:

  • add_item(category, item): Agrega un ítem a la categoría especificada.
  • update_item(category, item_name, new_item): Modifica un ítem existente.
  • delete_item(category, item_name): Elimina un ítem del menú.
  • save_menu(filename): Guarda el menú en un archivo JSON.
  • load_menu(filename): Carga el menú desde un archivo JSON.

Order

Representa un pedido con métodos para:

  • Añadir ítems.
  • Calcular el total con descuento si aplica.

OrderManager

Maneja la cola de pedidos:

  • add_order(order): Agrega un pedido a la cola.
  • process_order(): Procesa el primer pedido en la cola.
  • show_orders(): Muestra los pedidos pendientes.