• 自助饮料机实现


    一、流程设计

    二、代码设计

    #coding:utf-8
    
    money = 0
    coinChoice = [1,5,10,20,50,100]
    print u'请注意只接受1,5,10,20,50,100的面值!'
    
    #drinking chose
    drinklist = {'milk':4,'cola':5,'juice':7,'xuebi':6}
    drinkNum = 0
    for key,value in drinklist.items():
        drinkNum += 1
        print u'饮料编号:%d,饮料名称:%s,单价:%s元'%(drinkNum,key,value)
    
    def putCoin():
        while True:
            coin = input(u'请输入投币金额(按q退出):'.encode('gbk'))
            #print type(coin)  #<type 'int'>
            global money
            if coin == 'q':
                print u'投币结束,余额%d元'%money
                break
            else:
                if coin not in coinChoice:
                    print u'请注意只接受1,5,10,20,50,100的面值!'
                    continue
                money += coin
                print u'您本次成功投币%d元,余额%d元'%(coin,money)
                return money
    
    #buy drinking   
    trans = True
    while trans:
        if money == 0:
            print u'您的余额为零,请投币'
            putCoin()
        else:
            drinkCode = input(u'请输入想买的饮料编号(按q退出):'.encode('gbk'))
            if drinkCode == 'q':
                print u'购买饮料结束,找零%d元'%money
                break
            else:
                if drinkCode in range(1,len(drinklist)+1):
                    num = 0
                    for k,v in drinklist.items():
                        num += 1
                        if drinkCode == num:
                            print 'drinking name:',k
                            print 'price:',v
                            if money >= v:
                                money -= v
                                #charge
                                if money > 0:
                                    print u'您购买的饮料%s花费%s元,按q退出找零%d元,欢迎下次光临!'%(k,v,money)
                                else:
                                    print u'您的余额正好用完,欢迎下次光临!'
                                    trans = False
                            else:
                                print u'抱歉,您的余额不足,请重新开始投币!'
                                putCoin()
                else:
                    print u'您输入的饮料编号不存在,请重新输入!'
                    continue

     

    三、测试用例执行

    1.投币,正常购买,退出找零

    2.投币,未购买饮料,退出找零

    3.余额不足,投币,未购买饮料,退出找零

     

     4.余额不足,投币,购买饮料,退出找零

    5.余额不足,不投币,重新选择购买饮料,余额正好用完

    6.投币金额、饮料编号不合法

    四、其他

    显然,现实中饮料机还要考虑库存够不够,零钱够不够等问题,市面上的自助饮料机大都是每件商品都有唯一的id,用户输入id购买,基本不存在投币后库存不足的情况,所以需要给每件商品贴上唯一的饮料编号;零钱呢,我想1元多多益善就可以了吧。

  • 相关阅读:
    Linux-grep 命令和find 命令 (6)
    第1阶段——u-boot分析之make 100ask24x0_config指令(1)
    shell变量$(CURDIR),$0,$1,$2,$#含义解释
    ln命令详解
    快速解决设置Android 23.0以上版本对SD卡的读写权限无效的问题
    java.io.IOException: Cleartext HTTP traffic to xxx.xxx.xxx.xxx not permitted
    AndroidStudio 3.0中之后无法打开DDMS [Android Device Monitor] 问题
    解决android sdk docs帮助文档打开慢的问题
    Android Intent的使用
    约束布局ConstraintLayout详解
  • 原文地址:https://www.cnblogs.com/Ryana/p/9234050.html
Copyright © 2020-2023  润新知