import mysql.
connector
from [Link] import Error
def connect_to_database():
return [Link](
host='localhost',
user='root',
password='Arya@123',
database='MuffinHouse'
)
def add_menu_item():
name = input("Enter menu item name: ")
while True:
try:
price = float(input("Enter menu item price: "))
if price <= 0:
raise ValueError("Price must be positive.")
break
except ValueError as e:
print(f"Invalid input: {e}. Please enter a valid price.")
connection = connect_to_database()
cursor = [Link]()
[Link]("INSERT INTO menu_items (name, price) VALUES (%s, %s)", (name, price))
[Link]()
[Link]()
[Link]()
print("Menu item added successfully")
def add_customer():
name = input("Enter customer name: ")
phone = input("Enter customer phone number: ")
connection = connect_to_database()
cursor = [Link]()
[Link]("INSERT INTO customers (name, phone) VALUES (%s, %s)", (name, phone))
[Link]()
[Link]()
[Link]()
print("Customer added successfully")
def list_menu_items():
connection = connect_to_database()
cursor = [Link]()
[Link]("SELECT id, name, price FROM menu_items")
items = [Link]()
[Link]()
[Link]()
return items
def place_order():
items = list_menu_items()
if not items:
print("No menu items available.")
return
print("Available Menu Items:")
for item in items:
print(f"ID: {item[0]}, Name: {item[1]}, Price: ${item[2]:.2f}")
order_items = []
while True:
try:
item_id = int(input("Enter menu item ID to order (or 0 to finish): "))
if item_id == 0:
break
if not any(item[0] == item_id for item in items):
print("Invalid item ID. Please choose from the available items.")
continue
quantity = int(input("Enter quantity: "))
if quantity <= 0:
print("Quantity must be positive.")
continue
item_price = next(item[2] for item in items if item[0] == item_id)
order_items.append({'id': item_id, 'price': item_price, 'quantity': quantity})
except ValueError:
print("Invalid input. Please enter a valid number.")
if not order_items:
print("No items ordered.")
return
customer_id = int(input("Enter customer ID: "))
connection = connect_to_database()
cursor = [Link]()
connection.start_transaction()
total = sum(item['price'] * item['quantity'] for item in order_items)
[Link]("INSERT INTO orders (customer_id, total) VALUES (%s, %s)", (customer_id, total))
order_id = [Link]
for item in order_items:
[Link]("INSERT INTO order_items (order_id, menu_item_id, quantity) VALUES (%s, %s, %s)",
(order_id, item['id'], item['quantity']))
[Link]()
[Link]()
[Link]()
print(f"Order placed successfully with ID: {order_id}")
def generate_bill():
order_id = int(input("Enter order ID: "))
connection = connect_to_database()
cursor = [Link]()
query = """
SELECT [Link], [Link], o.order_date, [Link], [Link], [Link], [Link]
FROM orders o
JOIN customers c ON o.customer_id = [Link]
JOIN order_items oi ON [Link] = oi.order_id
JOIN menu_items mi ON oi.menu_item_id = [Link]
WHERE [Link] = %s
"""
[Link](query, (order_id,))
results = [Link]()
[Link]()
[Link]()
if results:
print(f"Bill for Order ID: {order_id}")
customer_name = results[0][1]
order_date = results[0][2]
total = results[0][3]
print(f"Customer: {customer_name}")
print(f"Order Date: {order_date}")
print("Items:")
for row in results:
item_name = row[4]
quantity = row[5]
price = row[6]
print(f" {item_name} x {quantity} @ ${price:.2f} each")
print(f"Total: ${total:.2f}")
else:
print(f"No order found with ID: {order_id}")
def main():
while True:
print("\nRestaurant Billing System")
print("1. Add Menu Item")
print("2. Add Customer")
print("3. Place Order")
print("4. Generate Bill")
print("5. Exit")
choice = input("Enter your choice: ")
if choice == '1':
add_menu_item()
elif choice == '2':
add_customer()
elif choice == '3':
place_order()
elif choice == '4':
generate_bill()
elif choice == '5':
print("Exiting...")
break
else:
print("Invalid choice. Please try again.")
if __name__ == "__main__":
main()