vb+access即指即译的翻译器论文_第1页
vb+access即指即译的翻译器论文_第2页
vb+access即指即译的翻译器论文_第3页
vb+access即指即译的翻译器论文_第4页
vb+access即指即译的翻译器论文_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1摘 要:随着21世纪信息社会的到来,计算机在人们的工作和生活中的深入,特别是我国加入WTO的推动,要求我们越来越多地与英语打交道,为了方便用户,于是出现了各种各样的翻译软件,如金山快译,东方快车等等.应用VB强大的数据库访问功能并结合API函数的调用,可以方便地制作即指即译的翻译器,以实现英文的即时汉化。本软件通过捕捉鼠标位置,并在鼠标位置范围内查找离它最近的英文单词,然后在单词库(词汇.mdb)中查找该词的中文意思,并将其中文意思显示出来。关键字:即指即译的翻译器、VB6开发。摘 要2关键字前 言第一章VB语言概述111、VB简介112、VB语言的基本特点及VB应用程序的基本持点113、为何选择VB作为开发语言214、VB6.0应用的基本开发方法315、VB与API函数4第二章即指即译翻译系统的开发721、软件功能722、主要技术723、具体实现824、程序源代码8第三章 毕业设计总结11第四章 本系统运行的软硬件配置11第五章 主要参考文献113用VB开发即指即译的翻译器前 言电脑已经成为挂在我们嘴角的一句口头禅,它已经深入到日常工作和生活的方方面面,比如文字处理、信息管理、辅助设计、图形图像处理、教育培训以及游戏娱乐等。Windows系统的推出使电脑从高雅的学术殿堂走入了寻常百姓家,各行各业的人们无须经过特别的训练就能够使用电脑完成许许多多复杂的工作。然而,虽然现在世界上已经充满了多如牛毛的各种软件,但它们依然不能满足用户的各种特殊需要,人们还不得不开发适合自己特殊需求的软件。以前开发Windows下软件是专业人员的工作,需要掌握许多专业知识和经过特殊的培训才能胜任。现在不同了,即使你没有接受过严格的程序设计训练,使用Visual Basic也一样能够开发出功能强大、适合自己特殊需求的应用程序了。VisualBasic继承了Basic语言易学易用的特点,特别适合于初学者学习Windows系统编程。我作为一名中央电大的学生,对从事计算机操作和编程工作有着特殊的爱好,在工作和学习之余,我时常钻研专业课基础理论,经常用VB调试一些小程序。随着21世纪信息社会的到来,计算机在人们的工作和生活中的深入,特别是我国加入WTO的推动,要求我们越来越多地与英语打交道,为了方便用户,于是出现了各种各样的翻译软件,如金山快译,东方快车等等.应用VB强大的数据库访问功能并结合API函数的调用,可以方便地制作即指即译的翻译器,以实现英文的即时汉化。为了向中央电大交一份满意的答卷,我于是着手设计开始一个这样的翻译系统。通过这两年多来我在中央电大计算机专业的学习,我初步掌握了VB语言的最基本的知识,于是在中央电大易瑞分校的老师指导下动手用VB编写本系统。第一章 VB语言概述1.1、VB简介VB是微软公司出品的一个快速可视化程序开发工具软件,借助微软在操作系统和办公软件的垄断地位,VB在短短的几年内风靡全球。VB是极有和功能强大的软件,主要表现在:所见即所得的界面设计,基于对象的设计方法,极短的软件开发周期,较易维护的生成代码。美国微软公司在1991年推出VB1.0至今已经经历了6个版本,VB6.0运行在win9x或winme,win2000,winxp,windowsNT等操作系统下,是一个32位的应用程序开发工具。1.2、VB语言的基本特点及VB应用程序的基本持点VB程序语言具有许多优秀的特性,用其设计应用程序时有两个基本特点:可视化设计和事件驱动编程.1、可视化设计同其他的一些可视化程序开发工具一样,VB具有可视化设计的特点,微软的Word在刚刚进入市场时,同WPS竞争的一个重要的功能砝码就是所见即所得的字处理功能,VB在设计4应用程序界面时也可以说是所见即所得.在设计时,头脑中所想象的应用程序界面,完全可以通过键盘鼠标以及徒手画出来,而不是编制大量的代码然后再编译生成,如果需要修改,也是利用键盘鼠标和手画,而底层的一些程序代码由VB自动生成或修改。VB为用户提供大量的界面元素(在VB中称为控件对象),这些控件对象对于熟悉Windows应用程序的用户而言是一点也不陌生,如窗体、菜单、命令按钮、工具按钮、检查框等等,用户只需要利用鼠标、键盘把这些控件对象拖动到适当的位置,设置它们的大小、形状、属性等,就可以设计出所需的应用程序界面。2、事件驱动编程Windows操作系统出现以来,图形化的用户界面和多任务多进程的应用程序要求程序设计不能是单一性的,在使用VB设计应用程序时,必须首先确定应用程序如何同用户进行交互.例如发生鼠标单击、键盘输入等事件时,由用户编写的代码控制这些事件的响应,这就是所谓的事件驱动编程。前面已经谈到,在VB中把窗体以及菜单、按钮等控件称为对象,如果设计出了应用程序,那么与应用程序的用户直接进行交互的就是这些对象组成的图形界面,也称为用户接口或用户界面,在设计应用程序时就必须考虑到用户如何与程序进行交户.更进一步,甚至程序和程序之间也会有通讯和交户,基本上用户是通过鼠标、键盘与应用程序进行交互的,这时那些对象就必须对鼠标和键盘操作所引发的事件做出响应.响应就是指执行一段应用程序,它不沿预定的路径执行,而是在响应不同事件时执行不同的代码.因此,应用程序代码的路径在每次响应而执行时可能都是不形同的。1.3、为何选择VB作为开发语言除了VB之外,当前能够编制Windows应用程序的可视化编程工具还有很多,所针对的编程领域也各有侧重,就微软系列的可视化开发工具而言,就有VB,VisualC+,VisualJ+,VisualFoxpro等,其中VisualFoxpro是针对数据库编程的开发工具;Visual C+是为专业程序设计员提供的开发工具,变量声明和定义严密,功能强大灵活,必须经过相当的努力才能掌握;而VB不支持虚类、多态性和类的继承,相对而言VB简单易学,变量定义不太严密,对于非专业程序员而言功能足够强大,同Visual C+一样也支持网络编程和数据库编程。除了微软之外,其他公司也在为Windows操作系统平台制作应用程序开发工具,例如前Borland的公司出品的Delphi,C+Bulider,J+Bulider等,其他一些公司出品的针对数据库编程的PowerBulider, PowerDesigner等,不可否认,这些产品相当出色,如果能够熟练掌握将是编程者能力的体现,但是必须承认,对Windows操作系统最熟悉的还是微软,而且微软本身Windows操作系统的源代码采取不公开的策略,使得其他公司出品的产品在实现相同功能时多少都要走些弯路,用户在使用这些产品设计应用程序时,程序的效率将会受到影响。在选择所需要的应用程序开发工具时,不但要考虑开发工具的功能是否强大,还要考虑所花费的时间和效果,单纯地追求功能的强大,也许会事倍功半。中央电大陈明主编的Visual Basic程序设计是计算机应用专业采用的一本难得的教材,使我受益匪浅。通过这门课程的学习,我已能用VB编写简单的程序,为了搞好这次毕5业设计,我决定使用VB作为编程语言。1.4、VB6.0应用的基本开发方法1、交互式开发传统的应用程序开发过程可以分为三个明显的步骤:编码、编译和测试。但是VB与传统的语言不同,它使用交互式方法开发应用程序,使三个步骤之间不再有明显的界限。在大多数语言里,如果编写代码时发生了错误,则在开始编译应用程序时该错误就会被编译器捕获。此时必须查找并改正该错误,然后再次进行编译,对每一个发现的错误都要重复这样的过程。VB在编程者输入代码时便进行解释,即时捕获并突出显示大多数语法或拼写错误。看起来就像一位专家在监视代码的输入。除即时捕获错误以外,VB也在输入代码时部分地编译该代码。当准备运行和测试应用程序时,只需极短时间即可完成编译。如果编译器发现了错误、则将错误突出显示于代码中。这时可以更正错误并继续编译、而不需从头开始。由于VB的交互特性,因此在开发应用程序时,系统频繁地运行着应用程序。通过这种方式,代码运行的效果可以在开发时进行测试,而不必等到编译完成以后。2、事件驱动应用程序的工作方式事件是窗体或控件对象识别的动作。在响应事件时,事件驱动应用程序执行VB代码。VB的每一个窗体和控件对象都有一个预定义的事件集。如果其中有一个事件发生,并且在关联的事件过程中存在代码,则VB就会调用该代码。尽管VB中的对象自动识别预定义的事件集,但要判定它们是否响应具体事件以及如何响应具体事件则是编程的工作了。代码部分(即事件过程)与每个事件对应。如果让控件对象响应事件,就把代码写入这个事件过程之中。对象所识别的事件类型多种多样,但多数事件类型是大多数控件所共有的。例如,大多数对象都能识别click事件,如果单击窗体,则执行窗体的单击事件过程中的代码;如果单击命令按钮,则执行命令按钮的click事件过程中的代码。每种情况中的实际代码几乎完全不一样。以下是事件驱动应用程序中的典型事件序列:启动应用程序,装载和显示窗体。窗体(或窗体上的控件)接收事件。事件可由用户引发(例如键盘操作或数鼠标点击)、可由系统引发(例如定时器事件),也可由代码间接引发(例如当代码装载窗体时的load事件)。如果在相应的事件过程中存在代码,就执行代码。应用程序等待下一次事件。许多事件伴随其它事件发生。例如,在Dblclick事件发生时,MouseDown,Mouseup和click事件也会发生。3、创建VB应用程序的三个步骤创建应用程序界面设置属性编写代码64、VB的程序设计是面向对象的可视化程序设计。其方法是在窗体上放置可视化的对象然后对它们设置属性、触发事件和执行方法进行程序设计。对象放置完毕后用户所见到的只是一个空壳,就像一台没有装任何软件的计算机,必须给它赋予程序,才能完成一定的功能。 VB程序贮存在模块中,模块分有窗体、类和标准模块三种类型。每个模块包含有声明和过程。窗体模块包含处理事件过程、通用过程及变量、常数等窗体级说明;标准模块应用程序内其他模块访问的过程和声明的容器;类模块中包含了建立新对象的程序。5、窗体与基本输入、输出在进行VB程序设计中,设计者并不需要自己编制VB程序代码来生成图形界面。VB提供了大量现成的图形控件和其他一些控件,例如所熟悉的菜单、命令按钮、对话框等,供给用户“堆砌”起来构造自己想象中的图形界面,因此几乎不用书写什么程序代码,“画”上几笔就可完成程序员的构思,获得应用程序的图形界面。VB应用程序图形界面的设计首先要从窗体开始,其他的一些控件基本上归属于窗体控件(很多是直接“画”在窗体上的),通常应把窗体定义成一个构成应用程序可见部分的窗口,而一个VB的应用程序应首先从设计窗体开始。VB应用程序设计过程中重要考虑的问题是应用程序与用户的交互,而窗体可以实现将输出信息提供给用户。6、常用控件:在窗体上用于输入、输出信息的图形或文字符号称为控件。为了方便用户开发应用程序,VB中提供了很多的控件,其中很多控件是windows本身的资源,如命令按钮、标签、文本框等,也有一些是为了增强用户界面,或是使用户界面美观实用而编制的ActiveX控件。1.5、VB与API函数:VB无疑是最先进的编程工具之一,但在涉及windows 32位系统的核心编程方面,譬如一些高级功能的实现上,它仍然显得有些力不从心,这需要我们充分利用vb的强大的Windows API函数调用能力来弥补。作为一个编程初学者来说,API函数也许是一个时常耳闻却感觉有些神秘的东西。单看它的复杂语法,就足令人望而生畏,但是任何事物在我们深入了解它之前,总是会有这种感觉的。其实我们应该把API函数的来龙去脉搞清楚,破除对API函数的畏惧,使它成为我们编程的好助手。大家可能在许多书上看到过API的英文全称(Application Programming Interface),WIN32API也就是MicrosoftWindows32位平台的应用程序编程接口。对这个定义的理解,需要追溯到操作系统的发展历史上,当WINDOWS操作系统开始占据主导地位的时候,开发WINDOWS平台下的应用程序成为人们的需要。而在WINDOWS程序设计领域处于发展的初期,WINDOWS程序员所能使用的编程工具唯有API函数,这些函数是WINDOWS提供给应用程序与操作系统的接口,他们犹如“积木块”一样,可以搭建出各种界面丰富,功能灵活的应用程序。所以可以认为API函数是构筑整个WINDOWS框架的基石,在它的下面是WINDOWS的操作系统核心,而它的上面则是所有的华丽的WINDOWS应用程序。(配图1)7图1但是,那时的WINDOWS程序开发还是比较复杂的工作,程序员必须熟记一大堆常用的API函数,而且还得对WINDOWS操作系统有深入的了解。然而随着软件技术的不断发展,在WINDOWS平台上出现了很多优秀的可视化编程环境,程序员可以采用“即见即所得”的编程方式来开发具有精美用户界面和功能强大的应用程序。这些优秀可视化编程环境操作简单、界面友好(诸如VB、VC+、DELPHI等),在这些工具中提供了大量的类库和各种控件,它们替代了API的神秘功能,事实上这些类库和控件都是构架在WIN32 API函数基础之上的,是封装了的API函数的集合。它们把常用的API函数的组合在一起成为一个控件或类库,并赋予其方便的使用方法,所以极大的加速了WINDOWS应用程序开发的过程。有了这些控件和类库,程序员便可以把主要精力放在程序整体功能的设计上,而不必过于关注技术细节。实际上如果我们要开发出更灵活、更实用、更具效率的应用程序,必然要涉及到直接使用API函数,虽然类库和控件使应用程序的开发简单的多,但它们只提供WINDOWS的一般功能,对于比较复杂和特殊的功能来说,使用类库和控件是非常难以实现的,这时就需要采用API函数来实现。这也是API函数使用的场合,所以我们对待API函数不必刻来研究每一个函数的用法,那也是不现实的(能用的到的API函数有几千个呢)。正如某位人士所说:API不要去学,在需要的时候去查API帮助就足够了。在VB中声明API函数有两种方法:如果我们只在某个窗体中使用API函数,我们可以在窗体代码的General部分声明它:声明的语法是:PrivateDeclareFunction.PrivateDeclareSub.这里必须采用Private声明,因为这个API函数只能被一个窗体内的程序所调用。如果我们的程序有多个窗体构成,而且我们需要在多个窗体中使用同一个API函数,就需要在模块中声明了。先添加一个模块,具体方法为:在设计程序时,选“project”菜单项下的子菜单项“AddMoudle”然后采用如下语法声明:PublicDeclareFunction.PublicDeclareSub.Public声明的含义是把API函数作为一个公共函数或过程,在一个工程中的任何位置Win32Api函数(应用程序接口)Windows操作系统底层Windows应用程序8(包括所有的窗体和模块)都能直接调用它。 声明完毕我们就能在程序中使用此API函数了。 可采用以下几种方式使用API函数,以SetWindowPos函数为例:(1)忽略函数返回值的调用:SetWindowPosForm1.hWnd,-2,0,0,0,0, 3注意此时函数的参数是不加括号的。(2)Call方法调用:CallSetWindowPos(Form1.hWnd,-2,0, 0,0,3)注意这里需要加上括号,但我们不取回函数的返回值。(3)取得函数返回值的调用:MyLng= SetWindowPos(Form1.hWnd,-2,0,0,0,3)此时需要加上括号,而且我们必须事先定义一个变量(变量的类型与函数返回值类型相同)来存储API函数的返回值。几个问题的说明:(1)声明中的Lib和 Alias是怎么回事一般情况下WIN32API函数总是包含在WINDOWS系统自带的或是其它公司提供的动态连接库DLL中,而Declare语句中的Lib关键字就用来指定DLL(动态连接库)文件的路径,这样VB才能找到这个DLL文件,然后才能使用其中的API函数。如果我们只是列出DLL文件名而不指出其完整的路径的话,VB会自动到.EXE文件所在目录、当前工作目录、WINDOWSSYSTEM目录、WINDOWS目录下搜寻这个DLL文件。所以如果所要使用DLL文件不在上述几个目录下的话,我们应该指明其完整路径。Alias用于指定API函数的别名,如果我们调用的API函数要使用字符串(参数中包含String型)的话,Alias关键字是必须的。这是因为在ANSI和Unicode字符集中同一API函数的名称可能是不一样的,为了保证不出现声明错误,我们使用Alias关键字指出API函数的别名,一般来说在WIN9X平台下我们把API函数名后加一个大写A作为别名即可。(2)常见的API参数类型的说明API函数的参数中最常见的是长整Long型数据类型,例如API中的句柄、一些特定的常量、函数的返回值都是此类型 的值;另外几种常见的参数类型有:整型Integer、Byte型、String型等。(3)声明中的ByVal是作什么用的这跟VB的参数传递方式有关,在默认情况下VB是通过地址传递方式传递函数的参数、而有些API函数要求必须采用传值方式来传递函数参数(这两种参数传递方式是不同的,前者传递的是一个指针,而后者要求是参数真实的值)。这样就会发生错误,解决的办法是在API函数参数声明的前面加上ByVal关键字,这样VB就采用传值方式传递参数了。(4)怎样得到完整的API函数声明VB自带了API文本查看器APITEXTVIEWER,我们可以在其中找到API函数的完整声明,然后把它粘贴到程序中即可。9我们熟悉了以上有关VB的基础知识,现在就可以开始着手运用VB进行程序设计了。第二章 即指即译翻译系统的开发21、软件功能本软件实现以下功能:捕捉鼠标位置,并在鼠标位置范围内查找离它最近的英文单词,然后在单词库(词汇.mdb)中查找该词的中文意思,并将其中文意思显示出来。22、主要技术2.2.1、调用API函数给鼠标位置所在的窗口发送消息VB一个强大的功能是能够调用外部动态链接库(DLL)文件中的过程,包括Windows提供和使用的应用程序编程接口(API)来扩充功能。Windows API是Windows内部极其重要的组成部分,它是一系列复杂函数,消息的集合,可看作是Windows系统为在其下运行的各种开发系统提供的开放式的通用功能增强接口,几番所有用高级语言的标准功能不能处理的问题,都可以通过调用API接口函数的方法来解决。关于API函数的使用请参考本论文前一部分。在本软件设计中,首先捕捉鼠标的MouseMove事件,获得鼠标位置,再利用API函数SendMessage发送消息的功能给所在位置的窗口发送EM_CHARFROMPOS消息,以便在鼠标位置范围内查找离它最近的词.由于在Win32api.txt中没有EM_CHARFROMPOS消息,所以必须自己定义,格式如下:PrivateconstEM_CHARFROMPOS =& HD7在VB中对SendMessage函数的声明如下:Private Declare Function SendMessage Lib “user32” Alias“SendMessageA”(ByValhWndAslong,ByValwMsgAsLong,ByValwParamAsLong,lParamasAny) AsLong该函数中各参数意义如下:hwnd(接收消息窗口句柄),wMsg(指定被发送的消息),wParam,lParam(消息的附加信息,随所发送的消息的不同而不同,为发送EM_CHARFROMPOS消息,参数wParam设置为0,lParam类型为POINTAPI)。POINTAPI结构定义如下:PrivateTypePointApiX aslongY aslongEndtype2.2.2、创建单词库根据需求分析,利用MicrosoftAccess创建一个名为“语汇.mdb”的数据库及相应的数据表,表名为“词”,该表包括单词id,英文及中文3个字段,分别用来存储单词序号,英文及对应的中文信息。2.2.3、应用VB的数据库访问功能查询单词库在实现了鼠标取词之后,就可以用VB的数据库访问功能对该单词进行查询,得到与英文单词相符的中文词义。VB具有很强的数据处理功能,提供了数据控件(data)、数据访问对象(dao)等方法访问access、dbase、foxpro、odbc等多种类型的数据库,通过与数据控件绑定,只要编写少量的程序就可方便地访问数据库,加上可视化用户界面,为用户提供了极大方便。为了使用data控件连接数据库,必须在设计过程中或是代码中对以下几个属性进行设置。Connect属性:用于定义控件所要连接的数据库的类型。默认情况下,该属性的值为10access数据库类型。Databasename属性:用于指定data控件的数据源,它是包含数据库完整路径的字符串。Recordsource属性:用来设置data控件打开的数据库表的名称或是满足某一sql查询条件的表的记录集,即所要访问的数据内容。设置好以上属性,一旦该数据控件启动,数据库便会自动以指定方式打开,而当终止时,对应的数据库自动关闭,由于必须指定要打开的数据库文件,而我们不能保证该软件完成后一定会安装在每台机器的同一目录下,为解决问题,数据库文件常采用相对路径来确定,在VB中,App对象是一个全局对象,用来提供当前应用程序的相关信息,其path属性反映的是当前应用程序可执行文件(.exe)所在的绝对路径,且只在程序运行时才有效,通过使用App对象的path属性,可获得当前程序所在的目录路径。2.3、具体实现1、启动VisualBasic6.0,打开一个新的标准工程。打开Project菜单中的Components菜单项,选择Controls选项卡,选择Microsoft Rich Textbox6.0前的复选框,将RichTextBox控件添加到工具箱中来。在窗体Form1上添加1个Label,1个RichTextBox,1个Text和1个Data控件,将Form1,Label1的Caption属性分别设置为“即指即译的翻译器”和“单词意思”,RicTextBox1的Multiline属性设置为True,清空Text1的Text属性并将其DataSource属性设置为Data1,界面如图:24、程序源代码OptionExplicitPrivateConstEM_CHARFROMPOS= &HD7PrivateTypePOINTAPIX AsLongY AsLongEndTypePrivateDeclareFunctionSendMessageLibuser32AliasSendMessageA(ByValhWndAsLong,ByVal wMsgAsLong,ByVal wParamAsLong, lParamAsAny)AsLongPrivateSubForm_Load()DimdbnameAs StringData1.Visible =False11dbname= App.PathIfRight$(dbname, 1)Thendbname= dbname&dbname= dbname& 词汇Data1.DatabaseName= dbnameRichTextBox1.Text =howareyouEndSubPrivate SubRichtextbox1_MouseMove(Button As Integer, Shift As Integer,X AsSingle,YAs Single)DimpostwipAsPOINTAPIDimposAsIntegerDimfirst_pos AsIntegerDimlast_posAsIntegerDimchAs StringDimtxt1AsStringDimtextlengthAs IntegerDimtxt2AsStringDimsqlAsString 把位置坐标转换为像素.postwip.X =X Screen.TwipsPerPixelXpostwip.Y =Y Screen.TwipsPerPixelY获得字符的值pos= SendMessage(RichTextBox1.hWnd, EM_CHARFROMPOS,0&,postwip)Ifpos 0Then查找单词的开始位置.txt1=RichTextBox1.TextForfirst_pos =posTo1 Step-1ch= Mid$(RichTextBox1.Text,first_pos,1) 非字母,退出循环IfNot(ch=aAndch=AAndch=aAndch =AAndch= Z)ThenExitForNextlast_pos12last_pos=last_pos- 1通过开始位置

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论