大家好哇,又是一個愉快的週末,今天本鳥給大家分享1個有趣的實戰專案,用python製作“全國身份證號驗證及查詢系統”,成品介面如下圖:
本系統可以實現身份證號真偽驗證,年齡、性別及發證地查詢,看起來是不是很高大上,其實做起來不是很複雜,涉及知識主要有python字串處理、表格讀寫和Gui製作,適合有一定python基礎的朋友練手,下面一起來看看怎麼實現的吧!
第一步:身份證號解析
身份證號一般由18位號碼組成,前6位為地址碼,第7至14位為出生日期碼,第15至17位為順序碼,第18位為校驗碼。6位地址碼為編碼物件戶口所在縣(市、區)的行政區劃程式碼;8位出生日期碼為出生年月日;3位順序碼為縣(市、區)所轄派出所的分配碼,順序碼的奇數分配給男性,偶數分配給女性;1位校驗碼是按統一公式計算出來的。
第二步:歸類整理地址碼與區縣對應關係
這個網上比較常見,隨便搜尋1個身份證號都會返回所在的區縣地址,我們要做的是把所有的對應關係都找到,恰巧網上已經有現成的了,不過要稍加整理,大家可以去網上找一下,但是要擦亮眼睛啊,有一個版本是錯的,實在找不到的可以聯絡我,我已經整理好存入表格中
第三步:驗證身份證號真偽
身份證最後一位校驗碼演算法如下:
①將身份證號碼前17位數分別乘以不同的係數,從第1位到第17位的係數分別為:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
②將得到的17個乘積相加。
③將相加後的和除以11並得到餘數。
④餘數可能為0 1 2 3 4 5 6 7 8 9 10這些個數字,其對應的身份證最後一位校驗碼為1 0 X 9 8 7 6 5 4 3 2。
程式碼實現如下:
第四步:查詢地區
規則參考第一步,python兩行程式碼就搞定了
不得不說,python就是簡單方便
第五步:計算出年齡及性別
規則同樣參考第一步,程式碼如下:
到此為止,專案的主體功能已經實現,下面要想辦法用GUI介面實現。
第六步:製作GUI介面
本步驟主要用PyQt5實現,下面我把核心程式碼貼出來:
首先是以網格方式對標籤及文字框進行佈局,並用setStyleSheet對文字框進行修飾
然後是設定查詢按鈕並佈局,再與check函式(訊號)繫結
接著是在check函式中將查詢到的結果在文字框中顯示出來
最後設定主視窗圖片背景
到此為止,本專案就大功告成了,你學會了嗎?
但是要宣告一下,本文所介紹的查詢功能均為正向查詢,即在已知身份證號的前提下,解析原則來源於網路,不敢保證100%準確,更不能反向推算出個人身份證號,所以不涉及侵犯隱私問題。
本文所涉及的程式碼、表格已經上傳,請在公眾號[python的爬蟲與資料分析之路]後臺輸入“20200329”獲取。
本作品採用《CC 協議》,轉載必須註明作者和本文連結