实践报告:基于安卓天气预报系统的设计与实现_第1页
实践报告:基于安卓天气预报系统的设计与实现_第2页
实践报告:基于安卓天气预报系统的设计与实现_第3页
实践报告:基于安卓天气预报系统的设计与实现_第4页
实践报告:基于安卓天气预报系统的设计与实现_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章绪论 21.1课题的背景 31.2研究意义 3第二章相关技术概述 32.1系统开发环境 32.2Android的介绍 42.3SQLite的介绍 42.4Java语言的介绍 5第三章系统需求分析 63.1经济可行性 63.2技术可行性 63.3操作可行性 6第四章系统概要设计 64.1系统设计目标 64.2设计思路 74.3系统界面设计 7第五章系统实现 85.1系统总体模块的实现 85.2注册登录模块的实现 95.2城市定位的实现 125.3天气显示的实现 135.6密码修改的实现 17第六章系统测试 186.1测试的定义 186.2测试的重要性及目的 186.3测试的环境 196.4测试的过程 19结论 22

第一章绪论1.1课题的背景天气预报为人们了解天气状况和出行计划带来了便利。然而,大多数天气预报软件都是基于PC端的,所以查询起来并不方便。目前,手机的功能不仅仅是打电话和发短信,还为我们的生活和生产提供便利。过去,很难通过移动互联网获取实时信息。例如,在过去,人们通过观看或收听电视节目接收天气报告,但现在智能手机能够更快、更方便地通过互联网获取天气信息[1]。随着智能手机的普及,天气调查可以在手机上进行。因此,在手机上实现天气预报系统是一种现实需求。该系统是一款带有天气预报功能的手机应用程序,旨在方便人们出行[2]。基于Android的天气预报系统具有界面友好、功能强、实用性强、可扩展性好、稳定性强等优点。它可以让用户实时了解当地的天气状况,方便出行和调节生产[3]。本文在简要介绍开发工具的基础上,首先确定了系统的需求,对系统进行了分析和设计,然后介绍了基本功能的实现。最后对系统进行了总结和展望。1.2研究意义实时天气预报为人们的生活和工作提供了极大的便利。智能电子产品的普及为实时天气预报系统提供了更方便、更有效的平台。目前,Android已经成为一个重要的移动软件系统,基于Android平台的应用越来越多。基于Android平台的移动天气预报系统可以为大多数手机用户带来好处。设计开发了基于Android平台的天气预报软件,可以实时查询不同城市的天气信息,更新落后信息。使用模式具有操作简单、功能丰富、用户界面友好等优点,可以提供有关天气和生活亲密度的详细信息。第二章相关技术概述2.1系统开发环境本文旨在概述基于Android平台的天气预报系统的设计与实现过程中所使用的系统开发环境。该系统以Java作为主要设计语言,充分利用了Java的跨平台特性和面向对象编程的优势。以下是对该系统开发环境的详细介绍。首先,本系统选择在Windows10操作系统平台上进行开发。Windows10作为当前主流的操作系统之一,提供了稳定的运行环境和丰富的软件资源支持,为系统的开发提供了坚实的基础。在开发工具方面,我们选择了Android开发环境。Android作为一种开源的移动操作系统,拥有庞大的用户群体和广泛的应用场景。通过使用Android开发环境,我们可以轻松构建出符合标准的应用程序并提交到GooglePlay商店进行审核和发布。在数据存储方面,系统采用了轻量级的SQLite数据库。SQLite是一种嵌入式数据库,它具有体积小、速度快、可移植性强等特点,非常适合在移动设备上使用。通过SQLite数据库,我们可以方便地存储和管理天气数据,为用户提供更加流畅的使用体验。此外,为了确保系统的兼容性和稳定性,我们选择了Gradle7.0.2作为构建工具。Gradle是一种基于ApacheAnt和ApacheMaven概念的项目自动化构建工具,它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML。通过使用Gradle,我们可以更加高效地管理项目依赖关系和构建过程。最后,在jdk版本方面,我们选择了1.8.0版本。jdk1.8.0作为Java开发工具包的一个重要版本,提供了丰富的API和强大的功能支持,为系统的开发提供了有力的保障。2.2Android的介绍Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google

公司和开放手机联盟领导及开发。随后

Google以Apache开源许可证的授权方式,发布了Android的源代码[6]。Android采用了软件堆层的架构,低层以Linux内核工作为基础,只提供基本功能,其他的应用软件则由各公司自行开发。Android系统有如下的几大特性:(1)应用程序框架,支持组件的重用与替换;(2)Dalvik虚拟机,专门为移动设备做了优化;(3)内部集成浏览器,该浏览器基于开源的WebKit引擎;(4)优化的图形库,包括2D和3D图形库;(5)SQLite,用作结构化的数据存储;(6)多媒体支持,包括常见的音频、视频和静态印象文件格式:(7)丰富的开发环境,包括设备模拟器,调试工具,内存及性能分析图表和

Eclipse集成开发环境插件。2.3SQLite的介绍SQLite

是一款嵌入式的轻型数据库,它只占用很少的资源,有时只需几百K。它支持

Windows/Linux/Unix等操作系统,它能跟Java、C#等程序设计语言相结合,还有ODBC接口[7]。它处理数据的速度比Mysql、PostgreSQL等数据库都快。Android作为目前主流的移动操作系统,完全符合SQLite占用资源少的优势,故在Android平台上,集成了一个嵌入式关系型数据库——SQLite[8]。本数据库支持功能如下:(1)自动建表,支持属性来自继承类:可根据注解自动完成建表,并且对于继承类中的注解字段也支持自动建表。(2)自动支持增删改,增改支持对象化操作:增删改是数据库操作的最基本单元,不用重复写这些增删改的代码,并且添加和更新支持类似于hibernate中的对象化操作。(3)查询方式灵活:支持android框架提供的方式,也支持原生sql方式。(4)查询结果对象化:对于查询结果可自动包装为实体对象,类似于hibernate框架。2.4Java语言的介绍Java语言是面向对象的程序设计语言。Java语言吸收了Smalltalk语言和C++语言的优势,并增加了其他特性,如支持并发程序设计、网络通信和多媒体数据控制。所以Java语言有两个特点:强大易用。Java语言作为静态目标编程语言的代表,很好的实现了目标理论,让程序员以优雅的思维方式进行复杂的编程。Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

第三章系统需求分析3.1经济可行性发展目标体系的经济需求相对较低。此外,它拥有成熟的安卓平台和非常受欢迎的移动设备,因此其在软件和硬件方面的努力有限。此外,目标体系不太复杂,开发周期短,人力资源成本有限。最重要的一点是,通过系统开发,我们可以更好地理解软件开发的过程,为软件开发打下良好的基础。考虑到长期利益,该系统在经济上是可行的。3.2技术可行性该系统采用安卓技术开发。到目前为止,Android被认为是一个成熟的平台。越来越多的公司和技术人员将其用作开发平台。Android开发平台是谷歌与开放移动联盟合作开发的一个自由开放的移动终端平台。它由操作系统、中间件和应用软件组成。该平台配备了完善的程序开发环境,包括模拟器、调试工具、程序执行所消耗的内存、性能评估等功能。由于这个系统的开发平台比较完善,除了培训基地上有大量的安卓项目外,我在开发此类项目方面有更多的经验。因此,该系统符合技术可行性。3.3操作可行性系统用户只要有安卓手机就可以使用。操作系统是用户熟悉的复选框或按钮。所有操作都可以通过手机完成。用户不需要培训,只需要一个小小的提醒。因此,该系统符合实际操作的可行性。第四章系统概要设计4.1系统设计目标随着计算机应用的普及和深入,随时随地了解今天和明天的天气是一种趋势。该项目的目标是开发一个基于Android的天气预报软件系统。随着现代城市的快速发展,电视天气预报变得越来越现实。因此,有必要建立一个综合气象咨询服务功能的综合信息系统,节省时间,还可以实现个性化服务,减少不必要的等待和信息冗余。该系统的目的是建立一个基于Android平台的天气预报系统,以满足用户获取最新天气信息的需求。用户界面友好,操作简单。操作的每一步都经过精心设计。复杂的统计运算隐藏在简单的运算中。系统的设计可以减少培训、执行和维护的使用。合理先进的网络设计和软硬件优化保证了系统的可靠性和容错性。系统的目标是满足用户的需求,其原则是方便用户。天气软件的开发让更多的人了解天气,这样每个人都可以轻松出行。在天气条件下,该软件可以根据天气情况为用户提供准确的天气信息。4.2设计思路为了让智能手机更容易显示天气信息,基于Android平台设计并实现了一个天气客户端,包括JSON天气文件的收集和分析,以及基于Android平台的天气信息显示,全国城市气象信息用户查询及未来气象基础信息[10]。开发一个适合安装在Android系统上的天气预报软件,该软件可以执行定位,同时气象信息通过在线数据接口直接通过JSON分析数据,以获取当前所需的详细气象信息。本文重点研究了移动手机端的主要功能模块和api的设计与实现。系统运行时,实时天气界面将显示城市列表和中国城市名称。用户可以选择城市来查看城市、温度和气候。同时,它可以简单地描述未来几天的天气状况,包括日期、降雨量、最高和最低温度、体温、湿度、风力和能见度,天气随时间变化[11]。4.3系统界面设计1、创建工程在程序开发阶段,首先确定“天气预报系统”的工程名称为“Weather”,然后根据程序模块设计的内容,建立Weather工程,工程文件结构如下所示:图4-1工程文件界面2、界面设计一些基本的Android

UI元素在Android程序设计中经常会用到。通过使用View、ViewGroup和layout便可以为Activity创建一些不但具有功能性而且富有直观力的UI[12]。通常是使用Android

SDK中提供的一一些控件,进行布局扩展和定制这些控件,并使用ViewGroup去组合Views,创建由相互作用的子控件组成的原子的、重复利用的UI元素。也可以创建自己的Views,来实现显示数据和与用户交互的新途径;或者是使用一些继承从ViewGroup继承来的Layout管理器来编排Android

UI中的单个元素到屏幕上。图4-2布局文件3、界面需求美观的界面可以让用户轻松舒适地使用。如果它太复杂,用户将不会有耐心去使用它。因此,界面设计必须满足以下要求:

(1)界面不应过于复杂,而是简单和方便的,以便用户能够正确操作以及当用户做出错误选择时,可以给出提示。(2)表面的结构应轻量化,并满足用户的需求。(3)在视觉上,它给用户一种简单实用的感觉。第五章系统实现5.1系统总体模块的实现系统运行完成后会显示注册登录的按钮,先点击注册按钮,分别输入用户名,密码,点击确定按钮显示注册成功完成注册操作。输入您刚刚注册的用户名和密码,然后单击“登录”按钮登录系统。第一次使用系统时主界面会提示“还未选择城市,请选择城市!”,点击确定按钮后,会跳转到城市选择的界面,同时定位到当前城市,也可以选择查看其他城市,支持搜索操作。城市选择好后,回到主界面,分为三个板块。最上面显示的是城市的当前温度,天气情况,最高、最低温度,体感温度,湿度,风力和可见度信息。中间板块显示的是当前城市的二十四小时的天气情况。最下面的板块显示的是城市的七天内天气的情况,包括最高温度和最低温度。在主界面的第一个板块下面有一个更多按钮,点击后,系统可以根据具体情况显示运动指数、洗车指数、服装指数、钓鱼指数、紫外线指数、舒适指数、感冒指数、防晒指数、空气质量指数等信息。同时还会显示当前城市之前发生过的地震和台风信息。返回到主界面后,点击左上角的人物按钮,可以显示当前系统登录的账号,支持修改密码,也可以退出登录。图5-1系统流程图5.2注册登录模块的实现在首页面点击注册按钮后输入注册用户名和密码,再点击确定按钮完成系统的注册功能。注册完成后,返回登录界面,输入用户名和密码,然后点击登录按钮登录系统。publicvoidonClick(Viewv){if(binding.registerPassword1.getText().toString().equals("")||binding.registerPassword2.getText().toString().equals("")||binding.registerUsername.getText().toString().equals("")){Toast.makeText(context,"用户名和密码不可为空",Toast.LENGTH_SHORT).show();}else{Stringusername=binding.registerUsername.getText().toString();Stringpassword1=binding.registerPassword1.getText().toString();Stringpassword2=binding.registerPassword2.getText().toString();if(MyApplication.dao.checkUserExist(username)){Toast.makeText(context,"用户已存在",Toast.LENGTH_SHORT).show();}else{if(password1.equals(password2)){MyApplication.dao.insertUser(username,password1);Toast.makeText(MyApplication.context,"注册成功",Toast.LENGTH_SHORT).show();finish();}else{Toast.makeText(context,"两次输入的密码不一致",Toast.LENGTH_SHORT).show();}});}}图5-2注册界面图5-3登录界面5.2城市定位的实现在主界面点击设置按钮后,用户可以选择全国城市,也可以进行搜索,并自动定位到当前所在城市。publicvoidonLocationChanged(TencentLocationtencentLocation,inti,Strings){if(0==i){Stringcity=tencentLocation.getCity();binding.positionalCity.setText(city);binding.positionalCity.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){Intentintent=getIntent();intent.putExtra("city",city);setResult(Enum.RESULT_OK,intent);finish();}});}else{Toast.makeText(context,"定位失败!",Toast.LENGTH_SHORT).show();binding.positionalCity.setText("点击重新定位");binding.positionalCity.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){binding.positionalCity.setText("定位中...");locationManager.requestSingleFreshLocation(null,SearchActivity.this,Looper.getMainLooper());}});}}图5-4定位界面5.3天气显示的实现系统不仅可以查看当天二十四小时的天气情况,还可以查看七天内的天气情况。当前选择的按钮出现在屏幕顶部,用于更新城市和天气数据。用户可以根据需要更新数据。binding.hourWeatherList.setLayoutManager(linearLayoutManager);binding.hourWeatherList.setAdapter(hourWeatherAdapter);if(weatherNow.getNow().getText().contains("雨")){binding.weatherImage.setImageResource(R.drawable.rain);binding.getRoot().setBackgroundResource(R.drawable.rain_background);MyApplication.background=R.drawable.rain_background;}elseif(weatherNow.getNow().getText().contains("雪")){binding.weatherImage.setImageResource(R.drawable.snow);binding.getRoot().setBackgroundResource(R.drawable.snow_background);MyApplication.background=R.drawable.snow_background;}elseif(weatherNow.getNow().getText().contains("云")||weatherNow.getNow().getText().contains("阴")){binding.weatherImage.setImageResource(R.drawable.cloud);binding.getRoot().setBackgroundResource(R.drawable.cloud_background);图5-5二十四小时天气界面图5-6七天天气预报界面5.4生活质量功能实现它运行在主界面上,使用Android平台上的各种常用组件,包括Button、TextView、ImageView等等。点击主界面上的多个按钮后,您可以查看运动指数、洗车指数、穿衣指数、台风和地震等信息。publicvoidrun(){Airair=NetworkUtils.getAir(location);WeatherWarningweatherWarning=NetworkUtils.getWeatherWarning(location);Feelingfeeling=NetworkUtils.getFeeling(location);List<EarthQuake>earthQuakeList=NetworkUtils.getQuake(cityName);List<Detail>warningDetails=WeatherWarning.changeToDetail(weatherWarning);DetailearthQuakeDetail;if(earthQuakeList.size()>0){EarthQuakeearthQuake=earthQuakeList.get(0);earthQuakeDetail=EarthQuake.earthQuakeToDetail(earthQuake);}else{List<String>l=newArrayList<>();l.add("暂无地震信息");earthQuakeDetail=newDetail(l,"地震预警","0",0,0);}//将各种指数转化为统一的Detail类if(feeling.getCode().equals("200")){detailList.addAll(Feeling.changeToDetail(feeling));}if(air.getCode().equals("200")){detailList.add(Air.changeToDetail(air));}//判断是否有台风预警,如果有就将预警添加至列表,如果没有则添加一个台风预警为空的至列表if(warningDetails.size()!=0){detailList.addAll(warningDetails);}else{List<String>strings=newArrayList<>();strings.add("暂无预警");detailList.add(newDetail(strings,"台风预警","0",0,0));}图5-7运动和洗车指数图5-8穿衣和钓鱼指数图5-9紫外线和舒适度指数图5-10感冒和防晒指数图5-11空气质量图5-12台风和地震信息5.5温度功能实现选择好需要查看的城市之后,回到主界面,可以查看到当前城市的最高温度、最低温度、体感温度、湿度、风力、能见度等信息。binding.temperature.setText(weatherNow.getNow().getTemp()+"℃");binding.city.setText(cityName);binding.bodyTemperature.setText("体感温度:"+weatherNow.getNow().getFeelsLike()+"℃");binding.humidity.setText("湿度:"+weatherNow.getNow().getHumidity()+"%");binding.highTemperature.setText("最高温度:"+sevenWeather.getDaily().get(0).getTempMax()+"℃");binding.lowTemperature.setText("最低温度:"+sevenWeather.getDaily().get(0).getTempMin()+"℃");//根据是否日落获取白天风向或夜晚风向if(date.getTime()<sunsetDate.getTime()){binding.wind.setText(sevenWeather.getDaily().get(0).getWindDirDay()+"/"+sevenWeather.getDaily().get(0).getWindScaleDay()+"级");}else{binding.wind.setText(sevenWeather.getDaily().get(0).getWindDirNight()+"/"+sevenWeather.getDaily().get(0).getWindScaleNight()+"级");}binding.visibility.setText("能见度:"+sevenWeather.getDaily().get(0).getVis()+"km");binding.weather.setText(weatherNow.getNow().getText());DailyAdapterdailyAdapter=newDailyAdapter(this,R.layout.seven_day_weather_item,MyApplication.dailyList);binding.dailyList.setAdapter(dailyAdapter);}图5-13温度、湿度、风力、可见度5.6密码修改的实现在主界面点击左边的小按钮可以进行修改密码操作。publicvoidonClick(DialogInterfacedialog,intwhich){if(MyApplication.dao.modifyPassword(MyApplication.user,editText.getText().toString())){Toast.makeText(context,"修改成功",Toast.LENGTH_SHORT).show();}else{Toast.makeText(context,"修改失败",Toast.LENGTH_SHORT).show();}}}).setNegativeButton("取消",newDialogInterface.OnClickListener(){@OverridepublicvoidonClick(DialogInterfacedialog,intwhich){}}).setTitle("修改密码").show();}});图5-14修改密码界面第六章系统测试6.1测试的定义软件测试是软件开发过程的重要组成部分。其目的是检查软件产品,尽快发现软件产品中的问题。软件测试作为保证软件质量的重要手段,贯穿于软件生命周期的各个阶段,以保证软件产品的质量。6.2测试的重要性及目的软件开发的基本要求是及时发布高质量的软件产品,软件测试是保证软件质量的重要手段。软件,无论你从什么技术或方法开始,软件产品或多或少都会有错误和问题。使用先进的开发方法和改进的开发过程可以减少导入错误,但不能完全消除软件中需要检测的错误。在软件生命周期的每个阶段和每个时刻都有软件测试活动。软件测试伴随着软件开发,以确保每个阶段的结果满足规定的质量要求和目标,以便尽快发现错误并及时纠正。6.3测试的环境硬件环境:一台PC机、一台手机软件环境:windows10系统6.4测试的过程软件编写完成后,对其进行测试,准备好一台手机,并打开开发者选项模式,和笔记本相连接,模拟器那边会显示手机型号,选择它,点击运行按钮。图6-1模拟器和运行界面点击注册按钮后如果没有输入用户名和密码,点击确定按钮后会显示用户名和密码不可为空。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论