同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++/python/Java,结合设计模式(2种以上)至少实现系统的以下功能:
1.正常餐品结算和找零。
2.基本套餐结算和找零。
3.使用优惠劵购买餐品结算和找零。
4.可在一定时间段参与店内活动(自行设计或参考官网信息)。
5.模拟打印小票的功能(写到文件中)。
用时2周。
基本要求:
1.程序设计风格良好,控制台界面友好,最多两人一组完成任务。
2.实现功能测试代码,确保程序的健壮性。
3.画出使用的设计模式图。
import time
meau1 = [
('香辣鸡腿汉堡',10),
('超级至尊牛肉堡',13),
('全虾堡',12),
('奥尔良烤鸡腿堡',11),
('无敌大鸡排',12),
('可乐',8),
('雪碧',8),
('薯条',8),
('鸡翅',9),
('鸡腿',9),
]
meau2 = [
('香辣鸡腿汉堡+可乐+薯条',21),
('奥尔良烤鸡腿堡+2杯雪碧+无敌大鸡排+薯条',39),
('薯条+鸡翅+可乐',19),
('全虾堡+鸡腿+雪碧',22),
('全虾堡+奥尔良烤鸡腿堡+超级至尊牛肉堡+薯条+鸡翅+3杯可乐',59),
]
meau = []
shopping_car = []
total_money = 0
flag = False
data = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())
data1 = time.localtime()
week = time.strftime('%A',data1)
while not flag:
choice1 = input('请选择单点还是套餐(单点选择1,套餐选择2)[返回:q]')
if choice1.isdigit():
choice1 = int(choice1)
if choice1 == 1:
meau = meau1
elif choice1 == 2:
meau = meau2
else:
print('输入错误')
continue
elif choice1 == 'q':
break
else:
print('输入错误')
continue
for i ,v in enumerate(meau,1):
print(i,'',v)
while not flag:
choice2 = input('请输入您要购买的食品的编号:[返回 :q][选择完成:p]')
if choice2.isdigit():
choice2 = int(choice2)
if choice2>0 and choice2<=len(meau):
p_item = meau[choice2-1]
total_money+= p_item[1]
shopping_car.append(p_item)
continue
else:
print('输入错误')
elif choice2 == 'p':
f = open('receipt', 'w',encoding='utf8')
print('您本次购买花费%s元:' % total_money)
for i,(v,m) in enumerate(shopping_car,1):
print(i,'',v,'',m)
l = str('----'.join([str(i),v,str(m)+'元']))
f.write(l.center(50,' ')+'\n')
f.write('您本次购买消费合计金额%s元'.center(50,'-') % total_money+'\n')
if week == 'Monday' or 'Thursday':
if total_money>=50:
total_money = total_money - 10
print('您今天可享受本店满50减10的活动,所以您需要支付%s'%total_money)
f.write('您今天享受了本店满50减10的活动'.center(50,'*')+'\n')
while not flag:
give_money = int(input('请输入您要支付的金额:'))
back_money = give_money-total_money
if back_money>=0:
b = str(' '.join(['收您%s元'%give_money,'找您%s元'%back_money]))
print(b.center(50,'-'))
f.write(b.center(50,'-')+'\n')
f.write(str(data).center(50,'-'))
f.close()
flag = True
else:
print('请输入足够的金额')
continue
break
elif choice2 == 'q':
break
else:
print('输入错误')