65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Java Swing 的 IMEI 验证器

starIconstarIconstarIconstarIconstarIcon

5.00/5 (4投票s)

2012 年 7 月 5 日

CPOL

2分钟阅读

viewsIcon

41100

downloadIcon

508

如何使用 Java Swing 创建一个简单的 IMEI 验证器应用程序

引言

本文档介绍如何使用 Java Swing 创建一个简单的 IMEI 验证应用程序。

IMEI 号码

IMEI 代表国际移动设备识别码。IMEI 用于在设备连接到网络时识别移动设备。每部 GSM、CDMA 或卫星手机都有一个唯一的 IMEI 号码。该号码将印在设备内部电池组件中。用户可以通过拨打 “*#06#” 来查找其设备的 IMEI 号码。IMEI 是一个 15 位数字,最后一位称为“校验位”,可以使用 Luhn 算法识别。

Luhn 算法

Luhn 算法也称为“模 10”算法。它是一种简单的 校验和 公式,用于验证各种识别号码,例如 信用卡号码IMEI 号码、美国 国家提供者识别码 以及加拿大 加拿大 社会保险号码。它是由 IBM 科学家 汉斯·彼得·卢恩 创建的。验证是通过验证校验位完成的。

  1. 从右端开始,将每第二个数字的值翻倍(最右边的数字将是校验位数字)。
  2. 将构成步骤 (1) 中乘积的各个数字以及原始数字中未受影响的数字相加。
  3. 如果总和除以 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。因此,以上号码是一个有效的号码。

开发应用程序的步骤

  1. 打开 Eclipse 并创建一个新的 Java 项目。

  2. 将项目命名为 ImeiValidator,然后单击 完成

  3. 现在打开“包资源管理器”并在 ImeiValidator 上右键单击。

  4. 创建一个名为 Imeivalidator 的新类。

  5. 在类中编写以下代码
    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");
                         }
                     }
                 }
             }     
         }
    }

  6. 现在通过 运行 -> 运行方式 -> Java 应用程序 运行应用程序。

  7. 将显示以下窗口

  8. 输入 IMEI 号码并单击如下所示的“点击

参考文献

  1. http://en.wikipedia.org/wiki/Luhn_algorithm
  2. http://en.wikipedia.org/wiki/International_Mobile_Equipment_Identity

历史

  • 2012 年 7 月 5 日:初始版本
© . All rights reserved.