手机天气预报系统APP源码和设计报告

目录
摘要1需求分析2一、开发背景2二、项目需求分析2总体设计2一、系统规划2二、系统功能界面3设置预报城市界面:3天气显示界面:4Widget 桌面小部件界面:5三.设计目标6系统设计6一、开发及运行环境6二、数据库设计6三、主要方法及步骤7四、主要方法及技术7主要模块7一、项目框架7二、主要功能实现8获取城市码 db_weather.db 数据库文件8实现可伸缩性列表的的构建与过滤12GPS 定位功能的实现15Widget 窗体小部件的更新18功能测试19结论23

摘要
Window 操作系统的诞生成就了微软帝国,同时也造就了 PC 时代的繁荣, 然而如今,以 Android 和 iPhone 手机为代表的智能移动设备的发明与互联网云技术的兴起却敲响了 PC 时代的丧钟!这也预示着移动互联网时代(3G)已经来临。

在这个互联网繁荣的时代,有一颗超新星,以它独特性能优势与人性化的

UI 设计使它在短短的几年迅速的占领了智能移动设备的市场份额,它就是

Google 的 Android!这也意味着 Google 在移动互联网时代开始抢跑并领跑。

Android 是基于 Linux 平台完全开源的手机操作系统,同时开发语言为

Java,这对于 Java 开发的我们是何等的诱人,程序员的技术要与时代同行,因此我选择了以 Android 为平台的手机天气预报系统来作为我的毕业设计,选择手机天气预报系统不仅可以提升技术,同时也很实用,为人们时刻了解天气状况和出行带来了方便。

需求分析
一、开发背景
近几年来随着 3G 技术成熟和智能手机的不断普及,移动应用的需求与日俱增,移动应用开发成为当下最热门的技术之一。在 Google 和 Android 手机联盟的共同推动下,Android 在众多移动应用开发平台中脱颖而出。Android 是一个真正意义上的开源智能手机操作系统,该系统一经推出立即受到全球移动设备厂商和开发者的热捧。为顺应潮流,本设计旨在搭载 Android 的移动设备上运行, 实现天气状况的实时动态更新与显示,方便人们的出行与生活。

二、项目需求分析
根据功能的需求,分析此项目的主要功能应具备以下几点:

精确查询定位全国各地城市未来几天内的实时天气状况
系统要具的实用性,符合用户查看信息习惯,界面设计优美
系统要具有稳定性,且在一定程度上节省流量的开销
总体设计
一、系统规划
由上述的需求,现将系统分为三大模块:天气显示界面模块、预报城市设置模块与 Widget 桌面小部件模块。各系统模块功能如下:
天气显示界面模块
显示指定城市三天内的天气状况,包括日期、城市名称、温度、风力与当日的建议,用户可通过按菜单键来显示菜单更新当前天气与设置天气显示的界面背景,以及跳转至设置预报城市界面来更换预报城市。
预报城市设置模块
由自动设置预报城市与手动设置二部分组成,自动设置实现 GPS 定位功能,自动确定当前用户所在地;而手动设置则通过可伸展性下拉列表单击选择系统数据库中预存的城市来进行设置,同时为了方便用户查找,支持以输入框的形式来过滤查询预报城市。当单击选中城市时跳转至天气显示界面,来显示该城市当三天内的天气状况;第一次运行时自动跳到该界面。
Widget 桌面小部件模块
为了方便用户实时了解天气状况,特别添加在 Android 系统桌面上显示当前天气与时间的天气小部件,使用户拿起手机的第一时刻就能了解天气,同时当用户单击小部件时,自动跳转至天气显示界面,显示三天内的详细天气。

二、系统功能界面
设置预报城市界面:
当第一次运行程序时,跳转至城市设置界面进行预报城市的选择:


计算机毕设——手机天气预报系统

计算机毕设——手机天气预报系统[/caption]

用户可以通过单击选择“定位当前城市”的方式调用系统 GPS 功能自动定位预报城市:


计算机毕设——手机天气预报系统

用户可通过输入框过滤查询当前系统中预存的城市:


计算机毕设——手机天气预报系统

天气显示界面:
选择了预报城市后,系统跳转至天气显示界面,显示该城市三天内的实时天气:


计算机毕设——手机天气预报系统

在天气界面中用户可通过按菜单键来调出菜单,选择城市,更新天气与更换背景:


计算机毕设——手机天气预报系统

Widget 桌面小部件界面:
方便用户第一时间了解天气动态,添加 widget 显示功能界面:

计算机毕设——手机天气预报系统

三.设计目标
设计完成一个实用稳定的天气预报系统,同时要廉价使其能滿足大部分用户的需求,因此针对上述要求,本设计应滿足:

系统能及时的返反馈指定预报城市的天气情况
自动定位用户所在城市,支持 GPS 定位
节省流量开销,规定在指定的时间间隔内才更新天气,其它时段显示缓存的天气
操作方便快捷,使用简单,界面设计美观大方,支持 widget
系统设计
一、开发及运行环境
JDK1.6.10

Eclipse3.5

Android Development Toolkit (ADT) 15.0.0 Android 2.2 及以上

Windows XP 及以上

二、数据库设计
由于在本系统中是通过中央气象台的WebService 提供的API 访问得到的天气预报,在查询指定城市的天气时,需要用到它提供的城市码,而城市码相对稳定不变,所以在构建系统时将其事先通过 Android 的网络访问技术将其缓冲到本地

计算机毕设——手机天气预报系统

SQLite 数据库进行保存起来,方便以后的查询,同时节省了流量开销。综上所述在本地建立 db_weather.db 的数据库,其中的表结构如下:

其中只存在两个表: provices 和 citys

City 中存在 city_num 用天气的查询,同时还存在外键 province_id 与 provices 表形成 1 对 n 的关系。

三、主要方法及步骤
搭建 Android 开发环境,并建立一个 android2.2 版本名为 WeatherSystem
项目
首先编写网络访问代码,访问 http://m.weather.com.cn/data5/city.xml 中央气象站解析得到所有城市码并导出保存得到的 db_weather.db 数据文件
在程序第一次运行时,将 db_weatcher.db 数据库文件导入到应用程序数据库中
建立设置城市界面,读取数据库文件,获取省份,城市以及对应的城市码。
接收用户选择的城市码,访问:http://m.weather.com.cn/data/<城市码>.html 得到天气信息
解析天气信息,将城市码及天气信息缓冲下来,并为其设置有效时间,方便下次启动时直接得到天气信息,过期则从网上更新
定时由保存的城市码更新天气信息
四、主要方法及技术
Android 手机的界面 UI 设计
Android 的网络通信
Android 的广播
GPS 调用解析
Widget 小部件编程
XML 与 JSON 解析
SQLite 数据库操作
Android 文件操作
主要模块
一、项目框架
在装有 ADT 插件的 Eclipse 中新建一个名为 WeatherSystem 的 Android2.2 版本的项目, 项目主要文件结构如下:

WeatherSystem

| src

||_com.weather.app

|||_MainActivity.java

|||_SetCityActivity.java

|||_UpdateWidgetService.java

|||_WeatherWidget.java

||_com.weather.comp

|||_GPSListAdapter.java

|||_MyListAdpater.java

||_com.weather.dao

|||_DBHelper.java

||_com.weaher.utils

||_LocationXMParser.java

### Android 实训:学生考勤管理系统开发 #### 背景介绍 在现代教育场景中,基于移动设备的学生考勤管理系统因其便捷性高效性而受到广泛欢迎。Android 平台作为主流操作系统之一,在此类应用开发中有显著优势[^1]。 #### 技术栈概述 构建一个完整的 Android 学生考勤管理系统通常涉及以下关键技术领域: - **前端界面设计**:利用 XML Jetpack Compose 创建直观易用的用户界面。 - **数据存储与管理**:SQLite 数据库用于本地数据持久化;对于更复杂的需求可以考虑 Firebase Realtime Database 或 Room 库。 - **网络通信**:Retrofit 或 OkHttp 提供 RESTful API 的调用支持。 - **定位服务集成**:Google Play Services Location APIs 可实现地理围栏功能以验证签到位置的真实性[^2]。 #### 功能模块分析 以下是该类系统常见的几个核心功能及其可能的技术实现方式: ##### 用户登录注册 采用 OAuth 2.0 协议或者自定义身份认证机制来保障账户安全。可以通过 Volley 进行 HTTP 请求处理服务器返回的身份令牌并保存至 SharedPreferences 中以便后续访问控制。 ##### 面部识别打卡 如果计划加入生物特征验证,则需引入第三方机器学习框架 TensorFlow Lite 来完成图像预处理、特征提取以及匹配过程。具体流程如下所示: ```java // 加载模型文件 private MappedByteBuffer loadModelFile(AssetManager assets, String modelFilename) throws IOException { AssetFileDescriptor fileDescriptor = assets.openFd(modelFilename); FileInputStream inputStream = new FileInputStream(fileDescriptor.getFileDescriptor()); FileChannel fileChannel = inputStream.getChannel(); long startOffset = fileDescriptor.getStartOffset(); long declaredLength = fileDescriptor.getDeclaredLength(); return fileChannel.map(FileChannel.MapMode.READ_ONLY, startOffset, declaredLength); } ``` 上述代码片段展示了如何加载预先训练好的神经网络模型实例。 ##### GPS 定位确认 为了防止作弊行为发生,建议启用地理位置检测手段辅助判断当前所在地点是否合法合规。下面给出一段简单的示例说明获取当前位置坐标的方法: ```kotlin val fusedLocationClient = LocationServices.getFusedLocationProviderClient(this) fusedLocationClient.lastLocation.addOnSuccessListener { location : Location? -> if (location != null){ val latitude = location.latitude.toString() val longitude = location.longitude.toString() Log.d(TAG,"Current Latitude:$latitude Longitude:$longitude") } }.addOnFailureListener{ Toast.makeText(applicationContext,it.message,Toast.LENGTH_SHORT).show() } ``` 此 Kotlin 版本脚本能够快速取得最近一次已知GPS信号下的经纬度数值。 #### 总结 综上所述,针对 Android 平台上搭建一套完善的学生考勤解决方案并非难事,只需合理规划各个子组件之间的协作关系即可达成目标效果。当然实际项目执行过程中还应充分考虑到用户体验优化方面的工作内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值