Python实现仓库管理系统

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技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • 如何在 Redis 中使用管道(pipeline)来提高性能?

    Redis 是一种高性能的键值存储数据库,支持多种数据结构,包括字符串、哈希表、列表、集合和有序集合等。Redis 的管道(pipeline)是一种批量操作 Redis 数据库的方式,可以显著提高 Redis 数据库的性能。下面是如何在 Redis 中使用管道来提高性能的完整使用攻略。 连接 Redis 数据库 在使用 Redis 的管道前,我们需要先连接 …

    python 2023年5月12日
    00
  • python使用dlib进行人脸检测和关键点的示例

    下面是详细的“python使用dlib进行人脸检测和关键点的示例”的攻略。 准备工作 为了使用dlib完成人脸检测和关键点检测,我们需要安装dlib、numpy和opencv-python等依赖库。可以使用如下命令进行安装: pip install dlib pip install numpy pip install opencv-python 示例1 我们…

    python 2023年6月6日
    00
  • 十个Python经典小游戏的代码合集

    首先,感谢您对“十个Python经典小游戏的代码合集”感兴趣。该合集收录了十个Python经典小游戏的完整源代码,您可以通过学习这些代码来提高自己的编程能力,为写出更好的Python程序打下基础。 在该合集中,每个游戏都有对应的.py文件,您可以直接打开并运行这些文件来玩一玩这些小游戏,或者阅读源代码并了解其中的实现细节。以下是详细的攻略: 下载和安装 您可…

    python 2023年5月19日
    00
  • python正则表达式匹配[]中间为任意字符的实例

    Python正则表达式匹配[]中间为任意字符的实例 在Python中,我们可以使用正则表达式进行字符串匹配和替换。在正则表达式中,[]表示字符集,可以匹配其中任意一个字符。本攻略将详细讲解如何使用Python正则表达式匹配[]中间为任意字符的实例,包括如何使用.和[]进行匹配、如何使用re模块进行匹配。 使用.进行匹配 在Python中,我们可以使用.进行匹…

    python 2023年5月14日
    00
  • Python高级编程之继承问题详解(super与mro)

    Python高级编程之继承问题详解(super与mro) 继承的重要性 在面向对象编程中,我们经常需要重用已有的代码。继承是以一个已有类为基础,创建新类的一种方式。新类会自动获得基础类的所有属性和方法,而无需重新编写。 继承中的问题 在Python中,继承有很多种方式,但不同的方式也会有不同的问题。在本文中,我们主要讨论两种常见的问题:继承冲突以及父类构造函…

    python 2023年5月13日
    00
  • 利用Python生成Excel炫酷图表

    当使用Python进行数据分析时,Excel是一个常见的工具。在Python中,我们可以使用Pandas和Openpyxl等库来读取,操作和生成Excel文件。本教程将介绍如何使用Python和Matplotlib等库在Excel中生成炫酷的图表。 准备工作 在开始之前,我们需要安装一些必要的库: Pandas:用于数据处理和读取Excel文件。 Openp…

    python 2023年5月13日
    00
  • Python编程实现蚁群算法详解

    Python编程实现蚁群算法详解 蚁群算法是一种基于蚂蚁觅食行为的启发式算法,它可以用于解决一些优化问题。在本文中,我们将详细讲解如何使用Python编程实现蚁群算法,包括蚁群法的基本原理、蚁群算法的应用场景以及蚁群算法的注意事项。 蚁群算法的基本原理 蚁群算法是一种基于蚂蚁觅食行为的启发式算法。在蚁群算法中,蚂蚁会在搜索空间中机移动,并留下信息素。其他蚂蚁…

    python 2023年5月13日
    00
  • Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】

    Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】 函数的定义 定义方式 在Python中定义一个函数使用关键字def,后跟函数名称和括号,其中括号内可以定义函数的参数。函数代码块以冒号起始,并且缩进。如下面的示例: def function_name(parameters): """docstrin…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部