- 浏览: 36089 次
- 性别:
- 来自: 青岛
文章分类
最新评论
package identity_card; import java.awt.Label; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.util.Calendar; import java.util.HashMap; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JTextField; /** * 判断身份证信息 * * @author 刘胜军 */ public class Go extends JFrame { private static final long serialVersionUID = 1L; /** 保存全国各地区身份证代码 */ private static Map<Integer, String> city = new HashMap<Integer, String>(); /** 定义八个标签 */ private Label IDTitle = new Label("用 户 I D:"); private Label areaTitle = new Label("所属地区:"); private Label birthdayTitle = new Label("出生日期:"); private Label ageTitle = new Label("年 龄 :"); private Label constellationTitle = new Label("星 座 :"); private Label animalTitle = new Label("生 肖 :"); private Label CETitle = new Label("天干地支:"); private Label sexTitle = new Label("性 别 :"); private Label coefficientTitle = new Label("校 验 位:"); /** 定义八个文本框 */ private JTextField ID = new JTextField("522634520829128"); private JTextField area = new JTextField(); private JTextField birthday = new JTextField(); private JTextField age = new JTextField(); private JTextField constellation = new JTextField(); private JTextField animal = new JTextField(); private JTextField CE = new JTextField(); private JTextField sex = new JTextField(); private JTextField coefficient = new JTextField(); /** 定义一个按钮 */ private JButton send = new JButton("提交"); /** * 主函数 * * @param args */ public static void main(String[] args) { Go go = new Go(); go.init(); } /** * 初始化函数 */ public void init() { areaInsert();// 插入所属地区信息库 frame_init();// 界面初始化函数 } /** * 界面初始化函数 */ public void frame_init() { this.setTitle("身份证信息");// 设置窗体标题 this.setBounds(400, 200, 300, 450);// 位置坐标 this.setLayout(null);// 取消布局方式 /** 设置九个标签坐标位置及大小 */ this.IDTitle.setBounds(20, 27, 80, 20); this.areaTitle.setBounds(20, 67, 80, 20); this.birthdayTitle.setBounds(20, 107, 80, 20); this.ageTitle.setBounds(20, 147, 80, 20); this.constellationTitle.setBounds(20, 187, 80, 20); this.animalTitle.setBounds(20, 227, 80, 20); this.CETitle.setBounds(20, 267, 80, 20); this.sexTitle.setBounds(20, 307, 80, 20); this.coefficientTitle.setBounds(20, 347, 80, 20); /** 设置九个文本框坐标位置及大小 */ this.ID.setBounds(120, 27, 150, 20); this.area.setBounds(120, 67, 150, 20); this.birthday.setBounds(120, 107, 150, 20); this.age.setBounds(120, 147, 150, 20); this.constellation.setBounds(120, 187, 150, 20); this.animal.setBounds(120, 227, 150, 20); this.CE.setBounds(120, 267, 150, 20); this.sex.setBounds(120, 307, 150, 20); this.coefficient.setBounds(120, 347, 150, 20); /** 设置按钮坐标位置及大小 */ this.send.setBounds(100, 390, 100, 20); /** 设置其他八个文本框为不可编辑状态 */ this.area.setEditable(false); this.birthday.setEditable(false); this.age.setEditable(false); this.constellation.setEditable(false); this.animal.setEditable(false); this.CE.setEditable(false); this.sex.setEditable(false); this.coefficient.setEditable(false); /** 将九个标签添加到窗体上 */ this.add(IDTitle); this.add(areaTitle); this.add(birthdayTitle); this.add(ageTitle); this.add(constellationTitle); this.add(animalTitle); this.add(CETitle); this.add(sexTitle); this.add(coefficientTitle); /** 将九个文本框添加到窗体上 */ this.add(ID); this.add(area); this.add(birthday); this.add(age); this.add(constellation); this.add(animal); this.add(CE); this.add(sex); this.add(coefficient); /** 将按钮添加到窗体上 */ this.add(send); this.ID.addKeyListener(new KeyAdapter() { @Override public void keyTyped(KeyEvent e) {// 判断输入是不是数字或X,不是数字不让输入 char keyChar = e.getKeyChar(); if ((keyChar == 'x') || (keyChar == 'X') || (keyChar >= KeyEvent.VK_0 && keyChar <= KeyEvent.VK_9)) { ; } else { e.consume(); } /** 以下几行,当重新输入身份证号的时候,其他文本框清空 */ area.setText(null); birthday.setText(null); age.setText(null); constellation.setText(null); animal.setText(null); CE.setText(null); sex.setText(null); coefficient.setText(null); } }); this.send.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { /** 所有的判断都在这里面执行 */ judgeBegin();// 开始判断 } }); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 关闭按钮彻底关闭窗体 this.setResizable(false);// 不可重设窗体大小 this.setVisible(true);// 窗体可见 } /** * 开始判断函数 */ public void judgeBegin() { // 获取输入的身份证号 String IDnum = ID.getText(); if (IDnum.length() == 15) {// 将15位身份证号转换成18位身份证号 IDnum = IDnum.substring(0, 6) + "19" + IDnum.substring(6) + 0; } // 判断身份证号的正则表达式 要么15位 要么18位 最后一位可以为字母 Pattern IDnumpattern = Pattern.compile("(\\d{14}[0-9a-zA-Z])|(\\d{17}[0-9a-zA-Z])"); Matcher IDnumMatcher = IDnumpattern.matcher(IDnum); if (IDnumMatcher.matches()) {// 如何满足正则表达式 showArea(IDnum);// 判断输入的身份证号的所属地址 // 生日判定成功,才能执行其他部分,否则不显示 if (showBirthday(IDnum)) {// 显示出生日期 showAge(IDnum);// 显示年龄 showConstellation(IDnum);// 显示星座 showAnimal(IDnum);// 显示生肖 showCE(IDnum);// 显示天干地支 showSex(IDnum);// 显示性别 showCoefficient(ID.getText());// 显示校验位 } } else { javax.swing.JOptionPane.showMessageDialog(null, "输入的身份证号不符合标准格式!"); } } /** * 插入所属地区信息库 */ @SuppressWarnings("static-access") public void areaInsert() { this.city.put(11, "北京市"); this.city.put(12, "天津市"); this.city.put(13, "河北省"); this.city.put(14, "山西省"); this.city.put(15, "内蒙古自治区"); this.city.put(21, "辽宁省"); this.city.put(22, "吉林省"); this.city.put(23, "黑龙江省"); this.city.put(31, "上海省"); this.city.put(32, "江苏省"); this.city.put(33, "浙江省"); this.city.put(34, "安徽省"); this.city.put(35, "福建省"); this.city.put(36, "江西省"); this.city.put(37, "山东省"); this.city.put(41, "河南省"); this.city.put(42, "湖北省"); this.city.put(43, "湖南省"); this.city.put(44, "广东省"); this.city.put(45, "广西壮族自治区"); this.city.put(46, "海南省"); this.city.put(50, "重庆市"); this.city.put(51, "四川省"); this.city.put(52, "贵州省"); this.city.put(53, "云南省"); this.city.put(54, "西藏自治区"); this.city.put(61, "陕西省"); this.city.put(62, "甘肃省"); this.city.put(63, "青海省"); this.city.put(64, "宁夏回族自治区"); this.city.put(65, "新疆维吾尔自治区"); this.city.put(71, "台湾省"); this.city.put(81, "香港特别行政区"); this.city.put(82, "澳门特别行政区"); } /** 显示所属地区 */ public void showArea(String str) { if (str.length() == 15 || str.length() == 18) {// 判断是否为15或18位,不是不判断 String home = this.city.get(new Integer(str.substring(0, 2)));// 查询所属城市,如果查不到为null if (home != null) { this.area.setText(home); } else { this.area.setText("不存在"); } } else { this.area.setText("不存在"); } } /** 判断当前年份下,当前月下有多少天,区分平闰年 */ 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; } } } /** * 显示出生日期 */ public boolean showBirthday(String str) { int year = Integer.valueOf(str.substring(6, 10)); int month = Integer.valueOf(str.substring(10, 12)); int day = Integer.valueOf(str.substring(12, 14)); if (year > 0) {// 年份必须是大于0的 if (month > 0 && month <= 12) {// 月必须大于0,月小于13,日还要单独算 if (day > 0) {// 这里只判定大于0,小于多少,单独判定,因为年份月份不同,天数不同 int days = getDays(year, month);// 判断当前年份下,当前月下有多少天,区分平闰年 if (day <= days) { birthday.setText(year + "年" + month + "月" + day + "日"); return true; } else { birthday.setText("不存在,具体几日有问题。"); } } else { birthday.setText("不存在,具体几日有问题。"); } } else { birthday.setText("不存在,具体几月有问题。"); } } else { birthday.setText("不存在,具体哪一年有问题。"); } return false; } /** * 显示年龄 */ public void showAge(String str) { int year = Integer.valueOf(str.substring(6, 10)); int now = Calendar.getInstance().get(Calendar.YEAR); age.setText(String.valueOf(now - year)); } /** * 显示星座 */ public void showConstellation(String str) { int month = Integer.valueOf(str.substring(10, 12)); int day = Integer.valueOf(str.substring(12, 14)); if ((month == 1 && day >= 20) || (month == 2 && day <= 18)) { constellation.setText("窝是 水瓶座 哇咔咔"); } else if ((month == 2 && day >= 19) || (month == 3 && day <= 20)) { constellation.setText("我是 双鱼座 么么哒"); } else if ((month == 3 && day > 20) || (month == 4 && day <= 19)) { constellation.setText("白羊座 咩咩咩"); } else if ((month == 4 && day >= 20) || (month == 5 && day <= 20)) { constellation.setText("金牛座 哞哞哞"); } else if ((month == 5 && day >= 21) || (month == 6 && day <= 21)) { constellation.setText("双子座 (*^__^*) 嘻嘻……"); } else if ((month == 6 && day > 21) || (month == 7 && day <= 22)) { constellation.setText("巨蟹座 我擦擦"); } else if ((month == 7 && day > 22) || (month == 8 && day <= 22)) { constellation.setText("狮子座 咬我呀"); } else if ((month == 8 && day >= 23) || (month == 9 && day <= 22)) { constellation.setText("处女座 好羞射"); } else if ((month == 9 && day >= 23) || (month == 10 && day <= 23)) { constellation.setText("天秤座 嘿嘿嘿"); } else if ((month == 10 && day > 23) || (month == 11 && day <= 22)) { constellation.setText("天蝎座 我有毒"); } else if ((month == 11 && day > 22) || (month == 12 && day <= 21)) { constellation.setText("射手座 最花心"); } else if ((month == 12 && day > 21) || (month == 1 && day <= 19)) { constellation.setText("魔羯座 呃呃呃"); } else { ; } } /** * 显示生肖 */ public void showAnimal(String str) { int year = Integer.valueOf(str.substring(6, 10)); String an[] = { "猪", "鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗" }; int end = 3; int x = (year - end) % 12; animal.setText(an[x]); } /** * 显示天干地支 */ public void showCE(String str) { int year = Integer.valueOf(str.substring(6, 10)); String a[] = { "癸", "甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "任" }; String b[] = { "亥", "子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌" }; int i = (year - 3) % 10; int j = (year - 3) % 12; CE.setText(a[i] + b[j]); } /** * 显示性别 */ public void showSex(String str) { sex.setText(((Integer.valueOf(str.substring(16, 17))) % 2 == 1 ? "是个老爷们" : "是个老娘们")); } /** 获取身份证校验码,参数是身份证字符串,返回值-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]; } /** 显示校验位 */ public void showCoefficient(String str) {// 这个模块是用来显示校验码是否正确的 int last = getCheck(str);// 存放最后一位计算出来的值,用于和输入的值进行比较 if (str.length() != 18) { coefficient.setText("15位身份证,没有校验位。"); } else { if ((str.substring(17, 18) + "").equals(String.valueOf(last)) || (str.substring(17).equals("x") && last == -1) || (str.substring(17).equals("X") && last == -1)) {// 比较最后一位是否和计算的值一致 coefficient.setText("校验位正确。"); } else { coefficient.setText("校验位错误,应是:" + ((last != -1) ? last : "x")); } } } }
发表评论
文章已被作者锁定,不允许评论。
-
Java 获取屏幕内容
2017-05-05 09:49 1101import java.awt.AWTException; ... -
java程序走矩阵迷宫
2015-10-06 16:41 2690import 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 638import java.util.Arrays; imp ... -
JAVA文本域插入表情
2015-09-26 17:05 1222package JTextPane; i ... -
java判断身份证信息小程序(无图形界面)
2015-09-21 22:53 799请输入要查询的身份证 ... -
JAVA文本域显示不同字体颜色的文字
2015-09-20 17:44 5873package 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。...
这些案例不仅展示了JAVA在图形用户界面(GUI)开发中的潜力,还体现了其在处理数据和时间操作上的灵活性。 1. 彩蛋(Easter Eggs): 彩蛋是一种程序员隐藏在软件中的小惊喜,通常是为了增加趣味性或作为个人签名...
6. 界面设计:采用Swing或JavaFX等库创建用户友好的图形界面,提供直观的操作体验。 在开发过程中,良好的代码结构和设计原则是必不可少的,例如SOLID原则(单一职责、开闭、里氏替换、接口隔离和依赖倒置)。此外...
15 applet java可以编写两类程序,applications和applet,applications可以在控制台直接运行,与其他高级编程语言没有太大区别,而java的特色在于它具有编制小应用程序的功能,applet可以在internet上传输并在兼容...
但在本程序中,可能选择自定义数据结构以满足特定需求,比如存储额外的病人信息(身份证号、姓名、性别等)。 - Java的面向对象特性使得设计和实现这样的管理系统更为直观,通过类来封装病人信息和手术状态,使用...
3. **视图层**:用户界面,可能使用Java Swing或JavaFX来构建图形用户界面,提供直观的操作方式,如表格展示图书信息、输入框输入查询条件等。 4. **持久层**:Java与Access数据库的交互通常通过JDBC(Java ...
Java Swing 是Java GUI(图形用户界面)开发的一个关键库,它是Java AWT(Abstract Window Toolkit)的扩展,提供了更为丰富的组件和更灵活的设计能力。在Java Swing中,开发者可以创建出美观、功能丰富的桌面应用...
- 前端界面可能采用JavaFX或Swing来构建,它们是Java中的图形用户界面(GUI)工具包,用于创建桌面应用程序。 - 也可能使用Web技术,如HTML、CSS和JavaScript,配合Java的Servlet或Spring MVC来构建一个基于Web的...
1. **JavaApplet**:JavaApplet是Java的一种早期应用形式,它允许开发者编写可以在Web浏览器中运行的小程序。在阳光酒店管理系统中,JavaApplet被用来构建用户交互的前端部分,如客房预订、入住登记、退房处理等界面...