通过输入身份证号验证个人信息

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;


public class Testage {

	/**
	 * @param args
	 */
	Map <Integer,String>map = new HashMap<Integer,String>();
	private static void printCmd(){
		System.out.println("******************************");
		System.out.println("请输入13位身份证号,例:");
		System.out.println("610618199001020065");
		System.out.println("0 退出");
		System.out.println("******************************");

	}
    public Testage(){
		map.put(11,"北京市");map.put(12,"天津市");map.put(13,"河北省");map.put(14,"山西省");map.put(15,"内蒙古自治区");
		map.put(21,"辽宁省");map.put(22,"吉林省");map.put(23,"黑龙江省");map.put(31,"上海市");map.put(32,"江苏省");
		map.put(33,"浙江省");map.put(34,"安徽省");map.put(35,"福建省");map.put(36,"江西省");map.put(37,"山东省");
		map.put(41,"河南省");map.put(42,"湖北省");map.put(43,"湖南省");map.put(44,"广东省");map.put(45,"广西壮族自治区");
		map.put(46,"海南省");map.put(50,"重庆市");map.put(51,"四川省");map.put(52,"贵州省");map.put(53,"云南省");
		map.put(54,"西藏自治区");map.put(61,"陕西省");map.put(62,"甘肃省");map.put(63,"青海省");map.put(64,"宁夏回族自治区");
		map.put(65,"新疆维吾尔自治区");map.put(71,"台湾省");map.put(81,"香港特别行政区");map.put(82,"澳门特别行政区");
    }
	private void analyzeCmd(String line){
		line = line.trim();
		if("".equals(line)){
		}
		String[] cmds = line.split(" ");
		assignCmd(cmds);

	}
	private void assignCmd(String[] cmds){
		String cmd = cmds[0];
		Calendar a=Calendar.getInstance();
		String cmd1 = ""+a.get(Calendar.YEAR);
		cmd1 = cmd1.trim();
		int len=cmd.length();
	     if(len==18){
	 		cmd = cmd.trim();
		String cm=cmd.substring(6,10);
		int cm1=Integer.parseInt(cmd.substring(10,12));
		int cm2=Integer.parseInt(cmd.substring(12,14));
		int cm3=Integer.parseInt(cmd.substring(16,17));
		int cm4=Integer.parseInt(cmd.substring(0,2));
		String num =cm.replaceAll("\\D+", "");
		 int min1 =Integer.parseInt(num);
		 int min2 =Integer.parseInt(cmd1);
		 int result =min2-min1;
		 Iterator<Integer> it = map.keySet().iterator();
	     List<Integer> keyList = new ArrayList<Integer>();
	     System.out.println("-----------------------------------");
	     while(it.hasNext()){  
	    	 keyList.add(it.next());
	     }
          if(result<0||result>100){//校验年龄
			 System.out.println("您输入的身份证号不合法,请重新输入!"+"\r\n");
		 }else if(cm1>12||cm1<1){//校验出生月份
			 System.out.println("您输入的身份证号不合法,请重新输入!"+"\r\n");
		 }else if(cm2>31||cm1<1){//校验出生日期
			 
			 System.out.println("您输入的身份证号不合法,请重新输入!"+"\r\n");
		 }else if(cm1==02&&cm2>28){//校验不合法的月份
			 System.out.println("您输入的身份证号不合法,请重新输入!"+"\r\n");
		 }else if(!keyList.contains(cm4)){//校验出生省份
			 System.out.println("你是从火星上来的,来自星星的你!"+"\r\n");
		 }
		 else {
			 if(cm3%2==0){
			 if(result<30){
				 System.out.println("您是一个漂亮的女生!");
			 }
			 else if(30<=result&&result<50){
				 System.out.println("您是一位成熟的女性!");
			 }else{
				 System.out.println("您是一位慈祥的奶奶!");
			 }
		 }else{
			 if(result<30){
				 System.out.println("您是一个帅气的小伙!");
			 }
			 else if(30<=result&&result<50){
				 System.out.println("您是一位成熟的男士!");
			 }else{
				 System.out.println("您是一位硬朗的爷爷!");
			 }
		 }
		 String home=map.get(cm4);
		 System.out.println("您的出生地是:"+home);
		 System.out.println("您的年龄是:"+result+"岁");
		 System.out.println("您的出生日期是:"+cm+"年"+cm1+"月"+cm2+"日"+"\r\n");
		 
		 }
	     }else{
	    	 System.out.println("请问您是中国人么?");
	     }
	}
	public static void main(String[] args) throws Exception {
		new Testage();
		  BufferedReader reader = null;
			String cmd = null;
			
			try {
				reader = new BufferedReader(new InputStreamReader(System.in));
				while(true){
				printCmd();
				cmd = reader.readLine();
				Testage t = new Testage();
				if("0".equals(cmd.trim())){
					System.out.println("程序已退出!");
					break;
				}

				t.analyzeCmd(cmd);}
			} catch (IOException e) {
				e.printStackTrace();
			}finally{
				if(reader != null){
					reader.close();
				}
			}
			 
			}
			

		}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值