ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 网页制作 >> web前端 >> JavaScript之POS机面向对象的设计

JavaScript之POS机面向对象的设计(1/3)

来源:网络整理     时间:2015-12-25     关键词:

本篇文章主要介绍了"JavaScript之POS机面向对象的设计",主要涉及到方面的内容,对于web前端感兴趣的同学可以参考一下: 前情提要商店里进行购物结算时会使用收银机(POS)系统,这台收银机会在结算时根据客户的购物车(Cart)中的商品(Item)和商店正在进行的优惠活动(Promo...

前情提要

商店里进行购物结算时会使用收银机(POS)系统,这台收银机会在结算时根据客户的购物车(Cart)中的商品(Item)和商店正在进行的优惠活动(Promotion)进行结算和打印购物清单。

已知该商店正在对部分商品进行“买二赠一”的优惠活动。

我们需要实现一个名为printInventory函数,该函数能够将指定格式的数据作为参数输入,然后在浏览器的控制台中输出结算清单的文本。

输入格式(样例):

[
    'ITEM000001',
    'ITEM000001',
    'ITEM000001',
    'ITEM000001',
    'ITEM000001',
    'ITEM000003-2',
    'ITEM000005',
    'ITEM000005',
    'ITEM000005'
]

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

清单内容(样例,其中的打印时间为打印时的实际时间):

***<没钱赚商店>购物清单***
打印时间:2014年08月04日 08:09:05
----------------------
名称:可口可乐,数量:3瓶,单价:3.00(元),小计:6.00(元)
名称:羽毛球,数量:5个,单价:1.00(元),小计:4.00(元)
名称:苹果,数量:2斤,单价:5.50(元),小计:11.00(元)
----------------------
挥泪赠送商品:
名称:可口可乐,数量:1瓶
名称:羽毛球,数量:1个
----------------------
总计:21.00(元)
节省:4.00(元)
**********************

面向对象设计

根据需求,设立 3 个类:Order、Item 和 Promotion,其中 Item 和 Promotion 类已在模版中给出,下文中会对 Item 进行一定量的扩充。

Order 表示客户的一个订单,其中每一个具体的购买物件为一个 Item 。

在 fixtures.js 中已经给出了 loadAllItems() 接口,通过该函数可获取所有商品的基本信息。同时,通过loadPromotions() 可以获取当前的促销信息。此处,通过这两个接口来初始化购物单(Order):

main.js 中:

function printInventory (inputs) {  
    var order = new Order(loadAllItems(), loadPromotions(), inputs);
}

Order.js 的构造函数:

function Order (items, promotions, list) {  
    this.items = {};  //存储已购商品清单
    this.total = 0;  //存储需付款总价
    this.original = 0;  //存储优惠前总价
    this.initiate(items, promotions, list);  //调用初始化函数
}

Order.js 的初始化方法:

相关图片

相关文章