精华内容
下载资源
问答
  • 目的: 培养学生综合利用VB语言进行程序设计能力,主要是培养学生综合使用基本控件文件读写、数组操作和菜单设计等能力。2.基本要求:设计一个学生成绩统计与查询系统,要求具有如下功能:★ 使用该系统时,...

    设计题目:学生成绩统计与查询系统

    目的与要求:

    1.目的: 

    培养学生综合利用VB语言进行程序设计的能力,主要是培养学生综合使用基本控件的、文件读写、数组操作和菜单设计等能力。

    2.基本要求:

    设计一个学生成绩统计与查询系统,要求具有如下的功能:

      使用该系统时,首先要登陆,用户名或密码输入正确才能使用(设置一个用户名和一个密码),即进入程序的主界面。最多可输入3次口令,若3次输入都错误,则禁止再次输入。

      在程序的主界面中进行菜单设计。

      通过菜单命令应能从数据文件中将学生姓名信息及课程的成绩(至少三门课的成绩)读入,并显示在文本框中。

      通过菜单命令应能计算并显示每个学生的平均成绩。

      通过菜单命令应能计算并显示数学、英语、计算机各科的平均成绩和总平均成绩及学生总人数。

      通过菜单命令应能计算出平均成绩大于与或等于总平均成绩、各科成绩均大与或等于各科的平均成绩的学生人数,即优秀生的人数,并显示优秀生的信息。

     通过菜单命令应能根据学生的姓名进行查询。

    3.创新要求:

    在基本要求达到后,进行创新设计,进一步完善系统。创新方向提示如下:

       在程序运行时,可以设置多个条件,然后根据给定的多个条件来统计或查询学生信息(如统计某个分数段的学生人数和显示该分数段内的学生信息等)。

        为某些命令设置快捷键。

        增加工具栏,工具栏中应有常使用的工具按钮。

    设计方法和基本原理:

    1.     问题描述:

    程序界面见上面的示图,功能描述参见基本要求和创新的内容。设计时要注意一些功能需要在其它功能之后才能使用,如统计与查询菜单下的命令需要在读入数据后才能使用。

    2.     问题的解决方案:

    设计程序主界面 (主界面设计状态示意如下)

    44f76daa8191ac466f3640d78ae44fc8.png

    登陆窗体用来限制非法用户进入系统,所以该窗体应为启动窗体。在用于登陆的窗体中,由于用户密码不能显示出来的,所以要设置文本框的Password属性。

    ②编写代码

    需要对每一个窗体编写事件处理过程。最主要的工作包含在主窗体中,代码包括事件处理过程和必要的声明。变量声明部分声明本程序所需要的变量和数组,由于单击菜单命令时,要对数学、英语、计算机、平均成绩数组及各累加变量进行操作,因此相应的数组和变量应定义为模块级的。在编写事件处理过程代码时注意以下几点:

    (1) 定义数组分别用于存放姓名、数学、计算机、英语、平均成绩数据。

    (2) 单击“数据”菜单中“读入数据”,将数据文件中的数据依次读入到相应数组中。

    (3) 计算每个学生的平均成绩时,要计算每个学生所有科目的平均分,并存放在平均分数组的对应元素中;计算各科平均成绩时,分别对数学、英语、计算机的数组的数据求和,然后计算平均分;总平成绩为各科平均成绩之和除以科目数

    (4) 利用InputBox 函数来输入要查询学生的姓名。

    (5) 利用MsgBox 函数或另一个窗体来显示统计和查询结果。

    (6) 利用另一个窗体来显示优秀生的信息

    主要技术问题的描述:

    (1)  菜单的设计参看课本第十章。

    (2)  文本的读取为本题中的难点。将文本文件的内容读入字符串数组的部分代码如下:

    Dim txt() As String,linesAs Integer

    lines = 0                    ‘ 文件行数总计

    Open infile For Input As#1 ‘ 打开文件。infile 变量中存放的是文本文件的名字

    Do While Not EOF(1)

        ReDim Preserve txt(lines + 1)   ‘开辟空间以存放新一行内容

        lines = lines + 1

        Line Input #1, txt(lines)   ‘读入一行并放入数组

    Text1.Text = Text1.Text & txt(lines) & vbCrLf ‘在文本框中显示

    Loop

    Close #1   ‘关闭文件

    一旦数组中有了文件的内容,则可以将其内容逐行地、通过字符串连接符赋给文本框的Text属性,就可以显示出来了。要控制文本框中文本的换行可以利用VB的系统常数vbCrLf来实现。

    (3)  在执行“统计”→“优秀生的人数与信息”时,由于信息是显示在另一个窗体中的Text1控件中,所以应在Text1控件前加上窗体的名称,并以点分隔来表明控件所属的窗体。如:

    Form3.Text1.Text =Form3.Text1.Text & txt(lines) & vbCrLf

    在窗体Form3中的文本框中显示

    学习VB中有问题可以添加小编微信号:vbyjk521 ,每晚在线免费答疑。

    3103d3da0f5a7877b868ec139e3b663e.png



    203376c577d2ea6c12b188170e2cde07.gif054760b8b3c6d831bf54afc5af175988.png

    长按上图,关注跟我学VB

    展开全文
  • 一个高级的VB文件搜索程序,基于API技术实现的文件高级搜索功能,作者: Richard Mewett。该VB工程源码是cScanPath 类的示例程序,这个搜索类可以指定文件路径进行文件查找.程序具有真正全面的过滤功能. 你可以按如下...
  • vb提取查看thumbs.db文件图像内容,VB6.0编写开发Windows XP缩略图缓存文件查看提取工具,把有图片文件夹中Thumbs.db拖到下面列表框中(在资源管理器文件夹选项设置中要取消“隐藏受保护的系统文件...
  • 它采用是利用试卷自动生成算法记录试题一组特征值,根据用户提供试卷题目类型、章节分布、难易程度等条件,借助于系统一系列数据文件,使具体课程相关数据动态地抽象成逻辑数据,用以解决通用问题,线性...
  • ——抽象工厂模式”,没错,这是大话设计中一章,在这一章中,大鸟教会了小菜,用配置文件改变‘DB’值,从而改变了应用程序要访问数据库类型。详情请见大话设计模式P157   我们在SQLHelper中也用到了...

           “就不能不换DB吗?——抽象工厂模式”,没错,这是大话设计中的一章,在这一章中,大鸟教会了小菜,用配置文件改变‘DB’的值,从而改变了应用程序要访问的数据库类型。详情请见大话设计模式P157

    1.      我们在SQLHelper中也用到了配置文件来改变SQLHelper中数据库连接的字符串

     因为我们使用的是应用程序配置文件,所以我们将配置文件添加在UI层,右击UI->新建项->常规->应用程序配置文件,在app.config中对connstr进行赋值。

     

    1. SQLHelper将我们日常生活中常用的四个存储过程(insertdeletemodify select)进行了封装
      1. 无参,返回值为所影响行数的增删改方法
      2. 有参,返回值为所影响行数的增删改方法
      1. 无参,返回值为SqlDataReader的查方法
      1. 有参,返回值为SqlDataReader的查方法
        <span style="font-family:Tahoma;font-size:18px;">Imports System
        Imports System.Data
        '需要在解决方案管理器中对SQLHelper所在的项目中添加对System.Configuration的引用
        Imports System.Configuration
        Imports System.Data.SqlClient
        
        Public Class SQLHelper
            Dim conn As SqlConnection
            Dim cmd As SqlCommand
            Dim connstr As String = ConfigurationManager.AppSettings("connstr").ToString
        
            Public SQLHelper()
        
        #Region "建立数据库连接对象"
            ''' <summary>
            ''' 建立数据库的连接
            ''' </summary>
            ''' <returns>返回一个数据库的连接SqlConnection对象</returns>
            ''' <remarks></remarks>
            Public Function getSqlConnection() As SqlConnection
                Try
                    conn = New SqlConnection(connstr) '利用配置文件,连接到connstr所指定的数据库
                    If (conn.State.Equals(ConnectionState.Open)) = False Then
                        conn.Open()
        
                    End If
                Catch ex As Exception
                    Throw New Exception(ex.Message.ToString())
                End Try
                Return conn
            End Function
        #End Region
        
        #Region "设置SqlCommand对象"
            ''' <summary>
            ''' 设置SqlCommand对象
            ''' </summary>
            ''' <param name="cmd">SqlCommand对象</param>
            ''' <param name="cmdText">命令文本</param>
            ''' <param name="cmdType">命令类型</param>
            ''' <param name="cmdParms">参数集合</param>
            ''' <remarks></remarks>
            Public Sub SetCommand(ByVal cmd As SqlCommand, ByVal cmdText As String, ByVal cmdType As CommandType, ByVal cmdParms As SqlParameter())
                cmd.Connection = conn
                cmd.CommandText = cmdText
                cmd.CommandType = cmdType
        
                If (cmdParms Is Nothing) = False Then
                    cmd.Parameters.AddRange(cmdParms)
                End If
            End Sub
        
        #End Region
        
        #Region "无参,返回所影响的行数的增删改方法"
            ''' <summary>
            ''' 执行不带参数sql语句或存储过程,返回所影响的行数
            ''' </summary>
            ''' <param name="cmdText">增,删,改sql语句</param>
            ''' <returns>返回所影响的行数</returns>
            ''' <remarks></remarks>
            Public Function ExecuteNonQuery(ByVal cmdText As String) As Int16
                Dim count As Int16
                Try
                    getSqlConnection()
                    cmd = New SqlCommand(cmdText, conn)
                    count = cmd.ExecuteNonQuery()
                    conn.Close()
        
                Catch ex As Exception
                    Throw New Exception(ex.Message.ToString())
                End Try
                Return count
        
        
            End Function
        #End Region
        
        #Region "有参,返回所影响的行数的增删改方法"
        
            ''' <summary>
            ''' 执行带参数sql语句或存储过程,返回所影响的行数
            ''' </summary>
            ''' <param name="cmdText">带参数的sql语句和存储过程名</param>
            ''' <param name="cmdType">命令类型</param>
            ''' <param name="cmdparms">参数集合</param>
            ''' <returns>返回所影响的行数</returns>
            ''' <remarks></remarks>
            Public Function ExecuteNonQuery(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal cmdparms As SqlParameter())
                Dim count As Int16
                Try
                    getSqlConnection()
                    Dim cmd As New SqlCommand
                    SetCommand(cmd, cmdText, cmdType, cmdparms)
                    count = cmd.ExecuteNonQuery()
                    cmd.Parameters.Clear()
                    conn.Close()
        
                Catch ex As Exception
                    Throw New Exception(ex.Message.ToString)
        
                End Try
                Return count
        
            End Function
        #End Region
        
        #Region "无参,具有返回值的查询方法"
            ''' <summary>
            ''' 执行不带参数sql语句,返回一个从数据源读取数据的SqlDataReader对象
            ''' </summary>
            ''' <param name="cmdText">相应的sql语句</param>
            ''' <returns>一个从数据源读取数据的SqlDataReader对象</returns>
            ''' <remarks></remarks>
            Public Function ExecuteReader(ByVal cmdText As String) As SqlDataReader
                Dim reader As SqlDataReader
                Try
                    getSqlConnection()
                    cmd = New SqlCommand(cmdText, conn)
                    reader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
                Catch ex As Exception
                    Throw New Exception(ex.Message.ToString)
                End Try
                Return reader
        
            End Function
        #End Region
        
        #Region "无参,具有返回值的查询方法"
        
            ''' <summary>
            ''' 执行带参数的sql语句或存储过程,返回一个从数据源读取数据的SqlDataReader对象
            ''' </summary>
            ''' <param name="cmdText">sql语句或存储过程名</param>
            ''' <param name="cmdType">命令类型</param>
            ''' <param name="cmdParms">参数集合</param>
            ''' <returns>返回一个从数据源读取数据的SqlDataReader对象</returns>
            ''' <remarks></remarks>
            Public Function ExecuteReader(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal cmdParms As SqlParameter()) As SqlDataReader
                Dim reader As SqlDataReader
                Try
                    getSqlConnection()
                    cmd = New SqlCommand()
                    SetCommand(cmd, cmdText, cmdType, cmdParms)
                    reader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
                Catch ex As Exception
                    Throw New Exception(ex.Message.ToString())
        
                End Try
                Return reader
            End Function
        #End Region
        
        End Class</span>

        光有代码,不会使用也发挥不了SQLHelper的强大之处

    有参,返回值为所影响行数的增删改使用

    有参,返回值为SqlDataReader的查方法的使用

                 从开始知道有个SQLHelper到真正实现,花了我一周的时间,可真是耗时耗力,不过我也体会到了SQLHelper的好处,SqlHelper简化了我们需要重复写的数据库连接,如SqlConnection,SqlCommand,SqlDataReader等等;还有,SqlHelper封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了,很方便。

    展开全文
  • 对学生的成绩的高效而准确的管理系统设计的出发点和最终目的,既要能够满足学生和老师的一般需求,又要能够针对用户的类型、需求特征等确定它的的权限以便进行管理,研究面向质量控制的成绩管理系统的设计与实现,以...
  • 一个VB学生信息管理系统通常是由多种类型的文件模块组成的, 其中最常见的是窗体模块。 窗体模块 窗体模块是应用程序的界面,是运行应用程序时与用户 交互的实际窗口。在窗体中可放置诸如文本框、按钮等控件。 一...
  • 不错的VB文件属性信息查看器,可查看文件的创建和修改日期、保存时间,还可查看文件是否是是隐藏、系统、存档、只读、临时、普通、压缩等属性,浏览到你要查看的文件,支持所有的文件类型,都可以查看到这些信息。
  • cgicounter.zip cgi计数器(21KB) 108,001.zip 一个MDI多文档界面程序实例(18KB) 109,002.zip 一个对注册表进行操作的VB工程(6KB) 110,003.zip 一个获取windows系统相关信息实例(7KB)...
  • 合同管理部分 合同录入,修改,删除,打印,查询(按客户,执行情况)...配置文件 合同月份查询 年份范围 0000-1000 合同付款方式 合同单一产品数量 最大值 添加合同 合同信息修改 合同查找 合同统计 出入库处理 库存信息
  • 在CDR文档中又是如何将文档转换为CAD格式呢?其实只要简单几步就能搞定,下面系统天地小编就来给大家分享cdr(CorelDRAW)文档...在弹出"导出"界面中,鼠标单击"保存类型"选项,选择文件类型为"DWG-AutoCAD"之...

    在CDR文档中又是如何将文档转换为CAD格式的呢?其实只要简单几步就能搞定,下面系统天地小编就来给大家分享cdr(CorelDRAW)文档转换为CAD格式的方法,供大家参考。

    cdr文档转换为CAD格式的方法:

    1.首先选择CDR的文件,在"文件"功能里,鼠标点击"导出"或者用组合键"CTRL+E"。

    c7b65161a26159cc4b58058d740a62cc.png

    2.在弹出的"导出"界面中,鼠标单击"保存类型"的选项,选择文件类型为"DWG-AutoCAD"之后,选择导出文件。

    0fb34cc2621675e0f58018695a63a1cd.png

    3.在"导出到AutoCAD"窗口,选择需要导出的版本,根据你autocad版本进行选择。

    4e1e9da88949215cd3fd6b6e9d33711c.png

    4.在导出单位里面建议选择"毫米"其他不变,点击"确定"后,就可以把CDR文件转换"DWG"文件了。

    e05658cec34f914a5c090dd9badb4878.png

    延伸阅读——cad文件转换成cdr格式方法:

    1、在CAD中做好文件后,将文件格式保存为:DXF 格式(注:dxf格式有三种,选择R12/LT2 dxf 这种格式的。)

    2、在CorelDraw里,直接打开刚保存的DXF文件,即可。(注:有时图形太复杂的话,可能不太好,需手动调整。)

    以上便是今天cdr(CorelDRAW)文档能否转换为CAD格式?cdr文档转换为CAD格式的方法的介绍。希望对大家有用。

    展开全文
  • 附带光盘提供了书中内容相关代码,稍加扩展即可获得用户自定义类型、轻量对象系统、创建定制窗口以及函数重载功能。 盘中还提供了三个功能强大的类型库,对VB中使用和由VB产生的类型库进行了修正。 本书适合...
  • 祝你考试成功2003年9月全国计算机等级考试二级VB语言笔试试卷 (含参考答案) (考试时间90分钟,满分100分) 一、 选择题((1)~(20)每小题2分,(21)~(30)每小...(4)以下不属于Visua l Basic系统的文件类型是
  • 编写高质量的VB代码

    2011-12-12 17:55:26
    在编码技术中介绍了如何通过使用高效数据类型、减少外部引用等编程手段来提高代码执行速度,减少代码消耗的系统资源。在编译优化技术中介绍了如何正确地利用VB提供编译选项对在编译时最后生成可执行文件进行...
    简介:

      本文描述了如何通过一些技术手段来提高VB代码的执行效率。这些手段可以分为两个大的部分:编码技术和编译优化技术。在编码技术中介绍了如何通过使用高效的数据类型、减少外部引用等编程手段来提高代码执行速度,减少代码消耗的系统资源。在编译优化技术中介绍了如何正确地利用VB提供的编译选项对在编译时最后生成的可执行文件进行优化。

      前言

      什么是一个高效的软件?一个高效的软件不仅应该比实现同样功能的软件运行得更快,还应该消耗更少的系统资源。这篇文章汇集了作者在使用VB进行软件开发时积累下来的一些经验,通过一些简单的例子来向你展示如何写出高效的VB代码。其中包含了一些可能对VB程序员非常有帮助的技术。在开始之前,先让我陈清几个概念。

      让代码一次成型:在我接触到的程序员中,有很多人喜欢先根据功能需求把代码写出来,然后在此基础上优化代码。最后发现为了达到优化的目的,他们不得不把代码再重新写一遍。所以我建议你在编写代码之前就需要考虑优化问题。

      把握好优化的结果和需要花费的工作之间的关系:通常当完成了一段代码,你需要检查和修改它。在检查代码的过程中,也许你会发现某些循环中的代码效率还可以得到进一步的改进。在这种情况下,很多追求完美的程序员也许会立马修改代码。我的建议是,如果修改这段代码会使程序的运行时间缩短一秒,你可以修改它。如果只能带来10毫秒的性能改进,则不做任何改动。这是因为重写一段代码必定会引入新的错误,而调试新的代码必定会花掉你一定的时间。程序员应该在软件性能和开发软件需要的工作量之间找一个平衡点,而且10毫秒对于用户来说也是一个不能体会到的差异。

      在需要使用面向对象方法的时候尽量使用它;VB提供的机制不完全支持面向对象的设计和编码,但是VB提供了简单的类。大多数人认为使用对象将导致代码的效率降低。对于这一点我个人有些不同的意见;考察代码的效率不能纯粹从运行速度的角度出发,软件占用的资源也是需要考虑的因素之一。使用类可以帮助你在整体上提升软件的性能,这一点我会在后面的例子中详细说明。

      当你编写VB代码的时候,希望你能把上面几点作为指导你编码的原则。我把文章分为两个部分:如何提高代码的运行速度和编译优化。


      如何提高代码的运行速度

      下面的这些方法可以帮助你提高代码的运行速度:

      1. 使用整数(Integer)和长整数(Long)

      提高代码运行速度最简单的方法莫过于使用正确的数据类型了。也许你不相信,但是正确地选择数据类型可以大幅度提升代码的性能。在大多数情况下,程序员可以将Single,Double和Currency类型的变量替换为Integer或Long类型的变量,因为VB处理Integer和Long的能力远远高于处理其它几种数据类型。

      在大多数情况下,程序员选择使用Single或Double的原因是因为它们能够保存小数。但是小数也可以保存在Integer类型的变量中。例如程序中约定有三位小数,那么只需要将保存在Integer变量中的数值除以1000就可以得到结果。根据我的经验,使用Integer和Long替代Single,Double和Currency后,代码的运行速度可以提高将近10倍。

      2. 避免使用变体

      对于一个VB程序员来说,这是再明显不过的事情了。变体类型的变量需要16个字节的空间来保存数据,而一个整数(Integer)只需要2个字节。通常使用变体类型的目的是为了减少设计的工作量和代码量,也有的程序员图个省事而使用它。但是如果一个软件经过了严格设计和按照规范编码的话,完全可以避免使用变体类型。

      在这里顺带提一句,对于Object对象也存在同样的问题。请看下面的代码:

      Dim FSO 
      Set FSO = New Scripting.FileSystemObject 

      或

      Dim FSO as object
      Set FSO = New Scripting.FileSystemObject 

      上面的代码由于在申明的时候没有指定数据类型,在赋值时将浪费内存和CPU时间。正确的代码应该象下面这样:

      Dim FSO as New FileSystemObject 

      3. 尽量避免使用属性

      在平时的代码中,最常见的比较低效的代码就是在可以使用变量的情况下,反复使用属性(Property),尤其是在循环中。要知道存取变量的速度是存取属性的速度的20倍左右。下面这段代码是很多程序员在程序中会使用到的:

      Dim intCon as Integer
      For intCon = 0 to Ubound(SomVar())
        Text1.Text = Text1.Text & vbcrlf & SomeVar(intCon)
      Next intCon 

      下面这段代码的执行速度是上面代码的20倍。 

      Dim intCon as Integer
      Dim sOutput as String
      For intCon = 0 to Ubound(SomeVar())
        sOutput = sOutput & vbCrlf &
        SomeVar(intCon)
      Next
      Text1.Text = sOutput 

      4. 尽量使用数组,避免使用集合

      除非你必须使用集合(Collection),否则你应该尽量使用数组。据测试,数组的存取速度可以达到集合的100倍。这个数字听起来有点骇人听闻,但是如果你考虑到集合是一个对象,你就会明白为什么差异会这么大。

      5. 展开小的循环体

      在编码的时候,有可能遇到这种情况:一个循环体只会循环2到3次,而且循环体由几行代码组成。在这种情况下,你可以把循环展开。原因是循环会占用额外的CPU时间。但是如果循环比较复杂,你就没有必要这样做了。

      6. 避免使用很短的函数

      和使用小的循环体相同,调用只有几行代码的函数也是不经济的--调用函数所花费的时间或许比执行函数中的代码需要更长的时间。在这种情况下,你可以把函数中的代码拷贝到原来调用函数的地方。

      7. 减少对子对象的引用

      在VB中,通过使用.来实现对象的引用。例如:

      Form1.Text1.Text 

      在上面的例子中,程序引用了两个对象:Form1和Text1。利用这种方法引用效率很低。但遗憾的是,没有办法可以避免它。程序员唯一可以做就是使用With或者将用另一个对象保存子对象(Text1)。

      '注释: 使用With
      With frmMain.Text1
        .Text = "Learn VB"
        .Alignment = 0
        .Tag = "Its my life"
        .BackColor = vbBlack
        .ForeColor = vbWhite
      End With 

      或者 

      '注释: 使用另一个对象保存子对象
      Dim txtTextBox as TextBox
      Set txtTextBox = frmMain.Text1
      TxtTextBox.Text = "Learn VB"
      TxtTextBox.Alignment = 0
      TxtTextBox.Tag = "Its my life"
      TxtTextBox.BackColor = vbBlack
      TxtTextBox.ForeColor = vbWhite 

      注意,上面提到的方法只适用于需要对一个对象的子对象进行操作的时候,下面这段代码是不正确的:

      With Text1
        .Text = "Learn VB"
        .Alignment = 0
        .Tag = "Its my life"
        .BackColor = vbBlack
        .ForeColor = vbWhite
      End With 

      很不幸的是,我们常常可以在实际的代码中发现类似于上面的代码。这样做只会使代码的执行速度更慢。原因是With块编译后会形成一个分枝,会增加了额外的处理工作。

      8. 检查字符串是否为空

      大多数程序员在检查字符串是否为空时会使用下面的方法:

      If Text1.Text = "" then
        '注释: 执行操作
      End if  

      很不幸,进行字符串比较需要的处理量甚至比读取属性还要大。因此我建议大家使用下面的方法:

      If Len(Text1.Text) = 0 then
        '注释: 执行操作
      End if 

      9. 去除Next关键字后的变量名

      在Next关键字后加上变量名会导致代码的效率下降。我也不知道为什么会这样,只是一个经验而已。不过我想很少有程序员会这样画蛇添足,毕竟大多数程序员都是惜字如金的人。

      '注释: 错误的代码
      For iCount = 1 to 10
        '注释: 执行操作
      Next iCount

      '注释: 正确的代码
      For iCount = 1 to 10
        '注释: 执行操作
      Next

      10. 使用数组,而不是多个变量

      当你有多个保存类似数据的变量时,可以考虑将他们用一个数组代替。在VB中,数组是最高效的数据结构之一。

      11. 使用动态数组,而不是静态数组

      使用动态数组对代码的执行速度不会产生太大的影响,但是在某些情况下可以节约大量的资源。

      12. 销毁对象

      无论编写的是什么软件,程序员都需要考虑在用户决定终止软件运行后释放软件占用的内存空间。但遗憾的是很多程序员对这一点好像并不是很在意。正确的做法是在退出程序前需要销毁程序中使用的对象。例如:

      Dim FSO as New FileSystemObject
      '注释: 执行操作

      '注释: 销毁对象
      Set FSO = Nothing

      对于窗体,可以进行卸载:

      Unload frmMain  

      或

      Set frmMain = Nothing 

      13. 变长和定长字符串

      从技术上来说,与变长字符串相比,定长字符串需要较少的处理时间和空间。但是定长字符串的缺点在于在很多情况下,你都需要调用Trim函数以去除字符串末的空字符,这样反而会降低代码效率。所以除非是字符串的长度不会变化,否则还是使用变长字符串。

      14. 使用类模块,而不是ActiveX控件

      除非ActiveX控件涉及到用户界面,否则尽量使用轻量的对象,例如类。这两者之间的效率有很大差异。

      15. 使用内部对象

      在涉及到使用ActiveX控件和DLL的时候,很多程序员喜欢将它们编译好,然后再加入工程中。我建议你最好不要这样做,因为从VB连接到一个外部对象需要耗费大量的CPU处理能力。每当你调用方法或存取属性的时候,都会浪费大量的系统资源。如果你有ActiveX控件或DLL的源代码,将它们作为工程的私有对象。

      16. 减少模块的数量

      有些人喜欢将通用的函数保存在模块中,对于这一点我表示赞同。但是在一个模块中只写上二三十行代码就有些可笑了。如果你不是非常需要模块,尽量不要使用它。这样做的原因是因为只有在模块中的函数或变量被调用时,VB才将模块加载到内存中;当VB应用程序退出时,才会从内存中卸载这些模块。如果代码中只有一个模块,VB就只会进行一次加载操作,这样代码的效率就得到了提高;反之如果代码中有多个模块,VB会进行多次加载操作,代码的效率会降低。

      17. 使用对象数组

      当设计用户界面时,对于同样类型的控件,程序员应该尽量使用对象数组。你可以做一个实验:在窗口上添加100个PictureBox,每个PictureBox都有不同的名称,运行程序。然后创建一个新的工程,同样在窗口上添加100个PictureBox,不过这一次使用对象数组,运行程序,你可以注意到两个程序加载时间上的差别。

      18. 使用Move方法

      在改变对象的位置时,有些程序员喜欢使用Width,Height,Top和Left属性。例如:

      Image1.Width = 100
      Image1.Height = 100
      Image1.Top = 0
      Image1.Left = 0 

      实际上这样做效率很低,因为程序修改了四个属性,而且每次修改之后,窗口都会被重绘。正确的做法是使用Move方法:

      Image1.Move 0,0,100,100 

      19. 减少图片的使用

      图片将占用大量内存,而且处理图片也需要占用很多CPU资源。在软件中,如果可能的话,可以考虑用背景色来替代图片--当然这只是从技术人员的角度出发看这个问题。

      20. 使用ActiveX DLL,而不是ActiveX控件

      如果你设计的ActiveX对象不涉及到用户界面,使用ActiveX DLL。


      编译优化

      我所见过的很多VB程序员从来没有使用过编译选项,也没有试图搞清楚各个选项之间的差别。下面让我们来看一下各个选项的具体含义。

      1. P-代码(伪代码)和本机代码

      你可以选择将软件编译为P-代码或是本机代码。缺省选项是本机代码。那什么是P-代码和本机代码呢?

      P-代码:当在VB中执行代码时,VB首先是将代码编译为P-代码,然后再解释执行编译好的P-代码。在编译环境下,使用这种代码要比本机代码快。选择P-代码后,编译时VB将伪代码放入一个EXE文件中。

      本机代码:本机代码是VB6以后才推出的选项。当编译为EXE文件后,本机代码的执行速度比P-代码快。选择本机代码后,编译时VB使用机器指令生成EXE文件。

      在使用本机代码进行编译时,我发现有时候会引入一些莫名其妙的错误。在编译环境中我的代码完全正确地被执行了,但是用本机代码选项生成的EXE文件却不能正确执行。通常这种情况是在卸载窗口或弹出打印窗口时发生的。我通过在代码中加入DoEvent语句解决了这个问题。当然出现这种情况的几率非常少,也许有些VB程序员从来没有遇到过,但是它的确存在。

      在本机代码中还有几个选项:

      a) 代码速度优化:该选项可以编译出速度较快的执行文件,但执行文件比较大。推荐使用

      b) 代码大小优化:该选项可以编译出比较小的执行文件,但是以牺牲速度为代价的,不推荐使用。

      c) 无优化:该选项只是将P-代码转化为本机代码,没有做任何优化。在调试代码时可以使用。

      d) 针对Pentium Pro优化:虽然该项不是本机代码中的缺省选项,但是我通常会使用该选项。该选项编译出的可执行程序在Pentium Pro和Pentium 2以上的机器上可以运行得更快,而在比较老的机器上要稍稍慢一些。考虑到现在用Pentium 2都是落伍,所以推荐大家使用该选项。

      e) 产生符号化调试信息:该项在编译过程中生成一些调试信息,使用户可以利用Visual C++一类的工具来调试编译好的代码。使用该选项会生成一个.pdf文件,该文件记录了可执行文件中的标志信息。当程序拥有API函数或DLL调用时,该选项还是比较有帮助的。

      2. 高级优化

      高级优化中的设置可以帮助你提高软件的速度,但是有时候也会引入一些错误,因此我建议大家尽量小心地使用它们。如果在代码中有比较大的循环体或者复杂的数学运算时,选中高级优化中的某些项会大幅度提升代码的性能。如果你使用了高级优化功能,我建议你严格测试编译好的文件。

      a) 假定无别名:可以提高循环体中代码的执行效率,但是在如果通过变量的引用改变变量值的情况下,例如调用一个方法,变量的引用作为方法的参数,在方法中改变了变量的值的话,就会引发错误。有可能只是返回的结果错误,也有可能是导致程序中断运行的严重错误。

      b) 取消数组绑定检查、取消整数溢出检查和取消浮点错误检查:在程序运行时,如果通过这些检查发现了错误,错误处理代码会处理这些错误。但是如果取消了这些检查,发生了错误程序就无法处理。只有当你确定你的代码中不会出现上面的这些错误时,你才可以使用这些选项。它们将使软件的性能得到很大的提升。

      c) 允许不舍入的浮点操作:选择该选项可以是编译出来的程序更快地处理浮点操作。它唯一的缺点就是在比较两个浮点数时可能会导致不正确的结果。

      d) 取消Pentium FDIV安全检查:该选项是针对一些老的Pentium芯片设置的,现在看来已经过时了。


    VB部分相关推荐

    VB快速读取 TextBox N 行的资料

    VB禁止使用 Alt-Tab Ctrl-Alt-Del

    生成迷宫的程序

    另一方法转换大小写

    VB控件注册 - 利用资源文件将dllocx打包进exe文件

    VB利用资源文件进行工作

    []vb高效编程(优化)

    VB阳历转阴历

    VB代码取得硬盘的物理序列号

    VB获得磁盘的文件系统

    VB的,经常注册和反注册OCX控件和DLL

    VB从程序中生成Exe文件

    VB6监视/操作剪贴板示例(VB6.0代码)

    VB6里自动提交/自动填表的一种相对通用的方案

    VB移动没有标题的窗体

    VB随机字母的函数

    VB删除带子文件夹和文件的文件夹

    VB怎样屏蔽 Alt+F4

    VB 隐藏进程

    vb屏蔽文本框点右键时的弹出菜单

    VB手控Combobox的打开或收起

    VBINI文件的读写、删除(对中文支持很好)

    vb全局热键的写法(占很少的资源)

    vb取消文本框的粘贴功能

    VB常用文件操作类

    VB获取特殊文件夹

    VB获取windows各常用目录的函数(模块)

    VB生成太极图

    VB:常用内部函数大全,你会了几个呢?

    vbSendMessage函数

    精简VB程序的代码

    VB:将数字转换为大写中文

    VB:设定 MsgBox 在若干时间之后若无回应则自动关闭

    VB:读取及设定NumLock/CapsLock/ScrollLock的值

    VB:您知道 Mid$ 函量可以放在 '=' 的左方吗

    VB后台获得按键,并执行自己的函数(非钩子及热键)

    VB:将短文件名格式转成长文件名

    vb中使用Iphlpapi.dll获取网络信息(上)

    vb中使用Iphlpapi.dll获取网络信息(下)

    更多精彩>>>
    展开全文
  • VB Comwrapper 实现

    2013-02-17 09:46:59
    预备知识 ... A: 简单地说,COM是一种跨应用和语言共享二进制代码方法。   ...A: 注册(Registration)是创建注册表入口一个过程,告诉Windows 操作系统COM服务器放在...Q:什么是 type library file(类型文件
  • 最近磁碟机病毒真太猖狂了,上次发航空管理系统里面有个.exe文件可能被感染了,今天我把可执行文件删除了重新再发布给大家啊,真太讨厌病毒制造者了,下面还是把对应文档目录贴出来,谢谢大家支持啊! 摘 要:...
  • VB的朋友请进 本压缩文件是关于API函数全集,包括用法都在里面了 下面举例吧: PostMessage, PostMessageBynum, PostMessageBystring VB声明 Declare Function PostMessage& Lib "user32" Alias ...
  • 在编码技术中介绍了如何通过使用高效数据类型、减少外部引用等编程手段来提高代码执行速度,减少代码消耗的系统资源。在编译优化技术中介绍了如何正确地利用VB提供编译选项对在编译时最后生成可执行文件进行...
  • VB的系统对象Screen记录了当前显示模式高度和宽度,可以利用这个值来设置窗体位置。 引用: Sub CenterForm(frm As Form) ‘定义过程  frm.Move (Screen.width - frm.width)\ 2, (Screen.Height - frm....
  • 如何编写高质量的VB6代码

    千次阅读 2006-01-24 10:43:00
    在编码技术中介绍了如何通过使用高效数据类型、减少外部引用等编程手段来提高代码执行速度,减少代码消耗的系统资源。在编译优化技术中介绍了如何正确地利用VB提供编译选项对在编译时最后生成可执行文件进行...
  • 以下是camer_def.h内容: #ifndef __CAMERDEF_H__ #define __CAMERDEF_H__ ...该函数已封装在 tcm_dll.dll 中了,但以上是VC代码,看不懂,也不知道怎么转换,请高手帮忙转成 vb.net 代码,谢谢了!!
  • vb编程常用命令集锦

    2011-03-17 13:12:09
    如果你打开WINDOWS的SYSTEM文件夹,你可以发现其中有很多附加名为DLL的文件。一个DLL中包含的API函数并不只是一个,数十个,甚至是数百个。我们能都掌握它嘛?回答是否定的∶不可能掌握。但实际上,我们真的没必要都...
  • VB试题.doc

    2012-12-15 21:16:57
    VB试题.doc 一、 填空题 1.VB中若要产生一消息框,可用__msgbox__函数来实现。 2.常量是指在程序运行过程中, 其值不能改变 量。 3.整数类型数据分别包括整型和 长...5、可获得当前系统日期函数是( A )
  • 如何编写高质量的VB代码(1)

    千次阅读 2005-01-06 13:20:00
    在编码技术中介绍了如何通过使用高效数据类型、减少外部引用等编程手段来提高代码执行速度,减少代码消耗的系统资源。在编译优化技术中介绍了如何正确地利用VB提供编译选项对在编译时最后生成可执行文件进行...
  • VB打印输出数据库结构图,是一个Access 数据库结构打印...程序可打印出字段类型、字段名称、字段宽度等信息,代码中获取字段类型函数、输出结构到HTML文件、循环当前数据库表这些小模块也是很实用的VB操作函数。

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 292
精华内容 116
关键字:

vb系统的文件类型是