VB如何做到运行中的access窗体查询保存保存到指定文件夹

当前位置: >>
目录第一章 VB.NET基础 第二章 简单的VB.NET程序设计 第三章 VB.NET语言基础 第四章 基本的控制结构 第五章 数 组 第六章 过 程 第七章 用户界面设计 第八章 面向对象程序设计基础 第九章 文 件 第十章 图形应用程序开发 第十一章 数据库应用程序开发 第一章 VB.NET基础1.1 VB.NET概述 1.2 VB.NET集成开发环境 1.3 使用帮助系统本章目录 1.1 VB.NET概述1.1.1 Visual Basic的发展 20世纪60年出现Basic语言; 20 世纪 80 年代, True Basic 、 Quick Basic 和 Turbo Basic等; 1991年Microsoft公司推出Visual Basic1.0,以 可视化工具为界面设计、结构化Basic语言为基 础,以事件驱动为运行机制。从1991年的VB1.0 至1998年的V B6.0的多次版本升级,功能更强 大、完善,应用面更广; 2002年正式发布Visual Basic.NET。本章目录 1.1.2 Microsoft.NET概述什么是.NET? . NET代表了一个集合、一个环境、一个编程的 基本结构,作为一个平台来支持下一代的 Internet。 .NET 也是一个用户环境,是一组基本的用户服 务,可以作用于客户端、服务器或任何地方 。 对初学VB的人来说,可以这样认为,.NET就是 Visual Studio.NET。本章目录 Visual Studio.NET在不同的CPU上运行 第二次编译 CLR中间语言(IL)程序(EXE)Visual Studio.NET第一次编译 Windows应用程序基础类库 ASP.NET程序VB.NET VC++.NETVC#.NET VJ#.NET本章目录 1.1.3 VB.NET特点1 引例 例1.1简单的动画演示。 一行文字“欢迎使用 VB.NET” 在具有背 景图案的窗体中上、下移动。 移动方法有两种:单击手动按钮,移动5 个像素单位 ;单击自动按钮,按定时器 触发频率连续移动;当内容超出窗体范 围时,进行反弹。本章目录 引例根据要求, 用工具箱上 的Label、 Button、 Timer等控 件,在窗体 上建立控件 对象,进行 有关的属性 设置。本章目录 引例:编写事件过程本章目录 VB.NET功能特点? 提供了易学易用的应用程序集成开发环境 ? 具有面向对象的可视化设计工具 ? 事件驱动的编程机制 ? 支持结构化程序设计,具有面向对象程序设计 语言的所有特征 ? 具有丰富的数据类型、功能强大的类库 ? 强大的数据库功能 ? 网络功能 ? 完备的帮助功能本章目录 1.2 VB.NET的集成开发环境1.2.1进入VB.NET?启动Visual Studio.NET ?“起始页” 选择“新建 项目/打开项 目”按钮Windows应用程序Visual Basic项目本章目录 VB.NET集成开发环境菜单栏 工具栏 选项卡组栏 工具箱解决方案资源 管理器窗口窗体窗口 属性窗口输出窗口本章目录 1.2.2主窗口1.三种工作模式 设计模式 界面的设计和代码的编制 运行模式 运行应用程序 中断模式 暂时中断程序运行,调试程序 2. 菜单栏 包括11个下拉菜单 3. 工具栏本章目录 1.2.3 窗体设计/代码设计窗口1.窗体设计器窗口 建立VB.NET应用程序的界面(一个应用程序可以 有多个窗体,通过“项目|添加Windows窗体” 命令增加新窗体)。 2.代码设计窗口 专门用来进行代码设计,包括各种事件过程、过 程和类等源程序代码的编写和修改。 打开代码设计窗口的方法:双击窗体、控件或单 击代码窗口上方的选项卡组对应项。本章目录 1.2.4 属性窗口窗体和控件称为对象,每个对象用一组属性来描 述其外部特征,如颜色、大小等。 属性窗口用于显示和设置所选定的对象的属性。 属性窗口由四部分组成: 对象和名称空间列表框 属性显示排列方式 属性列表框 属性含义说明本章目录 1.2.5 解决方案资源管理器窗口项目 一个独立的编程单位(包含窗体文件及其他 一些相关文件),若干项目组成一个解决方案 解决方案可以含有以下类型的文件: ?解决方案文件(.sln) 可包括用不同语言开发的项目 ?项目文件(.vbproj) 由引用的组件和代码模块组成 ?代码模块文件(.vb) 包括窗体文件、类模块或其他代码文件本章目录 1.3 使用帮助系统? 动态帮助 属性窗口“动态帮助”标签卡内 ? 索引 ? 使用上下文相关的帮助 按“F1”键 ? 网络资源 通过http://www.microsoft.com/china/msdn 网站,获得最新、最及时的有关帮助信息。本章目录 本章小节Visual Studio.NET一个支持下一代Internet的平台VB.NET的三种工作模式 设计模式、运行模式、中断模式 组成组件和代码模块项目 解决方案 项目组件和代码模块本章目录 思考题1. 什么是.NET框架? 2. 简述VB.NET的特点 3. VB.NET 有多种类型的窗口,若想在设计时 看到代码窗口,怎样操作? 4. 如何使各窗口显示或不显示? 5. 如果窗口布局搞乱了,如何恢复默认布局? 6. 解决方案与项目的区别?本章目录 第二章 简单的VB.NET程序设计2.1 2.2 2.3 2.4VB.NET对象的概念 建立简单的应用程序 窗体和基本控件 综合应用本章目录 2.1 Visual Basic对象的概念2.1.1 对象和类 1.对象 对象就是日常生活中的某个实在的物体 例如,一个人、一辆汽车、一台电脑。 对象都具有各自的特征(属性)、行为(方法) 。 人有身高、体重、听力等特征;也具有起立、 行走、说话、踢足球等行为。在VB.NET中,将反映对象的属性和行为封装 在一起,是面向对象编程的基本元素。本章目录 2.类的概念类 同种对象的集合与抽象,是创建对象实例的 模板,包含所创建对象的属性描述和行为特征的 定义。 例如,人类是具体人的抽象。每个人有不同的身 高、体重等属性值和不同的行为。 VB.NET 工具箱中的可视图标是 VB.NET 系统设 计好的标准控件类。通过将控件类实例化,得到 真正的控件对象。在窗体上画一个控件,就将类 转换为对象,创建了一个控件对象(简称控件)。本章目录 例 如 : 工 具 箱 内 的 TextBox 是 类 ( 它 确 定 了 TextBox的属性、方法和事件) 窗体上显示的是两个Text对象Text类 Text对象本章目录 2.1.2 对象的属性、事件和方法属性、事件和方法构成对象的三要素 1. 属性 存放对象的数据(决定对象外观及功能) 例如,控件名称、文本、大小等属性。 对象属性的设置方法: ? 设计阶段 利用属性窗口直接设置属性值 ? 程序运行时 通过语句对象名.属性名=属性值 例如:Button1.Text = &确定& 注意:若属性只能在设计阶段设置,在程序运行 阶段不可改变,称为只读属性。本章目录 事件事件 发生在对象上的事情 同一事件,对不同的对象,会引发不同的反应:教师_铃声() 学生_铃声() 其他人员_铃声()讲课 End Sub听讲 接受知识 End Sub可不于响应End SubVB.NET为对象预先定义了一系列的事件。例 如,单击Click、获取焦点GotFocus 、按下 键盘KeyPress 等本章目录 事件过程事件过程 应用程序处理事件的步骤 它针对某一对象并与该对象的一个事件相联系 应用程序设计的主要工作就是为对象编写事件过 程的代码。事件过程的形式如下:Sub 对象名_事件(对象引用,事件信息)Handles 事件处理程序… 事件过程代码End Sub对象引用:指向引发事件的对象 事件信息:与事件相关的信息本章目录 例2.1 在命令按钮的Click事件过程,改变按钮 的字体颜色. 代码说明 注意:在代码窗,自动产生事件过程的模板, 不要修改模板的内容,只需键入过程的代码。 一个动作可能同时发生多个事件。例如单击鼠 标同时发生了: Click、MouseDown、MouseUp事件 编程时,只要对需要的事件过程编码,无编码 的事件为空事件,系统就不处理该事件过程。本章目录 事件驱动程序设计事件驱动程序设计方式: 程序执行的先后次序与 程序设计者无关,取决于用户的操作。VB.NET程序的执行步骤:① 启动应用程序,装载和显示窗体;② 窗体(或窗体上的控件)等待事件的发生;③ 事件发生时,执行对应的事件过程; ④ 重复执行步骤②和③。本章目录 方法面向对象的程序设计语言,为程序设计人员提供 了一种特殊的过程和函数,称为方法。 方法是面向对象的,调用时一定要指明对象。对 象方法的调用格式为: [对象.]方法 [参数名表] 若省略对象,表示当前对象,一般指窗体。 例如:Textbox1.Focus 此语句使Textbox1控件获得焦点,光标在本文框 内闪烁。本章目录 2.2 建立简单的应用程序例2.2 编写一个人民币与美圆兑换的程序。 建立一个应用程序分为以下几步进行: (1) 建立用户界面的对象 (2) 对象属性的设置 (3) 对象事件过程及编程 (4) 保存和运行程序代码说明本章目录 对象事件过程及编程代码窗口的对象列表框可显示窗体所有对象 过程列表框列出所选中对象的所有事件 例如,在按钮Button2的Click事件加入代码:Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.ClickTextBox1.Text = Val(TextBox3.Text) * Val(TextBox2.Text)End SubVal( )函数将数字字符转换成数值型本章目录 保存程序和文件组成程序存盘后将建立一个文件夹,包含如下内容: (1)xxx.sln 项目关联、配置等的信息 (2) xxx.suo 开发环境选项的信息 (3) xxx.vbproj 项目文件 (4)Form1.vb 窗体文件 (5)AssemblyInfo.vb 项目集合信息(系统自动建立) (6) xxx.exe 可执行文件(在Bin文件夹) (7)Bin 文 件 夹 可执行文件的默认路径, 可用 Application.StartupPath()获得该路径。 (8)Debug 文件夹 存放程序调试产生的信息本章目录 2.3 窗体和基本控件2.3.1 通用属性 属性设置两种方式: ? 通过属性窗口设置 ? 在代码设计窗口通过代码来设置 在VB.NET中,属性的类型有: 基本数据类型 枚举类型 结构类型 用代码设置时,需要用不同方式表示不同的类型本章目录 2.3.1 通用属性(1) Name 所有对象都具有的属性,表示所创建的对象名称。 在程序中通过对象名称来引用对象,不会显示在 窗体上。 (2) Text 用于在窗体上显示对象的文本 TextBox控件的Text还可以获取输入信息本章目录 (3) 控件布局属性 控件布局由Location、Size结构来实现,它们 各有一对整数来表示,整数单位为像素。 等效的语句设置: Location 控件左上角位置, Size 控件大小 Button1.Left = 88 例如,命令按钮控件布局 Button1.Top = 48 Button1.Location = New Point(88, 48) Button1.Width = 80 Button1.Size = New Size(80, 32) Button1.Height = 32 也可用Left、Top定位;用Width和Height来 表示控件的宽度和高度。本章目录 (4) Font 属性值是Font类的对象,一般通过 Font属性对话框设置若在程序代码中需要 改变文本的外观,则 应通过New创建 Font 对象来改变字体。 例如:Label1.Font = New System.Drawing.Font(&Arial&, 10)本章目录 (5) ForeColor、BackColor 颜色属性 ? ForeColor 控件正文前景色 ? BackColor 背景色(6) Cursor 指示鼠标光标图像 设置值是一个Cursors枚举类型的枚举值。若要 用户定义自己的指针图标,可通过如下语句实现:对象名.Cursor = New System.Windows.Forms.Cursor(&图标文件名&)本章目录 (7) Dock 控件放置靠窗体边框的位置,属 性值是DockStyle枚举类型,有六个枚举值(8) Enabled、Visible 控件的有效、可见性Enabled True 允许用户操作 False 禁止用户操作 (9) TabIndex 移动的顺序 Visible 程序运行时控件可见 运行时控件不可见按Tab键时,焦点在各个控件本章目录 2.3.2 窗体窗体是一块画布,是所有控件的容器,可以根据 需要利用工具箱上的控件在窗体上画界面。 1. 主要属性图标标题(Text)最小化按钮 最大化按钮 关闭窗口控制菜单框边框样式本章目录 窗体-属性(1) MaxButton、MinButton 设置为True, 窗体上有最大(小)化按钮;为False时无最大(小) 化按钮 (2) Icon、ControlBox 窗体图标、控制菜单 ControlBox 属性为True,窗体上有控制菜单框; 为 False 时 无 控 制 菜 单 ( 系 统 将 MaxButton 和 MinButton自动设置为False) (3) BackgroundImage 窗体背景图案 (4) FormBorderStyle 窗体的边框类型本章目录 窗体-事件最常用的事件有Click、DblClick和Load Load事件 窗体装入内存时触发(应用程序启动 时自动执行该事件 ) ,常用来在启动时对属性和 变量初始化。例2.3 编写三个事件过程,要求如下:?启动窗体,在标题栏显示“装入窗体”,并将 tongji.bmp 作为 背景图平铺窗体、窗体边框为Fixed3D; ?单击窗体,标题栏显示对应的文字、装入tongji-2.bmp图片大 小为264×256,要求图片正好充满窗体。 ?双击窗体,标题栏显示对应的文字、窗体无最大化和最小化按 钮,清除装入的图片。 代码说明本章目录 窗体-方法使用方法的语法形式: [对象.]方法[参数列表] 窗体方法主要有 ShowDialog 、Show、Hide等,主要 用于多窗体的显示和隐藏等 例如:Me.Hide本章目录 2.3.3 标签-属性标签用来显示文本信息(不能输入) 除 Name 、 Font 、 Size 、 Location 、 Enable 等 属性外,其它主要属性: (1)Text、TextAlign:设置显示的文本、文本 的对齐方式 TextAlign 属性是枚举 类型,提供标签控件上 文本的9种对齐方式本章目录 (2) BackColor 背景色(默认与窗体背景相同)。 若要以透明方式显示,需要设置Color枚举类型 的Transparent。 (3) BorderStyle 标签控件边框样式 None 控件周围没有边框(默认值) FixedSingle 控件带有单边框 Fixed3D 控件带有立体边框 (4) AutoSize 控件是否能自动调整大小 当值为False,保持控件原设计时的大小,正文 若太长则显示其中的一部分。本章目录 (5) Image、ImageAlign 设置控件的背景图案和图案对齐方式 ImageAlign属性与TextAlign类似 通过代码设置图案: 标签名.Image = Image.FromFile(&图片名&) 例2.4 在4个标签中存放4个方向的“手指”图 片,当单击某方向时,利用“Dock”属性定位第 5个标签、并显示相关信息。代码说明本章目录 2.3.4 文本框文本框是一个文本编辑区域,可以在该区域输 入、编辑、修改和显示正文内容。 (1) Text 显示或输入的正文内容 (2) Maxlength 设置文本框可输入的文字最大 长度。默认值为0,表示可以输入任意长字符串。 注意:在 VB.NET 中字符长度以字为单位,也就 是一个西文字符与一个汉字都是一个字,长度 为1。本章目录 (3) MultiLine 多行属性 设置为True时,文本框可以输入或显示多行正 文,同时具有文字处理器的自动换行功能,按 Enter键可插入一空行。 (4) ScrollBars 滚动条属性 None 无滚动条 Horizontal 水平滚动条 Vertical 垂直滚动条 Both 同时加水平和垂直滚动条 当MultiLine为True时,ScrollBars才有效本章目录 (5) PassWordChar 设置显示文本的替代符。 例如,当设置为“*”,则在文本框输入的内容 均以“*”显示,而存储的值是用户输入的原文。 一般用于设置口令的输入。 当MultiLine为 True时,该属性不起作用,密码 不允许多行。 (6) ReadOnly 指定文本控件是否可被编辑, 默认值为 False( 可编辑 ) ,当设置为 True 时,文 本控件相当于标签控件的作用。本章目录 (7)文本内容进行选择操作 SelectionStart 选定的正文开始位置 SelectionLength 选定的正文长度 SelectedText 选定的正文内容 设置 SelectionStart 和 SelectionLength 属性后, SelectedText 会自动存放设定的正文 例2.5 利用属性实现对文本信息的剪切、拷贝、 粘贴等功能。代码说明本章目录 文本框-事件(1) TextChanged事件 当Text属性值发生改变时引发该事件 例 在文本框每输入一个字符就引发一次事件 (2) KeyPress事件 按下并且释放键盘上的一个键时,引发焦点所 在控件的 KeyPress 事件,所按键的值存放在 参数e.KeyChar中 例 对回车的判断 Asc(e.KeyChar)=13本章目录 (3) LostFocus事件 对象失去焦点时发生LostFocus事件 该事件主要是用来对数据进行验证和确认,常 用于检查Text属性的内容。 (4) GotFocus事件 GotFocus 事件与 LostFocus 事件相反,当一 个对象获得焦点时发生本章目录 文本框-方法文本框最有用的方法是 Focus ,把光标移到 指定的文本框中。其形式如下: [对象.] Focus Focus 还 可 以 用 于 如 CheckBox 、 Button 、 ListBox、ComboBox等控件。 例2.6 对输入的数据进行合法性检验,过滤不 合法的数据。代码说明本章目录 2.3.5 命令按钮用于程序运行时执行相应的事件 1. 属性 (1) Text 命令按钮上显示的文字 (2) FlatStyle 按钮的外观 该属性有4个枚举值: Flat 以平面显示按钮 Popup 鼠标在按钮上以 Flat形式显示,否则 以Standand显示 Standand 以三维效果显示(默认) System 由操作系统决定外观形式本章目录 命令按钮(3) Image、BackGroundImage 当 FlatStyle 属性值设置为非 System 的值时, 则 可 以 使 用 Image 、 BackGroundImage 属 性 为按钮设置图形或背景图,显示不同的图形文 件(.bmp和.ico)。通常情况使用Image属性。 (4) TextAlign、ImageAlign 设置文本、图形在按钮上的对齐方式 2. 事件 命令按钮一般接收Click事件本章目录 2.4 综合应用例2.7建立一个类似记事本的应用程序,提供: (1) 剪切、复制和粘贴的编辑操作 (2) 字体大小的格式设置分析: (1) 建立一个文本框输入文本,文本框应该有滚动条, 为了便于调试,程序运行时文本框有初始值。 (2) 利用文本框的 SelectedText 属性实现 “剪切、复 制和粘贴”的编辑操作; (3) “格式”设置利用Font对象实现。代码说明本章目录 本章小节类是同种对象的集合与抽象,包含所创建对象 的属性描述和行为特征的定义,是创建对象实 例的模板。 对象三要素:属性、事件、方法 属性的类型:基本数据类型、枚举类型、结构 类型 窗体 是所有控件的容器 基本控件 标签、文本框、命令按钮本章目录 思考题1. 什么是类?什么是对象?什么是事件过程? 2. 属性和方法的区别是什么? 3. 如何建立一个完整的应用程序? 4. 如何在文本框内显示多行文本? 5. 如何使对象获得焦点? 6.如何在命令按钮上设置图形?本章目录 第三章 VB.NET语言基础3.1 3.2 3.3 3.4 3.5 变量、常量与数据类型 运算符和表达式 常用函数 程序结构和编码规则 综合应用本章目录 3.1 变量、常量和数据类型3.1.1变量概述 变量 在程序运行中其存储的值可以改变 命名规则:? 必须以字母或汉字开头,由字母、汉字、数字或下划线组成,长度小于等于255个字符? 不能使用VB.NET中的关键字? VB.NET 不区分变量名的大小写,一般变量名首字母用大写,其余用小写字母表示;常量 全部用大写字母表示本章目录 3.1.1变量概述值类型和引用类型的变量 ? 值类型变量 直接存放数据。每个值类型变量 有它自己的数据拷贝,因此对一个值类型变量的 操作不能影响其他的变量。 ?引用类型变量 并不真的包含数据,存放的是 指向其他数据的内存地址的指针,也就是把数据 值所在的地址作为引用变量的值。该种变量对象 的引用简称为赋值或存储。字符串、数组和类是 引用类型的变量。本章目录 变量概述x是值类型变量,存放的值为1234; s是引用类型 变量,指向&VB.NET&的一个引用值类型变量引用类型变量1234X S X本章目录VB.NET 1234 3.1.2 数据类型本章目录 3.1.3变量声明1. 用Dim语句显式声明变量 Dim 变量名 [As 类型][=初始值] As部分缺省,创建的变量为Object类型 初始值子句,表示给声明的变量赋值 一条Dim语句可同时定义多个变量。多个相同类 型变量,可用一个As来指定(前面几个由逗号分 隔),这时不能给变量赋初值。例如:Dim m,n,j As Integer,x,y As Single,k k为Object类型本章目录 变量声明2. 隐式声明 默认状态下,系统要求对使用的变量都显式声 明,当使用没有声明的变量时,该变量名下有 绿色曲线(表示语法错)。若对变量不声明而直 接使用,称为隐式声明。则需要在模块中所有 程序代码的最前面加语句: Option Explicit Off 对初学者,最好变量加以显式声明,这样有助 于程序的查错。本章目录 3.1.4 常量常量是在程序运行中不变的量,VB.NET中有三 种常量: 直接常量 其常数值直接反映了其类型 符号常量 用户声明,便于程序阅读或修改 Const 符号常量名 [As 类型] = 表达式 系统常量 系统提供许多内部常量和枚举 例如:vbCrLf 回车/换行组合符 枚举 如控件的颜色、边框线型等本章目录 3.2 运算符和表达式和其他语言一样,VB.NET中也具有丰富的运算 符,通过运算符和操作数组合成表达式,实现 程序编制中所需的大量操作。 运算符是表示实现某种运算的符号。VB.NET中 的运算符可分算术运算符、字符串运算符、关 系运算符和逻辑运算符四类。本章目录 3.2.1 算术运算符注意:对算术运算符两边的操作数应是数值 型,若是数字字符或逻辑型,则自动转换成 数值类型后再运算。例如:30-True 结果是31,逻辑量True转为数值-1, False转为数值0 False + 10 + &4& 结果是14例:5+10 mod 10 \ 9 / 3+2 ^2结果:10本章目录 字符串运算符& 两旁的操作数可任意,转换成字符型后再连接 + 两旁的操作数应均为字符型;若为数值型则进 行算术加运算;若一个为数字字符,另一个为数 值,则自动将数字字符转换为数值后进行算术加; 若一个为非数字字符型,另一个为数值型,则出 错。例如:操作 结果 &ab& & 123 &ab123 & &12& & 456 & 12456 & &12& & True &12True& 操作 &ab& + 12 &12& + 456 &12& + True 结果 出错 468 11注意: 在变量后使用运算符&时,变量与&间应加一个空格本章目录 关系运算符关系运算符是双目运算符,作用是对两个操作数进行大 小比较,若关系成立,则返回True,否则返回False。 操作数可以是数值型、字符型。运算符 = &&= & &= &&例 & ABCDE & = & ABR & & ABCDE & & & ABR && bc& &= &abcde & 23&3 & 23 & & & 3 & & abc& && &abcde &本章目录结果 False FalseTrue False True True 逻辑运算符逻辑运算符除Not是单目运算符外,其余都是双目运 算符,作用是将操作数进行逻辑运算,结果是逻辑值 True或False。本章目录 3.2.2表达式1.组成 变量、常量、函数、运算符和圆括号 2.书写规则 运算符不能相邻 例a+ -b是错误的 乘号不能省略 例x 乘以y 应写成:x*y 括号必须成对出现(均使用圆括号) 表达式从左到右在同一基准上书写,无高低、大小 3. 不同数据类型的转换 运算结果的数据类型向精度高的数据类型靠 Integer&Long&Single&Double&Currency 4. 优先级 算术运算符&=字符运算符&关系运算符&逻辑运算本章目录 表达式书写举例abcd efga*b*c*d/e/f/ge 10 ? ln 10 x ? y ?1或a*b*c*d/(e*f*g)sin 45 ? ?sin(45*3.14/180)+(exp(10)+log(10))/sqr(x+y+1)选拔优秀生的条件为:年龄(Age)小于19岁,三门课总 分(Total)高于285分,其中有一门为100分,如果其表达 式写为:Age&19 And Total&285 And ( Mark1=100 Or Mark2=100 Or Mark3=100 ) 如果取消括号有何问题?请读者考虑。本章目录 3.3 常用函数3.3.1 名称空间和类 VB.NET通过名称空间把类库划分为不同的组, 将功能相近的类划到相同的名称空间。有了名称 空间,可以方便地组织应用程序要使用的各个类。 (1) VB.NET函数库的名称空间和模块 Conversion 转换函数 DateAndTime 日期和时间函数 Strings 字符串函数 VbMath 随机函数本章目录 3.3.1 名称空间和类(2) 基础类库中的名称空间和类类别基本数 据类型 System名称空间说 明基本的和经常使用的数据类 型、事件和事件处理程序、 接口、属性和异常处理等 对象集合 文件管理及其输入/输出编程基础 System.Collections System.IO图形数据库System.Drawing GDI+ Windows的应用程序 System.Windows.Forms 的丰富用户 ADO.NET的各种对象 System.Data本章目录 名称空间的使用引用名称空间的方法: 项目引用 新建一个项目时,VB.NET根据所 建项目类型,自动导入部分名称空间的引用 直接引用 给出名称空间的全名,就可访问 其中的任一个类及其各项内容例 使用Math类开方函数sqrt: Label1.Text = system.Math.sqrt(100)Imports语句导入 在代码中就可直接使用名 称空间的类或成员。导入语句的格式: Imports 名称空间本章目录 3.3.2数学函数.NET中的数学函数包含在Math类。使用前在模 块的开头用语句 Imports System.Math导入函数名 Abs(N) Cos(N) Exp(N) Fix(N) Log(N) Int(N) 含义 取绝对值 余弦函数 ex 取整 自然对数 取小于或等于 N的最大整数 实例 Abs(-3.5) Cos(0) Exp(3) Fix(-3.5) Fix(3.9) Log(10) Int(-3.5) Int(3.5)本章目录结果 3.5 1 20.086 -3 3 2.3 -4 3 数学函数函数名 含义 Rnd[(N)] 产生随机数 Round(N) 四舍五入取整 Sin(N) Sgn(N) Sqr(N) Tan(N) 正弦函数 符号函数 平方根 正切函数 实例 Rnd Round(-3.5) Round(3.5) Sin(0) Sgn(-3.5) Sqr(9) Tan(0) 结果 [0,1)之间的数 -4 4 0 -1 3 0Rnd函数返回0和1(包括0但不包括1)之间的双精度随机数. 每次运行时,要产生不同序列的随机数,先执行Randomize 语句。 产生a~b的之间的随机整数:Int(Rnd *(b-a)+a)本章目录 3.3.3 转换函数函数名 Asc(C) CDate 功能 字符转换成ASCII码值 转换成日期型 实例 Asc(&A&) 65 结果CDate(&&) Chr(N) Hex(N)Oct](N)ASCII码值转换成字符 十进制转换成十六进制十进制转换成八进制Chr$(65) Hex(100)Lcase$(&ABC&) Oct$(100)&A& 64&abc& &144&Lcase$(C) 大写字母转为小写字母Str(N)Ucase(C) Val(C)数值转换为字符串小写字母转为大写字母 数字字符串转换为数值Str$(123.45)Ucase$(&abc&) Val(&123AB&)&123.45&&ABC& 123本章目录 转换函数说明(1) Chr和Asc函数互为反函数。 (2) Str函数将非负数值转换成字符类型后,会在转换 后的字符串左边增加一空格。 (3) Val将数字字符串转换为数值类型,当字符串中出 现数值类型规定的字符外的字符,则停止转换,函数 返回的是停止转换前的结果。例如表达式: Val(&-123.45ty3&)结果为-123.45。 (4) CDdate函数将以日期型表达式转换成日期类型。 例如表达式:CDate(&&)结果为日期类型 VB.NET 中 还 有 其 他 类 型 转 换 函 数 , 例 如 , CInt 、 CBool、CSng、CStr等,详细例子查阅帮助功能。本章目录 3.3.4 字符串函数字符串编码VB.NET中字符串长度是以字(习惯称字符)为单 位,每个西文字符和每个汉字都作为一个字, 占两个字节。这是因为 VB.NET 采用 Unicode( 国际标准化组织ISO字符标准)来存储和操作字 符串。 VB.NET 中字符串处理有两种方式:保留和更 新 了 VB6.0 版 本 提 供 的 函 数 ; 另 一 种 是 用 System.String类的成员(函数)本章目录 字符串函数函数名 说明 实例 InStr(2,&EFABCDE 7 FG&,&EF&) Left(&ABCDE&,3) Len(&AB教育&) Space(3) Trim(& ABCD &) &ABC& 4 & & &ABCD& 结果 InStr([N,]C1,C2[, 从n开始,在C1中找C2 M]) Left(C,N) Len(C) Space(N) Trim(C) Mid(C,N1[,N2]) 取字符串左边n个字符 字符串长度 产生N个空格的字符串 去掉字符串两边空格 取字符子串Mid(&ABCDE&,2,3) &BCD& Replace(&ACDABC &A3AB3& D&,&CD&,&3&)Replace(C,C1,C2) 用C2替代C1本章目录 字符串函数函数名 Right(C,N) 说明 取字符串右边n个字符 实例 Right(&ABCD&,3) 结果 “BCD&RTrim(C)Space(N) Split(C[,D]) String(N,C) StrReverse(C) TRim(C)去掉字符串右边空格产生n个空格的字符串 将字符串分隔成字符数 组。与Join作用相反 重复首字符n次 将字符串反序 去掉字符串两边的空格RTrim(&ABCD &)Space(3)&ABCD&“ &S=Split(&123,ab&,&,&) S(0)=&123& S(1)=“ab& String(3,&ABC&) &AAA& StrReverse(&ABCD&) &DCBA& TRim(“ ABCD &) &ABCD&本章目录 3.3.5 日期函数函数名 Date[()] Day(C|N) Hour(C|N) Minute(C|N) Month(C|N) 说明 返回系统日期 返回日期代号(1~31) 返回小时(0~24) 返回分钟(0~59) 返回月份代号(1~12) Date Day(&&) Hour(#1:12:56PM#) Minute(#1:12:56PM#) Month(&&) 实例NowSecond(C|N) Time[()] Year(C|N)返回系统日期和时间返回秒(0~59) 返回系统时间 返回年代号()NowSecond(#1:12:56PM#) Time Year(365)例 计算从当前日期到日有多少天?表达式为: DateDiff(&d&, Now, #6/30/2007#)本章目录 3.3.6 Shell函数Shell函数可调用各种应用程序。格式如下: Shell(命令字符串[,窗口类型]) 命令字符串为要执行的应用程序名(包括路径), 必须是可执行文件(.com、.exe、.bat)。 窗口类型表示执行应用程序的窗口状态, 0~4 , 6的整型数值,1表示正常窗口状态。 函数调用成功返回一个任务标识 ID,不成功, 则返回0。提示:如果不知道应用程序的路径名,可用Start命令启动程序 例 i = Shell(start & &calc.exe&)本章目录 3.4 程序结构和编码规则此处只能写此类语句 模块级变量位置 不能再往前写 程序自动生成的代 码,可查看不要修改事件过程和自定义 过程,块结构,位 置前后没有关系本章目录 程序结构和编码规则编码规则 (1) VB.NET代码不区分字母的大小写 关键字,首字母自动转换成大写,其余字母转换成小写。 对于用户自定义的变量、过程名,以第一次定义的为准, 以后输入的自动向首次定义的形式转换。 (2) 语句书写自由 一行上可书写多句语句 ( 用冒号分隔 ) ,一行最多 255 个字符。 单行语句可分若干行书写,在本行后加入续行符 ( 空 格和下划线)。本章目录 3.5 综合应用例3.3 模仿字处理软件中字符串替换功能和字幕滚动。 设计思路:利用Shell函数调用winword.exe执行Word 程序观察其替换对话框。 本例字符串替换功能实现方法: ?利用查找(InStr)、取子串(Left、Mid)等函数实现 ?利用替换(Replace)函数实现 标题显示:Form1.Caption=Space(n) & &显示文字& 要产生滚动效果,可用时钟(Timer1)控件和Space函数, 改变空格数达到自右向左滚动字幕效果。本章目录 本章小节变量:在程序运行中其存储的值可以改变 值类型变量、引用类型变量 变量声明 Dim 变量名 [As 类型][=初始值] ?运算符 算术运算符、字符串运算符、关系运算 符和逻辑运算符 名称空间导入 Imports 名称空间 数学函数使用 Imports System.Math Shell函数 调用各种应用程序本章目录 思考题1.VB.NET 提供了哪些数值类型?声明类型时, 其类型关键字分别是什么?其类型符又是什么? 2. 说明Option Explici的作用。 3. 什么是值类型变量?什么是引用类型变量? 4. 怎样声明一个符号常量 ?符号常量与变量的 区别? 5. 解释整除与除法运算的区别? 6. 将数字字符串转换成数值,可以用哪些函数、 方法?本章目录 第四章 基本的控制结构4.1 4.2 4.3 4.4 4.5 4.6 顺序结构 选择结构 循环结构 其它辅助控制语句 综合应用 程序调试本章目录 4.1 顺序结构VB.NET也具有结构化程序设计的三种结构,即 顺序结构、选择结构、循环结构,它是程序设计 的基础。 顺序结构就是各语句按出现的先后次序执行。一 般的程序设计语言中,顺序结构的语句主要是赋 值语句、输入/输出语句等。在VB.NET中也有赋 值语句;而输入 / 输出可以通过文本框控件、标 签控件、 InputBox 函数、 MsgBox 函数和过程 等来实现。本章目录 4.1.1 赋值语句形式: 变量名=表达式 计算右边表达式的值,然后赋给左边的变量。 给变量赋值和设定属性是 VB.NET编程中常见的 两个任务。例如: sngRate!=0.1 ' sngRate为单精度变量,赋值0.1 TextBox1.Text = && ' 清除文本框的内容 TextBox1.Text = &欢迎使用VB.Net & ' 文本框显示字符串本章目录 复合赋值语句复合赋值运算符,其作用简化程序代码,提高 程序编编译的效果。语句形式: 变量名 复合赋值运算符 表达式 计算右边表达式的值,然后与左边的变量进行 相应的运算,最后赋值给变量。 复合赋值运算符:+=、- =、*=、\=、/=、^=、 &= 例如:a *= b+4 等价于 a = a*(b+4)本章目录 常用复合赋值语句?累加 sum +=x 等价于 sum = sum+x ?计数 n += 1 等价于 n = n+1 ?显示多行信息 利用 &= 来实现 例如: TextBox1.Text = & VB.NET & & vbCrLf TextBox1.Text &= &程序设计教程&本章目录 赋值语句注意点赋值语句不允许写成 表达式=变量,虽然赋 值号与关系运算符等于号都用=表示,VB.NET 系统会根据所处的位置自动判断符号的意义。赋值号左边的变量只能是变量,不能是常量、 常数符号、表达式。下面均为错误的赋值语句: Now()=x+y5=sqrt(s)+x+y'左边是表达式(函数)' 左边是常量本章目录 4.1.2 数据输出和输入InputBox函数 打开一个对话框,等待用户输入,返回字符串 类型的输入值。 形式:InputBox(提示[,标题][,默认值][,x坐标 位置][,y坐标位置]) 提示项不能省略。若要多行提示,可在每行行 末加回车换行VBCrLf。 例4.1利用InputBox输入基本工资和营业额,按 营业额的5%提成,计算实发工资并显示。代码说明本章目录 MsgBox函数和MsgBox过程打开一个信息框,等待用户选择一个按按钮。 MsgBox函数返回所选按钮的值,MsgBox过 程不返回值 MsgBox函数形式: 变量[%] = MsgBox(提示[,按钮][,标题]) MsgBox过程形式: MsgBox 提示[,按钮][,标题] 按钮项是一整型表达式,决定信息框按钮的数 目和类型及出现在信息框上的图标形式。本章目录 MsgBox按钮设置分组内部常数 VB.NETOkOnly VB.NETOkCancel VB.NETAboutRetryIgno re VB.NETYesNoCancel VB.NETYesNo VB.NETRetryCancel VB.NETCritical值 0 1 2 3 4 5 16描 确定按钮 确定、取消按钮述按钮 数目终止、重试、忽略按钮 是、否、取消按钮 是、否按钮 重试、取消按钮 关键信息图标图标 类型默认 按钮VB.NETQuestionVB.NETExclamation VB.NETInformation VB.NETDefaultButton1 VB.NETDefaultButton23248 64 0 56询问信息图标警告信息图标 信息图标 第1个按钮为默认 第2个按钮为默认VB.NETDefaultButton3512第3个按钮为默认本章目录 MsgBox所选按钮返回值被单击的按钮 确定 取消 终止 重试 忽略 是 否 返回值 1 2 3 4 5 6 7 内部常数 VBOk VBCancel VBAbort VBRetry VBIgnore VBYes VBNo 枚举值 Ok Cancel Abort Retry Ignore Yes No例4.2 编一账号和密码输入的检验程序,当输入不正 确,如账号为非数字字符,密码不正确等,显示有关 信息,再输入。代码说明本章目录 Write、WriteLine方法在调试窗口输出信息。Write输出时不换行、 WriteLine输出时换行。输出方法: Debug. WriteLine(表达式) Debug. Write (表达式) 例 将例4.1输出改为如下语句: Debug.WriteLine(&本月营业额为:& & x & & 基本工资为:& & jbgz) Debug.Write(&本月实发工资为:& & sfgz) 选择“视图|其它窗口|输出”显示输出窗口本章目录 日期输出控制常用日期和时间格式符符号d w 显示日期 ,dd个位前加0 星期为数字(1是星期日)作 用myyyy dddddd h m显示月份,mm个位前加0显示4位数年份,yy为2位数年份 显示完整长日期(yyyy年m月d日) 显示小时(0~23),hh个位前加0 在h后显示分(0~59),mm个位前加0s显示秒(0~59),ss个位前加0本章目录 4.2 选择结构计算机要处理的问题往往是复杂多变的,仅 采用顺序结构是不够的。必须利用选择结构 等来解决实际应用中的各种问题。VB.NET中 提供了多种形式的条件语句来实现选择结构, 有 If条件语句和 Select情况语句等。它们都 是对条件进行判断,根据判断结果,选择执 行不同的分支。本章目录 4.2.1 If条件语句1. If…Then语句(单分支结构) 表达式 If &表达式& Then 语句块(可以是一句或多句语句) T 语句块 End If 或 If &表达式& Then &语句&F表达式:关系表达式、逻辑表达式,算术表达式。 表达式值按非零为True,零为False进行判断。 该语句的作用是当表达式的值为True,执行Then后 面的语句块,否则不做任何操作。IF演示本章目录 单分支结构例:已知两个数x和y,比较它们的大小,使得x 大于y。 x y If x&y Then ? t=x x=y y=t ? ? t End If 或 If x&y Then t=x: x=y: y=t简单If形式无End If时,只能是一句语句或语句间用 冒号分隔,而且必须在一行上书写。本章目录 双分支结构2. If…Then…Else语句 T F 表达式 If 表达式 Then 语句块1 语句块 1 语句块 2 Else 语句块2 End If 或 If 表达式 Then 语句1 Else 语句2 当表达式的值为 True 时,执行 Then 后面的 语句块1,否则执行Else后面的语句块2本章目录 双分支结构例计算分段函数 单分支 结构实现2 ? ?sin x ? x ? 1 y?? 3 ? cos x ? x ? 3x ?x?0 x?0y=cos(x)-x^3+3*x If x&&0 Then y=sin(x)+sqr (x*x+1)If x&&0 Then 双分支 y=sin(x)+sqr (x*x+1) Else 结构实现 y=cos(x)-x^3+3*x End If本章目录 多分支结构3. If…Then…ElseIf 语句 If 表达式1 Then 语句块1 ElseIf 表达式2 Then 语句块2 表达式 1 … T [Else 语句块 n+1] 语句块 1 End IfF F 表达式 2 T 表达式 n T 语句块 2 语句块 n 语 句 块 n+ 1 F作用:根据不同的表达式值确定执行哪个语句块本章目录 多分支结构例例4.5 已知变量ch中存放了一个字符,判断该字符是字母字符、 数字字符还是其他字符。 If UCase(ch) &= & A& And UCase(ch) &= &Z& Then MsgBox(ch + “是字母字符”) '考虑大小写字母 ElseIf ch &= & 0& And ch &= & 9& Then ' 数字字符 MsgBox(ch + &是数字字符&) Else ' 除上述字符以外的字符 MsgBox(ch + &是其他字符&) End If不管有几个分支,依次判断,当某条件满足,执行相应 的语句,其余分支不再执行;若条件都不满足,且有 Else子句,则执行该语句块,否则什么也不执行。 ElseIf不能写成 Else If本章目录 If语句的嵌套If语句的嵌套是指If或Else后面的语句块中又包含If语 If 表达式1 Then If 表达式2 Then … If x&y Then t=x: x=y: y=t End If … If y&z Then End If t=y: y=z: z=t 例 已知x,y,z三个数, If x&y Then 使得x&y&z t=x: x=y: y=t 用一个IF语句和一个嵌套 End If 的IF语句实现 End If本章目录 4.2.2 Select Case语句Select Case 变量或表达式 Case 表达式列表1 语句块1 Case 表达式列表2 语句块2 表达式列表与变量或表达式的类型必 须相同,是下面4种形式之一 : … ?表达式 例: &A& [Case Else 语句块n+1] ?一组用逗号分隔的枚举值 2,4,6,8 End Select ?表达式1 To 表达式2 60 To 100?Is 关系运算符表达式本章目录Is & 60 Select Case语句例将例4.5 改用 Select Case 语句实现: Select Case ch Case &a& To &z&,&A& To &Z& MsgBox( ch + &是字母字符&) Case &0& To &9& MsgBox (ch +&是数字字符&) Case Else MsgBox( ch + &是其他字符&) End Select 多分支结构,用Select Case语句比If…Then…ElseIf 语句直观,程序可读性强。但不是所有的多分支结构 均可用Select Case语句代替If…Then…ElseIf语句。本章目录 Select Case语句例代码二 代码一 Select Case x,y If x & 0 And y &0 Then Case x & 0 And y & 0 MsgBox(&在第一象限&) MsgBox(“在第一象限”) ElseIf x & 0 And y & 0 Then Case x & 0 And y & 0 MsgBox(&在第二象限&) MsgBox(“在第二象限”) ElseIf x & 0 And y & 0 Then Case x & 0 And y & 0 MsgBox(&在第三象限&) MsgBox(“在第三象限”) ElseIf x & 0 And y &0 Then 代码二错误: Case x & 0 And y &0 MsgBox(&在第四象限&) MsgBox(“在第四象限”) 1. Select Case 后不能出现多个变量; End If End Select例4.7 已知坐标点(x,y),判断其落在哪个象限。2. Case后不能出现变量及有关运算符。本章目录 4.2.3 条件函数(1) IIf函数IIf(表达式,表达式为真时的值,表达式为假时的值) IIf函数是If … Then …Else 结构的简洁表示 例如,将x,y中大的数,放入Tmax变量中: Tmax = IIf(x & y,x,y) 该语句与如下语句等价 : If x & y Then Tmax = x Else Tmax = y本章目录 4.2.3 条件函数(2) Choose函数 Choose(整数表达式,选项列表) 根据表达式的值i,返回选项列表中第i个选项。如 果整数表达式的值越出选项范围时,返回Null。例 根据Nop的值,得到+、-、×、÷中的某运算符: Op= Choose(Nop,&+&,&-&,&×&,&÷&) 例4.8 根据当前日期,显示今日是星期几。t = Choose(Weekday(Now), “星期日”, “星期一”, “星期 二”, “星期三”, “星期四”, “星期五”, “星期六”)MsgBox(&今天是:& & Now & t)本章目录 4.3 循环结构计算机最擅长的功能之一就是按规定的条件, 重复执行某些操作。例如,按照人口某增长率, 对人口增长统计;根据各课程的学分、绩点和 学生的成绩,统计每个学生的平均绩点等。这 类问题都可通过循环结构来方便地实现。 VB.NET 中提供了两种类型的循环语句:一种 是计数循环语句;另一种是条件型循环语句。本章目录 4.3.1 For循环语句For循环语句用于控制循环次数预知的循环结构。 For 循环变量 =初值 To 终值 [Step 步长] 语句块 [Exit For] 语句块 例4.9 计算 Next 循环变量 1~100的奇数和 循环变量必须为数值型。? 1) 循环次数 ? Int ( &0 初值&终值 =1 时,可省略 步长 &0 初值&终值 =0 死循环终值 ? 初值 步长本章目录 For循环语句循环变量=初值 F循环变量≤终值 T 语句块 有 Exit For F 语句块T循环变量=循环变量+步长循环流程: (1) 循环变量被赋初值,它 仅被赋值一次。 (2) 判断循环变量是否在终 值内,如果是,执行循环体; 如果否,结束循环,执行 Next的下一语句。 (3) 循环变量加步长,转(2), 继续循环例4.10 将可打印的 ASCII码制成表格输出本章目录Next 的下一语句 4.3.2 Do…Loop循环语句Do循环用于控制循环次数未知的循环结构。 形式1: 形式2: Do { While|Until }&条件& Do 语句块 语句块 [Exit Do [Exit Do 语句块] 语句块] Loop Loop { While|Until} &条件& 形式1为先判断后执行,有可能一次也不执行; 形式2为先执行后判断,至少执行一次。本章目录 Do…Loop流程表达式列表 1 T 语句块 有 Exit Do F 语句块 T 表达式列表 1 F T F 语句块 T有 Exit Do F 语句块Do While?LoopDo ?Loop While本章目录 循环例题例4.11 我国有13亿人口,按人口年增长0.8% 计算,多少年后我国人口超过26亿。 解此问题两种方法,可根据公式:26 ? 13(1 ? 0.008) n log( 2) n? log(1.008)直接利用标准函数对数可求得,但求得的年数不 为整数;也可利用循环求得 。代码说明本章目录 循环例题例 m=14 ,n=6 的最大公约数 辗转相减法 & n Then t = m: m = n: n = t (1)对于两数m,n,使得m&n If ?m m=m-n m&n r=m mod n ? n=n-m n&m Do While (r && 0) (2) m除以n得余数r ? m、 n为公约数 m=n m=n n (3)若r=0,则n为最大公约数, Do While n=r m && n m If r= mm &n Then 14 6 mod n 结束;否则执行(4) 8 6 Loop m = m C n Else “最大公约数=”2& n 6 (4)m?n,n?r,再重复执行(2) MsgBox例4.12用辗转相除法求两自然数的最大公约数。 求最大公约数的算法思想:代码说明n=nCm End If Loop本章目录2 24 2 4.3.3 循环的嵌套在一个循环体内又包含了一个完整的循环结构 称为循环的嵌套。循环嵌套对 For 循环语句和 Do…Loop语句均适用。 例4.13 打印九九乘法表思考:打印上三角或下三角程序如何改动? 代码说明本章目录 4.4 其他辅助控制语句4.4.1 Go To 语句 无条件地转移到标号或行号指定的那行语句。 Go To {标号|行号} 注意:标号是字符序列,首字符必须为字母,标号后 应有冒号;行号是一个数字序列; 代码说明 例4.14 判断输入的数是否为素数 素数就是除1和本身以外,不能被其他任何整数整除的 数。根据此定义,判别某数m是否为素数最简单的方法 就是依次用i=2~m-1去除,只要有一个数能整除m,m就 不是素数;否则m是素数。 要求一定范围内的素数,只要将m作为外循环体变量。本章目录 4.4.2 退出和结束语句1.Exit语句 VB 中有多种形式的 Exit 语句,用于退出某种控 制结构的执行。Exit的形式如下: Exit For、Exit Do、 Exit Sub、Exit Function 2.End语句 独立的 End 语句用于结束一个程序的运行,它 可以放在任何事件过程中。本章目录 4.5 综合应用1. 自测四则运算 例 4.15 由计算机自动产生四则运算题,并能判断答 案的正确性。 设计思路: (1) 通过随机函数 Rnd 产生试题的操作数和运算符, 运算符 +、 -、×、÷可对应编号 1~4。产生表达式通 过Form_Load事件过程。 (2) 需要有一个全局变量保存四则运算题的正确答案, 用户答案可通过文本框输入。 (3)本题主要将随机函数、If语句、Select语句综合在 一起使用。代码说明本章目录 综合应用-级数求和例4.16求自然对数e的近似值,其误差小于0.00001。近似公式分析:本例涉及到程序设计中两个重要运算:累加 和连乘 i! 。累加是在原有和的基础上再加一个数;连乘 则是在原有积的基础上再乘以一个数。 该题先求i!,再将1/i!进行累加,循环次数预先未知,可 先设置一个循环次数很大的值,然后在循环体内判断是 否到达精度,当然也可用Do While来实现。代码说明本章目录 综合应用-试凑法分析: (1) 设母鸡、公鸡、小鸡各为x、y、z,列出方程为: x+y+y = 100 3x+2y+0.5z = 100 三个未知数,两个方程,此题求若干个整数解。 (2) 计算机求解此类问题,采用试凑法(也称为穷举法) 来实现,即将可能出现的各种情况一一罗列测试,判 断是否满足条件,采用循环结构来实现。本章目录例4.17假定小鸡每只5角,公鸡每只2元,母鸡每只3元。 现在有100元钱要求买100只鸡,编程求解购鸡方案。 综合应用-递推法递推 (迭代)法基本思想是把一个复杂的计算过程转化为 简单过程的多次重复。每次都从旧值的基础上递推出新 值,并由新值代替旧值。 例 4.18 小猴有桃若干,第一天吃掉一半多一个;第二 天吃剩下桃子的一半多一个;以后每天都吃尚存桃子的 一半多一个,到第7天只剩一个,问小猴原有桃多少? 分析: 用后一天的数推出前一天的桃子数。设第 n 天的 桃子为xn,是前一天的桃子的二分之一减去1。1 即:x n ? x n ?1 ? 1 也就是: x n ?1 ? ( x n ? 1) ? 2 2迭代法类似的应用求高次方程的近似根。本章目录 4.6 程序调试随着程序的复杂性提高,程序中的错误也伴 随而来。对初学者,看到出现错误不要害怕, 关键是如何改正错误,失败是成功之母。上 机的目的,不光是为了验证你编写的程序的 正确性,还要通过上机调试,学会查找和纠 正错误的方法和能力。VB.NET为调试程序提 供了一组交互的、有效的调试工具,在此逐 一介绍。本章目录 4.6.1 错误类型语法错误、运行时错误和逻辑错误三类。 语法错误错误的代码下显示波浪线,任务 窗口上显示警告信息,鼠标指向 波浪线时,显示出错的原因。本章目录 运行错误指令代码执行了一非法操作引起的。例如,类 型不匹配、试图打开一个不存在的文件等。程 序会自动中断,并给出有关的错误信息。本章目录 逻辑错误程序运行后,得不到所期望的结果,这说明程 序存在逻辑错误。例如,运算符使用不正确、 语句的次序不对、循环语句的起始、终值不正 确等。通常,逻辑错误不会产生错误提示信息, 故错误较难排除,需要程序员仔细地阅读分析 程序,并具有调试程序的经验。本章目录 4.6.2 调试和排错VB.NET的三种模式 (1) 设计模式(设计) 可以进行程序的界面设计、属性设置、代码编 写等。 (2) 运行模式(运行) 执行启动命令进入运行模式。在此阶段,可以 查看程序代码,但不能修改。 (3) 中断模式(Break) 执行中断命令,进入中断模式。在中断模式下 可以查看代码、修改代码、检查数据。本章目录 调试和排错-插入断点按下F9键设置的断点 逐语句跟踪查看变量的值按F8键跟 踪执行鼠标指向所 关心的变量本章目录 本章小节结构化程序设计三种结构 顺序结构、选择结构、循环结构 If…Then语句、Select Case语句、For与 Do循环语句 赋值语句与复合赋值语句 数据输出和输入 InputBox、MsgBox 常用算法 素数判定、级数求和、试凑法、迭代法解方程 思考题1. 结构化程序设计有哪三种基本结构? 2. MseBox与InputBox有何区别? 3.多分支If语句与Select Case语句有何区别? 4. 如 果 事 先 不 知 道 循 环 次 数 , 如 何 用 For…Next结构实现循环? 5. 语法错误、运行时错误和逻辑错误之间有何 区别?本章目录 第五章 数 组5.1 5.2 5.3 5.4 5.5 5.6 数组的概念 数组声明及初始化 重定义数组大小 数组的基本操作和排序 结构类型及其数组 综合应用本章目录 5.1 数组的概念1. 引例 例 5.1 求 100 个学生的平均成绩,并统计高于平均分 的人数。用简单变量和循环,求平均成绩程序段如下:aver = 0 For i = 1 To 100 mark = InputBox(&输入学生成绩&) aver = aver + mark Next i aver = aver / 100由于循环体内变量mark只能放一个学生的成绩,无法 统计高于平均分的人数。若用简单变量保存 100 个学 生的成绩,则需定义100个变量和使用100句输入语句。 由此引入了数组。本章目录 数组的概念用数组解决问题的程序如下: Dim mark(99) As Integer ' 声明数组mark Dim aver!, overn%, i% aver = 0 For i = 0 To 99 ' 输入成绩,求分数和 mark(i) = InputBox(&输入学生的成绩&) aver = aver + mark(i) Next i aver = aver / 100 ' 求100人的平均分 overn = 0 For i = 0 To 99 ' 统计高于平均分的人数 If mark(i) & aver Then overn = overn + 1 Next iMsgBox &平均分:& & aver & &高于平均分人数:& & overn)本章目录 数组的概念数组不是一种数据类型,而是一组相同类型的变量的集 合。在程序中使用数组的最大好处是用一个数组名代表 逻辑上相关的一批数据,用下标表示该数组中的各个元 素,和循环语句结合使用,使得程序书写简洁。数组必须先声明后使用,数组声明后在内存可分配一块 连续的区域。 利用Dim语句声明数组名、类型、维数、数组大小 声明时下标的个数确定数组的维数,最多可达32维; 按声明时的大小,数组分静态(定长)数组、动态(可变长) 数组。本章目录 数组的概念Dim mark(99) As Integer 声明了一个一维定长整型数组 mark ,共有100个元素, 下标范围为0 To 99;mark数组的各元素是mark(0), mark(1) , … , mark(99) ; mark(i) 表示由下标 i 的值决 定是哪一个元素。mark数组内存分配如下:mark(0) mark(1) mark(2) … mark(98) mark(99)每个数组元素有一个唯一的顺序号,下标不能超出数 组声明时的上、下界范围,否则会产生下标越界错。 数组元素的使用规则与同类型的简单变量相同。本章目录 5.2数组声明及初始化一维数组 Dim 数组名(下标上界) [As 类型] 下标上界为常数、已有值的表达式或变量。 下标下界为0。一维数组的大小为:下标上界+1。 例 Dim a(10) As Integer,Dim st(5) As String 声明了一维整型数组a、有11个元素;下标的范围0~ 10。若在程序中使用a(11),则系统会显示“索引超出 了数组界限”。 st是一维字符串类型数组、有6个元素;下标的范围 0~5。本章目录 多维数组声明Dim 数组名(下标1,下标2…) [As 类型] 下标数决定了数组的维数,每一维的大小 = 上界 +1 ; 数组的大小为每一维大小的乘积。 例 Dim x(2,4) As Long 声明了一个长整型的二维数组 x;共占据3×5个长整 型变量的空间x(0,0) x(0,1) x(0,2) x(0,3) x(0,4)x(1,0) x(2,0)x(1,1) x(2,1)x(1,2) x(2,2)x(1,3) x(2,3)x(1,4) x(2,4)本章目录 数组的初始化VB.NET提供了对数组的初始化功能,也就是在定义数 组的同时,为数组元素赋初值。形式:Dim 数组() As 类型 ={常数1,…,常数n} ?一维 Dim 数组(,) As 类型 ={{行1常数},…,{行m常数}}例 Dim x(,) As Integer = {{1,2,3,4}, {5,6,7,8}} 数组x 1 5 2 6 3 7 4 8本章目录 5.3重定义数组大小对已经存在的数组可用ReDim语句改变数组大小 ReDim 数组名 (下标[,下标2…]) 例 Dim sArray(2,3 ) As Single Sub Form_Load( ) … ReDim sArray(4,8) … End Sub 在过程外声明了二维数组sArray,在 Form1_Load事件中重新指明二维数组的大小为 5行9列。本章目录 重定义数组大小注意:? Dim 是说明语句,可出现在程序的任何地 方,而ReDim 是执行语句,只能出现在过程中 ? 在过程中可多次使用 ReDim语句来改变数组 的大小,但不能改变维数和类型 ? 可在 ReDim 后加 Preserve 参数用来保留数 组中的数据,若使用Preserve参数后,只能改 变最后一维的大小。例5.2 对例5.1改进,根据指定人数输入学生的成绩, 计算的平均分和高于平均分的人数。本章目录 5.4数组的基本操作和排序5.4.1 数组的输入 通过TextBox控件或InputBox函数逐一输入 例 Dim sb(3,4) For i = 0 To 3 For j = 0 To 4sb(I,j) = InputBox(&输入& & i &“,& & j & &元素&)Next j Next i本章目录 5.4.2数组的输出例5.3 形成5×5的方阵,分别输出方阵中各元素和下 三角元素 方阵规律:第一行的元素为 0~4 ,以后每一行是前一 行对应元素增加5 上三角规律 : 每一行的起始列与行号相同 , 只要控制 内循环的初值 用Space(4-Len(Trim(sc(i,j))))控制输出的空格,代码说明本章目录 5.4.3求数组和、最值、位置例5.4 求一维数组中各元素之和、最小数组元素, 并将最小值数组元素与数组中第一个元素交换 ?求元素和 通过循环将每个元素进行累加 ?求数组中最小元素 假设第一个元素为最小, 然后将该数与其他元素逐一比较,若发现小于最 小值,就用新值替换最小值,同时记录下标值。 ?求最大值的方法与求最小值相似本章目录 交换元素下标 初值0 1 2 3 4 5 6 7 8 9 26 43 61 87 33 19 37 59 76 69下标 初值0 1 2 3 19 43 61 874 5 6 7 8 9 33 26 37 59 76 69本章目录 5.4.4数组排序排序是将一组数按递增或递减的次序排列, 例如按学生的成绩、球赛积分等排序。排 序的算法有许多,常用的有选择法、冒泡 法、插入法、合并排序等。 选择法排序 基本思想:每次在若干个无序数中找最小 (大)数,并放在相应的位置。本章目录 5.4.4数组排序n个数的序列,用选择法按递增次序排序的步骤: 1) 从n个数中找出最小数的下标,出了内循环, 最小数与第1个数交换位置;通过这一轮排序, 第1个数已确定好。 2) 除已排序的数外,其余数再按步骤1)的方法 选出最小的数,与未排序数中的第1个数交换位 置。 3) 重复步骤 2),最后构成递增序列。 选择法演示本章目录 选择法排序例5.5 对已知存放在数组中的6个数,用选择 法按递增顺序排序。原始数据 a(1) a(2) a(3) a(4) a(5) a(6) 第1轮比较 8 6 9 3 2 7 2 6 9 3 8 7a(2) a(3) a(4) a(5) a(6) 第2轮比较a(3) a(4) a(5) a(6) 第3轮比较 a(4) a(5) a(6) 第4轮比较 a(5) a(6) 第5轮比较 选择法排序过程示意2 3 9 6 8 72 3 6 9 8 7 2 3 6 7 8 9 2 3 6 7 8 9代码说明本章目录 冒泡法排序基本思想是:从第一个元素开始,对数组中两两 相邻的元素比较,将值较小的元素放在前面,值 较大的元素放在后面,一轮比较比较完毕,一个 最大的数沉底成为数组中的最后一个元素,一些 较小的数如同气泡一样上浮一个位置。n个数, 经过n-1轮比较后完成排序。冒泡法演示本章目录 冒泡法排序例5.6 用冒泡排序法实现例5.5的问题。原始数据 a(1) a(2) a(3) a(4) a(5) a(6) 第1轮比较 a(1) a(2) a(3) a(4) a(5) a(1) a(2) a(3) a(4) a(1) a(2) a(3) a(1) a(2) 第2轮比较 第3轮比较 第4轮比较 第5轮比较 8 6 9 3 2 7 6 8 3 2 7 9 6 3 2 7 8 9 3 2 6 7 8 9 2 3 6 7 8 9 2 3 6 7 8 9代码说明本章目录 5.4.5插入数据插入数据基本思想是: 1)首先查找待插入数据在数组中的位置k; 2)然后从最后一个元素开始往前直到下标为k的 元素依次往后移动一个位置; 3) 第k个元素的位置腾出,将数据插入。④ ③ ② ①数据插入演示147 x10 141316 k192225例5.7在有序数组a中插入数值x。本章目录代码说明 5.4.6删除数据数据删除演示删除操作首先也是要找到欲删除的元素的位置k; 然后从k+1到n个位置开始向前移动;最后将数组 元素减1。① ② ③ ④ ⑤1471013 k1416192225例5.8要将值为13的元素删除。代码说明本章目录 5.5 结构类型及其数组数组存放性质相同的数据集合。若不同类型信息 作为一个整体来描述,例如姓名、性别、出生年 月等,通过“Structure”结构类型来解决。 1.结构类型定义: Structure 结构类型名 成员名声明 End Structure本章目录 结构类型例如,定义一个有关学生信息的结构类型: Structure studType ' studType为类型名 Dim Name As String ' 姓名 Dim Sex As Char ' 性别 Dim Telephone As Long ' 电话 Dim School As String ' 学校 End Structure? 结构类型不能在过程内部定义。 ? 必须显式声明结构的每一数据成员,用Dim语 句声明的成员默认为Public,否则可用Private 声明。本章目录 2.结构变量的声明定义了结构类型,就可在变量的声明时使用。 Dim 变量名 As 结构类型名 例如,如下语句: Dim Student ,MyStud As StudType 声明Student、MyStud为两个同种类型的变量本章目录 2.结构变量的声明注意: (1)不要混淆StudType 和Student ,前者如同 Integer等的类型名,后者根据该类型分配所需 的内存空间,存储各成员数据。 (2) 类型变量和数组相同之处它们都是由若干个 成员(元素)组成;不同之处,前者的成员代表 不同性质、不同类型的数据,以各个不同的成员 名表示;而数组一般存放的是同种性质、同种类 型的数据,以下标表示不同的元素。本章目录 结构变量成员的引用引用结构类型变量中的某个成员,形式如下: 结构类型变量名.成员名 例如, Student.Name Student变量中的姓名 Student.Sex性别 可利用With语句简化成员引用: With student With 结构变量对象名 .Name = &张华& 语句块 .Sex = &男& End With .School=&同济大学&End With本章目录 4.结构数组及应用例5.9 利用结构类型,声明一个结构数组,输 入不超过 100个个学生的信息,显示全部信息和 查询某学校的学生情况。 分析:自定义一个记录类型,由姓名、组成,声 明一个存放最多100个记录的数组,在标准模块 自定义类型如下代码说明本章目录 5.6 综合应用-分类统计1.分类统计 将一批数据按条件统计每一类中包含的个 数。例如,统计学生成绩优、良、中、及 格、不及格人数。这类问题要掌握分类条 件表达式的书写和使用计数变量保存相应 的计数。本章目录 综合应用-分类统计例5.10 输入一串字符,统计各字母出现的 次数 ? 统计26个字母出现的个数,必须声明一 个具有26个元素的数组,每个元素的下标 表示对应的字母,元素的值表示对应字母 出现的次数。 ? 从输入的字符串中逐一取出字符,判断 前转换成大写字符(不区分大小写),再进 行判断。本章目录 综合应用-数据输入2. 大量数据的输入和编辑 在财务、工程计算中,经常需要对大量的数据进 行输入和编辑。可利用文本框通过编程来实现。 例5.7输入一系列的数据,输入结束将它们按分 隔符分离后存放在数组中。对输入的数据允许修 改和自动识别非数字数据。 ?利用文本框输入和编辑数据;利用Replace函 数去除重复输入的分隔符。 ?利用Split函数将输入的内容分离到数组中。本章目录 思考题1. 怎样声明一维数组? 2.怎样确定数组中每一维的上界? 3.怎样引用数组中的一个元素? 4.如何防止数组越界错误的发生? 5.怎样定义一个结构类型? 6.结构类型与数组的区别是什么?本章目录 第六章 过 程6.1 6.2 6.3 6.4 6.5 函数过程的定义与调用 子过程的定义与调用 参数传递 递 归 综合应用本章目录 6.1 函数过程的定义和调用6.1.1 引例 6.1 已知多边形各条边 的长度,计算多边形的面积。 计算多边形面积,可将多边形分解 成若干个三角形。计算三角形面积 的公式如下:area ? c (c ? x )( c ? y )( c ? z )a g bS1 c S2S3edf1 c ? ( x ? y ? z) 2本章目录 6.1.1 引例定义函数过程area Public Function area(x!, y!, z!) As Single Dim c! c = 1 / 2 * (x + y + z) area = Sqr(c * (c - x) * (c - y) * (c - z)) End Function 调 Sub command1_click()… 输入若干个三角形边长S=area(a,b,c)+area(c,d,e)+area(e,f,g) Print S End Sub本章目录用 函 数 过 程 6.1.2函数过程的定义在窗体、模块等的代码窗口把插入点放在所有现 有过程之外,直接输入函数过程。定义函数过程 的形式如下: [Public |Private] Function函数过程(形参)[As 类型] 变量声明 语句块 Return 表达式 或 函数名=表达式 End Function本章目录 函数过程的定义?Public 全局函数过程,可被程序任何模块调用 ?Private 仅供本模块中的其它过程调用 ?形参(或称哑元) 只能是变量或数组名( ),仅表示 参数的个数、类型,无值。例6.2 编一求最大公约数的函数过程 Function gcd( m%, n%) As Integer If m & n Then t = m: m = n: n = t Do while n&&0 r = m Mod n : m = n: n = r Loop gcd = m End Function本章目录 6.1.3函数过程的调用调用形式:函数过程名([参数列表])调用演示参数列表(称为实参或实元):必须与形参个数相同,位置与 类型一一对应。可以是同类型的常量、变量、表达式。Sub Form1_Click(……) Handles MyBase.Click Dim x%, y%, z% x = 124: y = 24 z = gcd(x, y) MsgBox(&最大公约数是& & z) End Sub Function gcd( m%, n%) As Integer If m & n Then t = m: m = n: n = t Do while n&&0 程序运 r = m Mod n : m = n: n = r 行流程 Loop gcd = m End Function本章目录 函数过程的调用例6.3编一函数,统计字符串中汉字的个数。 分析:在VB.NET中,字符以Unicode码存放, 每个汉字和英文是一个字符、占有两个字节, 区别是汉字的机内码最高位为1,若利用Asc函 数求其码值为小于0(以补码表示),而西文字 符的最高位为0,Asc函数求其码值为大于0代码说明本章目录 6.2 子过程的定义与调用6.2.1 引例 以下情况使用函数过程存在不足: ?不是为了获得某个函数值,而是为了某种功 能的处理。 ?要获得多个结果。 VB.NET中提供了使用更灵活的子过程。 例6.4编一过程,对Label1控件进行移动,通过 参数Tag的值(1或-1)决定移动方向。 该过程不是为了计算获得某个结果,而是进行 对控件移动的处理。 代码说明本章目录 6.2.2子过程的定义子过程定义的方法同函数过程,形式如下: Sub 子过程名[(参数列表)] 局部变量或常数定义 语句 [Exit Sub] 语句 End Sub 子过程名、形参同函数过程中对应项的规定, 当无形参时不要括号。本章目录 子过程与函数过程的区别? 把某功能定义为函数过程还是子过程,没有严格的 规定。一般若程序有一个返回值时,函数过程直观; 当有多个返回值时,习惯用子过程。 ? 函数过程必须有返回值,函数名有类型。子过程名 没有值,过程名没有类型,不能在子过程体内对子过 程名赋值。 ? 形参是过程与主调程序交互的接口,从主调程序获 得初值,或将计算结果返回给主调程序。不要将过程 中所有使用过的变量均作为形参。 ? 形参没有具体的值,只代表了参数的个数、位置、 类型;只能是简单变量、数组名,不能是常量、数组 元素、表达式。本章目录 6.2.3子过程调用子过程的调用是一句独立的调用语句,有两种 形式: Call 子过程名[(实参列表)] 子过程名 ([实参列表]) 用Call关键字时,若有实参,则实参必须用圆括 号括起,无实参圆括号省略 注意:若实参要获得子过程的返回值,则实参 只能是变量(与形参同类型的简单变量、数组名、 结构类型),不能是常量、表达式,也不能是控 件名。本章目录 6.2.3子过程调用例6.5 分别编一统计字符串S中定冠词The出现个 数的子过程和函数过程,并分别调用。 处理方法:利用InStr函数反复在字符串S找The 子串。 代码说明对同一问题定义两种过程时,只要抓住函数过程 和子过程的区别,即函数名有一个值、子过程名 无值的特点。当定义好函数过程后,要改为子过 程,只要将函数过程的返回结果作为子过程的形 参,即在子过程中增加一个参数;反之也然。本章目录 6.3 参数传递6.3.1 形参与实参 在参数传递中,一般是按位置传送,按实参的位 置次序与形参的位置次序对应传送,与参数名没 有关系。 按位置传送是最常用的参数传递方法,如在调用 标准函数时,用户根本不知道形参名,只要关心 形参的个数、类型、位置,例如Mid函数形式: Mid(字符串$,起始位%,取几位%) 调用语句:s=Mid(&This is VB.NET& ,9,2) 则s中的结果为“VB”。本章目录 6.3.2 传址与传值实参与形参的结合有传址(ByRef)和传值(ByVal) 两种方法。 ? 传址方式参数结合过程 当调用一个过程时, 它将实参的地址传递给形参。因此在被调过程体 中对形参的任何操作都变成了对相应实参的操作, 实参的值就会随过程体内对形参的改变而改变。 ? 传值方式参数结合过程 当调用一个过程时, 系统将实参的值复制给形参,实参与形参断开了 联系。在过程体内对形参的任何操作不会影响到 实参。本章目录 传址与传值ByVal 传值 传地址a实参a 1010x形参x 10 a的地址本章目录 传址与传值选用传值还是传地址一般进行如下考虑: ? 要将被调过程中的结果返回给主调程序,则 形参必须是传址方式。这时实参必须是同类型的 变量名(包括简单变量、数组名、结构类型等), 不能是常量、表达式。 ? 不希望过程修改实参的值,则应选用传值方 式,减少各过程间的关联。因为在过程体内对形 参的改变不会影响实参。 ? 形参是数组都是地址传递(可表示值传递或地 址传递)。本章目录 6.3.3 数组参数的传递例6.8如下sum子过程求数组a各元素和、并改变 数组各元素值: Function sum%(ByVal x() As Integer) Dim i% sum = 0 For i = 0 To UBound(x) sum += x(i):x(i) = 2 * x(i) Next i End Function本章目录 数组参数的传递?形参是数组 要以数组名加圆括号表示,不要 给出维数上界;多维数组,每维以逗号分隔。在 过程中通过Ubound函数确定每维的上界。 ?实参是数组 要给出数组名(不需要圆括号)。 ?当数组作为参数传递时,系统将实参数组的起 始地址传给过程,使形参数组也具有与实参数组 相同的起始地址。形参数组 实参数组135本章目录79 6.3.4 变量的作用域?块变量 在控制结构块中声明的变量,只能在 本块内有效 ?过程级变量 在一个过程内用Dim或Static语句 声明的变量,只能在本过程中使用 ?模块级变量 在模块内、任何过程外用 Dim 、 Private语句声明的变量,可被本模块的任何过程 访问 ?全局变量 在模块级用 Public语句声明的变量, 可被应用程序的任何过程或函数访问本章目录 变量的作用域例如在下面一个标准模块文件中不同级的变量声明: Public Pa As integer ' 全局变量 Private Mb As string *10 ' 窗体/模块级变量 Sub F1( ) Dim Fa As integer ' 局部变量 … End Sub Sub F2( ) Dim Fb As Single ' 局部变量 … End Sub本章目录 6.3.5 静态变量静态变量 程序运行过程中可保留变量的值 声明形式:Static 变量名 [AS 类型]用Dim声明的变量,每次调用过程时重新初始化 例6.10比较Dim和Static两者的区别。Sub Button1_Click(……) Handles Button1.Click Dim i% ,isum% For i = 1 To 5 isum = sum(i) TextBox1.Text &= &isum=& & isum & vbCrLf Next i Function sum(ByVal n As Integer) End Sub Static j As Integer j=j+n sum = j End Function本章目录 6.4 递归用自身的结构来描述自 身就称为递归。 最典型的例子是阶乘运 算,作如下的定义: 递归过程在自身定义的内部调用自己。 例6.12编fac(n)=n! 的递归函数n ?1 ?1 fac(n) ? ? ?n * fac(n ? 1) n ? 1Function fac(n As Integer) As Integer If n = 1 Then n! ? n ? ( n ? 1)! fac = 1 Else ( n ? 1)!? ( n ? 1) ? ( n ? 2)! fac = n * fac(n - 1) End If End Function本章目录 递归结构递推fac(4)=4*fac(3) fac(4)=4*6回归fac(3)=3*fac(2)fac(3)=3*2fac(2)=2*fac(1)fac(1)=1 fac(2)=2*1递推过程:每调用自身,当前参数压栈,直到达到递归结束条件。 回归过程:不断从栈中弹出当前的参数,直到栈空。 递归算法设计简单,但消耗的机时和占据的内存空间比非递归大 由此可见构成递归的结构如下: 递归结束条件及结束时的值; 能用递归形式表示,并且递归向终止条件发展。本章目录 6.5 综合应用6.5.1 数制转换 不同进制数之间的转换,可通过编程来实现;也可通过 VB.NET提供的内部函数:十进制转换为八进制函数( Oct)、转换为十六进制函数(Hex)来实现。 例6.13编一函数,实现一个十进制整数转换成二至十六 任意进制的字符。一个十进制正整数m转换成r进制数的思路:将m 不断除r取余数(若余数超过9,还要进行相应的转 换,例如10变成A,11变成B等),直到商为零, 以反序得到结果,即最后得到的余数在最高位。代码说明本章目录 综合应用-加密2.加密和解密 信息加密是信息安全性的措施之一。信息加密有 各种方法,最简单的加密方法是将每个字母平移 一个位置( 称为密钥)。例如,后移5个位置,这 时,A→F,B →G… Y →D,Z→E ,a →f ;解 密是加密的逆操作。 例6.14 编一加密和解密的程序,即将输入的一 行字符串中的所有字母加密,加密后还可再进行 解密。代码说明本章目录 综合应用-查找3.查找 利用计算机快速运算的特点,可方便地实现查找 。查找是在线性表(在此为数组)中,根据指定的 关键值,找出与其值相同的元素。一般有顺序查 找和二分法查找。顺序查找根据查找的关键值与 数组的元素逐一比较,若相同,查找成功,若找 不到,则查找失败。 例6.15实现顺序查找。代码说明 综合应用-字符处理4. 字符处理应用 例6.16 编写一个英文打字训练的程序,要求如下 (1) 在标签框内随机产生30个字母的范文; (2) 当焦点进入输入文本框时开始计时,并显示 当时的时间; (3) 当输入了 30 个字母时结束计时,禁止向文本 框输入内容,显示打字的速度和正确率。代码说明本章目录 思考题1. 为什么是要使用过程? 2. 简述子过程和函数过程的异同点? 3. 什么是形参?什么是实参?实参与形参之间 怎样传值? 4.按变量声明的位置可分为哪几种变量? 5.什么是静态变量?如何声明静态变量?本章目录 第七章7.1 7.2 7.3 7.4 7.5 7.6用户界面设计常用控件 通用对话框 菜单设计 多重窗体 鼠标和键盘 综合应用本章目录 用户界面是应用程序的一个重要组成部分, 主要负责用户与应用程序之间的交互。 System.Windows.Forms命名空间中的 类可以分为两类: ? 用户界面控件 在设计和程序运行时显示 在窗体上。例如,Label、Button控件 ?非用户界面控件 设计阶段出现在窗体下的 专用面板中,程序运行时是不可见。 例如,Timer、MainMenu控件本章目录 7.1 常用控件7.1.1 单选按钮、复选框和框架 1.单选按钮(RadioButton) 单选按钮以组的形式出现,允许选择一项。 重要属性 Text属性 按钮上显示的文本 Checked属性 表示单选按钮的状态: True ―― 被选定 False ―― 未被选定本章目录 7.1.1 单选按钮重要事件 Click事件 单击后,使Checked属性 为True CheckedChanged事件 当某个单选 按钮的状态被发生变化,该事件随之被 触发。本章目录 2.复选框(CheckBox)CheckState.Unchecked 未选定 CheckState.Checked 被选定 CheckState.Indeterminate 灰色, 并显示一个选中标记。 事件 例7.1通过单选 Click 按钮和复选框 选修课程 CheckedChanged代码说明本章目录 3.框架 (Frame)具有容器功能 先建立框架,然后将各控件放置其中。 重要属性 Text属性 框架上的标题文本 框架可以响应Click和DoubleClick事件, 但一般不需要编写事件过程。例7.2框架用法示例代码说明本章目录 7.1.2 列表框和组合框? 列表框 可显示多个选项供用户选择,不能 直接修改其中的内容。 ?组合框 组合了文本框和列表框的特性而形成 的一种控件。组合框有3种式样。本章目录 列表框和组合框重要属性(1) Items Items是一个集合ListBox1.Items(3) Items中选项的序号是从0开始的。 Items属性既可以在设计状态设置,也可以在 程序中设置或引用。本章目录 重要属性2(2) SelectedIndex 表示在程序运行时被选定的项的序号。只能在程 序中设置或引用。SelectedIndex=3如果未选中任何选项,则SelectedIndex为-1。本章目录 重要属性3(3) Items.Count 列表框或组合框中项目数量。最后一项的序号为 Items.Count-1 该属性只能在程序中设置或引用。 (4) Sorted 程序运行期间列表框或组合框的选项是否按字母 表顺序排序。如果Sorted为True,则选项按字 母表顺序显示本章目录 重要属性4(5) Text 最后一次被选定的选项的文本内容。该属性只 能在程序中设置或引用。 注意: ListBox1.Items(ListBox1.SelectedIndex)等 于ListBox1.Text。ListBox1.Items(ListBox1.SelectedIndex)ListBox1.Text本章目录 列表框和组合框常用方法(1) Items.Add 对象.Items.Add(选项) 把一个选项加入列表框或组合框 例如:ListBox1.Items.Add(&周海涛&) (2) Items. Remove 对象.Remove (选项) 从列表框或组合框中删除指定的项 例如:ListBox1.Remove (&华成&)本章目录 常用方法2(3)Items.RemoveAt 对象.RemoveAt(Index) 从列表框或组合框中删除指定的项。Index 表示被删除项目在列表框或组合框中的位 置。 例如:ListBox1.RemoveAT(4)将删除选项“华成”本章目录 常用方法3(4) Items.Clear 对象.Items.Clear 用于清除列表框或组合框的所有项目 例如:ListBox1.Items.Clear全部清除本章目录 重要事件列表框:Click、DblClick 组合框:Click 例7.3编写一个能对列表框进行项目添加、修改 和删除的应用程序。 修改列表框,先选定项 将选项显示在文本框中, 更改文本框中内容后,再 更新列表框代码说明本章目录 例例7.4设计一个应用程序。当计算机和操作系统 未被选定时,它们所在框架的其他控件不能使 用;组合框自身能够添加一个新的选项;在列 表框中显示用户所选择的配置。代码说明本章目录 7.1.3滚动条和进度条滚动条(ScrollBar)通常附在窗体上协助观察数据 或确定位置,也可作为数据输入工具。进度条 (ProgressBar)用来指示事务处理的进度。 滚动条有水平和垂直两种 进度条没有水平垂直之分本章目录 滚动条属性?Value 滑块当前位置的值(缺省为0) ?Minimum 滑块最小位置值(缺省为0) ?Maximum 滑块最大位置值(缺省为100) ?SmallChange 单击滚动条两端的箭头时, Value属性(滑块位置)改变值 ?LargeChange 单击滚动条的空白区域时, Value属性改变值本章目录 滚动条事件Scroll 当拖动滑块时触发 ValueChanged 改变Value属性时触发 例7.5计算0~18之间某个数阶乘,数据由滚动条 获得。 Maximum属性为18,Minimum属性为0, Value初始值为0, SmallChange属性为1, LargeChange属性为3。代码说明本章目录 ProgressBar控件Maximum和Minimum 设置控件的界限 Value 控件执行阶段被填充的数目,直到等于 Maximum属性值。控件显示的填充数是Value 属性与Maximum和Minimum属性之间的比值在对ProgressBar编程时,必须先确定Value属 性上限。例如,下载文件,可将Maximum设置 为文件长度。在该文件下载过程中,将Value属 性设置为文件已经下载的字节数。本章目录 例例7.6 设计一个调色板应用程序,使用三个滚 动条作为三种基本颜色的输入工具,用合成的 颜色设置文本框BackColor属性。 代码说明例7.7 用一个进度条来指示一个大数组的计算 进度。代码说明本章目录 7.1.4 定时器定时器以一定的时间间隔产生Tick事件 ? 属性 Enabled 为False时定时器不产生Tick事件 Interval 触发Tick事件的时间间隔,单位ms ? 事件 定时器控件只有一个Tick事件 产生Tick事件条件 Enabled=T Interval&0代码说明 例7.8设计一个倒计时应用程序 例7.9用一个定时器控制蝴蝶在窗体内的飞舞代码说明本章目录 7.1.5超链接LinkLabel控件可在Windows窗体上创建超链接 重要属性 (1)Text 控件上显示的文本 (2)LinkArea 用于设置控件上文本的超链接 (3)ActiveLinkColor Color结构类型,用来 设置超链接的颜色 (4)VisitedLinkColor Color结构类型,用来 设置访问过超链接的颜色本章目录 LinkLabel控件事件LinkClicked 鼠标单击发生LinkClicked事件 使用System.Diagnostics.Process.Start方法 打开指定的链接对象例7.10 访问教育部主页 System.Diagnostics.Process.Start(&http://w ww.moe.edu.cn&)本章目录 7.2 通用对话框.NET提供了一组基于Windows的标准对话框界 面。利用通用对话框控件可在窗体上创建打开文 件、保存文件、颜色、字体、打印、打印预览等 对话框。通用对话框仅用于应用程序与用户 之间进行信息交互,是输入输出的 界面,不能真正实现文件打开、文 件存储、设置颜色、字体设置、打 印等操作,如果想要实现这些功能 则需要编程实现。本章目录 7.2.1打开文件对话框由 OpenFileDialog 控件来实现 重要属性 : (1) FileName 文件名称,包含路径 (2) Filter 确定所显示文件的类型 例如:Text Files|*.txt|所有文件|*.*显示文本 文件和所有文件 (3) FilterIndex 决定文件列表框中显示第几 组类型的文件 (4) InitialDirectory 初始化路径本章目录 打开文件对话框InitialDire ctoryFileNameFilterIndexFilter本章目录 打开文件对话框例7.11编写一个应用程序,弹出打开文件对话 框,从中选择一个BMP位图文件,能在图形框 中显示该图片。代码说明例7.12编写一个简单的文本文件编辑程序代码说明本章目录 7.2.2 保存文件对话框由 SaveFileDialog 控件来实现 SaveFileDialog控件的属性与OpenFileDialog 控件基本相同,特有的属性是DefaultExt属性, 用于设置缺省的扩展名 。 例7.13 为例7.12中的另存为命令按钮编写事件 过程,把文本框内的信息存盘。本章目录 7.2.3 颜色对话框由 ColorDialog 控件来实现 重要属性Color,它返回或设置选定的颜色,属 于Color结构类型。 例7.14 为例7.12中的颜色命令按钮编写事件过 程,设置文本框的前景色。Sub Button3_Click( ……) Handles Button3.Click ColorDialog1.ShowDialog() ? 打开颜色对话框 TextBox1.ForeColor() = ColorDialog1.Color End Sub设置文件框前景颜色本章目录 7.2.4 字体对话框通过FontDialog控件来实现Font获取选择的字体 Color 选定的颜色ShowColor控制是 否有“颜色”选项例7.14 为例7.12中的字体按钮编写设置文本框字体的事件过程。 Sub Button4_Click( ……) Handles Button4.Click FontDialog1.ShowDialog() ? 打开字体对话框 TextBox1.Font = FontDialog1.Font ? 设置字体 End Sub本章目录 7.3 菜单设计7.3.1 菜单设计概述 菜单有下拉式菜单和弹出菜单(上下文菜单)。下 拉式菜单的组成结构:主菜单快捷键 菜单项子菜单名 热键 分隔线 子菜单标记本章目录 7.3.1 菜单设计概述.NET提供了MainMenu和ContextMext两个 控件,分别用来设计下拉式菜单和弹出式菜单。从这里开始设 计下拉式菜单从这里开始设 计弹出菜单本章目录 菜单设计概述菜单项除了Name、Visible、Enabled等属性之 外,还具有下列重要属性: (1) Text 菜单项上显示的标题文本 在字符前加一个&符号构成热键。例如,输入 “新建(&N)”,则菜单显示“新建(N)”,N为热键。 菜单项的分隔符,输入一个减号“-”。 (2) ShortCut 设置菜单项的快捷键。 (3) Checked 控制菜单项左边是否显示“√” 菜单项的事件Click 为菜单项编写程序本章目录 7.3.2创建主菜单例7.16 将例7.12中的命令组织成菜单。 下拉式菜单的建立过程: 1)建立控件 在窗体上放置一个MainMenu控件 2)设计菜单 3)设置菜单项的属性 4)编写菜单项的事件过程本章目录 7.3.3创建弹出菜单弹出菜单 独立于窗体菜单栏而显示在窗体内的 浮动菜单。显示位置取决于单击鼠标键时指针的 位置。 弹出菜单使用 ContextMenu 控件来设计,方 法与下拉式菜单相同。 用鼠标单击某对象时能弹出菜单,必须设置该对 象的ContextMenu属性=ContextMenu控件名 例7.17 为例7.16中的文本框配置弹出菜单本章目录 7.4 多重窗体多重窗体是指一个应用程序中有多个并列的普通 窗体,每个窗体可以有自己的界面和程序代码, 完成不同的功能。 7.4.1 添加窗体 选择“项目|添加Windows窗体”命令,在弹出 的对话框中需要选定“Windows窗体”并且确定 新窗体文件的名称。 注意:一个项目中不能有相同名称的窗体本章目录 7.4.2设置启动窗体在缺省情况下,系统默认Form1为启动窗体。 若要指定其他窗体为开始窗体,应使用“项目” 菜单中“属性”命令注意:可以指定Main子过程为启动对象,通过 该过程决定加载哪一个窗体。本章目录 7.4.3窗体的实例化和显示在多重窗体程序中,启动窗体外的其他窗体 ( 例 如Form2)的显示应使用下列语句 Dim frm2 As New Form2 frm2.Show() 或 frm2.ShowDialog() 不能用下列语句显示Form2: Form2.Show() 或 Form2.ShowDialog()必须通过代码实例化来显示,这是因为 Form2 是一个类名,不是窗体名称本章目录 7.4.4重要方法(1)Show 以非模式方法显示窗体 窗体对象.Show 非模式 程序可继续执行 (2)ShowDialog 以模式方法显示窗体 窗体对象.ShowDialog 模式 在关闭该窗体后才能对其它窗体进行操作 (3)Hide 将窗体暂时隐藏(还在内存中) [窗体对象.]Hide本章目录 7.4.4重要方法(4) Close 关闭窗体,释放内存 [窗体对象.]Close (5) Me 关键字Me代表代码所在的窗体 例如,假定建立了一个窗体 Form1 ,则在窗体 Form1及其控件的事件过程中使用语句 Me.Hide 使 Form1 窗体隐藏,语句 Me.Close 将关闭该窗 体。 若在 Form2 窗体中使用 Me.Close ,则关闭的是 窗体Form2。本章目录 不同窗体数据的存取两个窗体之间访问(假定Form1为启动窗体) (1)Form1可以访问Form2上的数据 Form1中代码的形式: Dim frm2 As New Form2 TextBox1.Text = frm2.Textbox1.text而不能采用TextBox1.Text = Form2.Textbox1.text注意:在Form2不能访问启动窗体Form1 (2)通过模块定义公共变量实现相互访问本章目录 不同窗体数据的存取模块: Module Module1 Public x As String End Module不能访问例7.18 多重窗体应用示例。输入学生五门课程 的成绩,计算总分及平均分并在不同窗体内显示。本章目录 7.5 鼠标和键盘7.5.1 鼠标 鼠标事件 需要注意事件发生在哪一个对象上 Click、DblClick事件 MouseDown 按下任意一个鼠标按钮时被触发 MouseUp 释放任意一个鼠标按钮时被触发 MouseMove 移动鼠标时被触发本章目录 鼠标鼠标事件过程中的参数e决定鼠标的当前状态。 e.X、e.Y表示当前鼠标的位置;e.Button指示按 下或释放了哪个鼠标按钮,其值的意义如下表:枚举常量MouseButtons.Left MouseButtons.Right MouseButtons.Middle MouseButtons.None 含 义 按下或释放了鼠标左键 按下或释放了鼠标右键 按下或释放了鼠标中键 没有按下鼠标按钮本章目录 鼠标例7.19 显示鼠标器指针所指的位置。例7.20 设计一个最简单的画图程序。程序运行时, 按住鼠标右键移动画圆,按住鼠标左键移动画线。本章目录 7.5.2 键盘1. KeyPress事件 只对会产生ACSII码的按键有响应 ,参数e包含 了与KeyPress事件相关的数据。 ?e.KeyChar 其值为所按键相应的ASCII码值。 例如,键盘输入小写A,e.KeyChar的值为“a”。 ?e.Handled 表示本次按键是否被处理过。若它 为真,则表示已经被处理过,否则,将传送给 Windows进行常规处理。设置e.Handled为真, 即可S略本次按键。利用这个特性可以在某些控 件中过滤掉不允许的字符。本章目录 键盘2. KeyDown事件和KeyUp事件 当焦点在某个对象时,用户按下键盘上的任一键, 便会引发该对象KeyDown事件,释放按键便触 发KeyUp事件。 参数e包含了所按键信息(及Shift、Ctrl、Alt键 的状态)。 e.KeyCode的值为操作}

我要回帖

更多关于 access窗体保存按钮 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信