logging in or signing up 16 Denise Download Post to : URL : Related Presentations : Share Add to Flag Embed Email Send to Blogs and Networks Add to Channel Uploaded from authorPOINTLite Insert YouTube videos in PowerPont slides with aS Desktop Copy embed code: (To copy code, click on the text box) Embed: URL: Thumbnail: WordPress Embed Customize Embed The presentation is successfully added In Your Favorites. Views: 821 Category: Entertainment License: All Rights Reserved Like it (0) Dislike it (0) Added: November 29, 2007 This Presentation is Public Favorites: 0 Presentation Description No description available. Comments Posting comment... Premium member Presentation Transcript Visual Basic程序设计及应用: Visual Basic程序设计及应用 主讲教师:唐大仕 dstang2000@263.net 北京大学课程有关事项: 有关事项 参考书 Visual Basic 程序设计, 唐大仕,清华大学出版社,2003 (丛书主编:卢湘鸿) Visual Basic 程序设计题解与上机指导 唐大仕,清华大学出版社,2003Slide3: 教学网站 校内:http://162.105.24.19/tds 备份:http://www.dstang.com/cf2 与唐大仕老师联系 dstang2000@263.net QQ:351116463 上机 时间星期四9-10节、地点待定课程要求: 课程要求 不迟到、不旷课 完成参考资料的阅读、练习等课后任务 按时交作业 1 序论: 1 序论 程序与语言的概念: 程序与语言的概念 为什么要学习程序设计 软件=程序+文档 程序 语言 汇编语言 asm 高级语言 c, pascal, fortran, 面向对象的语言 c++, java,vbVisual Basic简介: Visual Basic简介 一种程序设计环境 一种程序设计语言 具有广泛的用途 VB 快速入门单击右击双击: VB 快速入门 单击右击双击设计与运行: 设计与运行 界面设计 (插入对象,设其属性)(对象窗) 代码设计 (双击对象,填写代码)(代码窗) 运行 按F5(或点“启动”按钮) 示例:按钮信息示例:按钮信息: 示例:按钮信息 在程序中书写: MsgBox "Hello!" 编程提示: 要用西文标点、空格 单击“启动”按钮才会运行 单击“结束”按钮才可以进一步修改 保存: 保存 保存 窗体文件.frm 工程文件.vbp 其他辅助文件 编程提示: 文件应保存在自已的文件夹中,不要放在VB98下 下次打开这个程序,只需双击.vbp文件即可 每一个程序都要单独建一个工程 每个程序放在单独的文件夹中 交作业时,将文件夹中的所有文件压缩成一个文件编译: 编译 编译 编译就是将源程序转成可执行程序的过程 怎样编译 文件生成xxxxx.exe文件 编程提示: exe是交给最终用户的,编程者不需要它 一些典型应用: 一些典型应用 一些专题知识: 一些专题知识 自己设计一个屏幕保护程序; 自己设计一个多媒体播放器; 自己设计一个小游戏; 信息安全与密码问题; 软件工程,程序漏洞的原因; 信息管理系统; 网上信息交流,聊天,游戏的原理; 电子商务的基本构成方式; 计算机智能及其局限性; 分形图形与计算机艺术; 等等。课程目标: 课程目标 1. 程序 以Visual Basic为工具 掌握程序设计的基本概念和基本方法 具备使用程序来解决一些实际问题的能力 2. 应用 通过程序来提高Word、Excel、网页制作等常用软件的应用能力 了解病毒防护、数据加密、企业信息化、电子政务、人工智能、数字艺术等专题知识 以简明的程序来介绍,不是十分注重编程技巧技术,而是重在理解其本质。VB程序设计环境: VB程序设计环境 工程窗口 对象窗口 代码窗 属性窗 工具箱 注意区分三种状态: 注意区分三种状态 设计状态 运行状态 中断状态小结: 小结 程序、软件与语言 Visual Basic是一种高级语言 设计 界面设计 代码设计 运行 保存 编译 Visual Basic程序设计: Visual Basic程序设计 主讲教师:唐大仕 dstang2000@263.net 北京大学课程2 VB程序设计的核心概念: 2 VB程序设计的核心概念 VB中的对象: VB中的对象 属性(property) 对象的状态,用名词、形容词表示 方法 (method) 对象的动作或功能,用动词表示 事件 (event) 对象与外界的交互 属性的书写: 属性的书写 对象.属性 Command1.Caption = “xxxxx” Text1.ForeColor = vbRed Me.BackColor = RGB( 255, 0, 0 ) 注:Me表示窗体 Me.BackColor=RGB( Rnd*255, Rnd*255, Rnd*255) 注:Rnd表示随机数(范围0到1之间,不包括1) 注意用等号方法的书写: 方法的书写 对象.方法 Command1.Move 1000,500 Me.Print "Hello" 注意:属性和方法都可以智能提示 若没有提示,经常都因为写错了对象名 写错了对象名,运行时会提示“需要对象” 可以用Me.来正确地书写对象名事件的书写: 事件的书写 Private Sub 对象名_事件名( … … ) 写书代码 …… End Sub 一般不用手工书写 可直接在代码窗的顶部选择对象名及事件名 事件驱动 示例 :MouseMove事件 参见文件event_drive.frm Me.Caption = x & "," & y 注意:& 表示连接,& 前后需要一个空格 示例:事件改变属性: 示例:事件改变属性 改变字体、大小、颜色 注意: = 表示赋值 a= a+1进一步理解对象: 进一步理解对象 对象命名: 对象命名 对象名 对象名(Name)与文字(Caption/Text)不同 窗体名.控件名匈牙利命名法: 匈牙利命名法 对象命名的惯例:匈牙利命名法 前缀(表类型) + 单词(表意义) 例: btnSayHello btnOk cmdOk特殊对象名: 特殊对象名 事先定义好的对象 Me, Screen, Printer , App, Debug 注:Me表示当前窗体 Me.可省略 Me.Left = (Screen.Width- Me.Width)/2 操作技巧: Ctrl+J 快速提示 vbXxxxx F2 对象浏览 几种常用对象: 几种常用对象 按钮 CommandButton 前缀btn 标签 Label lbl 文本框 TextBox txt 图片框 PictureBox pic 注:如果要在按钮上加图片 必须首先设设Style 然后再设Picture,DownPicture 常见的属性: 常见的属性 Name ForeColor, BackColor FontSize FontName Top Left Width Height Caption/ Picture/ Text / Value Visiable Enabled默认属性: 默认属性 对象有一个默认属性(属性值) 如:Label的Caption, Text的Text 如: Text1.Text = "...." 可写为 Text1 = "...."常见的方法: 常见的方法 Move (适用于各种控件) Print (适用于窗体及图片框) Show / Hide (适用于窗体)常见的事件: 常见的事件 有关Mouse, keyboard, 有关选择,文字改变 事件驱动编程: 事件驱动编程 对象之间的相互作用 示例:两个文本框显示同样的文本 文本框的change事件 跳动的小球 Shape形状对象: Shape FillColor FillStyle Timer计时器对象: Interval Shape1.Left = Shape1.Left + Rnd*1000-500 Me.Caption = Now Form_Load事件 变色的彩灯 Shape1.FillColor 使用帮助: 使用帮助 按F1键 进入MSDN(要求安装了MSDN) 使用网络上的MSDN 进入 http://msdn.microsoft.com 选 > Library > Development Tools and Languages > Visual Studio 6.0 > Visual Basic 6.0 > 按F2键 进入对象浏览窗口 按Ctrl+J 键 进入快速提示 使用vb5的中文帮助,可从教学网上下载 网络上的资源: 网络上的资源 国内 http://www.vbgood.com/ http://www.vbaspnew.com http://vbworld.sxnw.gov.cn/ http://www.vbdak.net/ 国外 http://msdn.microsoft.com/vbasic/ http://www.vb-helper.com/ http://www.planet-source-code.com/ 使用搜索引擎 www.baidu.com www.google.com 讨论区bbs.pku.cn, bbs.tsinghua.edu.cn 上的VB讨论区 小结: 小结 Visual Basic程序设计语言 是一种面向对象的高级语言 Visual Basic程序设计环境 是一种易用的、集成化的、可视化编程环境 Visual Basic程序设计核心概念 对象:属性、方法、事件 事件驱动编程 Visual Basic程序设计: Visual Basic程序设计 主讲教师:唐大仕 dstang2000@263.net 北京大学课程3 数据与运算: 3 数据与运算 数据与运算: 数据与运算 数据:常量与变量 数据的类型 Me.Height = 3000 数值 Command1.Caption = "Press Me" 文字 Label1.Visible = False 逻辑 Me.Print Now 日期时间 不同的类型: 数据的含义不同 数据的运算不同 数据的存储方式不同 数据类型: 数据类型 类型 占字节数 整型 Integer 2 ( 范围 -32768~32767) 长整型 Long 4 单精度 Single 4 双精度 Double 8 。 数据类型(续): 数据类型(续) 逻辑型 Boolean 2 值能为 True 或 False 日期型 Date 8 字符串型 String 变体型 Variant 对象型 Object 变量: 变量 变量的含义 变量的名字 用字母、数字、下划线构成 不能用数字开头 变量的定义: 变量的定义 隐式定义 不定义而直接赋值 显式定义 使用DIM 例 Dim age As Integer Dim iCount% As Integer, salary As Double Dim studentName As String 字面常量的书写: 字面常量的书写 整数、实数 类似于数学中的写法 如 123 -45 123.45 2.3E-5 4# 十六进制 &H0027D9 长整数 1234& 日期 #9:21:30 PM# #7/21/99# 逻辑 True False 字符 "Hello" "A" "" 符号常量: 符号常量 Const PI As Double =3.14运算符: 运算符 算术运算 + - * / \ mod(取余)^(乘方) 字符串连接 & + 关系运算 > < = >= <= <> 逻辑运算 And Or Not表达式: 表达式 表达式举例:参 表达式.txt运算符的优先级: 运算符的优先级 优先级(从高到低): 算术运算 (其中 ^ */ \ +- ) 关系运算 (> = < ) 逻辑运算 (其中NotAndOr) 用圆括号 程序的基本任务: 程序的基本任务 输入处理输出 示例:圆的面积 Dim r As Double, area As Double Const Pi As Double = 3.14 r = InputBox("请输入半径") area = Pi * r * r MsgBox "半径为" & r & "的圆的面积是" & area 注意:要定义变量 示例: 示例 求解一元二次方程 用文本框来表示输入、输出 用按钮来表示命令 对象名一定要写正确 注意公式中用Sqr表平方根,注意圆括号 小结: 小结 进一步理解对象 数据类型 常量与变量 运算符 常用函数 Visual Basic程序设计: Visual Basic程序设计 主讲教师:唐大仕 dstang2000@263.net 北京大学课程4 语句与分支控制: 4 语句与分支控制 VB语言: VB语言 程序设计语言的两个重要方面: 数据 控制简单语句: 简单语句 简单语句 一句一行 多句同行 (用: ) 一句跨多行(用 _ )注释: 注释 对程序的执行没有影响 用单引号开始,直到行尾 注释的用途: 对一段程序 对一些变量 对一些算法 赋值语句 =: 赋值语句 = 示例: a=a+1 示例: 移动的小球 示例:交换两变量值 输入与输出: 输入与输出 程序的基本过程: 输入处理输出 输入输出的常见方法: 使用控件进行 输入(如TextBox) 输出(如Label) 使用InputBox, MsgBox 使用Print表示输出Print的使用: Print的使用 Print 换行 不换行(,或;) 示例:圆的面积 方法 Print, cls , 与; 示例: a *b = cIf条件语句: If条件语句 两种写法: 同一行: If 条件 Then … Else … 多行: If 条件 Then … Else … End If 示例: 示例 示例:小球移动,但不出边界 要点1:使用变量 要点2:使用If 示例:闰年 y Mod 400 = 0 Or y Mod 100 <> 0 And y Mod 4 = 0 要点1:使用Mod 要点2:使用And 及 Or 条件语句嵌套: 条件语句嵌套 条件语句的嵌套 示例:性别,年龄的判断 示例: 判断圆的半径 编程提示: 使用Tab键正确地缩进ElseIf: ElseIf 示例:分数的判断 示例:所得税的计算 Select Case: Select Case Select case 表达式 case 常量 。。。。 case 常量 。。。。 case else …. End Select 示例: 分数示例: 自动出题及判分: 示例: 自动出题及判分 If 及 Select Case的使用 变量的使用 注意,a,b,op三个变量是放到最前面的 (不在Sub内,被称为窗体级变量) 随机数的使用 Rnd Randomize 随机数初始化,一般在Form_Load中 据Rnd的数值来表示不同的字符,如+-*/ IIF函数: IIF函数 IIf(条件, 式1, 式2 ) 例如: M = IIf( a>b, a, b ) z = IIf( a<1, “小”, IIf( a=1, “等”, “大”) )小结: 小结 简单语句 输入及输出 If/ElseIf语句 Select Case语句 Visual Basic程序设计: Visual Basic程序设计 主讲教师:唐大仕 dstang2000@263.net 北京大学课程5 循环语句、绘图: 5 循环语句、绘图 三种控制结构: 三种控制结构 为什么要有循环 程序的三种控制结构 顺序 分支(选择) 循环程序流程图: 程序流程图 流程线 开始与结束 任务及子任务 输入与输出 条件判断 For语句: For语句 For v=1 To 100 Step 2 … Next 其中 Step 1可以省略 使用 For语句: 使用 For语句 示例 显示1-100 画同心圆 1+2+…+100 1*1+2*2 +...+100*100 6^3+....+69^3Do Loop: Do Loop Do While 条件 。。。 Loop 示例:角谷猜想Do 循环的几种写法: Do 循环的几种写法 Do While 条件 (或:Until条件) 。。。 Loop Do 。。。(至少执行一次循环) Loop While 条件 (或:Until条件) While 条件 。。。 Wend 循环的五要素: 循环的五要素 初始化 循环条件 循环动作 循环改变 结束后处理 理解循环: 理解循环 1变量 5要素 3典型 几种循环的比较循环出口语句: 循环出口语句 Exit For 示例: 判断质数 Exit Do 其他几个相关的语句: Exit Sub 退出此段Sub子程序 End 结束整个程序 Stop 停止执行,进入中断状态循环的嵌套: 循环的嵌套 示例 九九乘法表 画图(多张饼) 1! +2! +…. +10! 2-100以内的角谷猜想 内外循环的关系 每重循环的控制变量 控制变量间的关系循环的应用(了解): 循环的应用(了解) 数列求和: ---递推法 1! + 2! +…. + 10! 2+22+222+… Exp_sum Pi/2 Pi/4 循环的应用: 循环的应用 字符串加密绘图: 绘图 在哪里绘图: 在窗体上 如: Me.Circle (1000,1000),300 在PictureBox上 如: Picture1.Circle (1,1),1 单位及比例尺: 单位及比例尺 比例尺 .ScaleMode =vbTwips 1/1440 inch =vbPixels 像素 Scale (-50,50)-(50,-50) ScaleLeft ScaleTop ScaleWidth ScaleHeight Slide88: Scale (-50,50)-(50,-50)绘图状态: 绘图状态 CurrentX=100, CurrentY=100 ForeColor BackColor DrawWidth DrawStyle FillColor FillStyle DrawMode (决定最终颜色与当前画笔颜色、背景颜色的关系) =vbCopyPen, =vbXorPen Font FontSize, FontName, FontBold, FontItalic 绘图方法: 绘图方法 Line (x,y)-(x,y), color, BF 其中B表示画框、BF表示画填充的矩形 Circle (x,y), r, color Circle (x,y), r, color, start, end, aspect PSet (x,y), color Print "....." Cls 清屏 示例:draw_Simple_0.frm 绘图示例: 绘图示例 函数图 螺线 画极坐标图 旋转的椭圆 Form_Load中绘图,先Me.Show 小结: 小结 控制结构与流程图 For Next语句 Do Loop语句 循环出口语句 循环的嵌套 循环的应用----数列求和 Visual Basic程序设计: Visual Basic程序设计 主讲教师:唐大仕 dstang2000@263.net 北京大学课程6 过程、函数、数组: 6 过程、函数、数组 过程: 过程 学习 VB语言: 单词语句篇章 使用过程的好处 任务分解 代码重用 事件过程与普通过程: 事件过程与普通过程 事件过程 与某个对象事件相关 过程名为: 对象名_事件名 如: Sub Command1_Click() 如: Sub Form_Load() 普通过程 与事件无关 表示某项任务 过程的定义: 过程的定义 Sub 过程名(参数 As 类型,。。。) 。。。 End Sub过程的调用: 过程的调用 使用Call Call 过程名 (参数值。。。) 注意,要用括号 或省略Call 过程名 参数值,。。。 注意,不用括号 一个参数时,可用括号,也可不用 示例:sub_print100 示例:sub_delay 注:second, do loop 函数: 函数 函数也是一种子程序 是一种带返回值的过程 内建函数 已由VB定义好,可直接使用 如: CInt(), Int(), Rnd(), Now() I/O函数: I/O函数 MsgBox 有关按钮图标/有关返回值 MsgBox "hello", vbInformation InputBox 有关默认值/有关返回值 a = InputBox(" Please Input a num", , 99) 附:Enum枚举的定义 例: Enum_weekday数学函数: 数学函数 Rnd Int(Rnd * 9) + 1 注:Randomize 表示随机初始化 Sqr,Abs 平方根,绝对值 Sin, Cos 正弦、余弦(弧度作单位) Log, Exp 自然对数、指数 Int 取整(不超过它的最大整数) 示例: rnd_luckynum Rnd_投针 Sqr_triangle_area 字符串函数: 字符串函数 Len 求长度 LTrim, RTrim, Trim 去空格 UCase, LCase 大写、小写 Left, Right, Mid 左边、右边、中间 InStr 在字符串的子串位置 Asc, Chr, String 求ASCII码、转字符、重复字符日期函数: 日期函数 Date, Time, Now 当前日期、时间、 Year, Month, Day, Weekday 求年、月等 Hour, Minute, Second 求时、分、秒 转换及判断: 转换及判断 CInt, CLng, CDbl, CDate, CStr 转成相应的类型 Str, Val 转成字符串,转成数字 Hex, Oct 转成十六进制,八进制 Format Format( Now(), "hh:mm:ss" ) Format( 3.14, "#,###.000" ) IsNumeric, IsDate 是否为数字、为日期 重要函数列表: 重要函数列表 I/O: MsgBox InputBox Beep 数学: Rnd Abs Int Sqr Sin Cos Log Exp 字符串: Len LTrim RTrim Trim UCase Mid Left Right InStr Chr Asc 日期: Date Time Now Year Month Day 转换判断 CInt Val Format IsDate IsNumeric 函数的应用: 函数的应用 示例:字符串的加密 str_encrypt 附:关于密码与加密: 附:关于密码与加密 口令(password) 原则:自己易记、他人难猜、经常更改 技巧:不与自己直接相关,而是间接相关 并且不能太短,字母、数字、符号混合 在公共场合使用口令要谨慎 不能让IE记住口令 注意防护: 一些口令破解软件, 如Advanced Pdf password covery 如Rar Password Cracker, Passware 防止木马 口令使用经验谈: 口令使用经验谈 不要使用本人的生日、身份证件号码、银行账户中的前几位、后几位或姓名的拼音作为密码。 不要将密码设置为相同的数字或字母,尽量使用数字与字母的组合构成密码 不要将密码设置为有顺序的数字或字母 不要将网上银行“登录密码”和“交易密码”设置成相同的密码 在任何情况下不能将密码漏给他人,包括银行工作人员 在使用网上银行时,最好不要直接用键盘输入密码,而用“密码软键盘”输入密码 常见的安全措施—正确使用网银: 常见的安全措施—正确使用网银 常见方式“钓鱼” “钓鱼”之一:电子邮件 “钓鱼”之二:盗号木马 “钓鱼”之三:网址欺骗 防钓鱼 直接输入域名 用密码软键盘 加密交易信息 使用加密控件,使用密码U盘,使用https协议 同样,防止短信诈骗 加密技术: 加密技术 加密技术:把信息转换成一种不可读或不可理解的形式四种传统加密方法 : 四种传统加密方法 1.代码加密 2.替换加密 3.变位加密 4.一次性密码簿加密 对称密码术(单一密钥): 对称密码术(单一密钥) 加密算法:CHARACTER+3 AF计划 接收者 发送者DES算法 : DES算法 DES是对称密钥加密的算法, DES算法大致可以分成四个部分: (1)初始置换 (2)迭代过程 (3)逆置换和 (4)子密钥生成Slide116: DES加密原理示意图 非对称密码术: 非对称密码术 公共密钥 私有密钥 我 其他人RSA算法: RSA算法 RSA算法是非对称密钥加密,其算法演算过程 (1)密钥配制过程 (2)加密 (3)解密RSA举例: RSA举例 取两个质数p=11,q=13, p和q的乘积为n=p×q=143, 算出另一个数z=(p-1)×(q-1)=120; 再选取一个与z=120互质的数,例如e=7, 则公开密钥=(n,e)=(143,7)。 对于这个e值,可以算出其逆:d=103。因为e×d=7×103=721,满足e×d mod z =1;即721 mod 120=1成立。 则秘密密钥=(n,d)=(143,103)。 Slide120: 设张小姐需要发送机密信息(明文)m=85给李先生,她已经从公开媒体得到了李先生的公开密钥(n,e)=(143,7),于是她算出加密值: c= me mod n=857 mod 143=123并发送给李先生。 李先生在收到密文c=123后,利用只有他自己知道的秘密密钥计算:m= cd mod n =123103 mod 143=85,所以,李先生可以得到张小姐发给他的真正的信息m=85,实现了解密。 Slide121: RSA的安全性 就目前的计算机水平用1024位的密钥是安全的,2048位是绝对安全的。RSA实验室认为,512位的n已不够安全,应停止使用,现在的个人需要用668位的n,公司要用1024位的n,极其重要的场合应该用2048位的n。 Slide122: RSA用于身份验证和数字签名 数字签名必须保证以下3点: 接收者能够核实发送者对报文的签名。 发送者事后不能抵赖对报文的签名。 接收者不能伪造对报文的签名。 现在已有多种实现各种数字方法,但签名的采用公开密钥算法要比常规算法更容易实现。 电子签名: 电子签名 电子签名(比数字签名更广泛的概念) 注:媒体 _vir_fingerprint_F0914.avi 注:《电子签名法》 注:www.icbc.com.cn 中国工商行 usbkey客户证书 注:outlook express 电子邮件加密及签名 注:http://www.ca365.com 申请免费试用证书 保证: 信息除发送方和接收方外不被其它人窃取; 信息在传输过程中不被篡改; 发送方能够通过数字证书来确认接收方的身份; 发送方对于自己的信息不能抵赖。 密钥与密码破译方法 : 密钥与密码破译方法 (1)密钥的穷尽搜索 破译密文就是尝试所有可能的密钥组合。虽然大多数的密钥尝试都是失败的,但最终有一个密钥让破译者得到原文,这个过程称为密钥的穷尽搜索。 (2)密码分析 已知明文的破译方法 选定明文的破译方法 (3)其他方法 “窥视”或“偷窃”密钥内容;进行“垃圾分析”;等等防止密码破译的措施: 防止密码破译的措施 (1)强壮的加密算法 (2)动态会话密钥 (3)保护关键密钥函数的定义: 函数的定义 Function 函数名(参数,。。。)As 类型 。。。注意:其中有一句 : 函数名=某个值 End Function函数的调用: 函数的调用 一般用于表达式: 函数名 (参数值。。。) 用括号 示例: sub_fac_10: 求:1!+2!+……+10! 求组合数 m!/n!/(m-n)! 100以内的质数 参数的传递: 参数的传递 形参与实参 参数的传递顺序 按位置传递传值与引用: 传值与引用 传值 ByVal 传引用 ByRef (缺省为ByRef) 传引用就是传变量本身 示例 简单示例 fun_digi2Sum模块: 模块 模块 工程/添加模块 设定启动对象:工程/属性/启动对象 模块中的变量/过程 模块名.过程名 Public 与 Private 过程 过程缺省是Public的变量的作用域: 变量的作用域 作用域(可见性) 全程变量 Public 或 Global 窗体级变量 Private 或 Dim 局部变量 Dim 示例数组 : 数组 数组的概念 加上下标来决定是哪个变量 定义数组 Dim 数组名(数组大小) As 类型 使用数组 数组名(下标) For Each……Next 数组的大小: 数组的大小 下标 Dim a(100) 表示0—100共101个 Dim a( 2 to 9 ) Option Base 0 或 1 规定起始值 二维数组 dim c(10,20) Lbound(数组名) 求最小下标 Ubound(数组名) 求最大下标 数组的应用: 数组的应用 最大值与平均值 排序 筛法求素数(*) 约瑟夫问题(*) 画金刚石 体育彩票36选7 小结: 小结 过程 函数 参数传递 过程中的变量 Visual Basic程序设计: Visual Basic程序设计 主讲教师:唐大仕 dstang2000@263.net 北京大学课程7 控件: 7 控件 界面设计: 界面设计 界面设计的重要性 界面元素 控件 窗体 绘图 菜单 其他 有关控件的使用: 有关控件的使用 怎样得到控件相关的属性、方法与事件: Ctrl_J 快速提示 F1 --MSDN(如果安装了MSDN) F2 --Object Browser 可以参考其他一些资源 光盘,如:<<编程资源大全>> 书籍,如: <<VB6参考手册>> www.vb-helper.com (国外,选其中“search”) http://www.vb60.com http://music.crzz.com/vb/ http://moonsoft.com/e_commerce/soft/download/other/index7.htm 控件的一般属性: 控件的一般属性 Alignment 对齐方式 0 vbLeftJustify 1 vbRightJustify 2 vbCenter Appearance 0 1:3D AutoSize True False BackColor ForeColor RGB(r,g,b) vbRed vbGreen QBColor(Rnd * 15) 123235& &Hrrggbb& 控件的一般属性(续): 控件的一般属性(续) BorderStyle Caption Font xxx.Font.Bold = true xxx.Font.Italic = True xxx.Font.Underline = True xxx.Font.Size = 24 xxx.Font.Name = "宋体" 或 xxx.FontName = "宋体" Left Top Width Height 控件的一般属性(续): 控件的一般属性(续) MousePointer MouseIcon (当MousePointer为99时,设MouseIcon) Picture 设计时: 选择文件 (注意:当程序拷贝到其他机器时,由于图片找不到,则会出问题,所以不推荐这种方式) 粘贴图片 (这时图片信息存于.frx文件中) 运行时: xxx.Picture = LoadPicture(“xxx.jpg”) 注意,图片文件放到同一目录中,要使用扩展名(如.jpg)控件的一般属性(续): 控件的一般属性(续) ToolTipText UseUnemonic caption中用&表示下划线,如 "&Open" Visiable: True False Enabled: True False 如Timer1.Enabled = False 如Command1.Enabled = False WordWrap MultiLine CommandButton 按钮: CommandButton 按钮 Caption Style, Picture 使之为图片按钮 补充示例:PicButton.frm ToolTipText Enabled Label 标签: Label 标签 Caption ToolTipText, AutoSize, WordWrap, Alignment 0 vbLeftJustify 1 vbRightJustify 2 vbCenter 例: Label_mouse_shell_263 注:shell "程序名 参数" 表示调用外部程序TextBox 文本框: TextBox 文本框 SelStart, SelLength, SelText, Text MultiLine, ScrollBars PasswordChar "*" Locked,Enabled SetFocus方法, GotFocus, LostFocus事件 示例:text_sel_password_enter Frame 框: Frame 框 Caption BorderStyle 框: 容器 线 成组Visible CheckBox 及 OptionButton: CheckBox 及 OptionButton CheckBox 复选框 Value(1或0或2):vbChecked OptionButton 单选框 Value(True或False) 放到一个Frame 经常做成控件数组 示例:Checkbox_option.frm滚动条: 滚动条 HScrollBar, VScrollBar Max, Min, Value Shape及Line: Shape及Line Shape形状 / Line 线 Shape / x1,y1,x2,y2 BorderStyle, BorderColor BorderWidth FillStyle, FillColor, BackStyle, BackColor Timer 定时器: Timer 定时器 Timer Interval, Enabled 示例: Timer_Shape_Line_Clock.frm ListBox 及 ComboList: ListBox 及 ComboList ListBox 列表框 ComboList 组合框 '可以认为 ComboList=List + Text Style MultiSelect List(i), ListCount, ListIndex, Selected(i), SelCount AddItem, RemoveItem, Clear 方法 Combo的Text 示例: Combox_list.frm PictureBox 及 Image: PictureBox 及 Image PictureBox 可作容器,可以在上面画图 xxx.Picture = LoadPicture("XXX.jpg") Image Picture 不能作容器, 但可以Stretch Image1.Picture = LoadPicture("XXX.bmp") 示例:跳舞的小女孩 dance_girl 补充示例: PicImageHover.frm 外部控件: 外部控件 ActiveX Control(外部控件) 是已经编好的程序,可用于VB中 一般存在于 .ocx .dll文件中 加入外部控件的步骤: 1.工具箱上点右键,选Component...(组件) 从中进行选择,如: Microsoft Windows Common Control 2.从工具箱上,选控件,加入到窗体中 使用外部控件: 使用外部控件 1.属性: F4,属性窗 点右键,打开属性页 2. 方法/事件 3. 当程序复制其他机器时,要求系统中必须安装有相应的控件 例: Microsoft Windows Common Contro的ProgressBar(参见书中示例) 多控件的布局: 多控件的布局 多控件的选定与设置 对齐与大小 TabIndex(Tab顺序) 控件的成组 示例:人员信息_control.frm 小结: 小结 控件的一般属性 CommandButton, Label, TextBox Frame, CheckBox, OptionButton HScrollBar, VScrollBar ListBox, ComboBox PictureBox, Image 外部控件 Visual Basic程序设计: Visual Basic程序设计 主讲教师:唐大仕 dstang2000@263.net 北京大学课程8 窗体、菜单、工具条: 8 窗体、菜单、工具条 窗体: 窗体 Form 窗体与对话框 添加窗体 加入系统定义的窗体或对话框 特殊的事件: 特殊的事件 Resize Paint 示例: Form_Resize_Paint.frm 特殊的属性: 特殊的属性 BackColor BorderStyle WindowStatus StartupPosition MousePointer 示例:简单屏保: form_screen_save.frm 生成屏保:File/Make EXE 文件名为:xxxx.scr 然后将xxxx.scr文件复制到windows系统目录下 示例:屏保ScreenSaver (*) 多窗体: 多窗体 加入窗体: Project/Add Form 已有的窗体及对话框 加入模块: Project/Add Module (模块中可以定义变量public,定义Sub,Function) 设定程序入口: Project/Property/Startup Object 窗体的显示: 窗体的显示 当某个事件发生时(如点击某个菜单或图片) Form2.Show Me.Hide Load Form2 (注意 Load写在前面) Unload Form3 frmAbout.Show vbModal, Me '模态 模块: 模块 用于定义变量、函数、过程 Public xxxx As String Public Sub xxxxx( xxx ) Public Function xxxx(xxx) As XXXX Public Sub Main() 可作为程序入口 调用模块中的过程 可以用模块名如: Call Module1.mysub 怎样在窗体之间交流信息: 怎样在窗体之间交流信息 直接使用控件: Form2.Text1.Text = "hello" 使用模块中的变量 在模块中定义变量: Public age As Integer 在窗体1中对它赋值: age = Text1.Text 在窗体2中使用它: If age>18 Then Menu菜单: Menu菜单 进入菜单编辑器: Tools/MenuEditor(或按 Ctrl+E) 有关菜单项: 菜单名(Name) 菜单文字(Caption) 其中用 & 表示下划线(如 &Open) 用单独的减号(-)表示分隔线 快捷键 (ShorCutKey) 如 Ctrl+O 菜单的级别 (按左右箭头按钮) Checked,Enabled,Visible WindowList菜单的编程: 菜单的编程 与按钮相似 菜单上单击,对XXX_Click事件进行处理 多窗体: 多窗体 加入窗体: Project/Add Form 已有的窗体及对话框 加入模块: Project/Add Module (模块中可以定义变量public,定义Sub,Function) 设定程序入口: Project/Property/Startup Object 窗体的显示: 窗体的显示 当某个事件发生时(如点击某个菜单或图片) Form2.Show Me.Hide Load Form2 Unload Form3 frmAbout.Show vbModal, Me '模态 模块: 模块 用于定义变量、函数、过程 Public xxxx As String Public Sub xxxxx( xxx ) Public Function xxxx(xxx) As XXXX Public Sub Main() 可作为程序入口 调用模块中的过程 可以用模块名如: Call Module1.mysub 怎样在窗体之间交流信息: 怎样在窗体之间交流信息 直接使用控件: Form2.Text1.Text = "hello" 使用模块中的变量 在模块中定义变量: Public age As Integer 在窗体1中对它赋值: age = Text1.Text 在窗体2中使用它: If age>18 Then Menu菜单: Menu菜单 进入菜单编辑器: Tools/MenuEditor(或按 Ctrl+E) 有关菜单项: 菜单名(Name) 菜单文字(Caption) 其中用 & 表示下划线(如 &Open) 用单独的减号(-)表示分隔线 快捷键 ShorCutKey 如 Ctrl+O 菜单的级别 (按左右箭头按钮) Checked,Enabled,Visible WindowList菜单的编程: 菜单的编程 与按钮相似 菜单上单击,对XXX_Click事件进行处理 上下文菜单(*): 上下文菜单(*) 设计时: 使该菜单不可见 (Visiable为False) 程序中,弹出: 在MouseDown事件中, If Button=vbRightButton Then PopupMenu menu5 示例 Form_menu_simple.frm控件数组: 控件数组 控件数组: 同名的多个控件,称为控件数组 每个控件的 Index 不同 产生方法(以下方法均可): 1.复制、粘贴 2.将多个控件的名字相同 3.设Index 4.程序中 Load XXX(i)则生成一个新的 复杂示例:计算器(不讲)处理控件数组的事件: 处理控件数组的事件 在控件的事件中可以用 Index 示例:按钮数组.frm 示例:六个滚动条: line_color_grad_scroll.frm 示例:排块游戏.frm (练习使用控件数组、过程、函数) 有趣示例:雪花飘飘 snowflake 示例: 更复杂的界面 (*): 更复杂的界面 (*) SDI:单文档界面 MDI:多文档界面 使用MDI及菜单: 使用MDI及菜单 加入一个MDIForm 加入一个frmAbout 将MDIForm设为启动对象 (Project/Property/StartObject) 在MDIForm中加入菜单 (Ctrl+E) 将Form1的MDIChild置为True (F4 属性窗中设) 在Form1上加入菜单 (Ctrl+E) 使用ActiveX控件: 使用ActiveX控件 工具箱加入ActiveX控件 (工具箱上点右键,选Components) Microsoft Rich Text Box Control Microsoft Windows Common Control Microsoft Common Dialog Control 使用RichText及通用对话框: 使用RichText及通用对话框 在Form1上加入RichTextBox,命名为Rich1 在Form1上加入CommonDialog 通用对话框: 通用对话框 .showOpen .showSave .showFont .showColor .showPrint 示例:CommDialog 示例:参见WebBrowser使用ClipBoard: 使用ClipBoard GetText SetText 使用工具条: 使用工具条 在Form1上加入ToolBar 在其中加多个按钮: Buttons/InsertButton 在Form1上加入ImageList 在其中加多个图片:ImageList/InsertPicture 为工具条设图片: 在ToolBar1/ImageList中选ImageList1 然后设每一个Button的Image 为工具条编程: 其中利用Button.Index 使用状态栏: 使用状态栏 在Form1上加入StatusBar 加入多个Panel 设定Panel的类型 设定图片 对StatusBar进行编程 Statusbar1.Panel(3).Text = “…”小结: 小结 窗体:事件与属性 多窗体:加入与交互 菜单:编辑与编程小结: 小结 多控件的布局 外部控件 控件数组 MDI 菜单、通用对话框、工具栏、状态栏等 Visual Basic程序设计: Visual Basic程序设计 主讲教师:唐大仕 dstang2000@263.net 北京大学课程9 API及多媒体编程 : 9 API及多媒体编程 API的概念: API的概念 API Application Programming Interface 应用程序编程接口 Win32 API 相关资源 cf.pku.cn/tds上的资源 http://www.allapi.net/ 使用API: 使用API 声明API Private Declare Function .…Lib … Alias … 若使用Public,则必须放入模块文件中 调用 a = 函数名( 参数 ) Call 过程名( 参数 ) 函数名 参数使用API Text Viewer: 使用API Text Viewer 打开API Text View (API文本浏览器) File/Open 打开 Win32API.txt 选 Private或Public (注意:用于窗体时,只能选 Private ) 选 Declare或Constants 双击需要的函数、常数 最后Copy/Paste到VB代码中 注意:尽量不要手工书写,因为极易写错声明常数与类型: 声明常数与类型 常数 Private Const 类型 Private Type 句柄作参数 句柄Handle, 是一个数字, 代表某个对象 如 Me.hwnd 代表窗体API应用举例: API应用举例 GetTickCount Topmost WinRoundRect 设定桌面墙纸 多媒体编程: 多媒体编程 多媒体的概念 多媒体编程的基本方式 使用API 使用MCI指令 使用ActiveX控件 图像及动画: 图像及动画 常用的图像文件 .bmp/.jpg/.gif, .png 动画 使用Image或PictureBox来实现图像的切换 图像的进一步处理 使用API函数中的 BitBlt BitBlt Pd.hDC, x, y, w, h, Ps.hDC, x, y, COPY_PUT 使用VB中自带的PaintPicture方法 PaintPicture img.Picture, x,y,w,h, x,y,w,h 示例:Bitblt_PaintPicture播放声音: 播放声音 常用的声音文件 .wav .mid .midi .mp3 使用Win32 API 使用 sndPlaySound 使用 Beep(*) 使用声卡驱动程序中的API 与具体的声卡相关使用MCI指令: 使用MCI指令 MCI指令 API Private Declare Function mciSendString Lib "MMSYSTEM" (ByVal lpstrCommand As String, ByVal lpstrReturnStr As Any, ByVal wRetumLen As Integer, ByVal hCallBack As Integer) As Long 播放CD, AVI 示例:MCI_Play.frm 演示:Piano MMControl控件: MMControl控件 使用Microsoft Multimedia Control 播放CD MMControl1.DeviceType = "CDAudio" MMControl1.Command = "open" 播放wav MMControl1.DeviceType = "WaveAudio" MMControl1.FileName = " ……." MMControl1.Command = "open" Media Player控件: Media Player控件 常用的媒体文件 .avi .mpg 使用 Windows Media Player 控件 播放声音(.mid, .wav, .mp3) 播放视频(.avi, .mpg ) .FileName = “…” .Play 方法进行播放 在Media Player9以上版本,使用.URL表示文件名流式媒体: 流式媒体 流式媒体 Real 格式: .rm,.ram Microsoft 格式: .asf Real Player控件Flash动画: Flash动画 Flash动画 可以使用Sothink SWF Catcher等工具下载 在VB中使用: Shockwave Flash Control .movie=“……” .play 使用MicrosoftInternetControl: 使用MicrosoftInternetControl 加入控件Microsoft Internet Control IEWebBrowser1.Navigate 方法使用Agent及Speech(*): 使用Agent及Speech(*) Agent Speech小结: 小结 API的使用 API应用举例 多媒体编程:API, MCI, Control 图像、动画 音频 视频 Visual Basic程序设计: Visual Basic程序设计 主讲教师:唐大仕 dstang2000@263.net 北京大学课程10 程序调试、文件: 10 程序调试、文件 程序中的错误: 程序中的错误 错误的种类 语法错 逻辑错 运行错 减少错误的一般方法: Tab缩进,空格,空行,注释 变量名(匈牙利命名法) 显式定义变量,Dim,Option Explicit调试(debug): 调试(debug) 断点(breakpoint): 在行的左边单击 或 F9 跟踪(trace) F8, Shift_F8 执行到当前行(Run to cursor ) 点右键, Ctr_F8 观察(watch) 光标指向一个变量 View/Watch Window,然后点右键, Add Watch 使用立即窗口(Immediate) ?表示print 错误的捕获与处理: 错误的捕获与处理 错误的捕获 On Error Resume Next On Error Goto XXXXXX 错误的捕获 XXXXX: Err.Number Err.Description 产生错误: Err.Raise 示例:err_divby0 err_fordebug ary_prime_filter 从程序到软件: 从程序到软件 软件工程的基本概念 软件开发过程 计划 需求分析 系统设计 软件实现 确认 维护 文件的概念: 文件的概念 理解“文件” 是信息的集合 存储于一定的介质上 按名存取 文件名的表达 "E:\vb_class\Draw\mypic.bmp" "\\teacher\share\sub\file1.txt" App.Path & "\myfile.bmp" 补充:IC卡知识: 补充:IC卡知识 IC卡 身份证与校验码 参见ID15_18.frm 银行卡中的校验码 http://www.gsfzb.gov.cn/law-1/news/view.asp?id=12156 条码知识 http://www.saibon.com.cn/server/info.htm 补充:有关Bug: 补充:有关Bug Bug的产生 程序漏洞 几个例子 新建文本文件 求最大值 通用密码 手机中的更新程序 复活节彩蛋 Windows的update的重要性文件的种类: 文件的种类 在VB中按文件的存取方式,可以分为三种: 顺序文件(sequential file) 即:文本文件,不定长记录文件 随机文件(random access file) 即:定长记录文件 二进制文件(binary file) 即:所有其他文件 文件的操作: 文件的操作 文件的打开 Open 文件名 [For 方式] [Access 存取类型] As[#]文件号 FreeFile() 得到可用的文件号 读写 Line Input, Get Print, Write, Put等 EOF() 判断是否到文件尾 关闭 Close 文件号文件应用举例: 文件应用举例 文本文件(掌握) 示例: FileCopy_AddLineNum 注: On Error .... 定长记录的文件(*了解) 示例: File_Random_Student 二进制文件(*了解) 示例: File_Read_Bmp 文件及目录控件: 文件及目录控件 DriveListBox, Drive1.Drive DirListBox, Dir1.Path FileListBox File1.Path File1.FileName 示例: 图片浏览器 pic_browser 通用对话框: 通用对话框 Microsoft Common Dialog Control .ShowOpen .ShowSave .ShowFont .ShowColor .ShowPrint文件和目录管理: 文件和目录管理 FileSystem用于文件及目录的管理 FileCopy 复制文件 Kill 删除文件 MkDir 建立目录 RmDir 删除目录 GetAttr 文件及目录属性 FileLen 文件长度 FileDateTime 文件时间Dir 查找文件(*): Dir 查找文件(*) Dir(“*.txt”) 用于首次查找 在循环中,Dir() 用于其他各次查找 示例 DirFind File_Find_Recurse 小结: 小结 文件的分类及操作 文件及目录控件 程序的调试 软件工程的基本概念 Visual Basic程序设计: Visual Basic程序设计 主讲教师:唐大仕 dstang2000@263.net 北京大学课程11 数据库编程 : 11 数据库编程 本讲内容: 本讲内容 数据库基本概念 使用Data控件 使用ADO控件 使用DAO 使用ADO 基本的SQL语句数据库: 数据库 数据库(Database) 数据库管理系统( DBMS ) Oracle, Sybase, Infomix, DB2 MS SQL Server MS Access桌面数据库(*.mdb) 数据库系统的优点: 数据的共享性、独立性、完整性和冗余数据少 管理功能 数据定义/操纵/完整/安全/并发 关系型数据库(RDB): 关系型数据库(RDB) 数据表(Table)、记录(Record)、字段(Field) 字段类型 char int smallint bit float datetime image 主键: primary key 示例: 书目表: 编号(ID), 书名, 作者, 出版社, 关键字 读者表: id, 姓名, 性别, 系别, email 借阅表: 人号, 书号, 日期, 选课表: 人, 课, 成绩 2501, A03, 80 2501, A04, 83 2502, A04, 87数据库的使用: 数据库的使用 用可视化的界面 如:使用SQL Server企业管理器 通过SQL语句 如:使用SQL Server查询分析器 通过编程来操作数据库: 通过编程来操作数据库 Client/Server模式 (客户/服务模式) 数据库提供服务,称为Server 程序是客户端,称为Client 客户端通过SQL命令来向服务端发出请求 编程的任务 通过用户界面获取参数,并形成SQL语句 建立与数据库的连接 向数据库管理系统发出命令(SQL) 从数据库得到数据并显示到用户界面 数据库编程的基本技术(*): 数据库编程的基本技术(*) 基于DAO (Data Access Object) 早期的技术,主要用于MS Access 编程语言以VB,VC为主 使用方式: 通过Data控件(要添加控件:工具箱右击部件) 通过DAO对象库(要添加引用:工程菜单引用) 基于ADO (ActiveX Data Object) 应用更广,用于各种数据库 编程语言包括VB,VC,VBScript,ASP等 使用方式: 通过ADODC控件(要添加控件:工具箱右击部件) 通过ADO对象库(要添加引用:工程菜单引用)使用Data控件: 使用Data控件 Data控件: DatabaseName (选xxxx.mdb,注意Access97格式) RecordSource (选表名,或填SQL语句) Text或其他控件: DataSource (选Data1) DataField (选字段名) 示例:背单词,通讯录 还可以使用Microsoft Data Bound Grid Control: DataSource (选Data1) 使用ADODC控件(*): 使用ADODC控件(*) Microsoft ADO Data Control(ADODC)控件: Source of Connection (选xxxx.mdb,SqlServer) RecordSource (选CommandType,选表名,或填SQL语句) Text或其他控件: DataSource (选Adodc1) DataField (选字段名) Microsoft DataGrid Control: DataSource (选Adodc1)使用DAO对象(*): 使用DAO对象(*) DAO (Data Access Object) 引用DAO: Project(工程) /Reference(引用)...中,选Microsoft DAO 3.51 Object Library DAO的基本对象 Database 数据库 RecordSet 记录集(相当于表) Fields(i) 记录中的字段 Data1.RecordSet 记录集RecordSet的基本操作(*): RecordSet的基本操作(*) 移动当前记录 .MoveFirst .MoveLast .MoveNext, .MovePrevious 编辑 .Edit .Fields(i)=.... .Update .AddNew .fields(i)=.... .Update .Delete 查找 .FindFirst .FindNext使用ADO对象(*): 使用ADO对象(*) ADO (ActiveX Data Object) 引用ADO: Project(工程) /Reference(引用)...中,选Microsoft ActiveX Data Object 2.1 Library ADO中的基本对象 Connection 连接 RecordSet 记录集 Fields(i) 字段 Command Parameter(了解即可,表示命令及参数) ADO的基本操作(*): ADO的基本操作(*) 建立连接 conStr = "Driver={Microsoft Access Driver (*.mdb)};Dbq=c:\mydir\biblio.mdb;" Dim conn As ADODB.Connection Set conn = New ADODB.Connection conn.Open conStr ADO的基本操作(续) (*): ADO的基本操作(续) (*) 执行SQL Dim rs As ADODB.Recordset conn.CursorLocation = adUseClient Set rs = conn.Execute("Select * FROM [Publishers]") Set DataGrid1.DataSource = rs ADO的基本操作(续) (*): ADO的基本操作(续) (*) 显示各个字段的名字 For i = 0 To rs.Fields.Count - 1 Print rs.Fields(i).Name, Next 在数据集中遍历数据 Do While Not rs.EOF For i = 0 To rs.Fields.Count - 1 Print rs.Fields(i).Value '或直接写为rs(i) Next rs.MoveNext Loop 常用的连接方式(*): 常用的连接方式(*) 连接Access97文件 "Driver={Microsoft Access Driver (*.mdb)};Dbq=c:\mydir\biblio.mdb;" 连接Microsoft SQL Server "Driver={Sql Server}; Server=192.168.0.12;Database=pubs;Uid=sa;Pwd=tree“ 连接ODBC数据源 (较少使用, 针对其他数据库) "Dsn=biblio; Uid=sa;Pwd=tree" SQL: SQL SQL(Structured Query Language),即结构化查询语言 SQL包含数据定义、数据查询、数据操纵和数据控制等多种功能 是数据库的标准操作语言 SQL语句: SQL语句 SELECT * FROM [publishers] SELECT age, sex, salary + bonus FROM employee WHERE depart= '销售部' and title= '经理' [GROUP BY <列名> [HAVING<条件>]] [ORDER BY <列名> [ASC,DESC]] SELECT avg( salary ) FROM employeeSQL语句(续): SQL语句(续) 加入数据 INSERT INTO [employee] ( name, age ) VALUES ( '李明', 18) 更新数据 UPDATE [employee] SET salary = salary +500 删除数据 DELETE FROM [employee] WHERE age>80 创建及删除数据表 CREATE TABLE [employee] ( id integer, name char(10), age integer ) DROP TABLE [employee]应用演示: 应用演示 图书馆系统 订单管理 收支管理 图表MIS:管理信息系统: MIS:管理信息系统 办公自动化: 办公自动化 OA基本目的: OA基本目的 优化组织结构 调整管理体制 提高工作效率 增加协同办公能力 提高决策效能 系统软件架构: 系统软件架构 OA实施步骤: OA实施步骤 第一步、建立基础应用系统 建立OA信息化基础平台 建立公文流转、资产管理、档案管理等 解决事务工作的效率问题 第二步、建立协同工作系统 继续扩展应用系统,并建立网站门户 进一步加强信息共享,解决协同工作问题 全面实现数字化办公,使管理工作上一个台阶 第三步、完善知识管理系统 建立基于KM的OA系统,提高决策能力 使企业在知识的积累的基础上持续发展ERP:企业资源规划: ERP:企业资源规划 HR: HR 供应链管理SCM: 供应链管理SCM 小结: 小结 数据库基本概念 使用Data控件 使用ADO控件 使用DAO 使用ADO 基本的SQL语句 Visual Basic程序设计: Visual Basic程序设计 主讲教师:唐大仕 dstang2000@263.net 北京大学课程12 网络编程及其他应用(*) : 12 网络编程及其他应用(*) 网络浏览及文件传输: 网络浏览及文件传输 网络浏览Browser 加入Microsoft Internet Control 使用WebBrowser1. Navigate "http://……“ “工程/添加窗体/Web浏览窗体” 文件传输FTP 加入Microsoft Internet Transfer Control b() = Inet1.OpenURL("ftp://…", icByteArray) Open "C:\aaa.htm" For Binary Access Write As #1 Put #1, , b() Close #1 Microsoft Winsock控件: Microsoft Winsock控件 Winsock服务端 .LocalPort = 2000 .Listen .Accept Winsock客户端 .RemoteHost = " 127.0.0.1 " .RemotePort = 2000 .Connect 数据传送 .GetData .SendData OLE: OLE OLE:对象链接与嵌入 OLE容器控件 OLE1.CreateEmbed "c:\myfile.doc " OLE1.CreateLink "c:\myfile.doc" OLE自动化 Set xls = GetObject("c:\myfile.xls") xls.Sheets(1).cells(3, 3).Value = 1200 xls.Sheets(1).cells(3, 5).formula = "=r3c3+r3c4"VBA: VBA VBA: Visual Basic For Application 在各种Office软件中使用 工具/宏/Visual Basic编辑器 宏:Sub 示例:加行号的宏 宏病毒用VB建立ActiveX控件: 用VB建立ActiveX控件 VB的其他应用程序 建立ActiveX控件 属性Public Property 读 Public Property Get 写 Public Property Let 方法 Public Sub 事件 Public Event 调用事件 RaiseEvent 测试ActiveX控件 VB应用程序的发行: VB应用程序的发行 使用“打包及发行向导”ASP技术 : ASP技术 VBScript: VBScript VBScript 变量没有类型 在网页中使用VBScript <script language=vbscript>……</script> 在ASP(动态服务端网页)中使用VBScript <% …………%> 示例:使用ADO, 显示数据库内容 在QQ中使用电子商务 : 电子商务 SQL Injection与安全: SQL Injection与安全 Visual Basic程序设计: Visual Basic程序设计 主讲教师:唐大仕 dstang2000@263.net 北京大学课程13 常用算法: 13 常用算法 算法: 算法 指令的有限序列 特点: 有穷性 确定性 可行性 遍试: 遍试 逻辑上:针对所有可能的情况, 形式上: For 中用 If 示例:1.韩信点兵,百鸡问题,鸡兔同笼问题 2.水仙花数 13+53+33=153 3. 完全数 28=1+2+4+7+14 4.百分币 5. 佩尔方程 5.验证猜想:哥德巴赫猜想迭代: 迭代 逻辑上:多次使用同一算法 形式上:a = f( a ) 示例:1.求平方根 2. Mandelbrot集,Julia集 3. 倍边法求Pi 4. 数字平方和递归: 递归 逻辑上:一个问题化为同样的问题 形式上:自己调用自己 示例:1.求阶乘 2.菲波那契数列 3. Celay树, Koch分形集小结: 小结 数组: 定义与下标 遍试: for中用if 迭代: for中n=f(n) 递归: f(n)中用f(n-1) Visual Basic程序设计: Visual Basic程序设计 主讲教师:唐大仕 dstang2000@263.net 北京大学课程复习 : 复习 复习内容: 复习内容 第1部分 VB基础 第1-2章 第2部分 VB语言 第3-6章 第3部分 VB界面 第7-8章 第4部分 VB应用 第9-16章(较少)第1部分 VB基础: 第1部分 VB基础 第1-2章程序设计的概念: 程序设计的概念 程序设计语言 语言的分类 Visual Basic在各种语言中的地位 程序设计的基本方面 从编写的内容看:界面与代码 从程序的本质看:数据与控制 程序设计与软件工程VB程序设计的基本步骤: VB程序设计的基本步骤 界面设计 代码编写 运行/编译VB中的核心概念: VB中的核心概念 对象 属性 (property) 方法 (method) 事件 (event) 事件驱动第2部分 VB语言: 第2部分 VB语言 第3-6章数据与运算: 数据与运算 数据:常量与变量 数据的类型 Integer, Single, Double, Boolean, String, Date, Variant 变量与常量: 变量与常量 变量 隐式定义 显式定义 Dim, Public, Global, Private, Static 合法的变量名 A1 S_N 常量 字面常量 12, 12.3, 2.3e-8, "Hello", #2008-12-30# 符号常量 Const PI As Double = 3.14运算符: 运算符 算术运算符 + - * / \ mod(取余) ^(乘方) 字符串连接 & + 关系运算 > < = >= <= <> 逻辑运算 And Or Not 运算的优先级控制结构: 控制结构 程序的三种控制结构 顺序 分支 循环语句: 语句 简单语句 分支控制语句 If ElseIf Select Case 循环控制语句 For…Next Do While…Loop While 与 Until 条件语句的应用: 语句的应用 分支的嵌套 循环的嵌套 For I=1 to 9 For J=1 To I Next Next 循环的五要素 递推法数列求和 For n=1 To 10 f = f * n s = s + f Next 过程: 过程 过程的定义 Sub 过程名(参数……) …… End Sub 过程的调用 Call 过程名 (参数值……) 用括号 过程名 参数值…… 不用括号函数: 函数 函数的定义 Function 函数名(参数……)As 类型 其 中有一句 :函数名=某个值 End Function 函数的调用 函数名 (参数值…..) 用括号,且用于表达式中 函数名 参数值…… 后一种用法中,将函数作为Sub使用,不理会其返回值 过程中的几个概念: 过程中的几个概念 传值与传址(ByVal, ByRef) 变量的作用域 全程 Public 局部 于窗体, Private( Dim ) 局部于过程内 Dim 变量的生存期 static常用函数: 常用函数 I/O: MsgBox InputBox 数学: Rnd Abs Int Sqr Sin Cos Log Exp 字符串: Len LTrim RTrim Trim UCase LCase Mid Left Right InStr Chr Asc 日期:Date Time Now Year Month Day Hour Minute Second 转换判断 CInt CLng CDbl Val Format IsDate IsNumeric 数组 : 数组 定义数组 Dim 数组名(数组大小) As 类型 数组元素的个数 使用数组常用算法: 常用算法 遍试: 逻辑上:针对所有可能的情况, 形式上: For…Next 中用 IF 迭代 逻辑上:多次使用同一算法 形式上:Do…Loop中用a = f( a ) 递归 逻辑上:一个问题化为同样的问题 形式上:自己调用自己 : F(n)中调用F(n-1)第3部分 界面: 第3部分 界面 第7-11章控件: 控件 常用控件的属性、方法、事件 控件的典型应用 外部控件(ActiveX控件)的使用 控件数组绘图: 绘图 坐标系 绘图状态 绘图方法窗体与菜单: 窗体与菜单 窗体的属性、方法与事件 多窗体 窗体的显示 窗体间的信息交互 菜单图片、动画: 图片、动画 Picture/Image LoadPicture第4部分 VB的应用: 第4部分 VB的应用 第12-16章文件与数据库: 文件与数据库 文本文件 打开、读写、关闭 数据库 基本概念 SQL语句 Data控件(DAO技术) ADO技术程序中的错误: 程序中的错误 错误的种类 语法错 逻辑错 运行错 调试 断点 跟踪 监视 错误的捕获与处理 On Error GoTo xxxxx API: API API的声明与调用 Declare 调用多媒体及网络编程: 多媒体及网络编程 API, ActiveXControl 音频/视频的播放 网络浏览 网络编程: 网络编程 高层网络编程 Browser、FTP 低层网络编程 Winsock重点: 重点 VB语言 运算、各种语句、数组、过程与函数 VB常用函数 VB常用算法 包括一些应用 VB常用控件 注:笔试中第9-16章(VB应用)内容很少难点: 难点 循环 循环的五要素 循环的嵌套 数列求和 遍试算法 数组 过程与函数 变量的作用域 参数的传递有关考试: 有关考试 考试内容 考试形式 选择、填空、编程、问答等题型 每种题型占20%-40%Thanks: Thanks 祝同学们 学习愉快,学有所获,学有所成! You do not have the permission to view this presentation. In order to view it, please contact the author of the presentation.
16 Denise Download Post to : URL : Related Presentations : Share Add to Flag Embed Email Send to Blogs and Networks Add to Channel Uploaded from authorPOINTLite Insert YouTube videos in PowerPont slides with aS Desktop Copy embed code: (To copy code, click on the text box) Embed: URL: Thumbnail: WordPress Embed Customize Embed The presentation is successfully added In Your Favorites. Views: 821 Category: Entertainment License: All Rights Reserved Like it (0) Dislike it (0) Added: November 29, 2007 This Presentation is Public Favorites: 0 Presentation Description No description available. Comments Posting comment... Premium member Presentation Transcript Visual Basic程序设计及应用: Visual Basic程序设计及应用 主讲教师:唐大仕 dstang2000@263.net 北京大学课程有关事项: 有关事项 参考书 Visual Basic 程序设计, 唐大仕,清华大学出版社,2003 (丛书主编:卢湘鸿) Visual Basic 程序设计题解与上机指导 唐大仕,清华大学出版社,2003Slide3: 教学网站 校内:http://162.105.24.19/tds 备份:http://www.dstang.com/cf2 与唐大仕老师联系 dstang2000@263.net QQ:351116463 上机 时间星期四9-10节、地点待定课程要求: 课程要求 不迟到、不旷课 完成参考资料的阅读、练习等课后任务 按时交作业 1 序论: 1 序论 程序与语言的概念: 程序与语言的概念 为什么要学习程序设计 软件=程序+文档 程序 语言 汇编语言 asm 高级语言 c, pascal, fortran, 面向对象的语言 c++, java,vbVisual Basic简介: Visual Basic简介 一种程序设计环境 一种程序设计语言 具有广泛的用途 VB 快速入门单击右击双击: VB 快速入门 单击右击双击设计与运行: 设计与运行 界面设计 (插入对象,设其属性)(对象窗) 代码设计 (双击对象,填写代码)(代码窗) 运行 按F5(或点“启动”按钮) 示例:按钮信息示例:按钮信息: 示例:按钮信息 在程序中书写: MsgBox "Hello!" 编程提示: 要用西文标点、空格 单击“启动”按钮才会运行 单击“结束”按钮才可以进一步修改 保存: 保存 保存 窗体文件.frm 工程文件.vbp 其他辅助文件 编程提示: 文件应保存在自已的文件夹中,不要放在VB98下 下次打开这个程序,只需双击.vbp文件即可 每一个程序都要单独建一个工程 每个程序放在单独的文件夹中 交作业时,将文件夹中的所有文件压缩成一个文件编译: 编译 编译 编译就是将源程序转成可执行程序的过程 怎样编译 文件生成xxxxx.exe文件 编程提示: exe是交给最终用户的,编程者不需要它 一些典型应用: 一些典型应用 一些专题知识: 一些专题知识 自己设计一个屏幕保护程序; 自己设计一个多媒体播放器; 自己设计一个小游戏; 信息安全与密码问题; 软件工程,程序漏洞的原因; 信息管理系统; 网上信息交流,聊天,游戏的原理; 电子商务的基本构成方式; 计算机智能及其局限性; 分形图形与计算机艺术; 等等。课程目标: 课程目标 1. 程序 以Visual Basic为工具 掌握程序设计的基本概念和基本方法 具备使用程序来解决一些实际问题的能力 2. 应用 通过程序来提高Word、Excel、网页制作等常用软件的应用能力 了解病毒防护、数据加密、企业信息化、电子政务、人工智能、数字艺术等专题知识 以简明的程序来介绍,不是十分注重编程技巧技术,而是重在理解其本质。VB程序设计环境: VB程序设计环境 工程窗口 对象窗口 代码窗 属性窗 工具箱 注意区分三种状态: 注意区分三种状态 设计状态 运行状态 中断状态小结: 小结 程序、软件与语言 Visual Basic是一种高级语言 设计 界面设计 代码设计 运行 保存 编译 Visual Basic程序设计: Visual Basic程序设计 主讲教师:唐大仕 dstang2000@263.net 北京大学课程2 VB程序设计的核心概念: 2 VB程序设计的核心概念 VB中的对象: VB中的对象 属性(property) 对象的状态,用名词、形容词表示 方法 (method) 对象的动作或功能,用动词表示 事件 (event) 对象与外界的交互 属性的书写: 属性的书写 对象.属性 Command1.Caption = “xxxxx” Text1.ForeColor = vbRed Me.BackColor = RGB( 255, 0, 0 ) 注:Me表示窗体 Me.BackColor=RGB( Rnd*255, Rnd*255, Rnd*255) 注:Rnd表示随机数(范围0到1之间,不包括1) 注意用等号方法的书写: 方法的书写 对象.方法 Command1.Move 1000,500 Me.Print "Hello" 注意:属性和方法都可以智能提示 若没有提示,经常都因为写错了对象名 写错了对象名,运行时会提示“需要对象” 可以用Me.来正确地书写对象名事件的书写: 事件的书写 Private Sub 对象名_事件名( … … ) 写书代码 …… End Sub 一般不用手工书写 可直接在代码窗的顶部选择对象名及事件名 事件驱动 示例 :MouseMove事件 参见文件event_drive.frm Me.Caption = x & "," & y 注意:& 表示连接,& 前后需要一个空格 示例:事件改变属性: 示例:事件改变属性 改变字体、大小、颜色 注意: = 表示赋值 a= a+1进一步理解对象: 进一步理解对象 对象命名: 对象命名 对象名 对象名(Name)与文字(Caption/Text)不同 窗体名.控件名匈牙利命名法: 匈牙利命名法 对象命名的惯例:匈牙利命名法 前缀(表类型) + 单词(表意义) 例: btnSayHello btnOk cmdOk特殊对象名: 特殊对象名 事先定义好的对象 Me, Screen, Printer , App, Debug 注:Me表示当前窗体 Me.可省略 Me.Left = (Screen.Width- Me.Width)/2 操作技巧: Ctrl+J 快速提示 vbXxxxx F2 对象浏览 几种常用对象: 几种常用对象 按钮 CommandButton 前缀btn 标签 Label lbl 文本框 TextBox txt 图片框 PictureBox pic 注:如果要在按钮上加图片 必须首先设设Style 然后再设Picture,DownPicture 常见的属性: 常见的属性 Name ForeColor, BackColor FontSize FontName Top Left Width Height Caption/ Picture/ Text / Value Visiable Enabled默认属性: 默认属性 对象有一个默认属性(属性值) 如:Label的Caption, Text的Text 如: Text1.Text = "...." 可写为 Text1 = "...."常见的方法: 常见的方法 Move (适用于各种控件) Print (适用于窗体及图片框) Show / Hide (适用于窗体)常见的事件: 常见的事件 有关Mouse, keyboard, 有关选择,文字改变 事件驱动编程: 事件驱动编程 对象之间的相互作用 示例:两个文本框显示同样的文本 文本框的change事件 跳动的小球 Shape形状对象: Shape FillColor FillStyle Timer计时器对象: Interval Shape1.Left = Shape1.Left + Rnd*1000-500 Me.Caption = Now Form_Load事件 变色的彩灯 Shape1.FillColor 使用帮助: 使用帮助 按F1键 进入MSDN(要求安装了MSDN) 使用网络上的MSDN 进入 http://msdn.microsoft.com 选 > Library > Development Tools and Languages > Visual Studio 6.0 > Visual Basic 6.0 > 按F2键 进入对象浏览窗口 按Ctrl+J 键 进入快速提示 使用vb5的中文帮助,可从教学网上下载 网络上的资源: 网络上的资源 国内 http://www.vbgood.com/ http://www.vbaspnew.com http://vbworld.sxnw.gov.cn/ http://www.vbdak.net/ 国外 http://msdn.microsoft.com/vbasic/ http://www.vb-helper.com/ http://www.planet-source-code.com/ 使用搜索引擎 www.baidu.com www.google.com 讨论区bbs.pku.cn, bbs.tsinghua.edu.cn 上的VB讨论区 小结: 小结 Visual Basic程序设计语言 是一种面向对象的高级语言 Visual Basic程序设计环境 是一种易用的、集成化的、可视化编程环境 Visual Basic程序设计核心概念 对象:属性、方法、事件 事件驱动编程 Visual Basic程序设计: Visual Basic程序设计 主讲教师:唐大仕 dstang2000@263.net 北京大学课程3 数据与运算: 3 数据与运算 数据与运算: 数据与运算 数据:常量与变量 数据的类型 Me.Height = 3000 数值 Command1.Caption = "Press Me" 文字 Label1.Visible = False 逻辑 Me.Print Now 日期时间 不同的类型: 数据的含义不同 数据的运算不同 数据的存储方式不同 数据类型: 数据类型 类型 占字节数 整型 Integer 2 ( 范围 -32768~32767) 长整型 Long 4 单精度 Single 4 双精度 Double 8 。 数据类型(续): 数据类型(续) 逻辑型 Boolean 2 值能为 True 或 False 日期型 Date 8 字符串型 String 变体型 Variant 对象型 Object 变量: 变量 变量的含义 变量的名字 用字母、数字、下划线构成 不能用数字开头 变量的定义: 变量的定义 隐式定义 不定义而直接赋值 显式定义 使用DIM 例 Dim age As Integer Dim iCount% As Integer, salary As Double Dim studentName As String 字面常量的书写: 字面常量的书写 整数、实数 类似于数学中的写法 如 123 -45 123.45 2.3E-5 4# 十六进制 &H0027D9 长整数 1234& 日期 #9:21:30 PM# #7/21/99# 逻辑 True False 字符 "Hello" "A" "" 符号常量: 符号常量 Const PI As Double =3.14运算符: 运算符 算术运算 + - * / \ mod(取余)^(乘方) 字符串连接 & + 关系运算 > < = >= <= <> 逻辑运算 And Or Not表达式: 表达式 表达式举例:参 表达式.txt运算符的优先级: 运算符的优先级 优先级(从高到低): 算术运算 (其中 ^ */ \ +- ) 关系运算 (> = < ) 逻辑运算 (其中NotAndOr) 用圆括号 程序的基本任务: 程序的基本任务 输入处理输出 示例:圆的面积 Dim r As Double, area As Double Const Pi As Double = 3.14 r = InputBox("请输入半径") area = Pi * r * r MsgBox "半径为" & r & "的圆的面积是" & area 注意:要定义变量 示例: 示例 求解一元二次方程 用文本框来表示输入、输出 用按钮来表示命令 对象名一定要写正确 注意公式中用Sqr表平方根,注意圆括号 小结: 小结 进一步理解对象 数据类型 常量与变量 运算符 常用函数 Visual Basic程序设计: Visual Basic程序设计 主讲教师:唐大仕 dstang2000@263.net 北京大学课程4 语句与分支控制: 4 语句与分支控制 VB语言: VB语言 程序设计语言的两个重要方面: 数据 控制简单语句: 简单语句 简单语句 一句一行 多句同行 (用: ) 一句跨多行(用 _ )注释: 注释 对程序的执行没有影响 用单引号开始,直到行尾 注释的用途: 对一段程序 对一些变量 对一些算法 赋值语句 =: 赋值语句 = 示例: a=a+1 示例: 移动的小球 示例:交换两变量值 输入与输出: 输入与输出 程序的基本过程: 输入处理输出 输入输出的常见方法: 使用控件进行 输入(如TextBox) 输出(如Label) 使用InputBox, MsgBox 使用Print表示输出Print的使用: Print的使用 Print 换行 不换行(,或;) 示例:圆的面积 方法 Print, cls , 与; 示例: a *b = cIf条件语句: If条件语句 两种写法: 同一行: If 条件 Then … Else … 多行: If 条件 Then … Else … End If 示例: 示例 示例:小球移动,但不出边界 要点1:使用变量 要点2:使用If 示例:闰年 y Mod 400 = 0 Or y Mod 100 <> 0 And y Mod 4 = 0 要点1:使用Mod 要点2:使用And 及 Or 条件语句嵌套: 条件语句嵌套 条件语句的嵌套 示例:性别,年龄的判断 示例: 判断圆的半径 编程提示: 使用Tab键正确地缩进ElseIf: ElseIf 示例:分数的判断 示例:所得税的计算 Select Case: Select Case Select case 表达式 case 常量 。。。。 case 常量 。。。。 case else …. End Select 示例: 分数示例: 自动出题及判分: 示例: 自动出题及判分 If 及 Select Case的使用 变量的使用 注意,a,b,op三个变量是放到最前面的 (不在Sub内,被称为窗体级变量) 随机数的使用 Rnd Randomize 随机数初始化,一般在Form_Load中 据Rnd的数值来表示不同的字符,如+-*/ IIF函数: IIF函数 IIf(条件, 式1, 式2 ) 例如: M = IIf( a>b, a, b ) z = IIf( a<1, “小”, IIf( a=1, “等”, “大”) )小结: 小结 简单语句 输入及输出 If/ElseIf语句 Select Case语句 Visual Basic程序设计: Visual Basic程序设计 主讲教师:唐大仕 dstang2000@263.net 北京大学课程5 循环语句、绘图: 5 循环语句、绘图 三种控制结构: 三种控制结构 为什么要有循环 程序的三种控制结构 顺序 分支(选择) 循环程序流程图: 程序流程图 流程线 开始与结束 任务及子任务 输入与输出 条件判断 For语句: For语句 For v=1 To 100 Step 2 … Next 其中 Step 1可以省略 使用 For语句: 使用 For语句 示例 显示1-100 画同心圆 1+2+…+100 1*1+2*2 +...+100*100 6^3+....+69^3Do Loop: Do Loop Do While 条件 。。。 Loop 示例:角谷猜想Do 循环的几种写法: Do 循环的几种写法 Do While 条件 (或:Until条件) 。。。 Loop Do 。。。(至少执行一次循环) Loop While 条件 (或:Until条件) While 条件 。。。 Wend 循环的五要素: 循环的五要素 初始化 循环条件 循环动作 循环改变 结束后处理 理解循环: 理解循环 1变量 5要素 3典型 几种循环的比较循环出口语句: 循环出口语句 Exit For 示例: 判断质数 Exit Do 其他几个相关的语句: Exit Sub 退出此段Sub子程序 End 结束整个程序 Stop 停止执行,进入中断状态循环的嵌套: 循环的嵌套 示例 九九乘法表 画图(多张饼) 1! +2! +…. +10! 2-100以内的角谷猜想 内外循环的关系 每重循环的控制变量 控制变量间的关系循环的应用(了解): 循环的应用(了解) 数列求和: ---递推法 1! + 2! +…. + 10! 2+22+222+… Exp_sum Pi/2 Pi/4 循环的应用: 循环的应用 字符串加密绘图: 绘图 在哪里绘图: 在窗体上 如: Me.Circle (1000,1000),300 在PictureBox上 如: Picture1.Circle (1,1),1 单位及比例尺: 单位及比例尺 比例尺 .ScaleMode =vbTwips 1/1440 inch =vbPixels 像素 Scale (-50,50)-(50,-50) ScaleLeft ScaleTop ScaleWidth ScaleHeight Slide88: Scale (-50,50)-(50,-50)绘图状态: 绘图状态 CurrentX=100, CurrentY=100 ForeColor BackColor DrawWidth DrawStyle FillColor FillStyle DrawMode (决定最终颜色与当前画笔颜色、背景颜色的关系) =vbCopyPen, =vbXorPen Font FontSize, FontName, FontBold, FontItalic 绘图方法: 绘图方法 Line (x,y)-(x,y), color, BF 其中B表示画框、BF表示画填充的矩形 Circle (x,y), r, color Circle (x,y), r, color, start, end, aspect PSet (x,y), color Print "....." Cls 清屏 示例:draw_Simple_0.frm 绘图示例: 绘图示例 函数图 螺线 画极坐标图 旋转的椭圆 Form_Load中绘图,先Me.Show 小结: 小结 控制结构与流程图 For Next语句 Do Loop语句 循环出口语句 循环的嵌套 循环的应用----数列求和 Visual Basic程序设计: Visual Basic程序设计 主讲教师:唐大仕 dstang2000@263.net 北京大学课程6 过程、函数、数组: 6 过程、函数、数组 过程: 过程 学习 VB语言: 单词语句篇章 使用过程的好处 任务分解 代码重用 事件过程与普通过程: 事件过程与普通过程 事件过程 与某个对象事件相关 过程名为: 对象名_事件名 如: Sub Command1_Click() 如: Sub Form_Load() 普通过程 与事件无关 表示某项任务 过程的定义: 过程的定义 Sub 过程名(参数 As 类型,。。。) 。。。 End Sub过程的调用: 过程的调用 使用Call Call 过程名 (参数值。。。) 注意,要用括号 或省略Call 过程名 参数值,。。。 注意,不用括号 一个参数时,可用括号,也可不用 示例:sub_print100 示例:sub_delay 注:second, do loop 函数: 函数 函数也是一种子程序 是一种带返回值的过程 内建函数 已由VB定义好,可直接使用 如: CInt(), Int(), Rnd(), Now() I/O函数: I/O函数 MsgBox 有关按钮图标/有关返回值 MsgBox "hello", vbInformation InputBox 有关默认值/有关返回值 a = InputBox(" Please Input a num", , 99) 附:Enum枚举的定义 例: Enum_weekday数学函数: 数学函数 Rnd Int(Rnd * 9) + 1 注:Randomize 表示随机初始化 Sqr,Abs 平方根,绝对值 Sin, Cos 正弦、余弦(弧度作单位) Log, Exp 自然对数、指数 Int 取整(不超过它的最大整数) 示例: rnd_luckynum Rnd_投针 Sqr_triangle_area 字符串函数: 字符串函数 Len 求长度 LTrim, RTrim, Trim 去空格 UCase, LCase 大写、小写 Left, Right, Mid 左边、右边、中间 InStr 在字符串的子串位置 Asc, Chr, String 求ASCII码、转字符、重复字符日期函数: 日期函数 Date, Time, Now 当前日期、时间、 Year, Month, Day, Weekday 求年、月等 Hour, Minute, Second 求时、分、秒 转换及判断: 转换及判断 CInt, CLng, CDbl, CDate, CStr 转成相应的类型 Str, Val 转成字符串,转成数字 Hex, Oct 转成十六进制,八进制 Format Format( Now(), "hh:mm:ss" ) Format( 3.14, "#,###.000" ) IsNumeric, IsDate 是否为数字、为日期 重要函数列表: 重要函数列表 I/O: MsgBox InputBox Beep 数学: Rnd Abs Int Sqr Sin Cos Log Exp 字符串: Len LTrim RTrim Trim UCase Mid Left Right InStr Chr Asc 日期: Date Time Now Year Month Day 转换判断 CInt Val Format IsDate IsNumeric 函数的应用: 函数的应用 示例:字符串的加密 str_encrypt 附:关于密码与加密: 附:关于密码与加密 口令(password) 原则:自己易记、他人难猜、经常更改 技巧:不与自己直接相关,而是间接相关 并且不能太短,字母、数字、符号混合 在公共场合使用口令要谨慎 不能让IE记住口令 注意防护: 一些口令破解软件, 如Advanced Pdf password covery 如Rar Password Cracker, Passware 防止木马 口令使用经验谈: 口令使用经验谈 不要使用本人的生日、身份证件号码、银行账户中的前几位、后几位或姓名的拼音作为密码。 不要将密码设置为相同的数字或字母,尽量使用数字与字母的组合构成密码 不要将密码设置为有顺序的数字或字母 不要将网上银行“登录密码”和“交易密码”设置成相同的密码 在任何情况下不能将密码漏给他人,包括银行工作人员 在使用网上银行时,最好不要直接用键盘输入密码,而用“密码软键盘”输入密码 常见的安全措施—正确使用网银: 常见的安全措施—正确使用网银 常见方式“钓鱼” “钓鱼”之一:电子邮件 “钓鱼”之二:盗号木马 “钓鱼”之三:网址欺骗 防钓鱼 直接输入域名 用密码软键盘 加密交易信息 使用加密控件,使用密码U盘,使用https协议 同样,防止短信诈骗 加密技术: 加密技术 加密技术:把信息转换成一种不可读或不可理解的形式四种传统加密方法 : 四种传统加密方法 1.代码加密 2.替换加密 3.变位加密 4.一次性密码簿加密 对称密码术(单一密钥): 对称密码术(单一密钥) 加密算法:CHARACTER+3 AF计划 接收者 发送者DES算法 : DES算法 DES是对称密钥加密的算法, DES算法大致可以分成四个部分: (1)初始置换 (2)迭代过程 (3)逆置换和 (4)子密钥生成Slide116: DES加密原理示意图 非对称密码术: 非对称密码术 公共密钥 私有密钥 我 其他人RSA算法: RSA算法 RSA算法是非对称密钥加密,其算法演算过程 (1)密钥配制过程 (2)加密 (3)解密RSA举例: RSA举例 取两个质数p=11,q=13, p和q的乘积为n=p×q=143, 算出另一个数z=(p-1)×(q-1)=120; 再选取一个与z=120互质的数,例如e=7, 则公开密钥=(n,e)=(143,7)。 对于这个e值,可以算出其逆:d=103。因为e×d=7×103=721,满足e×d mod z =1;即721 mod 120=1成立。 则秘密密钥=(n,d)=(143,103)。 Slide120: 设张小姐需要发送机密信息(明文)m=85给李先生,她已经从公开媒体得到了李先生的公开密钥(n,e)=(143,7),于是她算出加密值: c= me mod n=857 mod 143=123并发送给李先生。 李先生在收到密文c=123后,利用只有他自己知道的秘密密钥计算:m= cd mod n =123103 mod 143=85,所以,李先生可以得到张小姐发给他的真正的信息m=85,实现了解密。 Slide121: RSA的安全性 就目前的计算机水平用1024位的密钥是安全的,2048位是绝对安全的。RSA实验室认为,512位的n已不够安全,应停止使用,现在的个人需要用668位的n,公司要用1024位的n,极其重要的场合应该用2048位的n。 Slide122: RSA用于身份验证和数字签名 数字签名必须保证以下3点: 接收者能够核实发送者对报文的签名。 发送者事后不能抵赖对报文的签名。 接收者不能伪造对报文的签名。 现在已有多种实现各种数字方法,但签名的采用公开密钥算法要比常规算法更容易实现。 电子签名: 电子签名 电子签名(比数字签名更广泛的概念) 注:媒体 _vir_fingerprint_F0914.avi 注:《电子签名法》 注:www.icbc.com.cn 中国工商行 usbkey客户证书 注:outlook express 电子邮件加密及签名 注:http://www.ca365.com 申请免费试用证书 保证: 信息除发送方和接收方外不被其它人窃取; 信息在传输过程中不被篡改; 发送方能够通过数字证书来确认接收方的身份; 发送方对于自己的信息不能抵赖。 密钥与密码破译方法 : 密钥与密码破译方法 (1)密钥的穷尽搜索 破译密文就是尝试所有可能的密钥组合。虽然大多数的密钥尝试都是失败的,但最终有一个密钥让破译者得到原文,这个过程称为密钥的穷尽搜索。 (2)密码分析 已知明文的破译方法 选定明文的破译方法 (3)其他方法 “窥视”或“偷窃”密钥内容;进行“垃圾分析”;等等防止密码破译的措施: 防止密码破译的措施 (1)强壮的加密算法 (2)动态会话密钥 (3)保护关键密钥函数的定义: 函数的定义 Function 函数名(参数,。。。)As 类型 。。。注意:其中有一句 : 函数名=某个值 End Function函数的调用: 函数的调用 一般用于表达式: 函数名 (参数值。。。) 用括号 示例: sub_fac_10: 求:1!+2!+……+10! 求组合数 m!/n!/(m-n)! 100以内的质数 参数的传递: 参数的传递 形参与实参 参数的传递顺序 按位置传递传值与引用: 传值与引用 传值 ByVal 传引用 ByRef (缺省为ByRef) 传引用就是传变量本身 示例 简单示例 fun_digi2Sum模块: 模块 模块 工程/添加模块 设定启动对象:工程/属性/启动对象 模块中的变量/过程 模块名.过程名 Public 与 Private 过程 过程缺省是Public的变量的作用域: 变量的作用域 作用域(可见性) 全程变量 Public 或 Global 窗体级变量 Private 或 Dim 局部变量 Dim 示例数组 : 数组 数组的概念 加上下标来决定是哪个变量 定义数组 Dim 数组名(数组大小) As 类型 使用数组 数组名(下标) For Each……Next 数组的大小: 数组的大小 下标 Dim a(100) 表示0—100共101个 Dim a( 2 to 9 ) Option Base 0 或 1 规定起始值 二维数组 dim c(10,20) Lbound(数组名) 求最小下标 Ubound(数组名) 求最大下标 数组的应用: 数组的应用 最大值与平均值 排序 筛法求素数(*) 约瑟夫问题(*) 画金刚石 体育彩票36选7 小结: 小结 过程 函数 参数传递 过程中的变量 Visual Basic程序设计: Visual Basic程序设计 主讲教师:唐大仕 dstang2000@263.net 北京大学课程7 控件: 7 控件 界面设计: 界面设计 界面设计的重要性 界面元素 控件 窗体 绘图 菜单 其他 有关控件的使用: 有关控件的使用 怎样得到控件相关的属性、方法与事件: Ctrl_J 快速提示 F1 --MSDN(如果安装了MSDN) F2 --Object Browser 可以参考其他一些资源 光盘,如:<<编程资源大全>> 书籍,如: <<VB6参考手册>> www.vb-helper.com (国外,选其中“search”) http://www.vb60.com http://music.crzz.com/vb/ http://moonsoft.com/e_commerce/soft/download/other/index7.htm 控件的一般属性: 控件的一般属性 Alignment 对齐方式 0 vbLeftJustify 1 vbRightJustify 2 vbCenter Appearance 0 1:3D AutoSize True False BackColor ForeColor RGB(r,g,b) vbRed vbGreen QBColor(Rnd * 15) 123235& &Hrrggbb& 控件的一般属性(续): 控件的一般属性(续) BorderStyle Caption Font xxx.Font.Bold = true xxx.Font.Italic = True xxx.Font.Underline = True xxx.Font.Size = 24 xxx.Font.Name = "宋体" 或 xxx.FontName = "宋体" Left Top Width Height 控件的一般属性(续): 控件的一般属性(续) MousePointer MouseIcon (当MousePointer为99时,设MouseIcon) Picture 设计时: 选择文件 (注意:当程序拷贝到其他机器时,由于图片找不到,则会出问题,所以不推荐这种方式) 粘贴图片 (这时图片信息存于.frx文件中) 运行时: xxx.Picture = LoadPicture(“xxx.jpg”) 注意,图片文件放到同一目录中,要使用扩展名(如.jpg)控件的一般属性(续): 控件的一般属性(续) ToolTipText UseUnemonic caption中用&表示下划线,如 "&Open" Visiable: True False Enabled: True False 如Timer1.Enabled = False 如Command1.Enabled = False WordWrap MultiLine CommandButton 按钮: CommandButton 按钮 Caption Style, Picture 使之为图片按钮 补充示例:PicButton.frm ToolTipText Enabled Label 标签: Label 标签 Caption ToolTipText, AutoSize, WordWrap, Alignment 0 vbLeftJustify 1 vbRightJustify 2 vbCenter 例: Label_mouse_shell_263 注:shell "程序名 参数" 表示调用外部程序TextBox 文本框: TextBox 文本框 SelStart, SelLength, SelText, Text MultiLine, ScrollBars PasswordChar "*" Locked,Enabled SetFocus方法, GotFocus, LostFocus事件 示例:text_sel_password_enter Frame 框: Frame 框 Caption BorderStyle 框: 容器 线 成组Visible CheckBox 及 OptionButton: CheckBox 及 OptionButton CheckBox 复选框 Value(1或0或2):vbChecked OptionButton 单选框 Value(True或False) 放到一个Frame 经常做成控件数组 示例:Checkbox_option.frm滚动条: 滚动条 HScrollBar, VScrollBar Max, Min, Value Shape及Line: Shape及Line Shape形状 / Line 线 Shape / x1,y1,x2,y2 BorderStyle, BorderColor BorderWidth FillStyle, FillColor, BackStyle, BackColor Timer 定时器: Timer 定时器 Timer Interval, Enabled 示例: Timer_Shape_Line_Clock.frm ListBox 及 ComboList: ListBox 及 ComboList ListBox 列表框 ComboList 组合框 '可以认为 ComboList=List + Text Style MultiSelect List(i), ListCount, ListIndex, Selected(i), SelCount AddItem, RemoveItem, Clear 方法 Combo的Text 示例: Combox_list.frm PictureBox 及 Image: PictureBox 及 Image PictureBox 可作容器,可以在上面画图 xxx.Picture = LoadPicture("XXX.jpg") Image Picture 不能作容器, 但可以Stretch Image1.Picture = LoadPicture("XXX.bmp") 示例:跳舞的小女孩 dance_girl 补充示例: PicImageHover.frm 外部控件: 外部控件 ActiveX Control(外部控件) 是已经编好的程序,可用于VB中 一般存在于 .ocx .dll文件中 加入外部控件的步骤: 1.工具箱上点右键,选Component...(组件) 从中进行选择,如: Microsoft Windows Common Control 2.从工具箱上,选控件,加入到窗体中 使用外部控件: 使用外部控件 1.属性: F4,属性窗 点右键,打开属性页 2. 方法/事件 3. 当程序复制其他机器时,要求系统中必须安装有相应的控件 例: Microsoft Windows Common Contro的ProgressBar(参见书中示例) 多控件的布局: 多控件的布局 多控件的选定与设置 对齐与大小 TabIndex(Tab顺序) 控件的成组 示例:人员信息_control.frm 小结: 小结 控件的一般属性 CommandButton, Label, TextBox Frame, CheckBox, OptionButton HScrollBar, VScrollBar ListBox, ComboBox PictureBox, Image 外部控件 Visual Basic程序设计: Visual Basic程序设计 主讲教师:唐大仕 dstang2000@263.net 北京大学课程8 窗体、菜单、工具条: 8 窗体、菜单、工具条 窗体: 窗体 Form 窗体与对话框 添加窗体 加入系统定义的窗体或对话框 特殊的事件: 特殊的事件 Resize Paint 示例: Form_Resize_Paint.frm 特殊的属性: 特殊的属性 BackColor BorderStyle WindowStatus StartupPosition MousePointer 示例:简单屏保: form_screen_save.frm 生成屏保:File/Make EXE 文件名为:xxxx.scr 然后将xxxx.scr文件复制到windows系统目录下 示例:屏保ScreenSaver (*) 多窗体: 多窗体 加入窗体: Project/Add Form 已有的窗体及对话框 加入模块: Project/Add Module (模块中可以定义变量public,定义Sub,Function) 设定程序入口: Project/Property/Startup Object 窗体的显示: 窗体的显示 当某个事件发生时(如点击某个菜单或图片) Form2.Show Me.Hide Load Form2 (注意 Load写在前面) Unload Form3 frmAbout.Show vbModal, Me '模态 模块: 模块 用于定义变量、函数、过程 Public xxxx As String Public Sub xxxxx( xxx ) Public Function xxxx(xxx) As XXXX Public Sub Main() 可作为程序入口 调用模块中的过程 可以用模块名如: Call Module1.mysub 怎样在窗体之间交流信息: 怎样在窗体之间交流信息 直接使用控件: Form2.Text1.Text = "hello" 使用模块中的变量 在模块中定义变量: Public age As Integer 在窗体1中对它赋值: age = Text1.Text 在窗体2中使用它: If age>18 Then Menu菜单: Menu菜单 进入菜单编辑器: Tools/MenuEditor(或按 Ctrl+E) 有关菜单项: 菜单名(Name) 菜单文字(Caption) 其中用 & 表示下划线(如 &Open) 用单独的减号(-)表示分隔线 快捷键 (ShorCutKey) 如 Ctrl+O 菜单的级别 (按左右箭头按钮) Checked,Enabled,Visible WindowList菜单的编程: 菜单的编程 与按钮相似 菜单上单击,对XXX_Click事件进行处理 多窗体: 多窗体 加入窗体: Project/Add Form 已有的窗体及对话框 加入模块: Project/Add Module (模块中可以定义变量public,定义Sub,Function) 设定程序入口: Project/Property/Startup Object 窗体的显示: 窗体的显示 当某个事件发生时(如点击某个菜单或图片) Form2.Show Me.Hide Load Form2 Unload Form3 frmAbout.Show vbModal, Me '模态 模块: 模块 用于定义变量、函数、过程 Public xxxx As String Public Sub xxxxx( xxx ) Public Function xxxx(xxx) As XXXX Public Sub Main() 可作为程序入口 调用模块中的过程 可以用模块名如: Call Module1.mysub 怎样在窗体之间交流信息: 怎样在窗体之间交流信息 直接使用控件: Form2.Text1.Text = "hello" 使用模块中的变量 在模块中定义变量: Public age As Integer 在窗体1中对它赋值: age = Text1.Text 在窗体2中使用它: If age>18 Then Menu菜单: Menu菜单 进入菜单编辑器: Tools/MenuEditor(或按 Ctrl+E) 有关菜单项: 菜单名(Name) 菜单文字(Caption) 其中用 & 表示下划线(如 &Open) 用单独的减号(-)表示分隔线 快捷键 ShorCutKey 如 Ctrl+O 菜单的级别 (按左右箭头按钮) Checked,Enabled,Visible WindowList菜单的编程: 菜单的编程 与按钮相似 菜单上单击,对XXX_Click事件进行处理 上下文菜单(*): 上下文菜单(*) 设计时: 使该菜单不可见 (Visiable为False) 程序中,弹出: 在MouseDown事件中, If Button=vbRightButton Then PopupMenu menu5 示例 Form_menu_simple.frm控件数组: 控件数组 控件数组: 同名的多个控件,称为控件数组 每个控件的 Index 不同 产生方法(以下方法均可): 1.复制、粘贴 2.将多个控件的名字相同 3.设Index 4.程序中 Load XXX(i)则生成一个新的 复杂示例:计算器(不讲)处理控件数组的事件: 处理控件数组的事件 在控件的事件中可以用 Index 示例:按钮数组.frm 示例:六个滚动条: line_color_grad_scroll.frm 示例:排块游戏.frm (练习使用控件数组、过程、函数) 有趣示例:雪花飘飘 snowflake 示例: 更复杂的界面 (*): 更复杂的界面 (*) SDI:单文档界面 MDI:多文档界面 使用MDI及菜单: 使用MDI及菜单 加入一个MDIForm 加入一个frmAbout 将MDIForm设为启动对象 (Project/Property/StartObject) 在MDIForm中加入菜单 (Ctrl+E) 将Form1的MDIChild置为True (F4 属性窗中设) 在Form1上加入菜单 (Ctrl+E) 使用ActiveX控件: 使用ActiveX控件 工具箱加入ActiveX控件 (工具箱上点右键,选Components) Microsoft Rich Text Box Control Microsoft Windows Common Control Microsoft Common Dialog Control 使用RichText及通用对话框: 使用RichText及通用对话框 在Form1上加入RichTextBox,命名为Rich1 在Form1上加入CommonDialog 通用对话框: 通用对话框 .showOpen .showSave .showFont .showColor .showPrint 示例:CommDialog 示例:参见WebBrowser使用ClipBoard: 使用ClipBoard GetText SetText 使用工具条: 使用工具条 在Form1上加入ToolBar 在其中加多个按钮: Buttons/InsertButton 在Form1上加入ImageList 在其中加多个图片:ImageList/InsertPicture 为工具条设图片: 在ToolBar1/ImageList中选ImageList1 然后设每一个Button的Image 为工具条编程: 其中利用Button.Index 使用状态栏: 使用状态栏 在Form1上加入StatusBar 加入多个Panel 设定Panel的类型 设定图片 对StatusBar进行编程 Statusbar1.Panel(3).Text = “…”小结: 小结 窗体:事件与属性 多窗体:加入与交互 菜单:编辑与编程小结: 小结 多控件的布局 外部控件 控件数组 MDI 菜单、通用对话框、工具栏、状态栏等 Visual Basic程序设计: Visual Basic程序设计 主讲教师:唐大仕 dstang2000@263.net 北京大学课程9 API及多媒体编程 : 9 API及多媒体编程 API的概念: API的概念 API Application Programming Interface 应用程序编程接口 Win32 API 相关资源 cf.pku.cn/tds上的资源 http://www.allapi.net/ 使用API: 使用API 声明API Private Declare Function .…Lib … Alias … 若使用Public,则必须放入模块文件中 调用 a = 函数名( 参数 ) Call 过程名( 参数 ) 函数名 参数使用API Text Viewer: 使用API Text Viewer 打开API Text View (API文本浏览器) File/Open 打开 Win32API.txt 选 Private或Public (注意:用于窗体时,只能选 Private ) 选 Declare或Constants 双击需要的函数、常数 最后Copy/Paste到VB代码中 注意:尽量不要手工书写,因为极易写错声明常数与类型: 声明常数与类型 常数 Private Const 类型 Private Type 句柄作参数 句柄Handle, 是一个数字, 代表某个对象 如 Me.hwnd 代表窗体API应用举例: API应用举例 GetTickCount Topmost WinRoundRect 设定桌面墙纸 多媒体编程: 多媒体编程 多媒体的概念 多媒体编程的基本方式 使用API 使用MCI指令 使用ActiveX控件 图像及动画: 图像及动画 常用的图像文件 .bmp/.jpg/.gif, .png 动画 使用Image或PictureBox来实现图像的切换 图像的进一步处理 使用API函数中的 BitBlt BitBlt Pd.hDC, x, y, w, h, Ps.hDC, x, y, COPY_PUT 使用VB中自带的PaintPicture方法 PaintPicture img.Picture, x,y,w,h, x,y,w,h 示例:Bitblt_PaintPicture播放声音: 播放声音 常用的声音文件 .wav .mid .midi .mp3 使用Win32 API 使用 sndPlaySound 使用 Beep(*) 使用声卡驱动程序中的API 与具体的声卡相关使用MCI指令: 使用MCI指令 MCI指令 API Private Declare Function mciSendString Lib "MMSYSTEM" (ByVal lpstrCommand As String, ByVal lpstrReturnStr As Any, ByVal wRetumLen As Integer, ByVal hCallBack As Integer) As Long 播放CD, AVI 示例:MCI_Play.frm 演示:Piano MMControl控件: MMControl控件 使用Microsoft Multimedia Control 播放CD MMControl1.DeviceType = "CDAudio" MMControl1.Command = "open" 播放wav MMControl1.DeviceType = "WaveAudio" MMControl1.FileName = " ……." MMControl1.Command = "open" Media Player控件: Media Player控件 常用的媒体文件 .avi .mpg 使用 Windows Media Player 控件 播放声音(.mid, .wav, .mp3) 播放视频(.avi, .mpg ) .FileName = “…” .Play 方法进行播放 在Media Player9以上版本,使用.URL表示文件名流式媒体: 流式媒体 流式媒体 Real 格式: .rm,.ram Microsoft 格式: .asf Real Player控件Flash动画: Flash动画 Flash动画 可以使用Sothink SWF Catcher等工具下载 在VB中使用: Shockwave Flash Control .movie=“……” .play 使用MicrosoftInternetControl: 使用MicrosoftInternetControl 加入控件Microsoft Internet Control IEWebBrowser1.Navigate 方法使用Agent及Speech(*): 使用Agent及Speech(*) Agent Speech小结: 小结 API的使用 API应用举例 多媒体编程:API, MCI, Control 图像、动画 音频 视频 Visual Basic程序设计: Visual Basic程序设计 主讲教师:唐大仕 dstang2000@263.net 北京大学课程10 程序调试、文件: 10 程序调试、文件 程序中的错误: 程序中的错误 错误的种类 语法错 逻辑错 运行错 减少错误的一般方法: Tab缩进,空格,空行,注释 变量名(匈牙利命名法) 显式定义变量,Dim,Option Explicit调试(debug): 调试(debug) 断点(breakpoint): 在行的左边单击 或 F9 跟踪(trace) F8, Shift_F8 执行到当前行(Run to cursor ) 点右键, Ctr_F8 观察(watch) 光标指向一个变量 View/Watch Window,然后点右键, Add Watch 使用立即窗口(Immediate) ?表示print 错误的捕获与处理: 错误的捕获与处理 错误的捕获 On Error Resume Next On Error Goto XXXXXX 错误的捕获 XXXXX: Err.Number Err.Description 产生错误: Err.Raise 示例:err_divby0 err_fordebug ary_prime_filter 从程序到软件: 从程序到软件 软件工程的基本概念 软件开发过程 计划 需求分析 系统设计 软件实现 确认 维护 文件的概念: 文件的概念 理解“文件” 是信息的集合 存储于一定的介质上 按名存取 文件名的表达 "E:\vb_class\Draw\mypic.bmp" "\\teacher\share\sub\file1.txt" App.Path & "\myfile.bmp" 补充:IC卡知识: 补充:IC卡知识 IC卡 身份证与校验码 参见ID15_18.frm 银行卡中的校验码 http://www.gsfzb.gov.cn/law-1/news/view.asp?id=12156 条码知识 http://www.saibon.com.cn/server/info.htm 补充:有关Bug: 补充:有关Bug Bug的产生 程序漏洞 几个例子 新建文本文件 求最大值 通用密码 手机中的更新程序 复活节彩蛋 Windows的update的重要性文件的种类: 文件的种类 在VB中按文件的存取方式,可以分为三种: 顺序文件(sequential file) 即:文本文件,不定长记录文件 随机文件(random access file) 即:定长记录文件 二进制文件(binary file) 即:所有其他文件 文件的操作: 文件的操作 文件的打开 Open 文件名 [For 方式] [Access 存取类型] As[#]文件号 FreeFile() 得到可用的文件号 读写 Line Input, Get Print, Write, Put等 EOF() 判断是否到文件尾 关闭 Close 文件号文件应用举例: 文件应用举例 文本文件(掌握) 示例: FileCopy_AddLineNum 注: On Error .... 定长记录的文件(*了解) 示例: File_Random_Student 二进制文件(*了解) 示例: File_Read_Bmp 文件及目录控件: 文件及目录控件 DriveListBox, Drive1.Drive DirListBox, Dir1.Path FileListBox File1.Path File1.FileName 示例: 图片浏览器 pic_browser 通用对话框: 通用对话框 Microsoft Common Dialog Control .ShowOpen .ShowSave .ShowFont .ShowColor .ShowPrint文件和目录管理: 文件和目录管理 FileSystem用于文件及目录的管理 FileCopy 复制文件 Kill 删除文件 MkDir 建立目录 RmDir 删除目录 GetAttr 文件及目录属性 FileLen 文件长度 FileDateTime 文件时间Dir 查找文件(*): Dir 查找文件(*) Dir(“*.txt”) 用于首次查找 在循环中,Dir() 用于其他各次查找 示例 DirFind File_Find_Recurse 小结: 小结 文件的分类及操作 文件及目录控件 程序的调试 软件工程的基本概念 Visual Basic程序设计: Visual Basic程序设计 主讲教师:唐大仕 dstang2000@263.net 北京大学课程11 数据库编程 : 11 数据库编程 本讲内容: 本讲内容 数据库基本概念 使用Data控件 使用ADO控件 使用DAO 使用ADO 基本的SQL语句数据库: 数据库 数据库(Database) 数据库管理系统( DBMS ) Oracle, Sybase, Infomix, DB2 MS SQL Server MS Access桌面数据库(*.mdb) 数据库系统的优点: 数据的共享性、独立性、完整性和冗余数据少 管理功能 数据定义/操纵/完整/安全/并发 关系型数据库(RDB): 关系型数据库(RDB) 数据表(Table)、记录(Record)、字段(Field) 字段类型 char int smallint bit float datetime image 主键: primary key 示例: 书目表: 编号(ID), 书名, 作者, 出版社, 关键字 读者表: id, 姓名, 性别, 系别, email 借阅表: 人号, 书号, 日期, 选课表: 人, 课, 成绩 2501, A03, 80 2501, A04, 83 2502, A04, 87数据库的使用: 数据库的使用 用可视化的界面 如:使用SQL Server企业管理器 通过SQL语句 如:使用SQL Server查询分析器 通过编程来操作数据库: 通过编程来操作数据库 Client/Server模式 (客户/服务模式) 数据库提供服务,称为Server 程序是客户端,称为Client 客户端通过SQL命令来向服务端发出请求 编程的任务 通过用户界面获取参数,并形成SQL语句 建立与数据库的连接 向数据库管理系统发出命令(SQL) 从数据库得到数据并显示到用户界面 数据库编程的基本技术(*): 数据库编程的基本技术(*) 基于DAO (Data Access Object) 早期的技术,主要用于MS Access 编程语言以VB,VC为主 使用方式: 通过Data控件(要添加控件:工具箱右击部件) 通过DAO对象库(要添加引用:工程菜单引用) 基于ADO (ActiveX Data Object) 应用更广,用于各种数据库 编程语言包括VB,VC,VBScript,ASP等 使用方式: 通过ADODC控件(要添加控件:工具箱右击部件) 通过ADO对象库(要添加引用:工程菜单引用)使用Data控件: 使用Data控件 Data控件: DatabaseName (选xxxx.mdb,注意Access97格式) RecordSource (选表名,或填SQL语句) Text或其他控件: DataSource (选Data1) DataField (选字段名) 示例:背单词,通讯录 还可以使用Microsoft Data Bound Grid Control: DataSource (选Data1) 使用ADODC控件(*): 使用ADODC控件(*) Microsoft ADO Data Control(ADODC)控件: Source of Connection (选xxxx.mdb,SqlServer) RecordSource (选CommandType,选表名,或填SQL语句) Text或其他控件: DataSource (选Adodc1) DataField (选字段名) Microsoft DataGrid Control: DataSource (选Adodc1)使用DAO对象(*): 使用DAO对象(*) DAO (Data Access Object) 引用DAO: Project(工程) /Reference(引用)...中,选Microsoft DAO 3.51 Object Library DAO的基本对象 Database 数据库 RecordSet 记录集(相当于表) Fields(i) 记录中的字段 Data1.RecordSet 记录集RecordSet的基本操作(*): RecordSet的基本操作(*) 移动当前记录 .MoveFirst .MoveLast .MoveNext, .MovePrevious 编辑 .Edit .Fields(i)=.... .Update .AddNew .fields(i)=.... .Update .Delete 查找 .FindFirst .FindNext使用ADO对象(*): 使用ADO对象(*) ADO (ActiveX Data Object) 引用ADO: Project(工程) /Reference(引用)...中,选Microsoft ActiveX Data Object 2.1 Library ADO中的基本对象 Connection 连接 RecordSet 记录集 Fields(i) 字段 Command Parameter(了解即可,表示命令及参数) ADO的基本操作(*): ADO的基本操作(*) 建立连接 conStr = "Driver={Microsoft Access Driver (*.mdb)};Dbq=c:\mydir\biblio.mdb;" Dim conn As ADODB.Connection Set conn = New ADODB.Connection conn.Open conStr ADO的基本操作(续) (*): ADO的基本操作(续) (*) 执行SQL Dim rs As ADODB.Recordset conn.CursorLocation = adUseClient Set rs = conn.Execute("Select * FROM [Publishers]") Set DataGrid1.DataSource = rs ADO的基本操作(续) (*): ADO的基本操作(续) (*) 显示各个字段的名字 For i = 0 To rs.Fields.Count - 1 Print rs.Fields(i).Name, Next 在数据集中遍历数据 Do While Not rs.EOF For i = 0 To rs.Fields.Count - 1 Print rs.Fields(i).Value '或直接写为rs(i) Next rs.MoveNext Loop 常用的连接方式(*): 常用的连接方式(*) 连接Access97文件 "Driver={Microsoft Access Driver (*.mdb)};Dbq=c:\mydir\biblio.mdb;" 连接Microsoft SQL Server "Driver={Sql Server}; Server=192.168.0.12;Database=pubs;Uid=sa;Pwd=tree“ 连接ODBC数据源 (较少使用, 针对其他数据库) "Dsn=biblio; Uid=sa;Pwd=tree" SQL: SQL SQL(Structured Query Language),即结构化查询语言 SQL包含数据定义、数据查询、数据操纵和数据控制等多种功能 是数据库的标准操作语言 SQL语句: SQL语句 SELECT * FROM [publishers] SELECT age, sex, salary + bonus FROM employee WHERE depart= '销售部' and title= '经理' [GROUP BY <列名> [HAVING<条件>]] [ORDER BY <列名> [ASC,DESC]] SELECT avg( salary ) FROM employeeSQL语句(续): SQL语句(续) 加入数据 INSERT INTO [employee] ( name, age ) VALUES ( '李明', 18) 更新数据 UPDATE [employee] SET salary = salary +500 删除数据 DELETE FROM [employee] WHERE age>80 创建及删除数据表 CREATE TABLE [employee] ( id integer, name char(10), age integer ) DROP TABLE [employee]应用演示: 应用演示 图书馆系统 订单管理 收支管理 图表MIS:管理信息系统: MIS:管理信息系统 办公自动化: 办公自动化 OA基本目的: OA基本目的 优化组织结构 调整管理体制 提高工作效率 增加协同办公能力 提高决策效能 系统软件架构: 系统软件架构 OA实施步骤: OA实施步骤 第一步、建立基础应用系统 建立OA信息化基础平台 建立公文流转、资产管理、档案管理等 解决事务工作的效率问题 第二步、建立协同工作系统 继续扩展应用系统,并建立网站门户 进一步加强信息共享,解决协同工作问题 全面实现数字化办公,使管理工作上一个台阶 第三步、完善知识管理系统 建立基于KM的OA系统,提高决策能力 使企业在知识的积累的基础上持续发展ERP:企业资源规划: ERP:企业资源规划 HR: HR 供应链管理SCM: 供应链管理SCM 小结: 小结 数据库基本概念 使用Data控件 使用ADO控件 使用DAO 使用ADO 基本的SQL语句 Visual Basic程序设计: Visual Basic程序设计 主讲教师:唐大仕 dstang2000@263.net 北京大学课程12 网络编程及其他应用(*) : 12 网络编程及其他应用(*) 网络浏览及文件传输: 网络浏览及文件传输 网络浏览Browser 加入Microsoft Internet Control 使用WebBrowser1. Navigate "http://……“ “工程/添加窗体/Web浏览窗体” 文件传输FTP 加入Microsoft Internet Transfer Control b() = Inet1.OpenURL("ftp://…", icByteArray) Open "C:\aaa.htm" For Binary Access Write As #1 Put #1, , b() Close #1 Microsoft Winsock控件: Microsoft Winsock控件 Winsock服务端 .LocalPort = 2000 .Listen .Accept Winsock客户端 .RemoteHost = " 127.0.0.1 " .RemotePort = 2000 .Connect 数据传送 .GetData .SendData OLE: OLE OLE:对象链接与嵌入 OLE容器控件 OLE1.CreateEmbed "c:\myfile.doc " OLE1.CreateLink "c:\myfile.doc" OLE自动化 Set xls = GetObject("c:\myfile.xls") xls.Sheets(1).cells(3, 3).Value = 1200 xls.Sheets(1).cells(3, 5).formula = "=r3c3+r3c4"VBA: VBA VBA: Visual Basic For Application 在各种Office软件中使用 工具/宏/Visual Basic编辑器 宏:Sub 示例:加行号的宏 宏病毒用VB建立ActiveX控件: 用VB建立ActiveX控件 VB的其他应用程序 建立ActiveX控件 属性Public Property 读 Public Property Get 写 Public Property Let 方法 Public Sub 事件 Public Event 调用事件 RaiseEvent 测试ActiveX控件 VB应用程序的发行: VB应用程序的发行 使用“打包及发行向导”ASP技术 : ASP技术 VBScript: VBScript VBScript 变量没有类型 在网页中使用VBScript <script language=vbscript>……</script> 在ASP(动态服务端网页)中使用VBScript <% …………%> 示例:使用ADO, 显示数据库内容 在QQ中使用电子商务 : 电子商务 SQL Injection与安全: SQL Injection与安全 Visual Basic程序设计: Visual Basic程序设计 主讲教师:唐大仕 dstang2000@263.net 北京大学课程13 常用算法: 13 常用算法 算法: 算法 指令的有限序列 特点: 有穷性 确定性 可行性 遍试: 遍试 逻辑上:针对所有可能的情况, 形式上: For 中用 If 示例:1.韩信点兵,百鸡问题,鸡兔同笼问题 2.水仙花数 13+53+33=153 3. 完全数 28=1+2+4+7+14 4.百分币 5. 佩尔方程 5.验证猜想:哥德巴赫猜想迭代: 迭代 逻辑上:多次使用同一算法 形式上:a = f( a ) 示例:1.求平方根 2. Mandelbrot集,Julia集 3. 倍边法求Pi 4. 数字平方和递归: 递归 逻辑上:一个问题化为同样的问题 形式上:自己调用自己 示例:1.求阶乘 2.菲波那契数列 3. Celay树, Koch分形集小结: 小结 数组: 定义与下标 遍试: for中用if 迭代: for中n=f(n) 递归: f(n)中用f(n-1) Visual Basic程序设计: Visual Basic程序设计 主讲教师:唐大仕 dstang2000@263.net 北京大学课程复习 : 复习 复习内容: 复习内容 第1部分 VB基础 第1-2章 第2部分 VB语言 第3-6章 第3部分 VB界面 第7-8章 第4部分 VB应用 第9-16章(较少)第1部分 VB基础: 第1部分 VB基础 第1-2章程序设计的概念: 程序设计的概念 程序设计语言 语言的分类 Visual Basic在各种语言中的地位 程序设计的基本方面 从编写的内容看:界面与代码 从程序的本质看:数据与控制 程序设计与软件工程VB程序设计的基本步骤: VB程序设计的基本步骤 界面设计 代码编写 运行/编译VB中的核心概念: VB中的核心概念 对象 属性 (property) 方法 (method) 事件 (event) 事件驱动第2部分 VB语言: 第2部分 VB语言 第3-6章数据与运算: 数据与运算 数据:常量与变量 数据的类型 Integer, Single, Double, Boolean, String, Date, Variant 变量与常量: 变量与常量 变量 隐式定义 显式定义 Dim, Public, Global, Private, Static 合法的变量名 A1 S_N 常量 字面常量 12, 12.3, 2.3e-8, "Hello", #2008-12-30# 符号常量 Const PI As Double = 3.14运算符: 运算符 算术运算符 + - * / \ mod(取余) ^(乘方) 字符串连接 & + 关系运算 > < = >= <= <> 逻辑运算 And Or Not 运算的优先级控制结构: 控制结构 程序的三种控制结构 顺序 分支 循环语句: 语句 简单语句 分支控制语句 If ElseIf Select Case 循环控制语句 For…Next Do While…Loop While 与 Until 条件语句的应用: 语句的应用 分支的嵌套 循环的嵌套 For I=1 to 9 For J=1 To I Next Next 循环的五要素 递推法数列求和 For n=1 To 10 f = f * n s = s + f Next 过程: 过程 过程的定义 Sub 过程名(参数……) …… End Sub 过程的调用 Call 过程名 (参数值……) 用括号 过程名 参数值…… 不用括号函数: 函数 函数的定义 Function 函数名(参数……)As 类型 其 中有一句 :函数名=某个值 End Function 函数的调用 函数名 (参数值…..) 用括号,且用于表达式中 函数名 参数值…… 后一种用法中,将函数作为Sub使用,不理会其返回值 过程中的几个概念: 过程中的几个概念 传值与传址(ByVal, ByRef) 变量的作用域 全程 Public 局部 于窗体, Private( Dim ) 局部于过程内 Dim 变量的生存期 static常用函数: 常用函数 I/O: MsgBox InputBox 数学: Rnd Abs Int Sqr Sin Cos Log Exp 字符串: Len LTrim RTrim Trim UCase LCase Mid Left Right InStr Chr Asc 日期:Date Time Now Year Month Day Hour Minute Second 转换判断 CInt CLng CDbl Val Format IsDate IsNumeric 数组 : 数组 定义数组 Dim 数组名(数组大小) As 类型 数组元素的个数 使用数组常用算法: 常用算法 遍试: 逻辑上:针对所有可能的情况, 形式上: For…Next 中用 IF 迭代 逻辑上:多次使用同一算法 形式上:Do…Loop中用a = f( a ) 递归 逻辑上:一个问题化为同样的问题 形式上:自己调用自己 : F(n)中调用F(n-1)第3部分 界面: 第3部分 界面 第7-11章控件: 控件 常用控件的属性、方法、事件 控件的典型应用 外部控件(ActiveX控件)的使用 控件数组绘图: 绘图 坐标系 绘图状态 绘图方法窗体与菜单: 窗体与菜单 窗体的属性、方法与事件 多窗体 窗体的显示 窗体间的信息交互 菜单图片、动画: 图片、动画 Picture/Image LoadPicture第4部分 VB的应用: 第4部分 VB的应用 第12-16章文件与数据库: 文件与数据库 文本文件 打开、读写、关闭 数据库 基本概念 SQL语句 Data控件(DAO技术) ADO技术程序中的错误: 程序中的错误 错误的种类 语法错 逻辑错 运行错 调试 断点 跟踪 监视 错误的捕获与处理 On Error GoTo xxxxx API: API API的声明与调用 Declare 调用多媒体及网络编程: 多媒体及网络编程 API, ActiveXControl 音频/视频的播放 网络浏览 网络编程: 网络编程 高层网络编程 Browser、FTP 低层网络编程 Winsock重点: 重点 VB语言 运算、各种语句、数组、过程与函数 VB常用函数 VB常用算法 包括一些应用 VB常用控件 注:笔试中第9-16章(VB应用)内容很少难点: 难点 循环 循环的五要素 循环的嵌套 数列求和 遍试算法 数组 过程与函数 变量的作用域 参数的传递有关考试: 有关考试 考试内容 考试形式 选择、填空、编程、问答等题型 每种题型占20%-40%Thanks: Thanks 祝同学们 学习愉快,学有所获,学有所成!