102學年下學期資處科程式競賽-範例試題
一、程式存檔專案名稱「Z2xyz-2014-程式範例」,其中 xyz為班號及座號,例如:
二忠51號則為「Z2A51-2014-程式範例」、二孝52號則為「Z2B52-2014-程式範例」、二仁53號則為「Z2C53-2014-程式範例」
二忠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.按鈕5個Button1~Button5,Text屬性分別為「第1題」、「第2題」、「第3題」、「第4題」、「結束」
4.標籤7個Label1~Label7,Text屬性分別為「A餐(79元)份數」、「B餐(89元)份數」、「C餐(99元)份數」、「明細」、「」、「」、「」
{ 第2~4題內Label5~7的Text屬性為空、Size 大約(245,185) }
Label4~Label7的Font屬性字大小為11、AutoSize設為False、BorderStyle設為FixedSingle
Label4的TextAlign屬性設為MiddleLeft, Label5的字型設為Courier New
{ 第2~4題內Label5~7的Text屬性為空、Size 大約(245,185) }
Label4~Label7的Font屬性字大小為11、AutoSize設為False、BorderStyle設為FixedSingle
Label4的TextAlign屬性設為MiddleLeft, Label5的字型設為Courier New
5.文字方塊3個TextBox1~ 3,Text屬性分別為「1」、「1」、「」
6.單選鈕2個RadioButton1~2,Text屬性分別為「內用」、「外送+50元」,「內用」預設為點選
7.核取方塊1個CheckBox1,Text屬性分別為「VIP卡」,預設為不核取
三、程式要求:63%、每一子題9分
第0題:(表單一啟動時)
(1)將4個群組位置Location設為(10,10)
(2)將第2題、第3題、第4題 三個群組隱藏,
(3)只顯示第1題如下預設畫面
(4)表單大小設為(400,320)
(1)將4個群組位置Location設為(10,10)
(2)將第2題、第3題、第4題 三個群組隱藏,
(3)只顯示第1題如下預設畫面
(4)表單大小設為(400,320)
若點餐金額>=200元、外送不加50元,如下圖
Label4的明細顯示規定:
第1列應付xxx元,點餐金額:yyy ,第2列為是否外送+50元及VIP打八折
第2題:(當按「第2題」鈕時)
(1)將第1題、第3題、第4題 三個群組隱藏,
(2)按鈕「第1題」設為不可使用
(3)只顯示第2題的Groupbox
(4)顯示數字沙漏如圖
(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)然後顯示「平均分數」
(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」會產生不一樣的數字
(1)將第1題、第2題、第3題 三個群組隱藏,
(2)按鈕「第1題」設為不可使用
(3)只顯示第4題的Groupbox
(4)隨機產生2個數字[1~6]
(5)依產生順序顯示此2個數字
(6)再顯示此2數字的點數和,如右圖
(7)再按1次「題4」會產生不一樣的數字
第5題:(當按「結束」鈕時)
以MsgBox顯示如右畫面,標題為「{班級座號}」xyz為學生的班號
若按「確定」則結束程式專案,若按「取消」則恢復「第1題」畫面
以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