基于java实现的一个电话号码程序,3位,5位,7位,8位,11位

实现一个电话查询程序,实现的功能有输入一个电话还要号码,具体是电信的,联通的,移动的,还是虚拟运营商的都可以,除此之外,还可以查询归属地等等信息。如果有人有更优化的代码,可以在评论区一起交流讨论哦


```java
package phonebnumber1;
import com.sun.deploy.net.HttpResponse;
import phonemuber.Phonenuber;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.io.DataInputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
public class Phonenumber extends JFrame implements ActionListener{
    JPanel jpNumber;
    JPanel jpSet;
    JLabel jLabel;
    JTextField jTextField;
    JButton jButton;
    JTextArea jTextArea;
    Phonenumber() {
        jpNumber = new JPanel();
        jpSet = new JPanel();
        jLabel = new JLabel("请输入电话号码");
        jTextField = new JTextField(20);
        jButton = new JButton("查询");
        jTextArea = new JTextArea(50, 50);
        jpNumber.add(jLabel);
        jpNumber.add(jTextField);
        jpNumber.add(jButton);
        jpSet.add(jTextArea);
        jButton.addActionListener(this);
        this.add(jpNumber, BorderLayout.NORTH);
        this.add(jpSet, BorderLayout.CENTER);
        this.setTitle("电话号码检测程序");
        this.setVisible(true);
        this.setBounds(400, 200, 800, 600);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }
    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == jButton) {
            String regex = "^((13[0-9])|(14[5,7,9])|(15[0-3][5-9])|(166)|(17[0,1,3,5,6,7,8])|(18[0-9])|(19[8|9]))\\d{8}$";
            String phoneNumber = jTextField.getText().replace(" ", "");
            boolean isNumber=isInteger(phoneNumber);
            Pattern p = Pattern.compile(regex);
            Matcher m = p.matcher(phoneNumber);
            boolean isMatch = m.matches();
            if (isNumber){
                if (phoneNumber.length()>= 3) {
                    if (phoneNumber.length() == 11) {
                        if (isMatch) {
                            String result = elevenValidate(phoneNumber);
                            jTextArea.setText("手机号码 "+phoneNumber+"\n"+"运营商"+"\n"+result+""+getCityUrl(phoneNumber));
                        }
                        else {
                            jTextArea.setText("请输入正确的电话号码");
                        }
                    } else if (phoneNumber.length() == 3) {
                        jTextArea.setText(threeValidate(phoneNumber));
                    } else if (phoneNumber.length() == 5) {

                        jTextArea.setText(fiveValidate(phoneNumber));
                    }else if (phoneNumber.length() == 7||phoneNumber.length() == 8) {

                        jTextArea.setText(sevenAndEightValidate(phoneNumber));
                    } else if (phoneNumber.length() == 10) {
                        jTextArea.setText("服务电话号码");
                    }else {
                        jTextArea.setText("请输入正确的电话号码");
                    }
                } else {
                    jTextArea.setText("请输入正确的电话号码");
                }
            }else{
                jTextArea.setText("请输入字符为数字的正确的电话号码");
            }
        }
    }
    public static boolean isInteger(String str) {
        Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
        return pattern.matcher(str).matches();
    }
    public  String getCityUrl(String mobile) {
        String url = "https://tcc.taobao.com/cc/json/mobile_tel_segment.htm";
        StringBuilder sb = new StringBuilder(url);
        Map<String, String> params = new HashMap<String, String>();
        params.put("tel", mobile);
     /*   params.put("status","1");//固定值
        params.put("modeltype", "7");//固定值*/
        String result = GetPostUrl(sb.toString(), params, "GET",null, 0, 0);

        return result;
    }

    public static String GetPostUrl(String sendUrl, Map<String, String> params, String sendType, String charset, int repeat_request_count, int repeat_request_max_count) {
        URL url = null;
        HttpURLConnection httpurlconnection = null;
        try {
            // 构建请求参数
            StringBuffer paramSb = new StringBuffer();
            if (params != null) {
                for (java.util.Map.Entry<String, String> e : params.entrySet()) {
                    paramSb.append(e.getKey());
                    paramSb.append("=");
                    // 将参数值urlEncode编码,防止传递中乱码
                    paramSb.append(URLEncoder.encode(e.getValue(), "UTF-8"));
                    paramSb.append("&");
                }
                paramSb.substring(0, paramSb.length() - 1);
            }
            url = new URL(sendUrl + "?" + paramSb.toString());
            httpurlconnection = (HttpURLConnection) url.openConnection();
            httpurlconnection.setRequestMethod("GET");
            httpurlconnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            httpurlconnection.setDoInput(true);
            httpurlconnection.setDoOutput(true);

            // 设置http请求超时时间30000毫秒(30秒)
            httpurlconnection.setConnectTimeout(30000);
            httpurlconnection.setReadTimeout(30000);
            httpurlconnection.setUseCaches(true);
            int code = httpurlconnection.getResponseCode();
            if (code == 200) {
                DataInputStream in = new DataInputStream(httpurlconnection.getInputStream());
                int len = in.available();
                byte[] by = new byte[len];
                in.readFully(by);
                String rev = new String(by, "GBK");

                in.close();
                String arr=rev.toString().split("\t")[0];
                String city=arr.split(",")[2].replace("catName","运营商")+arr.split(",")[1].replace("province","归属地");
                return city;
            } else {
                // http 请求返回非 200状态时处理
                return "<?xml version=\"1.0\" encoding=\"utf-8\" ?><error>发送第三方请求失败</error>";
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (httpurlconnection != null) {
                httpurlconnection.disconnect();
            }
        }
        return null;
    }
    public String sevenAndEightValidate(String phoneNumber) {
        String result = null;
        boolean sart = phoneNumber.startsWith("0") || phoneNumber.startsWith("1") || phoneNumber.startsWith("9");
        if (sart) {
            result="你的输入有错!";
        }
        else {
            result="座机号码";

    }
    return result;
    }
    public String fiveValidate(String phoneNumber) {
        String result = null;
        boolean yunyinshang=phoneNumber.equals("10000")||phoneNumber.equals("10010")||phoneNumber.equals("10011")
                ||phoneNumber.equals("10060");//运营商热线
        boolean zhengfurexian=phoneNumber.equals("11185")||phoneNumber.equals("12310")||phoneNumber.equals("12315")
                ||phoneNumber.equals("12319")||phoneNumber.equals("12333")||phoneNumber.equals("12345")
                ||phoneNumber.equals("12348")||phoneNumber.equals("12358")||phoneNumber.equals("12365")
                ||phoneNumber.equals("12366")||phoneNumber.equals("12369")||phoneNumber.equals("12591");//政府各部门各种热线
        boolean jieru =phoneNumber.equals("12591")||phoneNumber.equals("16300")||phoneNumber.equals("17900")||phoneNumber.equals("17908")
                ||phoneNumber.equals("17901")||phoneNumber.equals("17909")||phoneNumber.equals("17990")||phoneNumber.equals("17990")
                ||phoneNumber.equals("17991")||phoneNumber.equals("17999")||phoneNumber.equals("17931")||phoneNumber.equals("17950")
                ||phoneNumber.equals("17950")||phoneNumber.equals("17951")||phoneNumber.equals("17910")||phoneNumber.equals("17911")
                ||phoneNumber.equals("17920")||phoneNumber.equals("17921");//运营商接入码
        boolean jinji=phoneNumber.equals("95119")||phoneNumber.equals("12395");//应急电话
        boolean baoxian=phoneNumber.equals("95511")||phoneNumber.equals("95518")
                ||phoneNumber.equals("95519")||phoneNumber.equals("95522");//保险
        boolean qita=phoneNumber.equals("95033")||phoneNumber.equals("95116")||phoneNumber.equals("95118")||phoneNumber.equals("95120")||phoneNumber.equals("95160");//其他服务中心或企业
        boolean yinhang=phoneNumber.equals("95533")||phoneNumber.equals("95555")
                ||phoneNumber.equals("95559")||phoneNumber.equals("95566")||phoneNumber.equals("95577")
                ||phoneNumber.equals("95588")||phoneNumber.equals("95595")
                ||phoneNumber.equals("95598")||phoneNumber.equals("95599");//银行
         boolean  kejigongsi=phoneNumber.equals("95766")||phoneNumber.equals("95777")||phoneNumber.equals("95803");//其他科技公司
                 // ||phoneNumber.equals("9580")||
         boolean xunhuzhongxin =phoneNumber.startsWith("958")||phoneNumber.startsWith("96");//寻呼中心
        if(yunyinshang){
          result="运营商服务热线";
        }
         else if (zhengfurexian){
            result="政府各部门热线";
        }
       else if(jieru){
            result = "各类运营商接入码";
        }
      else   if (jinji){
            result = "应急电话";
        }
        else if (baoxian){
            result="各类保险号码";
        }
       else  if (qita){
            result="其他服务中心或企业";
        }
       else  if(yinhang){
            result="银行号码";
        }
       else  if(kejigongsi){
            result="各类科技公司";
        }
       else  if (xunhuzhongxin){
            result="寻呼号码";
        }
       else {
           return result="你的输入不正确,请重新输入!";
        }

     return result;
    }

    public String threeValidate(String phoneNumber) {
        String result = null;
        boolean sart1 = phoneNumber.startsWith("0") || phoneNumber.startsWith("9") || phoneNumber.startsWith("9");
        if (sart1) {
            result="你的输入有错!";
        }
        else {
            result="电话号码";

        }
        boolean one=phoneNumber.equals("110")||phoneNumber.equals("120")||phoneNumber.equals("119")
                    ||phoneNumber.equals("122")||phoneNumber.equals("999");
            boolean two=phoneNumber.equals("117")||phoneNumber.equals("184")
                    ||phoneNumber.equals("114")||phoneNumber.equals("121");
            if(one){
                 result="紧急电话";
            }
            else if (two){
                  result="公共服务号码";
            }
            else {
                result = "请输入正确号码";
            }
        return result;
    }
    public String elevenValidate(String phoneNumber) {
        String result = null;
        /*String subResult = phoneNumber.substring(0, 3);*/
        // 截取前3或前4位电话号码,判断运营商
        String head1 = phoneNumber.substring(0, 3);
        String head2 = phoneNumber.substring(0, 4);
        // 移动前三位
        boolean cmcctemp3 = head1.equals("134") || head1.equals("135") || head1.equals("136")
                || head1.equals("137") || head1.equals("138")
                || head1.equals("139") || head1.equals("147")
                || head1.equals("150") || head1.equals("151")
                || head1.equals("152") || head1.equals("157")
                || head1.equals("158") || head1.equals("159")
                || head1.equals("165") || head1.equals("178")
                || head1.equals("182") || head1.equals("183")
                || head1.equals("184") || head1.equals("187")
                || head1.equals("188") || head1.equals("198");
        if (cmcctemp3) {
            return result = "中国移动";
        }
        // 移动前4位
        boolean cmcctemp4 = head2.equals("1340") || head2.equals("1341")
                || head2.equals("1342") || head2.equals("1343")
                || head2.equals("1344") || head2.equals("1345")
                || head2.equals("1346") || head2.equals("1347")
                || head2.equals("1348") || head2.equals("1705");
        if (cmcctemp4) {
            return result ="中国移动";
        }
        // 联通前3位
        boolean unicomtemp = head1.equals("130") || head1.equals("131")
                || head1.equals("132") || head1.equals("140")
                || head1.equals("145") || head1.equals("146")
                || head1.equals("155") || head1.equals("156")
                || head1.equals("166") || head1.equals("175")
                || head1.equals("176")
                || head1.equals("185") || head1.equals("186");
        if (unicomtemp) {
            return result = "中国联通";
        }
        //unicom 4
        boolean unicomtemp4 = head1.equals("1709");
        if (unicomtemp4) {
            return result = "中国联通";
        }
        // 电信前3位
        boolean telecomtemp = head1.equals("133") || head1.equals("149")
       || head1.equals("153") || head1.equals("173")
      ||  head1.equals("174") || head1.equals("177")
                || head1.equals("180") || head1.equals("181")
                || head1.equals("189") || head1.equals("191")||head1.equals("199");
        if (telecomtemp) {
            return result = "中国电信";
        }
        //telecom 4
        boolean telecomtemp4 = head1.equals("1700");
        if (telecomtemp4) {
            return result = "中国电信";
        }
        return result;
    }
    public static void main(String[] args) {
        new Phonenumber();

        }

    }




具体的效果图
在这里插入图片描述

发布了2 篇原创文章 · 获赞 0 · 访问量 88

猜你喜欢

转载自blog.csdn.net/weixin_43501566/article/details/104445739