網路城邦
上一篇 回創作列表 下一篇   字體:
【電腦軟體設計】電腦軟體設計-丙級-術科測驗2站-第1題
2010/02/22 19:44:50瀏覽2876|回應0|推薦1





第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

執行畫面


( 休閒生活網路生活 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=zdzo&aid=2740065