资源描述
试验一 Visual Basic集成开发环境和程序设计初步
试验目标:
1、 了解Visual Basic系统对计算机软、硬件要求。
2、 掌握开启和退出Visual Basic方法。
3、 了解Visual Basic集成环境组成,各部分作用。
4、 掌握建立、编辑和运行一个简单Visual Basic应用程序全过程。
5、 掌握常见控件(文本框、标签、命令按钮)应用。
6、 感性认识控件(对象)、过程、事件、属性等概念,初步认识窗体、控件、属性、过程在程序设计中作用和关系。
试验内容:
建立一个“标准exe”类型应用程序,要求单击“确定”按钮,在屏幕上显示“您好,世界!”,单击“退出”按钮,退出应用程序。界面图1-1所表示,以sy1.frm、sy1.vbp和sy1.exe文件保留到自己软盘上。
图1-1
试验准备:
1. 复习相关知识:1) VB集成化开发环境 2) 建立VB应用程序
2.正确写出两事件代码,列出各控件所需属性(属性项目和属性值)。
试验步骤:
1.Visual Basic 6.0汉字版开启和退出。
开启:
1)单击“开始”按钮,然后选择“程序”中“Microsoft Visual Basic 6.0汉字版”,单击即可。
或:单击桌面上“Microsoft Visual Basic 6.0汉字版”图标,
2)新建工程对话框,单击打开“标准exe”按钮,进入环境。
退出:
1) 单击集成环境窗口右上角关闭按钮。
2) 单击“文件”下拉菜单中“退出”选项。
2.界面设计:
(1)添加标签Label1。 (2)添加命令按钮Command1。
(3)添加命令按钮Command2。 (4)使用格式菜单,使用两命令按钮尺寸完全一样,并恰好处于窗体中间位置。
3.设置界面对象属性:
能够经过用鼠标右键单击某一窗体或控件,在弹出菜单中为其设置属性,也能够隶属性窗口对象列表框中选择要设置属性对象。
1)设置Form窗体Caption属性为“Hello,World!”
2)设置Command1按钮Caption属性为“确定”,名称属性为“OK”.
3)设置Command2按钮Caption属性为“退出”,名称属性为“Cancel”。
4)设置Label1标签Caption属性为空,Font属性对话框中字体为隶书,字体式样为粗体,大小为二号。
4.编写代码:
在Form(窗体)窗口中双击鼠标左键或单击视图菜单中代码窗口菜单项,进入代码窗口。用鼠标单击第一个列表框右边下拉箭头,从弹出下拉列表框中选择OK,然后在第二个列表框中选择Click事件,这时代码窗口出现了程序代码过程头和过程尾。
1)在OK_Click事件中输入下面代码:
Label1.Caption=“您好,世界”
2)在Cancel_Click事件中输入下面代码:
Unload Me
5.保留文件:
1)选择文件菜单中工程另存为保留工程文件SY1.vbp
2)选择文件菜单中Form另存为保留窗体文件SY1.frm
6.程序运行:
1)在运行菜单中选择开启菜单项。或:单击工具栏中开启按钮。
2)单击确定按钮。
3)单击退出按钮。
若程序不能正常运行,应用运行菜单中结束菜单项,终止程序运行,然后检验属性设置和程序代码是否有误,直到正常运行为止。程序正常运行后,应再一次存盘保留工程文件。
7、 编译应用程序:
选择文件菜单中生成firstapp.exe菜单项,出现生成工程对话框输入文件名SY.exe,单击确定按钮,生成应用程序。
试验二 次序程序设计
试验目标:
1、 掌握表示式,赋值语句正确书写规则。
2、 掌握常见函数使用。
3、 掌握InputBox和MsgBox使用。
试验内容:
1.编一个华氏温度和摄氏温度之间转换程序,运行界面图2-1所表示。要使用转换公式是:
F=9C/5+32 ‘摄氏温度转化为华氏温度,F为华氏
C=(F-32)5/9 ‘华氏温度转化为摄氏温度,C为摄氏
要求用按钮实现转换。即单击“华氏转”按钮,则将摄氏温度转化为华氏温度。一样,单击“摄氏转”按钮,则将华氏温度转化为摄氏温度。
图 2-1
[试验目标]
掌握简单程序编写、输入数据方法、不一样数据类型转换。
[提醒和分析]
1)上述公式中右边变量F、C应该是有值,该值可经过Text1、Text2分别赋
值取得,然后经过公式计算得到转换结果。也能够不使用变量F、C,直接使用Text1、Text2进行计算。
2)Text文本框存放String类型,为了程序正常运行,应经过Val()函数将字符串转换为数值类型。
3)本题关键是将文本框内容怎样代到转换公式中。
2.使用Move方法移动标签,参见图2-2所表示。
3.使用Print方法,输出图2-3所表示图形。
图2-2
4. 输入半径,计算圆周长和圆面积。
深入要求,为了确保程序运行正确,对输入半径要进行正当性检验,若发觉输入数中有非法数字,利用MsgBox显示犯错信息,利用SetFocus方法定在犯错文本框处,重新输入。
图2-3
5. 利用计算机处理古代数学问题“鸡兔同笼问题”。即已知在同一笼子里有总数为m只鸡和兔,鸡和兔总脚数为n只,求鸡和兔各有多少只?
[试验目标]
掌握InputBox函数、MsgBox过程使用;利用计算机解初等数学题;为了确保有正确解,提前使用If语句。
[提醒和分析]
1)m,n经过InputBox()函数取得;鸡、兔只数经过已知m,n列出方程可解,但不要求出荒唐解(比如3.5只鸡、4.5只兔,或求得只数为负数),若出现荒唐解,要求显示相关信息,并重新输入。
2)设x为鸡只数,y为兔子只数;已知总头数m和脚数n,则
x + y = m
2x + 4y = n
得 y = n / 2 –m
x = m – y
从公式推得:当总脚数是偶数而且脚数在二至四倍头数之间(2m<n<4m)时,才可有正确解。判定一个数是否是偶数,只要经过判定Mod 2是否为0即可。二条件在程序中表示为:n mod 2 = 0 和 n > 2*m and n < 4*m .
3) 算例:头数取1、1、2、20时脚数对应取4、2、6、100
试验三 选择结构程序设计
试验目标:
1、 掌握逻辑表示式正确书写形式。
2、 掌握单分支和双分支条件语句使用。
3、 掌握多分支条件语句使用。
4、 掌握情况语句使用及和多分支语句区分。
试验内容:
1.在购置某物品时,若所花钱x在下述范围内,所付钱y按对应折扣支付:
x x < 1000
0.9x 1000 ≤ x <
y = 0.8x ≤ x < 3000
0.7x x ≥ 3000
[提醒和分析]
1)此例用多分支if语句实现,注意计算公式和条件表示式正确书写。
2)多个条件,可有两种表示,
方法一:从小到大或从大到小依次一一表示;
方法二:不管次序,将条件区间列出。
2.某市公用电话收费标准以下:通话时间在3分钟以下,收费0.50元;3分钟以上,则每超出1分钟加收0.15元;在7:00—19:00之间通话者,按上述收费标准全价收费;在其它时间通话者,一律按收费标准半价收费。试计算某人在T时间通话S分钟,应缴多少电话费。运行界面图3-1所表示。
图3-1
[试验目标]
1)利用前面学过选择结构,学会用计算机处理时间问题能力。
2)时间函数、子字符串函数、格式函数综合使用。
[提醒]
1)时间能够经过文本框输入;也能够经过Time时间函数求适当初通话时间。但要经过Cdate函数将字符串类型转换成日期类型,为(2)中计算通话时间做准备。比如:date1 = CDate(Text1.Text):date2 = CDate(Text2.Text)
2)通话时间能够经过DateDiff()函数将两个时间以秒为间隔形式相减。也能够利用Hour、Minute和Second分别取小时、分和秒,然后化成以秒为单位再相减。
比如:st = DateDiff("s", date1, date2) / 60
3)为了简化程序,以开始通话时间为是否享受半价收费记费方法。
试验四 循环结构程序设计
试验目标:
1、 掌握For语句使用。
2、 掌握Do语句多种形式使用。
3、 掌握怎样控制循环条件,预防死循环或不循环。
试验内容:
1、 编一个程序,显示出全部水仙花数。所谓水仙花数,是指一个3位数,其各位数字立方和等于该数字本身。比如,153是水仙花数,因为153=13+53+33。
[提醒和分析]
解该题方法有两种:
1)利用三重循环,将三个数连接成一个3位数进行判定。
比如,将1—9连接成一个位数,程序段以下:
s=0
For i=1 To 9
s=s * 10 + i
Next I
2)利用单循环将一个3位数逐位分离后进行判定。
比如,将一个9位数,从右边开始逐位分离,程序段以下:
s=
Do While s > 0
s1=s Mod 10
s=s \ 10
Print s1; ‘从右边开始显示分离出每一位
Loop
2、 递推法:猴子吃桃子。猴子在一天摘了若干个桃子,当日吃掉二分之一多一个;第二天接着吃剩下桃子二分之一多一个;以后天天全部吃尚存桃子二分之一另一个,到第七天早上要吃时只剩下一个了,问猴子那天共摘了多少个桃子?
[分析]
这是一个“递推”问题,先从最终一天推出倒数第二天桃子,再从倒数第二天桃子推出倒数第三天桃子……
设第n天桃子为Xn ,那么它是前一天桃子数Xn-1 二分之一减一。
即:Xn = 0.5 Xn-1 –1 也就是:Xn-1 = (Xn + 1 )×2
已知:当n=7第7天桃子数为1,则第6天桃子数由公式得4个,依次类推,可求得第一天桃子数。
3、 有一根长度为321m钢材料,要将它截取成两种规格短料,规格a、b
长度分别为17m和27m,每种最少1段,分割成a、b各多少段后,剩下残料r最少?
[分析]
该题利用二重循环求残料r最小值正数,因为残料不可能是负数,不然和实
际情况不符。
试验五 数据结构---数组
试验目标
1. 掌握数组申明、数组元素引用。
2. 掌握静态数组和动态数组使用差异。
3. 应用数组处理和数组相关常见算法。
试验内容
1.输入一串字符,统计各字母出现次数(大小写字母不区分),并对出现字母显示其出现个数,效果图5-1所表示。
图5-1
[分析]
1)统计26个字母出现个数,必需申明一个含有26个元素数组,每个元素下标表示对应字母,元素值表示对应字母出现次数。
2)从输入字符串中逐一取出字符,转换成大写字符(使得大小写不区分),进行判定。比如:c = UCase(Mid(Text1, I, 1))
2.要求输入若干同学成绩,计算平均分和高于平均分人数,并将这两项放在该数组最终。参见图5-2所表示。
图5-2
试验六 常见控件
试验目标:
1、 掌握常见控件关键属性、事件和方法。
2、 掌握常见ActiveX控件特征,熟练应用这些高级控件进行编程。
3、 初步掌握创建基于图形用户界面应用程序过程。
4、 熟练掌握键盘事件、鼠标事件及其事件过程编写技艺。
5、 掌握一般拖放和OLE拖放原理,掌握实现拖放方法。
试验内容:
1.编写一个运行界面图6-1所表示程序。用户能从“饭店菜单”把选定“菜”添加到下面列表框中。
要求:“饭店菜单”列表框支持多项选择
[提醒] 图6-1
假定“饭店菜单”和“我点菜”列表框名称分别为List1和List2。因为需要在List1中能够进行多项选择,所以MultiSelect属性应设为1或2,而且在“添加”事件过程中不能简单地用List2.AddItem List1.Text语句添加项目。应编写以下程序:
Sub Command1_Click()
For i=0 To List1.ListCount-1
If List1.Selected(i) Then
List2.Addltem List1.List(i)
End If
Next
End Sub
2.设计一个运行界面图6-2所表示字幕滚动程序。要求用时钟控件和滚动条调整和控制字幕滚动速度,文字大小及距离窗体顶端距离是随机,从右向左连续滚动。
[试验目标] 图6-2
掌握滚动条、时钟使用原理。
[提醒和分析]
1)FontSize属性不能为0,所以用Int (1+Rnd * 30) 产生一个1—30数作为字体
2)字幕“Windows XP汉字世界……”是标签(Label1)标题,用Move方法实现滚动,经过改变移动步长控制移动速度。每次移动高度是随机,用Int(Rnd * ScaleHeight)表示式决定;字体大小也是随机,由Int(1 + Rnd * 30)决定。
3.编写一个运行界面图6-3所表示点菜程序。用户能从“饮料”和“主食”列表框中选择食品,然后拖动到“我中饭”列表框中。
要求;用拖动方法实现。
图6-3
[提醒和分析]
1)当源对象被拖动时,源对象作为Source参数传入事件过程中,Source代表源对象,经过Source.Name属性能够确定被拖动是哪个列表框。在目标列表框DragDrop事件过程中,将源列表框中选定项目添加到目标列表框中,然后删除。
2)“饮料”和“主食”列表框只能用Drag方法手工开启拖操作,不能使用自动拖放模式。因为假如设置自动拖放模式,拖动对象是整个列表框,无法选定其中项目。在“我中饭”列表框DragDrop过程中经过Source参数可能知道源控件是哪一个列表框,Source.Name属性指示源控件名称。
试验七 界面设计
试验目标:
1、 学会使用对话框进行编程。
2、 掌握窗口菜单、弹出式菜单和实时菜单设计方法。
3、 掌握工具栏、图象列表框控件使用。
4、 掌握状态栏控件使用。
5、 掌握RichTextBox控件使用。
6、 综合应用所学知识,编制含有可视化界面应用程序。
试验内容:
1.设计一个运行界面图7-1所表示应用程序。当选择“改变标签标题颜色”按纽后,弹出颜色对话框,为标签标题选择一个颜色;当选择“编辑文本文件”按钮后,弹出打开文件对话框,选择一个文本文件后调用记事本程序编辑该文件。
图7-1
[试验目标]
掌握通用对话框使用方法和使用Shell函数运行程序方法
[提醒和分析]
1)尽管程序中用到了颜色和打开文件两个对话框,不过实际上只需一个通用对话框控件CommonDialog。
2)能够使用Shell函数运行记事本程序。注意在记事本程序名和所选一个文件名之间要有一个空格符。
3)需要经过“工程1部件”命令选择Microsoft Common Dialog Control 6.0选项,将CommonDialog控件添加到工具箱。
4)要使通用对话框能弹出颜色对话框,使用ShowColor方法,比如:CommonDialog1.ShowColor. 颜色对话框经过Color属性返回所选择颜色,将其值给予标签ForeColor属性即可改变标签前景颜色。比如:Label1.ForeColor=CommonDialog1.ShowColor
5)对于同一通用对话框,要使其能显示成文件打开对话框形式,可在另一事件中使用ShowOpen方法。通用对话框FileName属性提供所选择文件名,将记事本程序名(包含目录路径名)和所选择文件名组成一个字符串,作为Shell函数参数即可经过记事本程序打开所选择文件。在结构字符串时记事本程序名notepad.exe和所选择一个文本文件名之间必需要有一个空格符。
比如:i=Shell(“C:\Winnt\notepad.exe ”& CommonDialog1.FileName,1)
2. 在窗体上放置一个文本框,设置它Multiline属性为True.设计一个含有2个主菜单项菜单系统,分别为“菜单1”和“菜单2”。其中,“菜单1”包含“清除”、“结束”两个菜单命令。“菜单2”包含“12号字体”、“16号字体”、“粗体”、“斜体”4个菜单命令,图7-2和图7-3所表示。为菜单项编写相关程序代码:
图7-2 图7-3
“清除”命令:清除文本框中所显示内容。
“12号字体”或“16号字体”命令:把文本框汉字本字体大小设置为12或6磅。
“粗体”或“斜体”命令:在菜单项左边加上或取消标识“√”,控制文本框中文本字型改变。
窗体上“菜单2”显示是否和文本框中有元内容相关,当清除文本框中内容时,隐藏“菜单2”,当文本框中输入信息后,显示“菜单2”。另外可经过鼠标右键弹出“菜单2”。
[试验目标]
掌握窗体菜单制作;掌握在程序中改变窗体菜单属性方法;掌握动态改变菜单项方法和掌握弹出菜单制作和显示方法。
[提醒和分析]
1)在菜单项左边加上或取消标识“√”可使用代码:
菜单项名.Checked=Not菜单项名.Checked
2) 文本框内文本粗体字控制可使用代码:
Text1.FontBold= 菜单项名.Checked或Text1.FontBold=Not Text1.FontBold
斜体字控制可类似地使用FontItalic属性。
3) 利用菜单2Visible属性控制菜单显示和隐藏。在文本框Chang事件进行设置。
4)建立一个有菜单功效文本编辑器大致可分成以下三个步骤.
步骤一: 建立控件
本例中只要在窗体上放置一个文本框(设置滚动、多行属性)和一个通用对话框.
步骤二: 设计菜单
打开菜单编辑器,按要求对每一个菜单项输入标题、名称和选择对应快捷键.
步骤三: 对菜单建立好以后,对对应Click事件编程.
5)在程序中改变菜单项Checked、Enabled属性常见方法;
菜单项名.Checked=Not菜单项名.Checked
菜单项名.Enabled=Not菜单项名.Enabled
6)动态改变菜单项最简便方法是改变菜单项Visible属性.当Text1 内容发生改变时触发Text1_Change事件。
7) 弹出菜单制作和一般菜单相同,程序运行时使用Popupmenu方法显示弹出菜单。
3.在试验2“菜单1”子菜单“清除”前添加一个“查找”菜单命令。并和“清除”菜单命令之间有一条分隔线,单击“查找”菜单命令,显示图7-4所表示查找对话框,当在文本框内输入内容时,可在主窗体文本框内查找指定内容。
图7-4
[试验目标]
掌握窗体菜单编辑修改;掌握创建自定义对话框方法;掌握多冲窗体使用,窗体间数据传输方法。
[提醒和分析]
1)创建自定义对话框能够从新窗体着手,通常来说,用户通常不需要对它进行移动、改变尺寸、最大化或最小化等操作。经过设置BorderStyle、ControlBox、MaxButton和MinButton属性,可使对话框大小固定,删除窗体“控件”菜单框、“最大化”按钮和“最小化”按钮这些项目。
2)窗体之间数据传输可经过在类模块文件中申明全局变量完成,也能够直接使用控件。若使用控件前加窗体名前缀。本例经过控件传输数据。
3)使用InStr函数能够判定字符串1是否包含字符串2内容,及所在位置。经过文本框SelLength属性可用负像显示查到字符。为了能查找出多个相同字符,在InStr函数中使用参数指示查找起始位置。因为该参数受到上次搜索影响,需要将其申明为静态类型变量。
4.在试验3基础上按菜单功效添加工具栏,在窗体下方加入有2个窗格状态栏,第1个窗格在按下Shift、Ctrl和Alt键时显示对应键名,第2个窗格显示时钟。
[试验目标]
掌握窗体菜单工具拦制作;掌握响应ToolBar控件事件方法;掌握状态栏制作和程序运行时控件方法。
[提醒和分析]
1) 建立窗体工具栏和状态栏,必需要经过Microsoft Windows Common Controls 6.0选项将控件添加到工具箱。在 建立窗体工具栏和状态栏,必需要经过Microsoft Windows Common Control 6.0选项将控件添加到工具栏。在ImageList控键图象,建立ToolBar控件和IMageList控件连接,在ToolBar控件中添加按钮。
2)“菜单1”所提供功效各自独立,按钮样式采取一般按钮。“菜单2”中字号大小设置只许可选择其中一项,故按钮样式需采取编组按钮或菜单按钮。本例采取菜单按钮设置字号。字体形式在选择后能保持按钮按下状态,可采取开关按钮样式。为便于编程,对每个按钮设置标识名。
3)对菜单按钮在Toolbar_ButtonMenuClick事件使用“Select Case ButtonMenu.Key”调用对应菜单事件过程,响应所做选择。其它类型按钮在Toolbar1_ButtonClick事件中使用“Select Case Button.Key”语句响应所做选择。
4)使用KeyDown或KeyUp事件判定对键盘操作。KeyDown事件提供keycode和shift两个参数,keycode参数为所按键键代码,shift参数是响应Shift键、Ctrl键和Alt键状态一个整数,分别对应于值1、2和4。当这些键组合在一起时,shift返回它们组合值。比如,同时按下Ctrl和Alt这两个键,则shift值为6。
5)StatusBar控件是由Panels集合组成。能够把Panels集合看做数组,每个窗格Panels对象是Panels一个元素。能够经过Text、Picture和Width属性改变任何Panels对象文本、图象或宽度。要在窗格内显示所按键名,使用StatusBar1.Panels(1).Text属性。
试验八 文件
试验目标:
1、 文件系统控件使用。
2、 文件和目录操作语句和函数使用。
3、 掌握次序文件、随机文件及二进制文件特点和使用。
4、 掌握文件打开、关闭和读写操作。
5、 学会文件在应用程序使用。
试验内容:
1.建立一个文本浏览器。窗体上放置驱动器列表框、目录框、文件列表框和两个文本框,图8-1所表示。
要求:
(1)文件列表框能过滤文本文件。
(2)当单击某文本文件名后,在Text1显示文件名(包含路径),在Text2显示该文件内容;
(3)当双击某文件名后,调用记事本程序对文本文件进行编辑。 图8-1
[试验目标]
掌握文件系统控件使用、文本文件内容读取和显示、应用程序调用和对应文档读取。
[提醒和分析]
1)第(2)小题利用次序文件读写语句,将磁盘上文件读入,并在文本框显示。
2)第(3)小题调用Shell函数,实施记事本可实施程序,并带有文本文件为参数。
3)文件系统控件关联只要两个事件;文本文件通常经过Line Input语句读取较安全、方便,但显示时要加入回车、换行符;应用程序调用利用Shell函数,同时要将对应文档打开,二者之间必需加空格。
2.建立一个含有3个学生三项内容文本文件,内容中分别为姓名、专业、年纪,前二项字符串,后一项整形。单击“建立”按钮,分别利用:
Print # 文件号,[输出列表]
Write #文件号,[输出列表]
两种格式同时建立两个文件,文件名分别为c:\t1。txt和c:\t2.。txt(打开两个文件,以不一样文件号区分)。单击“显示”按钮,从磁盘以行读方法分别读人刚建立两个文件,并分别在两个文本框显示,比较之间区分。运行结果图8-2所表示。
[试验目标] 图8-2
掌握次序文件建立,读取,Print、Write语句使用和区分。
3.Print方法和Print语句比较。在窗体上显示图8-3所表示图形,并将该图形同时以文本文件A:\Tu. Txt写到磁盘上,经过文本编辑器显示建立文件。
[试验目标]
掌握Print方法和Print语句使用
和区分,掌握有规律字母生成。
[分析] 图8-3
该题较简单,Print方法在循环控制结构中已介绍,作用结果显示在窗体或图形框上;Print语句处理相同,仅输出到磁盘上。
试验九 图形技术
试验目标:
1、了解Visusl Basic图形功效。
2、掌握建立图形坐标系方法。
3、掌握Visusl Basic图形控件和图形方法。
4、掌握常见几何图形绘制。
5、掌握简单动画设计方法。
6、掌握实现图形漫游方法。
试验内容:
1.绘制图9-1所表示图形(不包含尺寸)。
图9-1
2.在Form1建立一个坐标系。X轴正向向右,Y轴正向向上,原点在窗体中央。在坐标系上用Line方法绘制-2π—2π之间正弦曲线,图9-2所表示。
图9-2
[试验目标]
掌握坐标系定义方法;掌握使用Line方法绘制图形;了解CurrentX 、CurrentY属性功效。
[提醒和分析]
(1) 坐标系定义可Scale方法。因为要求坐标系原点在窗体中央,而要绘制 正弦曲线在(-2π,2π)之间,考虑到四面空隙,故X轴范围可定义在(-8,8),Y轴范围可定义在(-2,2)之间。可采取Scale(-8,2)-(8,-2)定义坐标系。
(2) 坐标轴用Line方法画出。
(3) X轴上坐标刻度线两端点坐标满足(i,0)-(i, y0)。其中y0为一定值。 可用循环语句,改变i值来标识X轴上坐标刻度。类似地可处理Y轴上标识坐标刻度。
(4) 坐标轴上刻度线数字标识,可经过CurrentX、CurrentY属性设定目前位置,然后用Print输出对应数字。标识数字可结合在分析(3)循环上一起完成。
(5) 正弦曲线可用Line方法或Pest方法画出,为使曲线光滑,相邻两点间距应合适小。本题用Line方法绘制正弦曲线,相邻两个x点间距取0.01。
3.设计一个图9-3所表示指针式时钟。
[试验目标] 掌握简单动画设计方法。
图9-3
[提醒] Visusl Basic坐标系中,采取逆时针绘圆,而时钟指针移动按顺时针方向,故指针和坐标轴夹角α必需乘以-1。另外,时钟指针和参考点夹角需调整π/2。
(1) 钟指针经过圆心,故指针另一端点和原点连线和坐标轴夹角还需调整π。
(2) ss=Second(Time)为目前秒数,秒针要指在对应刻度线上,则
α=-(ss×2π/ 60)+π/ 2,
设mm=Minute(Time)为目前分数,分针和坐标轴夹角
α=-(mm×2π/ 60)+π/ 2,
hh=Hour(Time)为目前时数,时针和坐标轴夹角
α=-(hh×2π/ 12+mm×π/ 360)+π/ 2.
(3) 钟指针两端点坐标:
x1=R1 cos α , y1=R1 sin α ; x2=R2 cos (α + π) , y2=R2 sin (α + π)
(4) 针移动由时钟控件Timer事件触发。
试验十 程序调试和错误处理
试验目标:
1、掌握VB中常见程序调试方法和工具。
2、熟悉VB中程序调试环境。
3、掌握VB中常见程序错误捕捉和处理。
试验步骤:
按下面步骤建立这个程序:
(1) 运行Visual Basic 6.0并建立标准工程。
(2) 单击工具栏中Label控件,在Form1窗体上绘制一个标签,并将其 Caption属性设为“请输入(0—20)之间整数”。
(3) 单击工具栏中Text控件,并在Form1窗体上绘制一个文本框,然后 将其Text属性设置为空。
(4) 单击工具栏中CommandButton控件,并放置在窗体中,将其Caption属性设为“计算阶乘”。
(5) 最终再放置两个标签到窗体Form1中,属性采取缺省值。
图11-1显示了设计好界面。在这个程序中需要处理事件过程只有Command1_Click。在该过程中,需要进行参数检验和阶乘计算。这里编写了两个程序段来完成这两个功效。
1)检验参数程序段用来检验用户输入参数。返回值是检验过正当参数。
2)利用循环计算一个数阶乘值。它返回计算结果。
图11-1
程序代码以下:
‘将用户输入转化为数值参数
Dim n As Integer, JieCheng As Integer
n = Val (Text1.Text)
‘检验用户输入是否有效
‘假如输入错误,则提醒用户重新输入
‘输入正确,就把检验过参数作为结果返回
If n> 20 And n < 0 Then
Label2 . Caption = “输入错误!请重新输入!”
‘清除标签上以前显示结果
Label3.Caption=“ ”
Else
Label2.Caption=“结果是: ”
Label3.Caption = "" ‘清除标签上以前显示结果
If n=0 or n=1 Then
JieCheng =1
Else
‘不然,循环求解
JieCheng=1 ‘变量付初值
For i = 1 To n
Jieheng = JieCheng * i
Next i
End If
Label3.Caption=JieCheng
End If
到此,完成了这个程序编写.下面测试程序运行.
(1) 按F5键运行程序,并在文本框中输入0,单击[计算阶乘]按钮,得到图11-2所表示结果.这个结果示正确.
图11-2 图11-3
(2) 测试计算-1阶乘,正常情况下程序应显示输入错误等提醒.在文本框中输入”-1”,单击[计算阶乘]按钮,这时看到图11-3所表示结果.显然这个结果和预期不符,是错误.下面就来查找该错误.因为输入无效参数-1时程序并没有显示犯错提醒,所以推测在检验参数代码中出现了问题.
(3) 打开代码窗口,在检验参数处设置断点,方便程序在检验参数之前中止运行,这么能够查看程序状态和中间结果.加入断点操作可按下面步骤进行:
1).在代码窗口中,把光标移动到要加断点一行.(If n> 20 And n < 0 Then)
2) 打开调试菜单,单击[切换断点]菜单项或按F9键,这时所选语句出现一条红色亮条,标志所设断点处.图11-4显示了加入断点处情况.
图11-4 图11-5
3)假如要去除断点,能够打开[调试]菜单,单击[切换断点]菜单或按F9键,也能够打开[调试]菜单,单击[清除全部断点]菜单项以清除全部断点
(4) 按F5键运行程序.在文本框中输入“-1”,单击[计算阶乘]按钮,这时程序在断点处中止,图11-5 所表示.
(5) 在实施到if语句处时,打开[视图]菜单,单击[立即窗口]菜单项,这时桌面上出现了[立即]窗口.在[立即]窗口中输入“?n”,观察程序接收到参数植.图11-6显示了[立即]窗口使用效果.[立即]窗口中显示n值为-1,说明程序接收到参数是正确,错误可能在后面.
下面单步实施,以跟踪检验参数这部分代码运行.
图11-6 图11-7
(6) 打开[调试]菜单,单击[逐语句]菜单项或按F8键单步实施.这时,程序转入Else语句运行,图11-7所表示.
(7) 现在发觉问题就出在这里,因输入-1不在0-20之间,程序应实施Label2.Caption=“输入错误!请重新输入”语句,以显示输入错误提醒,而现在没有实施这条语句,所以在If判定语句中条件设置可能有问题.仔细查看If 语句,发觉果然有问题,这条语句写是: If x>20 and x<0 Then
“x>20 and x<0”是一对矛盾条件,所以不管输入什么数字,程序全部不会实施显示犯错信息语句.应该把条件改成“x>20 or x<0”,再按F5键运行.程序运行结果图11-8 所表示.
现在程序已经显示犯错信息,说明参数检验部分已正常工作.
图11-8
(8) 关闭正在运行程序,打开[调试]菜单,单击[清除全部断点]菜单项,然后按F5键运行程序.在输入文本框中输入5,再单击[
展开阅读全文