第 2 章 Visual Basic 2008 檢定題庫 TQC-PD 程式設計類 Visual Basic 2008 之術科檢定題庫分為 :1) 基本程式流程控制 2) 物件程式設計 3) 資料庫應用程式開發 及 4) 專案製作等 4 大類測驗, 每類計有 9 題, 共計 36 題 ( 本書實用級, 故僅為第 1 類與第 2 類, 共計 18 題 ) 為遵重智慧財產權, 本解題秘笈僅就程式設計解題之內容說明, 不提供原題庫檔案, 詳細資料請參閱 Visual Basic 實力養成暨評量 2008 乙書[1] 及其光碟片資料 2.1 第 1 類 : 基本程式流程控制 2.1.1 VB2008-101 點批薩程式 程式碼 : 0001 Public Class Form1 0002 0003 Dim ChkPrice, TotAmount 0004 0005 Sub CheckSubRtn() 0006 LblAmount.Text = ChkPrice 0007 End Sub 0008 0009 Private Sub ChkPizzaOrginal_CheckedChanged( _ 0010 ByVal sender As System.Object, _ 0011 ByVal e As System.EventArgs) _ 0012 Handles ChkPizzaOrginal.CheckedChanged 0013 If ChkPizzaOrginal.Checked = True Then 0014 ChkPizzaBeef.Checked = False 0015 ChkPizzaSeafood.Checked = False 0016 ChkPrice = 250 0017 Else 0018 ChkPrice = 0 0019 End If 0020 End Sub 0021 0022 Private Sub ChkPizzaBeef_CheckedChanged( _ 0023 ByVal sender As System.Object, _ 0024 ByVal e As System.EventArgs) _ 0025 Handles ChkPizzaBeef.CheckedChanged 0026 If ChkPizzaBeef.Checked = True Then 0027 ChkPizzaOrginal.Checked = False 0028 ChkPizzaSeafood.Checked = False 0029 ChkPrice = 275 0030 Else 0031 ChkPrice = 0 5
0032 End If 0033 End Sub 0034 0035 Private Sub ChkPizzaSeafood_CheckedChanged( _ 0036 ByVal sender As System.Object, _ 0037 ByVal e As System.EventArgs) _ 0038 Handles ChkPizzaSeafood.CheckedChanged 0039 If ChkPizzaSeafood.Checked = True Then 0040 ChkPizzaOrginal.Checked = False 0041 ChkPizzaBeef.Checked = False 0042 ChkPrice = 350 0043 Else 0044 ChkPrice = 0 0045 End If 0046 End Sub 0047 0048 Private Sub Form1_Load(ByVal sender As Object, _ 0049 ByVal e As System.EventArgs) _ 0050 Handles Me.Load 0051 ChkPizzaSeafood.Checked = False 0052 ChkPizzaOrginal.Checked = False 0053 ChkPizzaBeef.Checked = False 0054 LblAmount.Text = "" 0055 TxtOrderQuanty.Text = 1 0056 End Sub 0057 0058 Private Sub BtnCalculate_Click(ByVal sender As System.Object, _ 0059 ByVal e As System.EventArgs) Handles BtnCalculate.Click 0060 TotAmount = ChkPrice * Val(TxtOrderQuanty.Text) 0061 LblAmount.Text = "NT$" & TotAmount 0062 End Sub 0063 0064 Private Sub TxtOrderQuanty_TextChanged(ByVal sender As System.Object, _ 0065 ByVal e As System.EventArgs) Handles TxtOrderQuanty.TextChanged 0066 If Val(TxtOrderQuanty.Text) < 0 Then 0067 TxtOrderQuanty.Text = 0 0068 End If 0069 End Sub 0070 0071 End Class 參考畫面 : 將 Form1 空白畫面依下列方式新增物件, 新增完成後畫面如圖 2.1.1 所示 1 將 Form1 之 Text 改為點批薩程式 2 增加 3 個 CheckBox, 其 Name 分別為 ChkPizzaOrginal ChkPizzaBeef 及 ChkPizzaSeafood,Text 分別為原味批薩 $250, 牛肉批薩 $275, 海鮮批薩 $350 3 增加 1 個 LabelBox, 其 Name 為 Label1,Text 為數量 : 4 增加 1 個 LabelBox, 其 Name 為 LblAmount,Text 為空白,BackColor 為 ControlText, ForeColor 為 Lime,Font 為 14pt 粗體 5 增加 1 個 TextBox, 其 Name 為 TxtOrderQuanty,Text 為 1 6 增加 1 個 Button, 其 Name 為 BtnCalculate,Text 為計算金額 6
ChkPizzaOrginal ChkPizzaBeef ChkPizzaSeafood Label1 TxtOrderQuanty BtnCalculate LblAmount 圖 2.1.1 VB2008-101 點批薩程式畫面 1 圖 2.1.2 VB2008-101 點批薩程式畫面 2 圖 2.1.3 VB2008-101 點批薩程式畫面 3 7
2.1.2 VB2008-102 複利計算 程式碼 : 0001 Public Class Form1 0002 0003 Dim TotAmount 0004 0005 Private Sub BtnCalculate_Click(ByVal sender As System.Object, _ 0006 ByVal e As System.EventArgs) Handles BtnCalculate.Click 0007 TotAmount = Val(TxtCapital.Text) * _ 0008 (1 + Val(TxtInterest.Text) / 100) ^ Val(TxtYear.Text) 0009 TotAmount = Math.Round(TotAmount, 1) 0010 lbloutput.text = Format(TotAmount, "###,###,###,##0.0") 0011 End Sub 0012 0013 Private Sub Form1_Load(ByVal sender As Object, _ 0014 ByVal e As System.EventArgs) Handles Me.Load 0015 TxtCapital.Text = 50000 0016 TxtYear.Text = 5 0017 TxtInterest.Text = 18 0018 End Sub 0019 0020 End Class 參考畫面 : 將 Form1 空白畫面依下列方式新增物件, 新增完成後畫面如圖 2.1.4 所示 1 將 Form1 之 Text 改為複利計算 2 在 GroupBox1 內增加 3 個 LabelBox, 其 Name 分別為 Label1 Label2 及 Label3, Text 分別為本金 : 利率 %: 及年限 : 3 在 GroupBox1 內增加 3 個 TextBox, 其 Name 分別為 TxtCapital TxtInterest 及 TxtYear, Text 分別為 50000 18 及 5 4 在 GroupBox1 內增加 1 個 Button, 其 Name 為 BtnCalculate,Text 為計算 5 將 lbloutput 之 BackColor 改為 ControlText,ForeColor 改為 Chartreuse,Font 改為 12pt 粗體 GroupBox1 TxtCapital Label3 TxtYear Labell Label2 TxtInterest BtnCalculate lbloutput 圖 2.1.4 VB2008-102 複利計算畫面 1 8
圖 2.1.5 VB2008-102 複利計算畫面 2 9
圖 2.1.20 VB2008-105 撲克牌發牌畫面 3 圖 2.1.21 VB2008-105 撲克牌發牌畫面 4 圖 2.1.22 VB2008-105 撲克牌發牌畫面 5 26
2.1.6 VB2008-106 簡易圖片瀏覽器 程式碼 : 0001 Public Class Form1 0002 0003 Dim PicN As Integer 0004 Dim PicFileName As String 0005 Dim Rr As Double 0006 0007 Private Sub Form1_Load(ByVal sender As Object, _ 0008 ByVal e As System.EventArgs) Handles Me.Load 0009 Rr = 0.05 ' 縮放比例 0010 ' 配合圖框自動調整圖片大小 0011 picview.sizemode = PictureBoxSizeMode.StretchImage 0012 btnfirst.enabled = False 0013 btnprevious.enabled = False 0014 btnlast.enabled = True 0015 btnnext.enabled = True 0016 PicN = 1 0017 Call ShowPicture() 0018 End Sub 0019 0020 Private Sub btnlast_click(byval sender As System.Object, _ 0021 ByVal e As System.EventArgs) Handles btnlast.click 0022 ' 最後一張 0023 btnfirst.enabled = True 0024 btnprevious.enabled = True 0025 btnlast.enabled = False 0026 btnnext.enabled = False 0027 PicN = 5 0028 Call ShowPicture() 0029 End Sub 0030 0031 Private Sub btnfirst_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles btnfirst.click 0032 ' 第一張 0033 btnfirst.enabled = False 0034 btnprevious.enabled = False 0035 btnlast.enabled = True 0036 btnnext.enabled = True 0037 PicN = 1 0038 Call ShowPicture() 0039 End Sub 0040 0041 Public Sub ShowPicture() 0042 ' 顯示圖片 0043 Label1.Text = PicN ' 檢視圖號, 測試用, 完成後應刪去之 0044 ' 取得現行檔案路徑 0045 PicFileName = My.Computer.FileSystem.CurrentDirectory & _ 0046 "\images\img0" & Trim(Str(PicN)) & ".JPG" 0047 ' 載入圖片 0048 picview.image = Image.FromFile(PicFileName) 27
0049 If PicN > 1 And PicN < 5 Then 0050 btnfirst.enabled = True 0051 btnprevious.enabled = True 0052 btnlast.enabled = True 0053 btnnext.enabled = True 0054 End If 0055 End Sub 0056 0057 Private Sub btnprevious_click(byval sender As System.Object, _ 0058 ByVal e As System.EventArgs) Handles btnprevious.click 0059 ' 上一張 0060 PicN = PicN - 1 0061 If PicN = 1 Then 0062 btnfirst.enabled = False 0063 btnprevious.enabled = False 0064 End If 0065 Call ShowPicture() 0066 End Sub 0067 0068 Private Sub btnnext_click(byval sender As System.Object, _ 0069 ByVal e As System.EventArgs) Handles btnnext.click 0070 ' 下一張 0071 PicN = PicN + 1 0072 If PicN = 5 Then 0073 btnlast.enabled = False 0074 btnnext.enabled = False 0075 End If 0076 Call ShowPicture() 0077 End Sub 0078 0079 Private Sub btnsmall_click(byval sender As System.Object, _ 0080 ByVal e As System.EventArgs) Handles btnsmall.click 0081 ' 縮小 0082 If picview.width >= (Me.Width * 0.4) Then 0083 ' 限制於 40%~90% 0084 picview.top = picview.top + (picview.height * Rr) / 2 0085 picview.left = picview.left + (picview.width * Rr) / 2 0086 picview.width = picview.width * (1 - Rr) 0087 picview.height = picview.height * (1 - Rr) 0088 End If 0089 End Sub 0090 0091 Private Sub btnlarge_click(byval sender As System.Object, _ 0092 ByVal e As System.EventArgs) Handles btnlarge.click 0093 ' 放大 0094 If picview.width <= (Me.Width * 0.9) Then 0095 ' 限制於 40%~90% 0096 picview.top = picview.top - (picview.height * Rr) / 2 0097 picview.left = picview.left - (picview.width * Rr) / 2 0098 picview.width = picview.width * (1 + Rr) 0099 picview.height = picview.height * (1 + Rr) 0100 End If 28
0101 End Sub 0102 0103 End Class 參考畫面 : picview img01.jpg btnsmall Labell 測試用 btnfirst btnlarge btnnext btnlast btnprevious 圖 2.1.23 VB2008-106 簡易圖片瀏覽器面 1 圖 2.1.24 VB2008-106 簡易圖片瀏覽器畫面 2 29
圖 2.1.25 VB2008-106 簡易圖片瀏覽器畫面 3 圖 2.1.26 VB2008-106 簡易圖片瀏覽器畫面 4 30
2.1.7 VB2008-107 猜數字遊戲 程式碼 : 0001 Public Class Form1 0002 0003 Dim m_num As Integer 0004 Dim InputNum As Integer 0005 0006 Private Sub btnok_click(byval sender As System.Object, _ 0007 ByVal e As System.EventArgs) Handles btnok.click 0008 ' 確定 0009 If Len(txtGuess.Text) < 3 Then 0010 MsgBox(" 請輸入一個三位數!",, " 提示 ") 0011 Exit Sub 0012 End If 0013 InputNum = Val(txtGuess.Text) 0014 If InputNum = m_num Then 0015 MsgBox(" 恭喜你答對了!",, " 提示 ") 0016 Exit Sub 0017 End If 0018 If InputNum < Val(lblSmall.Text) Or InputNum > Val(lblLarge.Text) Then 0019 MsgBox(" 請輸入介於 " & Val(lblSmall.Text) & " 到 " & _ 0020 Val(lblLarge.Text) & " 之間的數 ",, " 提示 ") 0021 Exit Sub 0022 End If 0023 If InputNum > m_num Then 0024 MsgBox(" 請輸入小一點的數!",, " 提示 ") 0025 lbllarge.text = InputNum 0026 Exit Sub 0027 End If 0028 If InputNum < m_num Then 0029 MsgBox(" 請輸入大一點的數!",, " 提示 ") 0030 lblsmall.text = InputNum 0031 Exit Sub 0032 End If 0033 End Sub 0034 0035 Private Sub Form1_Load(ByVal sender As System.Object, _ 0036 ByVal e As System.EventArgs) Handles MyBase.Load 0037 ' 宣告亂數 0038 Randomize() 0039 gennumber() 0040 End Sub 0041 0042 Private Sub btnagain_click(byval sender As System.Object, _ 0043 ByVal e As System.EventArgs) Handles btnagain.click 0044 gennumber() 0045 lblsmall.text = "100" 0046 lbllarge.text = "999" 0047 txtguess.text = "" 0048 End Sub 0049 31
0050 Private Sub btnend_click(byval sender As System.Object, _ 0051 ByVal e As System.EventArgs) Handles btnend.click 0052 End 0053 End Sub 0054 0055 Private Sub gennumber() 0056 ' 先取得 0~897, 再加上 101, 即得 101~998, Rnd() 值域為 0~0.99999 0057 m_num = Int(Rnd() * 898) + 101 0058 End Sub 0059 0060 Private Sub txtguess_keypress(byval sender As Object, _ 0061 ByVal e As System.Windows.Forms.KeyPressEventArgs) _ 0062 Handles txtguess.keypress 0063 If Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57 Then 0064 ' 當按鍵非數字時 (0-->48, 9-->57) 0065 e.handled = True ' 無法輸入 0066 End If 0067 End Sub 0068 0069 End Class 參考畫面 : lblsmall lbllarge Label3 txtguess btnagain btnok btnend 圖 2.1.27 VB2008-107 猜數字遊戲畫面 1 圖 2.1.28 VB2008-107 猜數字遊戲畫面 2 32
圖 2.1.29 VB2008-107 猜數字遊戲畫面 3 圖 2.1.30 VB2008-107 猜數字遊戲畫面 4 33
2.2.7 VB2008-207 音效播放機 程式碼 : 0001 Public Class Form1 0002 0003 Private Sub btnmusicbrowse_click(byval sender As System.Object, _ 0004 ByVal e As System.EventArgs) Handles btnmusicbrowse.click 0005 ' 設定顯示檔案之類別 0006 OpenFileDialog1.Filter = "WAV(*.wav) *.wav 所有檔案 (*.*) *.*" 0007 ' 顯示對話盒 0008 OpenFileDialog1.ShowDialog() 0009 ' 取得檔案名稱 0010 txtmusicpath.text = OpenFileDialog1.FileName 0011 End Sub 0012 0013 Private Sub btnend_click(byval sender As System.Object, _ 0014 ByVal e As System.EventArgs) Handles btnend.click 0015 End 0016 End Sub 0017 0018 Private Sub btnplay_click(byval sender As System.Object, _ 0019 ByVal e As System.EventArgs) Handles btnplay.click 0020 ' 開啟檔案 0021 System.Diagnostics.Process.Start(txtMusicPath.Text) 0022 End Sub 0023 0024 End Class 參考畫面 : txtmusicpath btnmusicbrowse btnplay btnend 圖 2.2.19 VB2008-207 音效播放機畫面 1 圖 2.2.20 VB2008-207 音效播放機畫面 2 65