[关闭]
@jtong 2016-03-14T02:22:52.000000Z 字数 771 阅读 370

收银机-2

面试作业


本问需要支持会员卡,会员卡的卡号为12位数字加一个标志位。
当标志位为空时,则是普通会员。
当标志位为G时,则是金牌会员。

会员可以享受会员折扣。
每次推出会员折扣时,店员会输入折扣的程度,金牌会员和普通会员的折扣数是不一样的。

普通会员在结算时,可以替换掉一个商品的一个非会员优惠,系统会自动计算替换掉哪一个商品的哪一个非会员优惠更省钱,自动选择最省钱的一个进行折扣。如果替换任何一个都不省钱,则不进行替换。
在非会员优惠之间有冲突的情况的时候,先结算替换。
会员折扣与其他优惠都不冲突。不冲突的时候,就需要叠加处理,叠加时计算每一个优惠的起始状态为没有享受任何优惠时的原始值。
如果小票上的商品,没有任何一组有普通优惠,也就不享受会员折扣。

举例
当“羽毛球”既符合“买二赠一”优惠条件,又符合“九五折”优惠条件的商品的时候。
且当普通会员的折扣为88折时,替换掉九五折的折扣就会比较合算。因为会员折扣不与买二赠一冲突,所以小票就是:

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

金牌会员在结算时,享受折上折,也就是在非会员优惠结算完毕的基础上再进行金牌会员折扣的计算。
但是金牌会员的折扣,是对每一组有优惠的商品都起作用的。
同样如果小票上的商品,没有任何一组有普通优惠,也就不享受会员折扣。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注