  | 
				VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.   
				 | 
			 
		 
		 
	
		| 上一篇主題 :: 下一篇主題   | 
	 
	
	
		| 發表人 | 
		內容 | 
	 
	
		Ruey
 
 
  註冊時間: 2003-03-12 文章: 1698 來自: tunglo
  第 1 樓
  | 
		
			
				 發表於: 星期三 三月 12, 2003 6:13 pm    文章主題: 身分證檢查 | 
				     | 
			 
			
				
  | 
			 
			
				/****************/
 
/*  身份証號檢查  */
 
/****************/
 
/*
 
(一)長度:對照表
 
字母  A   B   C   D   E   F   G   H   J   K   L   M   N
 
編號  10  11  12  13  14  15  16  17  18  19  20  21  22
 
字母  P   Q   R   S   T   U   V   X   Y   W   Z   I   O
 
編號  23  24  25  26  27  28  29  30  31  32  33  34  35
 
(二)計算公式
 
1.(  A1轉換後,身份証號變成  11  碼  ,前二碼即為  L1,L2)
 
                   A  1  2  3  4  5  6  7  8  9
 
                1  0
 
2.各數字分別乘:1, 9, 8, 7, 6, 5, 4, 3, 2, 1, 1
 
 
(三)範例  G220903332      
 
位數  1  2  3   4  5  6  7  8  9 10 11
 
編號  1  6  2   2  0  9  0  3  3  3  2
 
  *  1  9  8   7  6  5  4  3  2  1  1
 
乘積  1 54 16  14  0  45 0  9  6  3  2
 
     1+ 54+16 +14 +0+ 45+0+ 9+ 6+ 3+ 2  =  150
 
因  150  能被  10  整除,故身分證統一編號正確。 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		garfield Site Admin
  
  註冊時間: 2003-01-30 文章: 2160
 
  第 2 樓
  | 
		
			
				 發表於: 星期四 三月 13, 2003 7:40 pm    文章主題: Ruey | 
				     | 
			 
			
				
  | 
			 
			
				| Ruey 你真是熱心, "有你真好". | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		盧明貴
 
 
  註冊時間: 2003-04-08 文章: 5 來自: 台灣
  第 3 樓
  | 
		
			
				 發表於: 星期二 四月 08, 2003 2:29 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				tid="ABCDEFGHJKLMNPQRSTUVXYWZ"
 
Store space(10) TO idno
 
Store space(1) TO bbb,ccc,fff
 
@ 7,30 say "身份證字號:" get idno pict "@! a999999999"
 
Read
 
fff=left(idno,1)
 
bbb=substr(idno,2,1)
 
If fff="I" .or. fff="O"
 
	@ 1,1 say '身份證字號錯誤'
 
Else
 
	If bbb<>"1" .or. bbb<>"2"
 
		iii=9
 
		aaa=0
 
		Do while iii>=2
 
			aaa=aaa+val(substr(idno,iii,1))*(10-iii)
 
			iii=iii-1
 
			If iii=1
 
				Exit
 
			Endif
 
		Enddo
 
		ccc=ltrim(str(at(fff,tid)+9))
 
		aaa=aaa+val(left(ccc,1))*1+val(right(ccc,1))*9
 
		ddd=0
 
		ddd=mod(aaa,10)
 
		If ddd<>0
 
			ddd=10-ddd
 
		Endif
 
		Store space(1) to ggg
 
		ggg=str(ddd,1)
 
		If ltrim(ggg)<>right(idno,1)
 
			@ 1,1 say '身份證字號錯誤'
 
		Else
 
			@ 1,1 say '身份證字號正確'
 
		Endif
 
	Else
 
		@ 1,1 say '身份證字號錯誤'
 
	Endif
 
Endif                     | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		盧明貴
 
 
  註冊時間: 2003-04-08 文章: 5 來自: 台灣
  第 4 樓
  | 
		
			
				 發表於: 星期二 四月 08, 2003 2:34 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				這支程式是以前在DBaseIII上寫的,拿來Foxpro照樣可以用!   | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |