第一篇:長江大學(xué)VB上機(jī)實習(xí)報告
計算機(jī)上機(jī)實習(xí)報告
學(xué)院:石油工程學(xué)院 班級:儲運11204 姓名:魏亞榮
學(xué)號:XXXXXXX 班內(nèi)序號:XX 指導(dǎo)教師:XXX
第 1 頁
計算機(jī)上機(jī)實習(xí)報告
目錄
一.系統(tǒng)名稱----------------------------3 二.實習(xí)目的----------------------------3 三.系統(tǒng)功能概要----------------------3 四.系統(tǒng)設(shè)計分析----------------------3 五.窗體設(shè)計與程序代碼------------5 六.心得體會---------------------------16
第頁
計算機(jī)上機(jī)實習(xí)報告
一、系統(tǒng)名稱----班級學(xué)生成績管理系統(tǒng)
二、實習(xí)目的:
綜合應(yīng)用所學(xué)理論知識,聯(lián)系實際開發(fā)一個具備簡易功能的班級學(xué)生成績管理系統(tǒng)。熟悉程序編寫與調(diào)試,熟悉數(shù)據(jù)文件的創(chuàng)建、打開、讀寫、關(guān)閉等相關(guān)操作,同時讓我們熟悉VB 6.0的開發(fā)環(huán)境,掌握基本的編程方法,熟悉用VB語言完成一個應(yīng)用程序的設(shè)計過程,掌握有關(guān)編輯和調(diào)試程序的方法和技巧。
三、系統(tǒng)功能概要
1、用記事本新建一個文本文件,將本班的M名學(xué)生的有關(guān)信息及本學(xué)期的N門考試課的成績(要求用假想分?jǐn)?shù),并要求將自己的每門課的放在第一列)輸入到這個文件中,建議按如下形式存放(注:20≤M≤50、5≤N≤8,下文以M=10,N=5為例): 序號
姓名
幸運日
出生日期
英語
VB 數(shù)學(xué)
體育
專業(yè)課
作者自己
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、將本學(xué)期的N門課程及其學(xué)分(16學(xué)時為1個學(xué)分)輸入到另一個數(shù)據(jù)文件(文件類型同上題)中,建議如下列形式存放:
編號
課程名稱
課程學(xué)分
英語
5.0 2
vb程序設(shè)計
3
數(shù)學(xué)
4.5 4
體育
3.0 5
專業(yè)課
10.0 1)找出“出生日”與幸運日相同的人,并打印出其信息(每行輸出一個人信息)2)統(tǒng)計出分別擁有幸運數(shù)字1,2,3,4,5,6,7,8,9,0的人數(shù) 3)能查出任何一個你感興趣的人的信息 4)可新添加一個人的信息 5)和刪除一個人的信息
第頁
計算機(jī)上機(jī)實習(xí)報告
6)可以對某個人的幸運數(shù)字進(jìn)行修改,只改變其幸運數(shù)字,其他信息不變
7)根據(jù)以上兩文件內(nèi)容分別計算每個學(xué)生N門課的加權(quán)平均分(保留2位小數(shù),4舍5入),按平均分排列名次,平均分相同則名次并列,如第1、2、2、4、5、5、7…名。用VB創(chuàng)建一個數(shù)據(jù)文件,存放班級的成績表,建議按以下形式存放。
學(xué)號
姓名
英語
vb程序設(shè)計
數(shù)學(xué)
平均成績
名次
張某
80.5
2
李某
78.2
3
王某
88.8
4
趙某
68.5
8)分別統(tǒng)計全班每門課的平均分,并計算各分?jǐn)?shù)段(60分以下;60~69;70~79;80~89;90分以上)的學(xué)生人數(shù)。用VB創(chuàng)建一個新的數(shù)據(jù)文件,在該文件中存放數(shù)據(jù)的格式如下:
范圍.英語
VB
.>=90
.80-89
...............................9)打印每名學(xué)生成績條(并將結(jié)果存放到用VB創(chuàng)建的一個新的數(shù)據(jù)文件中)。
10)打印所有存在不及格課程學(xué)生的名單(含學(xué)號、不及格課程名稱、課程的學(xué)分及成績)。11)打印優(yōu)等生名單(學(xué)號、N門課成績、平均分名次)優(yōu)等生條件:
a)平均分 ? 90分
b)名次在本班位于前三名
c)平均分?85分,并且有二門課的成績都 ? 95分
選做內(nèi)容:打印每門課成績分布圖
說
明:所有輸出結(jié)果應(yīng)寫入用VB創(chuàng)建的文件中,格式要整齊,并有適當(dāng)?shù)奈淖终f明。實習(xí)報告要求:應(yīng)包括分析設(shè)計與說明、部分過程(函數(shù))的源程序清單、程序調(diào)試過程中遇到的問題及解決方法,有待改善或改進(jìn)的意見,對本次實習(xí)的意見與建議、收獲等。其中原始數(shù)據(jù)及程序運行的結(jié)果應(yīng)作為附錄附于實習(xí)報告之后。
四、系統(tǒng)設(shè)計分析:
1、該成績管理系統(tǒng)中要同時表示學(xué)生的學(xué)號、姓名、成績等一些信息,及課程、課程學(xué)分等一些信息,由于每項信息的意義不同,數(shù)據(jù)類型也不同,但還要同時作為一個整體來描敘和處理,因此需要通過用戶自定義來解決。所以在編程之前新建一個標(biāo)準(zhǔn)模塊用來定義自定義類型。
2、為了便于后面執(zhí)行求加權(quán)平均分、排名等命令,在Form1發(fā)生Load事件時應(yīng)將學(xué)生信息和課程信息讀取并放到兩個數(shù)組中,由于這兩個數(shù)組在該管理系統(tǒng)的全程序都要用到,因此應(yīng)定義為全局類型。如是在標(biāo)準(zhǔn)模塊中定義兩個數(shù)組。
3、由于原始數(shù)據(jù)文件中相鄰的兩列之間空格的長短不一,因此在調(diào)用Split函數(shù)之前應(yīng)窗體通用模塊中自定義一個space1函數(shù)將原始數(shù)據(jù)文件中相鄰的兩列之間空格數(shù)變?yōu)橄嗤?/p>
4、在編寫程序時,由于該系統(tǒng)的程序代碼較多,因此在編寫時要合理。
5、在打印成績條、不及格名單、優(yōu)等生等信息時,應(yīng)邊用write語句分別將數(shù)據(jù)存入一個新的文件中。
第頁
計算機(jī)上機(jī)實習(xí)報告
6、實習(xí)必須按著老師的嚴(yán)格要求完成所有的實習(xí)任務(wù),并整理成文件打印。
五.窗體設(shè)計與程序代碼
1.此次窗體設(shè)計使用了11個命令按鈕分別對應(yīng)不同的系統(tǒng)功能要求,具體界面如下
2.程序代碼
⑴統(tǒng)計“出生日”與幸運日相同的人
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
第頁
計算機(jī)上機(jī)實習(xí)報告
⑵統(tǒng)計不及格學(xué)生的名單
Private Sub Command10_Click()Cls Print “序號”;Spc(3);“姓名”;Spc(3);“成績”;Spc(3);“學(xué)分”;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
⑶打印優(yōu)等生名單
Private Sub Command11_Click()Cls Print “學(xué)號”“英語”;Space(3);“VB”;Space(3);“數(shù)學(xué)”;Space(3);“體育”;Space(3);“專業(yè)課”;Space(3);“排名”
第頁
計算機(jī)上機(jī)實習(xí)報告
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
第頁
計算機(jī)上機(jī)實習(xí)報告
⑷統(tǒng)計各幸運數(shù)字的人數(shù) 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 “幸運數(shù)字為” & i;“的人數(shù)為:” & luckypeople
luckypeople = 0 Next i End Sub ⑸查詢信息
Private Sub Command3_Click()Cls Dim rm As String, i%, j% rm = InputBox(“請輸入你想要查詢的同學(xué)的姓名”)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
第頁
計算機(jī)上機(jī)實習(xí)報告
⑹添加信息
Private Sub Command4_Click()Cls Dim xinxuesheng As String xinxuesheng = InputBox(“請依次按照序號,姓名,幸運日,出生日期,英語,vb,數(shù)學(xué),體育,專業(yè)課的順序輸入新同學(xué)的信息,中間用空格隔開”)Open “e:vb作業(yè)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
第頁
計算機(jī)上機(jī)實習(xí)報告
End Sub
⑺刪除信息
Private Sub Command5_Click()Cls Dim rm As String rm = InputBox(“請輸入你要刪除的同學(xué)的姓名”)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
第 頁
計算機(jī)上機(jī)實習(xí)報告
Next i End Sub
⑻修改幸運數(shù)字
Private Sub Command6_Click()Cls Dim rm As String, shuzi As String, i%, j% rm = InputBox(“請輸入你要修改的同學(xué)的姓名”)shuzi = InputBox(“請輸入你要修改后的幸運數(shù)字”)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
第 頁
計算機(jī)上機(jī)實習(xí)報告
⑼計算每個學(xué)生的平均分 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);“數(shù)學(xué)”;Space(4);“英語”;Space(4);“vb”;Space(4);“物理”;Space(3);“專業(yè)課”;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
第 頁
計算機(jī)上機(jī)實習(xí)報告
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
⑽統(tǒng)計成績分布
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);“數(shù)學(xué)”;Space(3);“英語”;Space(3);“vb”;Space(3);“物理”;Space(3);“專業(yè)課”
第 頁
計算機(jī)上機(jī)實習(xí)報告
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
第 頁
計算機(jī)上機(jī)實習(xí)報告
⑾打印學(xué)生成績條
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:學(xué)生信息.txt” For Input As #1 Line Input #1, str1 Print str1
第 頁
計算機(jī)上機(jī)實習(xí)報告
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:學(xué)分.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.通過這次上機(jī)實習(xí),我受益匪淺,不僅更加熟悉VB的操作和運行環(huán)境,同時將課堂上所學(xué)的知識進(jìn)行了系統(tǒng)化的整
第 頁
計算機(jī)上機(jī)實習(xí)報告
理與疏導(dǎo);
2.在此次上機(jī)實習(xí)中,我切身體會到了編程對我們現(xiàn)代生活的重要性,編程能大大地方便我們?nèi)粘5纳?,使我們上網(wǎng),工作更快捷,一個人就能干許多人的事情,大大地節(jié)約了人力,這將使計算機(jī)的應(yīng)用更加普遍和普及,使社會的生產(chǎn)效率越來越高。
第 頁
第二篇:VB上機(jī)實習(xí)第五、六章
165
6.2.1題目
一、選擇題
1.以下敘述中,錯誤的是()。
A.雙擊鼠標(biāo)可以觸發(fā)DbiClick事件
B.窗體或控件的事件名稱可以由編程人員確定
C.移動鼠標(biāo)時會觸發(fā)MouseMove事件
D.控件的名稱可由編程人員確定
2.程序運行后,先將焦點移到文本框中,按A鍵,然后單擊窗體,則在窗體上顯示的內(nèi)容是()。
A.MouseDownB。MouseUpC。LoadD。Click
3.窗體的MouseDown事件過程如下:
From_MouseDown(button As Integer,shift,xAs Single,y As Single)
其中有4個參數(shù),正確的描述是()。
A. 通過button參數(shù)可判定當(dāng)前按下的是哪一個鼠標(biāo)按鍵
B. Shoft參數(shù)只能用來確定是否按下Shift鍵
C. Shift參數(shù)只能用來確定是否按下Alt鍵與Ctel鍵
D. 參數(shù)x、y是用來設(shè)置鼠標(biāo)當(dāng)前位置的坐標(biāo)
4.當(dāng)用戶按下并釋放一個鍵后觸發(fā)KeyPress、KeyUp和KeyDown事件,這3個事件的發(fā)生順序是()
A.KeyPress、KeyUp、KeyDown
B.KeyDown、KeyUp、KeyPress
C.KeyPress、KeyDown、KeyUp
D.KeyDown、KeyPress、KeyUp
5.設(shè)窗體的KeyPreview屬性為True,并且有下列程序。當(dāng)焦點在窗體上的文本框上時,按下X鍵,文本框接收到的字符是()。
Private Sub From_keyDown(keycode AS Integer,Shift As Integer)
Keycode=keycode+1
End Sub
A.XB.YC.空格D.沒有接收到字符
6.下列關(guān)于鍵盤事件的說法中,正確的是()。
A.按下鍵盤上的任意一個鍵和數(shù)字鍵盤的1鍵的keycode碼相同
B.大鍵盤上的1鍵和數(shù)字鍵盤的1鍵的keycode碼相同
C.keyDown和KeyUp事件過程中都有keyascii參數(shù)
D.大鍵盤上的4鍵的上檔字符是“¥”,當(dāng)同時按下Shift鍵和大鍵盤上的4鍵時,Key-Press事件過程中的keyascii參數(shù)值是“$”的ASCII值。
7.在KeyDown或KeyUp事件過程中,能用來檢查Ctrl和F3鍵是否同時被按下的表達(dá)式是()。
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.在執(zhí)行KeyPress事件過程時,keyascii是所按鍵____ 值。對于有上檔字符和下檔字符的鍵,當(dāng)執(zhí)行KeyPress事件過程中,keycode是____ 字符的____ 值在KeyDown和KeyUp事件過程中,當(dāng)參數(shù)shift的值為____,____,____,時,分別代表____,____,____ 鍵 在MouseDown和KeyUp事件過程中,當(dāng)參數(shù)shift值為____,____,____,時,分別代表鼠標(biāo)的____,____,____,鍵 當(dāng)用戶單擊鼠標(biāo)右鍵時,MouseDown,MouseUp和MouseMove事件過程中的button參數(shù)值為____當(dāng)用戶同時按下Ctrl和Shift鍵時,單擊鼠標(biāo),MouseDown,MouseUp和MouseMove事件過程中的shift參數(shù)為____,如果要在程序運行期間改變鼠標(biāo)的形狀必須先將MousePointer設(shè)置為vbCustom,然后在程序中用LoadPicture函數(shù)將需要的圖標(biāo)文件《。Ico》或指針文件《.cur》裝入____ 屬性中。7.只要將MousePointer屬性設(shè)置為______,鼠標(biāo)指針就會恢復(fù)原樣。
1.在菜單中放置分隔欄的方法是將該菜單項的Caption設(shè)為()
A.連字符(-)B.下劃線(__)
C.連接符(&)D.兩個連續(xù)的下劃線(_ _)
2.以下陳述中正確的是()(多選)
A.分隔欄可以出現(xiàn)在頂級菜單項中
B.頂級菜單項的Checked屬性不能為True
C.對同一個菜單項,為其指定訪問鍵后,就不能再為其指定快捷鍵
D.菜單項的Enabled屬性設(shè)為False后,它會被灰化顯示
3.菜單項數(shù)組必須滿足()(多選)
A.Name屬性值可以不同 B.有相同的行首縮進(jìn)
C.所有元素在菜單中可以不連續(xù) D.各元素必有惟一索引值
4.為了響應(yīng)工具欄上的多個按鈕的單擊事件,可以通過按鈕的()屬性識別是由哪個按鈕引發(fā)。
A.Button B.Key C.Index D.B 和C均可
5.在使用菜單編輯器創(chuàng)建菜單時,可在菜單名稱中某字母前插入()符號,那么在運行程序時按Alt鍵和該字母鍵就可以打開該命令菜單。
A.下劃線 B.& C.$ D.@
6.如果要在兩個菜單命令項之間加一條分隔線,可在標(biāo)題文本框中鍵入()。
A.– B.+ C.& D.#
7.在用菜單編輯器設(shè)計菜單時,必須輸入的項是()。
A.快捷鍵 B.標(biāo)題 C.索引 D.名稱
8.菜單控件僅支持以下()事件。
A.Click B.MouseDown C.KeyPress D.Load
9.在使用彈出菜單時,下面說法不正確的情況是()。
A.只能同時顯示一個彈出菜單
B.使用PopupMenu 方法來顯示彈出菜單
C.在設(shè)計時,應(yīng)該將彈出菜單的頂層菜單項的Visible屬性設(shè)為False
D.在顯示彈出菜單以后,將執(zhí)行以后的代碼
10.下列不能打開菜單編輯器的操作是()。
A.按Ctrl+E
B.單擊工具欄中的“菜單編輯器”按鈕
C.執(zhí)行“工具”菜單中的“菜單編輯器”命令
D.按Shift + Alt + M
11.假定有一個菜單項,名為MenuItem,為了在運行時使該菜單項失效(變灰),應(yīng)使用的語句為()。
A.MenuItem.Enabled=False B.MenuItem.Enabled=True
C.MenuItem.Visible=True D.Menultem.Visible=False
12.以下關(guān)于菜單編輯器中“索引”項的敘述中,錯誤的是()。
A.“索引”確定了菜單項顯示的順序
B.“索引”是控件數(shù)組的下標(biāo)
C.使用“索引”時,可有一組菜單項具有相同的“名字”
D.使用“索引”后,在單擊菜單項的事件過程中可以通過“索引”引用菜單項
13.用戶通過設(shè)置菜單項的()屬性值為False來使該菜單項不可見。
A.Hide B.Checked C.Visible D.Enabled
14.下列關(guān)于菜單的說法中,錯誤的是()。
A.每個菜單項都是一個控件,與其他控件一樣也有其屬性和事件
B.除了Click事件之外,菜單項不可以響應(yīng)其他事件
C.菜單項的索引號可以不連續(xù)
D.菜單項的索引號必須從1開始
17.以下有關(guān)由多個窗體和標(biāo)準(zhǔn)模塊組成的應(yīng)用程序設(shè)計方法的敘述中,錯誤的是()。
A.在缺省情況下,設(shè)計時的第一個窗體被指定為啟動窗體
B.通過人為設(shè)置,可指定任一窗體為啟動窗體
C.通過人為設(shè)置,可指定標(biāo)準(zhǔn)模塊中的Main()過程為啟動過程
D.通過人為設(shè)置,可指定窗體模塊中的Main()過程為啟動過程
18.以下陳述中正確的是()。(多選)
A.一個應(yīng)用程序中只能有一個MDI父窗體
B.MDI父窗體上可以放置任意控件
C.可以用Print方法在MDI父窗體上顯示信息
D.一個MDI子窗體最小化后,其圖標(biāo)顯示在MDI父窗體中
19.要在工程中創(chuàng)建一個MDI父窗體只要()。(多選)
A.在菜單中選擇“工程”—“添加MDI窗體”
B.在工具欄的添加按鈕的下拉菜單中選擇“MDI窗體”
C.新建一個窗體,其將MDIChild屬性設(shè)為True
D.新建一個窗體,其將MDIChild屬性設(shè)為False
20.要使MDI子窗體在加載時就自動顯示出來,應(yīng)()。
A.將Scrollbars屬性設(shè)為True
B.將Scrollbars屬性設(shè)為False
C.將AutoShowChildren屬性設(shè)為True
D.將AutoShowChildren屬性設(shè)為False
21.使用MDI窗體時,對于下面的說法選擇正確的選項()。
A.能在MDI窗體中打開多個文檔界面
B.子窗體是模式窗口
C.子窗體的和父窗體能夠同時顯示自己的菜單
D.如果子窗體的BorderStyle屬性為vbFixedToolWindow,其大小將不能改變
22.多窗體程序由多個窗體組成。在缺省情況下,VB在執(zhí)行應(yīng)用程序時,總是把()指定為啟動窗口。
A.不包含任何控件的窗口 B.設(shè)計時的第一個窗體
C.命名為Frm1的窗體 D.包含控件最多的窗體
23.要使自定義的對話框Form1退出,可以在該對話框的“退出”按鈕的Click事件過程中使用以下()中的一個語句。(多選)
A.Form1.Unload B.UnloadForm1
C.Form1.Hide D.Unload Me
24.MDI窗體的QueryUnload事件將在()時候被觸發(fā)。(多選)
A.在代碼中使用Unload語句
B.當(dāng)前Windows操作結(jié)束
C.利用Windows任務(wù)管理器關(guān)閉應(yīng)用程序
D.MDI窗體正在關(guān)閉
E.窗體的所有者正在關(guān)閉
F.雙擊窗體圖標(biāo)或選擇控制菜單中的“關(guān)閉”命令
二、填空題
1.菜單編輯器的“標(biāo)題”選項對應(yīng)于菜單控件的____________屬性。
菜單編輯器的“名稱”選項對應(yīng)于菜單控件的____________屬性。
菜單編輯器的“可見”選項對應(yīng)于菜單控件的____________屬性。
菜單編輯器的“索引”選項對應(yīng)于菜單控件的____________屬性。
菜單編輯器的“復(fù)選”選項對應(yīng)于菜單控件的____________屬性。
菜單編輯器的“有效”選項對應(yīng)于菜單控件的____________屬性。
2.菜單分為______菜單和______菜單,菜單總與__________相關(guān)聯(lián),設(shè)計菜單需要在______中設(shè)計。
3.不可以給______級菜單設(shè)置快捷鍵。
4.菜單中的分隔條是一種菜單控件,但不響應(yīng)__________事件,也不能被選中。
5.為顯示彈出式菜單,可以使用__________方法。
6.如果菜單標(biāo)題的某個字母前輸入一個“&”符號,那么該字母就成了熱鍵字母;如果在建立菜單時在標(biāo)題文本框中輸入一個“______”,那么顯示時形成一個分隔符。
7.如果把菜單項的______屬性設(shè)置為True,則該菜單項成為一個選項。
8.不管是在窗口頂部菜單條上顯示的菜單,還是隱藏的菜單,都可以用______方法把它們作為菜單在程序運行期間顯示出來。
9.菜單設(shè)計中每一個菜單項是一個控件,這些控件都只有一個______事件。
10.為了能夠通過鍵盤訪問主菜單項,可在菜單編輯器的“標(biāo)題”選項中的某字母前插入_______符號。運行時,該字母會帶有下劃線,按Alt鍵和該字母就可以訪問相應(yīng)的主菜單項。
11.彈出式菜單在___________中設(shè)計,且一定要使其______級菜單不可見。
12.要使用工具欄控件設(shè)計工具欄,應(yīng)先在“部件”對話框中選擇__________,然后從工具箱中選__________控件。
13.設(shè)置工具欄控件的__________屬性可以改變工具欄在窗體上的位置。
14.要給工具欄按鈕添加圖像,應(yīng)首先在__________控件中添加所需要的圖像,然后在工具欄的屬性頁中選擇與該控件相關(guān)聯(lián)。
15.運行時,要使工具欄ToolBar1中索引值為5的按鈕無效,應(yīng)使用語句:________________________________。
16.要使工具欄控件的某按鈕呈菜單的式樣,可以在其屬性頁中設(shè)置其______選項為5-tbrDropDown。
17.要使用狀態(tài)欄控件設(shè)計狀態(tài)欄,應(yīng)首先在“部件”對話框中選擇________________,然后從工具箱中選擇__________控件。
18.狀態(tài)欄由多個“窗格”對象組成,“窗格”對象的特征是通過狀態(tài)欄的_____屬性決定的。
19.要在運行時給狀態(tài)StstusBar1的第二個窗格添加一幅圖片,該圖片由文件“c:windowsglass.ico”指定,應(yīng)使用語句:______________________________。
20.SDI指__________界面,MDI指__________界面。
21.要將某窗體定義為一個MDI子窗體,需要將其__________屬性設(shè)置為True
22.在一個MDI應(yīng)用程序中,可以含有________、_______、______這3類窗體。
23.一個應(yīng)用程序最多可以有__________個MDI父窗體。
24.在運行時,MDI父窗體中的子窗體最小化時,其圖標(biāo)將顯示在_________中。
第三篇:vb上機(jī)心得體會
心得體會:
剛開始學(xué)習(xí)vb的時候,我就覺得大一的計算機(jī)基礎(chǔ)根本不值一提,難度相去甚遠(yuǎn)。我問過很多以前的同學(xué),他們都說vb是編程語言中最簡單的,但是在這次上機(jī)實習(xí)過程中,我發(fā)現(xiàn)要完成學(xué)生成績管理系統(tǒng)實在有很大難度。平時看課本的時候,覺得還能夠理解,看得懂,然而“紙上得來終覺淺”,一旦自己調(diào)試程序,總會犯很多錯誤,如前面說的“文件未找到”“下標(biāo)越界”等等,都是平時沒有機(jī)會解決和一些曾經(jīng)被自己忽視的問題。有時候,為了找到代碼中錯誤或不符合要求的地方,我不得不一遍又一遍地仔細(xì)檢查程序,甚至標(biāo)點符號都不能放過。細(xì)節(jié)決定成敗,一個小小的分號也會起著扭轉(zhuǎn)乾坤的作用。
在實習(xí)之前,我妄想從網(wǎng)站上下載一個或者請論壇上的好友幫忙,后來我發(fā)現(xiàn)這條路走不通,他們從來都不給別人提供實質(zhì)性的幫助,只是象征性地說:“不會問老師。”于是我打消了這個念頭,開始自己動手做。
當(dāng)我無數(shù)次調(diào)試總算讀出文件的時候,那種高興勁可想而知。我慢慢覺得,其實自己調(diào)試程序蠻有意思的。既彌補(bǔ)了在vb學(xué)習(xí)中的漏洞,還學(xué)到了新內(nèi)容,積累了一定的實戰(zhàn)經(jīng)驗,對以后的期末考試和等級考試起到了相當(dāng)大的促進(jìn)作用。
實習(xí)過程中,多虧指導(dǎo)老師幫助我找出錯誤的地方。如果不是他們的細(xì)心講解,我很難完成這次實習(xí)任務(wù)。當(dāng)然,我在編程方面還有很大不足,今后我定會加倍努力,為等級考試的順利通過打下牢固的基礎(chǔ)。
第四篇:VB上機(jī)試題及答案
上機(jī)操作練習(xí)題
1.某數(shù)組有20個元素,其值為隨機(jī)產(chǎn)生的兩位整數(shù)。現(xiàn)要求將前10個元素與后10個元素對換。即第1個元素與第20個元素互換,第2個數(shù)與第19個元素互換,…,第10個元素與第11個元素互換。在窗體上輸出數(shù)組原來各元素的值與對換后各元素的值。
Option explicit Dim a(1 to 20)as integer, I as integer, j as integer, t as integer Private Sub Form_Load()Show Print “原始數(shù)組是:” 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 “現(xiàn)在數(shù)組是:” 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 & “不在該數(shù)組中” Else Print “刪除” & n & “后的數(shù)組是:” For i = 0 To UBound(a)Print a(i);Next i End If End Sub 3.?dāng)?shù)組a中存放著升序排列的數(shù)據(jù),使用array賦值,將inputbox輸入的新數(shù)插入到數(shù)組中,插入后數(shù)組仍有序。
注意:要求利用動態(tài)數(shù)組,能夠?qū)崿F(xiàn)多次插入 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(“請輸入要插入的數(shù)據(jù):”)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位歌手打分,分?jǐn)?shù)介于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.編寫函數(shù)求一元二次方程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.任意輸入一組字符,統(tǒng)計出大寫字母多少個,小寫字母多少個,數(shù)字多少個?要求用過程實現(xiàn)。
Call tongji(a, n, m, o)Print “數(shù)字:” & 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.隨機(jī)產(chǎn)生一個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(”請輸入十進(jìn)制數(shù)字“)Text1.Text = convert(y)
End Sub
Private Sub Form_Load()
End Sub 14.輸入一個整數(shù)N,產(chǎn)生N個隨機(jī)數(shù)(范圍1—10*N),然后采用任何2種算法實現(xiàn)由小到大的排序。將排序前后的數(shù)據(jù)顯示出來。
Option Base 1 Private Sub Command1_Click()Dim a()As Integer, n As Integer n = InputBox(”請輸入數(shù)列項數(shù)“)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個函數(shù),分別采用遞歸法和遞推法求斐波納契數(shù)列的第n個月的兔子數(shù),n使用inputbox輸入,調(diào)用函數(shù)的結(jié)果在窗體上顯示。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, ”數(shù)列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.分錢作業(yè)
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(”請輸入一個數(shù):“)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(”請輸入一個數(shù):“)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(”請輸入一個數(shù):“)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上機(jī)試題及答案
1、在工程中添加一個窗體form1,當(dāng)用戶單擊窗體時,在窗體上顯示九九乘法表程序。結(jié)果如下圖所示(本題編程解決,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(文本框中的文字為“改變字形”,居中顯示)。三個復(fù)選框check1,check2和check3,如圖設(shè)置屬性。
要求:當(dāng)用戶單擊“加粗”、“斜體”、“下劃線”這三個復(fù)選框時(即當(dāng)復(fù)選框被選中時)能將文本框的字形變?yōu)椤按煮w、斜體、加下劃線”(本題編程完成,滿分: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,在窗體上按下圖放置兩個標(biāo)簽和一個文本框,一個列表框和一個命令按鈕,各控件的名稱屬性取默認(rèn)值。其他屬性按下圖進(jìn)行設(shè)置。
要求:當(dāng)用戶在文本框輸入他的籍貫后,單擊“添加籍貫”按鈕時,能夠?qū)⒓炋砑拥搅斜砜蛑小kp擊列表框中的某一項時將該項刪除.(本題: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,關(guān)閉:CLOSE 編輯:EDIT,剪切:CUT,復(fù)制:COPY,粘貼:PASTE(本題不用編程,30分)
參考答案:略