pos机-V0.1

1.教学目标
学会把基本描述转换成程序;
熟悉循环嵌套的使用;
2.需求描述
商店里进行购物结算时会使用收银机(POS)系统,这台收银机会在结算时根据客户的购物车(Cart)中的商品(Item)进行结算和打印购物清单。
我们需要实现一个名为printInventory函数,该函数能够将指定格式的数据作为参数输入,然后在浏览器的控制台中输出结算清单的文本。
3.输入格式(样例):

[
    {
        barcode: 'ITEM000000',
        name: '可口可乐',
        unit: '瓶',
        price: 3.00

    },
    {
        barcode: 'ITEM000000',
        name: '可口可乐',
        unit: '瓶',
        price: 3.00
    },
    {
        barcode: 'ITEM000000',
        name: '可口可乐',
        unit: '瓶',
        price: 3.00
    },
    {
        barcode: 'ITEM000000',
        name: '可口可乐',
        unit: '瓶',
        price: 3.00
    },
    {
        barcode: 'ITEM000000',
        name: '可口可乐',
        unit: '瓶',
        price: 3.00
    },
    {
        barcode: 'ITEM000001',
        name: '雪碧',
        unit: '瓶',
        price: 3.00
    },
    {
        barcode: 'ITEM000001',
        name: '雪碧',
        unit: '瓶',
        price: 3.00
    },
    {
        barcode: 'ITEM000004',
        name: '电池',
        unit: '个',
        price: 2.00
    }
]
 

 
(当点击"保存并提交代码"按钮的时候,我们会调用函数printInventory将上面的数据作为参数(inputs)传入该函数。)
4.清单内容(样例):
***<没钱赚商店>购物清单***
名称:可口可乐,数量:5瓶,单价:3.00(元),小计:15.00(元)
名称:雪碧,数量:2瓶,单价:3.00(元),小计:6.00(元)
名称:电池,数量:1个,单价:2.00(元),小计:2.00(元)
----------------------
总计:23.00(元)
**********************
5.作业要求
在main.js文件中编写实现代码并确保测试通过;
请在保证代码可读性的前提下,尽可能用最少的代码行数完成作业;
将清单输出到控制台,使测试通过 注意:所有的标点符号均为英文符号
6.作业提示
学习将重复的内容合并再转化成清单
使用console.log输出(仅允许使用一次)

7.答案:

1)定义数组item_list存放商品信息;遍历数组inputs;’判断item_list的长度是否为零;把参数item放到数组 item_list中。

function printInventory(inputs) {
  var item_list=[];      
  for(var i=0;i<inputs.length;i++) {
      var item=inputs[i];
      if(item_list.length==0){  
         item.count=1;  
         item_list.push(item);
      } 
else {
        itemListResultJudgment(inputs,i,item,item_list)    
      }
  }
  var list = getItemListResult(item_list);
  console.log(list);  
} 

2)遍历数组item_list;判断inputs[i]和item_list[j]的barcode是否相等;若相等,则item_list[j]的count加一,最后中断循环,防止数组的长度改变。若不相等,则判断是否为数组的最后一位,即数组的长度减一,然后把参数item放到数组 item_list中,最后中断循环,以防上面的循环继续。

function  itemListResultJudgment(inputs , i,item,item_list) {
   for(var j=0;j<item_list.length;j++) { 
       if(inputs[i].barcode==item_list[j].barcode){  
                item_list[j].count++;
                break;
       }
       else if(j==item_list.length-1){
               item.count=1;  
               item_list.push(item); 
               break;
       }
   }
}   

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

 

function getItemListResult(item_list)
{
    var list='***<没钱赚商店>购物清单***'; 
    var sum=0; 
    for(var n=0;n< item_list.length;n++){
    	list=list+'\n'+'名称:'+item_list[n].name+','+'数量:'+item_list[n].count+item_list[n].unit+','+'单价:'+item_list[n].price+'.00(元)'+','+'小计:'+item_list[n].count*item_list[n].price+'.00(元)';  
    	sum+=item_list[n].count*item_list[n].price;
    }
	list=list+'\n'+'----------------------'+'\n'+'总计:'+sum+'.00(元)'+'\n'+'**********************';  
    return list;
}

 详情请点击http://www.codefordream.com/courses/js-pos-boot-camp/sections/section_1/practices/normal/practice_2/items/code进行查看。

 

猜你喜欢

转载自1445060302.iteye.com/blog/2415042