当前位置: 首页 > news >正文

PYTHON基础入门----商品库存管理系统

如果商品信息只保存在程序运行过程中,那么程序关闭后,所有数据都会丢失。因此,我们需要将商品数据保存到文件中,下次运行程序时还能继续读取和使用。

本题要求你编写一个简单的商品库存管理系统,实现商品的添加、查看、修改库存、删除、保存和读取功能。

一,菜单呈现:

所有商品信息保存在一个列表中,每个商品使用一个字典表示。

示例数据结构如下

当用户选择1时,程序提示用户输入 :

输入完成后,将商品信息保存到products列表中。

添加成功后,提示:

代码实现:

当用户选择2时,程序显示当前所有商品信息。

显示时需要计算每种商品的库存总金额:

显示格式:

代码实现:

当用户选择3时:

程序根据商品名称在products列表中查找。

如果找到该商品,则继续提示:

代码实现:

选4时删除商品:

代码实现:

当用户选择5时,程序需要将当前products列表保存到文件中

代码实现:

当用户选择6时,程序需要从products.pkl文件中读取之前保存的商品数据。

代码实现:

总代码实现:

products = [
{
"name": "键盘",
"price": 99,
"stock": 20
},
{
"name": "鼠标",
"price": 59,
"stock": 35
}
]
import pickle
import os
def show_menu():
print(str1)
def add_product(products):
uname=input("请输入商品的名称:")
price=input("请输入商品价格:")
stock=int(input("请输入商品库存:"))
list={
"name":uname,
"price":price,
"stock":stock
}
products.append(list)
print("商品添加成功!")


def show_products(products):

for i in products:
total=i["price"]*i["stock"]
print("-"*40)
print(f"商品名称:{i["name"]}\n商品价格:{i["price"]}\n商品库存:{i["stock"]}\n库存总金额:{total}")
def update_stock(products):
uname=input("请输入要修改库存的商品:")
a=False
for i in products:
if i["name"]==uname:
a=True
new_stock=int(input("请输入新的库存数量:"))
i["stock"]=new_stock
print("库存修改成功!")
break
if not a:
print("商品不存在")
def delete_product(products):
uname=input("请输入要删除的商品:")

for index,value in enumerate(products):
if uname==value["name"]:
del products[index]
print("商品删除成功!")
return True


print("商品不存在!")

def save_data(products):
with open("products.pk1","wb") as f :
pickle.dump(products,f)
print("数据保存成功!")
def load_data():
if not os.path.exists("products.pk1"):
print("文件不存在,请先保存数据!")
return []
with open("products.pk1","rb") as f:
date= pickle.load(f)
print("数据读取成功!")
return date
str1="""
# ====== 商品库存管理系统 ======
# 1. 添加商品
# 2. 查看所有商品
# 3. 修改商品库存
# 4. 删除商品
# 5. 保存数据到文件
# 6. 从文件读取数据
# 0. 退出程序
# 请选择操作:
"""
while True:
print(str1)
choose=input("请选择操作:")
if choose=="1":
add_product(products)
elif choose=="2":
show_products(products)
elif choose=="3":
update_stock(products)
elif choose=="4":
delete_product(products)
elif choose=="5":
save_data(products)
elif choose=="6":
load_data()
elif choose=="0":
break

http://www.jsqmd.com/news/822901/

相关文章:

  • 5个步骤实现SEB环境绕过:深度解析虚拟机检测突破技术
  • 生产报工场景实测:实在Agent如何颠覆传统RPA,实现数据处理效率降维打击
  • 满洲里旅行社怎么选不踩坑?5家实力机构全维度盘点与避坑指南 - 深度智识库
  • 实测 Taotoken 多模型 API 的响应延迟与稳定性表现
  • 一次 malloc,半个 GB:硬核解构 llm.c 如何用纯 C 管理 1.24 亿参数
  • React Native Navigation在AR应用中的终极指南:场景切换和交互页面导航
  • iMeta | 伦敦国王学院量化系统生物学组-解析肝硬化中口腔-肠道转移细菌与宿主互作
  • 基于Arduino与红外传感器的智能包裹送达通知系统实现
  • 开源多智能体协作框架Tianji:架构设计与实战指南
  • GeoJSON数据架构深度解析:从数据组织到高性能可视化实战
  • STM32多任务处理实战:从裸机调度到FreeRTOS应用详解
  • 2026年郑州外贸建站公司推荐:如何选择真正专业的外贸建站服务商? - 速递信息
  • AI智能管理和生产系统:赋能制造业数字化升级新引擎
  • 推理加速黑科技:FlashAttention、KV Cache量化与连续批处理实战
  • 机器学习可微分编程:PRML自动微分系统完整指南
  • 2026年4月靠谱的电动推杆微动开关厂家推荐,新能源微动开关/小型微动开关/大型微动开关,电动推杆微动开关源头厂家有哪些 - 品牌推荐师
  • 单元测试覆盖率90%但Bug依然不断?你可能在测错误的东西
  • Barlow字体实战指南:如何用这款开源几何字体提升设计质感与效率
  • 使用Taotoken后API调用稳定性与延迟的实际观测体验分享
  • 如何快速掌握Java-Callgraph2:静态调用图分析的完整指南
  • 如何构建标准化的API错误响应格式:10个实用技巧
  • 如何批量删除 Git 本地分支且保留远程 master 分支
  • 机器学习模型评估终极指南:从理论到实践的手把手教程
  • 别再傻傻分不清!PowerBI的PBIX、PBIT、PBIDS文件到底该怎么用?
  • 使用taotaokencli工具一键配置多开发环境下的ai代理
  • 产销协同效率翻倍!实测实在Agent:打破数据孤岛,开启企业级AI数据联动新范式
  • 深圳ACF导电胶选购全攻略:避坑指南与专业推荐 - 新闻快传
  • 3种加密方式保护你的Obsidian私密笔记:Meld Encrypt完全指南
  • TJUThesisLatexTemplate实战指南:天津大学学术论文自动化排版解决方案
  • 5分钟掌握SpleeterGUI:Windows平台AI音乐分离桌面应用技术深度解析