图书订单筛选设计与算法研究
——以山东职业学院图书馆为例
2018-04-01伏立霞李曰颖
伏立霞 李曰颖
山东职业学院 山东 济南250104
订单筛选工作是图书馆采购图书的第一环节,是保证图书采访质量的重要工作。本文以山东职业学院图书馆为例,分析了图书订单筛选中出现的各种问题,利用VBA(VisualBasicforApplications)设计了一套快速有效的图书订单筛选算法,以期提高图书采访质量。
一、图书订单筛选问题需求分析
目前,图书采购订单通过采集器或系统查重后,反馈回来的订单仍存在很多问题,需采访人员筛选后再进行订购。从书商反馈回来的订单Excel格式,包含国际标准书号(InternationalStandardBookNumber,简称ISBN)、题名、出版社、出版日期、定价等字段。每个图书馆的筛选原则大同小异,尽管侧重点不一样,但筛选处理方法基本相同。
1.筛选空格,完善数据
从书商反馈回来的订单数据会出现信息不全的数据记录,如缺少题名、出版社等字段。
2.筛选本馆禁止类图书
对于高校(除幼儿师范)图书馆而言,少儿类图书是禁止购买的。本科院校不购买高职高专类图书,高职院校图书馆无需采购考博、考研类用书。
3.筛选复本设定
图书馆对不同大类、不同价格的图书,复本要求会不一样,低价和高价图书的复本也不一样。
4.筛选出版日期要求
很多图书馆对于出版日期的筛选有限定要求。倾向于订购新书甚至只要当年出版的图书馆,需筛掉某出版日期之前的图书。
二、订单筛选模块设计
1.空格数据处理模块
本模块主要功能是筛选出订单数据中含有空格的记录,并把这些记录整理形成单独的空格记录表格,以Outlook邮件的方式直接发送给书商。
2.字符筛选处理模块
本模块的功能是筛选本馆禁止购买的图书,鉴于每个图书馆的要求不一样,本模块在设计时增加了自由添加筛选条件的功能。
3.复本设定模块
本模块共分两大部分:一是按照价格设定,高价图书与低价图书复本分别设定;二是按照《中国图书馆分类法》分类设定复本。
4.出版日期筛选模块
本模块主要功能是过滤某一出版日期之前的数据记录,具体日期根据各馆要求自由输入。
三、算法设计与技巧
从书商返回的订单都是Excel格式文件,此格式文件易操作处理,采用基于VBA的开发方式最为合适。本算法设计分为两大模块,模块一为空格数据筛选处理,模块二将字符筛选处理、复本设定、出版日期筛选合为一体。从书商处返回的Excel格式文件中,P列为订购册数设定,其中P2为小于或等于100元订3册,P3为100至200元订2册,P4为大于或等于200元订1册,P6—P9为中图法分类设定订购册数,Q列为筛选日期设定,Q2为2014年1月1日之前不订,O列为筛选字符设定。各馆根据自身实际需求随意设定。以下以伪代码方式介绍,//后为注释。
1.模块一算法与设计
功能:将“原始书单”中含空单元格数据剪切到“删除书单”。
伪代码如下:
Ifi=6Then结束本次循环 //第六列(订数)除外,此时为空
//大于最后一行说明本列无空白单元格,直接进入下一循环
Ifi列第一个空单元格所在行数<=Sheet1的数据最后一行
Then//含空单元格的数据行排到表的后面
以i列进行排序
将每列含空单元格的数据行剪切到sheet3中
r=sheet3的最后一行
End If
2.模块二算法与设计
功能:首先,将筛选字符写入字典,提取P2、P3、P4单元格的价格和册数,将P6—P9的字符写入HashTable,提取Q2单元格内的日期。其次,筛选Q2单元格日期以前的图书。再次,筛选包含O列字符的图书。最后,按P列给出的订购要求确定订购册数。
伪代码如下:
IfP6-P9单元格为空
Then //按单价确定册数
Else //按中国图书馆分类法确定册数
IfP4单元格不为空
Then //有单价要求,提取参数
m2=P4单元格中的金额
m3=Q2单元格中的日期
n3=是P4单元格中的册数
Else //无单价要求,只提取日期
m3=Q2单元格中的日期
EndIf
EndIf
四、运行测试结果
经过严格测试,该算法在图书采访过程中发挥了较大作用,提高了图书采访的效率和准确率。