本任务要求,使用所学知识编写一个基于控制台的蔬菜交易系统,实现跑腿买菜功能。输出所有蔬菜肉蛋类的信息:包括每种食材的类别、名称、单价、库存。 顾客买菜时,根据提示输入蔬菜瓜果类别来选购需要的食材,并根据提示输入购买数量。 购买完毕后输出顾客的订单信息,包括:订单号、订单明细、订单总额。 「思路」 (1)通过任务描述可知,该系统中必须包括3个实体类,类名及属性设置如下: 1.食材类(Food): a)食材编号(id) b)食材名称(name) c)食材单价(price) d)库存数量(storage) 2.订单项类(OrderItem): a)食材(food) b)购买数量(num) 3.订单类(Order): a)订单号(orderID) b)订单总额(total) c)订单项列表(items) (2)由于购买食材时,需要选择食材的数量,所以需要在订单项类里定义获取食材对象以及食材数量的方法。 (3)由于需要指定订单项以及获取订单的订单列表、订单号、订单总额等信息,所以需要有订单列表、订单号、订单总额指定订单项等方法。
时间: 2023-12-22 20:04:29 浏览: 26
好的,根据你提供的需求,我可以为你提供一个基本的代码框架:
```python
class Food:
def __init__(self, id, name, price, storage):
self.id = id
self.name = name
self.price = price
self.storage = storage
class OrderItem:
def __init__(self, food, num):
self.food = food
self.num = num
def get_item_price(self):
return self.food.price * self.num
class Order:
def __init__(self, orderID):
self.orderID = orderID
self.total = 0
self.items = []
def add_item(self, item):
self.items.append(item)
self.total += item.get_item_price()
def get_order_list(self):
return self.items
def get_order_id(self):
return self.orderID
def get_order_total(self):
return self.total
```
以上代码定义了三个类:食材类(Food)、订单项类(OrderItem)和订单类(Order)。
在食材类中,我们定义了食材编号、名称、单价、库存数量等属性。
在订单项类中,我们定义了食材对象和购买数量等属性,并且定义了获取订单项总价的方法。
在订单类中,我们定义了订单号、订单总额、订单项列表等属性,并且定义了添加订单项、获取订单列表、获取订单号和获取订单总额等方法。
接下来,我们需要实现控制台交互部分:
```python
# 初始化食材
foods = [
Food(1, '土豆', 2.0, 100),
Food(2, '西红柿', 3.0, 50),
Food(3, '黄瓜', 1.5, 80),
Food(4, '鸡蛋', 0.5, 200),
Food(5, '牛肉', 20.0, 20)
]
# 初始化订单
order_num = 1
order = Order(order_num)
# 输出所有食材信息
print('所有蔬菜肉蛋类的信息如下:')
for food in foods:
print(f'编号:{food.id},名称:{food.name},单价:{food.price},库存:{food.storage}')
# 顾客选择食材并购买
while True:
# 提示用户选择食材编号
food_id = int(input('请输入要购买的食材编号(输入0结束购买):'))
if food_id == 0:
# 用户结束购买,输出订单信息
print(f'订单号:{order.get_order_id()}')
print('订单明细:')
for item in order.get_order_list():
print(f'{item.food.name} x {item.num},单价:{item.food.price},小计:{item.get_item_price()}')
print(f'订单总额:{order.get_order_total()}')
break
else:
# 提示用户输入购买数量
food_num = int(input(f'请输入购买{foods[food_id-1].name}的数量:'))
# 判断库存是否充足
if foods[food_id-1].storage < food_num:
print('库存不足,请重新选择')
continue
# 更新食材库存
foods[food_id-1].storage -= food_num
# 创建订单项并添加到订单中
item = OrderItem(foods[food_id-1], food_num)
order.add_item(item)
# 更新订单号
order_num += 1
```
以上代码中,我们首先初始化了所有食材和订单。
然后输出了所有食材的信息。
接下来,我们通过循环提示用户选择食材编号,并根据用户输入的编号判断用户是否结束购买。
如果用户选择结束购买,我们将输出订单信息并跳出循环。
如果用户选择继续购买,我们将提示用户输入购买数量,并判断库存是否充足。
如果库存充足,我们将更新食材库存,并创建订单项并添加到订单中。
最后,我们更新订单号并继续循环。