用Python写一个身份证号码校验系统
一、总体介绍
本项目使用Tkinter作为GUI模块,充分利用Python面向对象的思想,开发一款实现身份证号码校验的应用程序。具备解析用户输入的身份证号码中的地区信息、出生日期、以及身份证号码是否合法等功能。是一款练习Python面向对象思想、tkinter GUI模块的优质练手项目。
项目演示
以上,如果我们输入一个正确的身份证号码,系统可以正常解析;但是篡改其中一位的话,校验结果直接显示无效;如果少输入一位的话,系统会提示“请输入18位”。
二、认识身份证号码
身份证号码的构成如下:
(1)地区码:身份证前6位就是地区码,中国每一个地区都对应一个地区码,按照GB/T2260执行。通常1开头为华北地区、2开头为东北地区、3开头为华东地区、4开头为华中地区和华南地区、5开头为西南地区、6开头为西北地区、7和8开头为特别地区。
(2)出生日期码:表示编码对象出生的年、月、日,按GB/T7408的规定执行,年月日代码之间不用分隔符。
(3)顺序码:表示在同一地址码所标识的区域范围内,对同年同月同日出生的人编订的顺序号,顺序码的奇数分配给男性、偶数分配给女性。
(4)校验码:身份证第18位是校验码,对前17位做一个运算,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码得到第18位的数字。
校验方法:
身份证号码末尾校验码的计算原理
三、实现界面类:IDCheckGUI
在工程项目中新建一个idcheckgui.py的文件用来生成GUI界面
from tkinter import *
from tkinter.ttk import *
import os
class IDCheckGUI(Tk):
def __init__(self):
super().__init__()
self.title("身份证信息校验系统")
self.geometry("800x510+400+200")
self.resizable(0,0)
self["bg"] = "whitesmoke"
self.setup_UI()
def setup_UI(self):
self.style01 = Style()
self.style01.configure("input.TLabel",font=("微软雅黑",20,"bold"))
self.style01.configure("TLabel",font=("微软雅黑",20,"bold"),foreground = "navy")
self.style01.configure("TButton",font=("微软雅黑",20,"bold"),background = "lightblue")
# 图片
self.Login_image = PhotoImage(file = "."+os.sep+"img"+os