java短信群发项目:

编写一个项目,
1. 以下手机号码段,添加到Map集合当中
2. 从控制台输入要发送信息的短信号码,如果要发送多个,请用英文逗号隔开,输入短信内容
3. 编写一个短信发送类,号码发送前,先判断号码是否为空,再判断是否为红名单用户(手机号码在集合中),如果为红名 单,输出红名单数据,并计算红名单校验耗费的时间,如果条件都满足,发送短信,短信发送成功的概率为98%, 最后 展示发送成功的短信号码和内容
备注:红名单和普通名单可以同时提交发送,但是红名单的不能发送不会影响到普通名单号码的正常发送
展示的结果:是红名单输出红名单数据和耗费的时间
不是红名单输出普通用户的号码和短信的内容。
手机号码段:
头三位   中间四位    末尾四位
136      0371       0000-9999
      0766
      7335
      7362
      6385
      0769
      7494
      3381
      7496
      7370

137      3383
      3319
      0088
      8361
      3315
      8168
      8151
      0386
181     3788
      3789
      3782
      3787
      0349
      3567
      2234
      0382

180      3951
      0169
      3991
      3955
      3928
      3788
      0387
      3997
      3923

150     0381
      3719
      0371
      3816
      0389
      3681
      0389
      9326
      3837
      3802

public class Phone {
    //              下标      电话
    static HashMap<Integer, String> hm = new HashMap<>();

    public Phone() {
        //第一批
        String[] middle1 = {"0371", "0766", "7335", "7362", "6385", "0769", "7494", "3381", "7496", "7370"};
        //尾数
        ArrayList<String> end = new ArrayList<>();
        for (int i = 0; i <= 9999; i++) {
            int q = i / 1000;
            int b = i % 1000 / 100;
            int s = i % 1000 % 100 / 10;
            if (q == 0 && b == 0 && s == 0) {
                String temp = "000";
                temp += i;
                end.add(temp);
            } else if (q == 0 && b == 0) {
                String temp = "00";
                temp += i;
                end.add(temp);
            } else if (q == 0) {
                String temp = "0";
                temp += i;
                end.add(temp);
            } else {
                end.add(i + "");
            }
        }
        //下标
        int index = 0;
        for (String s : end) {
            for (String i : middle1) {
                String temp = 136 + i + s;
                hm.put(index, temp);
                index++;
            }
        }
        //System.out.println("middle1=" + index);

        String[] middle2 = {"3383", "3319", "0088", "8361", "3315", "8168", "8151", "0386"};
        for (String s : end) {
            for (String i : middle2) {
                hm.put(index, 137 + i + s);
                index++;
            }
        }
        //System.out.println("middle2=" + index);

        String[] middle3 = {" 3788" + "3789" + "3782" + " 3787" + "0349" + "3567" + "2234" + " 0382"};
        for (String s : end) {
            for (String i : middle3) {
                String temp = 181 + i + s;
                hm.put(index, temp);
                index++;
            }
        }
        //System.out.println("middle3=" + index);

        String[] middle4 = {"3951", "0169", " 3991", " 3955", "3928", "3788", "0387", "3997", "3923"};
        for (String s : end) {
            for (String i : middle4) {
                String temp = 180 + i + s;
                hm.put(index, temp);
                index++;
            }
        }
        //System.out.println("middle4=" + index);

        String[] middle5 = {"0381", "3719", "0371", "3816", "0389", "3681", "0389", "9326", "3837", "3802"};
        for (String s : end) {
            for (String i : middle5) {
                String temp = 150 + i + s;
                hm.put(index, temp);
                index++;
            }
        }
        //System.out.println("middle5=" + index);
        //System.out.println(end.size());
    }

    //是否有红名单手机号如果有就删除并打印
    public void isRedphone(ArrayList<String> p) {
        boolean is =false ;
        long star = System.currentTimeMillis();
        Set<Integer> key = hm.keySet();
        for (Integer i : key) {
            String s = hm.get(i);
            for (int k = 0; k < p.size(); k++) {
                if (s.equals(p.get(k))) {
                    System.out.println("找到红名单手机号=" + s);
                    p.remove(k);
                is=true;
                }
            }
        }
        long end = System.currentTimeMillis();
        if (is){
        System.out.println("一共耗时"+(end-star)+"毫秒!");
        }
    }

    //查看手机名单
    public void show(ArrayList<String> p) {
        for (String s : p) {
            System.out.print(s + "\t");
        }
        System.out.println();
    }

}
public class Massage {
    private ArrayList<String> p;
    private String massage;

    public Massage() {
    }

    public Massage(ArrayList<String> p, String massage) {
        this.p = p;
        this.massage = massage;
    }

    public ArrayList<String> getP() {
        return p;
    }

    public void setP(ArrayList<String> p) {
        this.p = p;
    }

    public String getMassage() {
        return massage;
    }

    public void setMassage(String massage) {
        this.massage = massage;
    }

    //发送信息
    public void send() {
        for (int i = 0; i < p.size(); i++) {
            double is = Math.random() * 1;
            //System.out.println(is);
            if (is < (1 - 0.98)) {
                System.out.println("电话:" + p.get(i) + "发送成功");
            } else {
                System.out.println("电话:" + p.get(i) + "发送成功");
            }
        }
        System.out.println("短信内容为:" + massage);
    }
}
public class Text {
    public static void main(String[] args) {
        Massage ma = new Massage();
        Phone p = new Phone();
        ArrayList<String> ph = new ArrayList<>();
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入要发送的手机号多个用逗号分割");
        //13603719999,15003714562,18438860920
        String phones = sc.nextLine();
        //分割
        String[] split = phones.split(",");
        for (String s : split) {
            //用集合操控容易
            ph.add(s);
        }
        //查看是否有红名单调用方法
        p.isRedphone(ph);
        System.out.println("查看:");
        p.show(ph);//查看一下
        ma.setP(ph);//传入手机号
        System.out.println("请输入短信内容:");
        String massage = sc.nextLine();
        ma.setMassage(massage);
        //发送
        ma.send();

    }
}

 

posted @ 2020-12-05 18:23  MikiKawai  阅读(568)  评论(0编辑  收藏  举报