使用 Java Swing 的 IMEI 验证器





5.00/5 (4投票s)
如何使用 Java Swing 创建一个简单的 IMEI 验证器应用程序
引言
本文档介绍如何使用 Java Swing 创建一个简单的 IMEI 验证应用程序。
IMEI 号码
IMEI 代表国际移动设备识别码。IMEI 用于在设备连接到网络时识别移动设备。每部 GSM、CDMA 或卫星手机都有一个唯一的 IMEI 号码。该号码将印在设备内部电池组件中。用户可以通过拨打 “*#06#” 来查找其设备的 IMEI 号码。IMEI 是一个 15 位数字,最后一位称为“校验位”,可以使用 Luhn 算法识别。
Luhn 算法
Luhn 算法也称为“模 10”算法。它是一种简单的 校验和 公式,用于验证各种识别号码,例如 信用卡号码、IMEI 号码、美国 国家提供者识别码 以及加拿大 加拿大 社会保险号码。它是由 IBM 科学家 汉斯·彼得·卢恩 创建的。验证是通过验证校验位完成的。
- 从右端开始,将每第二个数字的值翻倍(最右边的数字将是校验位数字)。
- 将构成步骤 (1) 中乘积的各个数字以及原始数字中未受影响的数字相加。
- 如果总和除以 10 的余数为 0,则该号码有效;否则,无效。
一个简单的例子:手机 IMEI 号码 - 354557030810924
步骤 1
第二步
3+1+0+4+1+0+5+1+4+0+6+0+1+6+1+0+9+4+4=50
步骤 3
50%10=0
。因此,以上号码是一个有效的号码。
开发应用程序的步骤
- 打开 Eclipse 并创建一个新的 Java 项目。
- 将项目命名为
ImeiValidator
,然后单击 完成。 - 现在打开“包资源管理器”并在
ImeiValidator
上右键单击。 - 创建一个名为
Imeivalidator
的新类。 - 在类中编写以下代码
import javax.swing.*; import java.awt.BorderLayout; import java.awt.event.*; public class Imei { JFrame frame; JButton button; JTextField field; JLabel label; JLabel warninglabel; Box panel; public static void main(String[] args) { Imei hl=new Imei(); hl.gui(); } public void gui(){ panel = Box.createVerticalBox(); frame=new JFrame(); button=new JButton("Click"); field=new JTextField(15); field.putClientProperty("JComponent.sizeVariant", "mini"); label=new JLabel("Enter the IMEI Number"); warninglabel=new JLabel(""); //adding contents to frame panel.add(label); panel.add(field); panel.add(warninglabel); panel.add(button); frame.getContentPane().add(BorderLayout.NORTH,panel); frame.setVisible(true); frame.setSize(300,300); button.addActionListener(new buttonAction()); } public class buttonAction implements ActionListener{ public void actionPerformed(ActionEvent ev) { int sum=0; String ImeiNo=field.getText(); if (ImeiNo.length()!=15){ warninglabel.setText("IMEI Number should contain 15 characters"); }else { boolean errorflag = false; for(int i=0;i<=14;i++){ //getting ascii value for each character char c=ImeiNo.charAt(i); int number=c; //Assigning number values to corresponding ASCII value if (number<48 || number>57){ warninglabel.setText("Enter only numerals"); errorflag = true; break; }else { switch(number){ case 48: number=0;break; case 49: number=1;break; case 50: number=2;break; case 51: number=3;break; case 52: number =4;break; case 53:number =5;break; case 54:number=6;break; case 55:number=7;break; case 56:number=8;break; case 57:number=9;break; } //Double the even number and divide it by 10. //Add quotient and remainder if ((i+1)%2==0){ number=number*2; number=number/10+number%10; } sum=sum+number; } } // Check the error flag to avoid overWriting of Warning Lable if(!errorflag){ if(sum%10==0){ warninglabel.setText("Valid"); } else { warninglabel.setText("Invalid"); } } } } } }
- 现在通过 运行 -> 运行方式 -> Java 应用程序 运行应用程序。
- 将显示以下窗口
- 输入 IMEI 号码并单击如下所示的“点击”
参考文献
- http://en.wikipedia.org/wiki/Luhn_algorithm
- http://en.wikipedia.org/wiki/International_Mobile_Equipment_Identity
历史
- 2012 年 7 月 5 日:初始版本