vb论文

2024-05-31

vb论文(共8篇)

篇1:vb论文

用VB编写登录程序} 》

{ 编者按:在前几期编程乐园中,我们一同学习了一些关于VB编程的基本概念和语法规则。但离开实例学习编程,无疑是枯燥无味、事倍功半的,所以我们在此推出“看实例,学编程”栏目,邀请富有经验的PFans介绍他们的典型实例,希望对PFans的编程之旅有所帮助。

我们都知道,在进入Windows操作系统时会出现一个登录对话框,要求用户输入密码后才能进入Windows。我们用VB也可以编写这样的登录窗口,其具体方法如下:

界面设计:

打开“VB6.0”,出现“新建工程”对话框,选择“标准EXE”单击“打开”即可新建一个工程。新建一个工程后,VB自动生成了一个窗体,其默认的名称是Form1,且显示的标题也是Form1,显然与我们要编写的程序不符。我们可以更改这些设置,方法是:点击Form1窗体,在右边的属性窗口中(如图1)的“名称”后输入“Denglu”(在后面讲的Denglu就是指的这个窗体),在“Caption”后输入“登录窗口”。窗体设置好后,我们便可以将控件放置到这个窗体中去了。

“登录窗口”中主要用到的是TextBox(文本框)控件,该控件主要是用于接收用户输入的文字并显示出来。在该程序中我们便可以使用TextBox控件接收用户输入的信息来判断是否是合法的用户。另外,我们还将用到Label(标签)控件及CommandButton(命令按钮)控件。Label控件用来显示“用户名”及“密码”标题;CommandButton控件用来设计“确定”及“取消”按钮。下面我们将这些控件放置到窗体中:在工具箱中选择“Label”控件(如图2),在窗体中拖动鼠标直到一定的大小,然后在属性窗口中的“Caption”属性后为输入“用户名”,然后在其下方再拖动一个Label控件,将Caption的值改为“密码:”;在工具箱中选择“TextBox”控件(如图3),在“用户名”后拖动一个TextBox控件,用同样的方法在“密码:”后拖动一个TextBox控件,然后在“属性窗口”中将Text的值改为空(即删除默认的Text1),为了不显示出用户输入的密码,我们将第二个TextBox控件的PasswordChar属性设置为*(如图5),这样在用户输入密码时显示的就是*了;在工具箱中选择“CommandButton”控件(如图4),将其拖动到窗体的下方(一共两个),分别设置其Caption属性为“确定”和“取消”。调整好这些控件的位置(如图6)后即可完成界面的设计,

程序代码:

该程序的主要目的是要判断输入的用户名是否合法,所以我们首先编写判断用户名的程序代码。双击“确定”按钮,添加如下的程序代码:(黑体部分为系统自动生成的代码,楷体为注释)

Private Sub Command1_Click

′判断是否输入了用户名

If Text1.Text=″″ Then ′如果Text1为空,即没有输入用户

MsgBox ″请输入用户名!″,vbOKOnly+vbCritical,″错误″

Exit Sub ′退出这个过程

Else ′如果输入了用户名

If Text1.Text=″软件世界″ And Text2.Text=″12345″ Then ′如果输入的用户名是″软件世界″且密码为″12345″

MsgBox ″你是合法用户,欢迎进入!″,vbOKOnly+vbInformation,″欢迎进入″

Else ′如果不是″软件世界″或密码不是″12345″

MsgBox ″用户名或密码错误!″,vbOKOnly+vbCritical,″错误″

Text1.Text=″″

Text2.Text=″″ ′清空Text1及Text2控件中的文本内容,让用户重新输入

End If

End If

End Sub

在这一段代码中,我们使用了If…Then…Else…End If。这是一个条件判断语句,If Text1.Text=″″ Then这句代码则是判断Text1是否为空,如果为空,这个条件就成立,则执行Then后的语句,如果Text1不为空,则这个条件不成立,程序将会跳到Else处,执行Else后的语句。

程序测试:

现在我们可以单击“F5”键来运行这个程序,看看其运行效果。直接单击“确定”按钮,将会弹出一个对话框(如图7);在“用户名”后输入“软件世界”,“密码:”后输入“12345”,再单击“确定”按钮,此时便会出现一个“欢迎进行”的信息框(如图8)。怎么样,一个属于自己的“登录窗口”就制作好了。

但这个程序目前还只能判断在程序中已设置好了的用户名及密码,没有灵活性,你可以发挥你的聪明才智,使其能够判断多个合法的用户及密码。如果你有什么疑问,欢迎写信与我交流,我的E-mail地址是:vber@21cn.com。

(重庆 杜伟)}

原文转自:www.ltesting.net

篇2:vb论文

时下全国各地都在搞“电脑型福利彩票”,相信很多读者朋友都参与过或正准备参与吧,笔者也是一个“彩民”,已为中国福利事业贡献了XXX元了,不过好像运气不怎么好,至今连个末等奖也未中到。在投注时,彩号可以自己在投注单上选,也可以通过投注机随机选取。那么,想不想自己编个程序来模拟“机选”呢?好!那就接着往下看吧!

首先,新建一个单窗体的工程,在上面画出七个TEXTBOX,最好是一个控件数组,这样编程时容易控制,再建一个COMMOND BUTTON,将CAPTION改为“随机产生”。在程序运行后,每点击一下COMMAND1,将随机产生一组数字并按从小到大的顺序显示在文本框中。下面就是程序部分:

Dim NumArray(1 To 7) As Integer′通用中定义

Private Sub Command1_Click()

Dim i, j, N As Integer

For i = 1 To 7

NumArray(i) = 0

Next i

Randomize

NumArray(1) = Fix(1 + 32 * (Rnd()))

j = 1

Do

N = Fix(1 + 32 * (Rnd()))

For i = 1 To j

If N = NumArray(i) Then

Exit For ′重复时

ElseIf i = j Then ′未重复时

NumArray(i + 1) = N

j = j + 1

Exit For

End If

Next i

Loop While j < 7

PopSort ′升序排列

For i = 1 To 7

Text1(i - 1).Text = NumArray(i)

Next i

End Sub

Private Sub PopSort() ′气泡排序法

Dim i, j, Temp As Integer

For i = 7 To 2 Step -1

For j = 7 - 1 To 1 Step -1

If i >= 7 - j + 1 Then

If NumArray(j + 1) < NumArray(j) Then

Temp = NumArray(j)

NumArray(j) = NumArray(j + 1)

NumArray(j + 1) = Temp

End If

End If

Next j

Next i

End Sub

本程序在VB6.0中文企业版、Win98SE中文版下调试通过,

为了简捷起见,这个程序还有很多不尽如人意的地方,比如不能保存等,喜欢编程的朋友可以充分发挥自己的聪明才智对其加以扩充。

篇3:vb论文

关键词:VBScrip,VB,VB.NET

1 VBScrip、VB、VB.NET语言优势分析

1.1 VBScript语言优势

VBScript是由微软开发的服务器端解析型 (也支持客户端) 的脚本语言, 可以看作是VB语言的简化版, 与VBA的关系也非常密切, 它具有原始语言的特点, 简单易学。目前, 这种语言被广泛应用于网页和ASP程序制作, 也可直接作为一个可执行程序, 也可以使用其它方案和可以使用的对象 (尤其是微软办公) 。其缺点是, 现在不能作为电子邮件附件的VBS。微软的Outlook拒绝接受VBS作为附件, 收件人无法直接使用VBS附件。VBS的各种编辑过程是不受欢迎的。操作系统没有任何特殊的防护装备。

1.2 VB.NET语言优势

Visual Basic.NET在调试运行时使用解释型语言方式, 输出为EXE程序, 使用编译型语言方式, 可以看作是Visual Basic在Net框架平台上, 增强对面向对象的支持力度的升级版。大多数VB.Net程序员使用Visual Studio.NET的IDE (集成开发环境) 。现在Visual Basic 2008 (v9.0) 用户可用Visual Basic快速创建Windows程序, 还可以编写企业水平的客户/服务器程序及强大的数据库应用程序。新加入的功能:自动实现属性、集合初始化、不需要在代码断行书写时输入下划线“_”、更好的lambda表达式支持、更好地与Python及Ruby等动态语言互通操作。Visual Basic.NET通常缩写为VB.NET, 在某些情况下也可以直接称为VB, 属于计算机软件领域, 是计算机中实现网络功能的编程语言。它的语言表达逻辑和自然语言的表达非常相似, 有时你会觉得自己写VB.NET代码同写英文句子一样, 从这个角度看, VB.NET似乎是目前最先进且最人性化的编程语言, 当然的确是目前的编程语言中最强大的。

1.3 VB的语言优势

继承Visual Basic5以后, VB虽然提供了简化的类支持, 但仍然不能满足程序员的需求。多线程支持:虽然可以使用Windows API完成, 不过稳定性与调试都很难保证。异常处理:只支持"On Error Goto line"语句, 对指针的支持非常有限, VB只能支持8到32位的整数, 很多语言都有无限制的支持, VB不允许在任何数组存储器在不变的变量, VB不支持其它程序语言共享程序代码。

2 VBScrip、VB、VB.NET语言优势比较及应用场合分析

VB6仍保留了一些script语言的特性, 当第一次对未声明类型的变量进行赋值时, VB6会把这个值的类型作为该变量的类型。这种script语言的特性, 对程序的可维护有很多不良的影响, 尤其对初阶程序员来说, 更会养成不良的编写程序习惯, 所以VB.NET之后的版本已不保留这种特性。Basic是作为初学者的编程语言而被制作, 当时是以直译语言的形式出现, 同样拥有不用事先声明变量类型的特性。这种特性对于帮助初学者快速入门, 其实有正面的作用, 可以使初学者更快完成简单的代码编写, 而不用顾虑到程序要用哪些变量, 要选哪些类型。对于有一定程序编写经验的人来说, 要经常为for i=1 to 9中的变量i声明类型也颇烦人, 所以这种特性在某些场合上, 是相当讨人欢心的。VB.NET的具体变革如下:子程序 (函数) 的定义与调用、数组的初值设定并且需要注明范围。

VBS是以VB语言为基础发展起来的一种简单型的脚本语言, 语法基于Basic.脚本语言, 就是不编译成二进制文件, 直接由宿主 (host) 解释源代码并执行, 简单点说就是你写的程序不需要编译成·exe, 而是直接给用户发送·vbs的源程序, 用户就能执行了。前面的一个是脚本语言, 面向结构。后面的是计算机高级语言, 是面向对象的。前面的一个主要是用来处理一些脚本, 不过在asp里面可以直接用它来编程。而VB, 我们所用的Windows操作系统就是用这个语言编写出来的。VBScript是特意为在浏览器中进行工作而设计的, 它不包括一些在脚本这个范围以外的特性, 如文件访问和打印等。

3 结语

继Vista以后, 系统都预装了.net framework框架, 由此看来, 微软正在极力推崇使用.net技术。相信在不久的将来, .net应用程序将会被越来越多的人关注和使用, .net应用程序的开发在未来会有很大的发展前景。

参考文献

[1]王松.用电检查资料管理数据库简介[J].云南电力技术, 2007 (10) :60.

篇4:VB算法设计教学对策探析

关键词 程序设计 算法 情境 语法格式

中图分类号:G633.67 文献标识码:A

算法与程序设计是高中信息技术选修课程之一,传统教学模式是从生活算法入手,把程序作为算法的实现手段,再从三种基本结构入手,逐步揭示出程序结构与设计方法。但在这种教学过程中,我们遇到了很多问题,产生了许多困惑:

(1)算法与程序设计难教、难学是困扰师生的突出问题。对于学生而言,一方面该部分教学内容具有高度的抽象性和严密的逻辑性,容易使学生产生畏难和恐惧心理;另一方面由于平时学生对其了解甚少,会使其对编制程序产生神秘感。

(2)学生对课程的重视程度不够。因为信息技术这门课不参加中考,所以在初中开设状况不是很理想。另外,大多数学生不需要参加这门课的高考,这就造成了学生对信息技术的学习重视程度减弱,在课堂上的听讲状态、完成练习情况都不是很好。

(3)教材章节内容比较多。按教参学时进度安排,完成一课时规定内容,学生接受很困难,只能是蜻蜓点水;若要根据学生的接受程度授课,就不能完成每课时的规定内容。

(4)教师普遍认为算法与程序设计的教学适合在教室上课,应尽量少安排上机。因为学生一到机房会想上网或玩游戏,注意力容易分散。可如果不让学生体验调试程序的过程,那么算法的学习就只能是纸上谈兵,学生对算法和程序知识的理解将是肤浅的。

如何解决这些问题?如何在有限时间内合理运用教材,采取恰当的教学方法,激发学生的学习兴趣,使学生对程序设计知识由“要我学”转变为“我要学”,使学生运用信息技术的能力有所提高,有所进步?这是我们作为教师必须要思考和研究的问题。

有一点大家都明白,如果把程序设计学习的目标仅仅定位在获得高考的加分或取得等级考试的好成绩无疑是非常狭隘的。能够在竞赛中脱颖而出的佼佼者毕竟是少数。高中学生学习程序设计当然不是为了培养他们今后个个成为程序员,对于大部分将来并不会从事计算机专业的同学来讲,真正能够让他们受益的是在程序设计学习中促进他们能力的发展。

程序设计专业知识的学习相对一些计算机应用软件的学习要枯燥很多,尤其需要学生思维主动的、积极的投入。在教学过程中我发现很多学生在这一阶段表现得兴趣不大,有了疑问也不愿意主动向老师求解。对于这样的情况,仅仅将原因归咎于学习内容枯燥或学生的“懒”,并不能真正解决问题。通过与学生的交谈,笔者发现真正的原因在于学生并不清楚学习程序设计的用处在哪里?因此在程序设计知识的讲授阶段,笔者给出一些学生容易理解、切合实际的问题,然后围绕这些问题开展知识点的教学。这种学习方法具有明确的学习指向性,容易引发学生的学习兴趣,进而产生学习的动力。在求解问题的过程中,学生会提出各种各样的新观点、新想法。

1创设情境 培养学生兴趣

算法引入新课程,确实在于它是与时俱进中不可缺少的数学知识,同时,它也是培养学生逻辑思维能力的重要载体。而能力的培养是“教”不会的,需要给学生创设情境,通过亲历问题解决来实现,教师的作用就是在“问题链”的设计中,借题创景,提供学生亲历的机会。在介绍算法的概念的时候我就采用了情境设计的教学方案。

设计意图:在这个阶段,学生对算法有了进一步的了解。在情境的帮助下,学生可以自己给出算法的基本概念,并且知道了在设计算法的过程中,要满足算法的三点基本要求。否则,所设计出来的算法就是一个不合格的算法,或者根本就不能完成最初设定的目标。经过这样的处理,学生轻轻松松就理解了算法的概念,课堂取得了较好的效果。

2问题入手,促进学生面对问题

由特殊问题入手,可以帮助学生回忆所学的“二分法”,在此基础上,教师可以先不给精度要求,组织学生试用自然语言写出算法,在学生体验到,二分法操作可以使结果存在的区间越来越小时,教师追问:若不加控制会如何?此时,学生容易理解,为什么需要引入控制量?学生也会有指向地学习如何进行控制?

这样设计的学生活动,可以使学生结合问题运用逻辑思维,可以使学生在尝试中学习用自然语言描述算法,更可以使学生亲历体验产生问题,从而带着需要解决的问题接受新知。在这样的设计下,解决问题的过程就是解决问题的算法的形成过程,暴露这一过程,体验这一过程,能促进学生面对问题,有方法、有途径去得出算法。

3完善例题,同类比较

4“任务”为驱动,给予学生及时反馈

在算法的教学过程中,把教学内容巧妙地隐含在每一个任务中,同时以Visual Basic应用软件为载体,让学生能够动手实践自己地算法,在各个任务之间,设计地时候注意一定地循序渐进梯度,也要考虑到学生的个体差异性。对于学生的不同层次,给他们布置的任务也有所不同,将若干个有层次之分的任务布置,让学生根据自己的能力去选择。学生在解决问题的过程中发现新的问题,通过完成一个个任务来提高自己的能力。学生通过学习活动,能够不断的看到自己的成果时,就会爆发出强烈继续学习的愿望。教师在这过程中,不仅仅是任务的设计者,同时也是引导者和参与者,在学生完成任务的过程中,注意引导学生进行思考,主动的去探索。

对学生完成任务的结果予以及时反馈,学生在了解了学习结果后,可以看到自己的进步,提高学习热情,增加努力程度,同时又能看到自己的不足,激起上进心,争取更好地成绩。笔者在算法教学过程中,要求每一位学生在完成任务后,把自己的程序上传给笔者,在笔者的教师机上,每一位学生都有一个自己的文件夹,通过这种方式,笔者能够及时了解每一位学生的学习情况,并及时反馈,根据学生的需要,给出相应的指导。

5结束语

通过一个学期的算法讲解,对教学方法进行了一个小小的总结和讨论,在实施这些教学方法的时候,问题依然很多,教学方法虽然存在着这样或那样的不足,但在一定程度上提高了教师的业务水平,培养和加强了学生的思考能力、交际能力、取得了比较理想的效果。希望在以后的不断实践下,把缺点和不足弥补上。

参考文献

[1] 陶增乐.高中信息科技[M].上海:华东师范大学出版社,2000.

[2] 忻展红,舒华英.IT项目管理[M].北京:北京邮电大学出版社,2006.

[3] 魏小山.信息技术新课程教学目标的达成策略[J].中小学信息技术教育,2007(02).

篇5:用vb开发通信软件VB

用vb开发通信软件

一、PC串行通信程序机制

常用的PC串行通信程序大多利用BIOSINT14H中断,以查询I/O方式完成异步串行通信。

Windows系统提供中断方式驱动的串行通信驱动程序COMM.DRV。通信程序无需直接对串行端口进行操作,而是通过驱动程序这一编程接口进行间接操作。

Windows操作系统中,串行通信采用“事件通知”方式,支持数据按块传送。进行通信时,Windows开辟一个用户定义的输入输出缓冲区,每接收一个字符就产生一个低级硬件中断,串行驱动程序立即取得控制权,并将字符放入输入数据缓冲区,然后将控制权返还正在运行的应用程序。如果输入数据缓冲区满了,驱动程序用当前定义的流控制机制通知发送方停止发送数据。发送数据也采用类似的处理方式,应用程序将需要发送的数据放入输出数据缓冲区,串口每发送一个字符就产生一个低级硬件中断。

二、PC串行口远程通信的硬件配置

串行通信数据链中,计算机一端称为DTE,即数据终端设备;调制解调器一端称为DCE,即数据通信设备。PC串行通信的硬件连接方式分为零Modem连接和Modem连接。

零Modem连接即直接用调制解调器电缆将两台设备连接起来,Modem连接则通过DCE(Modem)将两台PC连接起来。

零Modem连接用于距离15m内两台DTE或DCE设备之间的连接。而Modem连接则通过电话网或专线用于长距离的通信。

TXD和RXD信号线用于计算机和Modem间传输数据信息;RTS从计算机端发送信号到Modem,表示希望把数据传给Modem,若Modem能接收这个数据,它将发送CTS信号给计算机;DTR从计算机端发送信号到Modem,表示计算机已作好通信准备,Modem将DTR信号作为初始化自己的信号,然后给计算机回送数据设置就绪信号DSR;当本地Modem接收到远地Modem的呼叫,则发送RING信号给计算机;Modem应答呼叫后,发送数据载波检测DCD信号到计算机,表示已建立连接。

Modem的工作状态分为命令状态和在线状态。处于命令状态时,Modem对串口发送的信息进行解释,可通过PC串口向Modem发送AT命令对其进行初始化、设置和操作。

例如,初始化命令为:“ATQOV1WOSOΚ1&C1&D2&YO&WO”,其含义为:

QO:返回结果码;

V1:以字符形式显示结果码;

WO:不返回协商进程结果码;

SOΚ1:振铃一次,即应答;

&C1:追踪数据载波信号CD;

&D2当DTR从开到关时,Modem挂机进入命令状态;

&YO:Modem上电时重新调出用户方案;

&WO:将以上设置存为动态设置用户方案0;

一旦本地Modem与远地Modem建立连接,Modem即处于在线状态,可进行数据传输。此时,Modem不响应AT命令,直接传送所收到的数据。

三、Modem连接远程通信软件的编制

通信过程中大部分的工作由串行通信驱动软件承担。

本文软件的运行环境为AST+4/66d,Hayes公司的ACCURA144+FAX144Modem,Windows3.2,VB3.0专业版。VB3.0专业版中提供了一个MSCOMM.VBX通信控件。它使用户能很方便地通过对控件属性的设置、检测,访问串行通信驱动程序的大多数特性,而不必考虑其实现细节。该控件为“事件驱动”,只响应“OnComm”事件,该事件可对已发生的事件或错误进行处理,与CommEvent属性紧密相关。

通信软件、通信驱动软件和Modem之间的通信关系

以下程序实现了通信的基本过程。包括初始化串口和Modem,上位机拨号呼叫下位机,下位机应答并开始定时传输数据,挂机停止传输等功能。

VB3.0编制的通信软件清单如下:

上位机控件清单:

控件名称 属性

Form1Form1Caption ″上位机通信″

MsComm comm1

CommandButton1CallCaption ″拨号″

CommandButton2hangCaption ″挂机″

CommandButton3ExitCaption ″退出″

下位机控件清单

控件名称 属性

Form1Form1Caption ″下位机通信″

MsComm comm1

CommandButton1hangCaption ″挂机″

CommandButton2ExitCaption ″退出″

Timer1Timer1Interval 3000

Text(i)Text(i)

1.串口初始化、设置程序

在程序初始化时,先对串口初始化。因为使用RTS/CTS握手信号的硬件设备只有RTS信号置为高才能接收数据,所以需将MSCOMM通信控件的RTSenable属性设为TRUE。由于Modem在处于命令状态时,通过串口发送的命令以及命令结果均会回显在输入缓冲区中,因此在进入在线状态前,禁止产生EV-RECEIVE事件,避免数据误处理。

由于Windows是多任务系统,在进行数据收发循环处理时,应调用DOEVENTS事件,将控制权交还系统,允许Windows执行其他任务。但应注意,在处理OnComm事件时小心使用DOEVENTS,避免系统又产生OnComm事件,造成嵌套,出现堆栈溢出错误。

Sub Form-Load

comm1.CommportΚ1′COM1口通信

comm1.SettingsΚ″9600,N,8,1″′波特率9600,无校验,8位数据位1位停止位

comm1.OutBufferSizeΚOUTPACK′设置输出缓冲区大小

comm1.InBufferSizeΚINPACK′设置输入缓冲区大小

comm1.InputLenΚ1′每次从输入缓冲区中取一个字符

comm1.RTSenableΚ-1′RTS信号为高

comm1.RthresholdΚ0′不产生MSCOMM-EV-RECEIVE事件

comm1.PortOpenΚ-1′打开串口

cdΚcomm1.CDHolding′取载波检测信号线原始状态

comm1.outputΚ″ATQOV1WOSOΚ1&C1&D2&YOWO″′初始化Modem

Do DoEventsLoopUntilcomm1.OutBufferCountΚ0

End Sub

2.上位机拨号呼叫下位机

SubCallcom-Click()

Comm1.OutPutΚ″ATDT″&Phonnum$&chr$(13)′向Modem发拨号命令

Do DoEventsLoopUntilcomm1.OutBufferCountΚ0

End Sub

3.下位机Modem应答,连通后开始定时传输数据

下位机检测CD,判断是否连通:

Sub Comm1-OnComm()

Select Casecomm1.CommEvent

Case5 ′MSCOMM-EV-CD

Timer1.EnabledΚ-1′启动定时器

End Select

End Sub

VB传送定长字符串,数据接收处理相对简单,

但在发送实时数据时,若将数据转换成定长字符串,这样会大大降低传输效率。在接收端,通知程序从输入缓冲区中取字符有两种方法:一是用轮询方法循环判断InBufferCount是否为0;另外就是利用Rthreshold属性触发“OnComm”事件及“CommEvent”属性中EV-RECEIVE事件。当Rthreshold的值不为0时,允许产生EV-RECEIVE事件。该属性设置和返回在通信控件设定CommEvent特性为接收和产生OnComm事件之前要接收的字符数。VB传送变长字符串时,接收端的Rthreshold值要作相应的改变,以确保接收数据及时准确。

下位机定时发送字符串“strin3$ΚFormat$(Len(strin1$),″0000″)&chr$(8)&strin2$”。strin1$为当前字符串,strin2$为上一字符串。上位机根据接收strin3$中Len(strin1$),相应改变RthresholdΚLen(strin1$)+4。这样,通过提前发送字符串长度,改变Rthreshold值可实现发送变长数据。

Windows串行通信驱动程序的事件驱动特性仍有不稳定的缺陷。如InputLenΚ0时,有可能取出不完整的数据。为保证可靠,采取降低处理速率的方法,保证下位机发送的数据流完整地进入输入缓冲区。设InputLenΚ1,即每次从缓冲区中取一个字符。也可采用轮询方法,定时检测输入缓冲区。下位机定时发送数据:

Sub Timer1-Timer()

If comm1.CDHoldingΙΛcdThen

str1$-text1(i).Text

strin2$Κstrin1$′上一字符串

strin1$Κstr1$′当前字符串

strin3$ΚFormat$(Len(strin1$),″0000″)&chr$(8)&strin2$

′传送当前字符串长度,以及上一字符串内容

com m1.OutPutΚstrin3$

Do DoEventsLoopUntilcomm1.OutBufferCountΚ0

Else

Timer1.EnabledΚ0

End If

End Sub

上位机检测CD状态,判断是否连通、并接收处理数据。

Sub Comm1-OnComm()

Select Case comm1.CommEvent

Case5 ′MSCOMM-EV-CD检测CD状态,判断是否连通

comm1.InBufferCountΚ0′清输入缓冲区

comm1.RThresholdΚ4′当输入缓冲区中有五个字符,

Case2′MSCOMM-EV-RECEIVE产生EV-RECEIVE事件,接收处理数据

Do DoEvents

Ifcomm1.InBufferCountThen′循环从缓冲区中取数据

str1$Κstr1$+comm1.Input

Else

Exit Do

End If

Loop

len2Κ1en1′当前字符串长度

len1ΚVa1(Left$(str1$,5))′即将发送的字符串长度

comm1.RThresholdΚlen1+4

strin$ΚRight$(str1$,len2)′数据处理

……

End Select

str1$Κ″″

End Sub

4.根据设置的AT命令“&D2”,当置DTR信号为低时,Modem挂机进入命令状态。也可通过串口输出““+++ATH”+chr$(13)”字符串挂机。

Sub Hang-click()

If comm1.CDHoldingΙΛcdThen′检测CD,判断是否挂机

comm1.DTRenableΚ0

comm1.DTRenableΚ-1′置DTR信号为高,为下一次通信准备

End If

End Sub

5.退出程序时,一定要关闭串口

Sub Exitcomm()

comm1.PortOpenΚfalse

End

End Sub

四、Windows通信机制和VB3.0通信控件潜在缺陷

在通信软件编制过程中,我们发现Windows下通信机制采用的“事件驱动”在实际运行中不稳定。如在文件传输过程中,误码和数据丢失的情况时有发生;若串口波特率过高,会产生无法通信或在通信过程中随机挂机的情况。这主要是由于Windows本身通信机制和通信线路介质及质量的影响。为保证数据传输稳定可靠,可采用通信协议如XModem-CRC或YModem。在MSCOMM.VBX通信控件中,Rthreshold属性值大小与输入缓冲区InBufferSize大小有关,当Rthreshold值较接近InBufferSize值时,有可能不产生EV-RECEIVE事件,为保证产生该事件,可将InBufferSize值取得较大。

篇6:用VB实现多文档打印VB

用VB实现多文档打印

作者: 盛放

通常,一般情况下,我们打印文档都是直接从应用程序中打印,例如WORD,这个方法对于单个文件打印比较方便,但是对于文秘等经常需要打印大批量文件的工作人员,如果仍然用WORD一个一个进行打印就比较麻烦了。

应我公司文管中心的要求,我制作了一个多文档打印程序,方便了文秘人员,现介绍如下:

运行VB,新建一个应用程序工程,在Form中添加一个DriveListBox 控件、DirListBox 控件和FileListBox 控件,分别取名为:Drive1、Dir1和File1。设置File1的Pattern 属性为*.doc,设置FileListBox 控件中显示的文件名为DOC文档。

在Form_Load事件中添加一行代码:Drive1.Drive = “c:”,用来设置运行时所选择的驱动器。

在Drive1_Change()事件中添加一行代码:Dir1.Path = Drive1.Drive,这样当驱动器改变时,使目录路径随之改变。

同样在Dir1_Change()事件中添加一行代码:File1.Path = Dir1.Path,当目录改变时,使文件列表同时改变。

因为一般来说,文档都会保存在统一的目录下,所以没有使用CommonDialog 控件进行文件名选择,使操作更为简单方便。

在Form中添加一个CommandButton 控件取名为Print,用来进行打印操作。

在Command1_Click()中添加如下代码:

Dim i As Integer

Dim strfile As String

Dim word As Object

Set word = CreateObject(“word.Basic”)

word.appshow

For i = 0 To File1.ListCount - 1

If Right(Dir1.Path, 1) “” Then

strfile = Dir1.Path + “” + File1.List(i)

Else

strfile = Dir1.Path + File1.List(i)

End If

word.fileopen strfile

word.fileprint

word.fileclose

Next

word.appclose

Set word = Nothing

代码说明:

定义一个对象变量word

使用CreateObject创建一个WORD对象并赋值给word

以FileListBox 控件的列表部分项目的个数作为最大数进行循环打印

判断目录名的最后一个字母是否为“”,如果不是,则添加“”进行修正

通过目录名和文件名获得完整的文件名

使用word对象的fileopen方法打开文件

使用word对象的fileprint方法进行文件打印

使用word对象的fileclose方法关闭文件

最后调用word对象的appclose方法关闭word程序,以及释放对象资源Set word = Nothing,

这样,我们就很简单的实现了多文档的打印,希望对文秘人员有所帮助。

篇7:在VB 里 巧 用 集 合VB

在VB 里 巧 用 集 合

李 成 俊 赵 文 杰

---- VB 提 供 一 种 很 有 用 的 数 据 类 型 集 合(Collection)。 她 的 工 作 原 理 类 似 与C 里 的 链 表, 可 以 很 方 便 的 实 现 插 入, 删 除。 并 且 在 使 用 了Key 之 后, 检 索 操 作 也 变 得 非 常 简 单。 但 其 编 程 上 的 方 便 却 带 来 了 效 率 上 的 急 剧 下 降( 尤 其 在 大 数 据 量 时 会 让 你 无 法 忍 受)。 以 下 举 两 个 例 子 来 讨 论 一 下 怎 样 把 集 合 和 数 组 结 合 使 用, 使 程 序 在 方 便 和 效 率 之 间 达 到 一 种平衡。

---- 1 . 要 求 建 立 一 数 据 结 构, 用 来 保 存 学 生 的 学 号, 姓 名 和 成 绩, 并 在 需 要 时 以 成 绩 的 高 低 按 顺 序 输 出 这 些 信 息。

---- 这 里 我 想 提 供 两 种 解 决 方 法( 当 然 还 有 其 他 方 法)。

---- 第 一 种: 完 全 用 集 合 来 保 存 数 据。

---- 首 先 定 义 一 个 结 构 如 下( 该 结 构 同 时 用 与 第 二 种 方 式)

Type tMyType

ID As Long

Name As String

Score As Integer

End Type

再定义类clsData如下

Public ID As Long

Public Name As String

Public Score As Integer

并定义插入函数用来接受数据并插入到数据结构中

Public Function InsertToCol(pData As tMyType)

注释:其中m_ColData保存记录

Dim myClass As New clsData

Set myClass = Nothing

For iLoopCtrl = 1 To m_ColData.Count

If m_ColData(iLoopCtrl).Score

< = pData.Score Then Exit For

Next

myClass.ID = pData.ID

myClass.Name = pData.Name

myClass.Score = pData.Score

If m_ColData.Count = 0 Or iLoopCtrl

= m_ColData.Count Then

m_ColData.Add Item:=myClass

Else

m_ColIndex.Add Item:=myClass,

before:=iLoopCtrl

End If

End Function

这时,对每个记录做处理如下

Public Function OutProcess

For iLoopCtrl = 1 To m_ColData.Count

CurrentID = m_ColData(iLoopCtrl).ID

CurrentName = m_ColData(iLoopCtrl).Name

CurrentScore = m_ColData(iLoopCtrl).Score

注释:对当前记录做相应处理

Next

End Function

---- 第 二 种: 将 数 组 与 集 合 结 合 起 来, 用 数 组 保 存 数 据 而 用 集 合 保 存 排 序 信 息。

---- 首 先 定 义 如 下 变 量

Public m_Array(99) As tMyType

注释:根据需要也可以定义成动态数组

Public m_ColIndex As New Collection

注释:用来保存索引信息

向数组中插入数据的函数如下

Public Function InsertToArray(pData As tMyType)

If iCurIndex > 99 Then Exit Function

For iLoopCtrl = 1 To m_ColIndex.Count

If m_Array(m_ColIndex(iLoopCtrl)).Score

< = pData.Score Then Exit For

Next

If m_ColIndex.Count = 0 Or iLoopCtrl

= m_ColIndex.Count Then

m_ColIndex.Add iLoopCtrl - 1

Else

m_ColIndex.Add iLoopCtrl - 1, before:=iLoopCtrl

End If

m_Array(iCurIndex).ID = pData.ID

m_Array(iCurIndex).Name = pData.Name

m_Array(iCurIndex).Score = pData.Score

iCurIndex = iCurIndex + 1

End Function

这时,对每个记录做处理如下

Public Function OutProcess()

For iLoopCtrl = 1 To m_ColData.Count

I = m_ColData(iLoopCtrl)

CurrentID = m_Array(I).ID

CurrentName = m_Array(I).Name

CurrentScore = m_Array(I).Score

注释:对当前记录做相应处理

Next

End Function

---- * 性 能 分 析

---- 对 于 集 合 来 讲, 随 着 记 录 个 数 的 增 长, 对 集 合 的 操 作 效 率 飞 快 下 降,

因 为, 集 合 按 下 标 查 找 一 记 录 时 首 先 从 集 合 的 头 一 条 记 录 开 始, 顺 序 向 下, 直 到 指 定 的 下 标 位 置。 因 此, 访 问m_ColData(99) 要 比 访 问m_ColData(1) 慢 的 很 多。 而 大 家 都 知 道 数 组 在 内 存 中 是 顺 序 存 放, 因 此, 访 问 某 条 记 录 的 效 率 与 下 标 大 小 无 关。 当 记 录 数 或 每 个 记 录 的 项 目 数 越 大, 效 率 的 提 高 越 明 显。( 大 家 可 以 自 己 写 一 些 测 试 程 序, 具 体 比 较 以 下 它 们 之 间 的 效 率 差 别, 会 感 到 非 常 惊 讶 的)

---- 2 . 当 记 录 有 唯 一 关 键 字, 并 经 常 以 这 个 关 键 字 做 查 询 时 可 以 使 用 以 下 方 法。

---- 定 义 用 于 保 存 数 据 的 结 构 和 结 构 数 组

Type tMyType

Item_1 As String

注释:为关键字

Item_2 As String

Item_3 As String

End Type

Public m_Array() As tMyType

Public m_ColIndex As New Collection

注释:用于保存索引的集合

定义用于保存索引信息的类clsIndex如下

Public Item_Key As String

Public ID_OfArray As Integer

当接受到一条记录pData后插入过程如下

Public Function InsertData(pData As tMyType)

Dim myClass As New clsIndex

ID_OfArray = ID_OfArray + 1

m_Array(ID_OfArray).Item_1 = pData.Item_1

m_Array(ID_OfArray).Item_2 = pData.Item_2

m_Array(ID_OfArray).Item_3 = pData.Item_3

myClass.Item_Key = pData.Item_1

myClass.ID_OfArray = ID_OfArray

m_ColIndex.Add Item:=myClass, Key:=pData.Item_1

End Function

那么,当需要以给出的关键字(mKey)

取得数据时,用以下方法实现

Current_Item1 = m_Array(myClass(mKey)

.ID_OfArray).Item_1

Current_Item2 = m_Array(myClass(mKey)

.ID_OfArray).Item_2

Current_Item3 = m_Array(myClass(mKey)

.ID_OfArray).Item_3

篇8:VB教学的心得

计算机语言具有触类旁通的特点, 学生在学习VB课程之前, 都非常希望能学好这门课程, 能编制出高水平的程序, 但是, VB程序设计的方法和概念对于初次接触计算机语言的学生而言是全新的, 加上部分章节内容枯燥抽象, 使得学生学习起来感觉比较困难, 甚至望而却步。VB课程教师在上课前都做了精心的准备, 在课堂上也投入了极大的热情和耐心, 可还是经常看到台下的学生表现出一脸的不解。如何解决好这种教与学脱钩的矛盾, 显然采用先进有效、灵活多样的教学方法是提高VB课程教学质量的关键所在。下面是笔者多年来的VB课程教学的一些体会。

选用适当的教学方法, 培养学生的自学能力和学习兴趣:VB课堂教学知识点很多, 根据这门课程的一般教学顺序, 前阶段讲授的内容通常都是变量、数据类型、运算符、表达式、语句、函数的定义等, 学生会觉得所学内容理论性太强, 加上初次接触, 会觉得比较抽象, 从而导致对本课程教学的不重视, 等到后面真正涉及到编程时, 由于基本概念和编写程序的规则没有掌握好, 又缺乏算法和数据结构的知识, 学生编制的程序往往是错误很多, 很难在机器上调试出结果。所以这就需要我们任课教师采用适当的教学方法来改善教学效果。

案例教学法, 是在教师的指导下, 根据教学目标和内容的需要, 采用案例组织学生进行学习、研究、锻炼能力的方法。它能创设一个良好的宽松的教学实践情景, 把真实的典型问题展现在学生面前, 让他们设身处地地去思考、去分析、去讨论, 对于激发学生的学习兴趣, 培养创造能力及分析、解决问题的能力极有益处。案例教学发的实施步骤是:第一, 整理一个程序案例, 这个程序应该是完整的, 并且包含了当天课程的所有知识点, 也包含了以前已经讲授过的知识。第二, 分析案例、解决问题。讲解实现这一程序的基本思路, 提出实现思路所需要解决的问题。此时, 教师与学生之间是一种“师生互补, 教学相辅”的关系。教师将分析案例的“主权”交给了学生, 让学生运用所掌握的各种知识, 甚至是课外的知识去分析这些问题, 讨论解决方法。第三, 回顾和总结, 在程序中讲解新的知识点, 总结新知识的使用方法和注意事项, 展示结论, 和学生共同讨论教材结论和同学结论的共性和差异性, 分析差异性产生的原因, 并对学生的各种结论加以点评 (以鼓励的形式) ;也可由学生阅读课本来分析自己的得失, 从而使学生的自学能力得到培养。

这样可以通过案例把抽象的原理, 概念等具体化, 把他们置于一定的实际情景之中, 使学生可以清楚地认识到这些原理、概念在实际生活中的用处、表现, 增进其学习兴趣和动力, 同时也会恰当地掌握它具有的特定含义和意义。案例教学法注重学生的创造能力和实际解决问题能力的培养与发展, 而不仅仅是获得固定的原理、规则。学生通过案例教学得到的知识是内化了的知识, 虽然不一定能把所学到的知识罗列出来, 但学生逐渐学会了如何处理众多的疑难问题。

强化实验教学:VB是一门实践性很强的课程, 实验教学在该课程的教学中应该占主要地位, 对培养学生的动手能力、分析问题和解决问题的实践性很强, 要求学生必须具有较强的实际操作能力。

VB语言使用先进的面向对象编程思想, 独特的设计方法使设计过程充满趣味性, 设计周期缩短、设计界面美观。该课程性质特别适合于边操作边学习, 通过实验既可以加深对所学课程的理解, 又可以积累程序调试经验, 起到课堂教学达不到的效果。通过上机实验可以使学生进一步理解面向对象编程的基本思想, 为学习其它面向对象编程语言打下良好基础。

在实际教学过程中, 教师往往只重视理论课的教学, 对实验课却是随意地按照章节后的习题安排一些实验, 学生上机时有的也只是在书本找个现成的程序进行调试, 根本不知其所以然。这样必然导致不良的教学效果。改进的措施就是: (1) 合理安排理论课与实验课时间, 注意相互衔接; (2) 精心组织实验, 不能仍以传统的验证性内容为主。每次实验的内容要紧扣最近课堂上所讲解的知识点; (3) 注意教材中实验内容的连贯性, 注意由浅入深; (4) 在VB实验过程中, 设计一些训练习题, 让学生尝试自行设计, 有效地引导学生联系实际, 有意识地培养学生分析问题、解决问题的能力。作为老师一定不能放松实验课的指导工作, 只有这样才能掌握每个学生的学习情况。

抓重点, 攻难点:掌握语言的目的是为了进行程序设计, 重点放在算法设计和程序设计上面, 因此, 算法与程序代码成了VB应用程序的基础, 也是核心。在教学中经常存在这样一种现象:很多学生对语法、结构等知识掌握得很好, 但一碰到实际问题就不知道如何下手, 其实这就是算法能力欠缺的表现。在VB程序设计中, 算法有很多种, 常用的算法必须掌握, 如:迭代法、穷举法、递推法、递归法、分解法等。教师应多带领学生阅读程序, 分析过程, 吸取他人的经验和成熟的算法, 使学生熟能生巧。

总之, VB语言的内容多, 知识面广, 教师应采取适当的教学措施, 使学生尽快掌握, 通过编程培养创新思维。同时, 一些有经验的教师还可以做一些相关的课件, 让学生课后进一步学习。此外, 教师还应重视自己创新能力的培养, 注重将专业知识应用到实践中的能力的培养, 以求达到良好的教学效果。

参考文献

[1]丁爱萍.Visual Basic程序设计 (第二版) , 北京电子工业出版社.

[2]孙秀.VB教学方法改革的探索与实践, 辽宁师专学报.

上一篇:墙面瓷砖干挂整改方案下一篇:微笑的力量记叙文400字小学作文