【vb精品源码栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。
网学会员整理了vb精品源码-ISBN_10和ISBN_13批量互换算法及程序 - 讲义教程的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
XIANDAITUSHUQINGBAOJISHU 91 ISBN-10和ISBN-13批量互换算法及程序黎邦群惠州学院图书馆 惠州516015【摘要】主要介绍ISBN-10和ISBN-13之间的差异给出ISBN-10和ISBN-13之间进行批量互相转换的算法并在对算法进行分析的基础上采用
VB6.0实现了ISBN-10和ISBN-13批量互换程序。
【关键词】ISBN-10 ISBN-13 批量互换 算法分析 程序设计【分类号】G250.7TheAlgorithmsandProgramofBatchTransformingBetweenISBN-10andISBN-13LiBangqunHuizhouUniversityLibraryHuizhou516015China【Abstract】ThispapermainlydiscussesthedifferencebetweenISBN-10andISBN-13providesthealgorithmsofbatchtransformingbetweenISBN-10andISBN-13andrealizestheprogramofbatchtransformingbetweenISBN-10andISBN-13basedontheanalysisofalgorithmbyVB6.0.【Keywords】ISBN-10 ISBN-13 Batchtransforming Algorithmanalysis Programingdesign 收稿日期:2007-06-22 收修改稿日期:2007-08-01 国际标准书号InternationalStandardBookNumberISBN是国际标准化组织ISO于1972年通过并在国际出版界推行的、用于唯一识别文献的标准编号。
从2007年1月1日起国际标准书号的长度从10位更改为13位。
按照业界的协定“ISBN-10”表示旧版的10位ISBN而“ISBN-13”表示新版的13位ISBN。
由于图书馆原有的ISBN为10位的图书存在巨大库存而新采访的又是新版的ISBN为13位的图书使得ISBN-10和ISBN-13将在一段时间内并存。
这样就给图书馆的采访、编目、检索等工作造成了一定的影响。
有时候需要进行大量的ISBN-10和ISBN-13互换。
为此笔者于2007年开发了惠州学院图书馆ISBN-10和ISBN-13批量互换程序。
本文主要对这一程序的算法作一简要分析并在分析的基础上采用
VB6.0实现了ISBN-10和ISBN-13批量互换程序以供同行参考。
1 ISBN-10和ISBN-13的差异1.1 ISBN-10的结构 ISBN-10由10位阿拉伯数字组成并由3条短横线分成4段。
每段都有不同含义第1段是由1到5位数字组成的地区号第2段是由2到5位数字组成的出版社代码第3段是由1到6位数字组成的书序号第4段是校验码。
如ISBN7-80017-437-9中的第一段7代表中国第2段80017代表长城出版社第3段437代表由长城出版社出版的《红楼梦》一书第4段9为校验码1。
1.2 ISBN的升位方案 将现有的ISBN号增加前缀“978”ISBN从10位上升为13位。
结构上有了新的变化。
升位后的ISBN-13将总第161期 2008年 第2期92 现代图书情报技术与现今印制在条形码上的EAN-13号码形式完全相同2。
1.3 ISBN-10和ISBN-13的差异 比较ISBN-10与ISBN-13除了ISBN-13多了一组前缀号“978”其校验算法也不同。
其中ISBN-10的校验算法为:用10至2这9个数分别去乘标准书号的前9位数然后以11为模计算得到。
取值范围为0-1010由X代替。
而ISBN-13的校验算法为:1分别乘ISBN的前9位中的奇数位用3乘以偶数位乘积之和以10为模即可得到校验位的值。
其值范围为0-93。
2 批量互换及其实现原理2.1 批量互换的意义 批量互换就是利用计算机程序读取含有若干条书目数据记录的待转换的ISBN文件数据并自动批量转换成需要的ISBN-10或ISBN-13文件然后根据需要将其导出为已转换的ISBN文件。
惠州学院图书馆ISBN-10和ISBN-13批量互换程序设计的目的就是以计算机批量转换来取代人工逐条转换方式提高转换的效率减少劳动强度在短时间内完成大量转换工作。
2.2 批量互换的算法原理 批量互换程序是通过计算机自动读取存储在本地介质上的ISBN文件数据依次从上到下逐条根据需要进行互换并将转换后的ISBN文件数据输出保存。
3 批量互换程序的设计3.1 系统结构图 批量互换程序大致可分为4个流程其系统结构如图1所示:图1 批量互换程序系统结构图3.2 批量互换程序 批量互换程序是用MicrosoftVisualBasic6.0编写的。
分为读取待转换ISBN文件、进行循环判别与转换、输出转换后的文件3个部分。
1读取待转换ISBN文件程序 批量互换程序是利用
VB创建外部Excel对象来读取待转换ISBN文件的。
每个MicrosoftOffice应用程序都提供了一个顶层的Application对象在
VB中引用MicrosoftExcel9.0ObjectLibrary对象来创建外部Ex2cel对象具有简单方便、功能强大的优点。
利用
VB打开文件对话框选择待转换ISBN文件再通过程序来读取待转换ISBN文件数据。
首先定义Excel对象: DimxlAppAsExcel.Application SetxlAppCreateObjectExcel.Application 然后读取待转换ISBN文件: DimxlBookAsExcel.Workbook SetxlBookxlApp.Workbooks.Open“待转换ISBN文件的路径和名称” 取得待转换ISBN文件的行数k: kxlSheet.a1.CurrentRegion.Rows.Count-1 最后打开待转换ISBN文件中的工作薄: DimxlSheetAsExcel.Worksheet SetxlSheetxlBook.Worksheets1 用这种方法可读取MicrosoftExcel文件、Web页、文本文件、查询文件、Lotus1-2-3文件、QuattroPro/DOS文件等10种与Excel兼容的不同格式的文件4。
可以通过xlSheet.cellsxy语句来逐条读取待转换ISBN文件中的单元格内容其中变量x和y分别表示单元格的行与列。
待转换ISBN文件表中可能含有IS2BN、书名、作者、出版社等字段其文件结构如图2所示:图2 待转换ISBN文件结构图 循环读取待转换ISBN文件中的数据的语句如下: Forn2Tok1 XnxlSheet.Cellsn1.Value Next 这样就将待转换ISBN文件的ISBN列数据的值全部保存到数组X。
2进行循环判别与转换 读取待转换ISBN文件后进行循环判别与转换应用实践2012-05-172012-05-172012-05-172012-05-172012-05-172012-05-17XIANDAITUSHUQINGBAOJISHU 93 并将转换后的数据保存到数组Y这是程序的核心部分。
其关键代码如例1所示。
如果用户选择的是转换为ISBN-13: 例1: Forn2Tok1 IfLeftXn17-Then iReplace978-Xn-//去掉-并加前缀号 jiaoyanhao10-IntMidi11IntMidi2133IntMidi31IntMidi4133IntMidi51IntMidi6133IntMidi71IntMidi8133IntMidi91IntMidi10133IntMidi111IntMidi12133Mod10 Ifjiaoyanhao10Thenjiaoyanhao0 Yn978-LeftXn12jiaoyanhao ElseIfLeftisbn19Then YnXn EndIf Next 如果原ISBN为ISBN-10则在其前加前缀号“978”在其后加校验号如果原ISBN为ISBN-13则不变。
如果用户选择的是转换为ISBN-10程序的算法原理大同小异只是其校验码的计算部分有区别。
具体代码如例2所示。
例2: Forn2Tok1 IfLeftXn1978-Then iMidReplaceXn-49‘去掉-和前缀号 jiaoyanhao11-IntMidi11310IntMidi2139IntMidi3138IntMidi4137IntMidi5136IntMidi6135IntMidi7134IntMidi8133IntMidi9132Mod11 Ifjiaoyanhao0Then jiaoyanhao0 ElseIfjiaoyanhao10Then jiaoyanhaoX EndIf YnMidXn511-jiaoyanhao ElseIfLeftisbn17Then YnXn EndIf Next 如果原ISBN为ISBN-13则去掉其前缀号“978”在其后加校验号如果原ISBN为ISBN-10则不变。
3输出转换后的文件 输出并保存转换后的ISBN文件的语句如下: Forn2Tok1 xlSheet.Cellsn1.ValueYn Next xlApp.Columns.AutoFit xlBook.SaveAs“要保存的ISBN文件的路径和名称”xlTem2plate 这样就将根据要求已经转换完成的数据填充并保存到了新的ISBN文件中。
最后关闭Application对象并释放计算机系统资源: xlBook.Close xlApp.Quit SetxlAppNothing SetxlBookNothing SetxlSheetNothing 由于篇幅所限在此只提供了部分核心代码省略了其他详细的代码。
4 结 语 批量互换程序转换ISBN文件的处理能力大约为每秒300条记录当然具体还跟系统环境有关。
自从2007年惠州学院图书馆采访等部门使用该程序以来反映不错非常简单通过几次鼠标点击即可实现。
特别是处理既含ISBN-10又含ISBN-13甚至校验号有误的书商订单文件得心应手很大程度上方便了本馆采访人员保证了采访的质量。
是本馆数字化建设和提升馆藏质量的又一个重要的现代化工具。
其他图书馆如有需要可到http://seek.hzu.edu.cn/dict.htmisbn免费下载免安装纯绿色软件———ISBN-10和IS2BN-13批量互换工具进行试用。
参考文献:1 沈玉兰.ISBN升位对我国图书情报机构的影响J.现代图书情报知识200610:91-93.2 沈健.ISBN升位:影响与行动J.现代情报20062:43-483 刘怡田建良.国际标准书号ISBN升位后对图书馆的影响J.图书馆工作与研究20061:89-91.4 黎邦群.ISBN-10和ISBN-13批量互换工具EB/OL.http://seek.hzu.edu.cn/dict.htmisbn.2007-4-20.作者E-mail:seekhzu.edu.cn总第161期 2008年 第2期2012-05-172012-05-172012-05-172012-05-172012-05-172012-05-17 专 业 推 荐 ↓ 精 品 文 档