【電腦軟體設計】電腦軟體設計-丙級-術科測驗2站-第1題 - 東哥的G3之戀 - udn部落格
東哥的G3之戀
作家:東哥(沉浸在幸福裡!)
文章分類
    Top
    【電腦軟體設計】電腦軟體設計-丙級-術科測驗2站-第1題
    2010/02/22 19:44:50
    瀏覽:2883
    迴響:0
    推薦:1
    引用0


    第1題解題程式

    Option Base 1              '宣告陣列變數指標由1開始
    Dim d(9), X(2) As Integer  '宣告兩個整數型態陣列,d(9)是身份證數字,X(2)是英文字的數字代號


    Sub check1(e, id, L1)                             'e為錯誤碼,id身份證字號,L1字號第1個字母
       If Len(id) <> 10 Or L1 < "A" Or L1 > "Z" Then  '檢查id是否為十碼,L1是否為的英文字母
                e = "FORMAT ERROR"                    '如果不是則變數e等於"FORMAT ERROR"
       Else
             For i = 1 To 9                           '如果是,再檢查後9碼是否為數字
                 d(i) = Mid(id, i + 1, 1)             '用mid函數取出1碼至陣列變數d(i)
                 If d(i) < 0 Or d(i) > 9 Then         '檢查是否為數字
                    e = "FORMAT ERROR"                '如果不是則變數e等於"FORMAT ERROR"
                    Exit For                          '並且跳出迴圈
                 End If
              Next i
        End If
    End Sub


    Sub check2(e, id, sex)                  'e為錯誤碼,id身份證字號,sex為性別
      For i = 1 To 9                        '用迴圈轉換身份證字號的變數型態
          d(i) = CInt(Mid(id, i + 1, 1))    '轉成整數型態並存放至陣列變數d(i)
      Next i
     
     
     '檢查數字第1碼是1時,性別是否為M或是
     '第1碼為2時,性別是否為F,如果不是則變數e=SEX CODE ERROR
      If (sex = "M" And d(1) <> 1) Or (sex = "F" And d(1) <> 2) Then e = "SEX CODE ERROR"
     End Sub

    Sub check3(e, L1)                                  'e為錯誤碼,L1字號第一個字母
      S = InStr("ABCDEFGHJKLMNPQRSTUVXYWZIO", L1) + 9  '利用Instr函數來計算英文字的數字代碼
      X(1) = Mid(S, 1, 1)                              'X(1)為數字代碼的第一位數
      X(2) = Mid(S, 2, 1)                              'X(2)為數字代碼的第二位數
     
      Y = X(1) + 9 * X(2) + 8 * d(1) + 7 * d(2) + 6 * d(3) + 5 * d(4) + 4 * d(5) + 3 * d(6) + 2 * d(7) + d(8) + d(9)
      If (Y Mod 10) <> 0 Then e = "CHECK SUM ERROR"    '如果10無法整除則變數e=CHECK SUM ERROR"
    End Sub

    Private Sub Form_Load()

    M = 2                      '設變數M初始值為2,用來設定MSF的物件開始有2列

    Open "D:\940306.SM1" For Input As #1     '開啟檔案

    Do While Not EOF(1)                      '判斷檔案是否為最後一筆
      Input #1, id, N, sex                     '讀取變數id身份證字號,N姓名, Sex性別



      MSF.Rows = M                      '設定MSF物件有M列
      L1 = Mid(id, 1, 1)                '設定L1為第一個字母
      e = ""                            '設定變數e初始為空字串


      Call check1(e, id, L1)          '呼叫副程式check1,檢查格式是否有錯誤
      If e = "" Then Call check2(e, id, sex) '呼叫副程式check2,檢查性別代碼是否有錯誤
      If e = "" Then Call check3(e, L1) '呼叫副程式check3,檢查公式是否有錯誤
                 
     


     With MSF
      .Row = M - 1                  '指標指定在第M-1列
      .Col = 1: .Text = id          '欄指標指定在第1欄,身份證字號指定到此欄
      .Col = 2: .Text = N           '欄指標指定在第2欄,姓名指定到此欄
      .Col = 3: .Text = sex         '欄指標指定在第3欄,性別指定到此欄
      .Col = 4: .Text = e           '欄指標指定在第4欄,檢查結果指定到此欄
     End With

     M = M + 1                       'M加1,代表MSF元件準備新增一列
    Loop


    With MSF
        .Row = 0                   '列指標指到第0列
        .Col = 1: .Text = "ID NO"  '欄指標指定到第1欄且指定名稱"ID NO"
        .Col = 2: .Text = "NAME"   '欄指標指定到第2欄且指定名稱"NAME"
        .Col = 3: .Text = "SEX"    '欄指標指定第3欄且指定名稱"SEX"
        .Col = 4: .Text = "ERROR"  '欄指標指定第4欄且指定名稱"ERROR"
        .ColWidth(0) = 500         '第0欄寬度500
        .ColWidth(1) = 1200        '第1欄寬度1200
        .ColWidth(2) = 1200        '第2欄寬度1200
        .ColWidth(3) = 1200        '第3欄寬度1200
        .ColWidth(4) = 1800        '第4欄寬度1800
        .Width = 6000              '調整MSF物件寬度
        .Height = 220 * M          '調整MSF物件高度
        .Col = 1                   '欄指標指到第1欄
        .Sort = 5                  '依按第1欄遞增排序
    End With


    Form1.Height = 220 * M + 3000  '重新調整表單高度,一筆記錄高度是220加上考生檢定資料框

    End Sub

    執行畫面


    回應
    發表迴響

    會員登入