基于Excel实现书号校验码的验证

2016-09-05 09:53王剑波钟劲松
中国管理信息化 2016年13期
关键词:书号校验码位数

王剑波,钟劲松

(湖南教育出版社,长沙410007)

基于Excel实现书号校验码的验证

王剑波,钟劲松

(湖南教育出版社,长沙410007)

本文利用Excel软件实现书号(ISBN 10,13位)校验码的验证,并给出了具体的流程图和主要算法语句。本系统可批量验证书号和校验码的正确性,提高了出版工作的效率。

Excel;ISBN;校验码

1 书号(ISBN)简介

书号,即国际标准书号(Intetnationa1 Standatd Book Numbet),简称ISBN,是国际通用的图书或独立的出版物代码,是出版物唯一的身份标识,是出版物发行和流通的国际通行证,其重要性相当于一个人的身份证和护照。

国际标准书号号码由13位数字组成,并以四个连接号或四个空格加以分割,每组数字都有固定的含义。2007年1月1日之前图书的标准书号是10位,2007年1月1日以后,所有的10位书号图书前加上“978”后重新计算校验码,转换成13位书号的形式。图1为某图书的书号,书号中的具体段的含义如下:

第一组:978;

第二组:国家、语言或区位码;

图1 某图书书号条码

第三组:出版社代号,由国家或地区的国际标准书号分配中心分给出版社;

第四组:图书编号,由出版社具体给出;第五组:校验码,只有一位,从0到9。

2 校验码的作用

ISBN的最后一位数字是校验码(check-digit),校验码用来检验前面数字是否准确,这也是辨别盗版书籍、识别真假、保护知识产权的一种有效方法。

3 校验码的计算

3.1图书书号10位校验码的算法

第一步计算加权和:将ISBN号码前9位数字分别乘以10,9,8,7,6,5,4,3,2,然后将它们相加,得到加权和(设该加权和为S);

第二步计算余数:将第一步得到的和(S)除以11,取其余数(设该余数为M);

第三步计算校验码:用11减去第二步得到的余数(M),所得之差就是校验码(N)。

说明:校验码只有一位,从0到10,其中余数是10时校验码用X代替。

[例1]书号为7-5064-2595-5的图书校验码计算方法如图2所示。

图2 图书校验码计算方法(例1)

3.2图书书号13位校验码的算法

第一步计算加权和:用1分别乘ISBN的前12位中的奇数位,用3乘以偶数位,然后将两者相加,即得到加权和(设该加权和为S);

第二步计算余数:即将第一步得到的加权和除以10,取其余数(设该余数为M);

第三步计算校验码:即用10减去第二步得到的余数,所得之差就是校验码。同样,余数为10时校验码用X表示。

[例2]书号为978-7-5064-2595-7的图书校验码的计算方法如图3所示。

图3 图书书号校验码计算方法(例2)

4 基于ExCel实现图书校验码的验证

图书的校验码的验证框图如图4所示。

图4 图书书号校验码验证框图

利用Exce1实现书号校验码验证的主要代码如下:

第一步:标准化输入的书号,去掉单元格A3中书号的“-”和空格””符号。

B3=SUBSTITUTE((SUBSTITUTE(A3,"-","")),"","")第二步:判断B3单元格中书号的位数,如果书号的位数不是10或13,且书号的前9位或者前12位必须为数字,返回数值“0”,否则,返回数值“1”。

=IF(ISERROR(B3*1),0,IF(OR(LEN(B3)=10,LEN(B3)= 13),1,0))

第三步:如果B3单元格返回值为“1”,表示书号的位数正确,且由数字组成,否则显示书号错误。接下来对书号校验码进行计算,计算时先判断书号的长度,如果为10位,则采用10位校验码的计算方法;如果为13位,则采用13位校验码的计算方法。

//ISBN10位数的校验码计算方法

=IF((11-MOD(SUMPRODUCT(MID(B3,{1;2;3;4;5;6;7;8;9},1)*({10;9;8;7;6;5;4;3;2})),11))=10,”X”,(11-MOD(SUMPRODUCT(MID(B3,{1;2;3;4;5;6;7;8;9},1)*({10;9;8; 7;6;5;4;3;2})),11))

//ISBN13位数的校验码计算方法MOD10

=10-MOD(SUMPRODUCT(MID(B3,{1;2;3;4;5;6;7;8;9;10;11;12},1)*({1;3;1;3;1;3;1;3;1;3;1;3})),10)

第四步:比较单元格C3中的数字或者符号,是否与B3最后一个数字或者字母相同。如果相同,则返回“校验码正确”,否则返回“校验码错误”,并把结果显示在单元格D3中。

//比较结果,计算结果是否与单元格B3最后一位数字或符号相同

=IF(IF(RIGHT(B3,1)="X",VALUE(C3)=10),

"校验码正确",IF(C3=VALUE(RIGHT(B3,1)),"校验码正确","校验码错误"))

本系统不仅可以批量地检测图书的检验码,还可以生成新的正确的校验码,如图5所示。

图5 图书书号校验码核对

现代社会高度信息化,作为出版行业的从业者需要熟悉使用Exce1,使用Exce1编制一些简单的应用程序来提高工作效率。譬如开发图书成本的计算,书号、刊号校验码的验证和计算小程序等等。充分利用这些小程序,高效、准确地完成任务,挤出更多的时间来完成创造性的任务。

10.3969/j.issn.1673-0194.2016.13.042

F273

A

1673-0194(2016)13-0082-03

2016-02-23

猜你喜欢
书号校验码位数
身份证号码中的数学知识
我国书号管理制度:功能、效果及反思
五次完全幂的少位数三进制展开
英美书号的管理现状
基于FPGA的循环冗余校验码设计
身份证号码中的数学
版权页里的学问、问题与维权意识的树立
遥感卫星CCD相机量化位数的选择
“判断整数的位数”的算法分析
基于分位数回归的剪切波速变化规律