
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
二、设计数据库
数据库设计是进销存系统的核心部分之一。一个良好的数据库设计可以提高系统的性能和可维护性。首先,需要确定系统所需的主要表和字段。一般来说,进销存系统至少需要以下几个表:
- 商品表(Products):存储商品的基本信息,如ID、名称、描述、价格和库存数量。
- 供应商表(Suppliers):存储供应商的基本信息,如ID、名称、联系方式和地址。
- 客户表(Customers):存储客户的基本信息,如ID、名称、联系方式和地址。
- 订单表(Orders):存储订单的基本信息,如ID、客户ID、订单日期和总金额。
- 订单详情表(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来编写前端页面。前端页面通常包括以下几个部分:
以下是一个简单的示例代码,用于展示商品管理页面:
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.html和add_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;
阅读时间:9 分钟
浏览量:231次





























































《零代码开发知识图谱》
《零代码
新动能》案例集
《企业零代码系统搭建指南》








