您可能會喜歡......

顯示具有 Visual Basic-實作 標籤的文章。 顯示所有文章
顯示具有 Visual Basic-實作 標籤的文章。 顯示所有文章

2019年5月28日 星期二

陣列排序



Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim a(5) As Integer
        Dim n, temp As Integer
        n = 1
        For i = 1 To 5
            a(i) = Mid(TextBox1.Text, n, 2)
            n = n + 3
        Next
        Label2.Text = "5個陣列元素以選擇排序法排序,共需4次循環" & vbCrLf
        For x = 4 To 1 Step -1
            Label2.Text = Label2.Text & "第" & 5 - x & "循環結果為"
            For y = 1 To x
                If a(y) > a(y + 1) Then
                    temp = a(y)
                    a(y) = a(y + 1)
                    a(y + 1) = temp
                End If
            Next
            For i = 1 To 5
                Label2.Text = Label2.Text & a(i) & " "
            Next
            Label2.Text = Label2.Text & vbCrLf
        Next
    End Sub
End Class

2019年5月18日 星期六

11800-1060306



Public Class Form1

    Dim d(100, 4)
    Dim rno As Integer
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        rdata()
        For i = 1 To rno
            If d(i, 4) = "" Then sp1(i)
            If d(i, 4) = "" Then sp2(i)
            If d(i, 4) = "" Then sp3(i)
        Next
        wdata()
    End Sub

    Sub rdata()
        FileOpen(1, "C:\940306.sm", OpenMode.Input)
        rno = 0
        Do While Not EOF(1)
            rno += 1
            Input(1, d(rno, 1)) : Input(1, d(rno, 2)) : Input(1, d(rno, 3))
        Loop
        FileClose()
    End Sub

    Sub sp1(ByVal i)
        Dim id = d(i, 1)
        If id Like "[A-Z]#########" Then  Else d(i, 4) = "FORMAT ERROR"
    End Sub

    Sub sp2(ByVal i)
        Dim D1S = Mid(d(i, 1), 2, 1) & d(i, 3)
        If (D1S = "1M") Or (D1S = "2F") Then  Else d(i, 4) = "SEX CODE ERROR"
    End Sub

    Sub sp3(ByVal i)
        Dim s26 = "ABCDEFGHJKLMNPQRSTUVXYWZIO"
        Dim L1 = Mid(d(i, 1), 1, 1)
        Dim X12 = InStr(s26, L1) + 9
        Dim x1 = X12 \ 10
        Dim x2 = X12 Mod 10

        Dim D1 = Mid(d(i, 1), 2, 1)
        Dim D2 = Mid(d(i, 1), 3, 1)
        Dim D3 = Mid(d(i, 1), 4, 1)
        Dim D4 = Mid(d(i, 1), 5, 1)
        Dim D5 = Mid(d(i, 1), 6, 1)
        Dim D6 = Mid(d(i, 1), 7, 1)
        Dim D7 = Mid(d(i, 1), 8, 1)
        Dim D8 = Mid(d(i, 1), 9, 1)
        Dim D9 = Mid(d(i, 1), 10, 1)

        Dim y = x1 + 9 * x2 + 8 * D1 + 7 * D2 + 6 * D3 + 5 * D4 + 4 * D5 + 3 * D6 + 2 * D7 + D8 + D9

        If y Mod 10 = 0 Then  Else d(i, 4) = "CHECK SUM ERROR"
    End Sub

    Sub wdata()
        DGV.columns.add("ID NO", "ID NO")
        DGV.Columns.Add("NAME", "NAME")
        DGV.Columns.Add("SEX", "SEX")
        DGV.Columns.Add("ERROR", "ERROR")

        For i = 1 To rno
            DGV.Rows.Add(d(i, 1), d(i, 2), d(i, 3), d(i, 4))
        Next

        DGV.Sort(DGV.Columns(0), System.ComponentModel.ListSortDirection.Ascending)
        DGV.Columns(2).Width = 50
        DGV.Columns(3).Width = 150
        DGV.AllowUserToAddRows = False
    End Sub
End Class

2019年5月13日 星期一

數值轉換 二進位轉十進位


'因十進位轉二進位已張貼過,故不重複貼出。

Public Class Form1
    Dim str1 As String
 
    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        Dim a As Integer
        Dim tol As Integer
        str1 = InputBox("請輸入您想要計算的二進位數值")
        For i = 1 To Len(str1)
            a = Mid(str1, i, 1)
            If a = 1 Then
                tol = tol + 2 ^ (Len(str1) - i)
            Else
                tol = tol
            End If
        Next
        MsgBox(tol)
    End Sub
End Class

2019年4月25日 星期四

數值轉換 十進位轉二進位

'純數字轉換系統

Public Class Form1
    Dim D2B As String
    Dim Dec As Integer
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Dec = InputBox("請輸入0~255之間的任意數字")
        D2B = ""
        Do While Dec > 0
            D2B = Dec Mod 2 & D2B
            Dec = Dec \ 2
        Loop
        MsgBox(D2B)
        End
    End Sub
End Class


'將位數補齊為8位數

Public Class Form1
    Dim D2B As String
    Dim Dec As Integer
    Dim supply As String
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Dec = InputBox("請輸入0~255之間的任意數字")
        D2B = ""
        Do While Dec > 0
            D2B = Dec Mod 2 & D2B
            Dec = Dec \ 2
        Loop
        checkD2B(D2B)
        MsgBox(D2B)
        End
    End Sub

    Sub checkD2B(ByRef D2B As String)
        '當二進位數字長度小於八位數時,將其數字補齊。
        If Len(D2B) < 8 Then
            For i = 1 To 8 - Len(D2B)
                supply &= "0"
            Next
        End If
        D2B = supply & D2B
    End Sub
End Class


2019年4月14日 星期日

判斷輸入的數字是否為質數,並求出該值的所有正負因數。



Public Class Form1
    Dim i
    Dim str1
    Dim str2
    Dim ans As String
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim n As Integer = InputBox("請輸入一個數值")
        '求正數因數
        For i = 1 To n
            If n Mod i = 0 Then
                str1 = str1 & i & "  "
            End If
        Next
        Dim factor() As String = Split(str1, "  ")
        Dim factornum As Integer = UBound(factor)
        If factornum = 2 Then
            ans = "這是一個質數。"
        Else
            ans = "這是一個合數。"
        End If

        '求負數因數
        Dim factor2() As String = Split(str1, "  ")
        For i = 0 To UBound(factor2)
            factor2(i) = "-" & factor2(i)
            str2 &= factor2(i) & "  "
        Next
        str2 = Strings.Left(str2, Len(str2) - 3)
        MsgBox(ans & vbCrLf & "這個數字的正因數包含:" & str1 & vbCrLf & "這個數字的負因數包含:" & str2)
        End
    End Sub
End Class

-------------------

另解:
        'UBound函數功能為求出該陣列的個數,因For迴圈從0開始,因此會重複迴圈一次,故,我們可以改為UBound(factor2) - 1,回歸到原陣列個數,如使用這種方式,則可以省去在最後輸出前再進行一次去尾的動作。
        Dim factor2() As String = Split(str1, "  ")
        For i = 0 To UBound(factor2) - 1
            factor2(i) = "-" & factor2(i)
            str2 &= factor2(i) & "  "
        Next

2019年4月13日 星期六

小柯茶行開張囉!



Public Class Form1
    Dim a(12) As Integer
    Dim sum(12) As Integer

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    End Sub

    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
        a(0) = TextBox1.Text
        sum(0) = a(0) * 25
        Label10.Text = "共" & sum(0) & "元"

    End Sub

    Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged
        a(1) = TextBox2.Text

        sum(1) = a(1) * 30
        Label11.Text = "共" & sum(1) & "元"

    End Sub
    Private Sub TextBox3_TextChanged(sender As Object, e As EventArgs) Handles TextBox3.TextChanged
        a(2) = TextBox3.Text
        sum(2) = a(2) * 25
        Label12.Text = "共" & sum(2) & "元"

    End Sub
    Private Sub TextBox4_TextChanged(sender As Object, e As EventArgs) Handles TextBox4.TextChanged
        a(3) = TextBox4.Text
        sum(3) = a(3) * 30
        Label13.Text = "共" & sum(3) & "元"
    End Sub
    Private Sub TextBox5_TextChanged(sender As Object, e As EventArgs) Handles TextBox5.TextChanged
        a(4) = TextBox5.Text
        sum(4) = a(4) * 35
        Label18.Text = "共" & a(4) * 35 & "元"
    End Sub
    Private Sub TextBox6_TextChanged(sender As Object, e As EventArgs) Handles TextBox6.TextChanged
        a(5) = TextBox6.Text
        sum(5) = a(5) * 40
        Label19.Text = "共" & a(5) * 40 & "元"
    End Sub
    Private Sub TextBox7_TextChanged(sender As Object, e As EventArgs) Handles TextBox7.TextChanged
        a(6) = TextBox7.Text
        sum(6) = a(6) * 45
        Label20.Text = "共" & a(6) * 45 & "元"

    End Sub
    Private Sub TextBox8_TextChanged(sender As Object, e As EventArgs) Handles TextBox8.TextChanged
        a(7) = TextBox8.Text
        sum(7) = a(7) * 50
        Label21.Text = "共" & a(7) * 50 & "元"
    End Sub
    Private Sub TextBox16_TextChanged(sender As Object, e As EventArgs) Handles TextBox16.TextChanged
        a(8) = TextBox16.Text
        sum(8) = a(8) * 50
        Label22.Text = "共" & sum(8) & "元"
    End Sub
    Private Sub TextBox15_TextChanged(sender As Object, e As EventArgs) Handles TextBox15.TextChanged
        a(9) = TextBox15.Text
        sum(9) = a(9) * 40
        Label23.Text = "共" & sum(9) & "元"
    End Sub
    Private Sub TextBox14_TextChanged(sender As Object, e As EventArgs) Handles TextBox14.TextChanged
        a(10) = TextBox14.Text
        sum(10) = a(10) * 70
        Label24.Text = "共" & sum(10) & "元"
    End Sub
    Private Sub TextBox13_TextChanged(sender As Object, e As EventArgs) Handles TextBox13.TextChanged
        a(11) = TextBox13.Text
        sum(11) = a(11) * 90
        Label25.Text = "共" & sum(11) & "元"
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim tol As Integer
        For i = 0 To 11
            tol += sum(i)
        Next
        Label26.Text = "本次結帳" & vbCrLf & "共" & tol & "元"
    End Sub

End Class

2019年3月18日 星期一

踩地雷(配合函數與副程式)


Public Class Form1
    Dim bomb As Integer
    Dim bomb1 As Integer
    Dim bomb2 As Integer
    Dim count As Integer

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

        Randomize()
        bomb = Int(Rnd() * 6) + 1
        For i = 1 To 10
            bomb1 = Int(Rnd() * 6) + 1
            If bomb1 <> bomb Then Exit For
        Next
        For j = 1 To 10
            bomb2 = Int(Rnd() * 6) + 1
            If bomb2 <> bomb And bomb2 <> bomb1 Then Exit For
        Next

    End Sub


    Private Sub Label1_Click(sender As System.Object, e As System.EventArgs) Handles Label1.Click
        Call checkBomb(1)
        If Label1.Text = "N" Then
            MsgBox("爆炸了!") : count = count + 1
            Label8.Text = count
            If Label8.Text = 3 Then MsgBox("連爆三次,遊戲結束!")
        End If
    End Sub

    Private Sub Label2_Click(sender As System.Object, e As System.EventArgs) Handles Label2.Click
        Call checkBomb(2)
        If Label2.Text = "N" Then
            MsgBox("爆炸了!") : count = count + 1
            Label8.Text = count
            If Label8.Text = 3 Then MsgBox("連爆三次,遊戲結束!")
        End If
    End Sub

    Private Sub Label3_Click(sender As System.Object, e As System.EventArgs) Handles Label3.Click
        Call checkBomb(3)
        If Label3.Text = "N" Then
            MsgBox("爆炸了!") : count = count + 1
            Label8.Text = count
            If Label8.Text = 3 Then MsgBox("連爆三次,遊戲結束!")
        End If
    End Sub

    Private Sub Label4_Click(sender As System.Object, e As System.EventArgs) Handles Label4.Click
        Call checkBomb(4)
        If Label4.Text = "N" Then
            MsgBox("爆炸了!") : count = count + 1
            Label8.Text = count
            If Label8.Text = 3 Then MsgBox("連爆三次,遊戲結束!")
        End If
    End Sub

    Private Sub Label5_Click(sender As System.Object, e As System.EventArgs) Handles Label5.Click
        Call checkBomb(5)
        If Label5.Text = "N" Then
            MsgBox("爆炸了!") : count = count + 1
            Label8.Text = count
            If Label8.Text = 3 Then MsgBox("連爆三次,遊戲結束!")
        End If
    End Sub

    Private Sub Label6_Click(sender As System.Object, e As System.EventArgs) Handles Label6.Click
        Call checkBomb(6)
        If Label6.Text = "N" Then
            MsgBox("爆炸了!") : count = count + 1
            Label8.Text = count
            If Label8.Text = 3 Then MsgBox("連爆三次,遊戲結束!")
        End If
    End Sub

    Sub checkBomb(ByVal x)
        If bomb = x Or bomb1 = x Or bomb2 = x Then

            Select Case x
                Case 1 : Label1.Text = "N"
                Case 2 : Label2.Text = "N"
                Case 3 : Label3.Text = "N"
                Case 4 : Label4.Text = "N"
                Case 5 : Label5.Text = "N"
                Case 6 : Label6.Text = "N"
            End Select
        End If
    End Sub
End Class

2019年3月10日 星期日

樂透彩抽獎小程式(配合函數與副程式)




Public Class Form1
    Dim n(6) As Integer
    '宣告6個位置分別讓電腦依序抽出六個號碼。


    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        num()
        printnum()
    End Sub


    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        num()
        printnum()
    End Sub


    Sub num()     
        For i = 1 To 6
            n(i) = Int(Rnd() * 49) + 1
            '抽出1~49之中其中一個號碼
            For j = 1 To i - 1
                If n(j) = n(i) Then n(i) = 0 : i = i - 1
                '如果遇到與之前抽過的號碼有衝突則清空該值,重新輸入。
            Next

        Next
    End Sub


    Sub printnum()
        Label1.Text = n(1)
        Label2.Text = n(2)
        Label3.Text = n(3)
        Label4.Text = n(4)
        Label5.Text = n(5)
        Label6.Text = n(6)
        '最後利用六個Label顯示六個剛剛被抽中的號碼。
    End Sub
End Class

2019年2月27日 星期三

樂透彩抽獎小程式

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim n(6) As Integer
        '宣告6個位置分別讓電腦依序抽出六個號碼。
        For i = 1 To 6
            n(i) = Int(Rnd() * 49) + 1
            '抽出1~49之中其中一個號碼
            For j = 1 To i - 1
                If n(j) = n(i) Then n(i) = 0 : i = i - 1
                '如果遇到與之前抽過的號碼有衝突則清空該值,重新輸入。
            Next
            MsgBox(n(i))
            '利用訊息框顯示被抽中之開獎號碼。
        Next

        Label1.Text = n(1)
        Label2.Text = n(2)
        Label3.Text = n(3)
        Label4.Text = n(4)
        Label5.Text = n(5)
        Label6.Text = n(6)
        '最後利用六個Label顯示六個剛剛被抽中的號碼。
    End Sub
End Class

2019年2月24日 星期日

五星彩開獎作業




Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim n(3, 4) As Integer
        Dim a(5) As Integer

        Label1.Text = "近四期5星彩開獎號碼:"
        For i = 0 To 3
            Label1.Text = Label1.Text & vbCrLf & vbCrLf & "第" & i + 1 & "期:"
            For j = 0 To 4
                n(i, j) = InputBox("輸入第" & i + 1 & "期開獎號碼" & vbCrLf & "第" & j + 1 & "個號碼")
                Select Case n(i, j)
                    Case 0 : a(0) += 1 : Label3.Text = "0出現" & a(0) & "次" : Label1.Text &= n(i, j) & Space(2)
                    Case 1 : a(1) += 1 : Label4.Text = "1出現" & a(1) & "次" : Label1.Text &= n(i, j) & Space(2)
                    Case 2 : a(2) += 1 : Label5.Text = "2出現" & a(2) & "次" : Label1.Text &= n(i, j) & Space(2)
                    Case 3 : a(3) += 1 : Label6.Text = "3出現" & a(3) & "次" : Label1.Text &= n(i, j) & Space(2)
                    Case 4 : a(4) += 1 : Label7.Text = "4出現" & a(4) & "次" : Label1.Text &= n(i, j) & Space(2)
                    Case 5 : a(5) += 1 : Label8.Text = "5出現" & a(5) & "次" : Label1.Text &= n(i, j) & Space(2)
                        '當程式碼偵測到數值符合我要的條件後,則繼續往後執行下一步驟
                    Case > 5 : MsgBox("請輸入0~5之間的數字", 16, "輸入錯誤") : n(i, j) = 0 : j = j - 1
                        '否則將其j值-1將其值清空後重新給予使用者輸入
                End Select


            Next
        Next
    End Sub

2019年1月9日 星期三

蜜香紅茶訂購程式

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim num, sum, i As Integer
        num = TextBox1.Text
        If num > 0 Then
            Select Case num
                Case Is >= 100
                    sum = num * 500 * 0.8
                Case Is >= 50
                    sum = num * 500 * 0.9
                Case Is > 25
                    sum = num * 500 * 0.95
                Case 1 To 25
                    sum = num * 500
            End Select
        Else
            MsgBox("重新輸入數量", 32, "錯誤訊息")
            Label5.Text = ""

        End If
        Label4.Text = sum & "元"
        i = sum \ 2000
        Select Case i
            Case Is < 0
                Label5.Text = ""
            Case Is = 0
                Label5.Text = "無"
            Case Is < 5
                Label5.Text = "抵用券" & i * 200 & "元"
            Case Is >= 5
                Label5.Text = "抵用券1000元"
        End Select
    End Sub
End Class


簡易成績統計

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim score, sum, max, m, n As Integer
        Dim scorelist As String = "我輸入的分數分別為:"
        m = InputBox("我總共要輸入幾個分數?")
        For i = 1 To m
            score = InputBox("請輸入第" & i & "科成績")
            scorelist &= score & ","
            sum = sum + score
            If score > max Then max = score
            If score < 60 Then n += 1
            If i = m Then scorelist = Strings.Left(scorelist, Len(scorelist) - 1)
        Next
        TextBox1.Text = scorelist & ControlChars.CrLf
        If CheckBox1.Checked Then TextBox1.Text =
            TextBox1.Text & "總分為:" & sum & ControlChars.CrLf
        If CheckBox2.Checked Then TextBox1.Text =
            TextBox1.Text & "最高分數為:" & max & ControlChars.CrLf
        If CheckBox3.Checked Then TextBox1.Text =
            TextBox1.Text & "不及格科數:" & n & ControlChars.CrLf
    End Sub
End Class


2018年4月21日 星期六

計算數字為2的?次方或求2的n次方 程式碼

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim n As Integer
        n = TextBox1.Text
        Label1.Text = 2 ^ TextBox1.Text
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim m As Integer
        m = TextBox2.Text
        Dim ans As Integer
        Do Until m = 1
            ans += 1
            m /= 2
        Loop
        Label2.Text = ans
    End Sub
End Class


2017年10月16日 星期一

VB_圖書館資訊系統-寫法2

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim id$ = "jack"
        Dim pw$ = "luck007"
        If TextBox1.Text = id And TextBox2.Text = pw Then
            MsgBox("歡迎進入圖書資訊系統", , "系統提示")
        Else
            MsgBox("帳號或密碼輸入錯誤,請重新輸入", , "系統提示")
        End If

2017年10月14日 星期六

VB_圖書館資訊系統

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim id, pw As String
        id = TextBox1.Text
        pw = TextBox2.Text
        If id = "jack" And pw = "luck007" Then
            MsgBox("歡迎進入圖書資訊系統", , "系統提示")
        Else
            MsgBox("帳號或密碼輸入錯誤", , "系統提示")
        End If
    End Sub

請注意:密碼欄要隱藏

2017年9月28日 星期四

Visual Studio

Visual basic

Visual C#

Visual C++

Visual J#

Visual studio

共同語言規範(CLS)

ASP.NET

Windows Forms

ADO.NETXML

.NET Framework類別庫(FCL)

共同語言執行環境(CLR)

作業平台

2017年9月26日 星期二

VB函數 春夏秋冬



    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim M As Integer
        M = Val(TextBox1.Text)
        If M <= 3 Then
            MsgBox("春天")
        ElseIf M <= 6 Then
            MsgBox("夏天")
        ElseIf M <= 9 Then
            MsgBox("秋天")
        ElseIf M <= 12 Then
            MsgBox("冬天")
        Else
            MsgBox("無解")
            '當我輸入值為1-3時,產生答案為春天
            '當我輸入值為4-6時,產生答案為夏天
            '當我輸入值為7-9時,產生答案為秋天
            '當我輸入值為10-12時,產生答案為冬天
            '因為一年只有12個月份,當我輸入值超過13(含)時,產生答案為無解
        End If
    End Sub

2017年9月20日 星期三

Visual Basic 華氏轉攝氏及攝氏轉華氏數值轉換

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim h, s As Single
        h = InputBox("請輸入華氏溫度", "華氏轉攝氏")
        s = 5 / 9 * (h - 32)
        MsgBox("攝氏溫度為" & s, , "華氏轉攝氏")
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim h, s As Single
        s = InputBox("請輸入攝氏溫度", "攝氏轉華氏")
        h = 9 * s / 5 + 32
        MsgBox("華氏溫度為" & h, , "攝氏轉華氏")
    End Sub
End Class