`
qiannianhua
  • 浏览: 19060 次
社区版块
存档分类
最新评论

JS pos机- V0.2

 
阅读更多

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

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

输入格式(样例):

[
    'ITEM000000',
    'ITEM000000',
    'ITEM000000',
    'ITEM000000',
    'ITEM000000',
    'ITEM000001',
    'ITEM000001',
    'ITEM000004'
]

(当点击"保存并提交代码"按钮的时候,我们会调用函数printInventory将上面的数据作为参数(inputs)传入该函数。)

清单内容(样例):

***<没钱赚商店>购物清单***
名称:可口可乐,数量:5瓶,单价:3.00(元),小计:15.00(元)
名称:雪碧,数量:2瓶,单价:3.00(元),小计:6.00(元)
名称:电池,数量:1个,单价:2.00(元),小计:2.00(元)
----------------------
总计:23.00(元)
**********************

 

function loadAllItems() {
    return [
        {
            barcode: 'ITEM000000',
            name: '可口可乐',
            unit: '瓶',
            price: 3.00
        },
        {
            barcode: 'ITEM000001',
            name: '雪碧',
            unit: '瓶',
            price: 3.00
        },
        {
            barcode: 'ITEM000002',
            name: '苹果',
            unit: '斤',
            price: 5.50
        },
        {
            barcode: 'ITEM000003',
            name: '荔枝',
            unit: '斤',
            price: 15.00
        },
        {
            barcode: 'ITEM000004',
            name: '电池',
            unit: '个',
            price: 2.00
        },
        {
            barcode: 'ITEM000005',
            name: '方便面',
            unit: '袋',
            price: 4.50
        }
    ];
}

 

describe('practice-1-3', function () {
    var allItems;
    var inputs;

    beforeEach(function () {
        allItems = loadAllItems();
        inputs = [
            'ITEM000000',
            'ITEM000000',
            'ITEM000000',
            'ITEM000000',
            'ITEM000000',
            'ITEM000001',
            'ITEM000001',
            'ITEM000004'
        ];
    });

    it('should print correct text', function () {

        printInventory(inputs);

        var expectText =
                '***<没钱赚商店>购物清单***\n' +
                '名称:可口可乐,数量:5瓶,单价:3.00(元),小计:15.00(元)\n' +
                '名称:雪碧,数量:2瓶,单价:3.00(元),小计:6.00(元)\n' +
                '名称:电池,数量:1个,单价:2.00(元),小计:2.00(元)\n' +
                '----------------------\n' +
                '总计:23.00(元)\n' +
                '**********************';

          expect(logs[0]).toBe(expectText);
    });
});

   答案:

1)定义求和变量sum、count、item,并赋值sum、count为零;定义数组cart_list和item_list存放商品信息:

var sum=0;
    var cart_list=[];
    var item;
    var item_list=[];
    var count=0;

 

 2)把loadAllItems()函数赋给变量allItems:

var allItems=loadAllItems();

 

 3)遍历inputs数组,再遍历allitems,然后判断它们的barcode是否相等,把参数allitem放到数组cart_list中:

inputs.forEach(function(input){                           
        allItems.forEach(function(allitem){ 
            if(allitem.barcode == input)   
            {
                cart_list.push(allitem);  
            }
         })
     })

 

 4) 遍历car_list数组,把carts赋值给item,再判断数组长度是否为零:

cart_list.forEach(function(carts){  
                item=carts;
                if(item_list.length === 0)   
                {
                  
                }

 

 5)如果遍历的参数的barcode在item数组里有,则把该参数的数量加1,然后跳出本次循环:

if(items.barcode == item.barcode)
                        {
                            items.count++;
                            return;  
                        }

 

 6)判断是否已经遍历到最后一个对象了,如果数组里面没存有该对象,则把该参数放到数组里,并赋值为1:

else if(index == item_list.length-1)   //判断是否已遍历到最后一个对象
                        {
                            item.count=1;
                            item_list.push(item);
                        }             

 

 7)最后遍历数组item_list,循环遍历输出,再计算商品的总价格,并且打印输出结果:

item_list.forEach(function(allitems){
        list=list+'\n'+'名称:'+allitems.name+',数量:'+allitems.count+allitems.unit+',单价:'+allitems.price+'.00(元)'+',小计:'+allitems.count*allitems.price+'.00(元)';
         sum += allitems.count*allitems.price;    //计算总价格
    })
console.log(list+'\n'+'----------------------'+'\n'+'总计:'+sum+'.00(元)'+'\n'+'**********************');

 

 

分享到:
评论

相关推荐

    电子-POSV0.2.zip

    压缩包中的“POS_V0.2”很可能是指POS系统的源代码、固件或者配置文件,这些内容可能包括以下几个方面: 1. **源代码**:开发人员编写的程序代码,可能用C或C++等语言编写,用于实现POS系统的业务逻辑,如商品扫描...

    node-escpos-3_node打印机_Node.js_node-escpos_escnodejs_escpos_

    对于零售、餐饮等需要快速响应的行业,POS(Point of Sale,销售点)系统是不可或缺的一部分,而“node-escpos”就是这样一个基于Node.js的库,专为Windows环境下的POS打印机提供服务。这个库允许开发者通过Node.js...

    联迪pos机 驱动

    联迪pos机驱动联迪E550移动pos机 - 移动pos机,银联pos机,

    pyltp_binary-0.2.1.0-cp38-cp38-win_amd64

    "pyltp_binary-0.2.1.0-cp38-cp38-win_amd64" 是一个针对Python 3.8版本、64位Windows操作系统的软件包,主要用于自然语言处理(NLP)领域。这个包是基于LTP(Language Technology Platform,语言技术平台)的Python...

    FX-TRN-POS日文版---三菱教学软件: 电机定位控制教学软件日文版

    FX-TRN-POS日文版---三菱教学软件: 电机定位控制教学软件日文版---三菱学习小软件+方便快捷+初学者的最佳帮手

    15企业流程管理之聪明整合[教材]---加油站POS系统--信.pptx

    15企业流程管理之聪明整合[教材]---加油站POS系统--信.pptx

    15企业流程管理之聪明整合[教材]---加油站POS系统--信息化建设(ppt文档).ppt

    15企业流程管理之聪明整合[教材]---加油站POS系统--信息化建设(ppt文档).ppt

    pos机对接SDK

    POS机对接SDK是一种软件开发工具包,主要用于帮助开发者在C#环境下实现与POS(销售点)设备的交互。8583是金融行业的标准报文格式,全称为ISO 8583,用于电子支付系统中的数据交换。在这个场景中,8583报文被用来...

    POS机陆续都到了,拆开芯片型号整理下

    POS 机芯片型号整理 POS 机是指点售机,是一种电子支付终端,能够为用户提供便捷的支付服务。随着科技的发展,POS 机的芯片型号也在不断更新换代。下面,我们将对 POS 机的芯片型号进行整理和分析。 1. 主控芯片 ...

    公达pos1200打印机驱动 v0.2.5.2 官方最新版

    公达pos1200驱动是由公达官方为该型号的POS打印机打造的一款驱动程序,用户安装了驱动程序以后,就可以让打印机与电脑顺利的进行连接,轻松完成日常的打印工作,欢迎有需要的朋友下载使用!使用说明P代表并口LPTU...

    03481 飞达商贸有限公司POS系统--JavaEE 项目开发培训视频(PPT 27页).ppt

    03481 飞达商贸有限公司POS系统--JavaEE 项目开发培训视频(PPT 27页).ppt

    Android代码-安卓版本pos机

    【Android代码-安卓版本pos机】项目主要涵盖了在Android平台上开发的一款移动支付终端应用,它允许用户通过智能手机或平板电脑进行类似于传统POS机的交易操作。这个项目的核心目标是将传统的零售支付体验移植到移动...

    esc_pos-php-development.zip

    首先,ESC/POS(Escape POS)是一种打印机控制语言,广泛应用于各种热敏收银机和条形码打印机。这种语言由一系列的控制序列组成,用于指示打印机执行特定操作,如文本打印、图像打印、条形码生成等。理解并掌握ESC/...

    java串口连接pos机输入输出.zip_java接pos机_poss机对接开发_pos机串口对接_串口jar包_串口pos机

    在IT行业中,尤其是在支付系统和零售业,与POS(Point of Sale)机的通信是至关重要的。本项目涉及的是使用Java进行串口通信,以便与银联POS机进行交互。以下将详细介绍这个过程中的关键知识点。 1. **Java串口通信...

    ESC-POS-USB-NET:该项目是使用USB设备驱动程序的Epson ESCPOS打印的简单.NET(C#)实现

    打印ESC / POS变得简单快捷。 最先进的开源,可毫不费力地构建功能强大的热敏打印解决方案。 ESC-POS-USB-NET是使用USB设备驱动程序的爱普生ESC / POS打印的免费开放源.NET(C#)实现。 专注于您的业务逻辑。 ...

    pos-machine_UML.rar_pos_pos机类图

    本案例中的“pos-machine_UML.rar”是一个压缩包,包含了一个名为“pos_machine_UML.mdl”的文件,这很可能是用某种UML建模工具创建的类图模型,专门描绘了POS(Point of Sale,销售点)机的系统结构。POS机是商业...

    8210pos机下载软件

    - DownloadTool-V3.5.2.CHS 和 DownloadTool-V3.5.2.ENU 可能是下载工具的不同语言版本,分别对应简体中文和英文,用户可以根据需要选择合适的版本来下载和安装8210POS机的相关软件。 - 8210.exe 可能是8210POS机的...

    拉卡拉T1智能POS机拆解.pdf

    根据上述提供的文件信息,我们可以提炼出一系列有关拉卡拉T1智能POS机拆解的知识点。以下内容会围绕智能POS机的核心技术和物料选项进行详细阐述: 1. 拉卡拉T1智能POS机外观 智能POS机作为移动支付终端设备,其外观...

    购物-易通支付pos机软件 v2.0.8.zip

    【易通支付POS机软件 v2.0.8】是一款专为教育教学领域设计的移动支付应用,它将便捷的支付功能与教学管理相结合,旨在提升教育机构财务管理的效率和安全性。这款软件允许用户通过安卓设备进行各类交易操作,简化了...

Global site tag (gtag.js) - Google Analytics