欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

pos机

程序员文章站 2022-07-11 10:51:49
...
POS Project v0.2
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(元)
**********************
实现过程如下所示:
//函数功能:统计商品的数量(count)并且构造新的对象形式.
function get_goods_count(inputs){                            
    var goods_count_list={};            
    for(var i=0;i<inputs.length;i++){                                   //利用for循环inputs数组.
        if(goods_count_list.hasOwnProperty(inputs[i])){    //判断是否含有键名为inputs[i]的元素
            goods_count_list[inputs[i]].count++                     //含有直接count++
        }
        else{ 
            goods_count_list[inputs[i]]={count:1};                  //不含有:定义键名为inputs[i],键值为{count:1}
        }
    }
   return goods_count_list;                                                 
}
//函数的功能:构造一个键名为商品编号,键值为商品信息(包含count值)
function get_goods_list(goods_count_list,AllItems){       
    var goods_list={};                                                                
    for(var goods_barcode in goods_count_list){                             //遍历goods_count_list对象获取购物的数量,及商品的编码
        for(var i=0;i<AllItems.length;i++){                                           //遍历items数组获取商品信息
            if(goods_barcode==AllItems[i].barcode){                           //获取已购买商品的单位 单价 名称 信息 
                 
                AllItems[i].count=goods_count_list[goods_barcode].count     //给items中每个商品植count 
                goods_list[AllItems[i].name]=AllItems[i]
            }
        }
        }
    return goods_list;
}
function print_goods_list(goods_list){                                                           //进行字符串的拼接
    var new_goods_list="";
    var total =0;
    for(var goods_name in goods_list){                                                       
        total+=goods_list[goods_name].count*goods_list[goods_name].price;
        new_goods_list+="名称:"+goods_list[goods_name].name+",数量:"+goods_list[goods_name].count+goods_list[goods_name].unit+",单价:"+goods_list[goods_name].price+".00(元),小计:"+goods_list[goods_name].count*goods_list[goods_name].price+".00(元)\n"
    }
    var goods_list_title="***<没钱赚商店>购物清单***\n"
    var goods_list_late="----------------------\n总计:"+total+".00(元)\n**********************"
    new_goods_list=goods_list_title+new_goods_list+goods_list_late
    return new_goods_list;  
}
函数的调用
function printInventory(inputs) {                                         //  进行行数的调用
    var AllItems=loadAllItems();                                              
    
    var goods_count_list=get_goods_count(inputs);
    var goods_list=get_goods_list(goods_count_list,AllItems)
    var new_goods_list=print_goods_list(goods_list);
   
    console.log(new_goods_list)
}