visual basic 程序设计及应用
DESCRIPTION
北京大学课程. Visual Basic 程序设计及应用. 主讲教师:唐大仕 [email protected]. 有关事项. 参考书 Visual Basic 程序设计, 唐大仕,清华大学出版社, 2003 ( 丛书主编:卢湘鸿 ) Visual Basic 程序设计题解与上机指导 唐大仕,清华大学出版社, 2003. 教学网站 校内: http://cf.pku.cn/tds 备份: http://www.dstang.com/cf2 与唐大仕老师联系 [email protected] QQ : 351116463 上机 - PowerPoint PPT PresentationTRANSCRIPT
有关事项 参考书
Visual Basic 程序设计, 唐大仕,清华大学出版社, 2003 ( 丛书主编:卢湘鸿 )
Visual Basic 程序设计题解与上机指导 唐大仕,清华大学出版社, 2003
教学网站 校内: http://cf.pku.cn/tds 备份: http://www.dstang.com/cf2
与唐大仕老师联系 [email protected] QQ : 351116463
上机 时间星期四 9-10 节 , 地点 3 、 5 、 6 号机房
课程要求 不迟到、不旷课 完成参考资料的阅读、练习等课后任务 按时交作业
1 序论
程序与语言的概念 为什么要学习程序设计
软件 = 程序 + 文档 程序:指令的序列 语言
汇编语言 asm : 用助记符来表示计算指令 高级语言 c, pascal, fortran,
用表达式来表示计算 用过程来表示流程
面向对象的语言 c++, java,vb 用对象来表示实现世界 每个对象有自己的属性、功能、能与外界交互
Visual Basic 简介 一种程序设计环境 一种程序设计语言 具有广泛的用途
VB 快速入门单击右击双击
设计与运行 界面设计
(插入对象,设其属性)(对象窗) 代码设计
(双击对象,填写代码)(代码窗) 运行
按 F5 (或点“启动”按钮)
示例:按钮信息
示例:按钮信息 在程序中书写:
MsgBox "Hello!" 编程提示:
要用西文标点、空格 单击“启动”按钮才会运行 单击“结束”按钮才可以进一步修改
保存 保存
窗体文件 .frm 工程文件 .vbp 其他辅助文件
编程提示: 文件应保存在自已的文件夹中,不要放在 VB98 下 下次打开这个程序,只需双击 .vbp 文件即可 每一个程序都要单独建一个工程 每个程序放在单独的文件夹中 交作业时,将文件夹中的所有文件压缩成一个文件
编译 编译
编译就是将源程序转成可执行程序的过程 怎样编译
文件生成 xxxxx.exe 文件 编程提示:
exe是交给最终用户的,编程者不需要它
一些典型应用
一些专题知识 自己设计一个屏幕保护程序; 自己设计一个多媒体播放器; 自己设计一个小游戏; 信息安全与密码问题; 软件工程,程序漏洞的原因; 信息管理系统; 网上信息交流,聊天,游戏的原理; 电子商务的基本构成方式; 计算机智能及其局限性; 分形图形与计算机艺术; 等等。
课程目标 1. 程序
以 Visual Basic 为工具 掌握程序设计的基本概念和基本方法 具备使用程序来解决一些实际问题的能力
2. 应用 通过程序来提高Word 、 Excel 、网页制作等常用
软件的应用能力 了解病毒防护、数据加密、企业信息化、电子政务、人工智能、数字艺术等专题知识
以简明的程序来介绍,不是十分注重编程技巧技术,而是重在理解其本质。
VB 程序设计环境 工程窗口 对象窗口 代码窗 属性窗 工具箱
注意区分三种状态 设计状态 运行状态 中断状态
小结 程序、软件与语言 Visual Basic是一种高级语言 设计
界面设计 代码设计
运行 保存 编译
2 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*25
5) 注: 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 FontN
ame 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 Languag
es > 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 程序设计核心概念
对象:属性、方法、事件 事件驱动编程
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 & " 的圆的面积是 " & are
a 注意:要定义变量
关于数据类型的几个细节 类型的不严格
如 Me.Caption = Now() 如 r = Text1.Text
精度问题 如 i = 5.6 i=5.5 i=5.4
示例 求解一元二次方程
用文本框来表示输入、输出 用按钮来表示命令 对象名一定要写正确 注意公式中用 Sqr 表平方根,注意圆括号
数学函数 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
小专题: VB 的函数与 Excel函数
+ - * / \ Mod ^ And Or Not Rnd Abs Int Sqr Sin Co
s Log Exp Len LTrim RTrim Trim UCase LCase Mid Left Right InStr Chr Asc
Date Now Year Month Day
CInt Val Format IsDate IsNumeric
+ - * / Mod() ^ And() Or() Not() Rand Abs Int Sqrt Sin Cos Log Exp
Len LTrim RTrim Trim Upper Lower Mid Left Right Find Char Code
Today Now Year Month Day
Int Value Format IsDate IsNumber
Excel函数举例 在学生名单表中
排序字段 =MID(A2,4,2)& "_" & A2
随机选择 =INDEX(A2:A161, RAND()*161+1 )
查找 =VLOOKUP(D2,A2:B161,2,FALSE)
小结 数据类型 常量与变量 运算符 常用函数
4 语句与分支控制
VB 语言 程序设计语言的两个重要方面:
数据 控制
简单语句 简单语句
一句一行 多句同行 ( 用: ) 一句跨多行 ( 用 _ )
注释 对程序的执行没有影响 用单引号开始 ,直到行尾 注释的用途:
对一段程序 对一些变量 对一些算法
赋值语句 = 示例 : a=a+1 示例 : 移动的小球 示例:交换两变量值
输入与输出 程序的基本过程 :
输入处理输出 输入输出的常见方法:
使用控件进行 输入 (如TextBox) 输出(如 Label)
使用 InputBox, MsgBox 使用 Print 表示输出
Print 的使用 Print
换行 不换行(,或;)
示例:圆的面积 方法 Print, cls , 与;
示例: a *b = c
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 示例:分数的判断 示例:所得税的计算
Select Case Select case 表达式 case 常量 。。。。 case 常量 。。。。 case else …. End Select 示例: 分数
示例: 自动出题及判分 If 及 Select Case 的使用 变量的使用
注意, a,b,op三个变量是放到最前面的 ( 不在 Sub 内,被称为窗体级变量 )
随机数的使用 Rnd Randomize
随机数初始化,一般在 Form_Load 中 据Rnd 的数值来表示不同的字符,如 +-* /
IIF函数 IIf(条件 , 式 1, 式 2 ) 例如:
M = IIf( a>b, a, b ) z = IIf( a<1, “小” , IIf( a=1, “ 等” ,
“ 大” ) )
小专题:关于随机数 伪随机数 线性同余算法 Xn+1 = (Xn * a + c ) mod m , 其中 m>0称为模数, 0≤ a <m称为乘数, 0≤c <m称为增量, 0≤X0<m称为初始值或种子
如 X = ( X * 123 + 59 ) mod 65535 如 X = ( X * 2053 + 13849 ) mod 65535 如 a取 69069 或 1664525(即&H19660D)
Java 语言中用的公式 synchronized public void setSeed(long seed) {
this.seed = (seed ^ 0x5DEECE66DL) & ((1L << 48) - 1); } synchronized protected int next(int bits) {
seed = (seed * 0x5DEECE66DL + 0xBL) & ((1L << 48) - 1); return (int)(seed >>> (48 - bits));
} Donald Knuth, The Art of Computer Programming,
Volume 2, Section 3.2.1.
C语言中用的公式 unsigned long int next = 1; int rand(void) {
next = next * 1103515245 + 12345; return (unsigned int)(next/65536) % 32768;
} void srand(unsigned int seed) {
next = seed; }
生成标准正态分布的随机数
产生方法很多。 近似方法(利用中心极限定理) 即用 个 变量产生一个 变量。 其中 是抽自 的随机数, 可近似为
一 个 变量。 简单地说: 6 个均匀分布的随机数的平均值是
一个正态分布的随机数
1,0N
n 1,0U 1,0N
2112 unxiu 1,0U
n
i iun
u1
1
1,0N
蒲丰氏 (Buffon)问题
如果针的长度是平行间的距离的一半,则:Pi = 总数 / 相交的针
针在平行线间的位置
蒙特卡罗( Monte Carlo )方法 蒙特卡洛方法是一种应用随机数来进行计算机模拟的方法.此方法对研究的系统进行随机观察抽样,通过对样本值的观察统计,求得所研究系统的某些参数.
蒙特卡罗方法的主要应用范围包括:粒子输运问题,统计物理,典型数学问题,真空技术,激光技术以及医学,生物,探矿等方面。随着科学技术的发展,其应用范围将更加广泛。
蒙特卡罗方法在粒子输运问题中的应用范围主要包括:实验核物理,反应堆物理,高能物理等方面。
蒙特卡罗方法在实验核物理中的应用范围主要包括:通量及反应率,中子探测效率,光子探测效率,光子能量沉积谱及响应函数,气体正比计数管反冲质子谱,多次散射与通量衰减修正等方面。
在我们所生活的世界上,充满了不确定性
小结 简单语句 输入及输出 If/ElseIf 语句 Select Case 语句
5 循环语句、绘图
三种控制结构 为什么要有循环 程序的三种控制结构
顺序 分支(选择) 循环
程序流程图 流程线 开始与结束 任务及子任务 输入与输出 条件判断
For 语句 For v=1 To 100 Step 2
…Next
其中 Step 1 可以省略
使用 For 语句 示例
显示 1-100 画同心圆 1+2+…+100 1*1+2*2 +...+100*100 6^3+....+69^3
Do Loop Do While 条件 。。。 Loop
示例 :角谷猜想
Do 循环的几种写法 Do While 条件 ( 或 :Until条件 )
。。。 Loop
Do 。。。 (至少执行一次循环)
Loop While 条件 ( 或 :Until条件 )
While 条件 。。。
Wend
循环的五要素 初始化 循环条件 循环动作 循环改变 结束后处理
理解循环 1变量 5 要素 3典型 几种循环的比较
绘图 在哪里绘图:
在窗体上 如: 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
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
上机注意事项 1. 关于文件 2. 关于图片 3. 关于内容 4. 关于书写
循环出口语句 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
7
1
5
1
3
11
4
753
321
53
21
3
11
2
!3!2
132 xx
xex
循环的应用 字符串加密
附:关于密码与加密 口令( password)
原则:自己易记、他人难猜、经常更改 技巧:不与自己直接相关,而是间接相关
并且不能太短,字母、数字、符号混合 在公共场合使用口令要谨慎 不能让 IE记住口令
注意防护: 一些口令破解软件,
如Advanced Pdf password covery 如Rar Password Cracker, Passware
防止木马
口令使用经验谈 不要使用本人的生日、身份证件号码、银行账户中的前几位、后几位或姓名的拼音作为密码。
不要将密码设置为相同的数字或字母,尽量使用数字与字母的组合构成密码
不要将密码设置为有顺序的数字或字母 不要将网上银行“登录密码”和“交易密码”设置成相同的密码 在任何情况下不能将密码漏给他人,包括银行工作人员 在使用网上银行时,最好不要直接用键盘输入密码,而用“密码
软键盘”输入密码
常见的安全措施—正确使用网银 常见方式“钓鱼”
“钓鱼”之一 :电子邮件 “钓鱼”之二 :盗号木马 “钓鱼”之三 : 网址欺骗
防钓鱼 直接输入域名 用密码软键盘 加密交易信息
使用加密控件,使用密码 U盘,使用 https协议 同样,防止短信诈骗
加密技术加密加密技术:把信息转换成一种不可读或不可理解的形式
解密技术
私钥对称加密公钥非对称加密单向函数
四种传统加密方法 1.代码加密 2.替换加密 3.变位加密 4.一次性密码簿加密
对称密码术(单一密钥)加密算法: CHARACTER+3
Dear LiXiu…… ………… ……
明文
Ghdu OlAlx…… ………… ……
密文AF计划 接收者发送者
DES算法 DES是对称密钥加密的算法, DES算法大致可以分成四个部分:
( 1 )初始置换 ( 2 )迭代过程 ( 3 )逆置换和 ( 4 )子密钥生成
DES 加密原理示意图
左半部分 32 位 右半部分 32 位
新的左半部分 新的右半部分
密钥移位
置换后的密钥
f
+
非对称密码术
明文 密文 明文
公共密钥 私有密钥
我其他人
RSA算法 RSA算法是非对称密钥加密,其算法演
算过程 ( 1 )密钥配制过程 ( 2 )加密 ( 3 )解密
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 )。
设张小姐需要发送机密信息(明文) 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 ,实现了解密。
RSA的安全性 就目前的计算机水平用 1024位的密钥是安全的, 2048位是绝对安全的。RSA实验室认为, 512位的 n 已不够安全,应停止使用,现在的个人需要用 668位的 n ,公司要用 1024位的 n ,极其重要的场合应该用 2048位的 n。
RSA用于身份验证和数字签名 数字签名必须保证以下 3 点:
接收者能够核实发送者对报文的签名。 发送者事后不能抵赖对报文的签名。 接收者不能伪造对报文的签名。
现在已有多种实现各种数字方法,但签名的采用公开密钥算法要比常规算法更容易实现。
电子签名 电子签名 (比数字签名更广泛的概念)
注:媒体 _vir_fingerprint_F0914.avi注:《电子签名法》注: www.icbc.com.cn 中国工商行 usbkey客户证书注: outlook express 电子邮件加密及签名注: http://www.ca365.com 申请免费试用证书
保证:信息除发送方和接收方外不被其它人窃取;信息在传输过程中不被篡改;发送方能够通过数字证书来确认接收方的身份;发送方对于自己的信息不能抵赖。
密钥与密码破译方法 ( 1 )密钥的穷尽搜索
破译密文就是尝试所有可能的密钥组合。虽然大多数的密钥尝试都是失败的,但最终有一个密钥让破译者得到原文,这个过程称为密钥的穷尽搜索。
( 2 )密码分析 已知明文的破译方法 选定明文的破译方法
( 3 )其他方法 “窥视”或“偷窃”密钥内容;进行“垃圾分析”;
等等
防止密码破译的措施 ( 1 )强壮的加密算法 ( 2 )动态会话密钥 ( 3 )保护关键密钥
小结 控制结构与流程图 For Next 语句 Do Loop 语句 循环出口语句 循环的嵌套 循环的应用 ----数列求和
6 过程、函数、数组
过程 学习 VB 语言:
单词语句篇章
使用过程的好处 任务分解 代码重用
示例 :sub_print100
事件过程与普通过程 事件过程
与某个对象事件相关 过程名为: 对象名 _事件名 如: Sub Command1_Click() 如: Sub Form_Load()
普通过程 与事件无关 表示某项任务
过程的定义 Sub 过程名(参数 As 类型,。。。) 。。。 End Sub
过程的调用 使用 Call
Call 过程名 (参数值。。。) 注意,要用括号
或省略Call 过程名 参数值,。。。 注意,不用括号 一个参数时,可用括号,也可不用
示例:画花儿 示例 :sub_delay
注 :second, do loop
函数 函数也是一种子程序
是一种带返回值的过程
内建函数 已由 VB定义好,可直接使用 如: CInt(), Int(), Rnd(), Now()
I/O函数 MsgBox
有关按钮图标 / 有关返回值 MsgBox "hello", vbInformation
InputBox 有关默认值 / 有关返回值 a = InputBox(" Please Input a num", , 99)
函数的定义 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
小结 过程 函数 参数传递 过程中的变量
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/in
dex7.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 按钮 Caption Style, Picture
使之为图片按钮 补充示例: PicButton.frm
ToolTipText Enabled
Label 标签 Caption ToolTipText, AutoSize, WordWrap, Alignment
0 vbLeftJustify 1 vbRightJustify 2 vbCenter
例 : Label_mouse_shell_263 注 :shell " 程序名 参数 " 表示调用外部程序
TextBox 文本框 SelStart, SelLength, SelText, Text MultiLine, ScrollBars PasswordChar "*" Locked,Enabled SetFocus方法 ,
GotFocus, LostFocus 事件 示例 :text_sel_password_enter
Frame 框 Caption BorderStyle 框 : 容器 线 成组 Visible
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 / x1,y1,x2,y2 BorderStyle, BorderColor BorderWidth FillStyle, FillColor, BackStyle, BackColor
Timer 定时器 Timer
Interval, Enabled
示例 : Timer_Shape_Line_Clock.frm
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
可作容器,可以在上面画图 xxx.Picture = LoadPicture("XXX.jpg")
Image 不能作容器 , 但可以 Stretch Image1.Picture = LoadPicture("XXX.bmp")
示例:跳舞的小女孩 dance_girl 补充示例 : PicImageHover.frm
多控件的布局 多控件的选定与设置
视图工具栏窗体编辑器 对齐与大小
格式对齐、间距 TabIndex ( Tab顺序)
格式顺序 控件的成组
用一个 Frame框
示例:人员信息 _control.frm
外部控件 ActiveX Control (外部控件)
是已经编好的程序,可用于 VB 中 一般存在于 .ocx .dll 文件中
加入外部控件的步骤: 1. 工具箱上点右键,选Component...(组
件) 从中进行选择,如: Microsoft Windows Common Control 2.从工具箱上,选控件,加入到窗体中
使用外部控件 1. 属性 : F4, 属性窗 点右键 , 打开属性页 2. 方法 / 事件 3. 当程序复制其他机器时,要求系统中必须安装有相应的控件
例 : Microsoft Windows Common Contro 的ProgressBar( 参见书中示例)
Media Player控件 常用的媒体文件
.avi .mpg
使用 Windows Media Player 控件 播放声音 (.mid, .wav, .mp3) 播放视频 (.avi, .mpg ) .FileName = “…” .Play 方法进行播放 在 Media Player9 以上版本,使用 .URL表示文件名
用 Visible置为 False 可以使之不可见
使用 MicrosoftInternetControl 加入控件 Microsoft Internet Control IEWebBrowser1.Navigate 方法 可以用来浏览网页,以及 IE能浏览的内容(特别是 Flash 动画 /gif 动画等)
小结 控件的一般属性 CommandButton, Label, TextBox Frame, CheckBox, OptionButton HScrollBar, VScrollBar ListBox, ComboBox PictureBox, Image 外部控件
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,Fu
nction) 设定程序入口:
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菜单 进入菜单编辑器: Tools/MenuEditor (或按 Ctrl+E) 有关菜单项:
菜单名( Name) 菜单文字 (Caption) 其中用 & 表示下划线(如 &Open) 用单独的减号( - )表示分隔线 快捷键 (ShorCutKey) 如 Ctrl+O 菜单的级别 (按左右箭头按钮) Checked,Enabled,Visible WindowList
菜单的编程 与按钮相似 菜单上单击,对 XXX_Click 事件进行处理
Menu菜单 进入菜单编辑器: Tools/MenuEditor (或按 Ctrl+E) 有关菜单项:
菜单名( Name) 菜单文字 (Caption) 其中用 & 表示下划线(如 &Open) 用单独的减号( - )表示分隔线 快捷键 ShorCutKey 如 Ctrl+O 菜单的级别 (按左右箭头按钮) Checked,Enabled,Visible WindowList
菜单的编程 与按钮相似 菜单上单击,对 XXX_Click 事件进行处理
控件数组 控件数组 :
同名的多个控件,称为控件数组 每个控件的 Index 不同
产生方法(以下方法均可): 1.复制、粘贴 2.将多个控件的名字相同 3. 设 Index 4. 程序中 Load XXX(i)则生成一个新的
复杂示例:计算器 ( 不讲 )
处理控件数组的事件 在控件的事件中可以用 Index
示例:按钮数组 .frm 示例:六个滚动条: line_color_grad_scroll.frm 示例:排块游戏 .frm
( 练习使用控件数组、过程、函数) 有趣示例:雪花飘飘 snowflake 示例:
小结 窗体:事件与属性 多窗体:加入与交互 菜单:编辑与编程
9 API及多媒体编程
API的概念 API
Application Programming Interface 应用程序编程接口 简单地说,就是使用别人提供的函数(或过程)
Win32 API Windows 自带的 API函数
相关资源 cf.pku.cn/tds 上的资源 http://www.allapi.net/
使用 API 声明 API函数
Private Declare Function .…Lib … Alias …
若使用 Public ,则必须将Declare 放入模块文件中
调用 API函数 a = 函数名 ( 参数 ) Call 过程名 ( 参数 ) 函数名 参数
使用 API Text Viewer 打开 API Text View (API文本浏览器 )
开始程序 Visual Basic 中文版工具… File/Open 打开 Win32API.txt
选 Private 或 Public (注意:用于窗体时,只能选 Private )
选 Declare 或 Constants 双击需要的函数、常数 最后 Copy/Paste 到 VB 代码中
注意:尽量不要手工书写,因为极易写错
声明常数与类型 常数
Private Const 类型
Private Type 句柄作参数
句柄 Handle, 是一个数字 , 代表某个对象 这是由于API中没有像 VB 中“对象”的概念
如 Me.hwnd 代表窗体
API应用举例 GetTickCount Topmost WinRoundRect 设定桌面墙纸
多媒体编程 多媒体的概念 多媒体编程的基本方式
使用 API 使用 MCI指令 使用 ActiveX 控件
图像及动画 常用的图像文件
.bmp/.jpg/.gif, .png 动画
使用 Image 或 PictureBox 来实现图像的切换
如以前讲过的“跳舞的小女孩”
图像的进一步处理 图像的处理
用不同的算子对图像上的点进行运算 示例: PicRGBtoGray
进一步的技术(了解) 使用 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 ( 只能播放 wav 文件 ) 使用 Beep(*)
使用声卡驱动程序中的 API(了解 ) 与具体的声卡相关
最简单的办法是:使用 Media player控件(后面讲到)
使用 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 演示:电子琴
MMControl控件 (了解 ) 使用 Microsoft Multimedia Control 播放 CD
MMControl1.DeviceType = "CDAudio" MMControl1.Command = "open"
播放 wav MMControl1.DeviceType =
"WaveAudio" MMControl1.FileName = " ……." MMControl1.Command = "open"
Media Player控件 常用的媒体文件
.avi .mpg
使用 Windows Media Player 控件 播放声音 (.mid, .wav, .mp3) 播放视频 (.avi, .mpg ) .FileName = “…” .Play 方法进行播放 在 Media Player9 以上版本,使用 .URL表示文件名
使用 MicrosoftInternetControl 加入控件 Microsoft Internet Control
IEWebBrowser1.Navigate 方法 加入 Microsoft Common Dialog Control控件
.showOpen .showSave .showFont .showColor .showPrint
流式媒体 流式媒体
Real 格式: .rm,.ram Microsoft 格式: .asf
使用 Real Player控件
Flash 动画 Flash 动画
可以使用 Sothink SWF Catcher 等工具下载 在 VB 中使用:
Shockwave Flash Control .movie=“……” .play
使用 Agent Agent
加入 Microsoft Agent Control 2.0 示例: msagent-hello 网站
http://www.microsoft.com/msagent/default.asp 动作列表可参见:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msagent/deschar_3pgy.asp
教程可参见: http://www.agent-launchpad.co.uk/tutorials/
更多角色可参见: http://www.msagentring.org/chars.htm
小结 API的使用 API应用举例 多媒体编程: API, MCI, Control 图像、动画 音频 视频 Agent
10 文件读写、程序调试
文件的概念 理解“文件”
是信息的集合 存储于一定的介质上 按名存取
文件名 "E:\vb_class\Draw\mypic.bmp" "\\teacher\share\sub\file1.txt" App.Path & "\myfile.bmp"
文件的种类 在 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
文件和目录管理 几个命令
FileCopy 复制文件 Kill 删除文件 MkDir 建立目录 RmDir删除目录
几个函数 (了解 ) GetAttr 文件及目录属性 FileLen 文件长度 FileDateTime 文件时间
Dir 查找文件 (了解 ) Dir(“*.txt”) 用于首次查找 在循环中, Dir() 用于其他各次查找
示例 DirFind
程序中的错误 错误的种类
语法错 逻辑错 运行错
减少错误的一般方法: Tab缩进 , 空格 , 空行 ,注释 显式定义变量 , Option Explicit 变量名 (匈牙利命名法)
调试 (debug) 断点 (breakpoint):
F9 或 在行的左边单击 跟踪 (trace)
F8(逐语句, step into) Shift_F8(逐过程, step over) Ctr_F8 (执行到当前行 ,Run to cursor ) 或点右键选择
监视 (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
补充: IC卡及条码 IC卡
按读写方法分:接触式及非接触式(射频或红外 ) 按结构分:存储卡及 CPU卡
身份证与校验码 参见 ID15_18.frm
银行卡中的校验码 http://www.gsfzb.gov.cn/law-1/news/view.asp?id=12156
条码知识 http://www.saibon.com.cn/server/info.htm
条码
条码: 由一组规则排列的条、空及其对应字符组成的标记,用以表
示一定的信息。 空白区 起始符 第一个字符对 第二个字符对 终止符 空白区
1234
条码的编码编码方法
宽度调节法25 条 码 是 一 种 只
有条表示信息的非连续型条码。条码字符由规则排列的5个条构成,其中有两个宽单元,其余是窄单元。宽单元一般是窄单元的三倍,宽单元表示 二 进 制 的“ 1” ,窄单元表 示 二 进 制 的“ 0” 。
按这种方式编码时,是以窄元素( 条纹或间隔 ) 表示逻辑值“ 0” ,宽元素 ( 条纹或间隔 ) 表示逻辑值“ l” 。
条码的分类 一维条码。
商品条码: EAN码和UPC码。 物流条码: 128 码、 ITF 码、 39 码、库德巴( Cod
abar )码等。 二维条码。
行排式二维条码 如: Code 16K、 Code 49 、 PDF417
矩阵式二维条码 如: Code One 、 Maxi Code 、 QR Code 、 Data Matrix
PDF417
QR Code
小结 文件的分类及操作 文件及目录控件 程序的调试
11 数据库编程
本讲内容 数据库基本概念 使用 Data控件 基本的 SQL语句 数据库相关应用
数据库 数据库 (Database) 数据库管理系统 ( DBMS )
Oracle, DB2 MS SQL Server MS Access桌面数据库 (*.mdb)
数据库系统的优点: 数据的共享性、独立性、完整性和冗余数据少
管理功能 数据定义 /操纵 / 完整 /安全 /并发
关系型数据库 (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查询分析器
SQL SQL( Structured Query Language ),即结构化查询语言
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 employee
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]
通过编程来操作数据库 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控件 :
DatabaseName (选 xxxx.mdb, 注意 Access97 格式 )
RecordSource (选表名 , 或填 SQL语句 ) Text 或其他控件 :
DataSource (选Data1) DataField (选字段名 )
示例:背单词,通讯录
还可以使用 Microsoft Data Bound Grid Control: DataSource (选Data1)
使用 DAO对象 (*) DAO (Data Access Object)
引用 DAO: Project( 工程 ) /Reference(引用 )...中 ,选Microsoft DAO 3.51 Object Library
DAO的基本对象 Database 数据库 RecordSet 记录集(相当于表) Fields(i) 记录中的字段
Data1.RecordSet 记录集
RecordSet 的基本操作 (*) 移动当前记录
.MoveFirst .MoveLast .MoveNext, .MovePrevious
编辑 .Edit .Fields(i)=.... .Update .AddNew .fields(i)=.... .Update .Delete
查找 .FindFirst .FindNext
使用 ADO对象 (*) ADO (ActiveX Data Object)
引用 ADO : Project( 工程 ) /Reference(引用 )...中 ,选Microsoft ActiveX Data Object 2.1 Library
ADO 中的基本对象 Connection 连接 RecordSet 记录集 Fields(i) 字段 Command Parameter(了解即可 , 表示命令及参数 )
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的基本操作 (续 ) (*) 执行 SQL
Dim rs As ADODB.Recordset conn.CursorLocation = adUseClient
Set rs = conn.Execute("Select * FROM [Publishers]")
Set DataGrid1.DataSource = rs
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"
应用演示 图书馆系统 订单管理 收支管理 图表
MIS:管理信息系统 MIS系统的设计:
界面设计 ------- 数据的输入输出 功能设计 ------- 数据的业务处理 数据设计 ------- 数据的存储管理 (DB)
办公自动化 (OA)
OA基本目的 优化组织结构 调整管理体制 提高工作效率 增加协同办公能力 提高决策效能
系统软件架构
OA实施步骤 第一步、建立基础应用系统
建立OA信息化基础平台 建立公文流转、资产管理、档案管理等 解决事务工作的效率问题
第二步、建立协同工作系统 继续扩展应用系统,并建立网站门户 进一步加强信息共享,解决协同工作问题 全面实现数字化办公,使管理工作上一个台阶
第三步、完善知识管理系统 建立基于 KM 的OA系统,提高决策能力 使企业在知识的积累的基础上持续发展
ERP:企业资源规划
HR
供应链管理 SCM
GIS系统 GIS(Geographic Information System)
地理信息系统 GIS 是解决空间问题的工具、方法和技术;从学科的角度, GIS 是在地理学、地图学、测量学和计算机科学等学科基础上发展起来的一门学科
信息是基于地理位置的
GPS全球卫星定位系统 GPS(Global Positioning System)
目前共有二十四颗卫星,其中 21颗工作卫星, 3颗在轨备用卫星
俄罗斯的GLONASS系统 欧洲“伽利略计划”( 30卫星) 中国的北斗卫星导航系统 手机的 GPSOne定位
本地搜索 http://map.baidu.com http://maps.google.com http://bendi.sina.com.cn http://www.mapbar.com
Google Earth http://earth.google.com
小结 数据库基本概念 使用 Data控件 基本的 SQL语句 数据库的应用
12 VB 的其他应用 (*)
VBA VBA: Visual Basic For Application 在各种 Office 软件中使用 宏 (marco) :实际上是一个 Sub 工具 /宏 /录制宏
注意:指定一个快捷键 也可以:工具 / 自定义… /命令 /宏 , 将它拖到工具栏中
工具 /宏 /Visual Basic 编辑器 注意:保存到当前文档中
宏的运行 使用前面指定的快捷键
Word 中的 VBA 示例:加行号的宏 示例:跳动的文字
见 UpDown_OnTime.doc 关于宏病毒
工具 /宏 /安全性
Excel 中的应用 Excel 中的宏 Excel 中的变量
引用(如A1 , A1:B3 ) Excel 中的函数
VB 的函数与 Excel函数 + - * / \ Mod ^ And Or Not Rnd Abs Int Sqr Sin Co
s Log Exp Len LTrim RTrim Trim UCase LCase Mid Left Right InStr Chr Asc
Date Now Year Month Day
CInt Val Format IsDate IsNumeric
+ - * / Mod() ^ And() Or() Not() Rand Abs Int Sqrt Sin Cos Log Exp
Len LTrim RTrim Trim Upper Lower Mid Left Right Find Char Code
Today Now Year Month Day
Int Value Format IsDate IsNumber
Excel 中的其他函数 表示判断及统计的
If(条件,值 1 ,值 2) CountIf MAX MIN AVERGE
应用举例 身份证取出生日及性别
=IF( MOD(RIGHT(A4,1),2)=1,"男 ","女 ") =IF(LEN(A5)=18,DATE(MID(A5,7,4),MID(A5,11,2),MID(A5,13,2)), DATE
( MID(A5,7,2),MID(A5,9,2),MID(A5,11,2))) 条件格式
分数 <60 或 =A5<60 不同行不同色 =MOD(ROW(),2)=0 突出显示成绩最高的 =($D5=MAX($D$4:$D$7)) 显示重名的 =(COUNTIF($B$4:$B$8,$B6)>1)
手机中的应用
网页中的应用 网页 html 中的标记 网页中的脚本 (script)
常见的有 javascript 及 vbscript VBScript
变量没有类型 在网页中使用 VBScript
<script language=vbscript>……</script> 举例:
各种不同的 script
VBScript 在 ASP( 动态服务端网页 ) 中使用 VBScri
pt <% …………%> 示例:使用 ADO, 显示数据库内容
在 QQ 中使用
电子商务
SQL Injection 与安全
SELECT COUNT (*) FROM UsersWHERE UserName=‘’ or 1=1--AND Password=‘’
SELECT COUNT (*) FROM UsersWHERE UserName=‘Jeff’AND Password=‘imbatman’
应用中的 Query 模型
恶意的 Query 语句
"or 1=1" matches everyrecord in the table
"--" comments out theremainder of the query
补充:有关 Bug Bug 的产生 程序漏洞 几个例子
新建文本文件 求最大值 后门:通用密码 手机中的更新程序 复活节彩蛋
Windows 的 update 的重要性
从程序到软件 软件工程的基本概念 软件开发过程
计划 需求分析 系统设计 软件实现 确认 维护
13 常用算法
算法 指令的有限序列 特点:
有穷性 确定性 可行性
遍试 逻辑上:针对所有可能的情况, 形式上: For 中用 If
示例: 1.韩信点兵 ,百鸡问题 ,鸡兔同笼问题
2.水仙花数 13+53+33=153 3. 完全数 28=1+2+4+7+14 4.百分币 5. 佩尔方程 6.验证猜想 :哥德巴赫猜想
迭代 逻辑上:多次使用同一算法 形式上: a = f( a )
示例: 1. 求平方根 2. Mandelbrot集 ,Julia集 3. 倍边法求 Pi 4. 数字平方和
Xn Xn+1
)(/)( '1 nnnn xfxfxx
递归 逻辑上:一个问题化为同样的问题 形式上:自己调用自己
示例: 1. 求阶乘 2.菲波那契数列 3. Celay树 , Koch分形集
小结 数组 : 定义与下标 遍试: for 中用 if 迭代 : for 中 n=f(n) 递归 : f(n) 中用 f(n-1)
复习
复习内容 第 1部分 VB基础 第 1-2章 第 2部分 VB 语言 第 3-6章 第 3部分 VB 界面 第 7-8章 第 4部分 VB 应用 第 9-16章 (较少 )
第 1部分 VB基础
第 1-2章
程序设计的概念 程序设计语言
语言的分类 Visual Basic 在各种语言中的地位
程序设计的基本方面 从编写的内容看:界面与代码 从程序的本质看:数据与控制
程序设计与软件工程
VB 程序设计的基本步骤 界面设计 代码编写 运行 / 编译
VB 中的核心概念 对象
属性 (property) 方法 (method) 事件 (event)
事件驱动
第 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 条件 Exit Do 与 Exit For
语句的应用 分支的嵌套 循环的嵌套
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部分 界面
第 7-11章
控件 常用控件的属性、方法、事件 控件的典型应用 外部控件( ActiveX 控件)的使用 控件数组
绘图 坐标系 绘图状态 绘图方法
窗体与菜单 窗体的属性、方法与事件 多窗体
窗体的显示 窗体间的信息交互
菜单
图片、动画 Picture/Image LoadPicture
第 4部分 VB 的应用
第 12-16章
文件与数据库 文本文件
打开、读写、关闭 数据库
基本概念 SQL语句 Data控件( DAO技术) ADO技术
程序中的错误 错误的种类
语法错 逻辑错 运行错
调试 断点 跟踪 监视
错误的捕获与处理 On Error GoTo xxxxx
API API的声明与调用
Declare 调用
多媒体及网络编程 API, ActiveXControl 音频 /视频的播放 网络浏览
重点 VB 语言
运算、各种语句、数组、过程与函数 VB常用函数 VB常用算法
包括一些应用 VB常用控件
注 :笔试中第 9-16章 (VB 应用 ) 内容很少
难点 循环
循环的五要素 循环的嵌套 数列求和
遍试算法 数组 过程与函数
变量的作用域 参数的传递
有关考试 考试内容 考试形式
选择、填空、编程、问答等题型 每种题型占 20% -40%
Thanks
祝同学们学习愉快,学有所获,学有所成!