通過身份證號查出所在籍貫以及性別。

不想打字了看代碼吧。一個朋友發的,但是比較有用吧,文件中錄入的身份證地址的可能有些出入,極少數。

import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import java.util.Scanner;
import java.util.Set;

public class IDCardFactory {
	
	public static void main(String[] args) {
		
		Properties prop = new Properties();
		InputStream in = IDCardFactory.class.getResourceAsStream("city.properties");
		try {
			prop.load(in);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	
		validateIdcard(prop);
	}

	private static void validateIdcard(Properties prop) {
		// TODO Auto-generated method stub
		String idcard = new Scanner(System.in).nextLine().trim();
		char[] chs = idcard.toCharArray();
		int[] ins = new int[18];
		for (int i = 0; i < chs.length - 1; i++) {
			ins[i]= Integer.parseInt(String.valueOf(chs[i]));
		}
		int[] invali = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
		int sum=0;
		for (int i = 0; i < ins.length-1; i++) {
			sum += ins[i] * invali[i];
		}
		int endint = sum % 11;
		
		String[] model ={"1","0","X","9","8","7","6","5","4","3","2"};
		String endstr = model[endint];
		String inendstr = String.valueOf(chs[chs.length-1]);
		if(!endstr.equals(inendstr)){
			System.out.println("身份證號碼輸入非法!");
			return;
		}
		
		String sex="男";
		if(ins[ins.length-2] % 2 == 0){
			sex = "女";
		}
		
		System.out.println("身份證號碼:"+idcard+",籍貫:"+prop.getProperty(idcard.substring(0, 6))+",性別:"+sex);
	}

	private static void creatIdCard(Properties prop) {
		Set<Object> keys= prop.keySet();
		
		 double ran = Math.random();
		 long index = Math.round(ran * 3146); 
		 long starttime = -639129600000L;
		 long dtcl = Math.round( ran * 1564617600000L);
		 SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
		 String birthday = format.format(new Date(starttime + dtcl));
		 String [] strs = {"0","1","2","3","4","5","6","7","8","9"};
		 String sign="";
		 for (int i = 0; i < 3; i++) {
			 sign += strs[(int)Math.round(Math.random() * 8)];
		}

		 Object[] keyArr = keys.toArray();
		 String key = keyArr[(int)index].toString();
		 String value = prop.getProperty(key);
		 createIDNum(key,value,birthday,sign);
	}

	private static void createIDNum(String key,String value,String birthday,String sign) {
		char[] chs = (key+birthday+sign).toCharArray();
		int[] ins = new int[17];
		for (int i = 0; i < chs.length; i++) {
			ins[i]= Integer.parseInt(String.valueOf(chs[i]));
		}
		int[] invali = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
		int sum=0;
		for (int i = 0; i < ins.length; i++) {
			sum += ins[i] * invali[i];
		}
		int endint = sum % 11;
		
		String[] model ={"1","0","X","9","8","7","6","5","4","3","2"};
		String endstr = model[endint];
		String idcardnum = key+birthday+sign+endstr;
		String sex="男";
		if(Integer.parseInt(sign) % 2 == 0){
			sex = "女";
		}
		System.out.println("身份證號碼:"+idcardnum+",籍貫:"+value+",性別:"+sex);
	}

}

這個是從鍵盤錄入進行判斷的。
.properties文件…在網盤裏拿吧。
獲取properties文件內容,不知道請自行百度。

提取碼: aby1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章