6.6 项目六编程实现求解条形码的校验码

更新于 2026年10月10日 版权声明
6.6 项目六编程实现求解条形码的校验码

1.项目需求

通过程序设计实现对13位条码的第十三位校验码的求解。

2.项目分析

商品的条形码或条码在生活中很常见,它是通过黑白条有规则的排列来表示一组信息的图形标识符。常见的条形码是由反射率相差很大的黑条(简称条)和白条(简称空)组成的平行线图案。

常见的条形码有20多种,有一维、二维之分,如Code39码(标准39码)、Codabar码(库德巴码)、UPC-A码、UPC-E码、EAN-13码、EAN-8码、ISBN码、ISSN码、Code128码等。

下面我们来研究EAN-13码。EAN-13码通常由13位数字组成,其中,第1~3位表示国家的编码,例如,690~695表示中国的代码,也就是说,当我们看到商品条形码前三位位于690~695这六种编码之间时,表示该商品为中国制造;第4~8位表示厂商的代码,不同企业有不同的编码;第9~12位表示该企业生产商品的代码,一个企业可以生产很多商品,那么每种商品都有唯一的代码;第13位是校验码,用来校验前12位编码是否正确,没有特定的含义。

校验码的求解有以下方法:

前12位数字中包括了6个奇数位和6个偶数位,首先算出6个奇数位的和、6个偶数位的和,然后用偶数位的和的3倍和奇数位的和相加求出总和,并将总和的个位求出,最后求出10与个位差的个位即为校验码。

3.程序设计

根据上述计算校验码的步骤,利用之前学过的循环、数组等知识可知,算法中涉及奇数位和、偶数位和两个变量,可以选择odd作为奇数位和,even作为偶数位和,使用barcode数组来存放条形码的13位数字。因为条形码为13位,所以数组中元素的个数至少为13。可以编写程序如下:(https://www.daowen.com)

图示

选取生活中常见商品的条形码对程序进行验证。例如,维达纸面巾的条形码为6901236371077,程序运行结果为7,与最后一位校验码7是一致的;三元极致盒装的250 ml鲜牛奶的条形码为6947750490726,程序运行结果为6,与最后一位校验码6也是一致的。

可进一步简化程序:

图示

在简化后的程序中,减少了变量j、sum、check,并且将变量的定义进行了合并,将原来的两个for循环合并为1个,循环语句在1个for循环中实现。在设计过程中,一定要注意将所有的循环语句用一对“{}”括起来,否则程序的运行结果将出现错误。在输出语句中,对于校验码的输出,也通过表达式代替了原来的check变量。虽然整个程序比原来的简化了,但功能是一样的。

选取了盒装大白兔花生牛轧糖的条形码6922024732672对简化后的程序进行验证,程序运行结果为2,与最后一位校验码2是一致的。

在最后一步校验码的求解中,如果加上再进行一次取余的操作,那程序就更加严谨了,可以避免总和个位为0,校验码算出为10的情况。这个程序请读者自己编程实现。

4.举一反三

利用本项目中的程序去验证690~695之间的各种条形码,并思考更简便的程序设计方法。

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)