简单的收银系统

同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用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('输入错误')

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值