zoukankan      html  css  js  c++  java
  • 汉语著者号自动生成系统的设计与实现

    汉语著者号自动生成系统的设计与实现
    李 华
    (成都大学图书馆 成都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期

  • 相关阅读:
    mac redis 安装及基本设置 python操作redis
    mac webstorm自动编译typescript配置
    MySQL数据库的基本操作
    python 面试基础考试题收集
    pyhon 列表的增删改查
    python 文件读取方法详解
    MAC下绕开百度网盘限速下载的方法,三步操作永久生效
    浏览器窗口输入网址后发生的一段事情(http完整请求)
    CMDB
    django适当进阶篇
  • 原文地址:https://www.cnblogs.com/fengju/p/6173799.html
Copyright © 2011-2022 走看看