# === cafe_gui_full.py ===
import tkinter as tk
from tkinter import messagebox
# Δεδομένα
menu = {
"Καφές": 2.5,
"Τσάι": 2.0,
"Σάντουιτς": 3.5,
"Χυμός": 2.8
}
στοκ = {
"Καφές": 10,
"Τσάι": 5,
"Σάντουιτς": 8,
"Χυμός": 6
}
πωλήσεις = {
"Καφές": 0,
"Τσάι": 0,
"Σάντουιτς": 0,
"Χυμός": 0
}
# === Υποπρογράμματα ===
def εμφάνισε_μενού():
return [(π, menu[π], στοκ[π]) for π in menu]
def διαθέσιμο(προϊόν):
return στοκ.get(προϊόν, 0) > 0
def υπολόγισε_κόστος(παραγγελία):
return sum(menu[π] for π in παραγγελία)
def ενημέρωσε_στοκ(παραγγελία):
for π in παραγγελία:
στοκ[π] -= 1
def ενημέρωσε_πωλήσεις(παραγγελία):
for π in παραγγελία:
πωλήσεις[π] += 1
def υπολόγισε_τζίρο():
return sum(πωλήσεις[π] * menu[π] for π in menu)
def στατιστικά_πωλήσεων():
return {π: πωλήσεις[π] for π in πωλήσεις}
def απόδειξη(παραγγελία):
γραμμές = [f"{π}: {menu[π]:.2f} €" for π in παραγγελία]
σύνολο = υπολόγισε_κόστος(παραγγελία)
γραμμές.append(f"Σύνολο: {σύνολο:.2f} €")
return "\n".join(γραμμές)
# === GUI Εφαρμογή ===
παραγγελία = []
def προσθήκη(προϊόν):
if διαθέσιμο(προϊόν):
παραγγελία.append(προϊόν)
ενημέρωση_λίστας()
else:
messagebox.showwarning("Εξαντλημένο", f"Το {προϊόν} δεν είναι διαθέσιμο.")
def ενημέρωση_λίστας():
λίστα.delete(0, tk.END)
for π in παραγγελία:
λίστα.insert(tk.END, π)
def ολοκλήρωση():
if not παραγγελία:
messagebox.showinfo("Άδεια", "Δεν έχετε επιλέξει προϊόντα.")
return
ενημέρωσε_στοκ(παραγγελία)
ενημέρωσε_πωλήσεις(παραγγελία)
messagebox.showinfo("Απόδειξη", απόδειξη(παραγγελία))
παραγγελία.clear()
ενημέρωση_λίστας()
ανανέωση_μενού()
def στατιστικά():
txt = "\n".join([f"{π}: {πλ} πωλήσεις" for π, πλ in στατιστικά_πωλήσεων().items()])
txt += f"\n\nΤζίρος: {υπολόγισε_τζίρο():.2f} €"
messagebox.showinfo("Στατιστικά", txt)
def ανανέωση_μενού():
for widget in frame_μενού.winfo_children():
widget.destroy()
for προϊόν, τιμή, υπολ in εμφάνισε_μενού():
lbl = f"{προϊόν} ({τιμή:.2f}€ | {υπολ} διαθέσιμα)"
tk.Button(frame_μενού, text=lbl, command=lambda π=προϊόν: προσθήκη(π)).pack(fill="x", pady=1)
# === Παράθυρο ===
root = tk.Tk()
root.title("Καφετέρια GUI")
frame_μενού = tk.Frame(root)
frame_μενού.pack(padx=10, pady=5)
tk.Label(root, text="Παραγγελία:").pack()
λίστα = tk.Listbox(root)
λίστα.pack(padx=10, pady=5)
tk.Button(root, text="Ολοκλήρωση Παραγγελίας", command=ολοκλήρωση).pack(pady=2)
tk.Button(root, text="Στατιστικά Πωλήσεων", command=στατιστικά).pack(pady=2)
tk.Button(root, text="Έξοδος", command=root.destroy).pack(pady=2)
ανανέωση_μενού()
root.mainloop()