- 浏览: 36162 次
- 性别:
- 来自: 青岛
文章分类
最新评论
请输入要查询的身份证号码,输入exit退出:
53010219200508011x
身份证号:53010219200508011x
所属地区:云南省
出生日期:1920年5月8日
性别:男性
校验位:正确。
------------------------------------------
请输入要查询的身份证号码,输入exit退出:
530102192005080111
身份证号:530102192005080111
所属地区:云南省
出生日期:1920年5月8日
性别:男性
校验位:错误,校验为应该是:x
------------------------------------------
请输入要查询的身份证号码,输入exit退出:
53010219200508011x
身份证号:53010219200508011x
所属地区:云南省
出生日期:1920年5月8日
性别:男性
校验位:正确。
------------------------------------------
请输入要查询的身份证号码,输入exit退出:
530102192005080111
身份证号:530102192005080111
所属地区:云南省
出生日期:1920年5月8日
性别:男性
校验位:错误,校验为应该是:x
------------------------------------------
请输入要查询的身份证号码,输入exit退出:
package identity_card; import java.util.HashMap; import java.util.Map; import java.util.Scanner; /** * 验证身份证 */ public class Go { /** 保存全国各地区身份证省份代码 */ private Map<Integer, String> city = new HashMap<Integer, String>(); /** 主函数,不多说 */ public static void main(String[] args) { new Go().init(); } /** 初始化相关参数及数据 */ public void init() { insert(); input(); } /** 接收输入,判定结果 */ public void input() { Scanner sc = new Scanner(System.in); while (true) { System.out.println("请输入要查询的身份证号码,输入exit退出:"); String str = sc.nextLine();// 接收一行输入 if (str.toString().equals("exit")) {// 判断是否输入的是"exit",如果不是,继续执行,否则退出 System.out.println("系统已经退出。"); System.exit(0);// 退出 } if (str.length() == 18) {// 身份证必须等于18位才可以判断,否则不判断,这里面判断等于18位的 boolean status = true;// 设初始状态为可行的 for (int i = 0; i < str.length() - 1; i++) {// 这里面只判断前17位是否是数字,因为最后一位可以是"x"或"X" if (!Character.isDigit(str.charAt(i))) {// 如果当前字节不是数字,打印提示,改变status的值 System.out.println("你输入的内容不符合要求。"); status = false; } } /* * 上面的循环走完了,如果没有出错,status还是等于true,所以这里我们再判断最后一位 * 如果上面出错了,status不等于true,那么下面的if就不执行了 */ if (status) {// 这个地方也可以写成if (status==true){ /* * 前17位判断完成后,接下来,我们判定最后一位,最后一位只能是"x"或"X" */ if (Character.isDigit(str.charAt(17)) || str.charAt(17) == 'x' || str.charAt(17) == 'X') {// 如果满足继续执行,否则执行else /** 能跑到这里面,说明前面的判断都没有问题,现在开始拆分内容了 */ {// 这一组括号其实是没有用的,在这是为了区分模块,这个模块是显示输入的内容的 System.out.print("身份证号:"); System.out.println(str); } {// 这个模块是用来显示地区的 String home = city.get(new Integer(str.substring(0, 2)));// 查询所属城市,如果查不到为null System.out.print("所属地区:"); if (home != null) System.out.println(home); else System.out.println("不存在"); } {// 这个模块是用来显示出生日期的 int year = Integer.valueOf(str.substring(6, 10)); int month = Integer.valueOf(str.substring(10, 12)); int day = Integer.valueOf(str.substring(12, 14)); System.out.print("出生日期:"); if (year > 0) {// 年份必须是大于0的 if (month > 0 && month <= 12) {// 月必须大于0,月小于13,日还要单独算 if (day > 0) {// 这里只判定大于0,小于多少,单独判定,因为年份月份不同,天数不同 int days = getDays(year, month);// 判断当前年份下,当前月下有多少天,区分平闰年 if (day <= days) { System.out.print(year + "年"); System.out.print(month + "月"); System.out.println(day + "日"); } else { System.out.println("不存在,具体几日有问题。"); } } else { System.out.println("不存在,具体几日有问题。"); } } else { System.out.println("不存在,具体几月有问题。"); } } else { System.out.println("不存在,具体哪一年有问题。"); } } {// 这个模块是用来显示性别的 System.out.print("性别:"); System.out.println((Integer.valueOf(str.substring( 16, 17))) % 2 == 1 ? "男性" : "女性"); } {// 这个模块是用来显示校验码是否正确的 int last = getCheck(str);// 存放最后一位计算出来的值,用于和输入的值进行比较 System.out.print("校验位:"); if ((str.substring(17, 18) + "").equals(String .valueOf(last)) || (str.substring(17).equals("x") && last == -1) || (str.substring(17).equals("X") && last == -1)) {// 比较最后一位是否和计算的值一致 System.out.println("正确。"); } else { System.out.println("错误,校验为应该是:" + ((last != -1) ? last : "x")); } } } else { System.out.println("你输入的内容不符合要求。"); } } } else {// 这里面判断不等于18位的 System.out.println("你输入的内容不符合要求。"); } System.out.println("------------------------------------------"); } } /** 判断当前年份下,当前月下有多少天,区分平闰年 */ public int getDays(int year, int month) {// 判断当前年份下,当前月下有多少天,区分平闰年 if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {// 这些月下,不管是平年,还是闰年,都是31天 return 31; } else if (month == 4 || month == 6 || month == 9 || month == 11) {// 这些月下,不管是平年,还是闰年,都是30天 return 30; } else { if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {// 这是闰年 return 29; } else { // 这是平年 return 28; } } } /** 获取身份证校验码,参数是身份证字符串,返回值-1代表的是"x"或"X" */ public int getCheck(String str) { /** 这个变量用来存放所有校验和 */ int sum = 0; /** 这个数组里面存放的是身份证校验位系数,coefficient的缩写 */ int[] coe = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 }; /** 这个数组里面存放的是身份证校验对应的最后一位身份证号码 */ int[] check = { 1, 0, -1, 9, 8, 7, 6, 5, 4, 3, 2 };// -1代表的是"x"或"X" for (int i = 0; i < str.length() - 1; i++) { sum = sum + Integer.parseInt(str.charAt(i) + "") * coe[i]; } return check[sum % 11]; } /** 将全国各地区身份证省份代码插入到private Map<Integer, String> city集合中 */ public void insert() { city.put(11, "北京市"); city.put(12, "天津市"); city.put(13, "河北省"); city.put(14, "山西省"); city.put(15, "内蒙古自治区"); city.put(21, "辽宁省"); city.put(22, "吉林省"); city.put(23, "黑龙江省"); city.put(31, "上海市"); city.put(32, "江苏省"); city.put(33, "浙江省"); city.put(34, "安徽省"); city.put(35, "福建省"); city.put(36, "江西省"); city.put(37, "山东省"); city.put(41, "河南省"); city.put(42, "湖北省"); city.put(43, "湖南省"); city.put(44, "广东省"); city.put(45, "广西壮族自治区"); city.put(46, "海南省"); city.put(5, "0重庆市"); city.put(51, "四川省"); city.put(52, "贵州省"); city.put(53, "云南省"); city.put(54, "西藏自治区"); city.put(61, "陕西省"); city.put(62, "甘肃省"); city.put(63, "青海省"); city.put(64, "宁夏回族自治区"); city.put(65, "新疆维吾尔自治区"); city.put(71, "台湾省(886)"); city.put(81, "香港特别行政区"); city.put(82, "澳门特别行政区"); } }
- java判断身份证信息小程序_无图形界面_.zip (78.2 KB)
- 下载次数: 0
发表评论
文章已被作者锁定,不允许评论。
-
Java 获取屏幕内容
2017-05-05 09:49 1105import java.awt.AWTException; ... -
java程序走矩阵迷宫
2015-10-06 16:41 2691import java.util.Arrays; imp ... -
java实现计算算术表达式的值(后缀表达式方式)
2015-10-06 13:25 2664package zn.sd.ly.jtree.test; ... -
由数字对角线组成的三角形
2015-10-06 13:05 612/** * 示例:<br> * 1 3 ... -
创建一个二维数组,求路线,使得和最小
2015-10-06 11:06 639import java.util.Arrays; imp ... -
JAVA文本域插入表情
2015-09-26 17:05 1225package JTextPane; i ... -
java判断身份证信息小程序(有图形界面)
2015-09-25 00:27 914package identity_card; i ... -
JAVA文本域显示不同字体颜色的文字
2015-09-20 17:44 5874package JTextPane; impor ... -
JAVA中JTree节点的自定义显示
2015-09-18 13:20 0目前大家所熟知的java中jtree外观并不是那么的美观。 ...
相关推荐
【标题】"Java判断身份证信息小程序(有图形界面)"是一个基于Java编程语言开发的应用程序,其主要功能是验证中国居民的身份证号码是否有效。这个小程序不仅包含核心的身份证信息判断逻辑,还集成了图形用户界面(GUI...
3. **GUI图形界面**:为了方便用户操作,小程序通常会包含图形用户界面(GUI)。Java的Swing或JavaFX库可以用来构建这些界面,包括显示当前号码、剩余人数、等待时间等信息的组件,以及取号、叫号等功能按钮。 4. *...
【Java网吧计费小程序】 Java网吧计费小程序是一款基于Java编程语言开发的简易计费管理系统,主要用于网吧环境下的用户上网计费管理。该程序旨在提高网吧运营效率,规范计费流程,确保营业收入的准确无误。下面将...
它通过直观的图形界面,允许用户录入、查询、修改和删除考生的相关信息,如姓名、身份证号、考试科目、成绩等。这个系统通常包括多个功能模块,如考生信息录入模块、信息查询模块、成绩管理模块以及系统设置模块等。...
1. 前端:Java利用Swing或JavaFX库创建图形用户界面(GUI),提供友好的操作界面,包括学生信息的录入、查询、修改和删除等功能。 2. 后端:Access数据库用于存储学生信息,如姓名、学号、班级、成绩等,同时,...
为了实现这些功能,开发者可能使用了Java Swing或JavaFX库来构建图形用户界面,它们是Java标准库的一部分,专门用于创建桌面应用程序的界面。Swing是基于AWT(Abstract Window Toolkit)的,提供了丰富的组件和布局...
该系统是基于微信小程序的新生自助报到系统,利用 Java 技术和 MySQL 数据库实现。该系统的主要功能是实现新生报到的信息化,提高新生报到管理的发展和经验。 知识点一:新生报到系统的需求分析 新生报到系统的...
【标签】"java 界面编程"意味着系统采用了Java的图形用户界面(GUI)库,如Swing或JavaFX,来创建用户界面。这些库提供了丰富的组件,如按钮、文本框、表格等,可以方便地构建出交互式的窗口应用程序。 总的来说,...
在这个特定的项目中,我们看到一个利用QT图形界面库,OpenCV图像处理库,以及OCR(Optical Character Recognition,光学字符识别)技术来实现身份证号码和银行卡号的自动提取的示例。 首先,让我们详细了解一下QT。...
6. 界面设计:采用Swing或JavaFX等库创建用户友好的图形界面,提供直观的操作体验。 在开发过程中,良好的代码结构和设计原则是必不可少的,例如SOLID原则(单一职责、开闭、里氏替换、接口隔离和依赖倒置)。此外...
这些案例不仅展示了JAVA在图形用户界面(GUI)开发中的潜力,还体现了其在处理数据和时间操作上的灵活性。 1. 彩蛋(Easter Eggs): 彩蛋是一种程序员隐藏在软件中的小惊喜,通常是为了增加趣味性或作为个人签名...
15 applet java可以编写两类程序,applications和applet,applications可以在控制台直接运行,与其他高级编程语言没有太大区别,而java的特色在于它具有编制小应用程序的功能,applet可以在internet上传输并在兼容...
但在本程序中,可能选择自定义数据结构以满足特定需求,比如存储额外的病人信息(身份证号、姓名、性别等)。 - Java的面向对象特性使得设计和实现这样的管理系统更为直观,通过类来封装病人信息和手术状态,使用...
3. **视图层**:用户界面,可能使用Java Swing或JavaFX来构建图形用户界面,提供直观的操作方式,如表格展示图书信息、输入框输入查询条件等。 4. **持久层**:Java与Access数据库的交互通常通过JDBC(Java ...
- 前端界面可能采用JavaFX或Swing来构建,它们是Java中的图形用户界面(GUI)工具包,用于创建桌面应用程序。 - 也可能使用Web技术,如HTML、CSS和JavaScript,配合Java的Servlet或Spring MVC来构建一个基于Web的...
Java Swing 是Java GUI(图形用户界面)开发的一个关键库,它是Java AWT(Abstract Window Toolkit)的扩展,提供了更为丰富的组件和更灵活的设计能力。在Java Swing中,开发者可以创建出美观、功能丰富的桌面应用...
1. **JavaApplet**:JavaApplet是Java的一种早期应用形式,它允许开发者编写可以在Web浏览器中运行的小程序。在阳光酒店管理系统中,JavaApplet被用来构建用户交互的前端部分,如客房预订、入住登记、退房处理等界面...