`

POS Project v0.1

 
阅读更多
POS Project v0.1
POS收银机 版本:v0.1

教学目标
学会把基本描述转换成程序;
熟悉循环嵌套的使用;
需求描述
商店里进行购物结算时会使用收银机(POS)系统,这台收银机会在结算时根据客户的购物车(Cart)中的商品(Item)进行结算和打印购物清单。

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

***<没钱赚商店>购物清单***
名称:可口可乐,数量:5瓶,单价:3.00(元),小计:15.00(元)
名称:雪碧,数量:2瓶,单价:3.00(元),小计:6.00(元)
名称:电池,数量:1个,单价:2.00(元),小计:2.00(元)
----------------------
总计:23.00(元)
**********************
作业要求
在main.js文件中编写实现代码并确保测试通过;
请在保证代码可读性的前提下,尽可能用最少的代码行数完成作业;
将清单输出到控制台,使测试通过 注意:所有的标点符号均为英文符号
作业提示
学习将重复的内容合并再转化成清单
使用console.log输出(仅允许使用一次)
程序代码:
function printInventory(inputs) {
    var new_Cart=[];
    inputs[0]['count']=1;
    var shopping_list='***<没钱赚商店>购物清单***';
    new_Cart.push(inputs[0]);
    var hadBuy=true;
    var money=0;
    for(var i=1;i<inputs.length;i++){
      for(var j=0;j<new_Cart.length;j++){
        if(inputs[i].barcode==new_Cart[j].barcode){
             hadBuy=true;
             new_Cart[j]['count']+=1;        
        }else{
              hadBuy=false;
        }
      }
       
      if(hadBuy==false){
            inputs[i]['count']=1;
            new_Cart.push(inputs[i]);
      }
    }
    for(var k=0;k<new_Cart.length;k++)
     {
         shopping_list =shopping_list+'\n'+'名称:'+new_Cart[k].name+','+'数量:'+new_Cart[k].count+new_Cart[k].unit+','+'单价:'+new_Cart[k].price.toFixed(2)+'(元)'+','+'小计:'+(new_Cart[k].price*new_Cart[k].count).toFixed(2)+'(元)';
        
          money=money+(new_Cart[k].price*new_Cart[k].count);
    
     }
    shopping_list=shopping_list+'\n'+'----------------------\n'+'总计:'+money.toFixed(2)+'(元)'+'\n'+'**********************'
    console.log(shopping_list);
}
1.
做这个例子的误区和不解:
   在利用for循环嵌套的时候,逻辑搞混了,在第九行for循环里,它本应该是循环遍历完才判断inpus数组的对象在不在new_inputs里,而我做的是只要inputs[i].barcode=new_inputs[j].barcode;
new_inputs[j]['count']+=1;
如果不等就
inputs[i]['count']=1;
new_inputs.push(inputs[i]);
这样就陷入了死循环。解决这个问题的关键就是一定要inputs数组中的一个跟对象new_inputs遍历完才去判断ture或者false。我的问题在于逻辑完全混乱,基础不扎实。
2.
另一个问题就是使用.toFixed(2),这个是js加小数点的一个方法。而不是直接拼接'.00',这是不对的。
3.
关于给变量起名字,一定要有意义,例如买过做过等等用Had或者Is。还有代码的对齐。还有布尔值的声明。
4.遍历数组,建立新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组
1 function removeDuplicatedItem(ar) {
2     var ret = [];
3
4     for (var i = 0, j = ar.length; i < j; i++) {
5         if (ret.indexOf(ar[i]) === -1) {
6             ret.push(ar[i]);
7         }
8     }
9
10     return ret;
11 }
5.
心得:
    写程序是要把大问题化简成小问题,然后把逻辑想明白,不能一条路走到死,剩下的打代码就是最简单的了。

分享到:
评论

相关推荐

    PyPI 官网下载 | ud2pos-0.1.tar.gz

    《PyPI官网下载 | ud2pos-0.1.tar.gz》 在Python的世界里,PyPI(Python Package Index)是官方的第三方软件包仓库,它为开发者提供了分享和发现Python库的平台。当我们看到"PyPI官网下载 | ud2pos-0.1.tar.gz"这样...

    思普瑞特sprtpos88v打印机驱动程序v2.143官方版

    思普瑞特sprt pos88v打印机驱动程序是一款可以有效解决思普瑞特sprt pos88v打印机在使用过程中出现的一些问题的驱动工具,本站提供了思普瑞特pos88v打印机驱动下载地址,有需要的朋友们可以前来下载使用。...

    微服务项目--技术架构图.zip

    │ 产品技术架构.pptx │ 微服务-技术分层图.pptx │ └─AI盒子架构图 AI算力盒子--架构图(改造前)V0.1.pos AI算力盒子--架构图(改造后)V0.1.png AI算力盒子--架构图(改造... 边缘计算盒子--架构图(改造后)V0.1.pos

    POSDLL V1.40.zip

    POSDLL V1.40.zip 是一个包含SDK(Software Development Kit)的压缩包,主要用于开发与POS(Point of Sale)系统相关的应用程序。SDK是软件开发者用于构建特定平台或硬件环境应用的一系列工具、库和文档的集合。在...

    pos:POS Project - 该项目通过模拟一台POS机(收银机),来锻炼学员JavaScript编程能力

    POS Project该项目通过模拟一台POS机(收银机),来锻炼学员JavaScript编程能力。使用方法将该项目Clone到自己的本地电脑上:移除项目文件夹中的.git文件夹;在项目文件夹中使用git init命令重新创建本地Git仓库;...

    思普瑞特SPRT SP-POS88V 驱动下载安装.exe

    思普瑞特SPRT SP-POS88V 驱动下载安装 使用中有任何问题可以关注并私信,如果资源对您有帮助记得关注收藏好评哟!

    Newland POS Debug(v1.16).zip

    《Newland POS Debug(v1.16):TCP Socket通讯测试工具详解》 在IT行业中,Socket编程是一种基础且至关重要的技术,它为应用程序提供了网络通信的能力。Newland POS Debug(v1.16)是一个专为调试TCP Socket客户端和...

    POS Printer Driver Setup V11.2.0.0.exe

    POS Printer Driver Setup V11.2.0.0.exe

    方向POS普及版V1.0

    【方向POS普及版V1.0】是一款专为个人或小型商业用户设计的单机收银系统,其特点是虽然版本较旧,但功能完备且稳定性强。在IT领域,POS(Point of Sale)系统通常指的是销售点管理软件,用于帮助商家进行商品销售、...

    pos.v3.61.rar_Office_POS Delphi

    本文将深入探讨一款名为"Office POS Delphi"的超市管理系统,该系统由版本v3.61的源代码组成,存储在一个名为"pos.v3.61.rar"的压缩包内,其数据库部分采用了Microsoft Access,为用户提供了一种高效且易用的解决...

    POS P5876 Driver Setup V7.11.exe

    java基础知识)学习笔记

    POS机通用驱动,58mm系列打印机安装选择POS58 76mm系列打印机安装选择POS76 80mm系列打印机安装选择POS8

    POS机,全称为Point of Sale,是销售点终端的意思,主要应用于零售、餐饮等行业的收银系统。在本文中,我们将深入探讨POS机通用驱动的安装与选择,特别是在58mm、76mm以及80mm系列打印机上的应用。 首先,我们需要...

    JAVAPOS V1.14笔记

    JAVAPOS,JAVAPOS,JAVAPOS,JAVAPOS

    pos5890热敏票据打印机驱动 官方最新版(32位/64位)

    pos5890热敏票据打印机驱动由为大家带来该打印机的驱动安装包,pos5890热敏票据打印机具有功耗小、运行成本低的特点,而且它的打印速度,字迹清晰度也同样很出色,是目前行业中最优秀的票据打印机。本次小编为大家...

    POS热敏打印机驱动POS58 POS80通用

    POS热敏打印机驱动是连接和控制POS(销售点)设备,如POS58和POS80打印机的关键软件组件。在商业环境中,这类打印机主要用于快速打印收据、订单和其他交易记录。驱动程序的作用在于翻译计算机的指令,使得硬件设备...

    pos:POS Project 学员版

    POS Project Homework 该项目通过模拟一台POS机(收银机),来锻炼学员JavaScript编程能力。 项目地址请见: https://github.com/iamcoach/pos 作业进度 第一周:pos_v1 (done) 第二周:pos-oop(done) 第三周:pos-...

    购物-考拉畅付pos机 v1.1.4.zip

    【标题】"购物-考拉畅付pos机 v1.1.4.zip"指的是考拉畅付POS机的安卓应用程序的特定版本,版本号为1.1.4。考拉畅付POS机是一款专为商家设计的移动支付解决方案,允许用户通过手机进行便捷的收付款操作。 【描述】...

    POSDLL_CHN_V1.35

    本文将深入探讨一个名为“POSDLL_CHN_V1.35”的动态链接库(DLL),它为开发者提供了一种直接控制POS打印机的方法,并附带了VC++的示例程序,以帮助开发者更好地理解和应用。 POSDLL动态库是专为POS打印机设计的...

    购物-考拉畅付pos机 v1.1.4 安卓版.zip

    《购物-考拉畅付pos机 v1.1.4 安卓版》是一款专为安卓用户设计的便捷支付应用,旨在提供高效、安全的移动支付解决方案。在当今数字化时代,移动支付已经成为日常生活中不可或缺的一部分,尤其在购物场景中更是扮演着...

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

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

Global site tag (gtag.js) - Google Analytics