parent
0b2bbc1145
commit
e69cb20a3a
@ -0,0 +1,507 @@
|
||||
import mysql.connector
|
||||
from datetime import datetime
|
||||
import tkinter as tk
|
||||
from tkinter import messagebox, simpledialog
|
||||
import random
|
||||
|
||||
# 数据库配置
|
||||
db_config = {
|
||||
'host': 'localhost',
|
||||
'user': 'root',
|
||||
'password': '123456',
|
||||
'database': 'mydata'
|
||||
}
|
||||
|
||||
# 连接到数据库
|
||||
conn = mysql.connector.connect(**db_config)
|
||||
cursor = conn.cursor()
|
||||
|
||||
def select_table():
|
||||
cursor.execute("SELECT * FROM tables WHERE Cz_zt = '空闲'")
|
||||
available_tables = cursor.fetchall()
|
||||
if not available_tables:
|
||||
messagebox.showinfo("提示", "没有空桌子可用。")
|
||||
return None
|
||||
|
||||
table_selection = tk.Toplevel()
|
||||
table_selection.title("选择桌子")
|
||||
tk.Label(table_selection, text="欢迎光临!请选择一个空闲的桌子:", font=("Arial", 14)).pack(pady=10)
|
||||
|
||||
# 创建表格显示桌子信息
|
||||
table_frame = tk.Frame(table_selection)
|
||||
table_frame.pack(pady=10)
|
||||
|
||||
for table in available_tables:
|
||||
table_button = tk.Button(
|
||||
table_frame,
|
||||
text=f"桌号: {table[1]}\n位置: {random.choice(['靠窗', '中央', '角落'])}",
|
||||
width=20,
|
||||
height=2,
|
||||
bg="lightblue",
|
||||
command=lambda t=table: proceed_to_customer_info(t[1], t[0], table_selection)
|
||||
)
|
||||
table_button.pack(pady=5, padx=10, side="top")
|
||||
|
||||
def proceed_to_customer_info(cz_number, cz_id, table_selection):
|
||||
cursor.execute("UPDATE tables SET Cz_zt = '占用' WHERE Cz_id = %s", (cz_id,))
|
||||
conn.commit()
|
||||
table_selection.destroy()
|
||||
main_window.cz_id = cz_id
|
||||
messagebox.showinfo("桌子已选择", f"您已选择桌子编号: {cz_number}。")
|
||||
add_customer() # 自动弹出填写顾客信息的窗口
|
||||
|
||||
def add_customer():
|
||||
customer_window = tk.Toplevel()
|
||||
customer_window.title("填写顾客信息")
|
||||
|
||||
tk.Label(customer_window, text="请输入您的信息:", font=("Arial", 14)).pack(pady=10)
|
||||
|
||||
tk.Label(customer_window, text="姓名:").pack()
|
||||
name_entry = tk.Entry(customer_window)
|
||||
name_entry.pack()
|
||||
|
||||
tk.Label(customer_window, text="性别:").pack()
|
||||
sex_entry = tk.Entry(customer_window)
|
||||
sex_entry.pack()
|
||||
|
||||
tk.Label(customer_window, text="电话:").pack()
|
||||
phone_entry = tk.Entry(customer_window)
|
||||
phone_entry.pack()
|
||||
|
||||
def confirm_customer():
|
||||
t_name = name_entry.get()
|
||||
t_rsex = sex_entry.get()
|
||||
t_phone = phone_entry.get()
|
||||
if t_name and t_rsex and t_phone:
|
||||
cursor.execute("INSERT INTO customers (T_name, T_rsex, T_phone) VALUES (%s, %s, %s)", (t_name, t_rsex, t_phone))
|
||||
conn.commit()
|
||||
customer_window.destroy()
|
||||
main_window.t_id = cursor.lastrowid
|
||||
place_order(main_window.t_id, main_window.cz_id) # 跳转到点餐流程
|
||||
else:
|
||||
messagebox.showwarning("警告", "请完整填写所有信息!")
|
||||
|
||||
tk.Button(customer_window, text="确认", command=confirm_customer).pack(pady=10)
|
||||
|
||||
def place_order(t_id, cz_id):
|
||||
cursor.execute("SELECT * FROM menu_items")
|
||||
menu_items = cursor.fetchall()
|
||||
order_window = tk.Toplevel()
|
||||
order_window.title("点餐")
|
||||
tk.Label(order_window, text="菜单:", font=("Arial", 14)).pack(pady=10)
|
||||
selected_items = []
|
||||
|
||||
item_vars = []
|
||||
for item in menu_items:
|
||||
item_var = tk.BooleanVar()
|
||||
tk.Checkbutton(order_window, text=f"{item[1]} - {item[3]}元", variable=item_var).pack(anchor="w")
|
||||
item_vars.append((item_var, item[0]))
|
||||
|
||||
def confirm_order():
|
||||
for var, item_id in item_vars:
|
||||
if var.get():
|
||||
selected_items.append(item_id)
|
||||
if selected_items:
|
||||
# 自动分配空闲服务员
|
||||
cursor.execute("SELECT W_id, W_name FROM workers WHERE W_stat = 0 LIMIT 1")
|
||||
worker = cursor.fetchone()
|
||||
if worker:
|
||||
w_id, w_name = worker
|
||||
# 更新服务员状态为忙碌
|
||||
cursor.execute("UPDATE workers SET W_stat = 1 WHERE W_id = %s", (w_id,))
|
||||
conn.commit()
|
||||
|
||||
time = datetime.now()
|
||||
items_str = ','.join(selected_items)
|
||||
cursor.execute(
|
||||
"INSERT INTO orders (T_id, time, Cz_id, W_id, items) VALUES (%s, %s, %s, %s, %s)",
|
||||
(t_id, time, cz_id, w_id, items_str)
|
||||
)
|
||||
order_id = cursor.lastrowid
|
||||
conn.commit()
|
||||
|
||||
# 显示分配的服务员信息
|
||||
messagebox.showinfo("订单成功", f"您的服务员是:{w_name} (ID: {w_id})")
|
||||
order_window.destroy()
|
||||
main_window.order_id = order_id
|
||||
main_window.selected_items = selected_items
|
||||
generate_bill(main_window.order_id, main_window.selected_items) # 自动生成账单
|
||||
else:
|
||||
messagebox.showwarning("提示", "当前没有空闲的服务员,请稍候再试!")
|
||||
else:
|
||||
messagebox.showwarning("警告", "请选择至少一个菜品。")
|
||||
|
||||
tk.Button(order_window, text="确认点餐", command=confirm_order).pack()
|
||||
order_window.mainloop()
|
||||
|
||||
def generate_bill(order_id, selected_items):
|
||||
total_price = 0
|
||||
total_price_after_discount = 0
|
||||
for m_id in selected_items:
|
||||
cursor.execute("SELECT M_price FROM menu_items WHERE M_id = %s", (m_id,))
|
||||
price = cursor.fetchone()[0]
|
||||
cursor.execute("SELECT discount FROM discount_rules WHERE M_id = %s", (m_id,))
|
||||
discount = cursor.fetchone()
|
||||
if discount and discount[0] is not None:
|
||||
discounted_price = price * discount[0]
|
||||
else:
|
||||
discounted_price = price
|
||||
total_price += price
|
||||
total_price_after_discount += discounted_price
|
||||
|
||||
s_price = total_price
|
||||
s_priceafter = total_price_after_discount
|
||||
time = datetime.now()
|
||||
cursor.execute("INSERT INTO bills (O_id, S_price, S_priceafter, time) VALUES (%s, %s, %s, %s)",
|
||||
(order_id, s_price, s_priceafter, time))
|
||||
conn.commit()
|
||||
|
||||
bill_window = tk.Toplevel()
|
||||
bill_window.title("账单")
|
||||
tk.Label(bill_window, text=f"总价: {s_price}元", font=("Arial", 14)).pack(pady=10)
|
||||
tk.Label(bill_window, text=f"折后价: {s_priceafter}元", font=("Arial", 14)).pack(pady=10)
|
||||
|
||||
def confirm_bill():
|
||||
cursor.execute("UPDATE tables SET Cz_zt = '空闲' WHERE Cz_id = (SELECT Cz_id FROM orders WHERE O_id = %s)", (order_id,))
|
||||
conn.commit()
|
||||
messagebox.showinfo("提示", "账单已确认,感谢您的光临,桌子已重置为空闲。")
|
||||
bill_window.destroy()
|
||||
|
||||
tk.Button(bill_window, text="确认账单", command=confirm_bill).pack(pady=10)
|
||||
bill_window.mainloop()
|
||||
|
||||
def show_customers():
|
||||
def edit_customer(t_id):
|
||||
cursor.execute("SELECT * FROM customers WHERE T_id = %s", (t_id,))
|
||||
customer = cursor.fetchone()
|
||||
if customer:
|
||||
edit_window = tk.Toplevel()
|
||||
edit_window.title("编辑顾客信息")
|
||||
|
||||
tk.Label(edit_window, text="姓名:").pack()
|
||||
name_entry = tk.Entry(edit_window)
|
||||
name_entry.insert(0, customer[1])
|
||||
name_entry.pack()
|
||||
|
||||
tk.Label(edit_window, text="性别:").pack()
|
||||
sex_entry = tk.Entry(edit_window)
|
||||
sex_entry.insert(0, customer[2])
|
||||
sex_entry.pack()
|
||||
|
||||
tk.Label(edit_window, text="电话:").pack()
|
||||
phone_entry = tk.Entry(edit_window)
|
||||
phone_entry.insert(0, customer[3])
|
||||
phone_entry.pack()
|
||||
|
||||
def confirm_edit():
|
||||
t_name = name_entry.get()
|
||||
t_rsex = sex_entry.get()
|
||||
t_phone = phone_entry.get()
|
||||
if t_name and t_rsex and t_phone:
|
||||
cursor.execute("UPDATE customers SET T_name = %s, T_rsex = %s, T_phone = %s WHERE T_id = %s", (t_name, t_rsex, t_phone, t_id))
|
||||
conn.commit()
|
||||
edit_window.destroy()
|
||||
show_customers() # 刷新顾客信息
|
||||
else:
|
||||
messagebox.showwarning("警告", "请完整填写所有信息!")
|
||||
|
||||
tk.Button(edit_window, text="确认编辑", command=confirm_edit).pack(pady=10)
|
||||
|
||||
def delete_customer(t_id):
|
||||
if messagebox.askyesno("确认删除", "确定要删除该顾客信息吗?"):
|
||||
# 先删除 orders 表中与该顾客相关的所有记录
|
||||
cursor.execute("DELETE FROM orders WHERE T_id = %s", (t_id,))
|
||||
conn.commit()
|
||||
|
||||
# 再删除 customers 表中的记录
|
||||
cursor.execute("DELETE FROM customers WHERE T_id = %s", (t_id,))
|
||||
conn.commit()
|
||||
|
||||
show_customers() # 刷新顾客信息
|
||||
|
||||
cursor.execute("SELECT * FROM customers")
|
||||
customers = cursor.fetchall()
|
||||
if not customers:
|
||||
messagebox.showinfo("提示", "没有顾客信息。")
|
||||
return
|
||||
|
||||
customer_window = tk.Toplevel()
|
||||
customer_window.title("顾客信息")
|
||||
|
||||
for customer in customers:
|
||||
frame = tk.Frame(customer_window)
|
||||
frame.pack(pady=5, fill=tk.X)
|
||||
tk.Label(frame, text=f"ID: {customer[0]}, 姓名: {customer[1]}, 性别: {customer[2]}, 电话: {customer[3]}", width=40).pack(side=tk.LEFT)
|
||||
tk.Button(frame, text="编辑", command=lambda c=customer[0]: edit_customer(c), width=10).pack(side=tk.RIGHT, padx=5)
|
||||
tk.Button(frame, text="删除", command=lambda c=customer[0]: delete_customer(c), width=10).pack(side=tk.RIGHT, padx=5)
|
||||
|
||||
def show_workers():
|
||||
def edit_worker(w_id):
|
||||
cursor.execute("SELECT * FROM workers WHERE W_id = %s", (w_id,))
|
||||
worker = cursor.fetchone()
|
||||
if worker:
|
||||
edit_window = tk.Toplevel()
|
||||
edit_window.title("编辑员工信息")
|
||||
|
||||
tk.Label(edit_window, text="姓名:").pack()
|
||||
name_entry = tk.Entry(edit_window)
|
||||
name_entry.insert(0, worker[1])
|
||||
name_entry.pack()
|
||||
|
||||
tk.Label(edit_window, text="性别:").pack()
|
||||
sex_entry = tk.Entry(edit_window)
|
||||
sex_entry.insert(0, worker[2])
|
||||
sex_entry.pack()
|
||||
|
||||
tk.Label(edit_window, text="状态:").pack()
|
||||
status_entry = tk.Entry(edit_window)
|
||||
status_entry.insert(0, worker[3])
|
||||
status_entry.pack()
|
||||
|
||||
tk.Label(edit_window, text="工资:").pack()
|
||||
salary_entry = tk.Entry(edit_window)
|
||||
salary_entry.insert(0, worker[4])
|
||||
salary_entry.pack()
|
||||
|
||||
def confirm_edit():
|
||||
w_name = name_entry.get()
|
||||
w_sex = sex_entry.get()
|
||||
w_stat = status_entry.get()
|
||||
w_salary = salary_entry.get()
|
||||
if w_name and w_sex and w_stat and w_salary:
|
||||
cursor.execute("UPDATE workers SET W_name = %s, W_sex = %s, W_stat = %s, W_salary = %s WHERE W_id = %s", (w_name, w_sex, w_stat, w_salary, w_id))
|
||||
conn.commit()
|
||||
edit_window.destroy()
|
||||
show_workers() # 刷新员工信息
|
||||
else:
|
||||
messagebox.showwarning("警告", "请完整填写所有信息!")
|
||||
|
||||
tk.Button(edit_window, text="确认编辑", command=confirm_edit).pack(pady=10)
|
||||
|
||||
def delete_worker(w_id):
|
||||
if messagebox.askyesno("确认删除", "确定要删除该员工信息吗?"):
|
||||
# 先删除 orders 表中与该员工相关的所有记录
|
||||
cursor.execute("DELETE FROM orders WHERE W_id = %s", (w_id,))
|
||||
conn.commit()
|
||||
|
||||
# 再删除 workers 表中的记录
|
||||
cursor.execute("DELETE FROM workers WHERE W_id = %s", (w_id,))
|
||||
conn.commit()
|
||||
|
||||
show_workers() # 刷新员工信息
|
||||
|
||||
cursor.execute("SELECT * FROM workers")
|
||||
workers = cursor.fetchall()
|
||||
if not workers:
|
||||
messagebox.showinfo("提示", "没有员工信息。")
|
||||
return
|
||||
|
||||
worker_window = tk.Toplevel()
|
||||
worker_window.title("员工信息")
|
||||
|
||||
for worker in workers:
|
||||
frame = tk.Frame(worker_window)
|
||||
frame.pack(pady=5, fill=tk.X)
|
||||
tk.Label(frame, text=f"ID: {worker[0]}, 姓名: {worker[1]}, 性别: {worker[2]}, 状态: {worker[3]}, 工资: {worker[4]}", width=50).pack(side=tk.LEFT)
|
||||
tk.Button(frame, text="编辑", command=lambda w=worker[0]: edit_worker(w), width=10).pack(side=tk.RIGHT, padx=5)
|
||||
tk.Button(frame, text="删除", command=lambda w=worker[0]: delete_worker(w), width=10).pack(side=tk.RIGHT, padx=5)
|
||||
|
||||
def show_menu_items():
|
||||
def edit_menu_item(m_id):
|
||||
cursor.execute("SELECT * FROM menu_items WHERE M_id = %s", (m_id,))
|
||||
item = cursor.fetchone()
|
||||
if item:
|
||||
edit_window = tk.Toplevel()
|
||||
edit_window.title("编辑菜单项")
|
||||
|
||||
tk.Label(edit_window, text="名称:").pack()
|
||||
name_entry = tk.Entry(edit_window)
|
||||
name_entry.insert(0, item[1])
|
||||
name_entry.pack()
|
||||
|
||||
tk.Label(edit_window, text="类型:").pack()
|
||||
type_entry = tk.Entry(edit_window)
|
||||
type_entry.insert(0, item[2])
|
||||
type_entry.pack()
|
||||
|
||||
tk.Label(edit_window, text="价格:").pack()
|
||||
price_entry = tk.Entry(edit_window)
|
||||
price_entry.insert(0, item[3])
|
||||
price_entry.pack()
|
||||
|
||||
def confirm_edit():
|
||||
m_name = name_entry.get()
|
||||
m_type = type_entry.get()
|
||||
m_price = price_entry.get()
|
||||
if m_name and m_type and m_price:
|
||||
cursor.execute("UPDATE menu_items SET M_name = %s, M_type = %s, M_price = %s WHERE M_id = %s", (m_name, m_type, m_price, m_id))
|
||||
conn.commit()
|
||||
edit_window.destroy()
|
||||
show_menu_items() # 刷新菜单信息
|
||||
else:
|
||||
messagebox.showwarning("警告", "请完整填写所有信息!")
|
||||
|
||||
tk.Button(edit_window, text="确认编辑", command=confirm_edit).pack(pady=10)
|
||||
|
||||
def delete_menu_item(m_id):
|
||||
if messagebox.askyesno("确认删除", "确定要删除该菜单项吗?"):
|
||||
# 先删除 discount_rules 表中与该菜单项相关的所有记录
|
||||
cursor.execute("DELETE FROM discount_rules WHERE M_id = %s", (m_id,))
|
||||
conn.commit()
|
||||
|
||||
# 再删除 menu_items 表中的记录
|
||||
cursor.execute("DELETE FROM menu_items WHERE M_id = %s", (m_id,))
|
||||
conn.commit()
|
||||
|
||||
show_menu_items() # 刷新菜单信息
|
||||
|
||||
cursor.execute("SELECT * FROM menu_items")
|
||||
menu_items = cursor.fetchall()
|
||||
if not menu_items:
|
||||
messagebox.showinfo("提示", "没有菜单信息。")
|
||||
return
|
||||
|
||||
menu_window = tk.Toplevel()
|
||||
menu_window.title("菜单信息")
|
||||
|
||||
for item in menu_items:
|
||||
frame = tk.Frame(menu_window)
|
||||
frame.pack(pady=5, fill=tk.X)
|
||||
tk.Label(frame, text=f"ID: {item[0]}, 名称: {item[1]}, 类型: {item[2]}, 价格: {item[3]}", width=50).pack(side=tk.LEFT)
|
||||
tk.Button(frame, text="编辑", command=lambda i=item[0]: edit_menu_item(i), width=10).pack(side=tk.RIGHT, padx=5)
|
||||
tk.Button(frame, text="删除", command=lambda i=item[0]: delete_menu_item(i), width=10).pack(side=tk.RIGHT, padx=5)
|
||||
|
||||
def show_bills():
|
||||
def view_bill_details(b_id):
|
||||
cursor.execute("SELECT * FROM bills WHERE B_id = %s", (b_id,))
|
||||
bill = cursor.fetchone()
|
||||
if bill:
|
||||
detail_window = tk.Toplevel()
|
||||
detail_window.title("账单详情")
|
||||
tk.Label(detail_window, text=f"账单ID: {bill[0]}", font=("Arial", 14)).pack(pady=10)
|
||||
tk.Label(detail_window, text=f"订单ID: {bill[1]}", font=("Arial", 14)).pack(pady=10)
|
||||
tk.Label(detail_window, text=f"总价: {bill[2]} 元", font=("Arial", 14)).pack(pady=10)
|
||||
tk.Label(detail_window, text=f"折后价: {bill[3]} 元", font=("Arial", 14)).pack(pady=10)
|
||||
tk.Label(detail_window, text=f"时间: {bill[4]}", font=("Arial", 14)).pack(pady=10)
|
||||
|
||||
cursor.execute("SELECT * FROM bills")
|
||||
bills = cursor.fetchall()
|
||||
if not bills:
|
||||
messagebox.showinfo("提示", "没有账单信息。")
|
||||
return
|
||||
|
||||
bill_window = tk.Toplevel()
|
||||
bill_window.title("账单信息")
|
||||
|
||||
for bill in bills:
|
||||
frame = tk.Frame(bill_window)
|
||||
frame.pack(pady=5, fill=tk.X)
|
||||
tk.Label(frame, text=f"ID: {bill[0]}, 订单ID: {bill[1]}, 总价: {bill[2]}, 折后价: {bill[3]}, 时间: {bill[4]}", width=70).pack(side=tk.LEFT)
|
||||
tk.Button(frame, text="查看详情", command=lambda b=bill[0]: view_bill_details(b), width=10).pack(side=tk.RIGHT, padx=5)
|
||||
|
||||
def show_orders():
|
||||
def view_order_details(o_id):
|
||||
cursor.execute("SELECT * FROM orders WHERE O_id = %s", (o_id,))
|
||||
order = cursor.fetchone()
|
||||
if order:
|
||||
detail_window = tk.Toplevel()
|
||||
detail_window.title("订单详情")
|
||||
tk.Label(detail_window, text=f"订单ID: {order[0]}", font=("Arial", 14)).pack(pady=10)
|
||||
tk.Label(detail_window, text=f"顾客ID: {order[1]}", font=("Arial", 14)).pack(pady=10)
|
||||
tk.Label(detail_window, text=f"时间: {order[2]}", font=("Arial", 14)).pack(pady=10)
|
||||
tk.Label(detail_window, text=f"桌号: {order[3]}", font=("Arial", 14)).pack(pady=10)
|
||||
tk.Label(detail_window, text=f"服务员ID: {order[4]}", font=("Arial", 14)).pack(pady=10)
|
||||
tk.Label(detail_window, text=f"菜品: {order[5]}", font=("Arial", 14)).pack(pady=10)
|
||||
|
||||
def delete_order(o_id):
|
||||
if messagebox.askyesno("确认删除", "确定要删除该订单吗?"):
|
||||
cursor.execute("DELETE FROM orders WHERE O_id = %s", (o_id,))
|
||||
conn.commit()
|
||||
show_orders() # 刷新订单信息
|
||||
|
||||
cursor.execute("SELECT * FROM orders")
|
||||
orders = cursor.fetchall()
|
||||
if not orders:
|
||||
messagebox.showinfo("提示", "没有订单信息。")
|
||||
return
|
||||
|
||||
order_window = tk.Toplevel()
|
||||
order_window.title("订单信息")
|
||||
|
||||
for order in orders:
|
||||
frame = tk.Frame(order_window)
|
||||
frame.pack(pady=5, fill=tk.X)
|
||||
tk.Label(frame, text=f"ID: {order[0]}, 顾客ID: {order[1]}, 时间: {order[2]}, 桌号: {order[3]}, 服务员ID: {order[4]}, 菜品: {order[5]}", width=70).pack(side=tk.LEFT)
|
||||
tk.Button(frame, text="查看详情", command=lambda o=order[0]: view_order_details(o), width=10).pack(side=tk.RIGHT, padx=5)
|
||||
tk.Button(frame, text="删除", command=lambda o=order[0]: delete_order(o), width=10).pack(side=tk.RIGHT, padx=5)
|
||||
|
||||
def show_discounts():
|
||||
def edit_discount(m_id):
|
||||
cursor.execute("SELECT * FROM discount_rules WHERE M_id = %s", (m_id,))
|
||||
discount = cursor.fetchone()
|
||||
if discount:
|
||||
edit_window = tk.Toplevel()
|
||||
edit_window.title("编辑优惠规则")
|
||||
|
||||
tk.Label(edit_window, text="优惠:").pack()
|
||||
discount_entry = tk.Entry(edit_window)
|
||||
discount_entry.insert(0, discount[1])
|
||||
discount_entry.pack()
|
||||
|
||||
def confirm_edit():
|
||||
d_discount = discount_entry.get()
|
||||
if d_discount:
|
||||
cursor.execute("UPDATE discount_rules SET discount = %s WHERE M_id = %s", (d_discount, m_id))
|
||||
conn.commit()
|
||||
edit_window.destroy()
|
||||
show_discounts() # 刷新优惠信息
|
||||
else:
|
||||
messagebox.showwarning("警告", "请完整填写所有信息!")
|
||||
|
||||
tk.Button(edit_window, text="确认编辑", command=confirm_edit).pack(pady=10)
|
||||
|
||||
def delete_discount(m_id):
|
||||
if messagebox.askyesno("确认删除", "确定要删除该优惠规则吗?"):
|
||||
cursor.execute("DELETE FROM discount_rules WHERE M_id = %s", (m_id,))
|
||||
conn.commit()
|
||||
show_discounts() # 刷新优惠信息
|
||||
|
||||
cursor.execute("SELECT * FROM discount_rules")
|
||||
discounts = cursor.fetchall()
|
||||
if not discounts:
|
||||
messagebox.showinfo("提示", "没有优惠信息。")
|
||||
return
|
||||
|
||||
discount_window = tk.Toplevel()
|
||||
discount_window.title("优惠信息")
|
||||
|
||||
for discount in discounts:
|
||||
frame = tk.Frame(discount_window)
|
||||
frame.pack(pady=5, fill=tk.X)
|
||||
tk.Label(frame, text=f"ID: {discount[0]}, 优惠: {discount[1]}", width=30).pack(side=tk.LEFT)
|
||||
tk.Button(frame, text="编辑", command=lambda d=discount[0]: edit_discount(d), width=10).pack(side=tk.RIGHT, padx=5)
|
||||
tk.Button(frame, text="删除", command=lambda d=discount[0]: delete_discount(d), width=10).pack(side=tk.RIGHT, padx=5)
|
||||
|
||||
def admin_panel():
|
||||
admin_window = tk.Toplevel()
|
||||
admin_window.title("管理员面板")
|
||||
|
||||
tk.Button(admin_window, text="顾客信息", command=show_customers, width=20, height=2).pack(pady=10)
|
||||
tk.Button(admin_window, text="员工信息", command=show_workers, width=20, height=2).pack(pady=10)
|
||||
tk.Button(admin_window, text="菜单", command=show_menu_items, width=20, height=2).pack(pady=10)
|
||||
tk.Button(admin_window, text="账单", command=show_bills, width=20, height=2).pack(pady=10)
|
||||
tk.Button(admin_window, text="订单", command=show_orders, width=20, height=2).pack(pady=10)
|
||||
tk.Button(admin_window, text="优惠信息", command=show_discounts, width=20, height=2).pack(pady=10)
|
||||
|
||||
def main():
|
||||
global main_window
|
||||
main_window = tk.Tk()
|
||||
main_window.title("餐厅系统")
|
||||
|
||||
tk.Button(main_window, text="顾客", command=select_table, width=20, height=2).pack(pady=10)
|
||||
tk.Button(main_window, text="管理员", command=admin_panel, width=20, height=2).pack(pady=10)
|
||||
|
||||
main_window.mainloop()
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Reference in new issue