Advertisement
teslariu

resto

Aug 24th, 2023
1,256
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.97 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. """
  5. Script que implemente un menu para administrar un restaurante. Vamos a
  6. implementar dos tablas: categorias y platos
  7. EJ: categorias: ensaladas, entradas, guarniciones, plato principal, postre
  8. platos: milanesa, ravioles, fideos, flan, empanada, ensalada cesar, etc.
  9. Vamos a hacer un menu que implemente por ejemplo:
  10. 1. Agregar categoria
  11. 2. Agregar plato
  12. 3. Mostrar menu
  13. 4. Salir
  14.  
  15. """
  16. import sqlite3
  17. from tabulate import tabulate
  18.  
  19. def menu_de_opciones():
  20.     return """
  21.        Menú de categorías y platos
  22.    *--------------------------------*
  23.        1. Agregar categoría
  24.        2. Agregar plato
  25.        3. Mostrar menú
  26.        4. Salir
  27.    *--------------------------------*
  28.    """
  29.    
  30. def agregar_categoria():
  31.     nombre = input("Ingrese el nombre de la categoría: ")
  32.     try:
  33.         conn.execute("INSERT INTO categoria VALUES(null,?)",(nombre,))
  34.     except sqlite3.IntegrityError:
  35.         print(f"Error: ya existe la categoría '{nombre}'")
  36.     else:
  37.         conn.commit()
  38.    
  39.    
  40.  
  41. def agregar_plato():
  42.     tabla = []
  43.     try:
  44.         cursor.execute("SELECT * FROM categoria ORDER BY id")
  45.     except sqlite3.OperationalError:
  46.         print("No se pudo ejecutar la consulta")
  47.     else:
  48.         categorias = cursor.fetchall()
  49.         if categorias:
  50.             id_categoria = [] # almacenará los id de las categorías YA CREADAS
  51.             for categoria in categorias:
  52.                 tabla.append(categoria)
  53.                 id_categoria.append(categoria[0])
  54.             print(tabulate(
  55.                 tabla,
  56.                 headers = ["ID de categoría", "categoría"],
  57.                 tablefmt = "grid",
  58.                 colalign = ["center", "left"]
  59.                 )
  60.             )            
  61.             # valido que el usuario ingrese un id de categoría válido
  62.             while True:
  63.                 try:
  64.                     ID = int(input("\nSeleccione un id: "))
  65.                 except ValueError:
  66.                     print("El ID debe ser un nro entero")
  67.                 else:
  68.                     if ID in id_categoria:
  69.                         break
  70.                     print(f"No existe el id '{ID}'")
  71.                    
  72.             # Creo el plato
  73.             nombre_plato = input("Ingrese el nombre del plato: ")
  74.             try:
  75.                 conn.execute("INSERT INTO platos VALUES(null,?,?)",(nombre_plato,ID))
  76.             except sqlite3.IntegrityError:
  77.                 print(f"Error: ya existe el plato '{nombre_plato}'")
  78.             else:
  79.                 conn.commit()
  80.         else:
  81.             print("No existen categorías de platos")
  82.    
  83.    
  84.    
  85. def menu():
  86.     tabla = []
  87.     query = "SELECT categoria.id, categoria.nombre, platos.id, platos.nombre FROM categoria\
  88.            LEFT JOIN platos\
  89.            ON platos.id_categoria = categoria.id\
  90.            ORDER BY categoria.id, platos.id"
  91.            
  92.     cursor.execute(query)
  93.     platos = cursor.fetchall()
  94.     if platos:
  95.         for plato in platos:
  96.             tabla.append(plato)
  97.         return tabulate(
  98.                     tabla,
  99.                     headers = ["ID de categoría", "Categoría", "ID del plato", "Plato"],
  100.                     tablefmt = "grid",
  101.                     colalign = ["center", "left", "center", "left"]
  102.                     )
  103.     else:
  104.         return "No existe ningún plato en el menú"
  105.    
  106.  
  107.  
  108. while True:
  109.     conn = sqlite3.connect("restaurante.db")
  110.     cursor = conn.cursor()
  111.     print(menu_de_opciones())
  112.    
  113.     opcion = input("Ingrese su opción: ")
  114.    
  115.     if opcion == "1":
  116.         agregar_categoria()
  117.        
  118.     elif opcion == "2":
  119.         agregar_plato()
  120.        
  121.     elif opcion == "3":
  122.         print(menu())
  123.        
  124.     elif opcion == "4":
  125.         conn.close()
  126.         print("Hasta luego...")
  127.         break
  128.        
  129.     else:
  130.         print("Opción incorrecta")
  131.    
  132.    
  133.    
  134.    
  135.    
  136.    
  137.    
  138.    
  139.    
  140.    
  141.    
  142.    
  143.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement