身份證字號管理程式----簡易版
Category: 隨寫
程式目的
自動產生身份證字號並驗證輸入之字號.本程式為實驗試作,請勿用於不法用途。
程式畫面
各物件名稱
物件popup1005內部資料
程式說明
因為是簡易板,要寫程式的部份也只有兩個按鈕而已。
Before 部份
Sub Form1003_Before()
popup1005.selected=1 ,一開始popup1005預設在(第一行台北市)
End Sub
接下來將兩個選擇性別pushbutton的Group_ID 設為一樣。以達到互斥的效果。
[生成]按鈕部份
Sub object1010()
Dim ns as Integer ,定義變數ns為整數
Dim N_id as String ,定義變數N_id為字串
Dim u as Integer ,定義變數u為整數
Dim p as Integer ,定義變數p為整數
Dim city as String ,定義變數city為字串
Dim city_1 as String ,定義city_1為字串
Dim city_2 as Integer ,定義city_2為整數
Dim city_3 as Integer ,定義city_3為整數
Dim ny_1 as String ,定義ny_1~ny_10為短整數
Dim ny_3 as String
Dim ny_4 as String
Dim ny_5 as String
Dim ny_6 as String
Dim ny_7 as String
Dim ny_8 as String
Dim ny_9 as String
Dim ny_10 as String
Dim nx_4 as String ,定義nx_4~nx_9為短整數
Dim nx_5 as String
Dim nx_6 as String
Dim nx_7 as String
Dim nx_8 as String
Dim nx_9 as String
Dim n1 as Short ,定義為n1~n10為短整數
Dim n2 as Short
Dim n3 as Short
Dim n4 as Short
Dim n5 as Short
Dim n6 as Short
Dim n7 as Short
Dim n8 as Short
Dim n9 as Short
Dim n10 as Short
l
start: ,標簽程式開始處
ListID.clear ,清空ListID畫面
ns=Rand()*100000000 ,Rand()╳100000000以取得8位數整數,放入變數ns中。見※
N_id=str(ns) ,將整數變動ns轉為字串放入字串變數N_id中
ny_3=Left(N_ID,1) ,取N_id左邊第一位字串放入ny_3中
n3=val(ny_3) ,將字串變動ny_3轉為數值變數放入n3中
ny_4=Left(N_ID,2) ,取N_id左邊兩位字串放入ny_4中
nx_4=right(ny_4,1) ,取ny_4右邊第一位字串放入nx_4中
n4=val(nx_4) ,將nx_4轉為數值放入n4中
ny_5=Left(N_ID,3)
nx_5=right(ny_5,1)
n5=val(nx_5)
ny_6=Left(N_ID,4)
nx_6=right(ny_6,1)
n6=val(nx_6)
ny_7=Left(N_ID,5)
nx_7=right(ny_7,1)
n7=val(nx_7)
ny_8=Left(N_ID,6)
nx_8=right(ny_8,1)
n8=val(nx_8)
ny_9=Left(N_ID,7)
nx_9=right(ny_9,1)
n9=val(nx_9)
ny_10=right(N_ID,1) ,取N_id右邊第一個字串字放入ny_10中
n10=val(ny_10) ,將ny_10轉為數字放入n10中
(n1取得,城市碼運算,因為不會用popup的取得資料順序,這裡採直接輸入)
city=right(popup1005.text,2) ,將popup1005選擇的內容取最右邊兩個字串,放入變數city中
city_1=left(city,1) ,取city最左邊的一個字串放入city_1中
city_2=val(city_1) ,將city_1轉為數字放入city_2中。(這裡是懦夫的做法)
city=right(city,1) ,取city最右邊的一個字串放入city中。(居然事先沒清空,這是好漢的做法)
city_3=val(city) ,將city轉為數字放入city_3中
n1=city_2+(city_3*9) ,取得n1的值為(city_2)十位 ⊕(city_3)個位╳9
(n2取得,兩個按鈕有互斥的效果只有一個能按下)
If Pushbutton1021.status=nsbOn ,如果pushbutton1021為按下的狀態
n2=1 ,n2為1
Else
Pushbutton1022.status=nsbOn ,如果pushbutton1022為按下的狀態
n2=2 ,n2為2
EndIf
(已取得n1~n10所有數值,開始運算)
u=n1+(n2*8)+(n3*7)+(n4*6)+(n5*5)+(n6*4)+(n7*3)+(n8*2)+(n9)+(n10) ,運用公式把所有值相加放入u
If p=mod(u,10) ,u/10取餘數,如果為p=0為假則繼續執行
ny_1=left(popup1005.text,1) ,取得popup1005最左邊的字串,放入ny_1中。
ListID.clear ,清除ListID,並列印ny_1及n2~n10所有值
ListID.add ny_1+str(n2)+str(n3)+str(n4)+str(n5)+str(n6)+str(n7)+str(n8)+str(n9)+str(n10)
Else ,對照前面判斷式如果餘數不為0,則回到標記處start:重新計算。
GoTo
start:
EndIf
End Sub
※Rand()亂數函數取得的數字為0~1故必須╳上大數以取得所需的數字,另外由於一開始就定義變數ns為整數形態故小數點部份會被自動捨去。
[驗證]按鈕部份
Sub object1011()
Dim p as Integer ,定義p為整數
Dim u as Integer ,定義u為整數
Dim input_ID as String ,定義input_ID為字串
Dim sex_n2 as Integer ,定義sex_n2為整數
Dim sex as String ,定義sex字串
Dim n1_arrays(2,26)as Integer ,定義n1_arrays為2╳26整數字串
Dim hh as Integer ,定義hh為整數
Dim k as Integer ,定義k為整數
Dim i as Integer ,定義i為整數
Dim ny_1 as String ,定義ny_1~ny_10為字串
Dim ny_2 as String
Dim ny_3 as String
Dim ny_4 as String
Dim ny_5 as String
Dim ny_6 as String
Dim ny_7 as String
Dim ny_8 as String
Dim ny_9 as String
Dim ny_10 as String
Dim nx_2 as String ,定義nx_2~nx9為字串
Dim nx_3 as String
Dim nx_4 as String
Dim nx_5 as String
Dim nx_6 as String
Dim nx_7 as String
Dim nx_8 as String
Dim nx_9 as String
Dim n1 as Short ,定義n1~n10 為短整數
Dim n2 as Short
Dim n3 as Short
Dim n4 as Short
Dim n5 as Short
Dim n6 as Short
Dim n7 as Short
Dim n8 as Short
Dim n9 as Short
Dim n10 as Short
ListID.clear ,清空listID
input_id=Field1013.text ,將Field1013的值放入字串變數input_id中
Field1013.text="" ,清空Field1013輸入區
ListID.add "驗證中" ,這行其實可以不要,下一版再改好了
ny_1=Ucase(left(input_id,1)) ,取input_id最左邊第一個字串並轉換成大寫放入ny_1中
ny_2=Left(input_id,2) ,取input_id最左邊兩個數字放入ny_2中
nx_2=right(ny_2,1) ,取ny_2最右邊第一個數字放入nx_2中
n2=val(nx_2) ,將nx_2轉為數字放入n2中
ny_3=Left(input_id,3) 以下類推
nx_3=right(ny_3,1)
n3=val(nx_3)
ny_4=Left(input_id,4)
nx_4=right(ny_4,1)
n4=val(nx_4)
ny_5=Left(input_id,5)
nx_5=right(ny_5,1)
n5=val(nx_5)
ny_6=Left(input_id,6)
nx_6=right(ny_6,1)
n6=val(nx_6)
ny_7=Left(input_id,7)
nx_7=right(ny_7,1)
n7=val(nx_7)
ny_8=Left(input_id,8)
nx_8=right(ny_8,1)
n8=val(nx_8)
ny_9=Left(input_id,9)
nx_9=right(ny_9,1)
n9=val(nx_9)
ny_10=right(input_id,1) ,取input_id最右邊第一個放入ny_10中
n10=val(ny_10) ,把ny_10轉為數字放入n10中
(建立n1_arrays陣列)
n1_arrays(1,1)=1
n1_arrays(1,2)=10
n1_arrays(1,3)=19
n1_arrays(1,4)=28
n1_arrays(1,5)=37
n1_arrays(1,6)=46
n1_arrays(1,7)=55
n1_arrays(1,8)=64
n1_arrays(1,9)=39
n1_arrays(1,10)=73
n1_arrays(1,11)=82
n1_arrays(1,12)=2
n1_arrays(1,13)=11
n1_arrays(1,14)=20
n1_arrays(1,15)=48
n1_arrays(1,16)=29
n1_arrays(1,17)=38
n1_arrays(1,18)=47
n1_arrays(1,19)=56
n1_arrays(1,20)=65
n1_arrays(1,21)=74
n1_arrays(1,22)=83
n1_arrays(1,23)=21
n1_arrays(1,24)=3
n1_arrays(1,25)=12
n1_arrays(1,26)=30
n1_arrays(2,1)=65
n1_arrays(2,2)=66
n1_arrays(2,3)=67
n1_arrays(2,4)=68
n1_arrays(2,5)=69n
n1_arrays(2,6)=70
n1_arrays(2,7)=71
n1_arrays(2,8)=72
n1_arrays(2,9)=73
n1_arrays(2,10)=74
n1_arrays(2,11)=75
n1_arrays(2,12)=76
n1_arrays(2,13)=77
n1_arrays(2,14)=78
n1_arrays(2,15)=79
n1_arrays(2,16)=80
n1_arrays(2,17)=81
n1_arrays(2,18)=82
n1_arrays(2,19)=83
n1_arrays(2,20)=84
n1_arrays(2,21)=85
n1_arrays(2,22)=86
n1_arrays(2,23)=87
n1_arrays(2,24)=88
n1_arrays(2,25)=89
n1_arrays(2,26)=90
(比較迴圈,目的在求得n1的數值,這裡的n1已經是運算過的數字)
For i=1 to 26 step 1 一開始i=1跑26遍一次加1
hh=n1_arrays(2,i) ,從n1_arrays(2,i)取得數值放入hh中
k=asc(Ucase(left(input_id,1))) ,取input_id最左邊第一個數字轉換成大寫再取ascii碼放入k中
If k=hh Then ,如果k和hh相等為真
n1=n1_arrays(1,i) ,n1將從n1_arrays(1,i)中取得數值,如果沒有i將+1再比對一次
EndIf
Next
u=n1+(n2*8)+(n3*7)+(n4*6)+(n5*5)+(n6*4)+(n7*3)+(n8*2)+(n9)+(n10) ,利用公式求得u的值
If p=mod(u,10) u/10取餘數如果p為0繼續執行下一行
ListID.clear ,清空listid
If sex_n2=n2-1 ,如果sex_n2為0為假,繼續執行下一行
sex="先生" ,字串放入sex中
Else ,如果sex_n2不為0,繼續執行下一行
sex="小姐" ,字串放入sex中
EndIf
input_id=right(input_id,9) ,從input_id最右邊取9個字串放入input中
ListID.add "你好"+ny_1+input_id+sex ,列印ListID的值
Else ,p不為0列印下面的字串
ListID.clear
ListID.add "死共匪我已經報警了,去靖盧關到死吧!"
EndIf
End Sub
city=popup1005.noitems 傳回所有資料總數