赞
踩
1、设计了一个Order类供用户点餐,其中num为用户落座的桌号,运行程序时,用户选座后即可进入点菜系统(对用户的错误输入进行检查并要求用户重新落座)
main_menu(self)为用户进入系统的主菜单页面,包含系统的4个服务选项,用户可以通过输入'1','2','3','4'获得相应的服务(对用户的错误输入进行检查并要求用户重新输入获取对应的服务)
当用户输入错误时
2、order(self)为用户点菜功能函数,打印出饭店拥有的菜品名称以及其对应的价格,用户通过输入对应菜品名称和数量点(加)菜,之后弹出相应的提示,用户可以选择继续点菜或退出点菜进入main_menu(self)界面(调用confirm_order(0)函数),对用户的错误输入进行检查并要求用户重新输入(调用confirm_order(1)函数)
当用户选择’y’继续点菜时
当用户输入错误信息(即不是字母’y’和’n’)
当用户点菜时输入错误时(即输入的菜品不在所选范围内和需要的菜品数量错误非数字)
当用户选择’n’退出点菜时
3、为用户退菜函数,用户输入菜品名称和数量进行退菜(输入数量为’all’时退掉所有该菜品),检查用户的输入,如果用户输入的菜品不在已点菜品中或者需要退菜数量大于已点数量,弹出错误提示,需要用户选择是否继续退菜(调用confirm_order(2)函数)
当用户输入错误时
4、显示已点菜单,从测试至此,已点2份辣子鸡和1份水煮肉片,退掉all辣子鸡,应该还剩余1份水煮肉片,其金额为¥56
重新添加3份米饭后的菜单,其金额为¥62
退掉1份米饭后的菜单,其金额为¥60
5、退出系统
- class Order:
- #桌号
- def __init__(self,num):
- self.num=num
-
- order_menu={} #已点过的菜品及数量
- menu={'辣子鸡':39,'红烧肉':49,'麻婆豆腐':19,'酸菜鱼':59,'水煮肉片':56,'米饭':2,'鸡蛋汤':9} #菜品及其价格
- Price=0 #总价格
-
- #主菜单
- def main_menu(self):
- choose=input("1、点(加)菜\n2、退菜\n3、查看菜单\n4、退出\n您需要输入数字{1,2,3,4}中的一个来选择服务类型:")
- if choose not in {'1','2','3','4'}:
- print("输入有误,重新输入")
- self.main_menu()
- else:
- if choose=='1':
- self.order() #点(加)菜
- self.main_menu()
- elif choose=='2':
- self.menu_back() #退菜
- self.main_menu()
- elif choose=='3':
- self.menu_check() #查看已点菜品
- self.main_menu()
- elif choose=='4':
- print("您已退出") #退出系统
-
-
- #菜单
- def menu_check(self):
- print("***************")
- print("*您的桌号:"+str(self.num)+'号*')
- print("***************")
- if not self.order_menu:
- print("客官您还没点餐哦")
- else:
- print("您的菜单:\n---------------")
- for key,value in self.order_menu.items():
- print(key+str(":")+str(value)+str("份"))
- print("---------------\n总价:¥"+str(self.Price))
- print("---------------")
-
-
- #确认选项和处理用户错误输入
- #f=0表示点菜后是否继续点菜确认,f=1表示用户点菜时错误输入,f=2表示用户退菜时错误输入
- def confirm_order(self,f):
- if f==0:
- confirm=input("您是否还需要继续点菜(是:y 否:n):")
- elif f==1:
- print("抱歉,客官!!!您点的菜我们没有,请您检查后重新点菜")
- confirm=input("您是否还需要继续点菜(是:y 否:n):")
- elif f==2:
- print("您输入的退菜信息有误,请您检查后重新退菜")
- confirm=input("您是否还需要继续退菜(是:y 否:n):")
- if confirm not in {'y','n'}:
- print("客官输入有误,请在y和n中选择一项输入")
- confirm=self.confirm_order(1)
- else:
- if confirm=='y' and f in {0,1}:
- self.order()
- elif confirm=='y' and f==2:
- self.menu_back()
- else:
- print("您已退出退菜")
-
-
- #点菜功能,用户可选择菜品及数量,给出点餐总额
- def order(self):
- print('我们的菜单:')
- for key,value in self.menu.items():
- print(key+str(":¥")+str(value))
- order_dish=input('请您点餐:')
- if order_dish not in self.menu.keys():
- self.confirm_order(1)
- else:
- if order_dish in self.order_menu:
- dish_num=input("客官,您需要再加几份"+order_dish+":")
- if not dish_num.isdigit():
- self.confirm_order(2)
- else:
- self.Price+=int(dish_num)*self.menu[order_dish]
- self.order_menu.update({order_dish:self.order_menu[order_dish]+int(dish_num)})
- else:
- dish_num=input("客官,您需要几份"+order_dish+":")
- if not dish_num.isdigit():
- self.confirm_order(2)
- else:
- self.Price+=int(dish_num)*self.menu[order_dish]
- self.order_menu.update({order_dish:int(dish_num)})
- self.confirm_order(0)
-
-
- #退菜
- def menu_back(self):
- back_dish=input('您要退的菜品:')
- if back_dish not in self.menu.keys():
- self.confirm_order(2)
- elif back_dish not in self.order_menu:
- print("您还未点该菜品")
- self.menu_check()
- else:
- dish_num=input('您要退掉几份'+back_dish+'(all表示全部):')
- if dish_num=='all':
- self.Price-=self.order_menu[back_dish]*self.menu[back_dish]
- self.order_menu.pop(back_dish)
- elif not dish_num.isdigit() or int(dish_num)>self.order_menu[back_dish]:
- print('您输入的退菜数量有误')
- self.confirm_order(2)
- else:
- self.Price-=int(dish_num)*self.menu[back_dish]
- self.order_menu.update({back_dish:self.order_menu[back_dish]-int(dish_num)})
- print('已为您退掉'+back_dish)
-
- #选座函数
- def NO():
- print('我们的桌号0-10,请输入0-10之间的数字')
- num=input('请您落座:')
- if not num.isdigit() or int(num)>10 or int(num)<0:
- print('没有该桌号,请检查后落座')
- NO()
- else:
- return num
-
- num=NO()
- Order(num).main_menu() #用户进入程序点餐
原创作品,仅做学习交流使用,转载请联系作者,未经同意转载侵权必究
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。