POS收银机 版本:v1
教学目标
熟悉JavaScript的基本语法;
熟悉JavaScript的基本逻辑语句及关键字;
需求描述
商店里进行购物结算时会使用收银机(POS)系统,这台收银机会在结算时根据客户的购物车(Cart)中的商品(Item)和商店正在进行的优惠活动(Promotion)进行结算和打印购物清单。
已知该商店正在对部分商品进行“买三送一”的优惠活动,即买三件商品其中一件是送的,按照两件商品价格结算。
我们需要实现一个名为printInventory函数,该函数能够将指定格式的数据作为参数输入,然后在浏览器的控制台中输出结算清单的文本。
输入格式(样例):
javascript
[
'ITEM000001',
'ITEM000001',
'ITEM000001',
'ITEM000001',
'ITEM000001',
'ITEM000003-2',
'ITEM000005',
'ITEM000005',
'ITEM000005'
]
其中对'ITEM000003-2'来说,"-"之前的是标准的条形码,"-"之后的是数量。 当我们购买需要称量的物品的时候,由称量的机器生成此类条形码,收银机负责识别生成小票。 (当点击"保存并提交代码"按钮的时候,我们会调用函数printInventory将上面的数据作为参数(inputs)传入该函数。)
清单内容(样例):
***<没钱赚商店>购物清单***
名称:可口可乐,数量:3瓶,单价:3.00(元),小计:6.00(元)
名称:羽毛球,数量:5个,单价:1.00(元),小计:4.00(元)
名称:苹果,数量:2斤,单价:5.50(元),小计:11.00(元)
----------------------
挥泪赠送商品:
名称:可口可乐,数量:1瓶
名称:羽毛球,数量:1个
----------------------
总计:21.00(元)
节省:4.00(元)
**********************
作业要求
在main.js文件中编写实现代码并确保测试通过;
请在保证代码可读性的前提下,尽可能用最少的代码行数完成作业; 注意:所有的标点符号均为英文符号
作业提示
可使用loadAllItems()方法获取全部的商品,该方法返回结果为一个包含了商品对象的数组(样例):
[ item1, item2, item3, ..., itemN ]
每一个商品对象的结构如下(样例):
javascript
{
barcode: 'ITEM000000',
name: '可口可乐',
unit: '瓶',
price: 3.00
}
可使用loadPromotions()方法获取全部的促销信息,该方法返回结果为一个包含有促销信息对象的数组(样例):
javascript
[
{
type: 'BUY_TWO_GET_ONE_FREE',
barcodes: [
'ITEM000000',
'ITEM000001'
]
},
{
type: 'OTHER_PROMOTION',
barcodes: [
'ITEM000003',
'ITEM000004'
]
}
]
使用console.log输出(仅允许使用一次)
应学习并善于使用各种流行浏览器所附带的开发人员工具中的控制台(Console)功能。
f
unction printInventory(inputs) { var item; var list='***<没钱赚商店>购物清单***'; var sum=0; var item_list=[]; var cart_list=[]; var barcode_list=[]; var allItems = loadAllItems(); var item_barcode; var Promotion='挥泪赠送商品:'; var save=0; for(var i=0;i<inputs.length;i++){ item_barcode=inputs[i]; if(inputs[i].length == 10){ barcode_list.push(item_barcode); } else{ item_barcode=inputs[i].substr(0,10); barcode_list.push(item_barcode); barcode_list.push(item_barcode); } } for(var j=0;j<barcode_list.length;j++) { for(var k=0;k<allItems.length;k++){ item=allItems[k]; if(allItems[k].barcode==barcode_list[j]){ cart_list.push(item); } } } for(var l=0;l<cart_list.length;l++){ item=cart_list[l]; if(item_list.length===0){ item.count=1; item_list.push(item); } else{ for(var n=0;n<item_list.length;n++){ if(cart_list[l]==item_list[n]){ item.count++; } else if(n==item_list.length-1){ item_list.push(item); item.count=0; } } } } for(var m=0;m<item_list.length;m++) { if(item_list[m].count>=3) { Promotion+='\n'+'名称:'+item_list[m].name+','+'数量:'+parseInt(item_list[m].count/3)+item_list[m].unit; save+=parseInt(item_list[m].count/3)*item_list[m].price; } list=list+'\n'+'名称:'+item_list[m].name+','+'数量:'+item_list[m].count+item_list[m].unit+','+'单价:'+item_list[m].price.toFixed(2)+'(元)'+','+'小计:'+(item_list[m].count-parseInt(item_list[m].count/3))*item_list[m].price+'.00(元)'; sum+=(item_list[m].count-parseInt(item_list[m].count/3))*item_list[m].price; } list=list+'\n'+'----------------------'+'\n'+Promotion+'\n'+'----------------------'+'\n'+'总计:'+sum.toFixed(2)+'(元)'+'\n'+'节省:'+save.toFixed(2)+'(元)'+'\n'+'**********************'; console.log(list);
}
POS收银机 v1此题运用了: 1 for循环遍历数组;
2 对象中键所对应的值;
3 拼接字符串;
4 if else 语句;
5 数组的添加 用push;
6 substr截取字符串;
7 parseint所求的商为整数;
8 toFixed()把 Number 四舍五入为指定小数位数的数字
substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。
语法
stringObject.substr(start,length)
参数 描述
start 必需。要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2
倒数第二个字符,以此类推。
length 可选。子串中的字符数。必须是数值。如果省略了该参数,那么返回从 stringObject 的开始位置到结尾的字串。
返回值
一个新的字符串,包含从 stringObject 的 start(包括 start 所指的字符) 处开始的 length 个字符。如果没有指定 length,那么返回的字符串包含从 start 到 stringObject 的结尾的字符。
例子 1: ar str="Hello world!" console.log(str.substr(3)) 输出: lo world!
例子 2 : var str="Hello world!" console.log(str.substr(3,7)) 输出: lo worl
parseint()方法
例子: console.log(parseInt(10/3)); 输出: 3
JavaScript toFixed() 方法
定义和用法
toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。
语法
NumberObject.toFixed(num)
参数 描述
num 必需。规定小数的位数,是 0 ~ 20 之间的值,包括 0 和 20,有些实现可以支持更大的数值范围。如果省略了该参数,将用 0 代替。
返回值
返回 NumberObject 的字符串表示,不采用指数计数法,小数点后有固定的 num 位数字。如果必要,该数字会被舍入,也可以用 0 补足,以便它达到指定的长度。如果 num 大于 le+21,则该方法只调用 NumberObject.toString(),返回采用指数计数法表示的字符串。
抛出
当 num 太小或太大时抛出异常 RangeError。0 ~ 20 之间的值不会引发该异常。有些实现支持更大范围或更小范围内的值。
当调用该方法的对象不是 Number 时抛出 TypeError 异常。
实例
在本例中,我们将把数字舍入为仅有一位小数的数字:
var num = new Number(13.37); console.log (num.toFixed(1)); console.log (num.toFixed(2)); 输出: 13.37 13.4
相关推荐
POS Project v1POS收银机 版本:v1教学目标熟悉JavaScript的基本语法;熟悉JavaScript的基本逻辑语句及关键字;需求描述商店里进行购物结算时会使用收银机(POS)系统,这台收银机会在结算时根据客户的购物车(Cart...
超市pos收银机系统, 基于linux C
POS收银机版本:v1 教学目标 熟悉JavaScript的基本语法; 熟悉JavaScript的基本逻辑语句及关键字; 需求描述 商店里进行购物结算时会使用收银机(POS)系统,这台收银机会在结算时根据客户的购物车(购物车)中的...
POS收银机 版本:v1 教学目标 熟悉JavaScript的基本语法; 熟悉JavaScript的基本逻辑语句及关键字; 需求描述 商店里进行购物结算时会使用收银机(POS)系统,这台收银机会在结算时根据客户的购物车(Cart)中的商品...
linux c POS 收银机fdssfsdfasdfasfsafdasdfdsaf
首页>实用工具 >服装POS收银台 服装POS收银台 服装POS收银台 分类:实用工具|支持:手机 ( 0次评分 )直接下载 详细信息 软件大小6.74MappID1352223 版本号2.0.0开发者郑州雅威计算机科技有限公司 更新时间2021-04-...
百业通超市POS收银系统“操作简单...要多台电脑或POS收银机联网使用,可以用百业通超市网络版的软件. 【点此查看详细介绍】: http://www.bytsoft.com/jxcpossingle/jxcpossingle.htm<br>【用户问题解答系列】: ...
能够实现超市收银机的全部功能 本系统是基于Linux 平台下的超市收银机,其采用了Oracle数据库对超市商品进行管理,使用了ncurses绘制界面,美观大方,功能方便实用,不过在有些细节方面做的不够,希望有兴趣的爱好者...
基于linux平台和MySQL数据库平台,应用了ncureses界面技术、ProC数据接口技术,实现单机版超市收银系统,十分适合linux入门级技术演练和参考
收银机安装 收银机配置 收银机系统安装流程,收款机配置 收款机配置向导 一. 新机系统设置 二.安装程序 三. 收银机IP设定
POS机收银系统包含客户端和后台管理系统两部分组成。 客户端功能描述收银台、销售查询、库存查询、库存盘点、商品出库、商品入库、交接班几大模块组成; 1、用户登录模块:识别登陆用户,权限设置 2、收银模块...
超市收银软件和POS收银机选购原则
适合安装在安卓系统的收银机上收银永久免费使用
Vue实战,pos收银系统Demo。
嵌入式系统下收银系统,完成包括收银,查询,出货,及账户管理等功能
超市POS收银系统 免费版 第一种支持并口小票打印机的超市软件绿色文件 第二种支持usb接口的各家店扫条码打小票软件
百信超市POS收银系统,简单实用,免安装
【酷玩配件】ipad变身POS收银机.docx
利用java技术在讲师的指导下编写的超市pos收银系统,功能齐全,安装之后就可以实用,便捷,安全
pos 收银机原代码,机子卡没传完,希望大家共同探讨