⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.java

📁 一个身份证转换程序
💻 JAVA
字号:
/**
 *@身份证15位转18位
 *@版本1.0
 *@2006年4月16日
 *@小刘制作
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.applet.*;

public class test extends Applet implements ActionListener
{
	//定义组件
	String str;
	JButton btn1,btn2;
	JPanel p1,p2,p3,p4;
	JTextField text;
	JLabel j0,j1,j2,j3,j4,j5,j6,j7,j8,j9;
	boolean rad=true;
	//在init函数里排版
	public void init()
	{
		p1=new JPanel();
		p2=new JPanel();
		p3=new JPanel();
		p4=new JPanel();
		text=new JTextField(20);
		btn1=new JButton("转换");
		btn2=new JButton("重新输入");
		j0=new JLabel("15位身份证号");
		j1=new JLabel("18位身份证号");
		j2=new JLabel("出生日期");
		j3=new JLabel("性别");
		j4=new JLabel("提示信息");
		j5=new JLabel("身份证号15位到18位转换");
		j6=new JLabel(" ");
		j7=new JLabel(" ");
		j8=new JLabel(" ");
		j9=new JLabel(" ");
		p1.setLayout(new FlowLayout());
		p1.add(j5);
		p2.setLayout(new GridLayout(5,5,80,40));
		p2.add(j0);p2.add(text);p2.add(j1);p2.add(j6);
		p2.add(j2);p2.add(j7);p2.add(j3);p2.add(j8);
		p2.add(j4);p2.add(j9);
		p3.setLayout(new GridLayout());
		p3.add(btn1);p3.add(btn2);
		this.setBackground(Color.lightGray);
		p4.setLayout(new BorderLayout());
		p4.add(p1,BorderLayout.NORTH);
		p4.add(p2,BorderLayout.CENTER);
		p4.add(p3,BorderLayout.SOUTH);
		add(p4);
		//对两个按钮进行监听
		btn1.addActionListener(this);
		btn2.addActionListener(this);
	}
	//对监听到的事件进行处理
	public void actionPerformed(ActionEvent e)
	{
		//如果"转换按钮"被按下
		if(e.getSource().equals(btn1))
		{
			btn1.setEnabled(false);
			rad=true;
			while(rad)
			{
				str=text.getText();
				//把字符串的长度赋给整型len
				int len=str.length();
				//判断字符串是否为15
				if(len>15||len<15)
				{
					j9.setForeground(Color.red);
					j9.setText("错误-数目不对");
					rad=false;
					break;		
				}
				//判断字符串里是否有非法字符
				for(int i=0;i<len;i++) 
		        {
		            try 
		            {
		                Integer.parseInt("" + str.charAt(i));
		            }
		            catch(NumberFormatException ev) 
		            {
		            	j9.setForeground(Color.red);
						j9.setText("错误-非法字符");
						rad=false;
						break;	
		            }
		        }
		        //调用转换函数
		        this.Conversion(str);
		        rad=false;		
			}	
		}
		//如果按钮"重新输入被按下",则清除掉文本框内容及所有标签的内容
		if(e.getSource().equals(btn2))
		{
			btn1.setEnabled(true);
			text.setText(null);
			j6.setText("");j7.setText("");
			j8.setText("");j9.setText("");	
		}
		
	}
	//转换功能在此函数实现
	public void Conversion(String number)
	{
		int Sex=0;
		//用substring方法,把世纪数加入15位身份证号码中,得到17位(不考虑20世纪的小朋友)
		String num1 = number.substring(0, 6) + 19 + number.substring(6,15); 
        //显示出生年月
        try
        {
        	j7.setText("19"+num1.charAt(8)+num1.charAt(9)+"年"+num1.charAt(10)
        	+num1.charAt(11)+"月"+num1.charAt(12)+num1.charAt(13)+"日");        
        }
        catch(NumberFormatException ev){}
       	//把身份证号的第16位提取出来
       	try
        {
        	Sex=Integer.parseInt(""+num1.charAt(16));
        }
        catch(NumberFormatException ev){}
         
  		//如果Sex是奇数就是个GG,反之则是MM
        if(Sex/2==0)
        {
        	j8.setText("是个MM");
        }   
        else
        {
        	j8.setText("是个GG");
        }
        
        int num2=0;
        //把17位号码从高位到低位与下列17个数字分别相乘求和得到num2
        int ary[]=new int[]{2,4,8,5,10,9,7,3,6,1,2,4,8,5,10,9,7};
        for(int i=16,j=0;j<17;i--,j++) 
        {
        	try
        	{
        	    int ai = Integer.parseInt("" + num1.charAt(i));
            	num2=num2+ai*ary[j];     
        	}
        	catch(NumberFormatException ev){} 
        }
        //再将num2除11的到的余数赋给r
        int r=num2%11;
        String t;
        //这个不用我说了吧
        switch(r)
        {
        	case 0:t="1";break;case 1:t="0";break;case 2:t="X";break;case 3:t="9";break;
        	case 4:t="8";break;case 5:t="7";break;case 6:t="6";break;case 7:t="5";break;
        	case 8:t="4";break;case 9:t="3";break;case 10:t="2";break;
        }
        //把r添加到num1得到最终的18位身份证号
        String Number = num1+r;
        //显示18位身份证号
        j6.setText(Number);
        j9.setForeground(Color.blue);
        j9.setText("转换成功");
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -