Python实现仓库管理系统的攻略
仓库管理系统是一个管理库存、仓储操作、销售等业务的系统,可以对商品进行入库、出库操作,并能够在出库时自动生成出货单等基础功能。Python作为一门高效的编程语言,可以方便地实现这种仓库管理系统。
系统功能设计
首先,对于仓库管理系统的功能设计,我们需要明确以下几个方面的内容:
- 商品管理功能:可以对货品进行分类、创建、修改、删除等操作。
- 入库管理功能:可以对货品进行入库、修改、删除等操作。
- 出库管理功能:可以对货品进行出库、修改、删除等操作,并能够自动生成出货单。
代码实现
建立数据库
我们可以使用SQLite作为数据库存储仓库管理系统中的数据。在建立数据库之前,需提前在系统中安装SQLite。创建数据库的代码示例如下:
import sqlite3
conn = sqlite3.connect('warehouse.db')
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE product(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
category TEXT
)
''')
cursor.execute('''
CREATE TABLE stock(
id INTEGER PRIMARY KEY AUTOINCREMENT,
product_id INTEGER,
qty INTEGER,
price REAL,
FOREIGN KEY(product_id) REFERENCES product(id)
)
''')
cursor.execute('''
CREATE TABLE shipment(
id INTEGER PRIMARY KEY AUTOINCREMENT,
stock_id INTEGER,
qty INTEGER,
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY(stock_id) REFERENCES stock(id)
)
''')
print('Database created successfully!')
商品管理功能
对于商品管理功能,我们可以使用Python中的Flask框架实现一个Web页面,用于实现对产品分类、创建、修改、删除等操作。在Flask代码中,我们需要通过模板引擎渲染HTML页面,HTML页面中可以使用表单、输入框等元素进行页面交互。示例代码如下:
@app.route('/product', methods=['GET', 'POST'])
def product():
if request.method == 'POST':
# 获取表单中的数据
name = request.form['name']
category = request.form['category']
# 插入数据到数据库
cursor.execute('INSERT INTO product(name, category) VALUES(?, ?)', (name, category))
# 查询数据库中的数据,并用模板渲染HTML页面
cursor.execute('SELECT * FROM product ORDER BY id DESC')
products = cursor.fetchall()
return render_template('product.html', products=products)
入库管理功能
对于入库管理功能,我们同样可以使用Flask框架添加一个Web页面,通过表格方式展示当前库存中的货品,提供新增、修改、删除等功能。在点击新增或修改按钮时,会弹出一个弹窗进行数据录入和编辑操作,并将新增的或编辑的数据保存至数据库中。示例代码如下:
@app.route('/stock', methods=['GET', 'POST'])
def stock():
if request.method == 'POST':
if request.form['action'] == 'create':
# 获取表单数据、并将数据插入数据库
product_id = request.form['product_id']
qty = request.form['qty']
price = request.form['price']
cursor.execute('INSERT INTO stock(product_id, qty, price) VALUES(?, ?, ?)',
(product_id, qty, price))
if request.form['action'] == 'update':
# 获取表单数据、并将数据更新到数据库
stock_id = request.form['stock_id']
qty = request.form['qty']
price = request.form['price']
cursor.execute('UPDATE stock SET qty=?, price=? WHERE id=?',
(qty, price, stock_id))
# 查询数据库中的数据,并用模板渲染HTML页面
cursor.execute('SELECT * FROM stock JOIN product ON stock.product_id=product.id ORDER BY stock.id DESC')
stocks = cursor.fetchall()
cursor.execute('SELECT id, name FROM product')
products = cursor.fetchall()
return render_template('stock.html', stocks=stocks, products=products)
出库管理功能
对于出库管理功能,需要在入库管理功能的基础上添加自动生成出货单功能。在实现该功能时,可以将出库功能与入库功能合并在一起,即在每次出库时,系统自动减少库存数量,并生成一个出货单。示例代码如下:
@app.route('/shipment', methods=['GET', 'POST'])
def shipment():
if request.method == 'POST':
# 获取表单数据,并将数据插入数据库
stock_id = request.form['stock_id']
qty = request.form['qty']
cursor.execute('INSERT INTO shipment(stock_id, qty) VALUES(?, ?)', (stock_id, qty))
# 更新库存数量
cursor.execute('UPDATE stock SET qty=qty-? WHERE id=?', (qty, stock_id))
# 查询数据库中的数据,并用模板渲染HTML页面
cursor.execute('SELECT * FROM shipment JOIN stock ON shipment.stock_id=stock.id '
'JOIN product ON stock.product_id=product.id '
'ORDER BY shipment.id DESC')
shipments = cursor.fetchall()
cursor.execute('SELECT id, name FROM product')
products = cursor.fetchall()
return render_template('shipment.html', shipments=shipments, products=products)
小结
通过上述代码示例,我们可以发现,使用Python编写仓库管理系统有如下优点:
- Python生态系统丰富,拥有丰富的第三方库(如Flask、SQLite等),可以大大提升开发效率。
- Python语法简洁易懂,易于维护和修改。
- Python支持多线程、异步等特性,可以应对高并发系统的需求。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现仓库管理系统 - Python技术站