POS收银机 版本:v2
- 熟悉JavaScript的基本语法;
- 熟悉JavaScript的基本逻辑语句及关键字;
- 熟悉JavaScript的面向对象编程;
商店里进行购物结算时会使用收银机(POS)系统,这台收银机会在结算时根据客户的购物车(Cart)中的商品(Item)和商店正在进行的优惠活动(Promotion)进行结算和打印收据(Receipt)。
已知该商店正在对部分商品进行“买二赠一”的优惠活动,一种商品在同一时间有且仅会有一种优惠活动。
我们需要实现一个名为printReceipt
函数,该函数能够将指定格式的数据作为参数输入,然后在浏览器的控制台中输出收据的文本。
输入格式(样例):
[
'ITEM000001',
'ITEM000001',
'ITEM000001',
'ITEM000001',
'ITEM000001',
'ITEM000003-2',
'ITEM000005',
'ITEM000005',
'ITEM000005'
]
其中对'ITEM000003-2'来说,"-"之前的是标准的条形码,"-"之后的是数量,数量会有为小数的可能性。 当我们购买需要称量的物品的时候,会由称量的机器生成此类标签(Tag),收银机负责识别生成收据。
清单内容(样例,其中的打印时间为打印时的实际时间):
***<没钱赚商店>收据***
打印时间:2014年08月04日 08:09:05
----------------------
名称:可口可乐,数量:3瓶,单价:3.00(元),小计:6.00(元)
名称:羽毛球,数量:5个,单价:1.00(元),小计:4.00(元)
名称:苹果,数量:2斤,单价:5.50(元),小计:11.00(元)
----------------------
总计:21.00(元)
节省:4.00(元)
**********************
- 请尽可能的使用面向对象的思想;
- 根据
test/main-test.js
中的测试用例,在main/main.js
文件中实现printReceipt
函数,在main/model
文件夹下创建所需要使用的对象文件并且在run.html
中引用,确保测试通过; - 请在保证代码可读性的前提下,尽可能用最少的代码行数完成作业;
- 请将完成后的作业提交到自己的GitHub仓库下;
- 请保持良好的代码提交(Commit)习惯。
- 可使用
Item.all()
方法获取全部的商品,该方法返回结果为一个包含了商品对象的数组; - 每一个商品对象的结构请见
main/model/item.js
; - 可使用
Promotion.all()
方法获取全部的促销信息,该方法返回结果为一个包含有促销信息对象的数组; - 每一个促销信息对象的结构请见
main/model/promotion.js
; - 应学习并善于使用各种流行浏览器所附带的开发人员工具中的控制台(Console)功能。