第一篇:長江大學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個元素,其值為隨機產生的兩位整數?,F要求將前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分)
參考答案:略