# === 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()