使用Tkinter作为GUI模块以及python基础,开发一款身份证号码校验的系统。

功能概览:

  1. 用户输入身份证号码
  2. 从身份证号码得到该用户的地区信息、出生日期、以及身份证号码是否合法

Tkinter是Python标准库中的一个用于创建图形用户界面的模块。它提供了一组用于构建GUI的组件,例如窗口、按钮、菜单、文本框等。

下面是一个简单的例子,它创建了一个窗口,包含一个文本框和一个按钮。用户在文本框中输入身份证号码,点击按钮后,程序会解析并校验身份证号码的有效性。

校验身份证号码的校验码是否正确。

在中国大陆,身份证号码由17位数字组成,最后一位为校验码。校验码的计算方法如下:

  1. 将身份证号码的前17位数字依次与对应的系数相乘,系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2

  2. 将乘积的各位数字相加,得到一个和值

  3. 将和值除以11,得到余数

  4. 如果余数为0,则校验码为1;如果余数为1,则校验码为0;其他情况下,校验码为11减去余数

下面是程序的完整代码,它实现了身份证号码的解析和校验功能:

import tkinter as tk
import tkinter.messagebox
from datetime import datetimeclass Application(tk.Frame):def __init__(self, master=None):super().__init__(master)self.pack()self.create_widgets()def create_widgets(self):self.id_label = tk.Label(self, text="身份证号码:")self.id_label.pack()self.id_input = tk.Entry(self)self.id_input.pack()self.check_button = tk.Button(self, text="检验", command=self.check_id)self.check_button.pack()def check_id(self):id_str = self.id_input.get()# 提取前6位数字,用于解析出生地area_code = id_str[:6]# 提取第7到第14位数字,用于解析出生日期birth_date = id_str[6:14]# 解析出生日期# 将出生日期字符串转换为日期对象birth_date = datetime.strptime(birth_date, "%Y%m%d")# 通过校验码校验身份证号码的有效性check_code_map = "10X98765432"weight = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]# 将身份证号码的前17位数字与对应的系数相乘# 并将乘积的各位数字相加,得到一个和值sum_ = sum(int(a) * b for a, b in zip(id_str[:17], weight))# 将和值除以11,得到余数mod = sum_ % 11# 计算校验码check_code = check_code_map[mod]# 校验身份证号码的校验码是否正确valid = check_code == id_str[17]# 官方公布的地区代码表...area_table = {"110000": "北京市","120000": "天津市",# ...}area = area_table.get(area_code, "未知地区")# 显示解析结果result = (f"出生地: {area}\n"f"出生日期: {birth_date:%Y-%m-%d}\n"f"身份证号码: {'合法' if valid else '无效'}\n")tk.messagebox.showinfo("解析结果", result)root = tk.Tk()
app = Application(master=root)
app.mainloop()

将出生日期字符串转换为日期对象,以便于更方便的显示和处理。

接着,我们通过校验码算法,计算出身份证号码的校验码,并与身份证号码的最后一位进行比较,如果一致,则表示身份证号码合法,否则为无效。

最后,我们通过tk.messagebox模块的showinfo方法,显示解析结果。

需要注意的是,上面给出的程序只是一个简单的例子,实际使用中,还需要处理更多的细节和异常情况,例如:

  • 身份证号码的长度不正确(应为18位)
  • 身份证号码中的前17位数字不是数字
  • 身份证号码中的校验码不是数字
  • 解析出生地时,无法找到对应的地区
  • 解析出生日期时,出生日期字符串格式不正确

为了避免程序出现这些异常情况,我们需要进行适当的处理,例如使用try/except语句进行异常捕获,或者对身份证号码的格式进行严格的正则表达式验证。

用python实现身份证号校验系统相关推荐

  1. 用Python进行身份证号校验

    在日常应用中,经常需要输入身份证号,因为号码较长容易录错,因此需要进行实时校验,以尽可能保证输入正确.以下以Python为例,浅聊身份证号码校验的方法. 首先我们需要了解身份证号各个号段的意义.身份证 ...

  2. 使用 python 进行身份证号校验

    使用 python 代码进行身份证号校验 先说,还有很多可以优化的地方. 1.比如加入15位身份证号的校验,嗯哼,15位的好像没有校验,那就只能提取个出生年月日啥的了. 2.比如判断加入地址数据库,增 ...

  3. 利用python实现身份证号验证系统

    大家好哇,又是一个愉快的周末,今天本鸟给大家分享1个有趣的实战项目,用python制作"全国身份证号验证及查询系统",成品界面如下图: 本系统可以实现身份证号真伪验证,年龄.性别及 ...

  4. 基于可视化结构的身份证号码校验系统-树莓派实现

    基于可视化结构的身份证号码校验系统 摘要: 本作品是一个通用的身份证号码校验系统,目前已经尝试在Linux和Windows系统下运行,结果均可达到理想效果.系统通过运用基础GUI库tkinter创建系 ...

  5. python判断真假身份证号

    python判断真假身份证号 ''' python判断真假身份证号 识别一串身份证是否是真实的身份证号码: 公民身份号码是特征组合码,共18位,由十七位数字本体码和一位数字校验码组成. 排列顺序从左至 ...

  6. 利用python识别身份证号后获取年龄和性别信息

    利用python识别身份证号后获取年龄和性别信息 1. 实验目的 利用python识别身份证号后,从身份证号中获取年龄和性别信息 2. 主代码 1. 身份证号码识别 # !/usr/bin/pytho ...

  7. C语言基础入门48篇_26_身份证号校验程序(以身份证的校验方式是实例加深对数组及函数封装的理解、字符-‘0‘得到字符对应的int类型数字)

    本篇根据以二代身份证的校验方式是实例加深对数组及函数封装的理解 1. 第二代身份证号的组成 第二代身份证号为18位,各位数字对应了不同的信息(以下顺序从左往右): AABBCCYYYYMMDDXXXV ...

  8. Java身份证号校验

    面向百度编程 package com.sinosoft.lf.util.common;import java.text.SimpleDateFormat; import java.util.Date; ...

  9. 用python实现身份证号的解析(输出性别,生日,生肖,星座)

    用python实现身份证号的解析,输出性别,生日,生肖,星 实现功能: 1.解析生日 2.解析性别 3.解析所在省份 4.解析生肖,星座 代码如下: ID=input('请输入18位身份证号码:'); ...

最新文章

  1. Java豆瓣电影爬虫——减少与数据库交互实现批量插入
  2. PPT科研绘图之棱台
  3. LinuxC-运算符
  4. Xen Documentation - Hypercall Interfaces
  5. TensorFlow tf.keras.layers.DenseFeatures
  6. 前端必须学会的5个原生JavaScript对象方法
  7. cmd使用SBT构建scala项目
  8. ListView可拖拽item的原理
  9. cisco ip phone 7911 安装
  10. Cocos2d-x之绘不规则多边形
  11. php对表中的字段自选排序,Mysql应用MySQL 按指定字段自定义列表排序的实现
  12. ARToolkit Part 1: Labelling 详解
  13. VMware tools 安装失败
  14. Sci-Hub桌面版 告别网站被封的尴尬
  15. 环球黑卡可以透支吗?环球黑卡是信用卡吗
  16. python爬虫——爬取豆瓣top250电影信息
  17. 实用,一键生成数据库文档
  18. JavaScript中DOM对象的详解
  19. 点源声场的MATLAB仿真
  20. 高通主要平台:UE Categor以及对应Data Rate

热门文章

  1. QQ语音测试-微信语音测试-王者荣耀游戏语音测试-社交APP语音质量测试
  2. 如何在4-6个月内从零开始完成自己的一作PAPER?
  3. PHP给源代码加密的几种方法
  4. 基于BIM+GIS技术,如何构建智慧楼宇三维可视化管控平台?
  5. JQuery放大镜效果实现实例
  6. 写给嵌入式程序员的循环冗余校验(CRC)算法入门引导
  7. toad for oracle 11g 下载,Toad For Oracle
  8. 毕业设计记录 day(4)
  9. php字符值函数,php从指定ASCII值返回字符函数chr()
  10. 虚拟服务器面板,主流的虚拟主机控制面板有哪些(一)