pychram写,一个有大的对话框窗口 库存管理软件,入库(记录时间),出库(记录时间),查询库存数量,查询入库出库记录,数据本地保存,输入物品名称可以下拉选择,数量默认为1
时间: 2023-08-14 13:02:10 浏览: 83
好的,这个库存管理软件可以使用Python的Tkinter库来实现GUI界面,使用SQLite数据库来保存数据。以下是大概的实现流程:
1. 创建GUI界面:使用Tkinter库创建一个主窗口,添加标签、文本框、按钮等控件,包括一个大的对话框窗口用于显示查询结果。
2. 创建SQLite数据库:使用Python内置的sqlite3模块来创建一个本地的SQLite数据库,用于保存物品名称、数量、入库时间和出库时间等数据。
3. 实现入库功能:当用户输入物品名称和数量后,点击“入库”按钮,程序将会将这些信息记录在数据库中,并更新库存数量。
4. 实现出库功能:当用户输入物品名称和数量后,点击“出库”按钮,程序将会将这些信息记录在数据库中,并更新库存数量。
5. 实现查询库存数量功能:当用户点击“查询库存数量”按钮,程序将会从数据库中读取当前库存数量,并在大的对话框窗口中显示。
6. 实现查询入库出库记录功能:当用户点击“查询入库出库记录”按钮,程序将会从数据库中读取所有的入库和出库记录,并在大的对话框窗口中显示。
下面是一个简单的代码示例,你可以根据需求进行修改和完善:
```python
import sqlite3
import tkinter as tk
# 创建GUI界面
root = tk.Tk()
root.title("库存管理软件")
# 创建SQLite数据库
conn = sqlite3.connect('inventory.db')
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS inventory
(id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
quantity INTEGER,
in_time TEXT,
out_time TEXT)''')
conn.commit()
# 入库函数
def add_inventory():
name = name_entry.get()
quantity = int(quantity_entry.get())
in_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
c.execute("INSERT INTO inventory (name, quantity, in_time) VALUES (?, ?, ?)",
(name, quantity, in_time))
conn.commit()
update_inventory()
# 出库函数
def remove_inventory():
name = name_entry.get()
quantity = -int(quantity_entry.get())
out_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
c.execute("INSERT INTO inventory (name, quantity, out_time) VALUES (?, ?, ?)",
(name, quantity, out_time))
conn.commit()
update_inventory()
# 查询库存数量函数
def check_quantity():
c.execute("SELECT sum(quantity) FROM inventory WHERE name=?", (name_entry.get(),))
quantity = c.fetchone()[0]
if quantity is None:
quantity = 0
result_text.config(state='normal')
result_text.delete('1.0', tk.END)
result_text.insert(tk.END, f"{name_entry.get()}的库存数量为{quantity}")
result_text.config(state='disabled')
# 查询入库出库记录函数
def check_records():
c.execute("SELECT * FROM inventory WHERE name=?", (name_entry.get(),))
records = c.fetchall()
result_text.config(state='normal')
result_text.delete('1.0', tk.END)
for record in records:
result_text.insert(tk.END, f"时间:{record[3] if record[3] else record[4]},数量:{record[2]}\n")
result_text.config(state='disabled')
# 更新库存数量函数
def update_inventory():
c.execute("SELECT sum(quantity) FROM inventory WHERE name=?", (name_entry.get(),))
quantity = c.fetchone()[0]
if quantity is None:
quantity = 0
quantity_label.config(text=f"库存数量:{quantity}")
# 创建界面控件
name_label = tk.Label(root, text="物品名称:")
name_label.grid(row=0, column=0, padx=10, pady=10)
name_entry = tk.Entry(root)
name_entry.grid(row=0, column=1, padx=10, pady=10)
name_entry.focus()
quantity_label = tk.Label(root, text="库存数量:0")
quantity_label.grid(row=1, column=0, padx=10, pady=10)
quantity_label = tk.Label(root, text="数量:")
quantity_label.grid(row=2, column=0, padx=10, pady=10)
quantity_entry = tk.Entry(root)
quantity_entry.grid(row=2, column=1, padx=10, pady=10)
quantity_entry.insert(tk.END, "1")
add_button = tk.Button(root, text="入库", command=add_inventory)
add_button.grid(row=3, column=0, padx=10, pady=10)
remove_button = tk.Button(root, text="出库", command=remove_inventory)
remove_button.grid(row=3, column=1, padx=10, pady=10)
check_quantity_button = tk.Button(root, text="查询库存数量", command=check_quantity)
check_quantity_button.grid(row=4, column=0, padx=10, pady=10)
check_records_button = tk.Button(root, text="查询入库出库记录", command=check_records)
check_records_button.grid(row=4, column=1, padx=10, pady=10)
result_text = tk.Text(root, state='disabled', width=50, height=10)
result_text.grid(row=5, column=0, columnspan=2, padx=10, pady=10)
root.mainloop()
# 关闭数据库连接
conn.close()
```
阅读全文