第一步,创建餐厅类Restaurant,并在构造函数中初始化customers列表(用于存储所有顾客信息)和items字典(用于表示所有菜品和价格)。
第二步,实现注册功能(register)。这个方法会提示用户输入用户名和密码。如果用户名已经存在,则会提示注册失败;否则,将用户名和密码存储到一个字典中,并添加到customers列表中。
第三步,实现登录功能(login)。这个方法会提示用户输入用户名和密码。如果用户名或密码不正确,则会提示登录失败;否则,将当前用户信息保存到current_user属性中。
第四步,实现查看菜单功能(show_menu)。这个方法会循环打印出所有菜品和价格。
第五步,实现添加菜品到购物车功能(add_to_cart)。这个方法会提示用户输入要添加的菜品和数量。如果菜品不存在或者数量不合法,则会提示错误;否则,将菜品和数量添加到当前用户的购物车中。
第六步,实现查看购物车功能(show_cart)。这个方法会打印出当前用户的购物车中所有菜品和数量。
第七步,实现删除购物车中的菜品功能(remove_from_cart)。这个方法会提示用户输入要删除的菜品名称。如果菜品不存在,则会提示错误;否则,从当前用户的购物车中删除对应的菜品。
第八步,实现进行结算功能(checkout)。这个方法会先判断当前用户是否登录和是否已选择了任何菜品;如果没有,则提示错误。否则,将当前用户的购物车中所有菜品的价格累加起来,并打印出总价。
第九步,将上述方法整合到一个run方法中,通过循环让用户输入操作选择并执行相应功能。
第十步,创建Restaurant实例并运行run方法。
第一步,创建餐厅类Restaurant,并在构造函数中初始化customers列表(用于存储所有顾客信息)和items字典(用于表示所有菜品和价格)。
class Restaurant:
def __init__(self):
self.customers = [] # 所有顾客信息列表
self.items = { # 所有菜品和价格字典
'炒饭': 10,
'炒面': 12,
'炒鸡蛋': 5,
'牛肉面': 15,
'汉堡': 18,
'可乐': 3,
'雪碧': 3,
'果汁': 5
}
第二步,实现注册功能(register)。这个方法会提示用户输入用户名和密码。如果用户名已经存在,则会提示注册失败;否则,将用户名和密码存储到一个字典中,并添加到customers列表中。
def register(self):
name = input('请输入用户名: ')
password = input('请设置密码: ')
for customer in self.customers:
if customer['name'] == name:
print('该用户名已被注册')
return
self.customers.append({
'name': name,
'password': password,
'cart': {} # 购物车初始化为空字典
})
print('注册成功!')
第三步,实现登录功能(login)。这个方法会提示用户输入用户名和密码。如果用户名或密码不正确,则会提示登录失败;否则,将当前用户信息保存到current_user属性中。
def login(self):
name = input('请输入用户名: ')
password = input('请输入密码: ')
for customer in self.customers:
if customer['name'] == name and customer['password'] == password:
print('登录成功!')
self.current_user = customer
return
print('用户名或密码错误!')
第四步,实现查看菜单功能(show_menu)。这个方法会循环打印出所有菜品和价格。
def show_menu(self):
print('-' * 40)
print('{:<20}{:<10}'.format('菜品', '价格'))
print('-' * 40)
for item, price in self.items.items():
print('{:<20}{:<10}'.format(item, price))
print('-' * 40)
第五步,实现添加菜品到购物车功能(add_to_cart)。这个方法会提示用户输入要添加的菜品和数量。如果菜品不存在或者数量不合法,则会提示错误;否则,将菜品和数量添加到当前用户的购物车中。
def add_to_cart(self):
if not hasattr(self, 'current_user'):
print('您还未登录,登录后才能选择菜品!')
return
item_name = input('请输入要加入购物车的菜品名称: ')
item_price = self.items.get(item_name)
if not item_price:
print('抱歉,我们没有这道菜!')
return
while True:
item_quantity = input('请输入添加到购物车的数量: ')
if not item_quantity.isdigit() or int(item_quantity) <= 0:
print('输入有误,请输入一个正整数!')
else:
item_quantity = int(item_quantity)
break
cart = self.current_user['cart']
if item_name in cart:
cart[item_name] += item_quantity
else:
cart[item_name] = item_quantity
print('{0} x {1} 已经添加到购物车!'.format(item_name, item_quantity))
第六步,实现查看购物车功能(show_cart)。这个方法会打印出当前用户的购物车中所有菜品和数量。
def show_cart(self):
if not hasattr(self, 'current_user'):
print('您还未登录,登录后才能查看购物车!')
return
cart = self.current_user['cart']
if not cart:
print('购物车为空!')
return
print('-' * 20)
print('{:<10}{:<10}'.format('菜品', '数量'))
print('-' * 20)
for item, quantity in cart.items():
print('{:<10}{:<10}'.format(item, quantity))
print('-' * 20)
第七步,实现删除购物车中的菜品功能(remove_from_cart)。这个方法会提示用户输入要删除的菜品名称。如果菜品不存在,则会提示错误;否则,从当前用户的购物车中删除对应的菜品。
def remove_from_cart(self):
if not hasattr(self, 'current_user'):
print('您还未登录,登录后才能删除购物车中的菜品!')
return
cart = self.current_user['cart']
if not cart:
print('购物车为空!')
return
item_name = input('请输入要删除的菜品名称: ')
if item_name not in cart:
print('购物车中没有这道菜!')
return
del cart[item_name]
print('{0} 已经从购物车中移除!'.format(item_name))
第八步,实现进行结算功能(checkout)。这个方法会先判断当前用户是否登录和是否已选择了任何菜品;如果没有,则提示错误。否则,将当前用户的购物车中所有菜品的价格累加起来,并打印出总价。
def checkout(self):
if not hasattr(self, 'current_user'):
print('您还未登录,登录后才能进行结算!')
return
cart = self.current_user['cart']
if not cart:
print('您还没选择任何菜品!')
return
total_price = 0
for item, quantity in cart.items():
item_price = self.items.get(item)
total_price += item_price * quantity
print('-' * 20)
print('您的订单总价格为: {}'.format(total_price))
print('-' * 20)
# 结算完成后清空购物车
self.current_user['cart'] = {}
第九步,将上述方法整合到一个run方法中,通过循环让用户输入操作选择并执行相应功能。
class Restaurant:
def __init__(self):
self.customers = [] # 所有顾客信息列表
self.items = { # 所有菜品和价格字典
'炒饭': 10,
'炒面': 12,
'炒鸡蛋': 5,
'牛肉面': 15,
'汉堡': 18,
'可乐': 3,
'雪碧': 3,
'果汁': 5
}
def run(self):
while True:
print('1.客户注册')
print('2.客户登录')
print('3.查看菜单')
print('4.添加菜品到购物车')
print('5.查看购物车')
print('6.删除购物车中的菜品')
print('7.进行结算')
print('8.退出')
choice = input('请选择操作(输入数字): ')
if choice == '1':
self.register()
elif choice == '2':
self.login()
elif choice == '3':
self.show_menu()
elif choice == '4':
self.add_to_cart()
elif choice == '5':
self.show_cart()
elif choice == '6':
self.remove_from_cart()
elif choice == '7':
self.checkout()
elif choice == '8':
break
else:
print('无效的选择,请重新输入!')
运行结果:
================= RESTART: 餐厅点单系统.py =================
1.客户注册
2.客户登录
3.查看菜单
4.添加菜品到购物车
5.查看购物车
6.删除购物车中的菜品
7.进行结算
8.退出
请选择操作(输入数字): 1
请输入用户名: 123
请设置密码: 456
注册成功!
1.客户注册
2.客户登录
3.查看菜单
4.添加菜品到购物车
5.查看购物车
6.删除购物车中的菜品
7.进行结算
8.退出
请选择操作(输入数字): 2
请输入用户名: 123
请输入密码: 456
登录成功!
1.客户注册
2.客户登录
3.查看菜单
4.添加菜品到购物车
5.查看购物车
6.删除购物车中的菜品
7.进行结算
8.退出
请选择操作(输入数字): 3
----------------------------------------
菜品 价格
----------------------------------------
炒饭 10
炒面 12
炒鸡蛋 5
牛肉面 15
汉堡 18
可乐 3
雪碧 3
果汁 5
----------------------------------------
1.客户注册
2.客户登录
3.查看菜单
4.添加菜品到购物车
5.查看购物车
6.删除购物车中的菜品
7.进行结算
8.退出
请选择操作(输入数字): 4
请输入要加入购物车的菜品名称: 炒饭
请输入添加到购物车的数量: 2
炒饭 x 2 已经添加到购物车!
1.客户注册
2.客户登录
3.查看菜单
4.添加菜品到购物车
5.查看购物车
6.删除购物车中的菜品
7.进行结算
8.退出
请选择操作(输入数字): 4
请输入要加入购物车的菜品名称: 牛肉面
请输入添加到购物车的数量: 1
牛肉面 x 1 已经添加到购物车!
1.客户注册
2.客户登录
3.查看菜单
4.添加菜品到购物车
5.查看购物车
6.删除购物车中的菜品
7.进行结算
8.退出
请选择操作(输入数字): 4
请输入要加入购物车的菜品名称: 可乐
请输入添加到购物车的数量: 2
可乐 x 2 已经添加到购物车!
1.客户注册
2.客户登录
3.查看菜单
4.添加菜品到购物车
5.查看购物车
6.删除购物车中的菜品
7.进行结算
8.退出
请选择操作(输入数字): 5
--------------------
菜品 数量
--------------------
炒饭 2
牛肉面 1
可乐 2
--------------------
1.客户注册
2.客户登录
3.查看菜单
4.添加菜品到购物车
5.查看购物车
6.删除购物车中的菜品
7.进行结算
8.退出
请选择操作(输入数字): 7
--------------------
您的订单总价格为: 41
--------------------
1.客户注册
2.客户登录
3.查看菜单
4.添加菜品到购物车
5.查看购物车
6.删除购物车中的菜品
7.进行结算
8.退出
请选择操作(输入数字): 8
需要完整代码