超市订单管理系统(SMBMS):生鲜商品管理

前言

超市要想做大,生鲜商品必定是绕不开的商品类别。生鲜商品从进货到销售的过程,每个环节都并不轻松。为此,很多超市系统,将生鲜商品独立出来管理。本文主要讨论生鲜商品的销售环节,即如何对生鲜商品进行称重和收银。

Part1.解决方案

关于超市称重商品的解决方案

※目前主流有三种解决方案

1、把生鲜商品当成普通商品看待。收银时,在数量那栏输入千克数即可。
2、购买一台称重条码机,提前录入商品信息,称重后打印出相应的条形码。收银系统通过条形码识别商品信息和千克数来进行销售。
3、电子秤与收银系统连接,收银系统直接读出千克数。

※三种方案各有利弊

第一种方法,功能简单容易实现。(但是比较费人工)
第二种方法,需要额外开发生鲜商品管理功能。(现在主流的收银系统都用这种方案,但是比较费钱费力)
第三种方法,对于收银系统读取电子秤的千克数,这项技术比较有挑战性(最理想的方式,但是技术储备不足,难以实现)。

※确定使用方案一

考虑到当前经费和精力有限,决定暂时采用方案一,再慢慢过渡到方案二。等条件成熟(技术成熟)后,采用方案三

Part2.设计与开发

方案确定之后,设计与开发就简单多了。只需要在原来商品管理上面稍加修改即可。

※改造的事项如下

1、为方便管理,在商品信息表中增加“是否为称重商品”字段

2、引入生鲜码的概念,称重商品额外拥有一个生鲜码,长度为3位数。

3、为了方便与普通商品管理,称重商品与普通商品一样都必须有一个唯一的条形码。商品条码采用国际通用的标准码(ean-13),编码规则为(暂定):其中前9位数字为统一数字,第10~12位后生鲜码,最后一位为校验码。

4、打印称重商品条形码

※使用场景说明

收银人员扫描称重商品条形码(事先将称重商品打印出来,放置在收银台),并在数量栏输入千克数即可。

※附代码:生成ean-13校验位

  1. 取出该数的奇数位和
  2. 取出该数的偶数位和
  3. 将"奇数和"与"偶数和的三倍"相加
  4. 取结果的个位数(对10取余)
  5. 用10减去这个个位数
  6. 对得到的数再取个位数(对10取余)
 public static void main(String[] args) {  
    String bar = "692116851128";
    System.out.print("该条形码的第十三位上的数字是:");
    System.out.println(change());
    System.out.println("该条形码是:"+bar+change());
 }
 public static int change(){
     int c1 = 0;
     int c2 = 0;
     int cc;
     //第1步:取出该数的奇数位和
     //第2步:取出该数的偶数位和
    for(int i=0;i<bar.length();i++){
         if((i+1)%2==0){
              c2 += bar.charAt(i)-'0';
         }else{
              c1 += bar.charAt(i)-'0';
      }
     }
     //第3步:将"奇数和"与"偶数和的三倍"相加
     cc = c1 + c2*3;
     //第4步:取结果的个位数(对10取余)
     //第5步:用10减去这个个位数
     //第6步:对得到的数再取个位数(对10取余)
     return (10 - cc%10)%10;
 }
 

Part3.扩展:生成条形码图片

本来想在商品管理里面增加一个生成条形码图片的功能。前期也从网上搜集好了相关资源和代码,但在设计的时候发现这个功能并不实用,线上的系统用不上,线下使用时也只需要打印一次即可。

本次改造主要以优化商品信息功能为主,暂时放弃开发生成条形码图片的功能

不过,前期投入不少的时间和精力,现将JAVA生成条形码的功能代码分享出来

1、下载并引入google.zxing.jar包

2、创建BarcodeUtils工具类

BufferedImage picImage = new BufferedImage(pictureWidth, pictureHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = picImage.createGraphics();
g2d.drawImage(codeImage, codeStartX, codeStartY, codeImage.getWidth(), codeImage.getHeight(), null);
g2d.setColor(Color.BLACK);
g2d.setFont(new Font("微软雅黑", Font.PLAIN, fontSize));
int wordAndCodeSpacing = 3;
g2d.drawString(bottomStr, strStartX, strStartY);
g2d.drawString(topLeftStr, strStartX, strStartY);
g2d.drawString(topRightStr, strStartX, strStartY);
g2d.dispose();
picImage.flush();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值