0% found this document useful (0 votes)
7 views

Source Code

Uploaded by

agloueyome
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views

Source Code

Uploaded by

agloueyome
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

import mysql.

connector
from tkinter import Tk, Label, Entry, Button, StringVar, messagebox,
Toplevel, ttk

db = mysql.connector.connect(
host="localhost",
user="root",
password="",
database="parking_system_database"
)

cursor = db.cursor()

def refresh_parking(tree):
cursor.execute("SELECT * FROM parking")
records = cursor.fetchall()
for record in tree.get_children():
tree.delete(record)
for record in records:
tree.insert("", "end", values=record)

def add_parking(tree, slot_var, type_var, plate_var, brand_var):


slot_number = slot_var.get()
vehicle_type = type_var.get()
plate_number = plate_var.get()
vehicle_brand = brand_var.get()

if not slot_number or not vehicle_type or not plate_number or not


vehicle_brand:
messagebox.showerror("Error", "All fields are required!")
return

try:
query = "INSERT INTO gui (slot_number, vehicle_type, plate_number,
vehicle_brand) VALUES (%s, %s, %s, %s)"
cursor.execute(query, (slot_number, vehicle_type, plate_number,
vehicle_brand))
db.commit()
messagebox.showinfo("Success", "Parking slot added successfully!")
refresh_parking(tree)
except Exception as e:
messagebox.showerror("Error", f"Failed to add parking slot: {e}")

def delete_parking(tree):
selected_item = tree.selection()
if not selected_item:
messagebox.showerror("Error", "No parking slot selected!")
return

try:
item = tree.item(selected_item)
parking_id = item["values"][0]
query = "DELETE FROM parking WHERE id = %s"
cursor.execute(query, (parking_id,))
db.commit()
messagebox.showinfo("Success", "Parking slot deleted
successfully!")
refresh_parking(tree)
except Exception as e:
messagebox.showerror("Error", f"Failed to delete parking slot:
{e}")

def update_parking(tree, slot_var, type_var, plate_var, brand_var):


selected_item = tree.selection()
if not selected_item:
messagebox.showerror("Error", "No parking slot selected!")
return

item = tree.item(selected_item)
parking_id = item["values"][0]
slot_number = slot_var.get()
vehicle_type = type_var.get()
plate_number = plate_var.get()
vehicle_brand = brand_var.get()

if not slot_number or not vehicle_type or not plate_number or not


vehicle_brand:
messagebox.showerror("Error", "All fields are required!")
return
try:
query = """UPDATE parking
SET slot_number = %s, vehicle_type = %s, plate_number =
%s, vehicle_brand = %s
WHERE id = %s"""
cursor.execute(query, (slot_number, vehicle_type, plate_number,
vehicle_brand, parking_id))
db.commit()
messagebox.showinfo("Success", "Parking slot updated
successfully!")
refresh_parking(tree)
except Exception as e:
messagebox.showerror("Error", f"Failed to update parking slot:
{e}")

def populate_fields(tree, slot_var, type_var, plate_var, brand_var):


selected_item = tree.selection()
if not selected_item:
return

item = tree.item(selected_item)
values = item["values"]
slot_var.set(values[1])
type_var.set(values[2])
plate_var.set(values[3])
brand_var.set(values[4])

def crud_interface():
root = Tk()
root.title("Parking System")
root.configure(bg="skyblue")

slot_var = StringVar()
type_var = StringVar()
plate_var = StringVar()
brand_var = StringVar()

Label(root, text="Slot Number", bg="skyblue").grid(row=0, column=0,


padx=10, pady=5)
Entry(root, textvariable=slot_var).grid(row=0, column=1, padx=10,
pady=5)

Label(root, text="Vehicle Type", bg="skyblue").grid(row=1, column=0,


padx=10, pady=5)
Entry(root, textvariable=type_var).grid(row=1, column=1, padx=10,
pady=5)

Label(root, text="Plate Number", bg="skyblue").grid(row=2, column=0,


padx=10, pady=5)
Entry(root, textvariable=plate_var).grid(row=2, column=1, padx=10,
pady=5)

Label(root, text="Vehicle Brand", bg="skyblue").grid(row=3, column=0,


padx=10, pady=5)
Entry(root, textvariable=brand_var).grid(row=3, column=1, padx=10,
pady=5)

tree = ttk.Treeview(root, columns=("ID", "Slot", "Type", "Plate",


"Brand"), show="headings")
tree.heading("ID", text="ID")
tree.heading("Slot", text="Slot Number")
tree.heading("Type", text="Vehicle Type")
tree.heading("Plate", text="Plate Number")
tree.heading("Brand", text="Vehicle Brand")
tree.grid(row=4, column=0, columnspan=4, padx=10, pady=10)

refresh_parking(tree)

tree.bind("<<TreeviewSelect>>", lambda e: populate_fields(tree,


slot_var, type_var, plate_var, brand_var))

Button(root, text="Add", bg="grey", command=lambda: add_parking(tree,


slot_var, type_var, plate_var, brand_var)).grid(row=5, column=0, padx=10,
pady=5)
Button(root, text="Update", bg="grey", command=lambda:
update_parking(tree, slot_var, type_var, plate_var,
brand_var)).grid(row=5, column=1, padx=10, pady=5)
Button(root, text="Delete", bg="grey", command=lambda:
delete_parking(tree)).grid(row=5, column=2, padx=10, pady=5)
Button(root, text="Refresh", bg="grey", command=lambda:
refresh_parking(tree)).grid(row=5, column=3, padx=10, pady=5)

root.mainloop()

def login(root, username_var, password_var):


username = username_var.get()
password = password_var.get()
query = "SELECT * FROM users WHERE username = %s AND password = %s"
cursor.execute(query, (username, password))
result = cursor.fetchone()
if result:
messagebox.showinfo("Login Success", "Welcome!")
root.destroy()
crud_interface()
else:
messagebox.showerror("Error", "Invalid credentials!")

def register():
reg_window = Toplevel()
reg_window.geometry("200x150")
reg_window.title("Register")
reg_window.configure(bg="skyblue")

username_var = StringVar()
password_var = StringVar()

Label(reg_window, text="Username", bg="skyblue").pack()


Entry(reg_window, textvariable=username_var).pack()

Label(reg_window, text="Password", bg="skyblue").pack()


Entry(reg_window, textvariable=password_var, show="*").pack()

def register_user():
username = username_var.get()
password = password_var.get()

if not username or not password:


messagebox.showerror("Error", "All fields are required!")
return
try:
query = "INSERT INTO admin (username, password) VALUES (%s,
%s)"
cursor.execute(query, (username, password))
db.commit()
messagebox.showinfo("Success", "Registration successful!")
reg_window.destroy()
except Exception as e:
messagebox.showerror("Error", f"Registration failed: {e}")

Button(reg_window, text="Register", bg="grey",


command=register_user).pack()

def main():
root = Tk()
root.geometry("300x200")
root.title("Login")
root.configure(bg="skyblue")

username_var = StringVar()
password_var = StringVar()

Label(root, text="Username", bg="skyblue").pack()


Entry(root, textvariable=username_var).pack()

Label(root, text="Password", bg="skyblue").pack()


Entry(root, textvariable=password_var, show="*").pack()

Button(root, text="Login", bg="grey", command=lambda: login(root,


username_var, password_var)).pack()
Button(root, text="Register", bg="grey", command=register).pack()

root.mainloop()

if __name__ == "__main__":
main()

You might also like