编写一个项目,
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. 清晰易懂的RxJava入门实践

    导入 我相信大家肯定对ReactiveX 和 RxJava 都不陌生,因为现在只要是和技术相关的网站,博客都会随处见到介绍ReactiveX和RxJava的文章. ReactiveX Reactive ...

  2. spring学习06(AOP)

    9.AOP 什么是AOP AOP(Aspect Oriented Programming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软 ...

  3. HandlerInterceptor与WebRequestInterceptor的异同

    相同点 两个接口都可用于Contrller层请求拦截,接口中定义的方法作用也是一样的. //HandlerInterceptor boolean preHandle(HttpServletReques ...

  4. Qt项目简易开发原理及常见问题解决

    一.资源下载地址 https://www.aliyundrive.com/s/jBU2wBS8poH 本项目路径:项目->免费->QtDev 注释:为了方便qt全功能开发,QtDev中包含 ...

  5. IDEA永久使用!!(很全)

    IDEA虽然好用,但是下载后只能试用30天,烦恼呀!所以今天就带来IDEA的激活版来帮助大家摆脱30天的苦恼! 准备工作: 破解所需要的软件和jar都在网盘里,需要的自行下载,在这里idea安装就不带 ...

  6. BUUCTF刷题系列(2)5.27日记

    CTF-Bugku-安卓篇1signin Writeup Bugku安卓部分第一题,第七届山东省大学生网络安全技能大赛的题目,属于Android逆向分析.(常用工具:安卓模拟器.JEB.Cyberch ...

  7. 对Web(Springboot + Vue)实现文件下载功能的改进

    此为 软件开发与创新 课程的作业 对已有项目(非本人)阅读分析 找出软件尚存缺陷 改进其软件做二次开发 整理成一份博客 原项目简介 本篇博客所分析的项目来自于 ジ绯色月下ぎ--vue+axios+sp ...

  8. Spring详解(十)------spring 环境切换

    软件开发过程一般涉及"开发 -> 测试 -> 部署上线"多个阶段,每个阶段的环境的配置参数会有不同,如数据源,文件路径等.为避免每次切换环境时都要进行参数配置等繁琐的操 ...

  9. Hadoop分布式资源管理器Yarn、MR运行机制剖析

    介绍YARN组件的功能及应用场景 1.ResourceManager(RM) RM是一个全局的资源管理器,集群中只有一个.它负责整个Hadoop系统的资源管理和分配,包括处理客户端请求.启动监控 Ap ...

  10. vue项目梳理

    vue实例 vue2.x中创建vue实例,挂载到dom节点 点击查详情 <div id="vue_det"> <h1>site : {{site}}< ...