请提供以上的完整代码
时间: 2024-11-20 15:39:43 浏览: 5
以下是完整的代码,包括输入验证、异常处理以及新增的“存储到文件”和“从文件加载”功能:
```python
import json
from datetime import datetime
class ProductManager:
def __init__(self):
self.products = {} # 创建字典
def add_product(self):
while True:
try:
product_id = int(input("请输入产品ID: "))
break
except ValueError:
print("输入错误,请输入有效的数字产品ID.")
while True:
product_name = input("请输入产品名: ")
category = input("请输入产品类别: ")
price = float(input("请输入价格: "))
while True:
production_date_str = input("请输入生产日期(格式:YYYY-MM-DD): ")
try:
production_date = datetime.strptime(production_date_str, "%Y-%m-%d")
break
except ValueError as e:
print(f"日期格式错误,请按照YYYY-MM-DD格式输入。错误信息:{str(e)}")
self.products[product_id] = (product_name, category, price, str(production_date))
print("产品添加成功。")
def print_products(self):
if self.products:
for product_id, details in self.products.items():
print(f"产品ID: {product_id}, 产品名: {details[0]}, 类别: {details[1]}, 价格: {details[2]}, 生产日期: {details[3]}")
else:
print("暂无产品信息.")
def search_product(self):
query = input("请输入产品名查询: ")
found = False
for product_id, details in self.products.items():
if details[0] == query:
print(f"找到产品:{product_id}")
found = True
break
if not found:
print("未找到匹配的产品。")
def save_to_file(self):
if not os.path.exists("products.json"):
with open("products.json", "w") as f:
json.dump(self.products, f)
print("产品已保存到文件.")
else:
overwrite = input("文件已存在,是否覆盖?(y/n): ").lower()
if overwrite == 'y':
with open("products.json", "w") as f:
json.dump(self.products, f)
print("产品已覆盖并保存到文件.")
else:
print("保存操作已取消.")
def load_from_file(self):
if os.path.exists("products.json"):
try:
with open("products.json", "r") as f:
self.products = json.load(f)
print("产品数据已从文件加载.")
except Exception as e:
print(f"加载文件失败:{str(e)}")
else:
print("没有可用的产品文件.")
def main():
manager = ProductManager()
while True:
print("\n请选择操作:")
print("1. 添加产品")
print("2. 从文件读取所有产品")
print("3. 存储产品到文件")
print("4. 搜索产品")
print("5. 退出")
choice = int(input())
if choice == 1:
manager.add_product()
elif choice == 2:
manager.load_from_file()
elif choice == 3:
manager.save_to_file()
elif choice == 4:
manager.search_product()
elif choice == 5:
break
else:
print("无效选择,请重试。")
if __name__ == "__main__":
main()
```
这个代码包含了产品管理的全部功能,并对输入进行了验证和文件操作处理。当你运行它时,你会看到一个命令行菜单,可以根据指示操作产品列表。
阅读全文