這次製作新的小工具-身分證製造機!
身分證製造機這工具個人很常用,因為要模擬客戶進行交易、帳務處理、顧客管理等等都會要用到,而且還要可以批次產生,因此才想到要做這個工具。讓我們開始建立這個工具吧!
要做身分證製造機之前,需要先了解身分證的規則,了解之後再實作成程式碼。(維基百科內容跟《國民身分證及戶口名簿格式內容製發相片影像檔建置管理辦法》的規則相同,就以好閱讀的維基百科為主)
根據維基百科說明:
目前的國民身分證統一編號(身分證字號)一共有十碼,起首為一個大寫英文字母與接續的九個阿拉伯數字。
首碼英文代碼是以配賦國民身分證統一編號的戶籍地(報戶口之地區)來區分的。
所以第一個字為英文,表示報戶口的地方。但這個地方不一定是出生地,是為報戶口的地方,而外國人就是辦理地的意思。
地區與英文對照表如下:
| 代碼 | 數值 | 縣市 | 備註 | 
|---|---|---|---|
| A | 10 | 臺北市 | |
| B | 11 | 臺中市 | |
| C | 12 | 基隆市 | |
| D | 13 | 臺南市 | |
| E | 14 | 高雄市 | |
| F | 15 | 新北市 | |
| G | 16 | 宜蘭縣 | |
| H | 17 | 桃園市 | |
| I | 34 | 嘉義市 | |
| J | 18 | 新竹縣 | |
| K | 19 | 苗栗縣 | |
| M | 21 | 南投縣 | |
| N | 22 | 彰化縣 | |
| O | 35 | 新竹市 | |
| P | 23 | 雲林縣 | |
| Q | 24 | 嘉義縣 | |
| T | 27 | 屏東縣 | |
| U | 28 | 花蓮縣 | |
| V | 29 | 臺東縣 | |
| W | 32 | 金門縣 | |
| X | 30 | 澎湖縣 | |
| Z | 33 | 連江縣 | |
| L | 20 | 臺中縣 | 2010年12月25日停止使用 | 
| R | 25 | 臺南縣 | |
| S | 26 | 高雄縣 | |
| Y | 31 | 陽明山管理局 | 1974年1月1日停止使用 | 
第二碼至第九碼為數字,其中第二碼表示性別,為了區分外來人口,所以總共有四組號碼:
| 代碼 | 含義 | 
|---|---|
| 1 | 男 | 
| 2 | 女 | 
| 8 | 外來人口-男 | 
| 9 | 外來人口-女 | 
原先的第三碼起為流水號,從2003年7月1日起更改為紀錄設籍前的身分碼,區別在臺灣定居之取得國籍之原外國人、原無戶籍國民、原港澳居民、及原大陸地區人民。
不過在法條的第三項:前項編號首碼以英文字母代表直轄市、縣(市)別,第二碼至第十碼為數字碼,第二碼為性別碼,第十碼為檢查碼。,這部分還在查法條,看看哪邊有寫。
| 代碼 | 含義 | 
|---|---|
| 6 | 取得國籍之外國人 | 
| 7 | 原無戶籍國民 | 
| 8 | 原港澳居民 | 
| 9 | 原大陸地區人民 | 
| 0~5 | 其他 | 
就流水編號,沒有啥意義,就是這樣XDD
也就是 check digit,這邊就先不討論,因為這是最複雜的地方,就只是先把公式列下來,之後再逐一討論。這也是本工具最複雜的地方。
首先要把第一碼英文轉成兩位數數字,接著結合後面的九位數字,接著把每一個數字依序乘上 1、9、8、7、6、5、4、3、2、1、1,然後再相加,最後再用模除(mod)10。這個數值可以整除,就是檢查碼。
或是把前九個乘上 1、9、8、7、6、5、4、3、2、1,相加後模除 10,取得於術後用 10 減去,剩下的值也就是檢查碼。
身分證有點複雜,為了製作這個小工具,會花不少時間,就用這個工具當作壓軸作品吧!