朋友们,在你们去超市购物的时候,不知道你们有没有注意到一件事情:就是你拿着商品去结账,收银员仅仅是扫描了商品上的条形码,然后就确定了货物的价格。那他到底是怎么确定商品价格的呢,条形码中又存放了什么信息呢?
有的朋友可能会认为,很简单呀,直接把商品的价格存放在条形码中就可以了呀。这样收银员扫描的时候,直接就扫出了商品的价格了。但是,这种方案真的可行吗?
要回答这个方案是否可行,我们首先需要知道条形码都可以存储一些什么信息。条形码有好多个编码规范,一般商品上的条形码使用的规范为EAN,这种条码只能存储数字,并且长度是固定的。因此上述方案就不可行了,因为不能表示小数点。
看到这里有的朋友可能会想到电脑中对数字的表示方式了(第一位为1表示负数,为0表示正数),所以他们想用条码的第一位来固定表示是否包含小数点,例如第一位是1则认为包含了小数点,为0则表示不包含小数点,这样不就可以表示小数了吗。有朋友会疑惑小数点的具体位置问题,这里不需要讨论它的位置,因为人民币只有圆角分,默认就只有两位小数,所以使用最后两位表示小数位就行了呀。
那上面这种方式是否可行呢?其实,如果是仅仅单纯的表示一定范围商品的价格的话,上面这种方式是可以的。但是,会有问题:首先,条形码表示的数字长度是固定的,不能满足直接存储商品价格的要求,因为价格可能超出它的范围;其次,如果一个客户买了好多东西,他想看一下这些东西的价格分别是多少,或者出现价格纠纷的时候,需要查账,这时候就麻烦了,根本无法确定哪个价格对应哪个商品。也不能为客户提供购物小票,所以上述方案还是不能进行实际运用的。
那商品的价格到底是怎么确定的呢?还有商品信息又怎么和条码之间产生关系呢?
到这里,如果有朋友看过我前面发布的文章,可能就会想到解决方案了。是的,你猜的不错,这里也可以借助服务器完成的,而且超市中实际使用的方案也是这种。超市中会存在一个内部访问的服务器,在商品进入超市的时候,首先会统一为它们进行一次编码,这些编码的长度是一致的(符合条形码长度固定的特征),把它用作商品的标识符,就像大家的身份证号一样,是唯一的,它这个编码在他家超市中也是唯一存在的,所以就不会出现错乱现象。在进行编码的时候,同时也会把商品的信息,例如:商品名称、商品价格、生产厂商以及出厂日期等信息一同存储下来,并且和这个编码进行了绑定,这样就实现了商品信息和价格的存储问题。
后面收银员扫描条形码的时候,首先就会从条形码中解析出上面提到的这个编码,然后把这个编码传递到服务器上,服务器通过编码在数据表中查找到具体的商品信息以及价格返回来,然后就确定了商品的价格。多个商品扫描之后电脑会自动累加出最终的结果,而且也会把你的购物清单一起打印出来。这样就完成了整个商品价格的计算以及清单的打印了,方便后续查看。
那么,你对于条形码的使用还有哪些疑惑呢?欢迎留言讨论!喜欢笔者的朋友,欢迎点赞转发加关注!
领取专属 10元无门槛券
私享最新 技术干货