王剑波,钟劲松
(湖南教育出版社,长沙410007)
基于Excel实现书号校验码的验证
王剑波,钟劲松
(湖南教育出版社,长沙410007)
本文利用Excel软件实现书号(ISBN 10,13位)校验码的验证,并给出了具体的流程图和主要算法语句。本系统可批量验证书号和校验码的正确性,提高了出版工作的效率。
Excel;ISBN;校验码
书号,即国际标准书号(Intetnationa1 Standatd Book Numbet),简称ISBN,是国际通用的图书或独立的出版物代码,是出版物唯一的身份标识,是出版物发行和流通的国际通行证,其重要性相当于一个人的身份证和护照。
国际标准书号号码由13位数字组成,并以四个连接号或四个空格加以分割,每组数字都有固定的含义。2007年1月1日之前图书的标准书号是10位,2007年1月1日以后,所有的10位书号图书前加上“978”后重新计算校验码,转换成13位书号的形式。图1为某图书的书号,书号中的具体段的含义如下:
第一组:978;
第二组:国家、语言或区位码;
图1 某图书书号条码
第三组:出版社代号,由国家或地区的国际标准书号分配中心分给出版社;
第四组:图书编号,由出版社具体给出;第五组:校验码,只有一位,从0到9。
ISBN的最后一位数字是校验码(check-digit),校验码用来检验前面数字是否准确,这也是辨别盗版书籍、识别真假、保护知识产权的一种有效方法。
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所示。
图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