第五章 程序设计与软件工程基础
实验十一 VB 6.0的基本操作
学 号: 姓名: 成绩:
学院(系): 专业: 班级:
一、实验要求
1.上机实验前必须认真阅读整个实验内容,并认真学习配套教材上的相关知识。
2.上机实验后,请完成实验步骤部分的填空。
3.完成回答问题部分的所有问题。
4.上机完成修改程序部分的操作。
5.将完成后的整个实验内容作为实验报告,并从裁剪线处剪下交给任课教师。
二、实验目的
1.熟悉Visual Basic 6.0的集成开发环境。
2.掌握用Visual Basic 6.0编程的一般步骤。
3.学会使用窗体对象,以及在窗体上设计应用程序界面。
4.掌握CommandButton、PictureBox、TextBox等控件的建立及使用方法。
5.学会设置窗体和其他控件的属性。
6.掌握Click事件的使用方法,理解事件驱动过程。
三、实验内容
创建一个工程,该工程包含窗体FormPicture和FormText。窗体FormPicture用于显示和清除图片,窗体FormText用于显示和清除文本。具体要求如下:
1.在窗体FormPicture上,用程序实现图片的显示与清除。窗体上有四个控件:图片框Picture1用于显示图片;命令按钮Command1用于驱动Command1_Click()事件,完成显示图片的任务;命令按钮Command2用于驱动Command2_Click()事件,完成清除图片的任务;命令按钮Command3用于驱动Command3_Click()事件,完成转向窗体FormText的任务。
2.在窗体FormText上,用程序实现文本的显示与清除。窗体上有四个控件:文本框Text1用于显示文本内容;命令按钮Command1用于驱动Command1_Click()事件,完成显示文本的任务;命令按钮Command2用于驱动Command2_Click()事件,完成清除文本的任务;命令按钮Command3用于驱动Command3_Click()事件,完成转向窗体FormPicture的任务。
四、实验步骤
1.执行“文件”菜单中的“新建工程”命令创建一个新工程,同时系统自动为新工程创建一个名字为Form1的窗体。
2.执行“工程”菜单中的“添加窗体”命令再新建一个名字为Form2的窗体。
3.双击工程资源管理器窗口中的Form1窗体使窗体Form1被选中,在属性窗口中将Form1的Name(名称)属性设置为FormPicture。
4.在窗体FormPicture上,用工具箱上的图片框PictureBox创建控件Picture1,用命令按钮CommandButton创建对象Command1、Command2和Command3。窗体界面如图5-1所示。
图5-1
5.选中窗体FormPicture上的每一个控件,在属性窗口中依次为他们设置表5-1所示的属性值。
表5-1 FormPicture上控件的属性设置
控件名称
属性
属性值
控件名称
属性
属性值
FormPicture
Caption
显示或清除图片
Command2
Caption
清除图片
Picture1
AutoSize
True
Font
宋体5号
Command1
Caption
显示图片
Command3
Caption
转文本窗口
Font
宋体5号
Font
宋体5号
6.双击窗体FormPicture上的命令按钮Command1进入代码编辑窗口,然后输入以下程序。
Rem Command1_Click()事件完成显示图片任务
Private Sub Command1_Click()
Picture1.Picture = LoadPicture("D:\lj\tp.bmp")
'用LoadPicture()在图片框中装入图形,装入的图形可自己设置
End Sub
Rem Command2_Click()事件完成清除图片任务
Private Sub Command2_Click()
Picture1.Picture = LoadPicture()
'装入一个空图形时可删除图片框中原来的图形
End Sub
Rem Command3_Click()事件完成转换窗口任务
Private Sub Command3_Click()
FormPicture.Hide '隐藏窗体FormPicture
FormText.Show '显示窗体FormText
End Sub
说明:图片框PictureBox控件的主要作用是为用户显示图片,也可以作为其他控件的容器。可显示的图片格式有.bmp、.ico、.jpg、.gif等。图片框的AutoSize属性设置为True时,图片框能自动调整大小与显示的图片匹配;设置为False时,图片框不能自动调整大小来适应其中的图片。
7.双击工程资源管理器窗口中的Form2窗体使窗体Form2被选中,在属性窗口中将Form2的Name(名称)属性设置为FormText。
8.在窗体FormText上,用工具箱上的文本框TextBox创建控件Text1,用命令按钮CommandButton创建对象Command1、Command2和Command3。窗体界面如图5-2所示。
图5-2
9.选中窗体FormText上的每一个控件,参照表5-1和图5-2,在属性窗口中依次为他们设置属性值,最后填上表5-2中的空。
表5-2 FormText上控件的属性设置
控件名称
属性
属性值
控件名称
属性
属性值
FormText
Caption
Command1
Caption
Text1
Caption
Font
宋体小5号加粗
BorderStyle
1
Command2
Caption
ForeColor
蓝色
Font
宋体小5号加粗
Font
隶书三号
Command3
Caption
返图片窗口
Font
10.双击窗体FormText上的命令按钮Command1进入代码编辑窗口,然后输入以下程序。
Rem Command1_Click()事件完成显示文本任务
Private Sub Command1_Click()
Text1.Text = "欢迎使用Visual Basic" '设置Text的值
End Sub
Rem Command2_Click()事件完成清除文本任务
Private Sub Command2_Click()
Text1.Text = "" '清除Text的值
End Sub
Rem Command3_Click()事件完成转换窗口任务
Private Sub Command3_Click()
Formtext.Hide '隐藏窗体FormText
Formpicture.Show '显示窗体FormPicture
End Sub
11.执行“运行”菜单中的“启动”命令运行程序,屏幕上显示FormPicture窗体的界面,单击命令按钮“显示图片”可驱动Command1_Click()事件,在图片框中显示图片,如图5-3(a)所示;单击命令按钮“清除图片”可驱动Command2_Click()事件,清除图片框中的图片;单击命令按钮“转文本窗口”可驱动Command3_Click()事件,屏幕上显示FormText窗体的界面。
12.在FormText窗体的界面上,单击命令按钮“显示文本”可在文本框中显示文本,如图5-3(b)所示;单击命令按钮“清除文本”可清除文本框中的文本;单击命令按钮“返图片窗口”可在屏幕上显示FormPicture窗体的界面。
(a) (b)
图5-3
13.当运行程序能完成设计要求时,执行“运行”菜单中的“结束”命令或单击窗体界面上的关闭按钮可以结束当前程序的运行。
14.执行“文件”菜单中的“工程另存为”命令来保存工程,文件名为sy6_1.vbp。
15.双击工程资源管理器窗口中的FormPicture窗体使窗体FormPicture被选中,执行“文件”菜单中的“FormPicture另存为”命令来保存窗体,窗体文件名为sy6_1_1.frm;双击工程资源管理器窗口中的FormText窗体使窗体FormText被选中,执行“文件”菜单中的“FormText另存为”命令来保存窗体,窗体文件名为sy6_1_2.frm。
五、回答问题
1.运行程序时,命令按钮的执行顺序必须为显示图片、清除图片、转文本窗口吗?请用事件驱动的程序设计思想来简答本题。
答:
2.执行“工程”菜单中的“工程属性”命令打开“工程属性”对话框,在对话框的“启动对象”的下拉列表框中选择“FormText”,即设置启动对象为FormText。请问重新设置启动对象后,再运行程序时首先显示的窗体是哪一个?
答:
3.文本框中显示的文本是什么颜色?请写出在属性窗口中将文本颜色改成红色的操作过程以及在程序中设置文本颜色为红色的语句行。
答:
六、修改程序
1.将FormPicture窗体中命令按钮“显示图片”的单击事件修改如下:
Private Sub Command1_Click()
tp$= InputBox$("请输入图片所在的位置和名字!","输入图片名","d:\lj\tp.bmp")
Picture1.Picture = LoadPicture(tp)
End Sub
2.运行程序,在FormPicture窗体界面上单击命令按钮“显示图片”,打开“输入图片名”的输入对话框,如图5-4所示。在对话框中输入要显示的图片的位置和文件名,然后单击“确定”按钮或按下回车键,相应的图片就显示在图片框中。
图5-4
实验十二 学生成绩统计
学 号: 姓名: 成绩:
学院(系): 专业: 班级:
一、实验要求
1.上机实验前必须认真阅读整个实验内容,并认真学习配套教材上的相关知识。
2.完成回答问题部分的所有问题。
3.上机完成修改程序部分的操作。
4.将完成后的整个实验内容作为实验报告,并从裁剪线处剪下交给任课教师。
二、实验目的
1.掌握程序界面的设计过程。
2.掌握ListBox、Frame控件的建立及使用方法。
3.进一步体会属性设置的过程和方法。
4.学会使用数组来组织数据。
5.掌握Load、SetFocus、GotFocus事件的使用方法,进一步理解事件驱动过程。
三、实验内容
创建一个能完成对学生成绩进行输入、统计、显示的工程,该工程包含一个窗体Form1。具体要求为:
1.程序运行时,由用户在文本框中输入学生人数,以及每个学生的学号、数学成绩、语文成绩和英语成绩。
2.输入完一个学生的各项内容后,立即计算出三门课的总分,然后将该学生的全部信息添加到列表框List1中。
3.按学生总分的降序排列在列表框List2中显示出各学生的情况。
图5-5
四、实验步骤
1.执行“文件”菜单中的“新建工程”命令创建一个新工程,同时系统自动为新工程创建一个名字为Form1的窗体。
2.在窗体上,利用工具箱创建三个标签控件Label5、Label6、Label7,用于显示提示文本;创建一个文本框控件Text5,用于输入学生人数;创建两个列表框控件List1、 List2,用于显示所有学生的各项信息。
3.利用工具箱上的Frame控件创建一个框架Frame1,并在其中创建四个标签控件Label1、Label2、Label3、Label4,用于显示学号和各科成绩名称;创建四个文本框控件Text1、Text2、Text3、Text4,用于输入学生的学号和成绩。
4.通过移动窗体上各个控件的位置和调整控件的大小来合理布置、美化窗体界面,窗体界面如图5-5所示。
5.选中窗体上的每一个控件,在属性窗口中依次为他们设置表5-3所示的属性值。
表5-3 设置控件属性
控件名称
属性
属性值
控件名称
属性
属性值
Form1
Caption
成绩输入及统计
Label1
Caption
英语
Frame1
Caption
输入学号及各科成绩
Font
宋体5号
Font
宋体5号加粗
Text1
Caption
空白
Label7
Caption
按总分降序显示学生的情况
Font
宋体5号
Font
宋体5号加粗
Text2
Caption
空白
Label6
Caption
按输入顺序显示学生的情况
Font
宋体5号
Font
宋体5号加粗
Text3
Caption
空白
Label5
Caption
输入学生人数
Font
宋体5号
Font
宋体5号加粗
Text4
Caption
空白
Label4
Caption
学号
Font
宋体5号
Font
宋体5号
Text5
Caption
空白
Label3
Caption
语文
Font
宋体5号
Font
宋体5号
List1
List
空白
Label2
Caption
数学
List2
List
空白
Font
宋体5号
6.双击窗体进入代码编辑窗口,然后输入以下程序。
Dim cj() As Integer, n%, n1%, i%, j%, t% '定义全局变量及动态数组
Rem Form_Load()用于初始化
Private Sub Form_Load()
Text1=""
Text2=""
Text3=""
Text4=""
Text5=""
n1=0
End Sub
Rem Text5_LostFocus()根据输入的学生人数重定义数组
Private Sub Text5_LostFocus()
n=Val(Text5.Text) '将输入的学生人数存入变量n中
ReDim cj(n,5) '重新定义数组cj
Rem 下一语句的功能是在List1中添加一个列表项,内容为标题说明
List1.AddItem "学号 语文 数学 英语 总分"
End Sub
Rem Text4_LostFocus()用于计算总分并将学生成绩存到数组中、添加到List1中
Private Sub Text4_LostFocus()
Text1.SetFocus '使控件Text1获得焦点
n1=n1+1 '其中存放已经输入了各项信息的学生人数
cj(n1,1)=Val(Text1.Text) 'cj(n1,1)中存放第n1个学生的学号
cj(n1,2)=Val(Text2.Text) 'cj(n1,2)中存放第n1个学生的语文成绩
cj(n1,3)=Val(Text3.Text) 'cj(n1,3)中存放第n1个学生的数学成绩
cj(n1,4)=Val(Text4.Text) 'cj(n1,2)中存放第n1个学生的英语成绩
cj(n1,5)=cj(n1,2)+cj(n1,3)+cj(n1,4) '计算总分并存入数组元素cj(n1,5)中
Rem 下一语句的功能是在List1中添加一个列表项,即第n1个学生的全部信息
List1.AddItem cj(n1,1) & " " & cj(n1,2) & " " & cj(n1,3) _
& " " & cj(n1,4) & " " & cj(n1,5)
Text1=""
Text2=""
Text3=""
Text4=""
If n1=n Then
Frame1.Enabled=False '使控件Frame1不允许操作
List2.SetFocus '使控件List2获得焦点
End If
End Sub
Rem List2_GotFocus()将学生信息按总分降序显示在List2中
Private Sub List2_GotFocus()
List2.AddItem "学号 语文 数学 英语 总分"
For i=1 To n '该双循环是用选择法完成成绩的排序
For j=i+1 To n
If cj(i,5) < cj(j,5) Then
T=cj(i,5): cj(i,5)=cj(j,5): cj(j,5)=T '交换数据
T=cj(i,4): cj(i,4)=cj(j,4): cj(j,4)=T
T=cj(i,3): cj(i,3)=cj(j,3): cj(j,3)=T
T=cj(i,2): cj(i,2)=cj(j,2): cj(j,2)=T
T= j(i,1): cj(i,1)=cj(j,1): cj(j,1)=T
End If
Next j
List2.AddItem cj(i,1) & " " & cj(i,2) & " " & cj(i,3) _
& " " & cj(i,4) & " " & cj(i,5)
Next i
End Sub
说明:框架控件Frame的功能是将窗体上的控件分组,当框架移动时,其中的控件也跟着移动。程序运行时,若将框架的Enabled属性设置为False,则该框架中的所有控件都不允许操作;若将框架的Visible属性设置为False,则该框架中的所有控件都不可见。
列表框控件ListBox的功能是用于列出可供用户选择的多个项目列表。属性List用于访问列表框的所有列表项。方法AddItem用于在程序代码中为列表框添加列表项,格式为:
[对象].AddItem 列表项[,索引]
其中:列表项是要添加的字符串表达式;索引指明列表项添加的位置,省略时表示在列表框的最后添加。
7.执行“运行”菜单中的“启动”命令运行程序,屏幕上显示窗体界面,在相应的文本框中输入学生人数、学号及各科成绩,如图5-6(a)所示,输入时可按Tab键跳到下一个输入框。当所有学生的信息输入完毕时就会在List2(下面的框)中按总分降序显示学生情况,如图5-6(b)所示。
(a) (b)
图5-6
8.当运行程序能完成设计要求时,执行“运行”菜单中的“结束”命令或单击窗体界面上的关闭按钮可以结束当前程序的运行。
9.执行“文件”菜单中的“工程另存为”命令来保存工程,文件名为sy6_2.vbp;
执行“文件”菜单中的“Form另存为”命令来保存窗体,窗体文件名为sy6_2.frm。
五、回答问题
1.在属性窗口中将控件List1的BackColor属性改成调色板上的浅恢色,将List2的Visible属性改成False,再运行程序时List1和List2会有什么改变?
答:
2.若输入的学生人数为5,当5个学生的相关信息都输入完后,还能在文本框中输入其他学生的成绩吗?若不能,请写出程序中完成此功能的程序语句。
答:
3.写出使List2_GotFocus()事件被驱动的语句。
答:
六、修改程序
修改下面的程序使其能按总分升序排列显示学生信息。
Private Sub List2_GotFocus()
List2.AddItem "学号 语文 数学 英语 总分"
For i=1 To n '该双循环是用选择法完成成绩的排序
For j=i+1 To n
If cj(i,5) < cj(j,5) Then
T=cj(i,5): cj(i,5)=cj(j,5): cj(j,5)=T '交换数据
T=cj(i,4): cj(i,4)=cj(j,4): cj(j,4)=T
T=cj(i,3): cj(i,3)=cj(j,3): cj(j,3)=T
T=cj(i,2): cj(i,2)=cj(j,2): cj(j,2)=T
T= j(i,1): cj(i,1)=cj(j,1): cj(j,1)=T
End If
Next j
List2.AddItem cj(i,1) & " " & cj(i,2) & " " & cj(i,3) _
& " " & cj(i,4) & " " & cj(i,5)
Next i
End Sub