小说网 找小说 无限小说 烟雨红尘 幻想小说 酷文学 深夜书屋

汉语著者号自动生成系统的设计与实现

汉语著者号自动生成系统的设计与实现
李 华
(成都大学图书馆 成都610106)
  【摘要】 以著者的四角号码为取号依据,设计编写“汉语著者号自动生成系统”,对该系统测试后发现,编
目人员运用此系统可以快速、准确地生成符合成都大学图书馆要求的著者号。
  【关键词】 计算机编目 著者号 书次号    【分类号】 G254.13
DesignandImplementationofAutomaticGeneratingSystem of
ChineseAuthorNumber
LiHua
(LibraryofChengduUniversity,Chengdu610106,China)
  【Abstract】 Basedonthefour-cornercodingsystemoftheauthor,an“automaticgeneratingsystemofChinese
authornumber”isdesignedinthispaper.Aftertestingthesystem,thelibrarianscangettheauthornumberquicklyand
accuratelythroughthissystem,whichmeetsourlibraryrequirementswell.
  【Keywords】 Computercataloguing Authornumber Booknumber
  收稿日期:2007-10-09
  收修改稿日期:2007-10-24
  “著者号”是书次号的一种和索书号的重要组成部
分,也是图书分类的延伸和深化,它是按照图书著者姓氏
(包括集体著者)的字母或汉字的笔顺、笔画来确定编
码。它能集中同一著者的同类图书,并能按一定的次序
将不同著者的图书进行排序。著者号一般有拼号法和查
号法两种。拼号法无需编制著者号码表,而依据规则取
号,比如成都大学图书馆(以下简称本馆)则依据“四角
号码”+“自定”取号规则。查号法是根据已编制好的著
者号码表取号。如美国的《克特号码表》,俄国的《哈芙
金娜著者号码表》,我国的《通用汉语著者号码表》等。
  目前,各馆的书次号编码方式种类繁多复杂,软件开
发商很难在图书编目子系统中嵌入某种具体的编码方
式。这给各馆自行开发“书次号”自动生成系统创造了十
分有利的条件。鉴于此,本馆自行开发、设计并实现了
“汉语著者号自动生成系统”。
1 系统设计思想
1.1 系统的总体设计思路
  开发本系统的目的是改进现有的人工编制方法,减
轻图书编目人员的劳动强度,提高工作效率[1];杜绝多人
编目导致取号不同的现象;确保书目数据的正确性、规范
性,以及书目数据质量的稳定性。
1.2 界面布局
  本系统界面分为4大区域。它们分别是:顶部的“编
辑菜单”功能区;窗口上部的汉语著者和四角号码显示
区;左下部的著者号生成和拼音显示区;右下部的“著者”
输入窗口及按钮功能操作区。
1.3 系统的主要功能
  本系统的主要功能:
  (1)用于中文图书著者号的自动生成。
  (2)该软件窗口可以随意移动和最小化。
  (3)可将“编目子系统”中200字段的“著者”进行随意复
制、剪切、粘贴到该软件的文本输入框中。
  (4)点击界面上的“查找”按钮,便可快速地自动生成符
合我馆要求的著者号,并将此号自动存入到“粘贴板”中。
  (5)编目员只需点击“粘贴”,著者号就会立即粘贴到当
前光标所在处,如图1所示:
图1 编辑功能
·82·
《现代图书情报技术》 2007年 第12期应用实践  总第158期
2 系统开发环境和支撑平台
  适用于Windows98、Windows2000、WindowsXP等桌面
操作系统;开发语言VisualFoxPro6.0。并建立SJHM文
件夹用于存放相应的程序文件、库文件、图标和背景图
片,见图2文件目录。
图2 文件目录
3 著者号的取码规则
  本馆同类书区分号采用取责任者的四角号码,即以
《四角号码新词典》作为著者号码取号依据。责任者的确
定按《CB3792.2-85》规定执行。
  ①责任者为3个字时,取第一字左右上角,第二、第三字各取左上角。
  ②责任者为两个字(单名)时,各取第一、第二字的左右上角。
  ③责任者只有一个字时,就先取上方左右角,再取下方左右角。
  ④外国责任者取姓,集体责任者取书名的前3个字,如果书名只
有一个或两个字,取法与个人责任者相同。如书名是英文字母开头,
就取译者。
  ⑤多卷书有总责任者,取总责任者;只有分卷责任者时,如各卷一
次到齐,分卷责任者又不是一人,则取书名前3个字;如各卷分别到,
则按收到的取。
  ⑥凡有年代号的出版物,如年鉴、统计资料等,以年度为同类书区
分号。如年代为“1981—1982”时,则取后面的年代。
  ⑦凡《中图法》中取同类书区分号有规定的,按规定执行。
4 关键程序的设计及部分原代码
4.1 SJHM系统数据库结构表
  本系统所用数据库的结构及数据记录7180条,如表
1、表2所示:
   表1 Zm_k.dbf数据库结构
字段名类型宽度
z 字符型2
zm 字符型4
py 字符型6
   表2 Zm_k.dbf字码库
Hz Zm Py
梁3390 Liang
冰3219 Bing
忠5033 Zhong
… … …
4.2 “编辑菜单”与“界面”的设计[2]
  为使界面美观、使用功能强,特设计了浅色“底纹”的
系统界面和“编辑菜单”,代码如例1所示:
  例1:
  1:DEFINEPAD_msm_editOF_MSYSMENUPROMPT"编辑(\<
E)"COLORSCHEME3KEYALT+E,""message"文本编
辑"
  2:ONPAD_msm_editOF_MSYSMENUACTIVATEPOPUP_medit
  3:DEFINEPOPUP_meditMARGINRELATIVESHADOW COLOR
SCHEME4 &&定义系统菜单项
……
  4:DEFINEBAR_med_sp200OF_meditPROMPT"\-"
  5:DEFINEBAR_med_copyOF_meditPROMPT"复制(\<C)"
KEYCTRL+C,"CTRL+C"message"复制所选定的内容"
  6:DEFINEBAR_med_pasteOF_meditPROMPT"粘贴(\<P)"
KEYCTRL+P,"CTRL+P"message"粘贴已选定的内容" 
&&定义各菜单名、热键
……
  7:definewindowzfmenufrom0.0,0to14.2,69.6
  8:modiwindowscreenfont"arial",12style′T′noclosenogrowfloat
minimizenozoomNOMDItitle"四角号码词典2.0版 成都大
学图书馆李华"iconfile′\sjhm\bmp\CLASSLIB.ICO'from0.
0,0to14.2,69.6  &&定义系统窗口大小及图标
  9:activatewindowzfmenu &&激活窗口
  10:definewindowm99from0.0,0to14.2,69.6inzfmenufont"宋
体",12style"T"colorrgb(0,0,0,215,215,215),rgb(0,0,
0,255,255,255)fillfileLOCFILE("\sjhm\bmp\BACK25.
bmp",′BMP′,′BACK25.BMP在哪里?′) &&定义窗口、字
体及其大小,并调用背景图片
  11:activwindowm99 &&激活窗口
4.3 文本输入窗口和按钮设计
  例2:
  1:storspace(20)tokpw &&赋20个字节的空格给kpw
  2:Dowhile.t. &&循环开始
  3:@3.85,24.7getkpwdefaultspace(20)size1.05,19.925 &&
文本输入口
  4:@ 5.5,20.3getP1function′H查找;清屏;规则;\?退出′
size1.6,7,0.1style′T′font"宋体",11colorrgb(0,0,255,
192,192,192)default0 &&定义4个水平按钮、位置及大
小,字体的大小和颜色
  5: readcyclemodal
  6:  dimeff(3) &&定义二维数组
  7: docase
  8:  casep1=1 &&当按下“查找”键
  9:   ……  &&详见4.4“查找”模块的设计
  10:  casep1=4 &&当按下“退出”键,则退出系统
  11:  exit
  12: endcase
  13: enddo &&循环结束
  14:quit &&退出系统
·83·
《现代图书情报技术》 2007年 第12期应用实践  总第158期
4.4 “查找”模块的设计[3]
  当点击[查找]键后,系统开始“查找”,并按我馆取
码规则自动生成著者号,其程序设计如例3所示:
  例3:
  1: hh=′′ &&给变量赋初始值
  2: _cliptext=′′ &&粘贴板
  3: m=len(kpw) &&测试所输入字符的长度为m
  4: j=1 &&给变量赋初始值
  5:form=2tomstep2
  6:selectZM,HZ,PYwhereHZ=substr(kpw,m-1,2)from\SJHM
\S_DBF\ZM_kintoARRAYff &&从Zm_k.dbf数据库中,查
找到符合条件的记录,并追加到ff数组变量中。
……
  7:docase
  8:caselen(alltrim(kpw))=2 &&当为1个汉字时(2字节)
……
  9:caselen(alltrim(kpw))=4 &&当为2个汉字时
……
  10:caselen(alltrim(kpw))=6 &&当为3个汉字时(6字节)
  11: ifm=2
  12: @4.7,5.05+jsaysubstr(ff(1),1,2)font"Arial",14style
"BT"colorrgb(0,0,255)
  13:  tff3=alltrim(substr(ff(1),1,2))
  14:  ss3=alltrim(ff(3)) &&提取第一字的拼音
  15: else
  16:  ifm=4
  17:   @4.7,4.74+jsaysubstr(ff(1),1,1)font"Arial",14
style"BT"colorrgb(0,0,255)
  18:   tff4=alltrim(substr(ff(1),1,1))
  19:   ss4=alltrim(ff(3)) &&提取第二字的拼音
  20:  else
  21:   ifm=6
  22:   @4.7,3.15+jsaysubstr(ff(1),1,1)font"Arial",14
style"BT"colorrgb(0,0,255)
  23:   tff5=alltrim(substr(ff(1),1,1))
  24:   hh=tff3+tff4+tff5 &&将提取的字符组合
  25:   _cliptext=hh &&将著者号存入粘贴板中
  26:   ss5=alltrim(ff(3)) &&提取第三字的拼音
  27: ss=ss3+space(1)+ss4+space(1)+ss5 &&拼音组合
  28:     sp=len(ss) &&测试ss字符的长度
  29:    @6.3,(19-sp)/2sayssfont"Arial",11style"T"
colorrgb(0,0,128) &&居中显示拼音组合
  30:   endif
  31:  endif
  32: endif
  33:endcase
  34: ff(1)=′′
  35: j=j+3 &&字间距
  36:endfor
  通过对Zm_k.dbf数据库中的查找,将符合条件记录
的各字段,分别追加到ff的数组变量中。即:ff(1)为四角
号码(ZM)、ff(2)为汉字(HZ)、ff(3)为拼音(PY)。
  本程序中使用的alltrim()和substr()为截取函数,前
者用于删除变量中前后的空格;后者用于截取变量中的
子串。比如在substr(ff(1),1,2)函数中,1是为ff(1)变
量中取字符的起始位置,2为截取ff(1)变量中字符的个
数。
  程序会严格按照“本馆著者号的取码规则”自动提
取:
  (1)当输入的责任者为一个字时,就先取上方左右角,再
取下方左右角,即直接将变量ff(1)存入粘贴板中。
  (2)当输入责任者为两个字(单名)时,各取第一、第二字
的左右上角。
  (3)第10-32行语句,当输入的责任者为3个字时,程序
将分别提取第一字左右上角的数字,见第13行,第二、第三字
的左上角的数字,见第18、23行,经重新组合(hh),便直接将
其存放到粘贴板中,见第24、25行。如:
  当编目员输入著者名为“贾志雄”,点击“查找”按钮后,
在窗口中分别显示“贾(1080)”、“志(4033)”、“雄(4071)”三
字的四角号码和拼音,以及生成的“著者号”为1044,系统将
此号自动存入“粘贴板”中,如图3所示:
图3 生成著名号
  在图书馆编目子系统中,如将200字段■f子字段中
“刘韬”的著者选定,复制并粘贴到“四角号码词典”中的
著者输入框中,经系统“查找”,瞬间生成的“著者号”为
0252,同时也将该号自动存入粘贴板中,编目员只需在编
目子系统905字段■d处,点击“粘贴”即可,如图4所示。
  如果所输入的汉字在4-10个之间,则著者号就不
会生成,只在窗口的上部显示所输汉字的四角号码。即
体现词(字)典功能,如图5所示。
  为了适应部分编目人员的工作习惯,在不影响使用
功能的前提下,特对本系统的“界面”进行了全面“优
化”,使之缩减到只有原系统“界面”的1/3。使用更具人
性化、工具化、便捷化,工作效率更高,针对性更强,如图6
所示。
·84·
《现代图书情报技术》 2007年 第12期应用实践  总第158期
图4 在编目子系统中的应用
图5 输入多个字时系统的生成结果
图6 调整后的界面
5 结 语
  该系统开发后,运行稳定,将SJHM.prg文件编译成
SJHM.exe,并制作成安装盘。经编目人员试用,获得他们
的一致好评和肯定,其功能、性能达到设计要求,输入中
文著者即可得出著者号,大大加快了编目速度,对提高编
目工作的效率、规范数据,杜绝错码率具有一定的积极
作用。
  对于书次号采用“汉语拼音首字母”+“四角号码著
者号”[4]的图书馆,只要将此软件稍加修改,就可轻松实
现。比如著者“贾志雄”、“刘韬”,其著者号将分别生成
为“J1044”、“L0252”。
参考文献:
[1]何跃兵.通用汉语著者号自动生成系统[J].现代图书情报技术,
2006(5):81-85.
[2]郑刚.VisualFoxPro实效编程百例[M].第2版.北京:人民邮电
出版社,2004:66-68.
[3]姜灵敏,彭江平,毛锦云.VisualFoxPro5.0程序设计入门[M].
北京:人民邮电出版社,1998:110-245.
[4]孙月梅.书次号设计探讨———首字母四角号码著者号编制方法
[J].曲靖师范学院学报,2004(3):107-109.
(作者E-mail:Li_hua63@163.com)
·85·
《现代图书情报技术》 2007年 第12期应用实践  总第158期

posted on 2010-06-01 11:49  王峰炬  阅读(229)  评论(0编辑  收藏  举报

导航