Visual Basic 實現隨機四則運算
前提:
老實的講在學校裡並沒有教過Visual B,但是我用C-Free實在是沒有辦法獨立寫出來了,所以我把目標轉向了Microsoft Visual Studio 2010,並且找到了《VB例項講解》這本書裡面找到了類似的例題就照著做了,到處修修改改之後還能用,感覺還不錯^.^
PS:
VB用起來比C和C#都要簡單,而且程式碼也要少很多!
實驗要求:
使用隨機函式與選擇結構,實現動態的兩位數的四則運算練習軟體。
1、能夠實現真正的動態出題(每次的出題內容不同)。
2、能夠針對正確答案與錯誤答案提供多種評定語句。
3、能夠統計每次練習的內容。
5、能夠確定練習次數,並統計正確與錯誤的數量。
6、儘可能將基礎控制元件的基本屬性使用出來。
設計介面:
程式執行結果
執行介面
1、關於時間控制元件的使用程式碼說明:
此控制元件的內容屬於後續章節的內容,但由於其功能簡單,完全可以通過MSDN或基礎控制元件的使用方式進行推理分析。該控制元件有兩個重要屬性需要設定:Enabled和Interva。
其中Enabled與基本控制元件的概念相同,都是用於物件是否可以執行(可以顯示但不能使用),在程式啟動時設定為True表示該控制元件可以使用。第二個屬性用於表示該控制元件執行的時間間隔是多長時間。通常設定為100,它代表100毫秒。因此Interval設計的數字越大表示執行的間隔越長。它的事件只有一個,相關的MSDN解釋如下圖。
在本程式的設計中,要求程式啟動的時候,螢幕中出現一個由大變小,然後又由小變大的提示內容。相關的程式碼如下。此程式碼稍加修改可以變成讓字幕左右飄動的樣式。
Private Sub Timer1_Timer()
If fx = True Then ‘fx為自定義的變數,用來控制元件是變大,還是變小,為邏輯變數
If Label3.FontSize + 5 < 60 Then
Label3.FontSize = Label3.FontSize + 5
Else
fx = False
End If
Else
If Label3.FontSize - 5 > 10 Then
Label3.FontSize = Label3.FontSize - 5
Else
fx = True
End If
End If
End Sub
2、系統初始化效果實現
由設計要求的樣式,可以發現大多數的控制元件在啟動的時間並沒有出現。因此顯然當時的屬性設定為Visabled為Fasle。在程式載入的過程中需要完成對基本控制元件的引數設定工作。
Private Sub Form_Load()
Randomize ‘確認系統將真正隨機組合數字
Form1.Caption = "Visual Basic實驗4"
Label1.Caption = ""
Label2.Caption = "="
Label3.Caption = "隨機四則運算練習"
Label4.Caption = "耿丹:韋藝林"
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Visible = False ‘題目要求中沒有出現,它的功能是用來顯示原始碼
Command1.Caption = "出題"
Command2.Caption = "檢查"
Command3.Caption = "程式碼"
Command4.Caption = "退出"
Text1.Visible = False
Text2.Visible = False
Text3.Visible = False
Text4.Visible = False
Command1.Visible = False
Command2.Visible = False
Command3.Visible = False
Command4.Visible = False
Label1.Visible = False
Label2.Visible = False
End Sub
3、題目的隨機出現方式
題目設計的核心內容是出現題目後等待使用者的操作。出題後,需要儲存題目的運算方式。利用記憶體變數,在程式執行到End Sub後會自動放棄其中的內容。因此在通用程式行需要宣告相關的變數。這樣程式在其它過程中可以繼續使用變數的內容。
(通用)部分的程式碼如下
Dim fx As Boolean, xz As Integer
出題部分的程式碼如下
Private Sub Command1_Click()
xz = Int(Rnd * 4 + 1) ‘xz表示產生的選擇條件的型別
Text1.Text = Int(Rnd * 90 + 10)
Text2.Text = Int(Rnd * 90 + 10)
Text3.Text = ""
Select Case xz ‘使用多分支結構,利用隨機函式功能實現動態四則運算功能
Case 1
Label1.Caption = "+"
Case 2
Label1.Caption = "-"
Case 3
Label1.Caption = "×"
Case Else ‘注意case結構的最後一項應當是case else。避免出現考慮不完整
Label1.Caption = "÷"
End Select
End Sub
4、核心程式碼:
Private Sub Command2_Click()
If Text1.Text = "" Or Text2.Text = "" Then
MsgBox "請先出題目然後再進行此動作", , "系統提示"
Else
Select Case xz
Case 1
If Text3.Text = Val(Text1.Text) + Val(Text2.Text) Then
jl = Int(Rnd * 5 + 1) '選擇5表示有五種可能的表揚方式
Select Case jl
Case 1
MsgBox "今天發揮的不錯"
Case 2
MsgBox "聰明的人,請繼續努力"
Case 3
MsgBox "是你聰明還是運氣不錯"
Case 4
MsgBox "比較神奇的能力"
Case Else
MsgBox "判斷相當的給力,繼續努力"
End Select
Text4.Text = Text4.Text + Text1.Text + "+" + Text3.Text + "=" + Text3.Text + "正確" + vbCrLf
Else
jl = Int(Rnd * 5 + 1)
Select Case jl
Case 1
MsgBox "沒有看清題目的要求?"
Case 2
MsgBox "需要提高注意力了!!!!"
Case Else
MsgBox "你是不是需要休息一下了?成績太差了"
End Select
Text4.Text = Text4.Text + Text1.Text + "+" + Text3.Text + "=" + Text3.Text + "錯誤" + vbCrLf
End If
Case 2
If Text3.Text = Val(Text1.Text) - Val(Text2.Text) Then
jl = Int(Rnd * 5 + 1) '選擇5表示有五種可能的表揚方式
Select Case jl
Case 1
MsgBox "今天發揮的不錯"
Case 2
MsgBox "聰明的人,請繼續努力"
Case Else
MsgBox "判斷相當的給力,繼續努力"
End Select
Text4.Text = Text4.Text + Text1.Text + "+" + Text3.Text + "=" + Text3.Text + "正確" + vbCrLf
Else
jl = Int(Rnd * 5 + 1)
Select Case jl
Case 1
MsgBox "沒有看清題目的要求?"
Case 2
MsgBox "需要提高注意力了!!!!"
Case 3
MsgBox "如此簡單還要出錯????"
Case 4
MsgBox "能不能仔細一些!!!!!!!"
Case Else
MsgBox "你是不是需要休息一下了?成績太差了"
End Select
Text4.Text = Text4.Text + Text1.Text + "+" + Text3.Text + "=" + Text3.Text + "錯誤" + vbCrLf
End If
Case 3
If Text3.Text = Val(Text1.Text) * Val(Text2.Text) Then
jl = Int(Rnd * 5 + 1) '選擇5表示有五種可能的表揚方式
Select Case jl
Case 1
MsgBox "今天發揮的不錯"
Case 2
MsgBox "聰明的人,請繼續努力"
Case 3
MsgBox "是你聰明還是運氣不錯"
Case 4
MsgBox "比較神奇的能力"
Case Else
MsgBox "判斷相當的給力,繼續努力"
End Select
Text4.Text = Text4.Text + Text1.Text + "+" + Text3.Text + "=" + Text3.Text + "正確" + vbCrLf
Else
jl = Int(Rnd * 5 + 1)
Select Case jl
Case 1
MsgBox "沒有看清題目的要求?"
Case 2
MsgBox "需要提高注意力了!!!!"
Case 3
MsgBox "如此簡單還要出錯????"
Case 4
MsgBox "能不能仔細一些!!!!!!!"
Case Else
MsgBox "你是不是需要休息一下了?成績太差了"
End Select
Text4.Text = Text4.Text + Text1.Text + "+" + Text3.Text + "=" + Text3.Text + "錯誤" + vbCrLf
End If
Case Else
If Text3.Text = Val(Text1.Text) / Val(Text2.Text) Then
jl = Int(Rnd * 5 + 1) '選擇5表示有五種可能的表揚方式
Select Case jl
Case 1
MsgBox "今天發揮的不錯"
Case 2
MsgBox "聰明的人,請繼續努力"
Case 3
MsgBox "是你聰明還是運氣不錯"
Case 4
MsgBox "比較神奇的能力"
Case Else
MsgBox "判斷相當的給力,繼續努力"
End Select
Text4.Text = Text4.Text + Text1.Text + "+" + Text3.Text + "=" + Text3.Text + "正確" + vbCrLf
Else
jl = Int(Rnd * 5 + 1)
Select Case jl
Case 1
MsgBox "沒有看清題目的要求?"
Case 2
MsgBox "需要提高注意力了!!!!"
Case 3
MsgBox "如此簡單還要出錯????"
Case 4
MsgBox "能不能仔細一些!!!!!!!"
Case Else
MsgBox "你是不是需要休息一下了?成績太差了"
End Select
Text4.Text = Text4.Text + Text1.Text + "+" + Text3.Text + "=" + Text3.Text + "錯誤" + vbCrLf
End If
End Select
End If
End Sub
Private Sub Command3_Click()
If Command3.Caption = "程式碼" Then
Command3.Caption = "關閉"
Text5.Visible = True
Else
Command3.Caption = "程式碼"
Text5.Visible = False
End If
End Sub