2014年5月13日 星期二

資二程式競賽範例

102學年下學期資處科程式競賽-範例試題
一、程式存檔專案名稱「Z2xyz-2014-程式範例」,其中 xyz為班號及座號,例如:
二忠51號則為「Z2A51-2014-程式範例」、二孝52號則為「Z2B52-2014-程式範例」、二仁53號則為「Z2C53-2014-程式範例」

二、表單佈建:{大約如下畫面}37% {每一項未完成扣2分,最多扣37}
   {以下未規定的為預設}、表單大小約(660,550)
1.表單標題「資二XYZ○○○-2014-程式範例」  {其中xyz為班級座號、○○○為學生姓名}
2.群組4個GroupBox1~4,大小約為{270,220}Text分別為「第1題」、「第2題」「第3題」「第4題」
3.按鈕5Button1~Button5Text屬性分別為「第1題」、「第2題」、「第3題」、「第4題」、「結束」
4.標籤7Label1~Label7Text屬性分別為「A(79)份數」、「B(89)份數」、「C(99)份數」、「明細」、「」、「」、「」 
2~4題內Label5~7Text屬性為空、Size 大約(245,185)  }
Label4~Label7
Font屬性字大小為11AutoSize設為FalseBorderStyle設為FixedSingle
Label4
TextAlign屬性設為MiddleLeft Label5的字型設為Courier New
5.文字方塊3TextBox1~ 3Text屬性分別為「1」、「1」、「」
6.單選鈕2RadioButton1~2Text屬性分別為「內用」、「外送+50元」,「內用」預設為點選

7.核取方塊1CheckBox1Text屬性分別為「VIP卡」,預設為不核取

三、程式要求:63%、每一子題9

 第0題:(表單一啟動時)
(1)
4個群組位置Location設為(10,10)
(2)
將第2題、第3題、第4 三個群組隱藏,
(3)
只顯示第1題如下預設畫面
(4)
表單大小設為(400,320)


 第1題:(當按「第1題」鈕時),預設如下左,若點選外送則加50元如下中,有VIP卡打8

若點餐金額>=200元、外送不加50元,如下圖
  
  Label4的明細顯示規定:
   1列應付xxx元,點餐金額:yyy     ,2列為是否外送+50元及VIP打八折
第2題:(當按「第2題」鈕時)
(1)
將第1題、第3題、第4 三個群組隱藏,
(2)
按鈕「第1題」設為不可使用
(3)
只顯示第2題的Groupbox
(4)
顯示數字沙漏如圖 
第3題:(當按「第3題」鈕時)
(1)
將第1題、第2題、第4 三個群組隱藏,
(2)
按鈕「第1題」設為不可使用
(3)
只顯示第3題的Groupbox
(4)
宣告一個陣列sco直接指定5個數字
 {80,95,90,95,100}
(5)
依序顯示sco陣列中的值
(6)
然後顯示「平均分數」



第4題:(當按「第4題」鈕時)再按則數字會隨機
(1)將第1題、第2題、第3 三個群組隱藏,
(2)
按鈕「第1題」設為不可使用
(3)
只顯示第4題的Groupbox
(4)
隨機產生2個數字[1~6]
(5)
依產生順序顯示此2個數字
(6)
再顯示此2數字的點數和,如右圖
(7)
再按1次「題4」會產生不一樣的數字


  
第5題:(當按「結束」鈕時)
MsgBox顯示如右畫面,標題為「{班級座號}xyz為學生的班號
若按「確定」則結束程式專案,若按「取消」則恢復「第1題」畫面




6題:(當雙按GroupBox1的空白處 {dbClick事件}  ) 時會將第1題的畫面恢復為預設畫面如第0

vb2010參考程式碼如下

Public Class Form1
  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Call init()  '呼叫預設
    End Sub
 Sub init()  ' 自訂副程序
        GroupBox1.Location = New Point(10, 10)  '移至(10,10)
        GroupBox2.Location = New Point(10, 10)
        GroupBox4.Location = New Point(10, 10)
        GroupBox3.Location = New Point(10, 10)
        Me.Size = New Size(360, 300)            '表單大小
        GroupBox1.Visible = True
        GroupBox2.Visible = False
        GroupBox4.Visible = False
        GroupBox3.Visible = False
        TextBox1.Text = 1
        TextBox2.Text = 1
        TextBox3.Clear()
        RadioButton1.Checked = True
        Label4.Text = ""
        CheckBox1.Checked = False
    End Sub
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim a = Val(TextBox1.Text)  'A 79
        Dim b = Val(TextBox2.Text)  'B 89
        Dim c = Val(TextBox3.Text)  'C 99
        Dim sum As Integer = 79 * a + 89 * b + 99 * c    '點餐金額
        Dim det As String = "元,點餐金額:" & sum & vbCrLf '明細字串 1
        '<200>0 又外送加 50
        If RadioButton2.Checked And sum < 200 And sum > 0 Then
            sum += 50
            det &= " 外送 50 "
        End If
        ' VIP 8
        If CheckBox1.Checked Then
            sum *= 0.8
            det &= " VIP 打八折 "
        End If
        Label4.Text = "應付:" & sum & det
    End Sub
 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        '顯示第2題
        Button1.Enabled = False
        GroupBox2.Visible = True
        GroupBox1.Visible = False
        GroupBox4.Visible = False
        GroupBox3.Visible = False
        Label5.TextAlign = ContentAlignment.TopCenter
        Label5.Text = "數字沙漏:"
        For i = 17 To 1 Step -4
            Label5.Text &= (vbCrLf & StrDup(i, CStr(i \ 4 + 1)))
        Next
        For i = 5 To 17 Step 4
            Label5.Text &= (vbCrLf & StrDup(i, CStr(i \ 4 + 1)))
        Next
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        '顯示第3題
        Button1.Enabled = False
        GroupBox3.Visible = True
        GroupBox1.Visible = False
        GroupBox2.Visible = False
        GroupBox4.Visible = False
        Label6.Text = "3題:陣列,算平均"
        Dim sco = {80, 85, 90, 95, 99}
        Dim sum = 0
        For i = 0 To 4
            Label6.Text &= (vbCrLf & "索引" & i & "分數:" & sco(i))
            sum += sco(i)
        Next
        Label6.Text &= (vbCrLf & " 平均分 = " & sum / 5)
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        '顯示第4題
        Button1.Enabled = False
        GroupBox4.Visible = True
        GroupBox1.Visible = False
        GroupBox2.Visible = False
        GroupBox3.Visible = False
        Randomize()
        Dim a = Int(Rnd() * 6) + 1
        Dim b = Int(Rnd() * 6 + 1)
        Label7.Text = "第4題:擲兩顆骰子" & vbCrLf
        Label7.Text &= "第1擲:" & a & vbCrLf
        Label7.Text &= "第2擲:" & b & vbCrLf
        Label7.Text &= "總點數:" & a + b
    End Sub

  Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        '第5題:是否結束
        Dim r = MsgBox("確定結束,取消回1", MsgBoxStyle.Information + MsgBoxStyle.OkCancel, "資二XYZ")
        If r = MsgBoxResult.Ok Then
            End
        Else        '顯示第1題
            Button1.Enabled = True
            GroupBox1.Visible = True
            GroupBox2.Visible = False
            GroupBox4.Visible = False
            GroupBox3.Visible = False
        End If
    End Sub
    Private Sub GroupBox1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles GroupBox1.DoubleClick
        '第6題,雙按 GroupBox1  回到第1題
        Call init()  '呼叫啟動預設
    End Sub
End Class