第一篇:长江大学VB上机实习报告
计算机上机实习报告
学院:石油工程学院 班级:储运11204 姓名:魏亚荣
学号:XXXXXXX 班内序号:XX 指导教师:XXX
第 1 页
计算机上机实习报告
目录
一.系统名称----------------------------3 二.实习目的----------------------------3 三.系统功能概要----------------------3 四.系统设计分析----------------------3 五.窗体设计与程序代码------------5 六.心得体会---------------------------16
第页
计算机上机实习报告
一、系统名称----班级学生成绩管理系统
二、实习目的:
综合应用所学理论知识,联系实际开发一个具备简易功能的班级学生成绩管理系统。熟悉程序编写与调试,熟悉数据文件的创建、打开、读写、关闭等相关操作,同时让我们熟悉VB 6.0的开发环境,掌握基本的编程方法,熟悉用VB语言完成一个应用程序的设计过程,掌握有关编辑和调试程序的方法和技巧。
三、系统功能概要
1、用记事本新建一个文本文件,将本班的M名学生的有关信息及本学期的N门考试课的成绩(要求用假想分数,并要求将自己的每门课的放在第一列)输入到这个文件中,建议按如下形式存放(注:20≤M≤50、5≤N≤8,下文以M=10,N=5为例): 序号
姓名
幸运日
出生日期
英语
VB 数学
体育
专业课
作者自己
1992.12.19 99
98
10
张某
1993.08.06 77
80
5
李某
1994.11.16 89
99
3
王某
1993.06.04 56
43
2
刘某
1994.01.05 82
85
1
孙某
1994.01.15 45
66
4
赵某
1992.01.05 82
56
6
陈某
1993.12.25 86
66
9
周某
1666.12.23 56
65
8
钱某
1994.03.03 56
56
2、将本学期的N门课程及其学分(16学时为1个学分)输入到另一个数据文件(文件类型同上题)中,建议如下列形式存放:
编号
课程名称
课程学分
英语
5.0 2
vb程序设计
3
数学
4.5 4
体育
3.0 5
专业课
10.0 1)找出“出生日”与幸运日相同的人,并打印出其信息(每行输出一个人信息)2)统计出分别拥有幸运数字1,2,3,4,5,6,7,8,9,0的人数 3)能查出任何一个你感兴趣的人的信息 4)可新添加一个人的信息 5)和删除一个人的信息
第页
计算机上机实习报告
6)可以对某个人的幸运数字进行修改,只改变其幸运数字,其他信息不变
7)根据以上两文件内容分别计算每个学生N门课的加权平均分(保留2位小数,4舍5入),按平均分排列名次,平均分相同则名次并列,如第1、2、2、4、5、5、7…名。用VB创建一个数据文件,存放班级的成绩表,建议按以下形式存放。
学号
姓名
英语
vb程序设计
数学
平均成绩
名次
张某
80.5
2
李某
78.2
3
王某
88.8
4
赵某
68.5
8)分别统计全班每门课的平均分,并计算各分数段(60分以下;60~69;70~79;80~89;90分以上)的学生人数。用VB创建一个新的数据文件,在该文件中存放数据的格式如下:
范围.英语
VB
.>=90
.80-89
...............................9)打印每名学生成绩条(并将结果存放到用VB创建的一个新的数据文件中)。
10)打印所有存在不及格课程学生的名单(含学号、不及格课程名称、课程的学分及成绩)。11)打印优等生名单(学号、N门课成绩、平均分名次)优等生条件:
a)平均分 90分
b)名次在本班位于前三名
c)平均分85分,并且有二门课的成绩都 95分
选做内容:打印每门课成绩分布图
说
明:所有输出结果应写入用VB创建的文件中,格式要整齐,并有适当的文字说明。实习报告要求:应包括分析设计与说明、部分过程(函数)的源程序清单、程序调试过程中遇到的问题及解决方法,有待改善或改进的意见,对本次实习的意见与建议、收获等。其中原始数据及程序运行的结果应作为附录附于实习报告之后。
四、系统设计分析:
1、该成绩管理系统中要同时表示学生的学号、姓名、成绩等一些信息,及课程、课程学分等一些信息,由于每项信息的意义不同,数据类型也不同,但还要同时作为一个整体来描叙和处理,因此需要通过用户自定义来解决。所以在编程之前新建一个标准模块用来定义自定义类型。
2、为了便于后面执行求加权平均分、排名等命令,在Form1发生Load事件时应将学生信息和课程信息读取并放到两个数组中,由于这两个数组在该管理系统的全程序都要用到,因此应定义为全局类型。如是在标准模块中定义两个数组。
3、由于原始数据文件中相邻的两列之间空格的长短不一,因此在调用Split函数之前应窗体通用模块中自定义一个space1函数将原始数据文件中相邻的两列之间空格数变为相同。
4、在编写程序时,由于该系统的程序代码较多,因此在编写时要合理。
5、在打印成绩条、不及格名单、优等生等信息时,应边用write语句分别将数据存入一个新的文件中。
第页
计算机上机实习报告
6、实习必须按着老师的严格要求完成所有的实习任务,并整理成文件打印。
五.窗体设计与程序代码
1.此次窗体设计使用了11个命令按钮分别对应不同的系统功能要求,具体界面如下
2.程序代码
⑴统计“出生日”与幸运日相同的人
Dim stu()As student, n%, kc()As kecheng, x% Private Sub Command1_Click()Cls For i = 1 To UBound(stu())
If Right(stu(i).birthday, 2)= stu(i).luckyday Then
Print stu(i).num;stu(i).name;stu(i).luckyday;stu(i).birthday;
For j = 1 To 5
Print stu(i).score(j);
Next j
End If Next i End Sub
第页
计算机上机实习报告
⑵统计不及格学生的名单
Private Sub Command10_Click()Cls Print “序号”;Spc(3);“姓名”;Spc(3);“成绩”;Spc(3);“学分”;Spc(3);“课程”;For i = 1 To UBound(stu())
For j = 1 To 5
If stu(i).score(j)< 60 Then
Print Tab(0);stu(i).num;Spc(3);stu(i).name;Spc(2);stu(i).score(j);Spc(3);kc(j).xf;Spc(3);kc(j).km;
End If
Next j Next i End Sub
⑶打印优等生名单
Private Sub Command11_Click()Cls Print “学号”“英语”;Space(3);“VB”;Space(3);“数学”;Space(3);“体育”;Space(3);“专业课”;Space(3);“排名”
第页
计算机上机实习报告
Dim zxf%, i%, j%, k% For i = 1 To UBound(kc())
zxf = zxf + kc(i).xf Next i For j = 1 To UBound(stu())
For k = 1 To 5
stu(j).average = stu(j).average + stu(j).score(k)* kc(k).xf / zxf
stu(j).average = Format(stu(j).average, “0.00”)
Next k Next j For m = 1 To UBound(stu())
stu(m).rank = 1
For n = 1 To UBound(stu())
If stu(m).average < stu(n).average Then
stu(m).rank = stu(m).rank + 1
End If
Next n Next m For i = 1 To UBound(stu())
k = 0
For j = 1 To 5
If stu(i).score(j)>= 95 Then
k = k + 1
End If
Next j
If stu(i).average >= 90 Or stu(i).rank <= 3 Or(stu(i).average >= 85 And k >= 2)Then
Print stu(i).num;Space(3);stu(i).name;
For m = 1 To 5
Print stu(i).score(m);Spc(4);
Next m
Print stu(i).rank
End If Next i End Sub
第页
计算机上机实习报告
⑷统计各幸运数字的人数 Private Sub Command2_Click()Cls For i = 0 To 9
Dim luckypeople%
For j = 1 To UBound(stu())
If Val(stu(j).luckyday)= i Then
luckypeople = luckypeople + 1
End If
Next j
Print “幸运数字为” & i;“的人数为:” & luckypeople
luckypeople = 0 Next i End Sub ⑸查询信息
Private Sub Command3_Click()Cls Dim rm As String, i%, j% rm = InputBox(“请输入你想要查询的同学的姓名”)For i = 1 To UBound(stu())
If Trim(stu(i).name)= rm Then
Print stu(i).num;stu(i).name;stu(i).luckyday;stu(i).birthday;
For j = 1 To 5
Print stu(i).score(j);
Next j
End If Next i End Sub
第页
计算机上机实习报告
⑹添加信息
Private Sub Command4_Click()Cls Dim xinxuesheng As String xinxuesheng = InputBox(“请依次按照序号,姓名,幸运日,出生日期,英语,vb,数学,体育,专业课的顺序输入新同学的信息,中间用空格隔开”)Open “e:vb作业1.txt” For Append As #1 Print #1, xinxuesheng Print Close #1 Do While InStr(Trim(xinxuesheng), “ ”)<> 0
xinxuesheng = Replace(Trim(xinxuesheng), “ ”, “ ”)Loop a = Split(xinxuesheng, “ ”)n = n + 1 ReDim Preserve stu(n)stu(n).num = a(0)stu(n).name = a(1)stu(n).luckyday = a(2)stu(n).birthday = a(3)For i = 1 To 5
stu(n).score(i)= a(3 + i)Next i For i = 1 To UBound(stu())
Print stu(i).num;stu(i).name;stu(i).luckyday;stu(i).birthday;
For j = 1 To 5
Print stu(i).score(j);
Next j
Print Next i
第页
计算机上机实习报告
End Sub
⑺删除信息
Private Sub Command5_Click()Cls Dim rm As String rm = InputBox(“请输入你要删除的同学的姓名”)For i = 1 To n
If Trim(stu(i).name)= rm Then
Exit For
End If Next i
For j = i To n1)For i = 1 To UBound(stu())
Print stu(i).num;stu(i).name;stu(i).luckyday;stu(i).birthday;
For j = 1 To 5
Print stu(i).score(j);
Next j
第 页
计算机上机实习报告
Next i End Sub
⑻修改幸运数字
Private Sub Command6_Click()Cls Dim rm As String, shuzi As String, i%, j% rm = InputBox(“请输入你要修改的同学的姓名”)shuzi = InputBox(“请输入你要修改后的幸运数字”)For i = 1 To UBound(stu())
If Trim(stu(i).name)= rm Then
stu(i).luckyday = shuzi
Print stu(i).num;stu(i).name;stu(i).luckyday;stu(i).birthday;
For j = 1 To 5
Print stu(i).score(j);
Next j
End If Next i End Sub
第 页
计算机上机实习报告
⑼计算每个学生的平均分 Private Sub Command7_Click()Cls Dim zxf%, i%, j%, k% For i = 1 To UBound(kc())
zxf = zxf + kc(i).xf Next i For j = 1 To UBound(stu())
For k = 1 To 5
stu(j).average = stu(j).average + stu(j).score(k)* kc(k).xf / zxf
stu(j).average = Format(stu(j).average, “0.00”)
Next k Next j For m = 1 To UBound(stu())
stu(m).rank = 1
For n = 1 To UBound(stu())
If stu(m).average < stu(n).average Then
stu(m).rank = stu(m).rank + 1
End If
Next n Next m Open “e:成绩单.txt” For Append As #3 Print #3, “序号”;Space(3);“姓名”;Space(3);“幸运日”;Space(3);“出生日期”;Space(4);“数学”;Space(4);“英语”;Space(4);“vb”;Space(4);“物理”;Space(3);“专业课”;Space(3);“平均分”;Space(3);“排名” For i = 1 To UBound(stu())
Print #3,Print #3, stu(i).num;Space(3);stu(i).name;Space(3);stu(i).luckyday;Space(3);stu(i).birthday;Space(3);
For j = 1 To 5
第 页
计算机上机实习报告
Print #3, stu(i).score(j);Space(3);
Next j
Print #3, stu(i).average;Space(3);stu(i).rank;Next i Close #3 End Sub
⑽统计成绩分布
Private Sub Command8_Click()Cls Dim i%, j%, bsix%, ss%, se%, en%, anine%, a(1 To 25)As Integer, b(1 To 5)As Integer, c(1 To 5)As Integer, d(1 To 5)As Integer, e(1 To 5)As Integer, o(1 To 5)As Integer, p(1 To 5)As Integer, q(1 To 5)As Integer, r(1 To 5)As Integer, s(1 To 5)As Integer For i = 1 To 5
kc(i).zf = 0
For j = 1 To UBound(stu())
kc(i).zf = kc(i).zf + stu(j).score(i)
Next j
kc(i).average = kc(i).zf / UBound(stu())
kc(i).average = Format(kc(i).average, “0.00”)
Print kc(i).average Next i Open “e:成绩分布.txt” For Append As #4 Print #4, “范围”;Space(8);“数学”;Space(3);“英语”;Space(3);“vb”;Space(3);“物理”;Space(3);“专业课”
第 页
计算机上机实习报告
For i = 1 To 5
For j = 1 To UBound(stu())
If stu(j).score(i)>= 90 Then
o(i)= o(i)+ 1
ElseIf stu(j).score(i)>= 80 Then
p(i)= p(i)+ 1
ElseIf stu(j).score(i)>= 70 Then
q(i)= q(i)+ 1
ElseIf stu(j).score(i)>= 60 Then
r(i)= r(i)+ 1
Else
s(i)= s(i)+ 1
End If
Next j Next i Print #4, “>=90”;Spc(8);For i = 1 To 5
Print #4, o(i);Spc(4);Next i Print #4, Print #4, “>=80”;Spc(8);For i = 1 To 5
Print #4, p(i);Spc(4);Next i Print #4, Print #4, “>=70”;Spc(8);For i = 1 To 5
Print #4, q(i);Spc(4);Next i Print #4, Print #4, “>=60”;Spc(8);For i = 1 To 5
Print #4, r(i);Spc(4);Next i Print #4, Print #4, “其他”;Spc(8);For i = 1 To 5
Print #4, s(i);Spc(4);Next i Print #4, Close #4 End Sub
第 页
计算机上机实习报告
⑾打印学生成绩条
Private Sub Command9_Click()Dim stu(1 To 20)As String Open “e:成绩单.txt” For Input As #5 For i = 1 To 20 Line Input #5, stu(i): Print stu(i)Next i Close #5 End Sub
⑿文本信息的输入
Private Sub Form_Load()Dim str1 As String, a()As String, i%, str2 As String, b()As String Open “e:学生信息.txt” For Input As #1 Line Input #1, str1 Print str1
第 页
计算机上机实习报告
Do While Not EOF(1)
Line Input #1, str1
Do While InStr(Trim(str1), “ ”)<> 0
str1 = Replace(Trim(str1), “ ”, “ ”)
Loop
a = Split(str1, “ ”)
n = n + 1
ReDim Preserve stu(n)
stu(n).num = a(0)
stu(n).name = a(1)
stu(n).luckyday = a(2)
stu(n).birthday = a(3)
For i = 1 To 5
stu(n).score(i)= a(3 + i)
Next i
Cls Loop Close #1 Open “e:学分.txt” For Input As #2 Line Input #2, str2 Print str2 Do While Not EOF(2)
Line Input #2, str2
Do While InStr(Trim(str2), “ ”)<> 0
str2 = Replace(Trim(str2), “ ”, “ ”)
Loop
b = Split(str2, “ ”)
x = x + 1
ReDim Preserve kc(x)
kc(x).bh = Val(b(0))
kc(x).km = b(1)
kc(x).xf = b(2)Loop Close #2 Cls End Sub
六.心得体会
1.通过这次上机实习,我受益匪浅,不仅更加熟悉VB的操作和运行环境,同时将课堂上所学的知识进行了系统化的整
第 页
计算机上机实习报告
理与疏导;
2.在此次上机实习中,我切身体会到了编程对我们现代生活的重要性,编程能大大地方便我们日常的生活,使我们上网,工作更快捷,一个人就能干许多人的事情,大大地节约了人力,这将使计算机的应用更加普遍和普及,使社会的生产效率越来越高。
第 页
第二篇:VB上机实习第五、六章
165
6.2.1题目
一、选择题
1.以下叙述中,错误的是()。
A.双击鼠标可以触发DbiClick事件
B.窗体或控件的事件名称可以由编程人员确定
C.移动鼠标时会触发MouseMove事件
D.控件的名称可由编程人员确定
2.程序运行后,先将焦点移到文本框中,按A键,然后单击窗体,则在窗体上显示的内容是()。
A.MouseDownB。MouseUpC。LoadD。Click
3.窗体的MouseDown事件过程如下:
From_MouseDown(button As Integer,shift,xAs Single,y As Single)
其中有4个参数,正确的描述是()。
A. 通过button参数可判定当前按下的是哪一个鼠标按键
B. Shoft参数只能用来确定是否按下Shift键
C. Shift参数只能用来确定是否按下Alt键与Ctel键
D. 参数x、y是用来设置鼠标当前位置的坐标
4.当用户按下并释放一个键后触发KeyPress、KeyUp和KeyDown事件,这3个事件的发生顺序是()
A.KeyPress、KeyUp、KeyDown
B.KeyDown、KeyUp、KeyPress
C.KeyPress、KeyDown、KeyUp
D.KeyDown、KeyPress、KeyUp
5.设窗体的KeyPreview属性为True,并且有下列程序。当焦点在窗体上的文本框上时,按下X键,文本框接收到的字符是()。
Private Sub From_keyDown(keycode AS Integer,Shift As Integer)
Keycode=keycode+1
End Sub
A.XB.YC.空格D.没有接收到字符
6.下列关于键盘事件的说法中,正确的是()。
A.按下键盘上的任意一个键和数字键盘的1键的keycode码相同
B.大键盘上的1键和数字键盘的1键的keycode码相同
C.keyDown和KeyUp事件过程中都有keyascii参数
D.大键盘上的4键的上档字符是“¥”,当同时按下Shift键和大键盘上的4键时,Key-Press事件过程中的keyascii参数值是“$”的ASCII值。
7.在KeyDown或KeyUp事件过程中,能用来检查Ctrl和F3键是否同时被按下的表达式是()。
A.(button=vbCtrlMask)And(keycode=vbKeyF3)
B.Keycode=vbKeyControl+vbKeyF3
C.(keycode=vbKeyF3)And(shift And vbCtrlMask)
D.(shift And VBCtrlMask)And(keycode And vbKeyF3)
1.2.3.4.5.6.7.在执行KeyPress事件过程时,keyascii是所按键____ 值。对于有上档字符和下档字符的键,当执行KeyPress事件过程中,keycode是____ 字符的____ 值在KeyDown和KeyUp事件过程中,当参数shift的值为____,____,____,时,分别代表____,____,____ 键 在MouseDown和KeyUp事件过程中,当参数shift值为____,____,____,时,分别代表鼠标的____,____,____,键 当用户单击鼠标右键时,MouseDown,MouseUp和MouseMove事件过程中的button参数值为____当用户同时按下Ctrl和Shift键时,单击鼠标,MouseDown,MouseUp和MouseMove事件过程中的shift参数为____,如果要在程序运行期间改变鼠标的形状必须先将MousePointer设置为vbCustom,然后在程序中用LoadPicture函数将需要的图标文件《。Ico》或指针文件《.cur》装入____ 属性中。7.只要将MousePointer属性设置为______,鼠标指针就会恢复原样。
1.在菜单中放置分隔栏的方法是将该菜单项的Caption设为()
A.连字符(-)B.下划线(__)
C.连接符(&)D.两个连续的下划线(_ _)
2.以下陈述中正确的是()(多选)
A.分隔栏可以出现在顶级菜单项中
B.顶级菜单项的Checked属性不能为True
C.对同一个菜单项,为其指定访问键后,就不能再为其指定快捷键
D.菜单项的Enabled属性设为False后,它会被灰化显示
3.菜单项数组必须满足()(多选)
A.Name属性值可以不同 B.有相同的行首缩进
C.所有元素在菜单中可以不连续 D.各元素必有惟一索引值
4.为了响应工具栏上的多个按钮的单击事件,可以通过按钮的()属性识别是由哪个按钮引发。
A.Button B.Key C.Index D.B 和C均可
5.在使用菜单编辑器创建菜单时,可在菜单名称中某字母前插入()符号,那么在运行程序时按Alt键和该字母键就可以打开该命令菜单。
A.下划线 B.& C.$ D.@
6.如果要在两个菜单命令项之间加一条分隔线,可在标题文本框中键入()。
A.– B.+ C.& D.#
7.在用菜单编辑器设计菜单时,必须输入的项是()。
A.快捷键 B.标题 C.索引 D.名称
8.菜单控件仅支持以下()事件。
A.Click B.MouseDown C.KeyPress D.Load
9.在使用弹出菜单时,下面说法不正确的情况是()。
A.只能同时显示一个弹出菜单
B.使用PopupMenu 方法来显示弹出菜单
C.在设计时,应该将弹出菜单的顶层菜单项的Visible属性设为False
D.在显示弹出菜单以后,将执行以后的代码
10.下列不能打开菜单编辑器的操作是()。
A.按Ctrl+E
B.单击工具栏中的“菜单编辑器”按钮
C.执行“工具”菜单中的“菜单编辑器”命令
D.按Shift + Alt + M
11.假定有一个菜单项,名为MenuItem,为了在运行时使该菜单项失效(变灰),应使用的语句为()。
A.MenuItem.Enabled=False B.MenuItem.Enabled=True
C.MenuItem.Visible=True D.Menultem.Visible=False
12.以下关于菜单编辑器中“索引”项的叙述中,错误的是()。
A.“索引”确定了菜单项显示的顺序
B.“索引”是控件数组的下标
C.使用“索引”时,可有一组菜单项具有相同的“名字”
D.使用“索引”后,在单击菜单项的事件过程中可以通过“索引”引用菜单项
13.用户通过设置菜单项的()属性值为False来使该菜单项不可见。
A.Hide B.Checked C.Visible D.Enabled
14.下列关于菜单的说法中,错误的是()。
A.每个菜单项都是一个控件,与其他控件一样也有其属性和事件
B.除了Click事件之外,菜单项不可以响应其他事件
C.菜单项的索引号可以不连续
D.菜单项的索引号必须从1开始
17.以下有关由多个窗体和标准模块组成的应用程序设计方法的叙述中,错误的是()。
A.在缺省情况下,设计时的第一个窗体被指定为启动窗体
B.通过人为设置,可指定任一窗体为启动窗体
C.通过人为设置,可指定标准模块中的Main()过程为启动过程
D.通过人为设置,可指定窗体模块中的Main()过程为启动过程
18.以下陈述中正确的是()。(多选)
A.一个应用程序中只能有一个MDI父窗体
B.MDI父窗体上可以放置任意控件
C.可以用Print方法在MDI父窗体上显示信息
D.一个MDI子窗体最小化后,其图标显示在MDI父窗体中
19.要在工程中创建一个MDI父窗体只要()。(多选)
A.在菜单中选择“工程”—“添加MDI窗体”
B.在工具栏的添加按钮的下拉菜单中选择“MDI窗体”
C.新建一个窗体,其将MDIChild属性设为True
D.新建一个窗体,其将MDIChild属性设为False
20.要使MDI子窗体在加载时就自动显示出来,应()。
A.将Scrollbars属性设为True
B.将Scrollbars属性设为False
C.将AutoShowChildren属性设为True
D.将AutoShowChildren属性设为False
21.使用MDI窗体时,对于下面的说法选择正确的选项()。
A.能在MDI窗体中打开多个文档界面
B.子窗体是模式窗口
C.子窗体的和父窗体能够同时显示自己的菜单
D.如果子窗体的BorderStyle属性为vbFixedToolWindow,其大小将不能改变
22.多窗体程序由多个窗体组成。在缺省情况下,VB在执行应用程序时,总是把()指定为启动窗口。
A.不包含任何控件的窗口 B.设计时的第一个窗体
C.命名为Frm1的窗体 D.包含控件最多的窗体
23.要使自定义的对话框Form1退出,可以在该对话框的“退出”按钮的Click事件过程中使用以下()中的一个语句。(多选)
A.Form1.Unload B.UnloadForm1
C.Form1.Hide D.Unload Me
24.MDI窗体的QueryUnload事件将在()时候被触发。(多选)
A.在代码中使用Unload语句
B.当前Windows操作结束
C.利用Windows任务管理器关闭应用程序
D.MDI窗体正在关闭
E.窗体的所有者正在关闭
F.双击窗体图标或选择控制菜单中的“关闭”命令
二、填空题
1.菜单编辑器的“标题”选项对应于菜单控件的____________属性。
菜单编辑器的“名称”选项对应于菜单控件的____________属性。
菜单编辑器的“可见”选项对应于菜单控件的____________属性。
菜单编辑器的“索引”选项对应于菜单控件的____________属性。
菜单编辑器的“复选”选项对应于菜单控件的____________属性。
菜单编辑器的“有效”选项对应于菜单控件的____________属性。
2.菜单分为______菜单和______菜单,菜单总与__________相关联,设计菜单需要在______中设计。
3.不可以给______级菜单设置快捷键。
4.菜单中的分隔条是一种菜单控件,但不响应__________事件,也不能被选中。
5.为显示弹出式菜单,可以使用__________方法。
6.如果菜单标题的某个字母前输入一个“&”符号,那么该字母就成了热键字母;如果在建立菜单时在标题文本框中输入一个“______”,那么显示时形成一个分隔符。
7.如果把菜单项的______属性设置为True,则该菜单项成为一个选项。
8.不管是在窗口顶部菜单条上显示的菜单,还是隐藏的菜单,都可以用______方法把它们作为菜单在程序运行期间显示出来。
9.菜单设计中每一个菜单项是一个控件,这些控件都只有一个______事件。
10.为了能够通过键盘访问主菜单项,可在菜单编辑器的“标题”选项中的某字母前插入_______符号。运行时,该字母会带有下划线,按Alt键和该字母就可以访问相应的主菜单项。
11.弹出式菜单在___________中设计,且一定要使其______级菜单不可见。
12.要使用工具栏控件设计工具栏,应先在“部件”对话框中选择__________,然后从工具箱中选__________控件。
13.设置工具栏控件的__________属性可以改变工具栏在窗体上的位置。
14.要给工具栏按钮添加图像,应首先在__________控件中添加所需要的图像,然后在工具栏的属性页中选择与该控件相关联。
15.运行时,要使工具栏ToolBar1中索引值为5的按钮无效,应使用语句:________________________________。
16.要使工具栏控件的某按钮呈菜单的式样,可以在其属性页中设置其______选项为5-tbrDropDown。
17.要使用状态栏控件设计状态栏,应首先在“部件”对话框中选择________________,然后从工具箱中选择__________控件。
18.状态栏由多个“窗格”对象组成,“窗格”对象的特征是通过状态栏的_____属性决定的。
19.要在运行时给状态StstusBar1的第二个窗格添加一幅图片,该图片由文件“c:windowsglass.ico”指定,应使用语句:______________________________。
20.SDI指__________界面,MDI指__________界面。
21.要将某窗体定义为一个MDI子窗体,需要将其__________属性设置为True
22.在一个MDI应用程序中,可以含有________、_______、______这3类窗体。
23.一个应用程序最多可以有__________个MDI父窗体。
24.在运行时,MDI父窗体中的子窗体最小化时,其图标将显示在_________中。
第三篇:vb上机心得体会
心得体会:
刚开始学习vb的时候,我就觉得大一的计算机基础根本不值一提,难度相去甚远。我问过很多以前的同学,他们都说vb是编程语言中最简单的,但是在这次上机实习过程中,我发现要完成学生成绩管理系统实在有很大难度。平时看课本的时候,觉得还能够理解,看得懂,然而“纸上得来终觉浅”,一旦自己调试程序,总会犯很多错误,如前面说的“文件未找到”“下标越界”等等,都是平时没有机会解决和一些曾经被自己忽视的问题。有时候,为了找到代码中错误或不符合要求的地方,我不得不一遍又一遍地仔细检查程序,甚至标点符号都不能放过。细节决定成败,一个小小的分号也会起着扭转乾坤的作用。
在实习之前,我妄想从网站上下载一个或者请论坛上的好友帮忙,后来我发现这条路走不通,他们从来都不给别人提供实质性的帮助,只是象征性地说:“不会问老师。”于是我打消了这个念头,开始自己动手做。
当我无数次调试总算读出文件的时候,那种高兴劲可想而知。我慢慢觉得,其实自己调试程序蛮有意思的。既弥补了在vb学习中的漏洞,还学到了新内容,积累了一定的实战经验,对以后的期末考试和等级考试起到了相当大的促进作用。
实习过程中,多亏指导老师帮助我找出错误的地方。如果不是他们的细心讲解,我很难完成这次实习任务。当然,我在编程方面还有很大不足,今后我定会加倍努力,为等级考试的顺利通过打下牢固的基础。
第四篇:VB上机试题及答案
上机操作练习题
1.某数组有20个元素,其值为随机产生的两位整数。现要求将前10个元素与后10个元素对换。即第1个元素与第20个元素互换,第2个数与第19个元素互换,…,第10个元素与第11个元素互换。在窗体上输出数组原来各元素的值与对换后各元素的值。
Option explicit Dim a(1 to 20)as integer, I as integer, j as integer, t as integer Private Sub Form_Load()Show Print “原始数组是:” Randomize For i = 1 To 20
a(i)= Int(Rnd * 90)+ 10
Print a(i);If i Mod 10 = 0 Then Print Next i Print Print “现在数组是:” For i = 1 To 10
j = 211
a(k)= a(k + 1)
Next k
ReDim Preserve a(UBound(a)1 End If i = i + 1 Loop While(i <= UBound(a))If flag = False Then MsgBox n & “不在该数组中” Else Print “删除” & n & “后的数组是:” For i = 0 To UBound(a)Print a(i);Next i End If End Sub 3.数组a中存放着升序排列的数据,使用array赋值,将inputbox输入的新数插入到数组中,插入后数组仍有序。
注意:要求利用动态数组,能够实现多次插入 Private Sub Form_Load()Show n = 8: ReDim a(n)a = Array(5, 15, 23, 52, 68, 88, 90, 99)n = n + 1: ReDim Preserve a(n)m = InputBox(“请输入要插入的数据:”)For i = 1 To n1)Next k a(k)= m For i = 1 To n
Print a(i);Next i Print End Sub 4.6个评委为4位歌手打分,分数介于1-100之间。去掉一个最高分,一个最低分,求出每位选手的最后得分。将4位歌手得分从高到低排列输出,同时输出该选手的编号。
如:
歌手3 95分 歌手 1 87分 歌手 4 80分 歌手 2 70分
/ 19
Option Base 1
Private Type geshou
xuhao As String
fenshu(6)As Integer
score As Integer
pingjun As Integer End Type Dim singer(1 To 4)As geshou Private Sub Command1_Click()For i = 1 To 4 For j = 1 To 6
singer(i).fenshu(j)= Int(Rnd * 100)
singer(i).xuhao = “歌手” & i Next Next Call paixu End Sub
Private Sub paixu()Dim p As geshou For i = 1 To 4
For j = 1 To 5
For k = j To 6
If singer(i).fenshu(j)> singer(i).fenshu(k)Then
t = singer(i).fenshu(j)
singer(i).fenshu(j)= singer(i).fenshu(k)
singer(i).fenshu(k)= t
End If
Next
Next Next For i = 1 To 4 For j = 2 To 5
singer(i).score = singer(i).score + singer(i).fenshu(j)Next singer(i).pingjun = singer(i).score / 4 Next
For i = 1 To 3 For j = i To 4
If singer(i).score < singer(j).score Then
p = singer(i): singer(i)= singer(j): singer(j)= p
End If Next
/ 19
Next For i = 1 To 4 Print singer(i).xuhao & “得分:” & singer(i).pingjun Next End Sub Private Sub Form_Load()End Sub 10个评委给10个选手打分 Private Sub Form_Load()Show n = UBound(b)For i = 1 To 10
For j = 1 To 10
a(i, j)= Val(InputBox(“请第” & j & “位评委给第” & i & “位选手打分:”))Next j Next i For i = 1 To 10
max = a(i, 1): sum = 0
min = a(i, 1): ave = 0
For j = 1 To 10
If a(i, j)> max Then max = a(i, j)
If a(i, j)< min Then min = a(i, j)
sum = sum + a(i, j)
Next j
ave =(summin)/(n1
For j = i + 1 To n
If b(i)< b(j)Then
t = b(i): b(i)= b(j): b(j)= t
End If
Next j Next i Print “选手的得分由高到低为:” For i = 1 To 10
Print b(i);Next i End Sub 5.编写函数求一元二次方程ax2+bx+c=0的解。
注意:要求考虑方程有两相等实根、两不等实根和两个虚根的情况。Dim a As Single, b As Single, c As Single Dim s As Single a = InputBox(“请输入a”)
/ 19
b = InputBox(“请输入b”)c = InputBox(“请输入c”)s = b ^ 2Sqr(s))/ 2 * a End If End Sub 6.任意输入一组字符,统计出大写字母多少个,小写字母多少个,数字多少个?要求用过程实现。
Call tongji(a, n, m, o)Print “数字:” & n & Chr(13)& “小写:” & m & Chr(13)& “大写:” & o End Sub Private Sub tongji(a As String, n As Integer, m As Integer, p As Integer)For i = 1 To Len(a)If Asc(Mid(a, i, 1))> 47 And Asc(Mid(a, i, 1))< 58 Then
n = n + 1 ElseIf Asc(Mid(a, i, 1))> 96 And Asc(Mid(a, i, 1))< 123 Then
m = m + 1 ElseIf Asc(Mid(a, i, 1))> 64 And Asc(Mid(a, i, 1))< 91 Then
p = p + 1 End If Next End Sub 7.随机产生一个5*5的矩阵,将主对角线和次对角线元素都置为1,并求出矩阵的四周元素之和,显示在列表框中。
Option Base 1 Private Sub Form_Load()Dim a(5, 5)As Integer Dim s As Integer For i = 1 To 5 For j = 1 To 5
If i = j Or i = 6Asc(Mid(s1, i, 1))+ 64)ElseIf Asc(Mid(s1, i, 1))< 123 And Asc(Mid(s1, i, 1))> 96 Then convert = convert & Chr(1235: g = e
For j = 1 To n
If j > i Then
a(i, j)= 0
Else
If i = j Then
a(i, j)= 1
Else
a(i, j)= a(i1, ji + 1);String(2 *(i1)/ 2 To 1 Step(-1)
c = c + 1
s = Chr(64 + ii + c + 1);String(2 *(j1)/ 2 Else
x = x / 2 End If i = i + 1 Loop
ReDim Preserve a(UBound(a))If y < 0 Then For i = 1 To UBound(a)convert = convert & a(i)Next convert = “-” & convert Else For i = 1 To UBound(a)
/ 19
convert = convert & a(i)Next End If
End Function Private Sub Command1_Click()Dim y As Integer Text1.Text = “" y = InputBox(”请输入十进制数字“)Text1.Text = convert(y)
End Sub
Private Sub Form_Load()
End Sub 14.输入一个整数N,产生N个随机数(范围1—10*N),然后采用任何2种算法实现由小到大的排序。将排序前后的数据显示出来。
Option Base 1 Private Sub Command1_Click()Dim a()As Integer, n As Integer n = InputBox(”请输入数列项数“)ReDim a(n)For i = 1 To n
a(i)= Int(Rnd * 10 * n + 1)
Print a(i);Next Print ReDim Preserve a(n)For i = 1 To n1 For j = 1 To n2)+ fact(n2 s = s1 + s2: t = s2: s2 = s: s1 = t Next End Function
Private Sub Command2_Click()n = InputBox(”请输入n“)Print s(n)End Sub 17.编写2个函数,分别采用递归法和递推法求斐波纳契数列的第n个月的兔子数,n使用inputbox输入,调用函数的结果在窗体上显示。Private Sub Command1_Click()List1.Clear Dim i As Integer For i = Val(Text1.Text)To Val(Text2.Text)If isprime(i)= True Then
List1.AddItem(i)
c = c + 1
If i Mod 10 = 9 Then
/ 19
List1.Selected(c1 If n Mod i = 0 Then
isprime = False
Exit For End If Next End Function 18 Dim sum As Long Private Sub Command1_Click()
Dim i As Integer, j As Integer, a(40)As Long
a(1)= 1
a(2)= 1
For i = 3 To 40
a(i)= a(i2)
Next i
sum = 0
For j = 1 To 40
sum = sum + a(j)
Next j End Sub
Private Sub Command2_Click()
Open ”out18.txt“ For Output As #1
Print #1, ”数列1,1,2,3,5,8…的前四十项的之和是:“
Print #1, sum
Close #1 End Sub 1.百钱买百鸡
Option Explicit
Private Sub Command1_Click()Dim a As Integer, b As Integer For a = 1 To 34
For b = 1 To 20
If 3 * a + 5 * b +(100b)/ 3 = 100 Then
/ 19
Print a;
Print b;
Print 100b
End If
Next b Next a End Sub 2.分钱作业
Private Sub Command1_Click()Dim a As Single,b as single,c as single a = Text1.Text b = Fix(a / 100)Print ”100元:“;Print b c = ab * 50
b = Fix(c / 20)Print ”20元:“;Print b c = c0.05 * b b = Fix((c + 0.005)/ 0.02)Print ”0.02元:“;Print b c = c1
If a(i)= a(j)Then
GoTo aaa
End If
Next j
Next i For i = 1 To 10
Print a(i);Next i Print End Sub
Private Sub Command2_Click()Dim i As Integer, j As Integer, t As Integer For i = 1 To 9
For j = 1 + i To 10
If a(i)> a(j)Then
t = a(j)
a(j)= a(i)
a(i)= t
End If
Next j Next i For i = 1 To 10
Print a(i);Next i Print
End Sub
Private Sub Command3_Click()Dim i As Integer, j As Integer, t As Integer For i = 1 To 9
For j = 1 To 10c)> 10 ^(-5)i =(a + b)/ 2
If i ^ 2c = 0 Then
Exit Do
Else
a = i
End If Loop MsgBox(i)End Sub 7.闰年
Option Explicit
Private Sub 计算_Click()Dim i As Integer i = InputBox(”请输入一个年份“)If i Mod 4 = 0 And i Mod 400 = 0 Then
If i Mod 100 <> 0 Then
MsgBox ”NOT“
Else
MsgBox ”YES“
End If Else
MsgBox ”NOT“ End If
End Sub 8.三角
Option Explicit Private Sub Command1_Click()
/ 19
Dim a As Single Dim b As Single Dim c As Single Dim p As Single Dim s As Single
a = Text1.Text b = Text2.Text c = Text3.Text
p =(a + b + c)/ 2
s = Sqr((pb)* p +(p1
If n Mod i = 0 Then
MsgBox ”NOT“
Exit For
End If Next i If i = n Then
MsgBox ”YES“ End If End Sub
Private Sub Command2_Click()
Dim a As Boolean, n As Double, i As Double a = False n = InputBox(”请输入一个数:“)For i = 2 To n-1
If n Mod i = 0 Then
a = True
Exit For
End If Next i If a = True Then
/ 19
MsgBox ”NOT“ Else
MsgBox ”YES“ End If End Sub
Private Sub Command3_Click()Dim n As Double, i As Double n = InputBox(”请输入一个数:“)i = 2 Do While i < n
If n Mod i = 0 Then
MsgBox ”NOT“
Exit Do
End If i = i + 1 Loop If i = n Then
MsgBox ”YES“ End If End Sub
Private Sub Command4_Click()Dim n As Double, i As Double, sushu As Boolean n = InputBox(”请输入一个数:“)i = 2 sushu = True Do While i < n And sushu = True
If n Mod i = 0 Then
sushu = False
End If i = i + 1 Loop If sushu = True Then
MsgBox ”YES“ Else
MsgBox ”NOT" End If End Sub
/ 19
第五篇:VB上机试题及答案
1、在工程中添加一个窗体form1,当用户单击窗体时,在窗体上显示九九乘法表程序。结果如下图所示(本题编程解决,20分)
参考答案:
Private Sub Form_Click()
Cls
For i = 1 To 9
For j = 1 To i
Print i * j;“ ”;
Next j
Next i End Sub
2、在工程中,添加一个窗体form2,在窗体上放置一个文本框text1(文本框中的文字为“改变字形”,居中显示)。三个复选框check1,check2和check3,如图设置属性。
要求:当用户单击“加粗”、“斜体”、“下划线”这三个复选框时(即当复选框被选中时)能将文本框的字形变为“粗体、斜体、加下划线”(本题编程完成,满分:30分)
参考答案:
Private Sub Check1_Click()
Text1.FontBold = Check1.Value End Sub
Private Sub Check2_Click()
Text1.FontItalic = Check2.Value End Sub
Private Sub Check3_Click()
Text1.FontUnderline = Check3.Value End Sub
3、在工程中添加一窗体form3,在窗体上按下图放置两个标签和一个文本框,一个列表框和一个命令按钮,各控件的名称属性取默认值。其他属性按下图进行设置。
要求:当用户在文本框输入他的籍贯后,单击“添加籍贯”按钮时,能够将籍贯添加到列表框中。双击列表框中的某一项时将该项删除.(本题:20分)
参考答案:
Private Sub Command1_Click()
List1.AddItem Text1.Text End Sub
Private Sub List1_DblClick()
List1.RemoveItem List1.ListIndex End Sub
4、在窗体form4中建立下图所示的菜单,各菜单项的名称如下:
文件:file,新建:NEW,-:kong1,打开:OPEN,关闭:CLOSE 编辑:EDIT,剪切:CUT,复制:COPY,粘贴:PASTE(本题不用编程,30分)
参考答案:略