java 實現的電話號碼查詢程序 優化版(課程設計)

本程序可查詢3位、5位、7位、8位、11位的電話號碼,並且能夠分辨出其號碼是電信、移動、聯通、衛星、座機、還有地址、省、區市。這個程序的代碼和前幾天發的那篇博客,部分代碼進行了優化。

號碼號段編輯
中國移動號段:134(0-8)、135、136、137、138、139、147、150、151、152、157、158、159、172、178、182、183、184、187、188、195、197、198
中國聯通號段:130、131、132、145、155、156、166、176、185、186、196
中國電信號段:133、149、153 、180 、181 、189、173、177、190、191、193、199
中國廣電號段:192
虛擬運營商號段:
聯通:167、1704、1707、1708、1709、171
電信:162、1700、1701、1702
移動:165、1705、1706
物聯網號段:
聯通:1400、146
電信:1410
移動:1440、148
衛星電話號段:
電信:1349、1740(0-5)

package phonemuber;

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 Phonenuber extends JFrame implements ActionListener {

    JPanel jpN;
    JPanel jpS;
    JLabel jLabel;
    JTextField jTextField;
    JButton jButton;
    JTextArea jTextArea;

    Phonenuber() {
        jpN = new JPanel();
        jpS = new JPanel();
        jLabel = new JLabel("請輸入電話號碼");
        jTextField = new JTextField(20);
        jButton = new JButton("查詢");
        jTextArea = new JTextArea(50, 50);
        jpN.add(jLabel);
        jpN.add(jTextField);
        jpN.add(jButton);
        jpS.add(jTextArea);
        jButton.addActionListener(this);
        this.add(jpN, BorderLayout.NORTH);
        this.add(jpS, 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("手機號碼  "+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 = "座機號碼   ";
        return result;
    }

    public String fiveValidate(String phoneNumber) {
        String result = "服務電話號碼   ";
        switch(phoneNumber){
            case "12110":
                result +="公安短信報警號碼";
                break;
            case "11185":
                result +="郵政客戶服務電話";
                break;
            case "12348":
                result +="全國法律服務熱線";
                break;
            case "12395":
                result +="水上遇險求救電話";
                break;
            case "12121":
                result +="氣象服務電話";
                break;
            case "12117":
                result +="報時服務電話";
                break;
            case "95119":
                result +="森林火警電話";
                break;
            case "12306":
                result +="全國鐵路客服中心";
                break;

            case "95598":
                result +="電力系統客服電話";
                break;
            case "12315":
                result +="消費者投訴舉報專線電話";
                break;
            case "12365":
                result +="質量監督電話";
                break;
            case "12369":
                result +="環保局監督電話";
                break;
            case "12345":
                result +="政府公益服務接入網";
                break;
            case "12318":
                result +="文化市場統一舉報電話";
                break;
            case "12358":
                result +="價格監督舉報電話";
                break;
            case "12310":
                result +="機構編制違規舉報熱線";
                break;
            case "12333":
                result +="民工維權熱線電話";
                break;
            case "12320":
                result +="公共衛生環境投訴";
                break;
            case "10000":
                result +="中國電信客戶服務熱線";
                break;
            case "10086":
                result +="中國移動客服熱線";
                break;
            case "17911":
                result +="中國聯通IP號碼";
                break;
            case "10050":
                result +="鐵通客戶服務";
                break;
            case "10010":
                result +="中國聯通客服熱線";
                break;
            case "17900":
                result +="中國電信IP電話卡";
                break;
            case "17951":
                result +="中國移動IP號碼";
                break;
            case "95555":
                result +="招商銀行";
                break;
            case "95566":
                result +="中國銀行";
                break;
            case "95533":
                result +="建設銀行";
                break;
            case "95588":
                result +="工商銀行";
                break;
            case "95558":
                result +="中信銀行";
                break;
            case "95528":
                result +="浦發銀行";
                break;
            case "95501":
                result +="深發銀行";
                break;
            case "95599":
                result +="農業銀行";
                break;

            case "95568":
                result +="民生銀行";
                break;
            case "95595":
                result +="光大銀行";
                break;
            case "95559":
                result +="交通銀行";
                break;
            case "95508":
                result +="廣發銀行";
                break;
            case "95577":
                result +="華夏銀行";
                break;
            case "95561":
                result +="興業銀行";
                break;
            case "95543":
                result +="申通快遞";
                break;
            case "95546":
                result +="韻達快遞";
                break;
            case "95311":
                result +="中通快遞";
                break;
            case "95338":
                result +="順豐速運";
                break;
            case "95554":
                result +="圓通快遞";
                break;
            case "95353":
                result +="德邦物流";
                break;
            case "95500":
                result +="太平洋保險";
                break;
            case "95511":
                result +="平安保險";
                break;
            case "95515":
                result +="合衆人壽保險";
                break;
            case "95519":
                result +="中國人壽保險";
                break;
            case "95522":
                result +="合衆人壽保險";
                break;
            case "95567":
                result +="新華人壽保險";
                break;
            case "95589":
                result +="太平保險";
                break;
            case "95596":
                result +="民生人壽保險";
                break;
            case "95510":
                result +="陽光保險";
                break;
            case "95512":
                result +="平安產險";
                break;
            case "95518":
                result +="中國人民保險";
                break;
            case "95535":
                result +="生命人壽保險";
                break;
            case "95585":
                result +="中華保險";
                break;
            case "95590":
                result +="大地保險";
                break;
            default:
                result="請輸入正確的號碼";
        }
        return result;
    }

    public String threeValidate(String phoneNumber) {
        String result = null;
        switch(phoneNumber) {
            case "110":
                result = "緊急電話  報警求助電話";
                break;
            case "120":
                result = "緊急電話  急救中心電話";
                break;
            case "119":
                result = "緊急電話  火警報警電話";
                break;
            case "117":
                result = "公共服務電話  報時服務電話";
                break;
            case "184":
                result = "公共服務電話  國內郵政編碼查詢電話";
                break;
            case "122":
                result = "緊急電話  交通事故報警電話";
                break;
            case "999":
                result = "緊急電話  紅十字會急救臺";
                break;
            case "114":
                result = "公共服務電話  電話及長途區號查詢";
                break;
            case "121":
                result = "公共服務電話  天氣預報查詢號碼";
                break;
            default:
                result = "請輸入正確號碼";
        }

        return result;
    }
    public String elevenValidate(String phoneNumber) {
        String result = null;
        String subResult = phoneNumber.substring(0, 3);
        switch (subResult) {
            case "133":
                result = "中國電信";
                break;
            case "149":
                result = "中國電信";
                break;
            case "153":
                result = "中國電信";
                break;
            case "170":
                String subString = phoneNumber.substring(0, 4);
                switch(subString) {
                    case "1700":
                        result = "虛擬運營商 電信";
                        break;
                    case "1701":
                        result = "虛擬運營商 電信";
                        break;
                    case "1702":
                        result = "虛擬運營商 電信";
                        break;
                    case "1703":
                        result = "虛擬運營商 移動";
                        break;
                    case "1705":
                        result = "虛擬運營商 移動";
                        break;
                    case "1706":
                        result = "虛擬運營商 移動";
                        break;
                    case "1704":
                        result = "虛擬運營商 聯通";
                        break;
                    case "1707":
                        result = "虛擬運營商 聯通";
                        break;
                    case "1708":
                        result = "虛擬運營商 聯通";
                        break;
                    case "1709":
                        result = "虛擬運營商 聯通";
                        break;
                    default:
                        result = "中國電信";
                        break;
                }
                break;
            case "173":
                result = "中國電信";
                break;
            case "177":
                result = "中國電信";
                break;
            case "180":
                result = "中國電信";
                break;
            case "181":
                result = "中國電信";
                break;
            case "189":
                result = "中國電信";
                break;
            case "199":
                result = "中國電信";
                break;
            case "130":
                result = "中國聯通";
                break;
            case "131":
                result = "中國聯通";
                break;
            case "132":
                result = "中國聯通";
                break;
            case "145":
                result = "中國聯通";
                break;
            case "155":
                result = "中國聯通";
                break;
            case "156":
                result = "中國聯通";
                break;
            case "166":
                result = "中國聯通";
                break;
            case "171":
                result = "虛擬運營商 聯通";
                break;
            case "175":
                result = "中國聯通";
                break;
            case "176":
                result = "中國聯通";
                break;
            case "185":
                result = "中國聯通";
                break;
            case "186":
                result = "中國聯通";
                break;
            case "134":
                result = "中國移動";
                break;
            case "135":
                result = "中國移動";
                break;
            case "136":
                result = "中國移動";
                break;
            case "137":
                result = "中國移動";
                break;
            case "138":
                result = "中國移動";
                break;
            case "139":
                result = "中國移動";
                break;
            case "147":
                result = "中國移動";
                break;
            case "150":
                result = "中國移動";
                break;
            case "151":
                result = "中國移動";
                break;
            case "152":
                result = "中國移動";
                break;
            case "157":
                result = "中國移動";
                break;
            case "158":
                result = "中國移動";
                break;
            case "159":
                result = "中國移動";
                break;
            case "178":
                result = "中國移動";
                break;
            case "182":
                result = "中國移動";
                break;
            case "183":
                result = "中國移動";
                break;
            case "184":
                result = "中國移動";
                break;
            case "187":
                result = "中國移動";
                break;
            case "188":
                result = "中國移動";
                break;
            case "198":
                result = "中國移動";
                break;
        }
        return result;
    }
    public static void main(String[] s) {
        new Phonenuber();
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章