编写一个项目,
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(); }
}

java短信群发项目:的更多相关文章

  1. 使用SMSManager短信管理器实现短信群发

    import java.util.ArrayList; import android.os.Bundle;import android.provider.ContactsContract;import ...

  2. 【免费】iPhone上最好用的短信群发软件: 高速短信4.1

    免费的最新的联系人.群组.多人发送短信软件短信群发4.1已经出炉.欢迎下载! *归属地信息让你时时记着好友的地方,让陌生号码变得不陌生:  *您能够选择最经常使用的联系人然后发送高速短信; *群联系人 ...

  3. [TPYBoard - Micropython] 五分种学会用TPYBoard - GPS 制作短信群发机

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604   一.什么是TPYBoard-GPS TPYBoard-GPS又称TPYBoa ...

  4. java短信接口调用

    java短信接口调用 之前一直在一个传统的单位上班好多听容易的技术都没接触过,即使有时候想搞一搞类似于支付宝支付,短信接口调用,微信公众号,小程序之类等功能,一直有心无力终于跳槽了,估计是氛围的原因吧 ...

  5. java 短信猫发送短信的方法

    用java实现短信收发的功能,目前一般项目中短信群发功能的实现方法大致有下面三种: ·                 1. 向运行商申请短信网关,不需要额外的设备,利用运行商提供的API调用程序发送 ...

  6. Android短信过滤项目中的观察者模式

    观察者模式: 观察者模式定义了对象之间的一对多依赖,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新. 观察者模式提供了一种对象设计, 让主题和观察者之间松耦合.主题只知道观察者实现了某个接 ...

  7. java短信验证和注册

    最近公司需要用到短信验证注册,所以申请了阿里云的短信服务.我的项目是分布式的spring boot 原理: 利用第三方发送短信 获取回执消息,然后存入缓存里面 将用户填写的验证码与缓存里面的验证码对比 ...

  8. thinkphp3.2短信群发项目实例

    项目功能是企业给客户群发短信,我就写这么多,也不知道你能不能运行成功,如果有问题可以在QQ上问我:605114821 项目文件SMS_V2.zip下载地址,百度云:http://yun.baidu.c ...

  9. java短信接口

    一.背景 从是Java一直想做一个跟生活联系特别紧密的东西,比如短信.邮箱.电话什么的一直是我感兴趣的,可是楞是当初没有头绪弄,恰巧今天公司在做一个 webrtc的视频会议的软件,刚好有短信这个需求, ...

随机推荐

  1. Android招聘市场技术要求越来越高,从事三年开发是否应该考虑转行?

    这是在某论坛看到的一个网友的疑问,他说感觉现在Android 开发这条路越来越难走了.下面是他的分享: 本来已经做好了好几个月找不到工作的准备.不过这两周感觉面试机会还算可以.两周10个面试感觉刚刚好 ...

  2. 数据结构与算法-排序(六)堆排序(Heap Sort)

    摘要 堆排序需要用到一种数据结构,大顶堆.大顶堆是一种二叉树结构,本质是父节点的数大于它的左右子节点的数,左右子节点的大小顺序不限制,也就是根节点是最大的值. 这里就是不断的将大顶堆的根节点的元素和尾 ...

  3. netty系列之:netty中的懒人编码解码器

    目录 简介 netty中的内置编码器 使用codec要注意的问题 netty内置的基本codec base64 bytes compression json marshalling protobuf ...

  4. 关于XSS简单介绍与waf bypass的一些思路整理

    很久没写东西了,今天整理一点儿思路 简单说一下XSS XSS(cross site script)即跨站脚本,侧重于"脚本"这一层概念,是一种常见web安全漏洞.攻击者通过往web ...

  5. Django推导 安装等

    HTTP协议补充 四大特性: 基于请求响应 基于TCP/IP协议之上的应用层协议 无状态 不能保存用户信息(cookie,session,token) 短链接 请求数据格式: 请求首行(请求方式,ht ...

  6. NOIP 模拟 $17\; \rm 世界线$

    题解 \(by\;zj\varphi\) 此题经简单观察可发现,一个点的贡献就是这个点所能到的点减去它的出度 那么我们就可以暴力搜索,但是显然会超时,所以我们可以使用一个黑科技 \(\rm bitse ...

  7. Qt简单的文件创建和读写

    1 QFile fp; //要包含必要的头文件,这里省略 2 QDir(dir); 3 QString path("./"),filename("test.txt&quo ...

  8. 快速创建Spring web项目

    第一步,把包和文件夹建好 第二步.pom文件添加依赖 放到properties标签内 <spring_version>4.1.2.RELEASE</spring_version> ...

  9. 转:NGINX中的proxy_pass和rewrite

    章作者:luxianghao 文章来源:http://www.cnblogs.com/luxianghao/p/6807081.html 转载请注明,谢谢合作. 免责声明:文章内容仅代表个人观点,如有 ...

  10. 使用GZIP压缩网页内容(一)

    在JDK中提供了GZIP压缩,来压缩网页的内容,降低网络传输时候的字节数,到达浏览器端的时候,再解压,GZIP压缩之后传输耗费的流量大大降低,但是同时也不会降低用户体验. package day04; ...