class Supermarket:
def __init__(self, host, user, password, database):
self.db
= mysql.connector
.connect
(host
=host
,user
=user
, password=password,database=database)
self.cursor = self.db.cursor()
self.create_table()
def create_table(self):
self.cursor.execute("""CREATE TABLE IF NOT EXISTS items (id INT
AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255) NOT NULL,quantity INT
NOT NULL,price FLOAT NOT NULL)""")
self.db.commit()
def print_bill(self, purchased_items):
total_amount = 0
print("\n------------ Bill ------------\n")
for item in purchased_items:
print(f"Item: {item['name']}")
print(f"Quantity: {item['quantity']}")
print(f"Price: {item['price']}")
print("------------------------------\n")
total_amount += item["price"] * item["quantity"]
print(f"Total Amount: {total_amount}\n")
def add_item(self, name, quantity, price):
self.cursor.execute("""
INSERT INTO items (name, quantity, price)
VALUES (%s, %s, %s)""", (name, quantity, price))
self.db.commit()
self.update_item_list()
def purchase_items(self, purchases):
purchased_items = []
for purchase in purchases:
purchase_item
, purchase_quantity
= map
(str
.strip
, purchase
.split(":"))
self.cursor.execute("SELECT * FROM items WHERE LOWER(name) = LOWER(%s))", (purchase_item,))
item = self.cursor.fetchone()
if item:
if item[2] >= int(purchase_quantity):
new_quantity = item[2] - int(purchase_quantity)
self.cursor.execute(
"UPDATE items SET quantity=%s WHERE id=%s",
(new_quantity, item[0]))
self.db.commit()
purchased_items.append({
"name": item[1],
"quantity": int(purchase_quantity),
"price": item[3]})
else:
print(f"Not enough stock for {purchase_item}")
else:
print(f"{purchase_item} not found in store")
self.print_bill(purchased_items)
def update_item_list(self):
print("\n---------- Item List ----------")
self.cursor.execute("SELECT * FROM items")
for item in self.cursor.fetchall():
print(f"{item[1]} - Stock: {item[2]} - Price: {item[3]}")
print("-------------------------------\n")
def main():
sm = Supermarket(host="localhost", user="root", password="", database ="supermarket")
purchased_items = []
while True:
print("1. Add Item")
print("2. Purchase Items")
print("3. Display Bill")
print("4. Display Stock")
print("5. Exit")
choice = input("Enter your choice (1/2/3/4/5): ")
if choice == "1":
name = input("Enter item name: ")
quantity = int(input("Enter quantity: "))
price = float(input("Enter price: "))
sm.add_item(name, quantity, price)
elif choice == "2":
purchases = input("Enter item name and quantity (e.g., Apple:2,
Milk:1): ")
purchase_list
= purchases
.split(",") sm.purchase_items(purchase_list)
elif choice == "3":
print("Bill will be shown after purchase.")
elif choice == "4":
print("Displaying Stock:")
sm.update_item_list()
elif choice == "5":
print("Exiting the Supermarket Management System. Goodbye!")
break
else:
print("Invalid choice. Please try again.\n")
if __name__ == "__main__":
main()
CmltcG9ydCBteXNxbC5jb25uZWN0b3IKCmNsYXNzIFN1cGVybWFya2V0OgogIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCB1c2VyLCBwYXNzd29yZCwgZGF0YWJhc2UpOgogICAgc2VsZi5kYiA9IG15c3FsLmNvbm5lY3Rvci5jb25uZWN0KGhvc3Q9aG9zdCx1c2VyPXVzZXIsCiAgICBwYXNzd29yZD1wYXNzd29yZCxkYXRhYmFzZT1kYXRhYmFzZSkKICAgIHNlbGYuY3Vyc29yID0gc2VsZi5kYi5jdXJzb3IoKQogICAgc2VsZi5jcmVhdGVfdGFibGUoKQoKICBkZWYgY3JlYXRlX3RhYmxlKHNlbGYpOgogICAgc2VsZi5jdXJzb3IuZXhlY3V0ZSgiIiJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBpdGVtcyAoaWQgSU5UCkFVVE9fSU5DUkVNRU5UIFBSSU1BUlkgS0VZLG5hbWUgVkFSQ0hBUigyNTUpIE5PVCBOVUxMLHF1YW50aXR5IElOVApOT1QgTlVMTCxwcmljZSBGTE9BVCBOT1QgTlVMTCkiIiIpCiAgICBzZWxmLmRiLmNvbW1pdCgpCiAgCiAgZGVmIHByaW50X2JpbGwoc2VsZiwgcHVyY2hhc2VkX2l0ZW1zKToKICAgIHRvdGFsX2Ftb3VudCA9IDAKICAgIHByaW50KCJcbi0tLS0tLS0tLS0tLSBCaWxsIC0tLS0tLS0tLS0tLVxuIikKICAgIGZvciBpdGVtIGluIHB1cmNoYXNlZF9pdGVtczoKICAgICAgcHJpbnQoZiJJdGVtOiB7aXRlbVsnbmFtZSddfSIpCiAgICAgIHByaW50KGYiUXVhbnRpdHk6IHtpdGVtWydxdWFudGl0eSddfSIpCiAgICAgIHByaW50KGYiUHJpY2U6IHtpdGVtWydwcmljZSddfSIpCiAgICAgIHByaW50KCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpCiAgICAgIHRvdGFsX2Ftb3VudCArPSBpdGVtWyJwcmljZSJdICogaXRlbVsicXVhbnRpdHkiXQogICAgcHJpbnQoZiJUb3RhbCBBbW91bnQ6IHt0b3RhbF9hbW91bnR9XG4iKQoKICBkZWYgYWRkX2l0ZW0oc2VsZiwgbmFtZSwgcXVhbnRpdHksIHByaWNlKToKICAgIHNlbGYuY3Vyc29yLmV4ZWN1dGUoIiIiCiAgICAgIElOU0VSVCBJTlRPIGl0ZW1zIChuYW1lLCBxdWFudGl0eSwgcHJpY2UpCiAgICAgIFZBTFVFUyAoJXMsICVzLCAlcykiIiIsIChuYW1lLCBxdWFudGl0eSwgcHJpY2UpKQogICAgc2VsZi5kYi5jb21taXQoKQogICAgc2VsZi51cGRhdGVfaXRlbV9saXN0KCkKICAKICBkZWYgcHVyY2hhc2VfaXRlbXMoc2VsZiwgcHVyY2hhc2VzKToKICAgIHB1cmNoYXNlZF9pdGVtcyA9IFtdCiAgICBmb3IgcHVyY2hhc2UgaW4gcHVyY2hhc2VzOgogICAgICBwdXJjaGFzZV9pdGVtLCBwdXJjaGFzZV9xdWFudGl0eSA9IG1hcChzdHIuc3RyaXAsIHB1cmNoYXNlLnNwbGl0KCI6IikpCiAgICAgIAogICAgICBzZWxmLmN1cnNvci5leGVjdXRlKCJTRUxFQ1QgKiBGUk9NIGl0ZW1zIFdIRVJFIExPV0VSKG5hbWUpID0gTE9XRVIoJXMpKSIsIChwdXJjaGFzZV9pdGVtLCkpCiAgICAgIGl0ZW0gPSBzZWxmLmN1cnNvci5mZXRjaG9uZSgpCiAgICAgIAogICAgICBpZiBpdGVtOgogICAgICAgIGlmIGl0ZW1bMl0gPj0gaW50KHB1cmNoYXNlX3F1YW50aXR5KToKICAgICAgICAgIG5ld19xdWFudGl0eSA9IGl0ZW1bMl0gLSBpbnQocHVyY2hhc2VfcXVhbnRpdHkpCiAgICAgICAgICBzZWxmLmN1cnNvci5leGVjdXRlKAogICAgICAgICAgICAiVVBEQVRFIGl0ZW1zIFNFVCBxdWFudGl0eT0lcyBXSEVSRSBpZD0lcyIsCiAgICAgICAgICAgIChuZXdfcXVhbnRpdHksIGl0ZW1bMF0pKQogICAgICAgICAgc2VsZi5kYi5jb21taXQoKQoKICAgICAgICAgIHB1cmNoYXNlZF9pdGVtcy5hcHBlbmQoewogICAgICAgICAgICAibmFtZSI6IGl0ZW1bMV0sCiAgICAgICAgICAgICJxdWFudGl0eSI6IGludChwdXJjaGFzZV9xdWFudGl0eSksCiAgICAgICAgICAgICJwcmljZSI6IGl0ZW1bM119KQogICAgICAgIGVsc2U6CiAgICAgICAgICBwcmludChmIk5vdCBlbm91Z2ggc3RvY2sgZm9yIHtwdXJjaGFzZV9pdGVtfSIpCiAgICAgIGVsc2U6CiAgICAgICAgcHJpbnQoZiJ7cHVyY2hhc2VfaXRlbX0gbm90IGZvdW5kIGluIHN0b3JlIikKCiAgICAgIHNlbGYucHJpbnRfYmlsbChwdXJjaGFzZWRfaXRlbXMpCgogIGRlZiB1cGRhdGVfaXRlbV9saXN0KHNlbGYpOgogICAgcHJpbnQoIlxuLS0tLS0tLS0tLSBJdGVtIExpc3QgLS0tLS0tLS0tLSIpCiAgICBzZWxmLmN1cnNvci5leGVjdXRlKCJTRUxFQ1QgKiBGUk9NIGl0ZW1zIikKICAgIGZvciBpdGVtIGluIHNlbGYuY3Vyc29yLmZldGNoYWxsKCk6CiAgICAgIHByaW50KGYie2l0ZW1bMV19IC0gU3RvY2s6IHtpdGVtWzJdfSAtIFByaWNlOiB7aXRlbVszXX0iKQogICAgcHJpbnQoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpCgpkZWYgbWFpbigpOgogIHNtID0gU3VwZXJtYXJrZXQoaG9zdD0ibG9jYWxob3N0IiwgdXNlcj0icm9vdCIsIHBhc3N3b3JkPSIiLCBkYXRhYmFzZSA9InN1cGVybWFya2V0IikKICAKICBwdXJjaGFzZWRfaXRlbXMgPSBbXQogIAogIHdoaWxlIFRydWU6CiAgICBwcmludCgiMS4gQWRkIEl0ZW0iKQogICAgcHJpbnQoIjIuIFB1cmNoYXNlIEl0ZW1zIikKICAgIHByaW50KCIzLiBEaXNwbGF5IEJpbGwiKQogICAgcHJpbnQoIjQuIERpc3BsYXkgU3RvY2siKQogICAgcHJpbnQoIjUuIEV4aXQiKQoKICAgIGNob2ljZSA9IGlucHV0KCJFbnRlciB5b3VyIGNob2ljZSAoMS8yLzMvNC81KTogIikKICAKICAgIGlmIGNob2ljZSA9PSAiMSI6CiAgICAgIG5hbWUgPSBpbnB1dCgiRW50ZXIgaXRlbSBuYW1lOiAiKQogICAgICBxdWFudGl0eSA9IGludChpbnB1dCgiRW50ZXIgcXVhbnRpdHk6ICIpKQogICAgICBwcmljZSA9IGZsb2F0KGlucHV0KCJFbnRlciBwcmljZTogIikpCiAgICAgIHNtLmFkZF9pdGVtKG5hbWUsIHF1YW50aXR5LCBwcmljZSkKICAgICAgICAKICAgIGVsaWYgY2hvaWNlID09ICIyIjoKICAgICAgcHVyY2hhc2VzID0gaW5wdXQoIkVudGVyIGl0ZW0gbmFtZSBhbmQgcXVhbnRpdHkgKGUuZy4sIEFwcGxlOjIsCiAgICAgIE1pbGs6MSk6ICIpCiAgICAgIHB1cmNoYXNlX2xpc3QgPSBwdXJjaGFzZXMuc3BsaXQoIiwiKQogICAgICBzbS5wdXJjaGFzZV9pdGVtcyhwdXJjaGFzZV9saXN0KQogICAgICAgIAogICAgZWxpZiBjaG9pY2UgPT0gIjMiOgogICAgICBwcmludCgiQmlsbCB3aWxsIGJlIHNob3duIGFmdGVyIHB1cmNoYXNlLiIpCgogICAgZWxpZiBjaG9pY2UgPT0gIjQiOgogICAgICBwcmludCgiRGlzcGxheWluZyBTdG9jazoiKQogICAgICBzbS51cGRhdGVfaXRlbV9saXN0KCkKICAgICAgICAKICAgIGVsaWYgY2hvaWNlID09ICI1IjoKICAgICAgcHJpbnQoIkV4aXRpbmcgdGhlIFN1cGVybWFya2V0IE1hbmFnZW1lbnQgU3lzdGVtLiBHb29kYnllISIpCiAgICAgIGJyZWFrCiAgICAgIAogICAgZWxzZToKICAgICAgcHJpbnQoIkludmFsaWQgY2hvaWNlLiBQbGVhc2UgdHJ5IGFnYWluLlxuIikKCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgbWFpbigp
import mysql.connector
class Supermarket:
def __init__(self, host, user, password, database):
self.db = mysql.connector.connect(host=host,user=user,
password=password,database=database)
self.cursor = self.db.cursor()
self.create_table()
def create_table(self):
self.cursor.execute("""CREATE TABLE IF NOT EXISTS items (id INT
AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255) NOT NULL,quantity INT
NOT NULL,price FLOAT NOT NULL)""")
self.db.commit()
def print_bill(self, purchased_items):
total_amount = 0
print("\n------------ Bill ------------\n")
for item in purchased_items:
print(f"Item: {item['name']}")
print(f"Quantity: {item['quantity']}")
print(f"Price: {item['price']}")
print("------------------------------\n")
total_amount += item["price"] * item["quantity"]
print(f"Total Amount: {total_amount}\n")
def add_item(self, name, quantity, price):
self.cursor.execute("""
INSERT INTO items (name, quantity, price)
VALUES (%s, %s, %s)""", (name, quantity, price))
self.db.commit()
self.update_item_list()
def purchase_items(self, purchases):
purchased_items = []
for purchase in purchases:
purchase_item, purchase_quantity = map(str.strip, purchase.split(":"))
self.cursor.execute("SELECT * FROM items WHERE LOWER(name) = LOWER(%s))", (purchase_item,))
item = self.cursor.fetchone()
if item:
if item[2] >= int(purchase_quantity):
new_quantity = item[2] - int(purchase_quantity)
self.cursor.execute(
"UPDATE items SET quantity=%s WHERE id=%s",
(new_quantity, item[0]))
self.db.commit()
purchased_items.append({
"name": item[1],
"quantity": int(purchase_quantity),
"price": item[3]})
else:
print(f"Not enough stock for {purchase_item}")
else:
print(f"{purchase_item} not found in store")
self.print_bill(purchased_items)
def update_item_list(self):
print("\n---------- Item List ----------")
self.cursor.execute("SELECT * FROM items")
for item in self.cursor.fetchall():
print(f"{item[1]} - Stock: {item[2]} - Price: {item[3]}")
print("-------------------------------\n")
def main():
sm = Supermarket(host="localhost", user="root", password="", database ="supermarket")
purchased_items = []
while True:
print("1. Add Item")
print("2. Purchase Items")
print("3. Display Bill")
print("4. Display Stock")
print("5. Exit")
choice = input("Enter your choice (1/2/3/4/5): ")
if choice == "1":
name = input("Enter item name: ")
quantity = int(input("Enter quantity: "))
price = float(input("Enter price: "))
sm.add_item(name, quantity, price)
elif choice == "2":
purchases = input("Enter item name and quantity (e.g., Apple:2,
Milk:1): ")
purchase_list = purchases.split(",")
sm.purchase_items(purchase_list)
elif choice == "3":
print("Bill will be shown after purchase.")
elif choice == "4":
print("Displaying Stock:")
sm.update_item_list()
elif choice == "5":
print("Exiting the Supermarket Management System. Goodbye!")
break
else:
print("Invalid choice. Please try again.\n")
if __name__ == "__main__":
main()