>>韓英杰雖然當(dāng)前各類考試報(bào)名工作已推廣使用身份證閱讀器來(lái)采集考生的身份證號(hào)和姓名,但是有些偏遠(yuǎn)學(xué)校仍然未普及,這些學(xué)校仍然通過(guò)人工輸入"/>
>>>韓英杰
雖然當(dāng)前各類考試報(bào)名工作已推廣使用身份證閱讀器來(lái)采集考生的身份證號(hào)和姓名,但是有些偏遠(yuǎn)學(xué)校仍然未普及,這些學(xué)校仍然通過(guò)人工輸入的方法采集考生的身份證號(hào)碼和姓名信息,因此難免出現(xiàn)輸入錯(cuò)誤。這些錯(cuò)誤為后期的錄取工作帶來(lái)隱患,為此每年須花費(fèi)很多時(shí)間和精力對(duì)錯(cuò)誤的身份證號(hào)碼和姓名信息進(jìn)行校驗(yàn)和修改。
如何在沒(méi)有身份證閱讀器的情況下采集到正確的信息,是信息采集工作中亟待解決的難題。為此,筆者閱讀了大量的資料,編制了“身份證和姓名校驗(yàn)程序”提供給各縣招辦和報(bào)名點(diǎn)使用。下面是該程序的開(kāi)發(fā)思路,與大家分享。
依據(jù)《中華人民共和國(guó)國(guó)家標(biāo)準(zhǔn) GB 11643-1999》中有關(guān)公民身份號(hào)碼的規(guī)定,二代身份證號(hào)碼由18位組成,其中,由前17位經(jīng)過(guò)特殊的算法后生成第18位校驗(yàn)位。如果按照規(guī)定的公式計(jì)算出的結(jié)果與第18位相同,那么這個(gè)身份證號(hào)碼就是正確的,否則該身份證號(hào)碼在某個(gè)數(shù)字上存在輸入錯(cuò)誤。
這個(gè)公式是:∑(ai×Wi)(mod 11)
其中ai是身份證上第i位的數(shù)字,Wi為第i位的“權(quán)”,
Wi=7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2(i∈ N,1≤ i≤ 17)
∑(ai×Wi)是前17位身份證數(shù)字之和,對(duì)11取余后按照下表找到余數(shù)對(duì)應(yīng)的校驗(yàn)碼就是最后一位的數(shù)字。
舉例說(shuō)明:某考生的身份證號(hào)碼為“13040420021111081X”,利用上式計(jì)算得到前 17位的乘積和 ∑ (ai×Wi)=(1*7)+(3*9)+(0*10)+(4*5)+(0*8)+(4*4)+(2*2)+(0*1)+(0*6)+(2*3)+(1*7)+(1*9)+(1*10)+(1*5)+(0*8)+(8*4)+(1*2)=145, 然 后 用 145 除 以 11余2,從上表中查到2對(duì)應(yīng)的校驗(yàn)數(shù)值為X。那么該身份證號(hào)的校驗(yàn)碼就是X,經(jīng)比對(duì)最后一位確實(shí)是X,故可以判定這是一個(gè)正確的身份證號(hào)碼。
以下為具體實(shí)現(xiàn)過(guò)程,運(yùn)行VF9.0,新建表單,插“身份校驗(yàn)”按鈕對(duì)象,建立click事件,如下圖運(yùn)行校驗(yàn)程序:
程序?qū)λ杏涗涍M(jìn)行逐一校驗(yàn),最后對(duì)校驗(yàn)未成功的記錄進(jìn)行列表顯示,等待操作人員進(jìn)行核實(shí)。
核心代碼如下:
考生在輸入姓名信息時(shí),最常見(jiàn)的錯(cuò)誤是包含了空格、全角或半角的阿拉伯?dāng)?shù)字、標(biāo)點(diǎn)符號(hào)、特殊字符。例如:“王 明”中間包含了空格,“李小軍123”包含了數(shù)字,“程&曉蕾”包含了特殊符號(hào)等等,這些記錄都將被篩選出來(lái)。
那么如何判斷出這些字符呢?可以通過(guò)ASCII碼值范圍進(jìn)行限定,核心代碼如下,使用循環(huán)語(yǔ)句對(duì)姓名字符串逐個(gè)進(jìn)行篩選判斷:
程序經(jīng)過(guò)聯(lián)編,生成可脫離VF環(huán)境的安裝程序,運(yùn)行后效果如下(下表為模擬數(shù)據(jù),不涉及隱私)。由下圖可以看到,凡包含有非法字符的姓名記錄都已被篩選出來(lái),等待工作人員核實(shí)。
該程序在某市某考試報(bào)名期間下發(fā)給各縣招辦和報(bào)名點(diǎn),經(jīng)實(shí)踐得到招辦和報(bào)名點(diǎn)一致好評(píng),將錯(cuò)誤信息消滅在報(bào)名點(diǎn),減輕了招辦信息員的工作量。該程序?qū)﹀e(cuò)誤身份證號(hào)碼的識(shí)別率非常高,經(jīng)過(guò)篩查,錯(cuò)誤率幾乎為0。
該程序也存在不足,例如:如果號(hào)碼與校驗(yàn)位都輸入錯(cuò)誤,且恰巧計(jì)算結(jié)果又相匹配,那么這個(gè)錯(cuò)誤的身份證號(hào)碼將不會(huì)被發(fā)現(xiàn)。另外,在對(duì)姓名信息的校驗(yàn)方面,該程序只能查找非法字符,而無(wú)法校驗(yàn)出錯(cuò)別字,這方面還需要進(jìn)一步完善。
該程序相比身份證閱讀器,雖然無(wú)法做到快速采集,但是由于不依賴硬件,便于個(gè)性化定制,又具有識(shí)別率高的特點(diǎn),仍可作為信息校驗(yàn)工具進(jìn)行推廣,從而減輕信息員的工作量。