[关闭]
@jtong 2018-07-04T13:39:15.000000Z 字数 1837 阅读 1968

收银机

面试作业


需求描述

商店里进行购物结算时会使用收银机系统,这台收银机会在结算时根据客户的购物车中的商品和商店正在进行的优惠活动进行结算和打印购物小票。

已知商品信息包含:名称,数量单位,单价,类别和条形码(伪)。
已知我们可以对收银机进行设置,使之支持各种优惠。

我们需要实现一个名为打印小票的小模块,收银机会将输入的数据转换成一个JSON数据然后一次性传给我们这个小模块,我们将从控制台中输出结算清单的文本。

输入格式(样例):

  1. [
  2. 'ITEM000001',
  3. 'ITEM000001',
  4. 'ITEM000001',
  5. 'ITEM000001',
  6. 'ITEM000001',
  7. 'ITEM000003-2',
  8. 'ITEM000005',
  9. 'ITEM000005',
  10. 'ITEM000005'
  11. ]

其中对'ITEM000003-2'来说,"-"之前的是标准的条形码,"-"之后的是数量。
当我们购买需要称量的物品的时候,由称量的机器生成此类条形码,收银机负责识别生成小票。

该商店正在对部分商品进行“买二赠一”的优惠活动和对部分商品进行95折的优惠活动。其中:

要求写代码支持上述的功能,并根据输入和设置的不同,输出下列小票。

小票内容及格式(样例):

  1. ***<没钱赚商店>购物清单***
  2. 名称:可口可乐,数量:3瓶,单价:3.00(元),小计:6.00(元)
  3. 名称:羽毛球,数量:5个,单价:1.00(元),小计:4.00(元)
  4. 名称:苹果,数量:2斤,单价:5.50(元),小计:11.00(元)
  5. ----------------------
  6. 买二赠一商品:
  7. 名称:可口可乐,数量:1
  8. 名称:羽毛球,数量:1
  9. ----------------------
  10. 总计:21.00(元)
  11. 节省:4.00(元)
  12. **********************
  1. ***<没钱赚商店>购物清单***
  2. 名称:可口可乐,数量:3瓶,单价:3.00(元),小计:9.00(元)
  3. 名称:羽毛球,数量:5个,单价:1.00(元),小计:5.00(元)
  4. 名称:苹果,数量:2斤,单价:5.50(元),小计:11.00(元)
  5. ----------------------
  6. 总计:25.00(元)
  7. **********************
  1. ***<没钱赚商店>购物清单***
  2. 名称:可口可乐,数量:3瓶,单价:3.00(元),小计:9.00(元)
  3. 名称:羽毛球,数量:5个,单价:1.00(元),小计:5.00(元)
  4. 名称:苹果,数量:2斤,单价:5.50(元),小计:10.45(元),节省0.55(元)
  5. ----------------------
  6. 总计:24.45(元)
  7. 节省:0.55(元)
  8. **********************
  1. ***<没钱赚商店>购物清单***
  2. 名称:可口可乐,数量:3瓶,单价:3.00(元),小计:6.00(元)
  3. 名称:羽毛球,数量:6个,单价:1.00(元),小计:4.00(元)
  4. 名称:苹果,数量:2斤,单价:5.50(元),小计:10.45(元),节省0.55(元)
  5. ----------------------
  6. 买二赠一商品:
  7. 名称:可口可乐,数量:1
  8. 名称:羽毛球,数量:2
  9. ----------------------
  10. 总计:20.45(元)
  11. 节省:5.55(元)
  12. **********************

作业要求

  1. 请根据需求自行设计商品信息和优惠信息的数据结构,并自己准备数据;
  2. 请完成全部需求,并输出样例格示的小票;
  3. 请在保证代码可读性的前提下,尽可能用最小的圈复杂度完成作业;

加分项

  1. 良好的设计
  2. 写测试
  3. 用github提交,并且有良好的提交习惯

直接失败的减分项

  1. 压缩包打不开
  2. 以txt文件,图片,word文档等非代码形式提交作业
  3. 只提交了二进制文件,没提交代码,比如exe和class文件
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注