尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

基于Python的咖啡销售及数据分析系统设计实现

基于Python的咖啡销售及数据分析系统设计实现 温馨提示本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片1. 项目背景与目标随着咖啡消费市场的持续增长门店在日常经营中积累了大量的销售数据。如何高效管理商品、订单和库存并从这些数据中挖掘有价值的经营信息成为咖啡门店数字化转型的关键问题。本文设计并实现一个基于 Python 的咖啡销售及数据分析系统覆盖商品管理、订单管理、销售统计和可视化分析等核心功能帮助门店经营者更直观地掌握销售状况。系统的主要目标包括实现咖啡商品、订单和销售数据的统一管理。提供按时间、品类、门店等多维度的销售统计。通过可视化图表展示销售趋势和商品热度。为经营决策提供数据支撑提升管理效率。2. 系统总体设计系统采用分层架构设计整体分为数据层、业务逻辑层和展示层三个部分。数据层负责销售数据、商品信息和订单记录的存储与读取业务逻辑层封装商品管理、订单处理、统计分析和报表生成等核心功能展示层通过命令行交互和可视化图表向用户呈现结果。系统功能模块划分如下商品管理模块负责咖啡商品的增删改查包括名称、品类、价格和库存信息。订单管理模块支持创建订单、记录销售明细和计算订单金额。销售统计模块按日、周、月汇总销售额和销量支持多维度对比。数据分析模块分析热销商品、销售趋势和品类占比。可视化模块使用图表库生成销售趋势图和商品销量排行图。3. 开发环境与技术选型系统基于 Python 3.9 开发主要依赖以下第三方库Pandas用于销售数据的清洗、聚合和统计分析。Matplotlib用于绘制销售趋势图、柱状图和饼图。SQLite3作为轻量级数据库存储商品、订单和销售明细数据。Tkinter用于构建简单的图形化操作界面可选。开发工具推荐使用 PyCharm 或 VS Code操作系统支持 Windows、macOS 和 Linux。4. 数据库设计系统使用 SQLite 作为数据存储方案主要设计三张数据表商品表、订单表和订单明细表。商品表结构如下字段名类型说明idINTEGER商品编号主键nameTEXT商品名称categoryTEXT商品品类priceREAL销售单价stockINTEGER当前库存订单表结构如下字段名类型说明idINTEGER订单编号主键order_timeTEXT下单时间total_amountREAL订单总金额customer_nameTEXT客户名称订单明细表结构如下字段名类型说明idINTEGER明细编号主键order_idINTEGER所属订单编号product_idINTEGER商品编号quantityINTEGER购买数量subtotalREAL小计金额5. 核心功能实现本节给出系统核心模块的 Python 实现代码包括数据库初始化、商品管理、订单创建和销售统计。5.1 数据库初始化首先创建数据库连接和表结构代码如下import sqlite3 def init_db(): conn sqlite3.connect(coffee_shop.db) cursor conn.cursor() cursor.execute( CREATE TABLE IF NOT EXISTS products ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, category TEXT, price REAL NOT NULL, stock INTEGER DEFAULT 0 ) ) cursor.execute( CREATE TABLE IF NOT EXISTS orders ( id INTEGER PRIMARY KEY AUTOINCREMENT, order_time TEXT NOT NULL, total_amount REAL NOT NULL, customer_name TEXT ) ) cursor.execute( CREATE TABLE IF NOT EXISTS order_items ( id INTEGER PRIMARY KEY AUTOINCREMENT, order_id INTEGER NOT NULL, product_id INTEGER NOT NULL, quantity INTEGER NOT NULL, subtotal REAL NOT NULL ) ) conn.commit() conn.close() print(数据库初始化完成)5.2 商品管理模块商品管理模块实现商品的添加、查询和库存更新代码如下def add_product(name, category, price, stock): conn sqlite3.connect(coffee_shop.db) cursor conn.cursor() cursor.execute( INSERT INTO products (name, category, price, stock) VALUES (?, ?, ?, ?), (name, category, price, stock) ) conn.commit() conn.close() print(f商品 {name} 添加成功) def get_all_products(): conn sqlite3.connect(coffee_shop.db) cursor conn.cursor() cursor.execute(SELECT id, name, category, price, stock FROM products) rows cursor.fetchall() conn.close() return rows def update_stock(product_id, new_stock): conn sqlite3.connect(coffee_shop.db) cursor conn.cursor() cursor.execute( UPDATE products SET stock ? WHERE id ?, (new_stock, product_id) ) conn.commit() conn.close() print(库存更新成功)5.3 订单创建模块创建订单时需要同时写入订单表和订单明细表并扣减商品库存代码如下from datetime import datetime def create_order(customer_name, items): items 格式: [(product_id, quantity), ...] conn sqlite3.connect(coffee_shop.db) cursor conn.cursor() total_amount 0.0 order_items [] for product_id, quantity in items: cursor.execute(SELECT price, stock FROM products WHERE id ?, (product_id,)) row cursor.fetchone() if row is None: print(f商品 {product_id} 不存在) conn.close() return price, stock row if stock quantity: print(f商品 {product_id} 库存不足) conn.close() return subtotal price * quantity total_amount subtotal order_items.append((product_id, quantity, subtotal)) cursor.execute( UPDATE products SET stock stock - ? WHERE id ?, (quantity, product_id) ) order_time datetime.now().strftime(%Y-%m-%d %H:%M:%S) cursor.execute( INSERT INTO orders (order_time, total_amount, customer_name) VALUES (?, ?, ?), (order_time, total_amount, customer_name) ) order_id cursor.lastrowid for product_id, quantity, subtotal in order_items: cursor.execute( INSERT INTO order_items (order_id, product_id, quantity, subtotal) VALUES (?, ?, ?, ?), (order_id, product_id, quantity, subtotal) ) conn.commit() conn.close() print(f订单创建成功订单号{order_id}总金额{total_amount:.2f} 元)5.4 销售统计模块销售统计模块按日期汇总销售额和销量代码如下import pandas as pd def load_sales_data(): conn sqlite3.connect(coffee_shop.db) query SELECT o.order_time, o.total_amount, oi.product_id, oi.quantity, oi.subtotal, p.name AS product_name, p.category FROM orders o JOIN order_items oi ON o.id oi.order_id JOIN products p ON oi.product_id p.id df pd.read_sql_query(query, conn) conn.close() df[order_time] pd.to_datetime(df[order_time]) return df def daily_sales_summary(df): df[date] df[order_time].dt.date summary df.groupby(date).agg( total_sales(total_amount, sum), order_count(order_id, nunique) ).reset_index() return summary def category_sales_summary(df): summary df.groupby(category).agg( total_sales(subtotal, sum), total_quantity(quantity, sum) ).reset_index() return summary6. 数据可视化实现系统使用 Matplotlib 生成销售趋势图和商品销量排行图帮助经营者直观了解销售情况。6.1 销售趋势图绘制每日销售额折线图代码如下import matplotlib.pyplot as plt plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False def plot_sales_trend(df): summary daily_sales_summary(df) plt.figure(figsize(10, 5)) plt.plot(summary[date], summary[total_sales], markero, color#C0392B) plt.title(每日销售额趋势) plt.xlabel(日期) plt.ylabel(销售额元) plt.xticks(rotation45) plt.grid(True, linestyle--, alpha0.6) plt.tight_layout() plt.savefig(sales_trend.png) plt.show()6.2 商品销量排行图绘制销量前十商品的横向柱状图代码如下def plot_top_products(df, top_n10): product_sales df.groupby(product_name).agg( total_quantity(quantity, sum), total_sales(subtotal, sum) ).reset_index() top_products product_sales.sort_values(total_quantity, ascendingFalse).head(top_n) plt.figure(figsize(10, 6)) plt.barh(top_products[product_name], top_products[total_quantity], color#27AE60) plt.title(f销量前 {top_n} 商品) plt.xlabel(销量杯) plt.ylabel(商品名称) plt.gca().invert_yaxis() plt.tight_layout() plt.savefig(top_products.png) plt.show()6.3 品类占比饼图绘制不同品类销售额占比饼图代码如下def plot_category_pie(df): category_summary category_sales_summary(df) plt.figure(figsize(8, 8)) plt.pie( category_summary[total_sales], labelscategory_summary[category], autopct%1.1f%%, startangle90 ) plt.title(品类销售额占比) plt.axis(equal) plt.tight_layout() plt.savefig(category_pie.png) plt.show()7. 系统测试与运行效果为验证系统功能编写测试脚本依次执行数据库初始化、商品添加、订单创建和销售统计代码如下if __name__ __main__: init_db() add_product(美式咖啡, 咖啡, 18.0, 100) add_product(拿铁咖啡, 咖啡, 22.0, 80) add_product(卡布奇诺, 咖啡, 24.0, 60) add_product(抹茶拿铁, 茶饮, 20.0, 50) add_product(蓝莓芝士蛋糕, 甜点, 28.0, 30) create_order(张三, [(1, 2), (2, 1)]) create_order(李四, [(3, 1), (5, 2)]) create_order(王五, [(2, 3), (4, 1)]) df load_sales_data() print(每日销售汇总) print(daily_sales_summary(df)) print(品类销售汇总) print(category_sales_summary(df)) plot_sales_trend(df) plot_top_products(df) plot_category_pie(df)运行测试脚本后系统能够正确完成商品录入、订单创建、库存扣减和销售汇总并输出对应的可视化图表验证了系统各模块的功能完整性。8. 总结与展望本文设计并实现了一个基于 Python 的咖啡销售及数据分析系统覆盖商品管理、订单管理、销售统计和可视化分析等核心功能。系统采用 SQLite 存储数据结合 Pandas 进行数据聚合分析并使用 Matplotlib 生成直观的销售图表能够有效帮助门店经营者掌握销售动态。后续可以从以下方向继续完善系统增加用户登录和权限管理功能保障数据安全。引入 Web 前端框架提供更友好的操作界面。接入真实业务数据优化库存预警和采购建议。结合机器学习算法实现销售预测和智能定价。
返回列表