python简单进销存系统怎么做

python简单进销存系统怎么做

Python简单进销存系统的制作方法包括:搭建环境、设计数据库、编写前端、实现CRUD功能、数据分析报表。搭建环境是第一步,它包括安装Python和必要的库,如Flask、SQLAlchemy等。

搭建环境是制作进销存系统的基础步骤。你需要安装Python,并确保你的开发环境中有必要的库,如Flask用于构建Web应用,SQLAlchemy用于数据库操作,Pandas用于数据处理和分析。具体步骤如下:首先,下载并安装Python,然后使用pip安装所需库。以下是一些关键命令:

# 安装 Flask

pip install Flask

安装 SQLAlchemy

pip install SQLAlchemy

安装 Pandas

pip install pandas

完成安装后,你就可以开始设计数据库和编写代码了。

一、搭建环境

搭建环境是制作任何软件系统的第一步。对于一个简单的进销存系统,首先需要安装Python,这是必不可少的编程语言。接下来,安装几个必需的库:Flask、SQLAlchemy和Pandas。Flask是一个轻量级的Web框架,适合快速开发和部署。SQLAlchemy是一个强大的ORM库,可以方便地进行数据库操作。Pandas是一个用于数据处理和分析的库。在你的开发环境中使用以下命令安装这些库:

# 安装 Flask

pip install Flask

安装 SQLAlchemy

pip install SQLAlchemy

安装 Pandas

pip install pandas

完成这些安装后,可以创建一个虚拟环境,以便更好地管理依赖项和项目环境。虚拟环境可以通过以下命令创建:

# 创建虚拟环境

python -m venv venv

激活虚拟环境 (Windows)

venv\Scripts\activate

激活虚拟环境 (Mac/Linux)

source venv/bin/activate

二、设计数据库

数据库设计是进销存系统的核心部分之一。一个良好的数据库设计可以提高系统的性能和可维护性。首先,需要确定系统所需的主要表和字段。一般来说,进销存系统至少需要以下几个表:

  1. 商品表(Products):存储商品的基本信息,如ID、名称、描述、价格和库存数量。
  2. 供应商表(Suppliers):存储供应商的基本信息,如ID、名称、联系方式和地址。
  3. 客户表(Customers):存储客户的基本信息,如ID、名称、联系方式和地址。
  4. 订单表(Orders):存储订单的基本信息,如ID、客户ID、订单日期和总金额。
  5. 订单详情表(OrderDetails):存储订单的详细信息,如订单ID、商品ID、数量和单价。

使用SQLAlchemy可以很方便地定义这些表和字段。以下是一个简单的示例代码:

from flask import Flask

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///inventory.db'

db = SQLAlchemy(app)

class Product(db.Model):

id = db.Column(db.Integer, primary_key=True)

name = db.Column(db.String(100), nullable=False)

description = db.Column(db.String(200), nullable=True)

price = db.Column(db.Float, nullable=False)

stock = db.Column(db.Integer, nullable=False)

class Supplier(db.Model):

id = db.Column(db.Integer, primary_key=True)

name = db.Column(db.String(100), nullable=False)

contact = db.Column(db.String(100), nullable=True)

address = db.Column(db.String(200), nullable=True)

class Customer(db.Model):

id = db.Column(db.Integer, primary_key=True)

name = db.Column(db.String(100), nullable=False)

contact = db.Column(db.String(100), nullable=True)

address = db.Column(db.String(200), nullable=True)

class Order(db.Model):

id = db.Column(db.Integer, primary_key=True)

customer_id = db.Column(db.Integer, db.ForeignKey('customer.id'), nullable=False)

date = db.Column(db.DateTime, nullable=False)

total_amount = db.Column(db.Float, nullable=False)

class OrderDetail(db.Model):

id = db.Column(db.Integer, primary_key=True)

order_id = db.Column(db.Integer, db.ForeignKey('order.id'), nullable=False)

product_id = db.Column(db.Integer, db.ForeignKey('product.id'), nullable=False)

quantity = db.Column(db.Integer, nullable=False)

unit_price = db.Column(db.Float, nullable=False)

三、编写前端

前端是用户与系统交互的窗口。在这个简单的进销存系统中,可以使用Flask提供的模板引擎Jinja2来编写前端页面。前端页面通常包括以下几个部分:

  1. 商品管理页面:用于添加、删除和更新商品信息。
  2. 订单管理页面:用于查看和管理订单。
  3. 库存管理页面:用于查看和管理库存。

以下是一个简单的示例代码,用于展示商品管理页面:

from flask import render_template, request, redirect, url_for

@app.route('/products')

def products():

products = Product.query.all()

return render_template('products.html', products=products)

@app.route('/add_product', methods=['GET', 'POST'])

def add_product():

if request.method == 'POST':

name = request.form['name']

description = request.form['description']

price = float(request.form['price'])

stock = int(request.form['stock'])

new_product = Product(name=name, description=description, price=price, stock=stock)

db.session.add(new_product)

db.session.commit()

return redirect(url_for('products'))

return render_template('add_product.html')

templates目录下创建两个HTML文件products.htmladd_product.html,分别用于展示商品列表和添加商品:

<!-- products.html -->

<!DOCTYPE html>

<html>

<head>

<title>Products</title>

</head>

<body>

<h1>Products</h1>

<table>

<tr>

<th>Name</th>

<th>Description</th>

<th>Price</th>

<th>Stock</th>

</tr>

{% for product in products %}

<tr>

<td>{{ product.name }}</td>

<td>{{ product.description }}</td>

<td>{{ product.price }}</td>

<td>{{ product.stock }}</td>

</tr>

{% endfor %}

</table>

<a href="{{ url_for('add_product') }}">Add Product</a>

</body>

</html>

<!-- add_product.html -->

<!DOCTYPE html>

<html>

<head>

<title>Add Product</title>

</head>

<body>

<h1>Add Product</h1>

<form method="POST">

<label>Name:</label>

<input type="text" name="name" required><br>

<label>Description:</label>

<input type="text" name="description"><br>

<label>Price:</label>

<input type="text" name="price" required><br>

<label>Stock:</label>

<input type="text" name="stock" required><br>

<input type="submit" value="Add">

</form>

</body>

</html>

四、实现CRUD功能

CRUD(Create, Read, Update, Delete)功能是任何数据驱动应用的核心。为了实现CRUD功能,需要为每个主要的数据实体(如商品、订单、客户)提供增、删、改、查的操作。以下是一些示例代码,展示如何实现这些功能:

创建(Create)

@app.route('/add_product', methods=['GET', 'POST'])

def add_product():

if request.method == 'POST':

name = request.form['name']

description = request.form['description']

price = float(request.form['price'])

stock = int(request.form['stock'])

new_product = Product(name=name, description=description, price=price, stock=stock)

db.session.add(new_product)

db.session.commit()

return redirect(url_for('products'))

return render_template('add_product.html')

读取(Read)

@app.route('/products')

def products():

products = Product.query.all()

return render_template('products.html', products=products)

更新(Update)

@app.route('/update_product/<int:id>', methods=['GET', 'POST'])

def update_product(id):

product = Product.query.get_or_404(id)

if request.method == 'POST':

product.name = request.form['name']

product.description = request.form['description']

product.price = float(request.form['price'])

product.stock = int(request.form['stock'])

db.session.commit()

return redirect(url_for('products'))

return render_template('update_product.html', product=product)

删除(Delete)

@app.route('/delete_product/<int:id>')

def delete_product(id):

product = Product.query.get_or_404(id)

db.session.delete(product)

db.session.commit()

return redirect(url_for('products'))

五、数据分析报表

数据分析和报表是进销存系统的重要功能之一,可以帮助用户更好地理解和管理库存、销售和采购情况。使用Pandas库,可以很方便地进行数据分析和生成报表。以下是一些示例代码,展示如何使用Pandas进行数据分析:

导入数据

import pandas as pd

从数据库导入数据

products = pd.read_sql_table('product', 'sqlite:///inventory.db')

orders = pd.read_sql_table('order', 'sqlite:///inventory.db')

order_details = pd.read_sql_table('order_detail', 'sqlite:///inventory.db')

库存分析

# 计算总库存

total_stock = products['stock'].sum()

print(f"Total Stock: {total_stock}")

计算每个商品的库存价值

products['stock_value'] = products['price'] * products['stock']

print(products[['name', 'stock_value']])

销售分析

# 计算总销售额

order_details['total_price'] = order_details['quantity'] * order_details['unit_price']

total_sales = order_details['total_price'].sum()

print(f"Total Sales: {total_sales}")

计算每个商品的销售额

sales_by_product = order_details.groupby('product_id')['total_price'].sum()

sales_by_product = sales_by_product.reset_index()

sales_by_product = sales_by_product.merge(products[['id', 'name']], left_on='product_id', right_on='id')

print(sales_by_product[['name', 'total_price']])

通过以上步骤,你可以使用Python和Flask快速搭建一个简单的进销存系统,并实现基础的CRUD功能和数据分析报表。希望这些内容对你有所帮助。

简道云官网: https://s.fanruan.com/gwsdp;

相关问答FAQs:

Python简单进销存系统怎么做?

创建一个简单的进销存系统是一个非常好的练习项目,它可以帮助你熟悉Python编程、数据库操作和用户界面设计。以下是一个基本的步骤和实现方法。

1. 确定系统需求

在开始编码之前,需要明确系统的基本功能。一个简单的进销存系统通常包括以下几个模块:

  • 商品管理:添加、删除、修改商品信息。
  • 库存管理:查看库存情况,更新库存数量。
  • 销售管理:记录销售交易,更新库存。
  • 报表功能:生成销售报表、库存报表。

2. 选择技术栈

在实现进销存系统时,可以使用以下技术栈:

  • 编程语言:Python
  • 数据库:SQLite(轻量级,适合小型项目)
  • 用户界面:可以选择命令行界面(CLI)或图形用户界面(GUI),如Tkinter。

3. 数据库设计

创建一个SQLite数据库来存储商品信息和交易记录。可以设计以下几个表:

  • Product表

    • id(主键,自增)
    • name(商品名称)
    • price(商品单价)
    • quantity(库存数量)
  • Transaction表

    • id(主键,自增)
    • product_id(外键,关联Product表)
    • quantity(销售数量)
    • date(交易日期)

4. 编写代码

以下是一个简单的Python代码示例,展示了如何实现上述功能。

import sqlite3
from datetime import datetime

# 创建或连接到数据库
conn = sqlite3.connect('inventory.db')
cursor = conn.cursor()

# 创建Product表
cursor.execute('''
CREATE TABLE IF NOT EXISTS Product (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    price REAL NOT NULL,
    quantity INTEGER NOT NULL
)
''')

# 创建Transaction表
cursor.execute('''
CREATE TABLE IF NOT EXISTS Transaction (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    product_id INTEGER NOT NULL,
    quantity INTEGER NOT NULL,
    date TEXT NOT NULL,
    FOREIGN KEY (product_id) REFERENCES Product(id)
)
''')

# 添加商品
def add_product(name, price, quantity):
    cursor.execute('INSERT INTO Product (name, price, quantity) VALUES (?, ?, ?)', (name, price, quantity))
    conn.commit()
    print("商品添加成功!")

# 查看库存
def view_inventory():
    cursor.execute('SELECT * FROM Product')
    products = cursor.fetchall()
    for product in products:
        print(f"ID: {product[0]}, 名称: {product[1]}, 价格: {product[2]}, 库存: {product[3]}")

# 记录销售
def record_sale(product_id, quantity):
    cursor.execute('SELECT quantity FROM Product WHERE id = ?', (product_id,))
    product = cursor.fetchone()
    if product and product[0] >= quantity:
        cursor.execute('UPDATE Product SET quantity = quantity - ? WHERE id = ?', (quantity, product_id))
        cursor.execute('INSERT INTO Transaction (product_id, quantity, date) VALUES (?, ?, ?)',
                       (product_id, quantity, datetime.now()))
        conn.commit()
        print("销售记录成功!")
    else:
        print("库存不足!")

# 示例用法
add_product('商品A', 10.0, 100)
add_product('商品B', 20.0, 50)
view_inventory()
record_sale(1, 10)
view_inventory()

# 关闭数据库连接
conn.close()

5. 用户界面设计

可以使用Tkinter来创建一个简单的图形用户界面,使用户能够更方便地进行操作。

import tkinter as tk
from tkinter import messagebox

def add_product_gui():
    name = entry_name.get()
    price = float(entry_price.get())
    quantity = int(entry_quantity.get())
    add_product(name, price, quantity)
    messagebox.showinfo("信息", "商品添加成功")

root = tk.Tk()
root.title("进销存系统")

tk.Label(root, text="商品名称").grid(row=0)
tk.Label(root, text="商品价格").grid(row=1)
tk.Label(root, text="商品库存").grid(row=2)

entry_name = tk.Entry(root)
entry_price = tk.Entry(root)
entry_quantity = tk.Entry(root)

entry_name.grid(row=0, column=1)
entry_price.grid(row=1, column=1)
entry_quantity.grid(row=2, column=1)

tk.Button(root, text='添加商品', command=add_product_gui).grid(row=3, column=1)

root.mainloop()

6. 测试系统

在完成基本功能的开发后,需要进行全面的测试。测试内容包括:

  • 添加商品的功能是否正常。
  • 库存更新是否准确。
  • 销售记录是否能正确记录。
  • 错误处理是否合理(如库存不足时的提示)。

7. 部署与维护

完成测试后,可以将系统部署到本地或服务器上。根据用户反馈,定期对系统进行维护和升级。

通过以上步骤,基本的进销存系统就完成了。这个系统可以根据需求不断扩展,比如增加用户管理、权限控制、数据导出等功能。

结论

创建一个简单的进销存系统不仅能够提升你的编程技能,还能帮助你理解实际业务流程。随着项目的逐步完善,你可以尝试引入更复杂的功能,进一步提升系统的性能与用户体验。

推荐100+企业管理系统模板免费使用>>>无需下载,在线安装:
地址: https://s.fanruan.com/7wtn5;

免责申明:本文内容通过AI工具匹配关键字智能整合而成,仅供参考,帆软及简道云不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系marketing@jiandaoyun.com进行反馈,简道云收到您的反馈后将及时处理并反馈。
(0)
简道云——国内领先的企业级零代码应用搭建平台
niu, seanniu, sean

发表回复

登录后才能评论

丰富模板,开箱即用

更多模板

应用搭建,如此

国内领先的企业级零代码应用搭建平台

已为你匹配合适的管理模板
请选择您的管理需求

19年 数字化服务经验

2200w 平台注册用户

205w 企业组织使用

NO.1 IDC认证零代码软件市场占有率

丰富模板,安装即用

200+应用模板,既提供标准化管理方案,也支持零代码个性化修改

  • rich-template
    CRM客户管理
    • 客户数据360°管理
    • 销售全过程精细化管控
    • 销售各环节数据快速分析
    • 销售业务规则灵活设置
  • rich-template
    进销存管理
    • 销售订单全流程管理
    • 实时动态库存管理
    • 采购精细化线上管理
    • 业财一体,收支对账清晰
  • rich-template
    ERP管理
    • 提高“采销存产财”业务效率
    • 生产计划、进度全程管控
    • 业务数据灵活分析、展示
    • 个性化需求自定义修改
  • rich-template
    项目管理
    • 集中管理项目信息
    • 灵活创建项目计划
    • 多层级任务管理,高效协同
    • 可视化项目进度追踪与分析
  • rich-template
    HRM人事管理
    • 一体化HR管理,数据全打通
    • 员工档案规范化、无纸化
    • “入转调离”线上审批、管理
    • 考勤、薪酬、绩效数据清晰
  • rich-template
    行政OA管理
    • 常见行政管理模块全覆盖
    • 多功能模块灵活组合
    • 自定义审批流程
    • 无纸化线上办公
  • rich-template
    200+管理模板
立刻体验模板

低成本、快速地搭建企业级管理应用

通过功能组合,灵活实现数据在不同场景下的:采集-流转-处理-分析应用

    • 表单个性化

      通过对字段拖拉拽或导入Excel表,快速生成一张表单,灵活进行数据采集、填报与存档

      查看详情
      产品功能,表单设计,增删改,信息收集与管理

      通过对字段拖拉拽或导入Excel表,快速生成一张表单,灵活进行数据采集、填报与存档

      免费试用
    • 流程自动化

      对录入的数据设置流程规则实现数据的流转、审批、分配、提醒……

      查看详情
      产品功能,流程设计,任务流转,审批流

      对录入的数据设置流程规则实现数据的流转、审批、分配、提醒……

      免费试用
    • 数据可视化

      选择你想可视化的数据表,并匹配对应的图表类型即可快速生成一张报表/可视化看板

      产品功能,数据报表可视化,权限管理

      选择你想可视化的数据表,并匹配对应的图表类型即可快速生成一张报表/可视化看板

      免费试用
    • 数据全打通

      在不同数据表之间进行 数据关联与数据加减乘除计算,实时、灵活地分析处理数据

      查看详情
      产品功能,数据处理,分组汇总

      在不同数据表之间进行 数据关联与数据加减乘除计算,实时、灵活地分析处理数据

      免费试用
    • 智能数据流

      根据数据变化状态、时间等规则,设置事项自动触发流程,告别重复手动操作

      查看详情
      产品功能,智能工作,自动流程

      根据数据变化状态、时间等规则,设置事项自动触发流程,告别重复手动操作

      免费试用
    • 跨组织协作

      邀请企业外的人员和组织加入企业内部业务协作流程,灵活设置权限,过程、数据可查可控

      查看详情
      产品功能,上下游协作,跨组织沟通

      邀请企业外的人员和组织加入企业内部业务协作流程,灵活设置权限,过程、数据可查可控

      免费试用
    • 多平台使用

      手机电脑不受限,随时随地使用;不论微信、企业微信、钉钉还是飞书,均可深度集成;

      查看详情
      多端使用,电脑手机,OA平台

      手机电脑不受限,随时随地使用;不论微信、企业微信、钉钉还是飞书,均可深度集成;

      免费试用

    领先企业,真实声音

    完美适配,各行各业

    客户案例

    海量资料,免费下载

    国内领先的零代码数字化智库,免费提供海量白皮书、图谱、报告等下载

    更多资料

    大中小企业,
    都有适合的数字化方案

    • gartner认证,LCAP,中国代表厂商

      中国低代码和零代码软件市场追踪报告
      2023H1零代码软件市场第一

    • gartner认证,CADP,中国代表厂商

      公民开发平台(CADP)
      中国代表厂商

    • gartner认证,CADP,中国代表厂商

      低代码应用开发平台(CADP)
      中国代表厂商

    • forrester认证,中国低代码,入选厂商

      中国低代码开发领域
      入选厂商

    • 互联网周刊,排名第一

      中国低代码厂商
      排行榜第一

    • gartner认证,CADP,中国代表厂商

      国家信息系统安全
      三级等保认证

    • gartner认证,CADP,中国代表厂商

      信息安全管理体系
      ISO27001认证