import java.awt.*;
import java.awt.event.*;
class IdNum extends Frame implements ActionListener
{
int flag = 1;
int n[] = new int[17];
int y,m,d;
String num;
MenuBar mb;
Menu m1;
MenuItem m11,m12;
Label lb;
TextField t1,t2;
Button b1,b2;
TextArea ta;
IdNum()
{
super("IdNum");
Toolkit tool = getToolkit();
Dimension dim = tool.getScreenSize();
setLayout(new FlowLayout());
mb = new MenuBar();
m1 = new Menu("Choice");
m11 = new MenuItem("New");
m12 = new MenuItem("Exit");
m1.add(m11);
m1.addSeparator();
m1.add(m12);
mb.add(m1);
this.setMenuBar(mb);
lb = new Label("Id number:");
t1 = new TextField(20);
b1 = new Button("Onclick");
b2 = new Button("Clear");
t2 = new TextField(40);
ta = new TextArea(10,50);
this.add(lb);
this.add(t1);
this.add(b1);
this.add(b2);
this.add(t2);
this.add(ta);
m11.setShortcut(new MenuShortcut(KeyEvent.VK_N));
m12.setShortcut(new MenuShortcut(KeyEvent.VK_E));
t2.setEditable(false);
ta.setEditable(false);
m11.addActionListener(this);
m12.addActionListener(this);
t1.addActionListener(this);
b1.addActionListener(this);
b2.addActionListener(this);
setTitle("身份证号验证");
setVisible(true);
setBounds(dim.width/3,dim.height/3,600,500);
}
public void actionPerformed(ActionEvent e) //检测后,事件处理
{
if(e.getSource()==m11)
{
t1.setText("");
t2.setText("");
ta.setText("");
}
else if(e.getSource()==m12)
{
System.exit(0);
}
else if(e.getSource()==b2)
{
t1.setText("");
}
else
{
num = t1.getText();
primaryCheck();
if(flag==1)
{
dateCheck();
}
else;
if(flag==1)
{
confirmationCodeCheck();
}
else;
result();
}
}
void primaryCheck() //利用正则表达式初步判定
{
String model = "500[123]\\d{2}[12]\\d{3}[01]\\d[0123]\\d{4}[0-9[x]]";
if(num.matches(model));
else
{
flag = 0;
}
}
void dateCheck() //判断年月日是否满足条件
{
for(int i = 0;i<17;i++)
{
n[i] = Integer.parseInt(num.substring(i,i+1));
}
y = 1000*n[6]+100*n[7]+10*n[8]+n[9];
m = 10*n[10]+n[11];
d = 10*n[12]+n[13];
if(!((1810<y)&&(y<=2010)&&(1<=m)&&(m<=12))) //判断年月
{
flag = 0;
}
else;
if(flag==1) //判断日
{
switch(m)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if(!((1<=d)&&(d<=31)))
{
flag = 0;
}
break;
case 4:
case 6:
case 9:
case 11:
if(!((1<=d)&&(d<=30)))
{
flag = 0;
}
break;
case 2:
if(!((1<=d)&&(d<=28)))
{
if(!(((y%4==0)&&(y%100!=0)||(y%400==0))&&(d==29))) //闰年情况
flag = 0;
else;
}
break;
}
}
}
void confirmationCodeCheck() //身份证号最后位(校验码)是否正确
{
char c[] = new char[1];
int check = (7*n[0]+9*n[1]+10*n[2]+5*n[3]+8*n[4]+4*n[5]+2*n[6]+1*n[7]+6*n[8]+3*n[9]+7*n[10]+9*n[11]+10*n[12]+5*n[13]+8*n[14]+4*n[15]+2*n[16])%11;
num.getChars(17,18,c,0);
switch(check)
{
case 0:
if(c[0]!='1')
flag=0;
break;
case 1:
if(c[0]!='0')
flag=0;
break;
case 2:
if(c[0]!='x')
flag=0;
break;
case 3:
if(c[0]!='9')
flag=0;
break;
case 4:
if(c[0]!='8')
flag=0;
break;
case 5:
if(c[0]!='7')
flag=0;
break;
case 6:
if(c[0]!='6')
flag=0;
break;
case 7:
if(c[0]!='5')
flag=0;
break;
case 8:
if(c[0]!='4')
flag=0;
break;
case 9:
if(c[0]!='3')
flag=0;
break;
case 10:
if(c[0]!='2')
flag=0;
break;
}
}
void result() //输出结果,如满足条件,输出用户信息
{
char sex;
if(flag==0)
{
t2.setText(num+"不是一个正确的重庆身份证号");
}
else
{
t2.setText(num+"是一个正确的重庆身份证号");
if(n[16]%2==0)
sex = '女';
else
sex = '男';
ta.setText("输出用户信息"+"\n"+"性别:"+sex+"\n"+"出生日期:"+y+"年"+m+"月"+d+"日");
}
}
public static void main(String args[])
{
new IdNum();
}
}
javhu
- 粉丝: 10
- 资源: 2
最新资源
- 中国水系线(1-5级很细致)
- 基于Golang的高并发三方支付系统设计源码,TypeScript+Vue+HTML全栈实现
- 基于Babylon.js的HTML交互式Web设计源码学习教程
- Pyside6简单进销存教程,有开发书和使用书
- 基于HTML/CSS的大学期末静态网页答辩设计源码
- 基于微信小程序的便捷小区业主决策投票小程序设计源码
- 基于Vue框架的农业电商平台后台管理系统设计源码
- 基于Vue和JavaScript的流动治超管理平台前端设计源码
- 基于Vue和JavaScript的百度地图集成展示设计源码
- 基于Vue 3和TypeScript的B2C电商平台优选集设计源码
- XAPK Installer
- 基于Qt5.14.2的简易Qt天气预报设计源码,新手练手利器
- 基于Docker/Qemu/Bochs的Linux 0.11内核开发环境源码设计
- 无标题重生之我竟然要准备信息检索考试
- 11111111145367451111111
- 人工智能视频数据集crowed-people4
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
前往页