使用Python语言设计一个餐厅点单系统

具体功能要求:

  1. 客户可以注册账号,并登录账号;
  2. 选择菜品和饮料,并加入购物车;
  3. 进行购物车结算。

设计思路及步骤:

第一步,创建餐厅类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

在这里插入图片描述

完整代码请关注博主

在这里插入图片描述

需要完整代码

  • 15
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小王子同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值