用python代码写一个寄存酒系统,要有操作人员登录界面,存酒界面,取酒界面、存取酒明细查询
时间: 2023-06-20 11:05:11 浏览: 56
好的,这个寄存酒系统可以分为几个模块:
1. 操作人员登录界面
2. 存酒界面
3. 取酒界面
4. 存取酒明细查询
我们可以用 Python 的 Tkinter 模块来实现这个系统。下面是一个简单的实现:
```python
from tkinter import *
from tkinter import messagebox
# 存酒记录
storage_records = []
# 取酒记录
withdraw_records = []
# 操作人员账号和密码
user_data = {
'admin': '123456'
}
# 当前登录的操作人员账号
current_user = None
def login():
"""操作人员登录界面"""
global current_user
# 创建登录窗口
login_window = Tk()
login_window.title('登录')
# 创建用户名和密码输入框
Label(login_window, text='用户名:').grid(row=0, column=0)
user_entry = Entry(login_window)
user_entry.grid(row=0, column=1)
Label(login_window, text='密码:').grid(row=1, column=0)
password_entry = Entry(login_window, show='*')
password_entry.grid(row=1, column=1)
# 创建登录按钮
def on_login():
user = user_entry.get()
password = password_entry.get()
if user in user_data and user_data[user] == password:
current_user = user
login_window.destroy()
else:
messagebox.showerror('错误', '用户名或密码错误')
login_button = Button(login_window, text='登录', command=on_login)
login_button.grid(row=2, column=1)
login_window.mainloop()
def storage():
"""存酒界面"""
global storage_records
# 创建存酒窗口
storage_window = Tk()
storage_window.title('存酒')
# 创建酒名和数量输入框
Label(storage_window, text='酒名:').grid(row=0, column=0)
name_entry = Entry(storage_window)
name_entry.grid(row=0, column=1)
Label(storage_window, text='数量:').grid(row=1, column=0)
quantity_entry = Entry(storage_window)
quantity_entry.grid(row=1, column=1)
# 创建存酒按钮
def on_storage():
name = name_entry.get()
quantity = quantity_entry.get()
if not name:
messagebox.showerror('错误', '请填写酒名')
return
try:
quantity = int(quantity)
except ValueError:
messagebox.showerror('错误', '数量必须是数字')
return
storage_records.append((current_user, name, quantity))
messagebox.showinfo('成功', '存酒成功')
storage_window.destroy()
storage_button = Button(storage_window, text='存酒', command=on_storage)
storage_button.grid(row=2, column=1)
storage_window.mainloop()
def withdraw():
"""取酒界面"""
global withdraw_records
# 创建取酒窗口
withdraw_window = Tk()
withdraw_window.title('取酒')
# 创建酒名和数量输入框
Label(withdraw_window, text='酒名:').grid(row=0, column=0)
name_entry = Entry(withdraw_window)
name_entry.grid(row=0, column=1)
Label(withdraw_window, text='数量:').grid(row=1, column=0)
quantity_entry = Entry(withdraw_window)
quantity_entry.grid(row=1, column=1)
# 创建取酒按钮
def on_withdraw():
name = name_entry.get()
quantity = quantity_entry.get()
if not name:
messagebox.showerror('错误', '请填写酒名')
return
try:
quantity = int(quantity)
except ValueError:
messagebox.showerror('错误', '数量必须是数字')
return
# 检查库存是否足够
total_quantity = sum(r[2] for r in storage_records if r[1] == name)
if total_quantity < quantity:
messagebox.showerror('错误', '库存不足')
return
# 更新存酒记录
for i, r in enumerate(storage_records):
if r[1] == name:
if r[2] >= quantity:
storage_records[i] = (r[0], r[1], r[2] - quantity)
withdraw_records.append((current_user, name, quantity))
messagebox.showinfo('成功', '取酒成功')
withdraw_window.destroy()
return
else:
quantity -= r[2]
withdraw_records.append((current_user, name, r[2]))
storage_records[i] = (r[0], r[1], 0)
withdraw_button = Button(withdraw_window, text='取酒', command=on_withdraw)
withdraw_button.grid(row=2, column=1)
withdraw_window.mainloop()
def query():
"""存取酒明细查询"""
global storage_records, withdraw_records
# 创建查询窗口
query_window = Tk()
query_window.title('存取酒明细查询')
# 创建列表框
listbox = Listbox(query_window, width=50)
listbox.pack(side=LEFT, fill=BOTH)
# 创建滚动条
scrollbar = Scrollbar(query_window)
scrollbar.pack(side=RIGHT, fill=Y)
# 将列表框和滚动条关联起来
listbox.config(yscrollcommand=scrollbar.set)
scrollbar.config(command=listbox.yview)
# 显示存酒记录
listbox.insert(END, '存酒记录:')
for r in storage_records:
listbox.insert(END, f'{r[0]} 存了 {r[2]} 瓶 {r[1]}')
# 显示取酒记录
listbox.insert(END, '')
listbox.insert(END, '取酒记录:')
for r in withdraw_records:
listbox.insert(END, f'{r[0]} 取了 {r[2]} 瓶 {r[1]}')
query_window.mainloop()
# 主程序
if __name__ == '__main__':
# 先登录
login()
# 登录成功后显示主菜单
root = Tk()
root.title('寄存酒系统')
# 创建存酒按钮
storage_button = Button(root, text='存酒', command=storage)
storage_button.pack()
# 创建取酒按钮
withdraw_button = Button(root, text='取酒', command=withdraw)
withdraw_button.pack()
# 创建存取酒明细查询按钮
query_button = Button(root, text='存取酒明细查询', command=query)
query_button.pack()
root.mainloop()
```
这个系统的界面比较简陋,但是功能基本上都实现了。需要注意的是,这个系统只是一个简单的示例,实际应用中还需要添加更多的功能和安全性检查。