850 likes | 1k Views
陸、 樂透機率程式. 今年最 HOT 的新聞莫過於台北銀行的樂透彩,熱絡的程度可說是全民活動。為符合統計與資訊的結合,我們可以用模擬的樂透彩程式作為接近實務方面的練習。. 陸、 樂透機率程式. < 說明 >. 首先要求系統產生六個中獎號碼 ( 1~42 之間 ) ,號碼不能重複。並將號碼呈現在 Text 物件中 ( 變數需按規定設計 ) 。 要求系統產生 10000 筆隨機號碼中,能與中獎號碼相同 3 個數字以上的機率。
E N D
陸、樂透機率程式 • 今年最HOT的新聞莫過於台北銀行的樂透彩,熱絡的程度可說是全民活動。為符合統計與資訊的結合,我們可以用模擬的樂透彩程式作為接近實務方面的練習。
陸、樂透機率程式 <說明> • 首先要求系統產生六個中獎號碼( 1~42之間 ),號碼不能重複。並將號碼呈現在Text物件中(變數需按規定設計)。 • 要求系統產生10000筆隨機號碼中,能與中獎號碼相同3個數字以上的機率。 • 顯示這10000筆中的中獎次數、未中獎次數、各獎項的中獎數 (頭獎、二獎、三獎、四獎) 及累積中獎金額 於Text物件。中獎金額定義為:四獎為200元(對中3個號碼)、三獎為4000元(對中4個號碼)、二獎為200000元(對中5個號碼)、頭獎為兩百萬元(對中6個號碼)。 • 要求系統評估要中獎金200000元以上(即對中5個號碼以上的機率)時,需要投注多少筆才可能獲獎。 • 離開系統。
陸、樂透機率程式 <系統功能要求> 功能一 (決定中獎號碼):將隨機的六個號碼出現在Text中。 功能二 (預測報酬): (1)若功能一未決定時,出現”尚未抽出中獎號碼” 警告訊息 (2)顯示10000筆中中獎次數、未中獎次數、各獎項的中獎數及累積中獎金額。 功能三 (二十萬元中獎投注數): (1)若功能一未決定時,出現”尚未抽出中獎號碼” 警告訊息 (2)使用迴圈判斷第幾筆投注恰巧對中五個號碼以上的機率。 功能四 (離開系統):將程式關閉。
陸、樂透機率程式 <變數設定(未按規定設計者將扣分) > • 號碼1至號碼6【變數為number(0)~number(5)】 • 中獎次數(變數為win)、未中獎次數(lose)、頭獎(prize1)、二獎(prize2)、三獎(prize3)、四獎(prize4) • 累積中獎金額(Total_money) • 預估投注筆數(Precount) • 迴圈變數或累計變數 盡量取名要有意義,勿取為a,b,c,i ,j….等變數 • 程式碼必須要有註解說明 • 產生六個亂數號碼的程式部分請使用副程式撰寫
陸、樂透機率程式 <主畫面>
陸、樂透機率程式 <決定中獎號碼>
陸、樂透機率程式 <預測報酬>
陸、樂透機率程式 <二十萬元中獎投注數>
柒、基本物件二 <Frame(框架)物件> Frame物件很相像Form表單,因為Frame本身也可以容納其他物件放置其內。所以不論是Frame還是Form,都可以看成是個容器(Container)。預設名稱為Frame1,Frame2…,常用屬性:
柒、基本物件二 <Frame(框架)物件>
柒、基本物件二 <Image(影像) 、PictureBox(照片盒)物件> • Image與Picture Box物件十分相近,都是放置圖檔所做的物件,不同之處為Image物件所載入影像在放大與縮小時都是等比例;而Picture Box則否。Image物件預設名稱為image1,image2…;Picture物件預設名稱為Picture1,Picture2…。常用屬性:
柒、基本物件二 <Check Box(核取方塊)物件> Box通常用於複選題選項,即多個Check Check Box都能一起被核取。預設名稱為Check1,Check2…,常用屬性:
柒、基本物件二 <Option Button(選取物件)物件> Option Button通常用於單選題選項,即多個Option也只能有一個Option被核取。預設名稱為Option1,Option2…,常用屬性:
柒、基本物件二 <Timer(計時器)物件> Timer物件式控制每隔一時段去執行某個程式程序,是程式本身更具動態性。預設名稱為Timer1,Timer2…,常用屬性:
柒、基本物件二 < Frame、Image、Checkbox、Option、Timer > Picture box Frame Check box Timer Image
柒、基本物件二 <練習題:利用亂數,使雲在天空中自由飄動>
Private Sub Command1_Click() ‘註解:按下「開始」按鈕 Timer1.Interval = InputBox("請輸入雲飄之速度(毫秒)?", "速度?", 200) Timer1.Enabled = True End Sub Private Sub Command2_Click() ‘註解:按下「停止」按鈕 Timer1.Enabled = False ‘註解:使計時器不能使用 End Sub Private Sub Timer1_Timer() ‘註解:計時器每0.5毫秒所做的事 Randomize x = 50 a = Int(Rnd * 4 + 1) '1表示飛右, 2表飛左,3表示飛上,4表飛下。 Select Case a Case 1: Image1.Left = Image1.Left + x ‘註解:依方向移動 Case 2: Image1.Left = Image1.Left - x Case 3: Image1.Top = Image1.Top + x Case 4: Image1.Top = Image1.Top - x End Select End Sub step1 step2 step3
捌、打字遊戲程式 < 目的> 為讓初學電腦的使用者更快了解英文輸入,決定運用該程式來幫助初學者。 < 說明> • 要求系統產生3至10個亂數英文字母,亂數字串會不斷往下掉。 • 輸入文字方塊若與亂數字串相同時,亂數字串重設;分數加500分。 • 分數超過某些程度時(5000倍數),設定下掉的數度加快。 • 亂數字串若低於警戒縣則遊戲結束,顯示目前分數。
捌、打字遊戲程式 <系統功能要求> 功能一:將英文小寫字母產生於陣列當中。 提示:(使用ASCII) 功能二:亂數取出3至10個英文字串。 功能三:設定輸入文字方塊改變時,判斷是 否與亂數字串相符。 功能四:設定成績等級,判斷加快下掉速度。 功能五:判斷亂數字串是否到達底限,顯示 Game over與否。
捌、打字遊戲程式 <畫面(介面)要求> 設定標題 成績為累加
捌、打字遊戲程式 <變數設定(未按規定設計者將扣分) > • 存放英文字母陣列【word(26)】 • 決定亂數字串的長度(length)、決定為何字母變數(wordnum) • 迴圈變數或累計變數,盡量取名要有意義,勿取為a、b、c…等變數 • 程式碼必須有註解說明 • 重新產生亂數字串與初始值設定的部分程式,請使用副程式撰寫
玖、功能編輯器 <功能表 > 為應用程式中常見的控制項。 在VB環境中,我們可以利用功能編輯器建立程式視窗上的功能表。 如:
玖、功能編輯器 <如何在VB的環境中建立功能表? > 步驟一 在表單範圍按下滑鼠的右鍵 步驟二 選擇【功能表編輯器】 步驟三 進入編輯畫面,開始編輯
玖、功能編輯器 表單 在表單中,按下滑鼠的右鍵
玖、功能編輯器 功能表選單中的中文名稱(&符號為快速鍵號,即 Alt + ?) <功能表編輯器畫面 > 此功能欄的變數名稱 為功能欄的階層,代表是否為子選項。以上圖為例,【接龍】與【踩地雷】兩個功能欄就為【遊戲台】的子選單。 【-】符號:代表功能表分隔線
玖、功能編輯器 <執行程式畫面 > 使用階層設計
拾、多重表單設計 <建立方式 > 在主選單建立後,如要新增子表單在右上方的專案群組視窗中的「表單」中,按下滑鼠右鍵選擇[新增]─[表單]
拾、多重表單設計 <新增表單的畫面 >
拾、多重表單設計 <新增完成後畫面 >
拾、多重表單設計 <表單呼叫程式 > 如果是主畫面呼叫子畫面,請記得把主畫面的作用(Enable)取消,因為這樣才不會使得主畫面可以持續作用,如果主畫面與子畫面分別對同一物件或資料做處理時,容易造成錯誤。 Main.enable=False
拾、多重表單設計 <建議撰寫程式的方式 > #主畫面呼叫子畫面的程序 Private Sub Command1_Click() Form1.Enabled = False ‘將主畫面的作用取消 Form2.Show ‘呼叫子畫面的語法 End Sub
拾、多重表單設計 <建議撰寫程式的方式 > Form1.enable=False Form2.enable=True
拾、多重表單設計 <建議撰寫程式的方式 > #子畫面關閉的程序使用 Private Sub Command1_Click() Unload Form2 ‘將子畫面的視窗關閉語法 Form1.Enabled = True ‘使得主畫面的作用恢復 End Sub
拾、多重表單設計 <建議撰寫程式的方式 > Unload.form2 Form1.enable=True Unload.form2 Form1.Setfocus
拾、多重表單設計 <練習題:使用VB介面連結外部應用程式與遊戲> Hint:使用Shell()函數呼叫
又到了一年一度系學會交接的日子,為了招募會員,已經學會Visual Basic的你(妳),希望用程式來幫忙紀錄學會會員名單。 拾壹、統資系系學會會員資料系統 <目的 >
拾壹、統資系系學會會員資料系統 <系統功能要求 >
拾壹、統資系系學會會員資料系統 <介面要求 > 請使用Print指令以外的方式顯現答案,畫面需簡單易懂(友善性) <變數設定(未依設定者將扣分) > 一、迴圈變數或累計變數 盡量取名要有意義,勿取為a,b,c,i ,j….等變數 二、程式碼必須要有註解說明
拾壹、統資系系學會會員資料系統 <主畫面 >
拾壹、統資系系學會會員資料系統 <主畫面:程式碼 > Private Sub cmdEnd_Click() ‘註解:離開系統 Unload main End Sub Private Sub cmdNew_Click() ‘註解:新增會員資料 main.Enabled = False ‘註解:讓主選單不能再操作(因為目前要操作子選單) newform.Show ‘註解:讓子選單(newform)顯示 End Sub Private Sub cmdSearch_Click() ‘註解:搜尋會員資料 main.Enabled = False ‘註解:讓主選單不能再操作 searchform.Show ‘註解:讓子選單(searchform)顯示 searchform.Text1.SetFocus End Sub
拾壹、統資系系學會會員資料系統 <新增會員資料 > 跳出另一個視窗(取名newform)提供輸入會員資料 下拉式選單
拾壹、統資系系學會會員資料系統 <新增會員資料:程式碼 > Private Sub Command1_Click() ‘註解:按下新增 If Text1.Text = "" Or Text2.Text = "" Or Text4.Text = "" Or Combo1.Text = "" Or Combo2.Text = "" Then MsgBox ("有欄位未填寫") ‘註解:判斷有無欄位未填寫 Exit Sub Else file_num = FreeFile ‘註解:給予檔案號碼 (1-51) Open "d:\people.txt" For Append As #file_num ‘註解:開啟檔案路徑 Write #file_num, Text2, Text1, Combo2, Combo1, Text4 ‘註解:將資料寫進檔案 End If
拾壹、統資系系學會會員資料系統 <新增會員資料:程式碼 > Close #file_num ‘註解:關檔 Unload newform ‘註解:關閉子表單(newform) main.Enabled = True ‘註解:讓主選單設定可以操作 main.SetFocus ‘註解:讓主表單設為目前作用 End Sub Private Sub Command2_Click() ‘註解:按下取消 Unload newform main.Enabled = True main.SetFocus End Sub
拾壹、統資系系學會會員資料系統 <查詢會員資料 > • 出現frame視窗(取名searchframe) • 以下舉例為輸入會員姓名當中有【王】的會員
拾壹、統資系系學會會員資料系統 <查詢會員資料 > 輸入搜尋字串後,必須跳出另一視窗(取名searchform)表示搜尋結果,畫面如下:
拾壹、統資系系學會會員資料系統 <查詢會員資料:程式碼 > Private Sub Command1_Click() ‘註解:按下搜尋視窗(frame2)後的「確定」鈕 file_num = FreeFile ReDim friends(99, 5) ‘註解:設定二維陣列可存人數為99人 Open "d:\people.txt" For Input As #file_num ‘註解:開啟檔案做輸入用,檔案路徑 i = 1 While Not EOF(file_num) Input #file_num, sname, id, sex, Class, phone
拾壹、統資系系學會會員資料系統 <查詢會員資料:程式碼 > friends(i, 1) = sname friends(i, 2) = id friends(i, 3) = sex friends(i, 4) = Class friends(i, 5) = phone i = i + 1 ‘註解:累計會員人數 'ReDim friends(i, 5) Wend num = i - 1 Close #file_num
拾壹、統資系系學會會員資料系統 If Text1.Text = "" Then MsgBox "未輸入任何名稱" ‘註解:判斷沒有輸入搜尋字串 Exit Sub Else For i = 1 To num If InStr(1, friends(i, 1), Text1.Text) <> 0 Then ‘註解:比較搜尋字串 searchform.Label1.Caption = searchform.Label1.Caption & vbCr + vbLf & "姓名:" & friends(i, 1) & " 學號:" & friends(i, 2) & " 性別:" & friends(i, 3) & " 班級:" & friends(i, 4) & " 電話:" & friends(i, 5) + Chr(13) + Chr(10) ‘註解:如果有搜尋到,將其資料存到label1的標籤內容當中 End If Next
拾壹、統資系系學會會員資料系統 <查詢會員資料 > If searchform.Label1.Caption = "" Then searchform.Label1.Caption = "搜尋不到此人!" searchform.Frame1.Caption = "搜尋" & Text1.Text & "的結果" End If Frame2.Visible = False ‘註解:將搜尋frame2 關閉 End Sub Private Sub Command2_Click() ‘註解:回主選單 Unload searchform ‘註解:將子選單關閉 main.Enabled = True ‘註解:將主選單設成可以操作 main.SetFocus End Sub
拾壹、統資系系學會會員資料系統 <查詢會員資料:程式碼 > Private Sub Command3_Click() ‘註解:搜尋視窗(frame2)下的取消按鈕 Frame2.Visible = False ‘註解:將frame2關閉 End Sub