非可视化数据向可视化数据的转换——图书馆新旧系统数据格式的转换,本文主要内容关键词为:数据论文,新旧论文,数据格式论文,图书馆论文,系统论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。
随着Windowe图形界面操作系统统治地位的确定,如何把以往的非可视化语言编程的数据转换到可视化系统,安全、方便地使用数据,已成为新旧系统更替所必须面临的问题。解决这个课题是为了保障过去的人力、物力资源的投入,降低新旧系统替换成本,促进技术进步需要,同时也推广了新知识,对图书馆新老系统的转换具有现实意义。
1 设计原理
首先确定在新老两代系统中,寻找数据文件所具有的共性、格式及物理存储方式,以便使得转换可以顺利进行。经过对大量的数据文件进行分析得知,把.TXT文件格式作为这个中间体,它使新老系统都可以方便的进行数据迁入转换,有些数据库系统自动提供数据库间·TXT转换和·TXT间它所需要的数据格式转换。例如:DBASE,FOXBASE间·TXT转换,·TXT向VF数据库的转换等形式。根据这一原理,可做如下结构原理框图:
为了使该方案具有灵活的扩展性能,根据面向对象式程序设计要求,以及现实功能的需要,我们采用了VC实现这一方案,特别是针对各种不同要求,实现不同方法的重载,使软件的适用性更广。
由于篇幅的原因,我们只举例说明该程序的部分功能设计方法、思路及该功能模块的实现。
2 模块实例
为了使程序具有广泛性,我们采用了八、九十年代政府、银行、图书馆、情报管理等领域中常用COBLE数据文件向目前使用较为广泛的SQL数据文件过渡的方法。根据第二部分的原理,我们首先要实现COBLE语言的数据文件·ICT向·TXT格式转换。通过分析可以发现·ICT数据文件每条记录都是定长的,且都以"\n"结束,同时又发现各个数据项的具体含义,这样我们就可以按照·TXT文件的要求进行格式转换。这里要注意的是要把二进制存储数据换成普通字符型存储。
3 程序的实现
首先我们将以该程序的核心·ICT向·TXT转换程序为关键内容。为了避免程序的复杂性,采用单文档界面显示整个文件内容,所以选择视类的基类为Scrollview,由此来完成文件显示与流动。
(1)使用MFC Appwizard等产生应用程序框架。在Projectname编辑框中输入"date",在step 1中选Document,在step 4取消"Printing and Print Preview",在step 6中选Csrollview作为Bass Class,其默认,点击finish完成应用程序的框架的定制。
(2)在文档类Cdata Doc中增加文件的读出处理工作。
①定义文档的成员变量,作好初始化和清理工作
a、打开data Doc.h文件,增加公共变量
public;
c file m-phek file;
long m-lfile length;
b、打开data Doc.cpp文件,在构造函数中增加下列初始化代码
m-phexfile=nail;
m-lfilelength=ol;
在析构函数中增加下列清理代码:
if(m-phexfil!=null)
m-phexfile-〉close();
delete m-phexfile;
m-phexfile=null;
c、重载On Open Document,在其中打开文档
if(m-phexfile=null)
m-phexfile-〉close();
delete m-hexfile;
char lpsz pathname="dstoo,ict";
m-phexfile=new(file clpsz path name)
cfile::mode read(cfile::type binary);
if(!m-phex file)
afxmessage box(“该文件打开错”)
m-lfilelength=m-phexfile-〉get length();
d、在菜单中增加按钮在基函数中增加转换功能,并将原文件写入到平面文件中去
file *stream;
stream=fopen("filename","w");//filename为对话框中输入的文件名字
int fi=0
int nret//假定每行的长度为L,以nret为计量每行中的字符走动
{###
int nret
byte bh[3];
int bh2=0;
nret=m-pthexfile-〉read(bh,3);
bh2=(int)bh[2]+(int)bh[1][*]16[*]16+(int)bh[0][*]256[*]256//原来的为//float型存储,需要转换到平面文本文件编号。
Int i;
Int tmp1 tmp2
Tmp=bh2;
//clea[*]p
i=0
do{
tmp2=tmp%10;
tmp2=tmp2+ +8
bh[i]=tmp2;
I+ +
tmp=tmp/10;
{while(tmp/10);
int k=i;
for(i=k-1;i〉=0;i--);
forint(stream,"%c",bh[i];
if(k〈5);
for(i=k;i〈5;i+ +);
f printf(stream,"%c",'');
fclose(stream);
②在视中增加显示文件内容以及处理滚动工作
a、在dataview.h中增加变量定义及初始化
CdataDoc*Get Document()
b、在dataview.cpp的On Draw()函数中增加显示功能
CdataDoc*PDoc=Cet Document();
ASSERT-VALID(PDOC)
Csize.scrolled size;//
Int istart line;//
Int nHeight;//
Crect scrollClient;
NHeight=pdc-〉Draw Text(sline,-1,& ScrollRect,
DT-TOP/-DT-NOPRIFIX1 DT-SINGLELZNE);
ScrallRect.top+ = nHeight;
在该函数中选择CDC::Draw Text()函数也非常关键,比使用CDC::
Text Out函数起到事半功倍的作用。
4 ·TXT文件格式向SQL转换
利用上面程序生成的.TXT文件,利用SQL server自带的工具则可以方便的把数据转换成为SQL可操作数据。
该程序的重心是在转换成.TXT文件格式,和.TXT格式文件转迁入各种数据库形式所需要的数据格式,在设计思想上受用了面向对象处理结构和分层次开发数据库的技术思想,为新老数据的转换提供了更快捷的方法,具有广泛的实用性。