import tkinter as tk from tkinter import messagebox from database import setup_database, connect from admin_dashboard import AdminDashboard from kasir_dashboard import KasirDashboard from waiter_dashboard import WaiterDashboard from pembeli_menu import PembeliMenu from pemilik_dashboard import PemilikDashboard class App(tk.Tk): def __init__(self): super().__init__() self.title("Sistem Cafe") self.geometry("500x400") self.container = tk.Frame(self) self.container.pack(fill="both", expand=True) self.frames = {} # Register screens for name, FrameClass in { "Login": LoginScreen, "Admin": AdminDashboard, "Kasir": KasirDashboard, "Waiter": WaiterDashboard, "Pembeli": PembeliMenu, "Pemilik": PemilikDashboard }.items(): frame = FrameClass(self.container, self) self.frames[name] = frame frame.grid(row=0, column=0, sticky="nsew") self.show_frame("Login") def show_frame(self, name): frame = self.frames[name] frame.tkraise() class LoginScreen(tk.Frame): def __init__(self, parent, controller): super().__init__(parent) self.controller = controller tk.Label(self, text="LOGIN SISTEM CAFE", font=("Arial", 20, "bold")).pack(pady=20) tk.Label(self, text="Username").pack() self.username_entry = tk.Entry(self, width=30) self.username_entry.pack() tk.Label(self, text="Password").pack() self.password_entry = tk.Entry(self, width=30, show="*") self.password_entry.pack() tk.Button(self, text="Login", width=20, command=self.login).pack(pady=15) def login(self): username = self.username_entry.get() password = self.password_entry.get() db = connect() cur = db.cursor() cur.execute("SELECT role FROM users WHERE username=? AND password=?", (username, password)) result = cur.fetchone() if result: role = result[0] if role == "admin": self.controller.show_frame("Admin") elif role == "kasir": self.controller.show_frame("Kasir") elif role == "waiter": self.controller.show_frame("Waiter") elif role == "pembeli": self.controller.show_frame("Pembeli") elif role == "pemilik cafe": self.controller.show_frame("Pemilik") else: messagebox.showerror("Error", "Username atau password salah") db.close() # RUN PROGRAM if __name__ == "__main__": setup_database() app = App() app.mainloop()