信息基于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( );

VirMach(8元/月)KVM VPS,北美、欧洲

VirMach,成立于2014年的美国IDC商家,知名的低价便宜VPS销售商,支持支付宝、微信、PayPal等方式付款购买,主打美国、欧洲暑假中心产品,拥有包括洛杉矶、西雅图、圣何塞、凤凰城在内的11个数据中心可以选择,可以自由搭配1Gbps、2Gbps、10Gbps带宽端口,有Voxility DDoS高防IP可以选择(500Gbps以上的防御能力),并且支持在控制面板付费切换机房和更换IP(带...

香港站群多ip服务器多少钱?零途云香港站群云服务器怎么样?

香港站群多ip服务器多少钱?想做好站群的SEO优化,最好给每个网站都分配一个独立IP,这样每个网站之间才不会受到影响。对做站群的站长来说,租用一家性价比高且提供多IP的香港多ip站群服务器很有必要。零途云推出的香港多ip站群云服务器多达256个IP,可以满足站群的优化需求,而且性价比非常高。那么,香港多ip站群云服务器价格多少钱一个月?选择什么样的香港多IP站群云服务器比较好呢?今天,小编带大家一...

香港云服务器 1核 1G 29元/月 快云科技

快云科技: 12.12特惠推出全场VPS 7折购 续费同价 年付仅不到五折公司介绍:快云科技是成立于2020年的新进主机商,持有IDC/ICP等证件资质齐全主营产品有:香港弹性云服务器,美国vps和日本vps,香港物理机,国内高防物理机以及美国日本高防物理机产品特色:全配置均20M带宽,架构采用KVM虚拟化技术,全盘SSD硬盘,RAID10阵列, 国内回程三网CN2 GIA,平均延迟50ms以下。...

短信服务平台为你推荐
视频截图软件我想知道什么软件可以从视频中截图?iphone5解锁iphone5怎么解锁怎么样免费装扮qq空间要怎么免费装扮QQ空间!渗透测试渗透测试的专业服务微信如何建群在微信里怎么创建一个群别人可以加入扫描二维码的加入伪静态静态与伪静态的区别?彩信中心联通手机的彩信中心如何设置?直播加速有没有软件使已经下载好了的视频播放加速,例如30分钟的视频15分钟或者20分钟播放完宽带接入服务器宽带接入服务器的五大功能是什么?微信电话本怎么用微信电话本在哪里 微信电话本怎么打开
腾讯云盘 罗马假日广场 highfrequency 国外idc 云图标 主机合租 hkg idc是什么 阿里校园 息壤代理 免费网页申请 香港亚马逊 免费邮件服务器 海外空间 电信网络测速器 杭州电信宽带优惠 测试网速命令 godaddy空间 买空间网 国内空间 更多