用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() ``` 这个系统的界面比较简陋,但是功能基本上都实现了。需要注意的是,这个系统只是一个简单的示例,实际应用中还需要添加更多的功能和安全性检查。

相关推荐

最新推荐

recommend-type

Python制作一个仿QQ办公版的图形登录界面

主要介绍了Python制作一个仿QQ办公版的图形登录界面,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
recommend-type

Python3.7+tkinter实现查询界面功能

主要介绍了Python3.7+tkinter实现查询界面功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

用python+pyqt5手工编写一个含交互界面的简易的词法分析器

在本文我将用pyqt5写一个简单的交互界面,也修改了部分代码使得程序更加完整。 具体实验分析 本文全部源码见本文末尾,上次编写的不含交互界面的源码也可点此处下载 交互界面可以用QtDesigner快速编写,或者自己写,...
recommend-type

不到40行代码用Python实现一个简单的推荐系统

主要给大家介绍了如何利用不到40行python代码实现一个简单的推荐系统,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
recommend-type

完美解决PyQt5登录界面跳转主界面方法

 最后使用一个main函数,在这个函数中实例化登录窗口类,显示登录窗口 然后在登录窗口中实例化主窗口类,使用主窗口类.show()方法进行显示主窗口,并且关闭原来的登录窗口 二、将两个类分别写在两个Python文件夹...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

解释这行代码 c = ((double)rand() / RAND_MAX) * (a + b - fabs(a - b)) + fabs(a - b);

这行代码是用于生成 a 和 b 之间的随机数。首先,它使用 rand() 函数生成一个 [0,1) 之间的随机小数,然后将这个小数乘以 a、b 范围内的差值,再加上 a 和 b 中的较小值。这可以确保生成的随机数大于等于 a,小于等于 b,而且不会因为 a 和 b 之间的差距过大而导致难以生成足够多的随机数。最后,使用 fabs() 函数来确保计算结果是正数。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。