基于Python 宠物用品库存管理系统开发

Python 宠物用品库存管理系统开发

在这里插入图片描述

一、项目背景与需求分析

在宠物行业蓬勃发展的当下,宠物用品店的商品种类繁多,库存管理变得尤为重要。为了提高管理效率、减少人为错误,我们可以开发一个宠物用品库存管理系统。该系统需要具备商品信息管理、库存数量管理、进货与销售记录等功能,同时要能够方便地查询和统计数据。

二、系统设计

2.1 功能模块设计

  • 商品信息管理:包括商品的添加、删除、修改和查询。
  • 库存管理:实时更新商品的库存数量,处理进货和销售操作。
  • 记录管理:记录每次进货和销售的详细信息,包括日期、商品名称、数量、价格等。
  • 统计查询:可以根据不同条件查询商品信息、库存数量和交易记录。

2.2 数据结构设计

  • 商品类(Product:包含商品的基本信息,如商品 ID、名称、价格、库存数量等。
  • 交易记录类(TransactionRecord:记录每次进货或销售的详细信息,包括交易 ID、日期、商品 ID、数量、交易类型(进货或销售)等。

三、代码实现

import datetime

# 商品类
class Product:
    def __init__(self, product_id, name, price, stock):
        self.product_id = product_id
        self.name = name
        self.price = price
        self.stock = stock

    def update_stock(self, quantity):
        self.stock += quantity

# 交易记录类
class TransactionRecord:
    def __init__(self, transaction_id, date, product_id, quantity, transaction_type):
        self.transaction_id = transaction_id
        self.date = date
        self.product_id = product_id
        self.quantity = quantity
        self.transaction_type = transaction_type

# 宠物用品库存管理系统类
class PetSupplyInventorySystem:
    def __init__(self):
        self.products = {}
        self.transactions = {}
        self.next_product_id = 1
        self.next_transaction_id = 1

    # 添加商品
    def add_product(self, name, price, stock):
        product_id = self.next_product_id
        product = Product(product_id, name, price, stock)
        self.products[product_id] = product
        self.next_product_id += 1
        print(f"商品 {name} 已成功添加,商品 ID 为 {product_id}。")

    # 删除商品
    def delete_product(self, product_id):
        if product_id in self.products:
            del self.products[product_id]
            print(f"商品 ID 为 {product_id} 的商品已成功删除。")
        else:
            print(f"未找到商品 ID 为 {product_id} 的商品。")

    # 修改商品信息
    def update_product(self, product_id, name=None, price=None, stock=None):
        if product_id in self.products:
            product = self.products[product_id]
            if name:
                product.name = name
            if price:
                product.price = price
            if stock:
                product.stock = stock
            print(f"商品 ID 为 {product_id} 的商品信息已更新。")
        else:
            print(f"未找到商品 ID 为 {product_id} 的商品。")

    # 查询商品信息
    def query_product(self, product_id):
        if product_id in self.products:
            product = self.products[product_id]
            print(f"商品 ID: {product.product_id}")
            print(f"商品名称: {product.name}")
            print(f"商品价格: {product.price}")
            print(f"商品库存: {product.stock}")
        else:
            print(f"未找到商品 ID 为 {product_id} 的商品。")

    # 进货操作
    def purchase(self, product_id, quantity):
        if product_id in self.products:
            product = self.products[product_id]
            product.update_stock(quantity)
            transaction_id = self.next_transaction_id
            date = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            transaction = TransactionRecord(transaction_id, date, product_id, quantity, "进货")
            self.transactions[transaction_id] = transaction
            self.next_transaction_id += 1
            print(f"商品 ID 为 {product_id} 的商品进货 {quantity} 件成功。")
        else:
            print(f"未找到商品 ID 为 {product_id} 的商品。")

    # 销售操作
    def sell(self, product_id, quantity):
        if product_id in self.products:
            product = self.products[product_id]
            if product.stock >= quantity:
                product.update_stock(-quantity)
                transaction_id = self.next_transaction_id
                date = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                transaction = TransactionRecord(transaction_id, date, product_id, quantity, "销售")
                self.transactions[transaction_id] = transaction
                self.next_transaction_id += 1
                print(f"商品 ID 为 {product_id} 的商品销售 {quantity} 件成功。")
            else:
                print(f"商品 ID 为 {product_id} 的商品库存不足,当前库存为 {product.stock} 件。")
        else:
            print(f"未找到商品 ID 为 {product_id} 的商品。")

    # 查询交易记录
    def query_transaction(self, transaction_id):
        if transaction_id in self.transactions:
            transaction = self.transactions[transaction_id]
            print(f"交易 ID: {transaction.transaction_id}")
            print(f"交易日期: {transaction.date}")
            print(f"商品 ID: {transaction.product_id}")
            print(f"交易数量: {transaction.quantity}")
            print(f"交易类型: {transaction.transaction_type}")
        else:
            print(f"未找到交易 ID 为 {transaction_id} 的交易记录。")

# 测试代码
if __name__ == "__main__":
    system = PetSupplyInventorySystem()

    # 添加商品
    system.add_product("宠物狗粮", 50, 100)
    system.add_product("宠物猫砂", 30, 200)

    # 进货操作
    system.purchase(1, 50)

    # 销售操作
    system.sell(1, 20)

    # 查询商品信息
    system.query_product(1)

    # 查询交易记录
    system.query_transaction(1)

四、代码解释

4.1 Product

该类表示商品,包含商品的基本信息,如商品 ID、名称、价格和库存数量。update_stock 方法用于更新商品的库存数量。

4.2 TransactionRecord

该类表示交易记录,包含交易 ID、日期、商品 ID、数量和交易类型。

4.3 PetSupplyInventorySystem

该类是宠物用品库存管理系统的核心类,包含以下主要方法:

  • add_product:添加新商品。
  • delete_product:删除指定 ID 的商品。
  • update_product:修改指定 ID 商品的信息。
  • query_product:查询指定 ID 商品的信息。
  • purchase:处理进货操作,更新商品库存并记录交易信息。
  • sell:处理销售操作,更新商品库存并记录交易信息。
  • query_transaction:查询指定 ID 的交易记录。

五、总结与扩展

通过以上代码,我们实现了一个简单的宠物用品库存管理系统。该系统可以方便地管理商品信息、库存数量和交易记录。在实际应用中,我们可以进一步扩展系统功能,如添加用户认证、生成报表、设置库存预警等,以满足更复杂的业务需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/979828.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux---共享内存

1.ipcs命令 IPC机制是一个让人烦恼的问题:编写错误的程序或因为某些原因而执行失败的程序将把它的IPC资源(如消息队列中的数据)遗留在系统里,并且这些资源在程序结束后很长时间让然在系统中游荡,这导致对程序的新调用…

数据结构与算法:二叉树

目录 树的概念 二叉树 二叉树性质 二叉树的遍历 前序遍历 中序遍历 后序遍历 层序遍历 二叉树节点个数 二叉树叶子节点个数 二叉树高度 二叉树第k层节点个数 二叉树查找值为x的节点 判断二叉树是否是完全二叉树 二叉树销毁 树的概念 树型结构是一类重要的非线性…

中科大计算机网络原理 1.5 Internt结构和ISP

一、互联网的层次化架构 ‌覆盖范围分层‌ ‌主干网(Tier-1级)‌ 国家级或行业级核心网络,承担跨区域数据传输和全球互联功能。例如中国的四大主干网(ChinaNET、CERNET等)以及跨国运营商(如AT&T、Deuts…

AI编程界的集大成者——通义灵码AI程序员

一、引言 随着软件行业的快速发展和技术的进步,人工智能(AI)正在成为软件开发领域的一个重要组成部分。近年来,越来越多的AI辅助工具被引入到开发流程中,旨在提高效率、减少错误并加速创新。在这样的背景下&#xff0…

GPT-4.5震撼登场,AI世界再掀波澜!(3)

GPT-4.5震撼登场,AI世界再掀波澜! GPT-4.5震撼登场,AI世界再掀波澜!(2) (一)伦理困境:如何抉择 GPT-4.5 的强大功能在为我们带来诸多便利的同时,也引发了一系列深刻的伦理问题,这些问题犹如高…

electron-builder打包时github包下载失败【解决办法】

各位朋友们,在使用electron开发时,选择了electron-builder作为编译打包工具时,是否经常遇到无法从github上下载依赖包问题,如下报错: Get "https://github.com/electron/electron/releases/download/v6.1.12/ele…

【Linux】命令行参数 | 环境变量(四)

目录 前言: 一、命令行参数: 1.main函数参数 2.为什么有它? 二、环境变量: 1.main函数第三个参数 2.查看shell本身环境变量 3.PATH环境变量 4.修改PATH环境变量配置文件 5.HOME环境变量 6.SHELL环境变量 7.PWD环境变…

计算机毕业设计Python+DeepSeek-R1大模型游戏推荐系统 Steam游戏推荐系统 游戏可视化 游戏数据分析(源码+文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

Python实现GO鹅优化算法优化BP神经网络回归模型项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 传统BP神经网络的局限性:BP(Back Propagation)神经网络作为一种…

1.忆往昔—Java发展史

在编程世界的远古时代,C语言和C统治着大地,但它们复杂且难以驾驭。1995年5月23日,Java 1.0正式发布,它像一把神奇的钥匙,打开了“一次编写,到处运行”的大门。 早在1991年Java就已经初见雏形,不…

Vue+Elementui 全局配置el-table表格列宽可拖拽

1、需求分析 如何让表格列宽可以拖动 elementui的el-table如果想要列宽可以拖动的话 有一个属性叫 border 在模板里添加这个属性即可实现 但是系统里面的表格我不可能一个一个去添加border太麻烦 如果能够全局配置岂不是非常省时间吗 我们在main.js里面通过全局混入的方式来…

“Web渗透测试实战指南|BWAPP靶场全关卡通关教程(含高中低/不可能级别)从SQL注入到XSS攻击手把手教学|网络安全工程师必备技能“ 内容较长点赞收藏哟

目录 Low级别 ---A1 - Injection{注入}-- HTML Injection - Reflected (GET) HTML Injection - Reflected (POST) HTML Injection - Reflected (URL) HTML Injection - Stored (Blog) iFrame Injection LDAP Connection Settings Mail Header Injection (SMTP) OS Co…

释放 Cursor 的全部潜能:快速生成智能 Cursor Rules

释放 Cursor 的全部潜能:使用 PromptCoder 从 package.json 快速生成智能 Cursor Rules 我们将深入探讨如何利用您项目中的 package.json 文件,轻松生成 Cursor Rules,并通过 PromptCoder 这个强大的工具,快速创建高质量的 curso…

DeepSeek开源周-汇总

当 ChatGPT、Claude 这些闭源大模型严防死守技术秘密时,DeepSeek 却反其道而行,选择了全面开源,为整个 AI 生态注入新的活力。 在过去短短一周内,DeepSeek 连续在 GitHub 开源了 8 个核心技术项目,完成了一次震撼业界…

02内存映射与bmp解码

一、mmap 内存映射 内存映射的作用是把硬件设备的地址,映射到应用层的内存空间,这样用户就可以跨越系统层访问linux的硬件设备。 1、man 2 mmap 查看映射函数接口 NAMEmmap, munmap - map or unmap files or devices into memory映射 解除…

I2C驱动(九) -- i2c_adapter控制器驱动框架编写

相关文章 I2C驱动(一) – I2C协议 I2C驱动(二) – SMBus协议 I2C驱动(三) – 驱动中的几个重要结构 I2C驱动(四) – I2C-Tools介绍 I2C驱动(五) – 通用驱动i2c-dev.c分析 I2C驱动(六) – I2C驱动程序模型 I2C驱动(七) – 编写I2C设备驱动之i2c_driver I2C驱动(八) – 编写I2C…

分布式系统核心基石:CAP定理、BASE理论与一致性算法深度解析

一、CAP定理:分布式系统的设计边界 1.1 核心定义与经典三角 CAP定理(Brewers Theorem)指出,在分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性&a…

3 算法1-4 过河卒

题目描述 棋盘上 A 点有一个过河卒,需要走到目标 B 点。卒行走的规则:可以向下、或者向右。同时在棋盘上 C 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。 棋盘用坐标表示&#xff…

AutoMQ:无需 Cruise Control 实现 Kafka 的自动分区再平衡

导读:AutoMQ是一款贯彻云优先理念来设计的 Kafka 替代产品。AutoMQ 创新地对 Apache Kafka 的存储层进行了基于云的重新设计,在 100% 兼容 Kafka 的基础上通过将持久性分离至 EBS 和 S3 带来了 10x 的成本降低以及 100x 的弹性能力提升,并且相…

论文阅读之基于Syn2Real域的侧扫声纳类水雷目标探测

摘要 由于现实世界数据的稀缺性,基于深度学习的水下水雷探测受到了限制。这种稀缺性导致过拟合,即模型在训练数据上表现良好,但在未见数据上表现不佳。本文提出了一种使用扩散模型的Syn2Real (Synthetic to Real)域泛…