06.08.2013 Views

08 張維哲

08 張維哲

08 張維哲

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Visual Basic 學習檔案集<br />

1<br />

學生:<strong>張維哲</strong><br />

指導老師:劉玉敏


目錄<br />

第一冊:<br />

P.4 : 圓面積計算<br />

P.5 : 三角形面積計算<br />

P.6 : 使用者登入<br />

P.7 : Back Color 屬性<br />

P.8 : FontSize 縮放<br />

P.9 : 身份確認<br />

P.11 : 腦筋急轉彎<br />

P.12 : 聊天室<br />

P.13 : 成績判斷<br />

P.14 : 判斷是否為學生票價<br />

P.15 : 視力檢測<br />

P.16 : 年齡判斷<br />

P.17 : 觀看及別<br />

P.18 : 身體質量指數計算<br />

P.19 : 棒球吉祥物<br />

P.21 : 生日星座<br />

P.23 : 占卜<br />

P.24 : 三角形圖案<br />

P.25 : 成績統計<br />

P.27 : 記憶大考驗<br />

P.28 : 手機費用<br />

P.29 : 電腦術語大考驗<br />

P.30 : 雨量資料<br />

P.31 : 通訊資料建檔<br />

P.32 : 由小到大重新排序數列<br />

P.33 : 循序搜尋法搜尋資料<br />

P.34 : 二分搜尋法搜尋資料<br />

延伸練習:<br />

2


P.35 : 1+2-3+4+5-6…-99<br />

P.36 : 300 內可被 3 整除的數及總和<br />

4/2 上機考:<br />

P.37 : 兩數間隔 5 的和<br />

P.38 : 計算總和<br />

P.39 : 計算 N 階<br />

P.40 : 產生連續學號<br />

P.41 : 隨機產生一組密碼<br />

P.42 : 重新組合<br />

5/7 程式比賽:<br />

P.43 : 數字轉絕對值<br />

P.44 : 數字轉為千分位<br />

P.45 : 找最大與最小<br />

P.46 : 把 1變成0,把0變成1<br />

第二冊:<br />

P.47 : 計算標準體重<br />

P.48 : 簡易售票系統<br />

P.49 : 計算圓面積<br />

P.50 : 計算可加油公升數<br />

P.51 : 將資料顯示在文字方塊內<br />

P.52 : 讀取循序檔<br />

P.53 : 資料的寫入<br />

P.54 : 文字瀏覽器<br />

3


圓面積計算<br />

( 讓使用者輸入圓的半徑,以計算出圓的面積 )<br />

4<br />

(程式碼)<br />

<strong>08</strong>\I\ch1\P.30


三角形面積計算<br />

(讓使用者輸入三角形的底和高來寄算他的面積)<br />

(程式碼)<br />

5<br />

<strong>08</strong>\I\ch2\P.75


使用者登入<br />

(利用 InputBox 函數讓使用者在交談窗中輸入名<br />

字,在用 MsgBox 來顯示)<br />

(程式碼)<br />

6<br />

<strong>08</strong>\I\ch2\P.76


Back Color 屬性<br />

(當使用者用左鍵點一下的時候底色會從原本的<br />

粉紅轉變成黃色)<br />

(程式碼)<br />

7<br />

<strong>08</strong>\I\ch3\p.91


FontSize 縮放<br />

(讓使用者在按下放大時可將字體變大,按縮小<br />

時可以變小)<br />

(程式碼)<br />

8<br />

<strong>08</strong>\I\ch3\P.98


身份確認<br />

(在兩個 LostFocus 事件中,分別寫入帳號及密碼<br />

的程式,若者用者輸入錯誤會傳來錯誤的訊息)<br />

9


(程式碼)<br />

10<br />

<strong>08</strong>\I\ch3\P.106


腦筋急轉彎<br />

(使用一個標籤來顯示題目,當按下揭曉時,在<br />

另一個標籤下顯示解答)<br />

(程式碼)<br />

11<br />

<strong>08</strong>\I\ch3\P.109


聊天室<br />

(利用 VB 做出一個單人單聊的聊天室)<br />

(程式碼)<br />

12<br />

<strong>08</strong>\I\ch3\P.111


成績判斷<br />

(判斷 (Score)是否大於 60,如果事就顯示及格,<br />

否則就顯示不及格)<br />

(程式碼)<br />

13<br />

<strong>08</strong>\I\ch5\P.135


學生票<br />

(判斷是否為學生,如果是,就以 7 折來計算電<br />

影的票價)<br />

(程式碼)<br />

14<br />

<strong>08</strong>\I\ch5\P.136


視力檢測<br />

(判斷視力是否介於 0.8~1.2 之間,是的話就顯示<br />

正常,否則就顯示需要矯正)<br />

(程式碼)<br />

15<br />

<strong>08</strong>\I\ch5\P.139


年齡判斷<br />

(依照出生年次來判斷,你目前的年齡是屬於哪<br />

一階層的)<br />

(程式碼)<br />

16<br />

<strong>08</strong>\I\ch5\P.143


觀看及別<br />

(依照你現在的年齡,去區分你所能觀看的節目)<br />

(程式碼)<br />

17<br />

<strong>08</strong>\I\ch5\P.144


BMI 計算<br />

(讓使用者輸入身高與體重,來計算使用者的<br />

BMI 值為多少)<br />

(程式碼)<br />

18<br />

<strong>08</strong>\I\ch5\P.148


棒球吉祥物<br />

(依使用者輸入的職棒隊名,顯示球隊的吉祥<br />

物,如果球隊名輸入錯誤則會跳出錯誤顯示)<br />

19


(程式碼)<br />

20<br />

<strong>08</strong>\I\ch5\P.159


星座生日<br />

(利用 Select Case 來判斷所輸入月份,在利用<br />

If-Then-Else 判斷日期,並顯示所屬的星座)<br />

21


(程式碼)<br />

22<br />

<strong>08</strong>\I\ch5\P.167


占卜<br />

(利用 Rnd 來產生一個隨機的籤,並顯示結果)<br />

(程式碼)<br />

23<br />

<strong>08</strong>\I\ch5\P.168


三角形圖形<br />

(利用 For-Next,執行 10 次回圈內的程式)<br />

(程式碼)<br />

24<br />

<strong>08</strong>\I\ch6\P.171


成績統計<br />

(使用者利用 For-Next 輸入 5 個成績,勾選其選<br />

項,,其質將顯示在下方文字方塊中)<br />

25


(程式碼)<br />

26<br />

<strong>08</strong>\I\ch6\P.178


記憶大考驗<br />

(在 While-wend 敘述在表單產生 5 個隨機數字,<br />

並利用 Timer 讓數字在 3 秒後消失)<br />

27<br />

(程式碼)<br />

<strong>08</strong>\I\ch6\P.189


手機費用<br />

(利用一維陣列來儲存 1~12 月的手機費用)<br />

(程式碼)<br />

28<br />

<strong>08</strong>\I\ch7\P.222


電腦術語大考驗<br />

(使用 5 個常見的電腦術語,隨機產生,讓使用<br />

者在清單中點選相對應的英文術語)<br />

29<br />

(程式碼)<br />

<strong>08</strong>\I\ch7\P.226


雨量資料<br />

(利用一維陣列設計一個可以用來輸入及查詢成<br />

績的程式)<br />

(程式碼) <strong>08</strong>\I\ch7\P.232<br />

30


通訊資料建檔<br />

(設計一個可供使用者將個人好友通訊資料建檔<br />

的程式)<br />

(程式碼)<br />

31<br />

<strong>08</strong>\I\ch7\P.238


由小到大重新排序數列<br />

(程式碼)<br />

Private Sub Command1_Click()<br />

Dim a(4)<br />

a(0) = 20: a(1) = 5: a(2) = 30: a(3) = 40: a(4) = 15<br />

Print "排序前的資料為"<br />

For i = 0 To 4<br />

Print a(i) & Space(3);<br />

Next<br />

For i = 1 To (5 - 1)<br />

For j = 0 To (4 - i)<br />

If a(j) > a(j + 1) Then<br />

temp = a(j)<br />

a(j) = a(j + 1)<br />

a(j + 1) = temp<br />

End If<br />

Next j<br />

Next i<br />

Print: Print: Print "排序後的資料為"<br />

For i = 0 To 4<br />

Print a(i) & Space(3);<br />

Next<br />

End Sub<br />

<strong>08</strong>\I\ch8\P255<br />

32


利用循序搜尋法搜尋資料「15」<br />

(程式碼)<br />

Private Sub Form_Activate()<br />

Dim a(1 To 5) As Integer<br />

a(1) = 5: a(2) = 30: a(3) = 40: a(4) = 15: a(5) = 10<br />

i = 1<br />

Target = 15<br />

Do<br />

If Target = a(i) Then<br />

Print "找到數值 15"<br />

Exit Do<br />

End If<br />

i = i + 1<br />

If i > 5 Then<br />

Print "找不到數值 15"<br />

Exit Do<br />

End If<br />

Loop<br />

End Sub<br />

33<br />

<strong>08</strong>\I\ch8\P264


利用二分搜尋法搜尋資料「30」<br />

(程式碼)<br />

Private Sub Form_Activate()<br />

Dim A(1 To 6) As Integer<br />

A(1) = 5: A(2) = 10: A(3) = 15: A(4) = 20: A(5) = 30:<br />

A(6) = 40<br />

Target = 30<br />

L = 1: r = 6: result = "找不到"<br />

While L Target Then<br />

r = M - 1<br />

Else<br />

L = M + 1<br />

End If<br />

End If<br />

Wend<br />

MsgBox result & Target<br />

End Sub<br />

34<br />

<strong>08</strong>\I\ch8\P267


1+2+3-4+5+6….-99=??<br />

(利用 For-Next,再以 If-Then-Else 判斷其是否為<br />

3 的倍數,若是則減掉)<br />

(程式碼)<br />

35<br />

<strong>08</strong>\I\延伸\01


300 內可被 3 整除的數及總和<br />

(找出為三的倍數並把數放在 List1.AddItem 裡,<br />

並且加其總和)<br />

(程式碼)<br />

36<br />

<strong>08</strong>\I\延伸\02


兩數間隔 5 的和<br />

(讓使用者輸入兩個數,並計算其兩數值之間間<br />

隔為5的和)<br />

(程式碼)<br />

37<br />

<strong>08</strong>\I\exam\01


試計算 1 連續加至 91,增量值為 2,但若為<br />

7 的倍數則不加反減,最後將和輸出<br />

(程式碼)<br />

Private Sub Form_Activate()<br />

Dim i As Integer, s As Long<br />

For i = 1 To 91 Step 2<br />

If i Mod 7 = 0 Then<br />

s = s - i<br />

Else<br />

s = s + i<br />

End If<br />

Next i<br />

MsgBox<br />

"1+3+5-7+9+11+13+15+17+19-21+...-91=" & s, ,<br />

"計算總和"<br />

End Sub<br />

38<br />

<strong>08</strong>\I\exam\02


計算 N 階<br />

(利用 Do-loop 敘述計算 N 階層)<br />

(程式碼)<br />

39<br />

<strong>08</strong>\I\exam\03


撰寫一個能於 ListBox 中產生連續學<br />

號之程式<br />

(程式碼)<br />

Private Sub Form_Activate()<br />

For i = 65 To 90<br />

For j = 0 To 9<br />

List1.AddItem Chr(i) & "8912" & j<br />

Next j<br />

Next i<br />

End Sub<br />

40<br />

<strong>08</strong>\I\exam\04


撰寫能隨機產生一組長度為 6,並為數字、大寫<br />

英文字母、小寫英文字母三者隨機混雜的密碼<br />

(程式碼)<br />

Private Sub Command1_Click()<br />

Dim str1 As String, x, i, n As Integer<br />

Randomize: str1 = ""<br />

For i = 1 To 6<br />

n = Int(Rnd() * 3) + 1<br />

Select Case n<br />

Case 1: x = Int(Rnd() * 10): str1 = str1 & x<br />

Case 2: x = Int(Rnd() * 26) + 65: str1 = str1 & Chr(x)<br />

Case 3: x = Int(Rnd() * 26) + 97: str1 = str1 & Chr(x)<br />

End Select<br />

Next i<br />

Text1 = str1<br />

End Sub<br />

41<br />

<strong>08</strong>\I\exam\05


撰寫一個能將使用者輸入的字串,採先取出<br />

偶數字位元,再取出奇數位字元之順序,將<br />

之重新組合的程式<br />

(程式碼)<br />

Private Sub Form_Activate()<br />

Dim x As String, i As Integer, s As String<br />

x = InputBox("請輸入字串", "重新組合字串")<br />

For i = 2 To Len(x) Step 2<br />

s = s + Mid(x, i, 1)<br />

Next i<br />

For i = 1 To Len(x) Step 2<br />

s = s + Mid(x, i, 1)<br />

Next i<br />

MsgBox x & "重新組合為:" & s, , "重新組合字串"<br />

End Sub<br />

42<br />

<strong>08</strong>\I\exam\06


數字轉絕對值<br />

(程式碼)<br />

Private Sub Command1_Click()<br />

x = InputBox("請輸入一值", "絕對值")<br />

If Mid(x, 1, 1) = "-" Then x = Right(x, Len(x) - 1)<br />

MsgBox x, , "Result"<br />

End Sub<br />

43<br />

<strong>08</strong>\I\程式比賽\02


數字轉為千分位<br />

(程式碼)<br />

Private Sub Command1_Click()<br />

x = InputBox("輸入一數字", "三位一撇輸出")<br />

str1 = "": y = 0<br />

For i = Len(x) To 1 Step -1<br />

str1 = Mid(x, i, 1) + str1<br />

y = y + 1<br />

If i > 1 And y Mod 3 = 0 Then str1 = "," +<br />

str1<br />

Next i<br />

MsgBox str1, , "The Result"<br />

End Sub<br />

44<br />

<strong>08</strong>\I\程式比賽\03


找最大和最小<br />

(讓使用者輸入 3 個任意數,讓程式判斷其最大<br />

質與最小值,並將結果輸出)<br />

45<br />

(程式碼)<br />

<strong>08</strong>\I\程式比賽\04


把1變成0,把0變成1<br />

(程式碼)<br />

Private Sub Command1_Click()<br />

n = Val(InputBox("請輸入 0 或 1", "輸入"))<br />

n = n - 1<br />

MsgBox Abs(n), , "The Result"<br />

End Sub<br />

Private Sub Command2_Click()<br />

n = Val(InputBox("請輸入 0 或 1", "輸入"))<br />

x = 3 Mod (n + 2)<br />

MsgBox x, , "The Result"<br />

End Sub<br />

Private Sub Command3_Click()<br />

n = Val(InputBox("請輸入 0 或 1", "輸入"))<br />

If n = 1 Then<br />

n = 0<br />

ElseIf n = 0 Then<br />

n = 1<br />

End If<br />

MsgBox n, , "The Result"<br />

End Sub<br />

<strong>08</strong>\I\程式比賽\06<br />

46


計算標準體重<br />

Sub Cal_sw(S_sex As String, S_ht As Single)<br />

Dim sw As Single, swt As Single<br />

If S_sex = "M" Then<br />

sw = (S_ht - 80) * 0.7<br />

Else<br />

sw = (S_ht - 70) * 0.6<br />

End If<br />

MsgBox "您的標準體重為" & sw, , "計算標準體重"<br />

swt = InputBox("請輸入體重(kg)", "判斷是否過重")<br />

If swt > sw Then<br />

MsgBox "您的體重超出標準體重", , "判斷是否過重"<br />

Else<br />

MsgBox "您的體重未超出標準體重", , "判斷是否過重<br />

End If<br />

End Sub<br />

Private Sub Form_Activate()<br />

Dim ht As Single, sex As String * 1<br />

sex = InputBox("請輸入性別,男生輸入 M,女生輸<br />

入 F", "計算標準體重")<br />

ht = InputBox("請輸入身高(cm):", "計算標準體重")<br />

Call Cal_sw(sex, ht)<br />

End Sub<br />

<strong>08</strong>\II\ch9\P12<br />

47


Sub cal_price(i As<br />

Integer, j As Integer)<br />

Dim price As Integer,<br />

sum As Integer<br />

Dim area As String<br />

price = 600<br />

Select Case i<br />

Case 0, 2<br />

area = "搖滾 A/C 區"<br />

price = price * 2.5<br />

Case 1<br />

area = "搖滾 B 區"<br />

price = price * 3<br />

Case 3, 5<br />

area = "看台 A/C 區"<br />

price = price * 1.5<br />

Case 4<br />

area = "看台 B 區"<br />

price = price * 2<br />

End Select<br />

簡易售票系統<br />

(程式碼)<br />

48<br />

If j >= 10 Then<br />

sum = j * price * 0.9<br />

Else<br />

sum = j * price<br />

End If<br />

Label3.Caption = j & "張<br />

" & area & "票,總計" &<br />

sum & "元"<br />

End Sub<br />

Private Sub<br />

Command1_Click(Index<br />

As Integer)<br />

Dim count As Integer<br />

count = InputBox("<br />

請輸入所要購買的票數<br />

", "購買票數")<br />

Call cal_price(Index,<br />

count)<br />

End Sub<br />

<strong>08</strong>\II\ch9\P15


計算圓面積<br />

(程式碼)<br />

Function cal_circle(r As Single) As Single<br />

Const pi = 3.14159<br />

cal_circle = r ^ 2 * pi<br />

End Function<br />

Private Sub Form_Activate()<br />

Dim x As Single<br />

Dim area As Single<br />

x = InputBox("請輸入圓的半徑:", "計算圓面積<br />

")<br />

area = cal_circle(x)<br />

MsgBox "半徑為" & x & "的圓面積 = " & area, ,<br />

"計算圓面積"<br />

End Sub<br />

49<br />

<strong>08</strong>\II\ch9\P25


計算可加油公升數<br />

Private Sub<br />

Command1_Click()<br />

Dim F_oil As<br />

Integer, F_c As Integer<br />

Dim ml As String<br />

Foil = Combo1.ListIndex<br />

F_c = Int(Text1.Text)<br />

ml = bml(F_oil, F_c)<br />

End Sub<br />

Private Sub Form_Load()<br />

Combo1.AddItem "柴油<br />

"<br />

Combo1.AddItem "92 無<br />

鉛汽油"<br />

Combo1.AddItem "95 無<br />

鉛汽油"<br />

Combo1.AddItem "98 無<br />

鉛汽油"<br />

End Sub<br />

Function bml(F_oil As<br />

(程式碼)<br />

50<br />

Integer, F_c As Integer)<br />

As Integer<br />

Dim money As<br />

Single<br />

Dim tatle As Single<br />

Select Case F_oil<br />

Case 0<br />

money = 18.5<br />

Case 1<br />

money = 23.2<br />

Case 2<br />

money = 23.9<br />

Case 3<br />

money = 25.4<br />

End Select<br />

total = F_c / money<br />

Label4.Caption = "可加"<br />

& Format(total, " #0.## ")<br />

& "公升"<br />

End Function<br />

<strong>08</strong>\II\ch9\P 35


設計一循序檔並將資料顯示在文字方塊內<br />

(程式碼)<br />

Private Sub Command1_Click()<br />

Dim x As String<br />

Open App.Path & "\data1.txt" For Input As #1<br />

Do While Not EOF(1)<br />

Line Input #1, x<br />

Text1.Text = Text1.Text & x & vbCrLf<br />

Loop<br />

Close<br />

End Sub<br />

Private Sub Command2_Click()<br />

End<br />

End Sub<br />

51<br />

<strong>08</strong>\II\ch12\P156-1


設計讀取循序檔並將資料顯示在<br />

各欄位文字方塊內<br />

Private Sub<br />

Command1_Click()<br />

Open App.Path &<br />

"\data2.txt" For Input As #1<br />

Command1.Enabled = False<br />

Command2.Enabled = True<br />

If Not EOF(1) Then<br />

Input #1, nam, price, q<br />

Text1.Text = nam<br />

Text2.Text = price<br />

Text3.Text = q<br />

total = price * q<br />

Text4.Text = total<br />

End If<br />

End Sub<br />

Private Sub<br />

Command2_Click()<br />

If Not EOF(1) Then<br />

Input #1, nam, price, q<br />

(程式碼)<br />

52<br />

Text1.Text = nam<br />

Text2.Text = price<br />

Text3.Text = q<br />

total = price * q<br />

Text4.Text = total<br />

Else<br />

Close #1<br />

Command1.Enabled =<br />

True<br />

Command2.Enabled =<br />

False<br />

End If<br />

End Sub<br />

Private Sub<br />

Command3_Click()<br />

Close #1<br />

End<br />

End Sub<br />

<strong>08</strong>\II\ch12\P156-2


資料的寫入(Put # 敘述)<br />

Private Sub<br />

Command1_Click()<br />

Static i As Integer<br />

i = LOF(file_no) /<br />

Len(student)<br />

i = i + 1<br />

student.no = Text1(0).Text<br />

student.name =<br />

Text1(1).Text<br />

student.score =<br />

Val(Text1(2).Text)<br />

Put file_no, i, student<br />

Text1(0).Text = ""<br />

Text1(1).Text = ""<br />

Text1(2).Text = ""<br />

Text1(0).SetFocus<br />

End Sub<br />

Private Sub<br />

Command2_Click()<br />

Dim j As Integer<br />

(程式碼)<br />

53<br />

Do While j LOF(file_no)<br />

/ Len(student)<br />

j = j + 1<br />

Text1(0).Text = student.no<br />

Text1(1).Text =<br />

student.name<br />

Text1(2).Text =<br />

student.score<br />

MsgBox "第" & j & "筆資<br />

料", , "檢視紀錄內容"<br />

Loop<br />

End Sub<br />

Private Sub<br />

Form_Activate()<br />

file_no = FreeFile<br />

Open App.Path & "\ran" For<br />

Random As #file_no Len =<br />

Len(student)<br />

End Sub<br />

<strong>08</strong>\II\ch12\P164


Private Sub<br />

Dir1_Change()<br />

File1.path = Dir1.path<br />

End Sub<br />

Private Sub<br />

Drive1_Change()<br />

Dir1.path = drivel.Drive<br />

End Sub<br />

Private Sub File1_Click()<br />

Dim path As String<br />

Dim aline As String<br />

Dim alldata As String<br />

Dim file_no As Integer<br />

If Right(File1.path, 1) <br />

"\" Then<br />

path = File1.path & "\" &<br />

File1.FileName<br />

文字瀏覽器<br />

(程式碼)<br />

54<br />

Else<br />

path = File1.path &<br />

File1.FileName<br />

End If<br />

file_no = FreeFile<br />

Open path For Input As<br />

#file_no<br />

Do While Not EOF(1)<br />

Line Input #file_no,<br />

aline<br />

alldata = alldata &<br />

aline & vbCrLf<br />

Loop<br />

Text1.Text = alldata<br />

Close #file_no<br />

End Sub<br />

<strong>08</strong>\II\ch12\P183

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!