信息基于Android平台的天气预报短信服务系统优秀课程设计

短信服务平台  时间:2021-02-25  阅读:()

目录

1. 需求分析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

1.1功效需求. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

1.2界面需求. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

1.3 内部功效. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

2. 程序设计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

2.1用户界面设计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

2.2数据库设计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

2.2.1配置信息. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

2.2.2 SMS短信服务信息. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

2.3程序模块设计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

3. 程序开发. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

3.1文件结构和用途. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

3.2数据库适配器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

3.3短信监听器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

3.4后台服务. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

3.4.1短信发送模块. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

3.4.2数据库获取模块. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

3.5用户界面. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

3.5.1 WeatherAc tiv ity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

3.5.2 His toryAc tiv ity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

3.5.3 SetupActivity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

3.5.4谷歌MapAc tivity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

4.总结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

5.参考文件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

天气预报短信服务系统

1.需求分析

1.1功效需求

天气预报短信服务系统中有一个显示天气情况用户界面能够经过图片和文字显示目前和未来几天天气情况包含温度、湿度、风向和雨雪情况等。这些天气数据是经过后台服务获取这个后台服务能够根据一定时间间隔从Yahoo上获取天气预报信息并将天气信息保留在后台服务中。系统还需要提供基于SMS短信天气数据服务其它手机用户能够向本示例所在手机上发送SMS短信并在短信中包含用户指定关键字则能够将保留在后台服务中天气情况再经过SMS短信回复给用户。最终每个被发送SMS短信全部要被统计下来用户能够浏览或删除这些回复信息。本系统还要显示地图在地图上显示某地方天气信息。

1.2界面需求

本示例包含三个关键用户界面

(1)显示天气预报用户界面

(2)显示已发送SMS短信用户界面

(3)浏览和设置配置信息用户界面

(4)谷歌地图在地图上覆盖天气信息。

1.3 内部功效

隐藏在用户界面后面内部功效是用户界面能够正确实现基础 以下所述

(1)显示天气预报用户界面

(2)获取Yahoo天气数据

(3)显示SMS短信用户界面

(4)依据关键字监视SMS短信

(5)发送包含天气信息SMS短信

(6)将发送SMS短信写入数据库

(7)浏览和设置配置信息用户界面

(8)将用户设置配置信息保留到数据库

(9)开启时读取数据库中配置信息

(10)恢复缺省设置

(11)显示谷歌地图且覆盖天气信息用户界面写入获取谷歌密钥。

2.程序设计

2.1用户界面设计

具体分析应用程序中四个关键用户界面包含显示内容 以下所述

(1)在“显示天气预报用户界面”中依据Yahoo能够提供数据在界面上能够显示目前天气情况包含城市名称、温度、雨雪情况和获取数据时间等信息还能够显示未来一天天气情况仅包含温度和雨雪情况

(2)在“显示已发送SMS短信用户界面”中应显示每个回复短信时间、 目标手机号码、城市名称、当日天气情况和未来一天天气情况

(3)在“浏览和设置配置信息用户界面”中应显示获取天气预报目标城市名称、获取数据频率和短信关键字并许可用户设置是否提供短信服务和是否统计回复短信信息

(4)在“显示谷歌地图及在地图上覆盖天气信息界面”中应显示谷歌地图当用户点击地图上某城市时会显示某城市信息及天气情况。

2.2数据库设计

本系统关键存放两种数据详述以下

(1)配置信息因为配置信息数据量很小从Android支持存放方法上分析能够保留在SharePreference、文件或SQLite数据库中

(2)SMS短信服务信息SMS短信服务信息是一个伴随时间推移而不停增加数据属于文本信息且有固定格式所以适合使用SQLite数据库进行存放。

综合分析这两种需要存放数据选择SQLite数据库作为存放数据方法

2.2.1配置信息

配置信息中关键保留天气信息查询城市名称访问Yahoo更新天气信息频率请求天气信息SMS短信关键字且是否提供短信服务和是否统计短信服务内容其数据库表以下

表2_1配置信息数据库

key_word text 短信服务关键字用以确定哪条是请求天气服务短信

2.2.2 SMS短信服务信息

SMS短信服务信息关键保留请求服务短信发送者、短信内容、接收时间和回复信息内容其数据库表以下

表2_2 SMS短信服务信息数据库

2.3程序模块设计

从功效需求上分析能够将整个应用程序划分为4个模块分别是用户界面、后台服务、数据库适配器和短信监听器。

1.由模块结构图中可知后台服务是整个应用程序关键关键包含两个子模块一个是“数据获取模块”负责周期性从Yahoo获取天气信息另一个是“短信服务模块”负责处理接收到服务请求短信并发送包含天气信息短信

2.后台服务由用户界面经过Intent开启开启后后台服务能够在用户界面关闭后仍然保持运行状态直到用户经过用户界面发送Intent停止服务或系统因资源不足而强行关闭服务

3.用户界面从后台服务获取天气信息而没有直接经过网络访问谷歌天气数据

(1)首先是因为后台服务使用了工作线程经过后台服务获取天气数据能够避免因网络通信不畅造成界面失去响应

(2)其次在用户关闭界面后后台服务仍然需要更新天气信息 以确保短信服务数据正确性。用户界面还会调用数据库适配器向SQLite数据库中写入、读取配置信息或对SMS短信服务信息进行操作

4.短信监听器是一个BroadcastReceiver监视全部接收到短信

(1)假如短信中包含用户自定义关键字短信监听器则会认为这条短信是天气服务请求短信将短信相关信息写入后台服务短信服务队列

(2)假如用户在配置信息中选择无需提供短信服务短信监听器仍然继续监听全部短信只是后台服务不再许可将服务请求短信写入服务队列

5.数据库适配器封装了全部对SQLite数据库操作方法用户界面和后台服务会调用它实现数据库操作。

3.程序开发

3.1文件结构和用途

在程序开发阶段首先确定“天气预报短信服务系统”工程名称为MyWeather包名称为edu.hrbeu.WeatherDemo据程序模块设计内容建立WeatherDemo。

为了使源代码文件结构愈加清楚 WeatherDemo设置了多个命名空间分别用来保留用户界面、数据库、后台服务、 SMS短信和天气数据源代码文件命名空间名称和说明参考表3_1。

表3_1WeatherDemo命名空间

WeatherDemo示例将不一样用途源代码文件放置在不一样命名空间中源代码文件名称和用途能够参考表3_2。

表3_2WeatherDemo文件用途说明

Android资源文件保留在/res子目录中

(1)/res/drawable目录中保留是图像文件

(2)/res/layout目录中保留是布局文件

(3)/res/values目录中保留是用来定义字符串和颜色文件

(4)/res/xml目录保留是XML格式数据文件

全部在程序开发阶段能够被调用资源全部保留在这些目录中具体每个资源文件用途能够参考表3_3。

表3_3资源文件名称和用途

3.2数据库适配器

数据库适配器是最底层模块关键用于封装用户界面和后台服务对SQLite数据库操作数据库适配器关键代码关键在DBAdapter. java文件中用户保留配置信息类文件Config. java。

Config. java文件全部代码以下package edu.hrbeu.WeatherDemo.DB;public class Config {public static String CityName;public static String RefreshSpeed;public static String ProvideSmsService;public static String SaveSmsInfo;public static String KeyWord;public static void LoadDefaultConfig( ) {

CityName = "c haohu" ;

RefreshSpeed = "20" ;

ProvideSmsService = "t rue";

SaveSms Info = "t rue";

KeyWord = "H F";

}

从代码中不难看出,公有静态属性CityName 、 RefreshSpeed 、ProvideSmsService、 SaveSmsInfo和KeyWord完全对应数据库中保留配置信息表属性。在程序开启后保留在数据库中城市名称、更新频率、是否提供短信服务、是否保留短信信息和关键字等内容将被写入这个Config类中供其它模块在做逻辑判定

LoadDefaultConfig()函数保留了程序内置配置参数此函数会在两个情况下被调用

(1)用户主动选择“恢复缺省设置”

(2)首次开启程序时用来初始化保留配置参数数据库

DBAdapter类和以往介绍过数据库适配器类相同 全部含有继承SQLiteOpenHelper帮助类DBOpenHelper 。 DBOpenHelper在建立数据库时 同时建立两个数据库表并对保留配置信息表进行了初始化初始化相关代码在以下private static final String DB_NAME = "weather_app.db";private static final String DB_TABLE_CONFIG = "setup_config";private static final String DB_CONFIG_ID = "1" ;private static final int DB_VERSION = 1;public static final String KEY_ID = "_id";public static final String KEY_CITY_NAME = "city_name";public static final String KEY_REFRESH_SPEED = "refresh_speed";public static final String KEY_SMS_SERVICE = "sms_service" ;public static final String KEY_SMS_INFO = "sms_info" ;public static final String KEY_KEY_WORD = "key_word" ;private static final String DB_TABLE_SMS = "sms_data";public static final String KEY_SENDER = "sms_sender" ;public static final String KEY_BODY= "sms_body";public static final String KEY_RECEIVE_TIME = "sms_receive_time" ;public static final String KEY_RETURN_RESULT = "return_result";

/**静态Helper类用于建立、更新和打开数据库*/private static class DBOpenHelper extends SQLiteOpenHelper {public DBOpenHelper(Context context, String name, CursorFactoryfactory, int version) {super(context, name, factory, version) ;

}private static final String DB_CREATE_CONFIG = "create table " +

DB_TABLE_CONFIG+" ( " +KEY_ID+ " integer primary key autoincrement,

" +

KEY_CITY_NAME+ " text not null, " + KEY_REFRESH_SPEED+ " text, " +

KEY_SMS_SERVICE +" text, " + KEY_SMS_INFO + " text, " +

KEY_KEY_WORD + " text); ";private static final String DB_CREATE_SMS = "create table " +

DB_TABLE_SMS + " ( " +KEY_ID+ " integer primary key autoincrement,

" +

KEY_SENDER+ " text not null, " + KEY_BODY+ " text, " +

KEY_RECEIVE_TIME +" text, " + KEY_RE TURN_RESUL T + " text) ; ";

@Overridepublic void onCreate(SQLiteDatabase _db) {

_d b.exec SQL(DB_CREATE_CONFIG) ;

_db.execSQL(DB_CREATE_SMS) ;

//初始化系统配置数据表

Config.L oadDefaul tConfig() ;

ContentValues newValues = new ContentValues( );newVa lue s.p ut(KEY_CITY_NAME, Config.Ci tyName);newVa lues.put(KEY_REFRESH_SPEED, Config.RefreshSpeed) ;newVa lue s.p ut(KEY_SMS_SERVICE, Conf ig.Pro videSmsServi ce) ;newVa lue s.p ut(KEY_SMS_INFO, C onf ig.SaveSmsInfo) ;newVa lues.put(KEY_KEY_WORD, Conf ig.KeyWord);

_d b.i nse rt(DB_TABLE_CONFIG, n ull, n ewValu es) ;

}

@Overridepublic void onUpgrade(SQLiteDatabase _db, int _oldVersion, int_newVersion) {

_db.execSQL("DROP TABLE IF EXISTS " + DB_TABLE_CONFIG);

_db.execSQL("DROP TABLE IF EXISTS " + DB_CREATE_SMS);onCreate(_db);

}

}

在DBAdapter类中用户界面会调用SaveConfig()和LoadConfig() 从SQLite数据库中保留和读取配置信息。保留配置信息时 SaveConfig()函数会将Config类中公有静态属性写入数据库反之 LoadConfig()会将数据库中配置信息写入Config类中公有静态属性

SaveConfig()和LoadConfig()代码以下public void SaveConfig( ){

ContentValues updateValues = new ContentValues() ;upd ateVal ues.put(KEY_CITY_NAME, Conf ig.CityName) ;updateValues.put(KEY_REFRESH_SPEED, Config.RefreshSpeed);updateValues.put(KEY_SMS_SERVICE, Config.ProvideSmsService);upd ateVal ues.put(KEY_SMS_INFO, Config.SaveSmsInfo);updateValues.put(KEY_KEY_WORD, Config.KeyWord);db.upd ate(DB_TABLE_CONFIG, upd ateVal ues, KEY_ID+"=" +DB_CONFIG_ID,null);

Toast.makeText(context, "系统设置保留成功",Toa st.LENGTH_SHORT) .s how();

}

另一个会调用DBAdapter类是后台服务 即WeatherService类。后台服务关键调用SaveOneSms(SimpleSms sms) 、 DeleteAllSms()和GetAllSms()函数分别用来保留SMS短信统计、删除全部SMS数据统计和获取全部SMS数据统计。在GetAllSms()函数中调用了一个私有函数ToSimpleSms(Cursor cursor) 用来将从数据库获取数据转换为SimpleSms对象数组。 SimpleSms类将在下面内容中进行介绍

下面是SaveOneSms(SimpleSms sms) 、 DeleteAllSms()和GetAllSms()函数代码:public void SaveOneSms(SimpleSms sms){

ContentValues newValues = new ContentValues() ;newVal ues.put(KEY_SENDER, sms.Sender);newValues.put(KEY_BODY, sms.Body) ;newValues.put(KEY_RECEIVE_TIME, sms.ReceiveTime) ;newValues.put(KEY_RETURN_RESULT, sms.ReturnResult);db.insert(DB_TABLE_SMS, null, newValues);

}public long DeleteAllSms() {return db.delete(DB_TABLE_SMS, null, null) ;

}public SimpleSms[ ] GetAllSms() {

Cursor results = db.query(DB_TABLE_SMS, new String[ ] { KEY_ID,KEY_SENDER,

KEY_BODY, KEY_RECEIVE_TIME, KEY_RETURN_RESUL T},null, null, null, null, null);return ToSimpleSms(results) ;

}private SimpleSms[ ] ToSimpleSms(Cursor cursor){int resultCounts = cursor.getCount() ;if (resultCounts == 0 | | !cursor.moveToFirst( )){return null; }

SimpleSms[ ] sms = new SimpleSms[resultCounts] ;for (int i = 0 ; i<resultCounts; i++){sms[i] = new SimpleSms() ;sms[i] .Sender =cursor.getString(cursor.getColumnIndex(KEY_SENDER));sms[i] .Body =cursor.getString(cursor.getColumnIndex(KEY_BODY)) ;sms[i] .ReceiveTime =cursor.getString(cursor.getColumnIndex(KEY_RECEIVE_TIME));sms[i] .ReturnResult =cursor.getString(cursor.getColumnIndex(KEY_RETURN_RESULT)) ;cursor.moveToNext( );

器安装环境和运维管理工具推荐

今天看到一个网友从原来虚拟主机准备转移至服务器管理自己的业务。这里问到虚拟主机和服务器到底有什么不同,需要用到哪些工具软件。那准备在下班之间稍微摸鱼一下整理我们服务器安装环境和运维管理中常见需要用到的软件工具推荐。第一、系统镜像软件一般来说,我们云服务器或者独立服务器都是有自带镜像的。我们只需要选择镜像安装就可以,比如有 Windows和Linux。但是有些时候我们可能需要自定义镜像的高级玩法,这...

腾讯云2核4GB内存8M带宽 年74元

一般大厂都是通过首年才有可以享受爆款活动,然后吸引我们注册他们商家达到持续续费和购买的目的。一般只有大厂才能有这样的魄力和能力首年亏本,但是对于一般的公司和个人厂家确实难过,这几年确实看到不少的同类商家难以生存。这里我们可以看到有对应的套餐方案。不过这两个套餐都是100%CPU独享的,不是有某云商家限制CPU的。但是轻量服务器有个不好的就是带宽是较大且流量是限制的额,分别是1GB和1.2TB月流量...

TmhHost暑假活动:高端线路VPS季付8折优惠,可选洛杉矶CN2 GIA/日本软银/香港三网CN2 GIA/韩国双向CN2等

tmhhost怎么样?tmhhost正在搞暑假大促销活动,全部是高端线路VPS,现在直接季付8折优惠,活动截止时间是8月31日。可选机房及线路有美国洛杉矶cn2 gia+200G高防、洛杉矶三网CN2 GIA、洛杉矶CERA机房CN2 GIA,日本软银(100M带宽)、香港BGP直连200M带宽、香港三网CN2 GIA、韩国双向CN2。点击进入:tmhhost官方网站地址tmhhost优惠码:Tm...

短信服务平台为你推荐
google地球打不开google地球无法打开怎么办苏州商标注册苏州如何申请商标注册?windows优化大师怎么用如何用Windows优化大师??如何免费开通黄钻怎么免费开黄钻?在线漏洞检测如果检测网站是否有漏洞?网站运营网络运营具体做什么呢手机区号打电话怎么加区号?显卡温度多少正常电脑显卡温度多少正常?商标注册查询官网商标注册查询官方网站?网络广告投放怎样在网络上进行广告的投放?
上海虚拟主机 vps交流 3322免费域名 hkbn cloudstack 免备案cdn 空间打开慢 suspended 网通服务器ip 三拼域名 台湾google 贵阳电信测速 测速电信 中国联通宽带测试 hdroad 香港ip globalsign windowsserver2012 带宽测速 低价 更多