Visual Basic 6.0 (VII) 丙檢試題第二站第二題車輛管理統計 資科系林偉川 第二站試題 BASIC 應用程式設計 編號試題名稱 119-890306 身分證號碼檢查 119-890307 高速公路車輛統計 119-890308 分數加 減 乘 除運算 三選一 (80 分鐘 ) 2 1
第二站第二題高速公路車輛統計 由循序檔讀入多筆記錄 Frame 物件 母件 單一物件 V.S. 物件陣列 標題及文字方塊物件如何設定為不見 條狀圖量化數據 物件陣列指標編號 運算結果以條狀圖量化數據輸出 (2 個按鈕 ) 以車型大小排序輸出 以星期次序依序輸出 3 第二站第二題高速公路車輛統計 VB.NET 由循序檔讀入多筆記錄 GroupBox 物件 母件 物件陣列,Label 及 linklabel 物件陣列指標編號 標題及文字方塊物件如何設定為不見 條狀圖量化數據 運算結果以條狀圖量化數據輸出 (2 個按鈕 ) 以車型大小排序輸出 以星期次序依序輸出 4 2
標題及文字方塊物件如何設定為不見 T1(I).Text = "" T1(I).BorderStyle = 0 沒有框線 T1(I) 屬性設定 backcolor 按鈕表面 L1(I) = "" L1(I).BorderStyle = 0 ' 沒有框線 5 標籤物件如何設定為不見 VB.NET L1(I).text = ( 標籤內容不見 ) L1(I).width = 0 ( 標籤大小不見 ) L1(I).BorderStyle = BorderStyle.FixedSingle 有框線 L1(I).BorderStyle = BorderStyle.None 沒有框線 6 3
條狀圖量化數據 () Sh1(I).FillStyle = 1 ' 透明 Sh1(I).BorderStyle = 0 透明 Sh1(I - 1).FillStyle = 0 實心 Sh1(I - 1).FillColor = QBColor(2) 7 QBCOLOR 顏色 () 0 黑色, 1 藍色, 2 綠色 3 青色, 4 紅色, 5 紫色 6 棕色, 7 淺灰色, 8 深灰色 9 淺藍, 10 淺綠色, 11 淺青色 12 淺紅色,13 淺紫色, 14 黃色 15 白色 另一種顏色函數 rgb(red, green, blue) 8 4
顏色 (VB.NET 之 COLOR 物件 ) Color.Black,Color.Blue,Color.Green Color.Cyan,Color.Red,Color.Brown, Color.Gray,Color.Purple, Color.Blue Color.Yellow, Color.White 顏色函數 Color.fromAgbs(red, green, blue) 9 條狀圖量化數據 (VB.NET) 比例條狀圖計算方法 算出總和 (total) 個別數量 / 總和 * 調整大小 (wk_s(i) / total * 300) 算出的結果設定成其大小 範例 : v2(i).width = 300 * wk_s(i) / total 10 5
物件陣列指標編號 物件陣列指標編號由 0 開始 一般陣列編號也是由 0 開始, 但程式中是由 1 開始使用 11 運算結果以條狀圖量化數據輸出 以車型大小排序輸出 以星期次序依序輸出 12 6
以車型大小排序輸出 () Frame 母件之顯示標籤隨按鈕不同而改變 Fr1.Caption = C1.Caption 為與星期次序星期次序共用標籤及文字方塊物件, 故放置結果之物件指標需調整 統計圖的寬度, 可由下面公式計算出 : 假設最寬為 3000 Pixel, 則某類型車的長條圖寬度公式為 : 3000 * 某類型車總計數量 / 所有車輛的加總 13 以車型大小排序輸出 () 文字方塊有格式輸出 For i = 1 To 7 wk = wk + wksum(i) T1(i - 1).Text = Format(wksum(i), "###,###") 文字方塊顯示位置 T1(I + 1).Left = Sh1(I + 1).Width + Sh1(I + 1).Left + 100 14 7
以星期次序依序輸出 () Frame 母件之顯示標籤隨按鈕不同而改變 Fr1.Caption = C2.Caption 統計圖的寬度, 可由下面公式計算出 : 假設最寬為 3000 Pixel, 則某星期別的長條圖寬度公式為 : 3000 * 某星期別總計數量 / 所有車輛的加總 15 一開始執行的畫面 16 8
程式讀資料進行星期 車輛統計 Dim a1 As String, a2 As Integer, i As Integer Dim a3 As Integer, a4 As Integer, a5 As Integer Dim l1(7) As Label, l2(7) As Label, lk_l(7) As LinkLabel Dim wk(7) As Integer, car(4) As Integer FileOpen(1, "d:\940307.sm", OpenMode.Input) For i = 1 To 7 : wk(i) = 0: For i = 1 To 4:car(i) = 0: Do While Not EOF(1) Input(1, a1) : Input(1, a2) Input(1, a3) : Input(1, a4) : Input(1, a5) 17 程式讀資料進行星期 車輛統計 If a1 = "MONDAY" Then wk(1) = wk(1) + a2 + a3 + a4 + a5 If a1 = TUESDAY" Then wk(2) = wk(2) + a2 + a3 + a4 + a5 If a1 = "WEDNESDAY" Then wk(3) = wk(3) + a2 + a3 + a4 + a5 If a1 = "THURSDAY" Then wk(4) = wk(4) + a2 + a3 + a4 + a5 If a1 = "FRIDAY" Then wk(5) = wk(5) + a2 + a3 + a4 + a5 If a1 = "SATURDAY" Then wk(6) = wk(6) + a2 + a3 + a4 + a5 If a1 = "SUNDAY" Then wk(7) = wk(7) + a2 + a3 + a4 + a5 car(1) = car(1) + a2 ' 大型車 car(2) = car(2) + a3 ' 中型車 car(3) = car(3) + a4 ' 小型車 car(4) = car(4) + a5 ' 公務車 Loop FileClose(1) 18 9
將物件加入 groupbox 中 y = 30 For i = 1 To 7 l1(i) = New Label() : l2(i) = New Label() lk_l(i) = New LinkLabel() l1(i).width = 70 : l2(i).width = 70 : lk_l(i).width = 100 l1(i).height = 20 : l2(i).height = 20 : lk_l(i).height = 20 l1(i).left = 50 : lk_l(i).left = 150 : l2(i).left = 300 l1(i).top = y : l2(i).top = y : lk_l(i).top = y y = y + 30 GroupBox2.Controls.Add(l1(i)) GroupBox2.Controls.Add(lk_l(i)) GroupBox2.Controls.Add(l2(i)) 19 顯示畫面 20 10
按下星期別按鈕 GroupBox2.Text = Button1.Text l1(1).text = " 星期一 " : l1(2).text = " 星期二 " : l1(3).text = " 星期三 " l1(4).text = " 星期四 " : l1(5).text = " 星期五 " : l1(6).text = " 星期六 " l1(7).text = " 星期日 " Dim sum As Integer = 0 For i = 1 To 7 : sum = sum + wk(i) : For i = 1 To 7 l2(i).text = Format(wk(i), "###,###") lk_l(i).width = 300 * wk(i) / sum lk_l(i).backcolor = Color.FromArgb(255, 0, 0) l2(i).left = lk_l(i).left + lk_l(i).width + 5 21 顯示畫面 22 11
按下車輛種類按鈕 GroupBox2.Text = Button2.Text Dim sum As Integer = 0, j As Integer For i = 1 To 4 : sum = sum + car(i) : For i = 1 To 3 For j = i + 1 To 4 If car(i) > car(j) Then Dim t As String t = cartype(i) : cartype(i) = cartype(j) : cartype(j) = t Dim t1 As Integer t1 = car(i) : car(i) = car(j) : car(j) = t1 End If 23 按下車輛種類按鈕 For i = 1 To 4 l1(i).text = cartype(i) l2(i).text = Format(car(i), "###,###") lk_l(i).width = 300 * car(i) / sum lk_l(i).backcolor = Color.FromArgb(0, 0, 255) l2(i).left = lk_l(i).left + lk_l(i).width + 5 For i = 5 To 7 l1(i).text = "" : l2(i).text = "" : lk_l(i).width = 0 24 12
第二站第二題高速公路車輛統計高速公路車輛統計完整程式 Private Sub Form_Load() Open "d:\bingdata\title.txt" For Input As #1 Input #1, a, b, c, d t2(0).text = a t2(1).text = b t2(2).text = c t2(3).text = d Close #1 25 第二站第二題高速公路車輛統計完整程式 Open "d:\bingdata\890307.sm1" For Input As #1 While Not EOF(1) Input #1, a, b, c, d, e carsum(1) = carsum(1) + b 大型車數量總合 carsum(2) = carsum(2) + c 中型車數量總合 carsum(3) = carsum(3) + d 小型車數量總合 carsum(4) = carsum(4) + e 公務車數量總合 26 13
第二站第二題高速公路車輛統計完整程式 ss = b + c + d + e If a = "MONDAY" Then wksum(1) = wksum(1) + ss If a = "TUESDAY" Then wksum(2) = wksum(2) + ss If a = "WEDNESDAY" Then wksum(3) = wksum(3) + ss If a = "THURSDAY" Then wksum(4) = wksum(4) + ss If a = "FRIDAY" Then wksum(5) = wksum(5) + ss If a = "SATURDAY" Then wksum(6) = wksum(6) + ss If a = "SUNDAY" Then wksum(7) = wksum(7) + ss Wend Close #1 27 第二站第二題高速公路車輛統計完整程式 Dim wksum(7), carsum(4) 'wksum 紀錄星期別累加 Private Sub C1_Click() For I = 0 To 6 T1(I).Text = "" T1(I).BorderStyle = 0 ' 沒有框線 L1(I) = L1(I).BorderStyle = 0 ' 沒有框線 Sh1(I).FillStyle = 1 透明 Sh1(I).BorderStyle = 0 ' 透明 I 28 14
第二站第二題高速公路車輛統計完整程式 Fr1.Caption = C1.Caption Dim cs(4) For i = 1 To 4 cs(i) = carsum(i) ss = cs(1) + cs(2) + cs(3) + cs(4) 29 第二站第二題高速公路車輛統計完整程式 Dim cart(4) cart(1) = " 大型車 " cart(2) = " 中型車 " cart(3) = " 小型車 " cart(4) = " 公務車 " 30 15
第二站第二題高速公路車輛統計完整程式 For i = 1 To 3 For j = i + 1 To 4 If cs(i) > cs(j) Then Dim t t = cs(i) : cs(i) = cs(j) : cs(j) = t t = cart(i) : cart(i) = cart(j) : cart(j) = t End If 31 第二站第二題高速公路車輛統計完整程式 For i = 1 To 4 L1(i).Caption = cart(i) Sh1(i).Width = 3000 * cs(i) / ss Sh1(i).FillStyle = 0 Sh1(i).FillColor = RGB(0, 0, 255) T1(i).Left = Sh1(i).Left + Sh1(i).Width + 100 T1(i).Text = Format(cs(i), "###,###") End Sub 32 16
第二站第二題高速公路車輛統計完整程式 Private Sub C2_Click() Fr1.Caption = C2.Caption L1(0).Caption = " 星期一 " L1(1).Caption = " 星期二 " L1(2).Caption = " 星期三 " 33 第二站第二題高速公路車輛統計完整程式 L1(3).Caption = " 星期四 " L1(4).Caption = " 星期五 " L1(5).Caption = " 星期六 " L1(6).Caption = " 星期日 " wk = 0 34 17
第二站第二題高速公路車輛統計完整程式 For i = 1 To 7 wk = wk + wksum(i) T1(i - 1).Text = Format(wksum(i), "###,###") 35 第二站第二題高速公路車輛統計完整程式 For i = 0 To 6 Sh1(i).Width = 3000 * wksum(i + 1) / wk Sh1(i).FillStyle = 0 Sh1(i).FillColor = RGB(255, 0, 0) T1(i).Left = Sh1(i).Left + Sh1(i).Width + 100 End Sub 36 18
第二站第二題完整程式 (VB.NET) Dim v1(7) As Label, v2(7) As LinkLabel, v3(7) As Label Dim cars(4) As Integer, wk_s(7) As Integer Dim typ(4) As String, t As String Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 37 第二站第二題完整程式 (VB.NET) Dim i, j As Integer j = 30 For i = 1 To 7 v1(i) = New Label() : v3(i) = New Label() v2(i) = New LinkLabel() : v1(i).height = 20 v1(i).width = 70 : v1(i).top = j : v1(i).left = 50 v3(i).height = 20 : v3(i).top = j : v3(i).left = 250 v2(i).height = 20 : v2(i).top = j : v2(i).left = 150 : j += 30 GB2.Controls.Add(v1(i)) : GB2.Controls.Add(v3(i)) GB2.Controls.Add(v2(i)) next 38 19
第二站第二題完整程式 (VB.NET) FileOpen(1, "e:\940307.sm", OpenMode.Input) Dim ww As String Dim bi As Integer, mi As Integer Dim sm As Integer, bu As Integer cars(1) = 0 : cars(2) = 0 : cars(3) = 0 : cars(4) = 0 For i = 1 To 7 wk_s(i) = 0 39 第二站第二題完整程式 (VB.NET) Do While Not EOF(1) Input(1, ww) : Input(1, bi) : Input(1, mi) Input(1, sm) : Input(1, bu) cars(1) = cars(1) + bi : cars(2) = cars(2) + mi cars(3) = cars(3) + sm : cars(4) = cars(4) + bu If wk = "MONDAY" Then wk_s(1) = wk_s(1) + bi + mi + sm + bu If wk = "TUESDAY" Then wk_s(2) = wk_s(2) + bi + mi + sm + bu If wk = "WEDNESDAY" Then wk_s(3) = wk_s(3) + bi + mi + sm + bu 40 20
第二站第二題完整程式 (VB.NET) If wk = "THURSDAY" Then wk_s(4) = wk_s(4) + bi + mi + sm + bu If wk = "FRIDAY" Then wk_s(5) = wk_s(5) + bi + mi + sm + bu If wk = "SATURDAY" Then wk_s(6) = wk_s(6) + bi + mi + sm + bu If wk = "SUNDAY" Then wk_s(7) = wk_s(7) + bi + mi + sm + bu Loop FileClose(1) typ(1) = " 大型車 " : typ(2) = " 中型車 typ(3) = " 小型車 " : typ(4) = " 工務車 " End Sub 41 第二站第二題完整程式 (VB.NET) Private Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click GB2.Text = Button2.Text v1(1).text = " 星期一 " : v1(2).text = " 星期二 " v1(3).text = " 星期三 " : v1(4).text = " 星期四 " v1(5).text = " 星期五 " : v1(6).text = " 星期六 " v1(7).text = " 星期日 " Dim i As Integer, total As Integer = 0 For i = 1 To 7 total = total + wk_s(i) ' 星期加總 42 21
第二站第二題完整程式 (VB.NET) For i = 1 To 7 v3(i).text = Format(wk_s(i), "###,###") v2(i).width = 300 * wk_s(i) / total v2(i).backcolor = Color.Red v3(i).left = v2(2).left + v2(i).width + 10 End Sub 43 第二站第二題完整程式 (VB.NET) Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click GroupBox2.Text = Button1.Text Dim i As Integer, j As Integer, k As Integer Dim total As Integer = 0 For i = 1 To 4 total = total + cars(i) 44 22
第二站第二題完整程式 (VB.NET) For i = 1 To 3 For j = i + 1 To 4 If cars(i) > cars(j) Then k = cars(i) : cars(i) = cars(j) : cars(j) = k t = typ(i) : typ(i) = typ(j) : typ(j) = t End If For i = 5 To 7 v1(i).text = "" : v2(i).text = "" v3(i).text = "" : v2(i).width = 0 45 For i = 1 To 4 v1(i).text = typ(i) v3(i).text = Format(cars(i), "###,###") v2(i).width = 300 * cars(i) / total v2(i).backcolor = Color.Blue v3(i).left = v2(2).left + v2(i).width + 10 End Sub 第二站第二題完整程式 (VB.NET) 46 23