Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- """
- Script que implemente un menu para administrar un restaurante. Vamos a
- implementar dos tablas: categorias y platos
- EJ: categorias: ensaladas, entradas, guarniciones, plato principal, postre
- platos: milanesa, ravioles, fideos, flan, empanada, ensalada cesar, etc.
- Vamos a hacer un menu que implemente por ejemplo:
- 1. Agregar categoria
- 2. Agregar plato
- 3. Mostrar menu
- 4. Salir
- """
- import os
- import sqlite3
- from tabulate import tabulate
- def borrar_pantalla():
- if os.name == "posix":
- os.system ("clear")
- else:
- os.system ("cls")
- def menu_de_opciones():
- return """
- Menú de categorías y platos
- *--------------------------------*
- 1. Agregar categoría
- 2. Agregar plato
- 3. Mostrar menú
- 4. Salir
- *--------------------------------*
- """
- def agregar_categoria():
- nombre = input("Ingrese el nombre de la categoría: ")
- try:
- conn.execute("INSERT INTO categorias VALUES(null,?)",(nombre,))
- except sqlite3.IntegrityError:
- print(f"Error: ya existe la categoría '{nombre}'")
- else:
- print("Categoría añadida")
- conn.commit()
- def agregar_plato():
- tabla = []
- try:
- cursor.execute("SELECT * FROM categorias ORDER BY id")
- except sqlite3.OperationalError:
- print("No se pudo ejecutar la consulta")
- else:
- categorias = cursor.fetchall()
- if categorias:
- id_categoria = [] # almacenará los id de las categorías YA CREADAS
- for categoria in categorias:
- tabla.append(categoria)
- id_categoria.append(categoria[0])
- print(tabulate(
- tabla,
- headers = ["ID de categoría", "categoría"],
- tablefmt = "grid",
- colalign = ["center", "left"]
- )
- )
- # valido que el usuario ingrese un id de categoría válido
- while True:
- try:
- ID = int(input("\nSeleccione un id: "))
- except ValueError:
- print("El ID debe ser un nro entero")
- else:
- if ID in id_categoria:
- break
- print(f"No existe el id '{ID}'")
- # Creo el plato
- nombre_plato = input("Ingrese el nombre del plato: ")
- try:
- conn.execute("INSERT INTO platos VALUES(null,?,?)",(nombre_plato,ID))
- except sqlite3.IntegrityError:
- print(f"Error: ya existe el plato '{nombre_plato}'")
- else:
- print("Plato añadido")
- conn.commit()
- else:
- print("No existen categorías de platos")
- def menu():
- tabla = []
- query = "SELECT categorias.id, categorias.nombre, platos.id, platos.nombre FROM categorias\
- LEFT JOIN platos\
- ON platos.id_categoria = categorias.id\
- ORDER BY categorias.id, platos.id"
- try:
- cursor.execute(query)
- except sqlite3.OperationalError:
- return "No existen categorías y/o platos"
- else:
- platos = cursor.fetchall()
- if platos:
- for plato in platos:
- tabla.append(plato)
- return tabulate(
- tabla,
- headers = ["ID de categoría", "Categoría", "ID del plato", "Plato"],
- tablefmt = "grid",
- colalign = ["center", "left", "center", "left"]
- )
- else:
- return "No existe ningún plato en el menú"
- conn = sqlite3.connect("restaurante.db")
- cursor = conn.cursor()
- while True:
- borrar_pantalla()
- print(menu_de_opciones())
- opcion = input("Ingrese su opción: ")
- if opcion == "1":
- agregar_categoria()
- input()
- elif opcion == "2":
- agregar_plato()
- input()
- elif opcion == "3":
- print(menu())
- input()
- elif opcion == "4":
- conn.close()
- print("Hasta luego...")
- break
- else:
- print("Opción incorrecta")
- input()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement