基于Android的天氣預(yù)報(bào)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
基于Android的天氣預(yù)報(bào)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁
基于Android的天氣預(yù)報(bào)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁
基于Android的天氣預(yù)報(bào)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第4頁
基于Android的天氣預(yù)報(bào)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第一章緒論1.1課題的背景天氣預(yù)報(bào)為人們了解天氣狀況和出行計(jì)劃帶來了便利。然而,大多數(shù)天氣預(yù)報(bào)軟件都是基于PC端的,所以查詢起來并不方便。目前,手機(jī)的功能不僅僅是打電話和發(fā)短信,還為我們的生活和生產(chǎn)提供便利。過去,很難通過移動(dòng)互聯(lián)網(wǎng)獲取實(shí)時(shí)信息。例如,在過去,人們通過觀看或收聽電視節(jié)目接收天氣報(bào)告,但現(xiàn)在智能手機(jī)能夠更快、更方便地通過互聯(lián)網(wǎng)獲取天氣信息[1]。隨著智能手機(jī)的普及,天氣調(diào)查可以在手機(jī)上進(jìn)行。因此,在手機(jī)上實(shí)現(xiàn)天氣預(yù)報(bào)系統(tǒng)是一種現(xiàn)實(shí)需求。該系統(tǒng)是一款帶有天氣預(yù)報(bào)功能的手機(jī)應(yīng)用程序,旨在方便人們出行[2]?;贏ndroid的天氣預(yù)報(bào)系統(tǒng)具有界面友好、功能強(qiáng)、實(shí)用性強(qiáng)、可擴(kuò)展性好、穩(wěn)定性強(qiáng)等優(yōu)點(diǎn)。它可以讓用戶實(shí)時(shí)了解當(dāng)?shù)氐奶鞖鉅顩r,方便出行和調(diào)節(jié)生產(chǎn)[3]。本文在簡要介紹開發(fā)工具的基礎(chǔ)上,首先確定了系統(tǒng)的需求,對(duì)系統(tǒng)進(jìn)行了分析和設(shè)計(jì),然后介紹了基本功能的實(shí)現(xiàn)。最后對(duì)系統(tǒng)進(jìn)行了總結(jié)和展望。1.2研究意義實(shí)時(shí)天氣預(yù)報(bào)為人們的生活和工作提供了極大的便利。智能電子產(chǎn)品的普及為實(shí)時(shí)天氣預(yù)報(bào)系統(tǒng)提供了更方便、更有效的平臺(tái)。目前,Android已經(jīng)成為一個(gè)重要的移動(dòng)軟件系統(tǒng),基于Android平臺(tái)的應(yīng)用越來越多?;贏ndroid平臺(tái)的移動(dòng)天氣預(yù)報(bào)系統(tǒng)可以為大多數(shù)手機(jī)用戶帶來好處。設(shè)計(jì)開發(fā)了基于Android平臺(tái)的天氣預(yù)報(bào)軟件,可以實(shí)時(shí)查詢不同城市的天氣信息,更新落后信息。使用模式具有操作簡單、功能豐富、用戶界面友好等優(yōu)點(diǎn),可以提供有關(guān)天氣和生活親密度的詳細(xì)信息。1.3研究方法本文主要研究基于Android的天氣預(yù)報(bào)系統(tǒng)的開發(fā)方法。為了減少網(wǎng)絡(luò)中數(shù)據(jù)傳輸?shù)呢?fù)載,軟件使用JSON格式交換數(shù)據(jù),以實(shí)現(xiàn)網(wǎng)絡(luò)中的數(shù)據(jù)傳輸[4]。JSON是一種輕量級(jí)數(shù)據(jù)交換格式,易于讀寫、機(jī)器分析和生成。JSON可以將JavaScript對(duì)象表示的一組數(shù)據(jù)轉(zhuǎn)換為字符串,然后在網(wǎng)絡(luò)或程序之間輕松傳輸字符串,如果需要,還可以將其轉(zhuǎn)換為不同編程語言(如PHP和JSON)支持的數(shù)據(jù)格式??梢曰謴?fù)到集合或基本對(duì)象。1.4研究現(xiàn)狀和發(fā)展趨勢在全球變暖的背景下,極端天氣和氣候事件在世界各地日益普遍,異常天氣現(xiàn)象和破壞性天氣災(zāi)害日益嚴(yán)重,引起了人們的關(guān)注[5]。氣象科學(xué)技術(shù)的競爭日趨激烈,應(yīng)對(duì)氣候變化和支持國際談判的基礎(chǔ)性作用日益增強(qiáng)。雖然我國氣象服務(wù)的生產(chǎn)能力尚未充分披露,但氣象服務(wù)市場的發(fā)展仍存在一些問題,但氣象服務(wù)發(fā)展經(jīng)濟(jì),提高人民生活質(zhì)量,進(jìn)一步發(fā)展氣象技術(shù),擴(kuò)大氣象服務(wù)規(guī)模,完善氣象服務(wù)體系,以適應(yīng)市場經(jīng)濟(jì)和氣象服務(wù)市場的發(fā)展,航空業(yè)將有更大的發(fā)展空間。在不久的將來,高德地圖將顯示15分鐘內(nèi)一公里的天氣狀況,以及某條街道24小時(shí)前會(huì)有一股強(qiáng)勁的西北風(fēng)。當(dāng)你在暴風(fēng)雨中開車時(shí),高德地圖會(huì)提醒你前方道路被洪水淹沒,你的汽車可能被洪水淹沒。綜上所述,氣象部門依靠各種天氣預(yù)報(bào)軟件來呈現(xiàn)一片欣欣向榮景象。

第二章相關(guān)技術(shù)概述2.1系統(tǒng)開發(fā)環(huán)境(1)設(shè)計(jì)語言:Java(2)平臺(tái)系統(tǒng):Windows10(3)開發(fā)工具:Android(4)數(shù)據(jù)庫:SQLite(5)Gradle版本:7.0.2(6)jdk版本:1.8.02.2Android的介紹Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由Google

公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。隨后

Google以Apache開源許可證的授權(quán)方式,發(fā)布了Android的源代碼[6]。Android采用了軟件堆層的架構(gòu),低層以Linux內(nèi)核工作為基礎(chǔ),只提供基本功能,其他的應(yīng)用軟件則由各公司自行開發(fā)。Android系統(tǒng)有如下的幾大特性:(1)應(yīng)用程序框架,支持組件的重用與替換;(2)Dalvik虛擬機(jī),專門為移動(dòng)設(shè)備做了優(yōu)化;(3)內(nèi)部集成瀏覽器,該瀏覽器基于開源的WebKit引擎;(4)優(yōu)化的圖形庫,包括2D和3D圖形庫;(5)SQLite,用作結(jié)構(gòu)化的數(shù)據(jù)存儲(chǔ);(6)多媒體支持,包括常見的音頻、視頻和靜態(tài)印象文件格式:(7)豐富的開發(fā)環(huán)境,包括設(shè)備模擬器,調(diào)試工具,內(nèi)存及性能分析圖表和

Eclipse集成開發(fā)環(huán)境插件。2.3SQLite的介紹SQLite

是一款嵌入式的輕型數(shù)據(jù)庫,它只占用很少的資源,有時(shí)只需幾百K。它支持

Windows/Linux/Unix等操作系統(tǒng),它能跟Java、C#等程序設(shè)計(jì)語言相結(jié)合,還有ODBC接口[7]。它處理數(shù)據(jù)的速度比Mysql、PostgreSQL等數(shù)據(jù)庫都快。Android作為目前主流的移動(dòng)操作系統(tǒng),完全符合SQLite占用資源少的優(yōu)勢,故在Android平臺(tái)上,集成了一個(gè)嵌入式關(guān)系型數(shù)據(jù)庫——SQLite[8]。本數(shù)據(jù)庫支持功能如下:(1)自動(dòng)建表,支持屬性來自繼承類:可根據(jù)注解自動(dòng)完成建表,并且對(duì)于繼承類中的注解字段也支持自動(dòng)建表。(2)自動(dòng)支持增刪改,增改支持對(duì)象化操作:增刪改是數(shù)據(jù)庫操作的最基本單元,不用重復(fù)寫這些增刪改的代碼,并且添加和更新支持類似于hibernate中的對(duì)象化操作。(3)查詢方式靈活:支持android框架提供的方式,也支持原生sql方式。(4)查詢結(jié)果對(duì)象化:對(duì)于查詢結(jié)果可自動(dòng)包裝為實(shí)體對(duì)象,類似于hibernate框架。2.4Java語言的介紹Java語言是面向?qū)ο蟮某绦蛟O(shè)計(jì)語言。Java語言吸收了Smalltalk語言和C++語言的優(yōu)勢,并增加了其他特性,如支持并發(fā)程序設(shè)計(jì)、網(wǎng)絡(luò)通信和多媒體數(shù)據(jù)控制。所以Java語言有兩個(gè)特點(diǎn):強(qiáng)大易用。Java語言作為靜態(tài)目標(biāo)編程語言的代表,很好的實(shí)現(xiàn)了目標(biāo)理論,讓程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜的編程。Java具有簡單性、面向?qū)ο蟆⒎植际?、健壯性、安全性、平臺(tái)獨(dú)立與可移植性、多線程、動(dòng)態(tài)性等特點(diǎn)。Java可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等。2.5JSON的介紹JSON是一種輕量級(jí)的數(shù)據(jù)交換語言,以文字為基礎(chǔ),且易于讓人閱讀。盡管JSON是在Javascript的一個(gè)子集,但JSON是獨(dú)立于語言的文本格式,并且采用了類似于C語言家族的一些習(xí)慣[9]。它主要用于跟服務(wù)器進(jìn)行交換數(shù)據(jù)。跟XML相類似,它獨(dú)立語言,在跨平臺(tái)數(shù)據(jù)傳輸上有很大的優(yōu)勢。JSON建構(gòu)有兩種結(jié)構(gòu):(1)“名稱/值”對(duì)的集合。不同的語言中,它被理解為對(duì)象,記錄,結(jié)構(gòu),字典,哈希表,有鍵列表,或者關(guān)聯(lián)數(shù)組。(2)值的有序列表。在大部分語言中,它被理解為數(shù)組。JSON是JavaScript

原生格式,所以JavaScript

中處理JSON數(shù)據(jù)不需要任何特殊的

API

或工具包。在處理JSON格式的數(shù)據(jù)時(shí),不需要遵守的預(yù)定義的約束。所以,在同樣的數(shù)據(jù)結(jié)構(gòu)中,可以改變表示數(shù)據(jù)的方式,甚至可以以不同方式表示同一事物。

第三章系統(tǒng)需求分析3.1系統(tǒng)可行性分析可行性研究的目的是探索解決問題的必要性和可行性??尚行匝芯康哪康氖谴_定能否以最短的時(shí)間和最低的成本解決問題。為了避免盲目的軟件開發(fā),員工應(yīng)該對(duì)具體的軟件項(xiàng)目進(jìn)行可行性研究,評(píng)估產(chǎn)品在資金條件和技術(shù)約束下是否能夠解決現(xiàn)有問題,達(dá)到預(yù)期的效果和價(jià)值??尚行苑治鲶w系主要包括經(jīng)濟(jì)可行性、技術(shù)可行性、操作可行性和法律可行性。(1)經(jīng)濟(jì)可行性發(fā)展目標(biāo)體系的經(jīng)濟(jì)需求相對(duì)較低。此外,它擁有成熟的安卓平臺(tái)和非常受歡迎的移動(dòng)設(shè)備,因此其在軟件和硬件方面的努力有限。此外,目標(biāo)體系不太復(fù)雜,開發(fā)周期短,人力資源成本有限。最重要的一點(diǎn)是,通過系統(tǒng)開發(fā),我們可以更好地理解軟件開發(fā)的過程,為軟件開發(fā)打下良好的基礎(chǔ)??紤]到長期利益,該系統(tǒng)在經(jīng)濟(jì)上是可行的。(2)技術(shù)可行性該系統(tǒng)采用安卓技術(shù)開發(fā)。到目前為止,Android被認(rèn)為是一個(gè)成熟的平臺(tái)。越來越多的公司和技術(shù)人員將其用作開發(fā)平臺(tái)。Android開發(fā)平臺(tái)是谷歌與開放移動(dòng)聯(lián)盟合作開發(fā)的一個(gè)自由開放的移動(dòng)終端平臺(tái)。它由操作系統(tǒng)、中間件和應(yīng)用軟件組成。該平臺(tái)配備了完善的程序開發(fā)環(huán)境,包括模擬器、調(diào)試工具、程序執(zhí)行所消耗的內(nèi)存、性能評(píng)估等功能。由于這個(gè)系統(tǒng)的開發(fā)平臺(tái)比較完善,除了培訓(xùn)基地上有大量的安卓項(xiàng)目外,我在開發(fā)此類項(xiàng)目方面有更多的經(jīng)驗(yàn)。因此,該系統(tǒng)符合技術(shù)可行性。(3)操作可行性系統(tǒng)用戶只要有安卓手機(jī)就可以使用。操作系統(tǒng)是用戶熟悉的復(fù)選框或按鈕。所有操作都可以通過手機(jī)完成。用戶不需要培訓(xùn),只需要一個(gè)小小的提醒。因此,該系統(tǒng)符合實(shí)際操作的可行性。(4)法律可行性由于該制度是根據(jù)相關(guān)法律法規(guī)實(shí)施的,因此不存在法律問題。該系統(tǒng)符合法律可行性??紤]到經(jīng)濟(jì)、技術(shù)、運(yùn)營和法律因素,我們可以開始開發(fā)天氣預(yù)報(bào)軟件。3.2軟件需求分析

隨著智能手機(jī)和移動(dòng)互聯(lián)網(wǎng)的發(fā)展,人們可以每天一小時(shí)甚至實(shí)時(shí)獲取天氣預(yù)報(bào)。利用手機(jī)上的移動(dòng)網(wǎng)絡(luò)隨時(shí)獲取天氣預(yù)報(bào)可以讓人們做好出行的準(zhǔn)備。用戶可以在天氣界面直觀快速地查看本市的天氣情況,也可以根據(jù)實(shí)際情況搜索其他城市,顯示本市的天氣情況,包括日期、降水量、最高氣溫和最低氣溫四個(gè)氣象數(shù)據(jù)。你還可以查看全國各地的地震和臺(tái)風(fēng)信息。系統(tǒng)的開發(fā)需要友好的界面。方便直觀。用戶可以一目了然地了解天氣的變化。該軟件界面美觀,系統(tǒng)運(yùn)行穩(wěn)定,具有良好的使用價(jià)值。

本章利用模塊圖對(duì)基于Android的天氣預(yù)報(bào)系統(tǒng)的設(shè)計(jì)與開發(fā)進(jìn)行了詳細(xì)的闡述與研究,包括四個(gè)模塊:賬號(hào)界面模塊,主界面模塊,生活指數(shù)及災(zāi)害預(yù)警模塊和定位界面模塊。3.2.1功能需求分析1、注冊(cè)登錄模塊因?yàn)橄到y(tǒng)不能殘留用戶的任何的隱私信息,以免泄露。所以當(dāng)用戶第一次使用系統(tǒng)時(shí),下載APP后,需要先注冊(cè),注冊(cè)成功后再進(jìn)行登錄操作。后續(xù)每次登錄系統(tǒng)也需要進(jìn)行登錄才可以使用。2、賬號(hào)界面模塊為了以免用戶忘記自己的密碼,所以在賬戶界面處設(shè)置了修改密碼的功能,允許用戶可以修改密碼,同時(shí)也顯示了系統(tǒng)當(dāng)前使用的賬戶。圖3-1賬號(hào)界面模塊流程圖3、主界面模塊主界面共分為三個(gè)部分,最上面顯示城市的當(dāng)前溫度,天氣情況,最高、最低溫度,體感溫度,濕度,風(fēng)力和可見度信息。為了實(shí)現(xiàn)數(shù)據(jù)的準(zhǔn)確性,在這個(gè)模塊里設(shè)置了刷新按鈕,用戶可以隨時(shí)點(diǎn)擊,可以自動(dòng)更新城市的天氣信息。中間板塊顯示的是當(dāng)前城市的二十四小時(shí)的天氣情況。最下面的板塊顯示的是城市的七天內(nèi)天氣的情況。圖3-2主界面模塊流程圖4、生活指數(shù)及災(zāi)害預(yù)警模塊為了用戶更好的使用系統(tǒng),可以提供建設(shè)性意見,軟件設(shè)置了生活指數(shù)及災(zāi)害預(yù)警模塊,可以顯示系統(tǒng)的運(yùn)動(dòng)指數(shù)、洗車指數(shù)、穿衣指數(shù)、釣魚指數(shù)、紫外線指數(shù)、舒適度指數(shù)、感冒指數(shù)、防曬指數(shù)、空氣質(zhì)量等信息,以及臺(tái)風(fēng)和地震的歷史圖3-3生活指數(shù)及災(zāi)害預(yù)警模塊流程圖5、定位界面模塊為了方便用戶操作,系統(tǒng)設(shè)置了定位功能,可以定位到當(dāng)前所在城市,同時(shí)支持搜索查詢其余城市。3.2.2非功能需求分析為了保證軟件能夠長期、安全、穩(wěn)定、可靠、高效地在Android設(shè)備上運(yùn)行,本系統(tǒng)應(yīng)該滿足以下原則。準(zhǔn)確性本軟件的核心技術(shù)是通過與互聯(lián)網(wǎng)上提供的接口進(jìn)行交互,保證了信息的準(zhǔn)確性。2、安全可靠性本軟件是基于手機(jī)設(shè)備使用的,不會(huì)殘留用戶的任何的隱私信息。3、可擴(kuò)展性與可維護(hù)性系統(tǒng)設(shè)計(jì)盡可能模塊化、組件化。有一個(gè)較好的應(yīng)用平臺(tái)——Android設(shè)備,能容易地安裝和卸載。4、易用性本軟件平易近人,不需要額外學(xué)習(xí),每個(gè)界面都會(huì)有不同含義的圖標(biāo)進(jìn)行提示下一步操作,保證用戶使用時(shí)不會(huì)感到迷惑。

第四章系統(tǒng)概要設(shè)計(jì)4.1系統(tǒng)設(shè)計(jì)目標(biāo)隨著計(jì)算機(jī)應(yīng)用的普及和深入,隨時(shí)隨地了解今天和明天的天氣是一種趨勢。該項(xiàng)目的目標(biāo)是開發(fā)一個(gè)基于Android的天氣預(yù)報(bào)軟件系統(tǒng)。隨著現(xiàn)代城市的快速發(fā)展,電視天氣預(yù)報(bào)變得越來越現(xiàn)實(shí)。因此,有必要建立一個(gè)綜合氣象咨詢服務(wù)功能的綜合信息系統(tǒng),節(jié)省時(shí)間,還可以實(shí)現(xiàn)個(gè)性化服務(wù),減少不必要的等待和信息冗余。該系統(tǒng)的目的是建立一個(gè)基于Android平臺(tái)的天氣預(yù)報(bào)系統(tǒng),以滿足用戶獲取最新天氣信息的需求。用戶界面友好,操作簡單。操作的每一步都經(jīng)過精心設(shè)計(jì)。復(fù)雜的統(tǒng)計(jì)運(yùn)算隱藏在簡單的運(yùn)算中。系統(tǒng)的設(shè)計(jì)可以減少培訓(xùn)、執(zhí)行和維護(hù)的使用。合理先進(jìn)的網(wǎng)絡(luò)設(shè)計(jì)和軟硬件優(yōu)化保證了系統(tǒng)的可靠性和容錯(cuò)性。系統(tǒng)的目標(biāo)是滿足用戶的需求,其原則是方便用戶。天氣軟件的開發(fā)讓更多的人了解天氣,這樣每個(gè)人都可以輕松出行。在天氣條件下,該軟件可以根據(jù)天氣情況為用戶提供準(zhǔn)確的天氣信息。4.2設(shè)計(jì)思路為了讓智能手機(jī)更容易顯示天氣信息,基于Android平臺(tái)設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)天氣客戶端,包括JSON天氣文件的收集和分析,以及基于Android平臺(tái)的天氣信息顯示,全國城市氣象信息用戶查詢及未來氣象基礎(chǔ)信息[10]。開發(fā)一個(gè)適合安裝在Android系統(tǒng)上的天氣預(yù)報(bào)軟件,該軟件可以執(zhí)行定位,同時(shí)氣象信息通過在線數(shù)據(jù)接口直接通過JSON分析數(shù)據(jù),以獲取當(dāng)前所需的詳細(xì)氣象信息。本文重點(diǎn)研究了移動(dòng)手機(jī)端的主要功能模塊和api的設(shè)計(jì)與實(shí)現(xiàn)。系統(tǒng)運(yùn)行時(shí),實(shí)時(shí)天氣界面將顯示城市列表和中國城市名稱。用戶可以選擇城市來查看城市、溫度和氣候。同時(shí),它可以簡單地描述未來幾天的天氣狀況,包括日期、降雨量、最高和最低溫度、體溫、濕度、風(fēng)力和能見度,天氣隨時(shí)間變化[11]。4.3系統(tǒng)界面設(shè)計(jì)1、創(chuàng)建工程在程序開發(fā)階段,首先確定“天氣預(yù)報(bào)系統(tǒng)”的工程名稱為“Weather”,然后根據(jù)程序模塊設(shè)計(jì)的內(nèi)容,建立Weather工程,工程文件結(jié)構(gòu)如下所示:圖4-1工程文件界面2、界面設(shè)計(jì)一些基本的Android

UI元素在Android程序設(shè)計(jì)中經(jīng)常會(huì)用到。通過使用View、ViewGroup和layout便可以為Activity創(chuàng)建一些不但具有功能性而且富有直觀力的UI[12]。通常是使用Android

SDK中提供的一一些控件,進(jìn)行布局?jǐn)U展和定制這些控件,并使用ViewGroup去組合Views,創(chuàng)建由相互作用的子控件組成的原子的、重復(fù)利用的UI元素。也可以創(chuàng)建自己的Views,來實(shí)現(xiàn)顯示數(shù)據(jù)和與用戶交互的新途徑;或者是使用一些繼承從ViewGroup繼承來的Layout管理器來編排Android

UI中的單個(gè)元素到屏幕上。圖4-2布局文件3、界面需求美觀的界面可以讓用戶輕松舒適地使用。如果它太復(fù)雜,用戶將不會(huì)有耐心去使用它。因此,界面設(shè)計(jì)必須滿足以下要求:

(1)界面不應(yīng)過于復(fù)雜,而是簡單和方便的,以便用戶能夠正確操作以及當(dāng)用戶做出錯(cuò)誤選擇時(shí),可以給出提示。(2)表面的結(jié)構(gòu)應(yīng)輕量化,并滿足用戶的需求。(3)在視覺上,它給用戶一種簡單實(shí)用的感覺。4.4系統(tǒng)總體結(jié)構(gòu)描述本文結(jié)合國內(nèi)外研究現(xiàn)狀和用戶需求,描述了整個(gè)系統(tǒng)的設(shè)計(jì)階段。本次項(xiàng)目通過利用現(xiàn)有的網(wǎng)絡(luò)開源API提供的服務(wù)快速獲取天氣信息并顯示到手機(jī)終端上,該app所需要實(shí)現(xiàn)的功能點(diǎn):其次進(jìn)行天氣預(yù)報(bào)客戶端設(shè)計(jì),進(jìn)行系統(tǒng)功能的整體規(guī)劃。(1)顯示當(dāng)前城市當(dāng)日二十四小時(shí)天氣情況,以及當(dāng)日的最高溫度、最低溫度、體感溫度、濕度、風(fēng)力、能見度等信息;(2)顯示當(dāng)前城市未來七天天氣:(3)顯示感冒指數(shù)、防曬指數(shù)、空氣質(zhì)量、臺(tái)風(fēng)和地震等信息;(4)通過城市列表管理城市;(5)可以修改密碼。系統(tǒng)設(shè)計(jì)應(yīng)盡可能模塊化,并基于組件。具有良好的應(yīng)用平臺(tái),易于安裝和卸載。同時(shí),該軟件基于移動(dòng)設(shè)備,不會(huì)留下用戶隱私信息。軟件的關(guān)鍵技術(shù)是與互聯(lián)網(wǎng)上可用的接口進(jìn)行交互,以確保無需額外的軟件學(xué)習(xí)就可以訪問準(zhǔn)確的信息。每個(gè)界面都有不同的含義,需要下一個(gè)動(dòng)作的圖標(biāo),所以用戶在使用時(shí)不應(yīng)該混淆它們。

第五章系統(tǒng)實(shí)現(xiàn)5.1系統(tǒng)總體模塊的實(shí)現(xiàn)系統(tǒng)運(yùn)行完成后會(huì)顯示注冊(cè)登錄的按鈕,先點(diǎn)擊注冊(cè)按鈕,分別輸入用戶名,密碼,點(diǎn)擊確定按鈕顯示注冊(cè)成功完成注冊(cè)操作。輸入您剛剛注冊(cè)的用戶名和密碼,然后單擊“登錄”按鈕登錄系統(tǒng)。第一次使用系統(tǒng)時(shí)主界面會(huì)提示“還未選擇城市,請(qǐng)選擇城市!”,點(diǎn)擊確定按鈕后,會(huì)跳轉(zhuǎn)到城市選擇的界面,同時(shí)定位到當(dāng)前城市,也可以選擇查看其他城市,支持搜索操作。城市選擇好后,回到主界面,分為三個(gè)板塊。最上面顯示的是城市的當(dāng)前溫度,天氣情況,最高、最低溫度,體感溫度,濕度,風(fēng)力和可見度信息。中間板塊顯示的是當(dāng)前城市的二十四小時(shí)的天氣情況。最下面的板塊顯示的是城市的七天內(nèi)天氣的情況,包括最高溫度和最低溫度。在主界面的第一個(gè)板塊下面有一個(gè)更多按鈕,點(diǎn)擊后,系統(tǒng)可以根據(jù)具體情況顯示運(yùn)動(dòng)指數(shù)、洗車指數(shù)、服裝指數(shù)、釣魚指數(shù)、紫外線指數(shù)、舒適指數(shù)、感冒指數(shù)、防曬指數(shù)、空氣質(zhì)量指數(shù)等信息。同時(shí)還會(huì)顯示當(dāng)前城市之前發(fā)生過的地震和臺(tái)風(fēng)信息。返回到主界面后,點(diǎn)擊左上角的人物按鈕,可以顯示當(dāng)前系統(tǒng)登錄的賬號(hào),支持修改密碼,也可以退出登錄。圖5-1系統(tǒng)流程圖5.2注冊(cè)登錄模塊的實(shí)現(xiàn)在首頁面點(diǎn)擊注冊(cè)按鈕后輸入注冊(cè)用戶名和密碼,再點(diǎn)擊確定按鈕完成系統(tǒng)的注冊(cè)功能。注冊(cè)完成后,返回登錄界面,輸入用戶名和密碼,然后點(diǎn)擊登錄按鈕登錄系統(tǒng)。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,"注冊(cè)成功",Toast.LENGTH_SHORT).show();finish();}else{Toast.makeText(context,"兩次輸入的密碼不一致",Toast.LENGTH_SHORT).show();}});}}圖5-2注冊(cè)界面圖5-3登錄界面5.2城市定位的實(shí)現(xiàn)在主界面點(diǎn)擊設(shè)置按鈕后,用戶可以選擇全國城市,也可以進(jìn)行搜索,并自動(dòng)定位到當(dāng)前所在城市。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("點(diǎn)擊重新定位");binding.positionalCity.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){binding.positionalCity.setText("定位中...");locationManager.requestSingleFreshLocation(null,SearchActivity.this,Looper.getMainLooper());}});}}圖5-4定位界面5.3天氣顯示的實(shí)現(xiàn)系統(tǒng)不僅可以查看當(dāng)天二十四小時(shí)的天氣情況,還可以查看七天內(nèi)的天氣情況。當(dāng)前選擇的按鈕出現(xiàn)在屏幕頂部,用于更新城市和天氣數(shù)據(jù)。用戶可以根據(jù)需要更新數(shù)據(jù)。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二十四小時(shí)天氣界面圖5-6七天天氣預(yù)報(bào)界面5.4生活質(zhì)量功能實(shí)現(xiàn)它運(yùn)行在主界面上,使用Android平臺(tái)上的各種常用組件,包括Button、TextView、ImageView等等。點(diǎn)擊主界面上的多個(gè)按鈕后,您可以查看運(yùn)動(dòng)指數(shù)、洗車指數(shù)、穿衣指數(shù)、臺(tái)風(fēng)和地震等信息。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,"地震預(yù)警","0",0,0);}//將各種指數(shù)轉(zhuǎn)化為統(tǒng)一的Detail類if(feeling.getCode().equals("200")){detailList.addAll(Feeling.changeToDetail(feeling));}if(air.getCode().equals("200")){detailList.add(Air.changeToDetail(air));}//判斷是否有臺(tái)風(fēng)預(yù)警,如果有就將預(yù)警添加至列表,如果沒有則添加一個(gè)臺(tái)風(fēng)預(yù)警為空的至列表if(warningDetails.size()!=0){detailList.addAll(warningDetails);}else{List<String>strings=newArrayList<>();strings.add("暫無預(yù)警");detailList.add(newDetail(strings,"臺(tái)風(fēng)預(yù)警","0",0,0));}圖5-7運(yùn)動(dòng)和洗車指數(shù)圖5-8穿衣和釣魚指數(shù)圖5-9紫外線和舒適度指數(shù)圖5-10感冒和防曬指數(shù)圖5-11空氣質(zhì)量圖5-12臺(tái)風(fēng)和地震信息5.5溫度功能實(shí)現(xiàn)選擇好需要查看的城市之后,回到主界面,可以查看到當(dāng)前城市的最高溫度、最低溫度、體感溫度、濕度、風(fēng)力、能見度等信息。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()+"℃");//根據(jù)是否日落獲取白天風(fēng)向或夜晚風(fēng)向if(date.getTime()<sunsetDate.getTime()){binding.wind.setText(sevenWeather.getDaily().get(0).getWindDirDay()+"/"+sevenWeather.getDaily().get(0).getWindScaleDay()+"級(jí)");}else{binding.wind.setText(sevenWeather.getDaily().get(0).getWindDirNight()+"/"+sevenWeather.getDaily().get(0).getWindScaleNight()+"級(jí)");}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溫度、濕度、風(fēng)力、可見度5.6密碼修改的實(shí)現(xiàn)在主界面點(diǎn)擊左邊的小按鈕可以進(jìn)行修改密碼操作。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修改密碼界面

第六章系統(tǒng)測試6.1測試的定義軟件測試是軟件開發(fā)過程的重要組成部分。其目的是檢查軟件產(chǎn)品,盡快發(fā)現(xiàn)軟件產(chǎn)品中的問題。軟件測試作為保證軟件質(zhì)量的重要手段,貫穿于軟件生命周期的各個(gè)階段,以保證軟件產(chǎn)品的質(zhì)量。6.2測試的重要性及目的軟件開發(fā)的基本要求是及時(shí)發(fā)布高質(zhì)量的軟件產(chǎn)品,軟件測試是保證軟件質(zhì)量的重要手段。軟件,無論你從什么技術(shù)或方法開始,軟件產(chǎn)品或多或少都會(huì)有錯(cuò)誤和問題。使用先進(jìn)的開發(fā)方法和改進(jìn)的開發(fā)過程可以減少導(dǎo)入錯(cuò)誤,但不能完全消除軟件中需要檢測的錯(cuò)誤。在軟件生命周期的每個(gè)階段和每個(gè)時(shí)刻都有軟件測試活動(dòng)。軟件測試伴隨著軟件開發(fā),以確保每個(gè)階段的結(jié)果滿足規(guī)定的質(zhì)量要求和目標(biāo),以便盡快發(fā)現(xiàn)錯(cuò)誤并及時(shí)糾正。6.3測試的環(huán)境硬件環(huán)境:一臺(tái)PC機(jī)、一臺(tái)手機(jī)軟件環(huán)境:windows10系統(tǒng)6.4測試的過程軟件編寫完成后,對(duì)其進(jìn)行測試,準(zhǔn)備好一臺(tái)手機(jī),并打開開發(fā)者選項(xiàng)模式,和筆記本相連接,模擬器那邊會(huì)顯示手機(jī)型號(hào),選擇它,點(diǎn)擊運(yùn)行按鈕。圖

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論