Download as pdf or txt
Download as pdf or txt
You are on page 1of 7

 

sfg

import pandas as pd
import matplotlib.pyplot as plt

def get_positive_input(prompt, dtype=float):


    while True:
        try:
            value = dtype(input(prompt))
            if value >= 0:
                return value
            else:
                print(f"Please enter a positive {dtype.__name__}.")
        except ValueError:
            print(f"Invalid input. Please enter a positive {dtype.__name__}.")

def add_item_to_inventory(name, category, price, quantity):


    data = pd.DataFrame([[name, category, price, quantity]], columns=['Item Name',
'Category', 'Price', 'Quantity'])
    inventory = pd.read_csv('bakery_inventory.csv') if 'bakery_inventory.csv' in
pd.compat.glob('bakery_inventory.csv') else pd.DataFrame()
    updated_inventory = pd.concat([inventory, data], ignore_index=True)
    updated_inventory.to_csv('bakery_inventory.csv', index=False)

def display_inventory():
    inventory = pd.read_csv('bakery_inventory.csv') if 'bakery_inventory.csv' in
pd.compat.glob('bakery_inventory.csv') else pd.DataFrame()
    print("\nBakery Inventory:")
    print(inventory)

def search_item_in_inventory(name):
    inventory = pd.read_csv('bakery_inventory.csv') if 'bakery_inventory.csv' in
pd.compat.glob('bakery_inventory.csv') else pd.DataFrame()
    item_data = inventory[inventory['Item Name'] == name]
    if not item_data.empty:
        print("Item Found:")
        print(item_data)
    else:
        print("Item not found in the inventory.")

def add_to_cart(name, quantity, cart):


    inventory = pd.read_csv('bakery_inventory.csv') if 'bakery_inventory.csv' in
pd.compat.glob('bakery_inventory.csv') else pd.DataFrame()
    item_data = inventory[inventory['Item Name'] == name]
    if not item_data.empty:
        available_quantity = item_data['Quantity'].values[0]
        if available_quantity >= quantity:
            cart.append({'Item Name': name, 'Category': item_data['Category'].values[0],
                         'Price': item_data['Price'].values[0], 'Quantity': quantity})
            print(f"{quantity} {name}(s) added to the cart.")
            record_sales_transaction(name, item_data['Price'].values[0])
            inventory.loc[inventory['Item Name'] == name, 'Quantity'] -= quantity
            inventory.to_csv('bakery_inventory.csv', index=False)
            return {'Item Name': name, 'Category': item_data['Category'].values[0], 'Price':
item_data['Price'].values[0], 'Quantity': quantity}
        else:
            print(f"Insufficient quantity of {name} in the inventory.")
            return None
    else:
        print(f"{name} not found in the inventory.")
        return None

def remove_from_cart(name, cart):


    index_to_remove = next((index for index, item in enumerate(cart) if item['Item Name']
== name), None)
    if index_to_remove is not None:
        removed_item = cart.pop(index_to_remove)
        print(f"{removed_item['Item Name']} removed from the cart.")
    else:
        print(f"{name} not found in the cart.")

def view_cart(cart):
    if not cart:
        print("Cart is empty.")
    else:
        print("\nItems in Cart:")
        print("Item Name\tCategory\tPrice\tQuantity")
        for item in cart:
            print(f"{item['Item
Name']}\t\t{item['Category']}\t\t{item['Price']}\t{item['Quantity']}")

def generate_invoice(cart):
    if not cart:
        print("Cart is empty. Cannot generate invoice.")
        return
    total_amount = 0
    print("\nInvoice:")
    print("Item Name\tCategory\tPrice\tQuantity\tTotal Price")
    for item in cart:
        item_total = item['Price'] * item['Quantity']
        total_amount += item_total
        print(f"{item['Item
Name']}\t\t{item['Category']}\t\t{item['Price']}\t{item['Quantity']}\t\t{item_total:.2f}")

    print("==================================================")
    print(f"Total Amount: {total_amount:.2f}")

def record_sales_transaction(name, price):


    data = pd.DataFrame([[pd.Timestamp.now().isoformat(), name, price]],
                        columns=['Date', 'Item Name', 'Price'])
    sales_data = pd.read_csv('recent_sales.csv') if 'recent_sales.csv' in
pd.compat.glob('recent_sales.csv') else pd.DataFrame()
    updated_sales_data = pd.concat([sales_data, data], ignore_index=True)
    updated_sales_data.to_csv('recent_sales.csv', index=False)

def load_sales_data():
    sales_data = pd.read_csv('recent_sales.csv') if 'recent_sales.csv' in
pd.compat.glob('recent_sales.csv') else pd.DataFrame()
    return sales_data

def plot_sales_graph(name, item_sales):


    plt.figure(figsize=(10, 6))
    plt.bar(item_sales['Date'], item_sales['Price'], color='b')
    plt.title(f"Recent Sales of {name}")
    plt.xlabel("Date")
    plt.ylabel("Price")
    plt.xticks(rotation=45)
    plt.grid(True)
    plt.tight_layout()
    plt.show()

def view_recent_sales(name, sales_data):


    item_sales = sales_data[sales_data['Item Name'] == name]
    if not item_sales.empty:
        print("\nRecent Sales of", name)
        print("Date\t\tPrice")
        for _, row in item_sales.iterrows():
            print(f"{row['Date']}\t{row['Price']}")
        plot_sales_graph(name, item_sales)
    else:
        print(f"No recent sales found for {name}.")

def update_item_quantity(name, quantity):


    inventory = pd.read_csv('bakery_inventory.csv') if 'bakery_inventory.csv' in
pd.compat.glob('bakery_inventory.csv') else pd.DataFrame()
    inventory.loc[inventory['Item Name'] == name, 'Quantity'] = quantity
    inventory.to_csv('bakery_inventory.csv', index=False)
    print(f"Quantity of {name} updated successfully!")

def add_customer(name, email, phone):


    data = pd.DataFrame([[name, email, phone]], columns=['Name', 'Email', 'Phone'])
    customer_data = pd.read_csv('customer_data.csv') if 'customer_data.csv' in
pd.compat.glob('customer_data.csv') else pd.DataFrame()
    updated_customer_data = pd.concat([customer_data, data], ignore_index=True)
    updated_customer_data.to_csv('customer_data.csv', index=False)
    print(f"Customer {name} added successfully!")

def remove_customer(name):
    customer_data = pd.read_csv('customer_data.csv') if 'customer_data.csv' in
pd.compat.glob('customer_data.csv') else pd.DataFrame()
    if name in customer_data['Name'].values:
        customer_data = customer_data[customer_data['Name'] != name]
        customer_data.to_csv('customer_data.csv', index=False)
        print(f"Customer {name} removed successfully!")
    else:
        print(f"Customer {name} not found in the database.")

def add_staff(name, position, salary):


    data = pd.DataFrame([[name, position, salary]], columns=['Name', 'Position', 'Salary'])
    staff_data = pd.read_csv('staff_data.csv') if 'staff_data.csv' in
pd.compat.glob('staff_data.csv') else pd.DataFrame()
    updated_staff_data = pd.concat([staff_data, data], ignore_index=True)
    updated_staff_data.to_csv('staff_data.csv', index=False)
    print(f"Staff {name} added successfully!")

def remove_staff(name):
    staff_data = pd.read_csv('staff_data.csv') if 'staff_data.csv' in
pd.compat.glob('staff_data.csv') else pd.DataFrame()
    if name in staff_data['Name'].values:
        staff_data = staff_data[staff_data['Name'] != name]
        staff_data.to_csv('staff_data.csv', index=False)
        print(f"Staff {name} removed successfully!")
    else:
        print(f"Staff {name} not found in the database.")

def view_all_customers():
    customer_data = pd.read_csv('customer_data.csv') if 'customer_data.csv' in
pd.compat.glob('customer_data.csv') else pd.DataFrame()
    print("\nAll Customers:")
    print(customer_data)

def view_all_staff():
    staff_data = pd.read_csv('staff_data.csv') if 'staff_data.csv' in
pd.compat.glob('staff_data.csv') else pd.DataFrame()
    print("\nAll Staff:")
    print(staff_data)

def is_correct_password(input_password):
    return input_password == 'your_password'  # Replace 'your_password' with the actual
password

def load_cart_data():
    try:
        cart_data = pd.read_csv('cart_data.csv')
        cart = cart_data.to_dict('records')
        return cart
    except FileNotFoundError:
        return []

def save_cart_data(cart):
    cart_df = pd.DataFrame(cart)
    cart_df.to_csv('cart_data.csv', index=False)
    print("Cart data saved to cart_data.csv.")

def main():
    cart = load_cart_data()
    sales_data = load_sales_data()

    while True:
        print("\nWELCOME to our Bakery!!")
        print("1. Add item to inventory")
        print("2. Display inventory")
        print("3. Search item in inventory")
        print("4. Add items to cart")
        print("5. Remove item from cart")
        print("6. View Cart")
        print("7. Generate Invoice")
        print("8. View Recent Sales")
        print("9. Update Item Quantity")
        print("10. Add Customer Information")
        print("11. Remove Customer Information")
        print("12. Add Staff Information")
        print("13. Remove Staff Information")
        print("14. View All Customers")
        print("15. View All Staff")
        print("16. Save and Exit")

        choice = int(input("Enter your choice: "))

        if choice == 1:
            password = input("Enter password: ")
            if is_correct_password(password):
                name = input("Enter item name: ")
                category = input("Enter item category: ")
                price = get_positive_input("Enter item price: ")
                quantity = get_positive_input("Enter item quantity: ")
                add_item_to_inventory(name, category, price, quantity)
                print("Item added to inventory successfully!")
            else:
                print("Incorrect password. Access denied.")

        elif choice == 2:
            display_inventory()

        elif choice == 3:
            name = input("Enter item name to search: ")
            search_item_in_inventory(name)

        elif choice == 4:
            num_items = get_positive_input("Enter the number of items to add to the cart: ",
int)
            for _ in range(num_items):
                name = input("Enter item name: ")
                quantity = get_positive_input("Enter quantity: ", int)
                add_to_cart(name, quantity, cart)
            print("Items added to cart successfully!")

        elif choice == 5:
            name = input("Enter item name to remove from cart: ")
            remove_from_cart(name, cart)

        elif choice == 6:
            view_cart(cart)

        elif choice == 7:
            generate_invoice(cart)

        elif choice == 8:
            name = input("Enter item name to view recent sales: ")
            view_recent_sales(name, sales_data)

        elif choice == 9:
            password = input("Enter password: ")
            if is_correct_password(password):
                name = input("Enter item name to update quantity: ")
                quantity = get_positive_input("Enter new quantity: ", int)
                update_item_quantity(name, quantity)
            else:
                print("Incorrect password. Access denied.")

        elif choice == 10:


            password = input("Enter password: ")
            if is_correct_password(password):
                name = input("Enter customer name: ")
                email = input("Enter customer email: ")
                phone = input("Enter customer phone: ")
                add_customer(name, email, phone)
            else:
                print("Incorrect password. Access denied.")

        elif choice == 11:


            password = input("Enter password: ")
            if is_correct_password(password):
                name = input("Enter customer name to remove: ")
                remove_customer(name)
            else:
                print("Incorrect password. Access denied.")

        elif choice == 12:


            password = input("Enter password: ")
            if is_correct_password(password):
                name = input("Enter staff name: ")
                position = input("Enter staff position: ")
                salary = get_positive_input("Enter staff salary: ")
                add_staff(name, position, salary)
            else:
                print("Incorrect password. Access denied.")

        elif choice == 13:


            password = input("Enter password: ")
            if is_correct_password(password):
                name = input("Enter staff name to remove: ")
                remove_staff(name)
            else:
                print("Incorrect password. Access denied.")

        elif choice == 14:


            view_all_customers()

        elif choice == 15:


            view_all_staff()

        elif choice == 16:


            save_cart_data(cart)
            print("Thank you for using the Bakery Management System.")
            break

        else:
            print("Invalid choice. Please try again.")

if __name__ == "__main__":
    main()

© 2018-2020 dndsofthub All Rights Reserved

You might also like