Pedro vive en Chiloe en Castro, tiene un pequeño restaurante y bar donde además produce sus propios platillos de comida, en el día tiene clientes que son universitarios o funcionarios que trabajan por el sector, en la tarde noche un público más jóven que va por una cerveza. se dio cuenta que las mañanas esta libre sin público desde las 08:00 a las 12:00, donde empiezan a llegar para almorzar. los almuerzos son de 12:00 a 15:00 de la tarde, luego esta desocupado de las 15:30 a las 18:00 horas que es la hora que salen del trabajo comunmente el local funciona hasta las 22:00 horas. realicen un software que les permita:1) Obtener pedidos de clientes para el día a día.2) Permita agendarlos para el dia siguiente.3) Agendar los tiempos disponibles del local para hacer eventos con pago previo.4) Inventariar sus productos para tener conocimiento de lo que necesita comprar para abastecerse en el local todas las semanas según los últimos platillos vendidos en el supermercado.
**Sistema de Gestión para Restaurante y Bar** **Requisitos** * Python 3.x * SQLite (base de datos en memoria) **Estructura del Código** * `models.py`: definición de las entidades del sistema (Pedidos, Eventos, Inventario) * `database.py`: conexión a la base de datos y operaciones CRUD * `pedido.py`: gestión de pedidos (obtener pedidos, agendar pedidos) * `evento.py`: gestión de eventos (agendar eventos) * `inventario.py`: gestión del inventario (inventariar productos, calcular necesidades de compra) * `main.py`: interfaz de usuario y ejecución del sistema **models.py** ```python from datetime import datetime class Pedido: def __init__(self, id, fecha, hora, cliente, platillo, cantidad): self.id = id self.fecha = fecha self.hora = hora self.cliente = cliente self.platillo = platillo self.cantidad = cantidad class Evento: def __init__(self, id, fecha, hora, nombre, descripcion, precio): self.id = id self.fecha = fecha self.hora = hora self.nombre = nombre self.descripcion = descripcion self.precio = precio class Inventario: def __init__(self, id, producto, cantidad): self.id = id self.producto = producto self.cantidad = cantidad ``` **database.py** ```python import sqlite3 class Database: def __init__(self): self.conn = sqlite3.connect(':memory:') self.cursor = self.conn.cursor() self.cursor.execute(''' CREATE TABLE pedidos ( id INTEGER PRIMARY KEY, fecha DATE, hora TIME, cliente TEXT, platillo TEXT, cantidad INTEGER ) ''') self.cursor.execute(''' CREATE TABLE eventos ( id INTEGER PRIMARY KEY, fecha DATE, hora TIME, nombre TEXT, descripcion TEXT, precio REAL ) ''') self.cursor.execute(''' CREATE TABLE inventario ( id INTEGER PRIMARY KEY, producto TEXT, cantidad INTEGER ) ''') def insert_pedido(self, pedido): self.cursor.execute(''' INSERT INTO pedidos (fecha, hora, cliente, platillo, cantidad) VALUES (?, ?, ?, ?, ?) ''', (pedido.fecha, pedido.hora, pedido.cliente, pedido.platillo, pedido.cantidad)) self.conn.commit() def insert_evento(self, evento): self.cursor.execute(''' INSERT INTO eventos (fecha, hora, nombre, descripcion, precio) VALUES (?, ?, ?, ?, ?) ''', (evento.fecha, evento.hora, evento.nombre, evento.descripcion, evento.precio)) self.conn.commit() def insert_inventario(self, inventario): self.cursor.execute(''' INSERT INTO inventario (producto, cantidad) VALUES (?, ?) ''', (inventario.producto, inventario.cantidad)) self.conn.commit() def get_pedidos(self): self.cursor.execute('SELECT * FROM pedidos') return self.cursor.fetchall() def get_eventos(self): self.cursor.execute('SELECT * FROM eventos') return self.cursor.fetchall() def get_inventario(self): self.cursor.execute('SELECT * FROM inventario') return self.cursor.fetchall() ``` **pedido.py** ```python class PedidoManager: def __init__(self, database): self.database = database def obtener_pedidos(self): return self.database.get_pedidos() def agendar_pedido(self, pedido): self.database.insert_pedido(pedido) ``` **evento.py** ```python class EventoManager: def __init__(self, database): self.database = database def agendar_evento(self, evento): self.database.insert_evento(evento) ``` **inventario.py** ```python class InventarioManager: def __init__(self, database): self.database = database def inventariar_productos(self): return self.database.get_inventario() def calcular_necesidades_de_compra(self): # calcular necesidades de compra basado en inventario y ventas pass ``` **main.py** ```python from database import Database from pedido import PedidoManager from evento import EventoManager from inventario import InventarioManager def main(): database = Database() pedido_manager = PedidoManager(database) evento_manager = EventoManager(database) inventario_manager = InventarioManager(database) while True: print('1. Obtener pedidos') print('2. Agendar pedido') print('3. Agendar evento') print('4. Inventario') print('5. Salir') opcion = input('Ingrese una opción: ') if opcion == '1': pedidos = pedido_manager.obtener_pedidos() for pedido in pedidos: print(pedido) elif opcion == '2': fecha = input('Ingrese fecha: ') hora = input('Ingrese hora: ') cliente = input('Ingrese cliente: ') platillo = input('Ingrese platillo: ') cantidad = int(input('Ingrese cantidad: ')) pedido = Pedido(0, fecha, hora, cliente, platillo, cantidad) pedido_manager.agendar_pedido(pedido) elif opcion == '3': fecha = input('Ingrese fecha: ') hora = input('Ingrese hora: ') nombre = input('Ingrese nombre: ') descripcion = input('Ingrese descripción: ') precio = float(input('Ingrese precio: ')) evento = Evento(0, fecha, hora, nombre, descripcion, precio) evento_manager.agendar_evento(evento) elif opcion == '4': productos = inventario_manager.inventariar_productos() for producto in productos: print(producto) elif opcion == '5': break else: print('Opción inválida') if __name__ == '__main__': main() ``` Este código crea un sistema de gestión para un restaurante y bar, permitiendo obtener pedidos, agendar pedidos y eventos, y inventariar productos. El sistema utiliza una base de datos en memoria para almacenar los datos. La interfaz de usuario es un menú que permite al usuario seleccionar las opciones que desee realizar.