基于Android平臺(tái)的天氣預(yù)報(bào)軟件設(shè)計(jì)【實(shí)用文檔】doc_第1頁(yè)
基于Android平臺(tái)的天氣預(yù)報(bào)軟件設(shè)計(jì)【實(shí)用文檔】doc_第2頁(yè)
基于Android平臺(tái)的天氣預(yù)報(bào)軟件設(shè)計(jì)【實(shí)用文檔】doc_第3頁(yè)
基于Android平臺(tái)的天氣預(yù)報(bào)軟件設(shè)計(jì)【實(shí)用文檔】doc_第4頁(yè)
基于Android平臺(tái)的天氣預(yù)報(bào)軟件設(shè)計(jì)【實(shí)用文檔】doc_第5頁(yè)
已閱讀5頁(yè),還剩106頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

基于Android平臺(tái)的天氣預(yù)報(bào)軟件設(shè)計(jì)【實(shí)用文檔】doc文檔可直接使用可編輯,歡迎下載

教學(xué)單位基于Android平臺(tái)的天氣預(yù)報(bào)軟件設(shè)計(jì)【實(shí)用文檔】doc文檔可直接使用可編輯,歡迎下載學(xué)生學(xué)號(hào)本科畢業(yè)論文(設(shè)計(jì))題目基于Android平臺(tái)的天氣預(yù)報(bào)軟件設(shè)計(jì)學(xué)生姓名lion專(zhuān)業(yè)名稱指導(dǎo)教師2013年5月20日基于Android平臺(tái)的天氣預(yù)報(bào)軟件設(shè)計(jì)摘要:Google于2008年推出了一款名為Android的開(kāi)源智能手機(jī)操作系統(tǒng),它采用Linux內(nèi)核,開(kāi)放手機(jī)聯(lián)盟(OHA)成員可以任意使用和修改SDK包,系統(tǒng)的開(kāi)源性使其具有良好的拓展性。Android的最大特點(diǎn)是其開(kāi)放性體系架構(gòu),不僅具有非常好的開(kāi)發(fā)、調(diào)試環(huán)境,而且還支持各種可擴(kuò)展的用戶體驗(yàn)。因此,對(duì)于軟件從業(yè)人員來(lái)說(shuō),Android平臺(tái)具有無(wú)限的吸引力.目前Android操作系統(tǒng)已經(jīng)成為用戶最多的智能操作系統(tǒng)。本天氣預(yù)報(bào)軟件的設(shè)計(jì),為Android終端用戶提供一款方便的實(shí)時(shí)天氣預(yù)報(bào)查詢軟件,為用戶帶來(lái)良好的用戶體驗(yàn)及便利的對(duì)天氣情況進(jìn)行掌控.本天氣預(yù)報(bào)軟件采用ViewFlipper組件,提供友好的界面滑動(dòng)切換方式,同時(shí)減少系統(tǒng)運(yùn)行時(shí)占用的空間。使用Files方式保存天氣信息,SharedPreferences保存用戶偏好設(shè)置,節(jié)約了文件存儲(chǔ)的空間.本文就在分析討論Android手機(jī)軟件開(kāi)發(fā)技術(shù)原理的基礎(chǔ)上,利用Android中基本組件和常用設(shè)計(jì)模式,開(kāi)發(fā)出能為用戶提供更好的基于Android平臺(tái)的手機(jī)天氣預(yù)報(bào)軟件。關(guān)鍵字:Android;天氣預(yù)報(bào);智能手機(jī)平臺(tái)DesignofweatherforecastsoftwareBasedontheAndroidAbstract:Googlein2008launchedaproductcalledtheAndroidopensourcesmartphoneoperatingsystem,whichusestheLinuxkernel,OpenHandsetAlliance(OHA)memberscanbefree(cuò)touseandmodifytheSDKpackage,opensource,ithasgoodscalabilityofthesystem.ThemostimportantfeatureofAndroidisitsopenarchitecture,notonlyhasaverygooddevelopmentanddebuggingenvironment,butalsosupportsavarietyofscalableuserexperience。Therefore,forsoftwareprofessionals,theAndroidplatformhasunlimitedappeal.Androidoperat(yī)ingsystemhasbecometheuserthemostintelligentoperatingsystem。TheweathersoftwaredesignedfortheAndroidenduserstoprovideaconvenient,real-timeweatherquerysoftware,toprovideuserswithagooduserexperienceandconvenienceofcontroloftheweatherconditions.TheweatherforecastsoftwaretheViewFlippercomponents,friendlyinterfaceslidingswitch,whilereducingthespaceoccupiedwhenthesystemisrunning.FilessavedWeatherInformation,SharedPreferencestosaveuserpreferencessettings,savethefilestoragespace。ThisarticleonthebasisofanalysisanddiscussionoftheAndroidmobilephonesoftwaredevelopmenttechnicalprinciples,usingthebasiccomponentsandcommondesignpatternsAndroid,developerscanprovideuserswithbettermobilephoneweatherforecastsoftwarebasedontheAndroidplatform.Keywords:Android;weatherforecast;smartphoneplat(yī)form目錄TOC\o”1—3"\h\z\uHYPERLINK\l”_Toc345586463”1系統(tǒng)概述PAGEREF_Toc345586463\h11.1研究?jī)?nèi)容PAGEREF_Toc345586464\h11.2研究意義PAGEREF_Toc345586465\h1HYPERLINK\l"_Toc345586466"1。3研究現(xiàn)狀和發(fā)展趨勢(shì)PAGEREF_Toc345586466\h1HYPERLINK\l"_Toc345586467”2系統(tǒng)分析PAGEREF_Toc345586467\h4HYPERLINKxmlns:xsd=”http:///2001/XMLSchema”

xmlns="http://WebXml。com.cn/”><string〉湖北</string><string>孝感〈/string>〈string>57482</string〉<string>57482.jpg</string>〈string〉2013-1-116:11:23</string><string〉-3℃/10℃</string><string〉1月1日多云〈/string>〈string〉無(wú)持續(xù)風(fēng)向微風(fēng)〈/string><string>1。gif〈/string><string〉1.gif</string〉<string>今日天氣實(shí)況:氣溫:11℃;風(fēng)向/風(fēng)力:南風(fēng)2級(jí);濕度:40%;空氣質(zhì)量:中;紫外線強(qiáng)度:最弱</string〉〈string>穿衣指數(shù):暫缺.過(guò)敏指數(shù):天氣條件極不易誘發(fā)過(guò)敏,可放心外出,享受生活。運(yùn)動(dòng)指數(shù):天氣較好,但考慮天氣寒冷,推薦您進(jìn)行室內(nèi)運(yùn)動(dòng),若在戶外運(yùn)動(dòng)請(qǐng)注意保暖并做好準(zhǔn)備活動(dòng)。洗車(chē)指數(shù):較適宜洗車(chē),未來(lái)一天無(wú)雨,風(fēng)力較小,擦洗一新的汽車(chē)至少能保持一天.晾曬指數(shù):天氣不錯(cuò),午后溫暖的陽(yáng)光仍能滿足你驅(qū)潮消霉殺菌的晾曬需求。旅游指數(shù):多云,有時(shí)云會(huì)遮擋住陽(yáng)光,但絲毫不會(huì)影響您出行的心情。溫度適宜又有微風(fēng)相伴,很適宜旅游。路況指數(shù):天氣較好,路面比較干燥,路況較好.舒適度指數(shù):天氣較好,早晚會(huì)感覺(jué)偏涼,午后舒適、宜人??諝馕廴局笖?shù):氣象條件對(duì)空氣污染物稀釋、擴(kuò)散和清除無(wú)明顯影響,易感人群應(yīng)適當(dāng)減少室外活動(dòng)時(shí)間。紫外線指數(shù):屬弱紫外線輻射天氣,無(wú)需特別防護(hù)。若長(zhǎng)期在戶外,建議涂擦SPF在8—12之間的防曬護(hù)膚品。</string>〈string>—1℃/3℃〈/string>〈string>1月2日多云轉(zhuǎn)陰</string〉<string〉北風(fēng)3-4級(jí)</string>〈string>1.gif</string><string>2.gif</string><string>—1℃/1℃〈/string>〈string>1月3日陰轉(zhuǎn)雨夾雪〈/string><string〉北風(fēng)3-4級(jí)轉(zhuǎn)無(wú)持續(xù)風(fēng)向微風(fēng)</string><string>2。gif</string><string>6.gif</string><string>位于湖北省東北部,南臨省會(huì)武漢市,北與河南、隨州交界,西接天門(mén)、仙桃、京山等縣市,東連黃岡市的紅安縣和武漢市的黃陂區(qū)。因東漢孝子董永行孝感天而得名。孝感市是改革開(kāi)放中發(fā)展起來(lái)的新興中等城市,轄孝南區(qū)、漢川市、應(yīng)城市、安陸市和云夢(mèng)縣、大悟縣、孝昌縣;國(guó)土面積11560平方公里,總?cè)丝冢担?萬(wàn)人。孝感是楚文化的重要發(fā)祥地之一.周代貳國(guó)、軫國(guó)、鄖國(guó)都建都于此。秦代竹簡(jiǎn)、秦漢漆器、東漢陶樓等國(guó)寶文物和楚王城等遺址展示了孝感絢麗多財(cái)?shù)墓糯幕?。剪紙、皮影、膏塑等傳統(tǒng)文化藝術(shù)源源流長(zhǎng).孝感市屬亞熱帶大陸性季風(fēng)氣候,四季分明,雨量充沛,溫暖濕潤(rùn),光照充足。全年主導(dǎo)風(fēng)向?yàn)闁|南風(fēng),年均氣溫在15.5—16.5°C之間。景觀:大洪山、白水寺、白云泉、石刻題記、董永故里、鄂豫邊區(qū)革命烈士陵園、高掛三潭、擂鼓墩古墓群?!?string></ArrayOfString>從上面天氣信息xml文件看出,有用的天氣信息都在〈string〉</string〉標(biāo)簽中,我們用pull解析器不斷解析,并保存string標(biāo)簽中的內(nèi)容便可以得到天氣信息。while(event!=XmlPullParser。END_DOCUMENT){?? switch(event){ ??caseX(qián)mlPullParser.START_TAG: ??if(”string"。equals(pullParser.getName())){? weat(yī)herInfos。add(pullParser.nextText()); ??}??? break;? ?} ? event=pullParser。next();??}4。3主要功能代碼本項(xiàng)目使用的代碼較多,本部分對(duì)天氣預(yù)報(bào)項(xiàng)目中核心代碼進(jìn)行解析,這部分代碼能夠完成天氣預(yù)報(bào)的查詢與顯示的基本功能,另外一部分代碼則實(shí)現(xiàn)的了能夠與用戶更好的交互,增加應(yīng)用的界面美觀的功能。4.3。1獲取天氣數(shù)據(jù)從http://www.webxml.com。cn/提供的WebService中獲取的天氣數(shù)據(jù),數(shù)據(jù)的獲取地址為:http://www.webxml。com.cn/WebServices/WeatherWebService.a(chǎn)smx代碼如下:/**通過(guò)城市名稱查詢天氣情況,并調(diào)用保存天氣函數(shù) * *@paramcityName城市名?*@return獲取成功則返回true,否則false?*@throwsException?*/publicbooleanqueryWeather(StringcityName)throwsException{??finalStringWEATHER_CITY=? ? "http://www.webxml。com.cn/WebServices/WeatherWebService。asmx”;? Stringsoap=readSoap();??soap=soap。replaceAll(”\\$cityNameaa”,cityName); byte[]entity=soap.getBytes();? Stringpath=WEATHER_CITY;??HttpURLConnectionconn=(HttpURLConnection)newURL(path)。openConnection();??conn.setConnectTimeout(5000);??conn。setRequestMethod("POST”); ?conn.setDoOutput(true);? conn。setRequestProperty(”Content—Type”,”application/soap+xml;charset=utf-8"); ?conn。setRequestProperty("Content—Length",String.valueOf(entity。length));? conn.getOutputStream().write(entity);??if(conn.getResponseCode()==200){ ?//保存天氣信息到xml文件 saveWeatherInfo(conn.getInputStream(),cityName);?? returntrue; ?? ??} ?returnfalse;}readSoap方法privatestaticStringreadSoap()throwsException{? InputStreaminputStream=QueryWeatherService。class。getClassLoader().getResourceAsStream("soap12.xml"); ?byte[]data=StreamTool.read(inputStream);? returnnewString(data);?}通過(guò)readSoap方法讀取src下soap12.xml文件,得到訪問(wèn)天氣預(yù)報(bào)的webService的標(biāo)準(zhǔn)天氣交互格式,查詢天氣時(shí)將xml中指定的城市名稱換成實(shí)際要查詢的天氣預(yù)報(bào)的城市名,然后提交查詢.然后獲取到天氣信息的輸入流對(duì)象。4.3.2網(wǎng)絡(luò)檢查publicstaticbooleanckeck(Contextcontext){??ConnectivityManagercon=(ConnectivityManager)context???.getSystemService(Context。CONNECTIVITY_SERVICE); ?NetworkInfonetworkinfo=con。getActiveNetworkInfo(); if(networkinfo==null||!networkinfo.isConnected()){ //當(dāng)前網(wǎng)絡(luò)不可用? returnfalse;??}? returntrue;?}檢查設(shè)備當(dāng)前是否接入網(wǎng)絡(luò),使用此功能需要在AndroidManifest。xml中添加訪訪問(wèn)權(quán)限:〈!--允許程序打開(kāi)網(wǎng)絡(luò)套接字--><uses—permissionandroid:name="android.permission.INTERNET"/>〈!—-允許程序訪問(wèn)有關(guān)GSM網(wǎng)絡(luò)信息--〉〈uses-permissionandroid:name="android。permission.ACCESS_NETWORK_STATE"/〉4.3.3定時(shí)更新時(shí)間本程序一啟動(dòng)就會(huì)啟動(dòng)就會(huì)查看用戶偏好設(shè)置中用戶是否啟用自動(dòng)更新天氣服務(wù),若啟用,程序會(huì)啟動(dòng)TimeService這個(gè)后臺(tái)服務(wù),按照用戶設(shè)置進(jìn)行天氣信息更新。核心代碼如下:AlarmManageralarmManager=(AlarmManager)getSystemService(Context.ALARM_SERVICE);alarmManager。set(AlarmManager。RTC_WAKEUP,now+updateMilis,pendingIntent);至此,后臺(tái)服務(wù)介紹完畢,最后還需要在AndroidManifest.xml文件中注冊(cè)后臺(tái)服務(wù).〈serviceandroid:name=”ForecastService”></service><serviceandroid:name=”ForecastTimeService"></service>4.3。4ViewFlipper手勢(shì)監(jiān)聽(tīng)七彩天氣主界面的Activity實(shí)現(xiàn)了OnGestureListener接口,下面onFling方法就是OnGestureListener中的一個(gè)方法,該方法實(shí)現(xiàn)了viewFlipper對(duì)滑動(dòng)手勢(shì)的監(jiān)聽(tīng),并完成滑動(dòng)切換效果.onFling中兩個(gè)MotionEvent參數(shù)分別是用戶做滑動(dòng)手勢(shì)時(shí),觸屏的起點(diǎn)位置和終點(diǎn)位置,通過(guò)getX()方法取出觸點(diǎn)的X軸坐標(biāo),計(jì)算終點(diǎn)X軸坐標(biāo)與起點(diǎn)X軸坐標(biāo),差值大于100dp,則認(rèn)為用戶使用滑動(dòng)手勢(shì),通過(guò)差值的正負(fù)來(lái)判斷用戶需要向左滑動(dòng)還是向右滑動(dòng),如果差值為正則從左向右滑動(dòng),反之從右向左滑動(dòng)。@Override publicbooleanonFling(MotionEvente1,MotionEvente2,floatvelocityX,?? float(yī)velocityY){ if(e2.getX()-e1.getX()〉100){//從左向右滑動(dòng)(左進(jìn)右出) ? if(myViewFlipper。isFlipping()){//如果ViewFlipper正在滑動(dòng),則不劃動(dòng)到下一頁(yè),沒(méi)有實(shí)現(xiàn) ? System。out.println("myViewFlipper.isFlipping");? returntrue; ? }? ?AnimationrInAnim=AnimationUtils.loadAnimat(yī)ion(Weat(yī)herActivity.this, ??R.a(chǎn)nim.push_right_in);//向右滑動(dòng)左側(cè)進(jìn)入的漸變效果(alpha0。1—>1.0) ? AnimationrOutAnim=Animat(yī)ionUtils.loadAnimation(WeatherActivity。this,? ??R.a(chǎn)nim.push_right_out);//向右滑動(dòng)右側(cè)滑出的漸變效果(alpha1.0—〉0。1)???myViewFlipper。setInAnimat(yī)ion(rInAnim);? ?myViewFlipper。setOutAnimation(rOutAnim);???myViewFlipper.showPrevious();? ?returntrue; }elseif(e2。getX()-e1。getX()〈-100){//從右向左滑動(dòng)(右進(jìn)左出)?? if(myViewFlipper。isFlipping()){//如果ViewFlipper正在滑動(dòng),則不劃動(dòng)到下一頁(yè)?? returntrue;? } ?AnimationlInAnim=AnimationUtils。loadAnimation(Weat(yī)herActivity.this, ? ?R。anim.push_left_in);//向左滑動(dòng)左側(cè)進(jìn)入的漸變效果(alpha0。1->1.0) ??AnimationlOutAnim=AnimationUtils.loadAnimation(WeatherActivity.this,?? R.anim.push_left_out);//向左滑動(dòng)右側(cè)滑出的漸變效果(alpha1.0->0。1)? myViewFlipper.setInAnimation(lInAnim); ? myViewFlipper。setOutAnimation(lOutAnim);? ?myViewFlipper.showNext(); ??returntrue; ?}? returntrue; }4.3。5城市管理中城市點(diǎn)擊事件城市管理中采用GridView以網(wǎng)格形式展現(xiàn)給用戶9個(gè)城市管理區(qū)域,用戶在這9個(gè)區(qū)域中可以自由添加或刪除關(guān)注的城市。GridViewItemClickListener中寫(xiě)了當(dāng)GridView中某一個(gè)itme被點(diǎn)擊時(shí)所做出想響應(yīng).當(dāng)用戶點(diǎn)擊的位置對(duì)應(yīng)了一個(gè)用戶已經(jīng)關(guān)注的城市(即觸點(diǎn)在“+”前面),程序會(huì)先將本城市設(shè)定為首要城市,然后發(fā)送UI更新消息,更新城市天氣界面,最后將界面焦點(diǎn)自動(dòng)定位到城市天氣頁(yè)面;如果點(diǎn)擊位置對(duì)應(yīng)的是“+”,則彈出添加城市對(duì)話框;如果點(diǎn)擊位置在“+”之后,程序不會(huì)響應(yīng)這個(gè)事件。classGridViewItemClickListenerimplementsOnItemClickListener{? publicvoidonItemClick(AdapterView<?〉arg0,Viewarg1,intposition,??? longarg3){? ?System。out.println("GridViewItemClickListener");? ?preferencesService=newPreferencesService(w_context);? //得出當(dāng)前已經(jīng)設(shè)定的城市數(shù)目?? setCtiyNum=preferencesService.nowCityNum();???//如果點(diǎn)擊的位置小于當(dāng)前設(shè)定城市的數(shù)目,跳轉(zhuǎn)到position指定的城市天氣界面? if(position<setCtiyNum){????//添加代碼,跳到城市天氣那一頁(yè),并設(shè)定首要城市為選定的城市????StringselectCityName=preferencesService.getCityNameByCityNum(position+1);?? primaryCity=selectCityName;? preferencesService.setPrimaryCity(selectCityName); ? isParseWeather=getWeatherFromXML();//嘗試解析primaryCity天氣情況 ? if(!isParseWeat(yī)her){//如果不存在天氣文件,更新天氣,更新天氣完畢發(fā)送刷新消息? ???refreshWeather(primaryCity); ? ?}? ??//解析成功,發(fā)送更新第一個(gè)界面? Messagemsg=newMessage();? ?msg.what=1; ?myHandler.sendMessage(msg);? ??//跳到第一頁(yè) ?? myViewFlipper.setDisplayedChild(0);? ?}???//如果點(diǎn)擊的位置等于當(dāng)前設(shè)定城市的數(shù)目,跳轉(zhuǎn)到添加城市界面 ??elseif(position==setCtiyNum){ ???AddCityDialogshowDialog=newAddCityDialog(w_context,myHandler);//創(chuàng)建類(lèi)對(duì)象 ?showDialog。Creat(yī)eDialog(ADD);//創(chuàng)建需要的dialog }//如果點(diǎn)擊的位置大于當(dāng)前設(shè)定城市的數(shù)目,不作處理?? }}4.4主要界面結(jié)構(gòu)布局代碼在用戶界面設(shè)計(jì)上,采用了ViewFlipper框架結(jié)構(gòu),提供直觀的交互操作以及體驗(yàn)良好的滑動(dòng)效果。4.4。1ViewFlipper框架結(jié)構(gòu)ViewFlipper中定義了四個(gè)界面分別是城市天氣、城市管理、生活指數(shù)、城市介紹,這四個(gè)界面是與用戶交互天氣信息最主要的界面.下面是的布局文件代碼。view_paper。xml<?xmlversion="1.0"encoding="utf—8"?>〈ViewFlipperxmlns:android=”http://schemas.a(chǎn)ndroid.com/apk/res/android"android:id="@+id/myViewFlipper"android:layout_width="fill_parent"?android:layout_height="fill_parent"?android:background="@drawable/bg_weather"〉〈includeandroid:id="@+id/weaehers”layout="@layout/city_weather”/><includeandroid:id=”@+id/citySetting"layout="@layout/city_setting”/><includeandroid:id=”@+id/environment”layout="@layout/city_environment”/〉<includeandroid:id=”@+id/cityIntro"layout="@layout/city_intro"/〉〈/ViewFlipper〉4。4.2城市管理界面城市管理界面以一個(gè)GridView顯示用戶已經(jīng)關(guān)注的城市,沒(méi)有關(guān)注的城市用空白表示,下面是城市管理界面布局文件的主要代碼:city_setting.xml<GridViewandroid:id="@+id/select_city"android:layout_width=”fill_parent"android:layout_height="fill_parent”android:gravity="center"android:horizontalSpacing="10dp"android:numColumns="3”android:verticalSpacing="18dp"android:columnWidth="120dp"〉</GridView〉4.4。3生活指數(shù)用戶可以用選擇列表選自自己關(guān)心的生活指數(shù)信息,下面是生活指數(shù)頁(yè)面布局文件主要部分。city_environment。xml<Relat(yī)iveLayoutandroid:layout_width="fill_parent”android:layout_h(yuǎn)eight="wrap_content"〉<LinearLayoutandroid:layout_width=”fill_parent" android:layout_height="wrap_content" android:orientation=”vertical">〈RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content"><Spinnerandroid:id="@+id/Spinner"? android:layout_width=”wrap_content”??android:layout_height=”wrap_content"? android:layout_alignParentRight="true"/〉?</RelativeLayout〉?<TextView android:id="@+id/CityLiving"?android:layout_marginTop="10dp” ?android:layout_width="fill_parent” ?android:layout_h(yuǎn)eight="wrap_content"? android:textSize=”16dp"/〉??〈/LinearLayout〉〈ImageViewandroid:id=”@+id/image"android:layout_width="wrap_content"android:layout_height="wrap_content”android:layout_alignParentBottom="true"android:src="@drawable/chenlian"/〉</RelativeLayout>4.4.4城市簡(jiǎn)介城市簡(jiǎn)介定義了一個(gè)ScrollView(卷軸視圖)展現(xiàn)城市簡(jiǎn)介信息,ScrollView能夠根據(jù)城市簡(jiǎn)介的內(nèi)容多少自動(dòng)收縮,始終保持展現(xiàn)在用戶眼前的事是一屏,當(dāng)城市簡(jiǎn)介內(nèi)容超過(guò)一屏?xí)r,視圖將以卷軸方式顯示內(nèi)容,保持界面美觀。city_intro。xml<ScrollViewandroid:id=”@+id/cityInfoScrollView"android:layout_marginTop=”8dp"android:layout_marginBottom="20dp”android:layout_width=”fill_parent”android:layout_h(yuǎn)eight=”wrap_content">〈TextViewandroid:id=”@+id/CityInfo” android:layout_width="fill_parent" ?android:layout_height=”wrap_content"??android:textSize="16dp”/〉〈/ScrollView>5系統(tǒng)測(cè)試至此已經(jīng)完成了Weather工程的代碼編寫(xiě)工作,在這一章節(jié)對(duì)Weather工程進(jìn)行測(cè)試,步驟及結(jié)果如下:將軟件安裝到手機(jī)上,點(diǎn)擊weather啟動(dòng)程序,程序啟動(dòng)后,首次使用本程序會(huì)彈出添加城市對(duì)話框.圖9添加城市界面通過(guò)輸入框輸入城市名稱或直接點(diǎn)擊熱門(mén)城市,在這里我輸入“孝感”,設(shè)定關(guān)注城市后,如果手機(jī)接入網(wǎng)絡(luò),則會(huì)自動(dòng)加載天氣預(yù)報(bào).圖10城市天氣界面用鼠標(biāo)滑動(dòng)屏幕,將焦點(diǎn)切換到“城市介紹”頁(yè)面圖11城市介紹界面用鼠標(biāo)滑動(dòng)屏幕,將焦點(diǎn)切換到“生活指數(shù)”頁(yè)面,通過(guò)下拉列表查看關(guān)心的生活指數(shù),這里我查看“空氣指數(shù)”圖12生活指數(shù)界面用鼠標(biāo)滑動(dòng)屏幕,將焦點(diǎn)切換到“城市管理”頁(yè)面,目前只有孝感一個(gè)城市,我們可以點(diǎn)擊加號(hào)彈出添加城市的對(duì)話框,然后添加城市,由于此時(shí)添加的城市不是首要關(guān)注城市,所以不會(huì)自動(dòng)加載天氣信息。圖13城市管理界面點(diǎn)擊“北京"可以將北京設(shè)為首要關(guān)注城市,程序會(huì)自動(dòng)加載首要關(guān)注城市的天氣信息(當(dāng)然如果以前加載過(guò)該城市的天氣信息,系統(tǒng)不會(huì)再次自動(dòng)加載),并將界面焦點(diǎn)自動(dòng)滑動(dòng)到“城市天氣"界面圖14城市天氣界面用鼠標(biāo)滑動(dòng)屏幕,將焦點(diǎn)切換到“城市管理"頁(yè)面,長(zhǎng)按“北京”的那個(gè)item方框,會(huì)彈出城市操作對(duì)話框,可以對(duì)該城市進(jìn)行“更新天氣”、“更換城市"、“刪除城市”操作。圖15城市操作界面這里我點(diǎn)擊“刪除城市”會(huì)彈出提示對(duì)話框,點(diǎn)擊“確定”刪除城市,點(diǎn)擊“取消"取消刪除城市。這里點(diǎn)擊“確定”.圖16刪除城市提示界面由于之前“北京”被設(shè)定為首要關(guān)注城市,被刪除時(shí),系統(tǒng)會(huì)自動(dòng)把排在第一的“孝感"設(shè)定為首要城市圖17刪除城市后跳轉(zhuǎn)到城市天氣界面點(diǎn)擊menu按鈕彈出菜單,菜單中有“設(shè)置"、“關(guān)于”、“退出"三個(gè)選項(xiàng),“設(shè)置”可進(jìn)行自動(dòng)更新設(shè)定,“關(guān)于”顯示本程序及作者相關(guān)信息,“退出”將退出程序。這里點(diǎn)擊“設(shè)置”,彈出的自動(dòng)更新設(shè)置對(duì)話框可以設(shè)定程序自動(dòng)更新天氣。圖18定時(shí)更新設(shè)置界面總結(jié)經(jīng)過(guò)幾個(gè)月的努力,基于Android平臺(tái)手機(jī)氣象軟件終于完成了。在做這個(gè)畢業(yè)設(shè)計(jì)之前,我自學(xué)了一段時(shí)間的Android應(yīng)用程序開(kāi)發(fā),對(duì)常用控件、Android四大組件及Activity生命周期有一定了解.當(dāng)我真正去完成這個(gè)畢業(yè)設(shè)計(jì)時(shí),我發(fā)現(xiàn)我之前自學(xué)的東西遠(yuǎn)遠(yuǎn)不夠完成這個(gè)天氣預(yù)報(bào)項(xiàng)目,但是我并不灰心,設(shè)計(jì)好軟件開(kāi)發(fā)流程后,我分塊開(kāi)發(fā)軟件,并針對(duì)這塊需要的知識(shí)進(jìn)行集中學(xué)習(xí),將以前所學(xué)的分散的、孤立的知識(shí)點(diǎn)融合在一起,并學(xué)會(huì)如何去處理不同控件組合到一起后產(chǎn)生的新問(wèn)題,并記錄這些問(wèn)題的處理方式,以便日后查看。在這個(gè)過(guò)程中,我學(xué)會(huì)了很多知識(shí),比如ViewFlipper、Broadcast以及BroadcastReceive等高級(jí)組件的使用,同時(shí)對(duì)Android應(yīng)用開(kāi)發(fā)基礎(chǔ)知識(shí)重新進(jìn)行了一次系統(tǒng)學(xué)習(xí),使我對(duì)Android應(yīng)用開(kāi)發(fā)基本知識(shí)有了更進(jìn)一步的理解.在完成這個(gè)畢業(yè)設(shè)計(jì)的時(shí)候,我遇到了很多困難,由于我的Android是自學(xué)的,對(duì)知識(shí)掌握不夠全面,經(jīng)常遇到一些無(wú)從下手的問(wèn)題,這讓我學(xué)到更多,當(dāng)我遇到問(wèn)題時(shí),我首先會(huì)到網(wǎng)絡(luò)上查看能夠幫助自己的信息,如果百度解決不了問(wèn)題,我會(huì)在我加的幾個(gè)Android技術(shù)討論群中尋求幫助,與他們討論問(wèn)題產(chǎn)生的原因及解決方式,深入去了解他們的運(yùn)行機(jī)制,這又讓我結(jié)識(shí)了一些Android技術(shù)方面的朋友,體會(huì)到了互幫互助的精神。這是我覺(jué)得在本次天氣預(yù)報(bào)開(kāi)發(fā)中學(xué)到的最受益的東西。雖然,這個(gè)軟件代碼的健壯行還目前運(yùn)行良好,但是我認(rèn)為很差,在整個(gè)工程的構(gòu)思方面也不足,用戶操作界面還不夠靈活,這些問(wèn)題還需要今后逐一解決。與此同時(shí),這個(gè)軟件還可以進(jìn)一步擴(kuò)展,例如“關(guān)注城市新聞推送”、“生活百寶箱”等,使功能更加強(qiáng)大,帶給用戶更好的體驗(yàn)與生活的便捷。參考文獻(xiàn)[1]靳巖,姚尚朗.GoogleAndroid開(kāi)發(fā)入門(mén)與實(shí)戰(zhàn).人民郵電出版社[2]景保玉.2010中國(guó)移動(dòng)應(yīng)用開(kāi)發(fā)現(xiàn)狀與趨勢(shì)大調(diào)查,2011年01月12日[3]MichaelJ.Young.輕松搞定XML林嘉勝譯2001年01月08日[4](英)HerbertSchildtJava參考大全(J2SE5Edition),北京:清華大學(xué)出版社[5]王向輝,張國(guó)印,沈潔.Android應(yīng)用程序開(kāi)發(fā).北京:清華大學(xué)出版社,2010年3月[6]楊豐盛。Android應(yīng)用開(kāi)發(fā)揭秘.北京:機(jī)械工業(yè)出版社,2010年1月[7]ZhuTingting,TheSynthesisoftheApplicationSoftwaresBasedonAndroidOperatingSystem,Computer&Telecommunication,2011年01期,23—25[8]杜艷綏.基于Android平臺(tái)架構(gòu)應(yīng)用程序開(kāi)發(fā)研究[J]電腦編程技巧與維護(hù),2013,(06).致謝本課題的設(shè)計(jì)和論文撰寫(xiě)過(guò)程中,我的指導(dǎo)老師XX老師給于了極大的幫助,為我提供了大量的相關(guān)資料。在完成課題設(shè)計(jì)的過(guò)程中,老師在總體設(shè)計(jì)思想上給予了許多重要的實(shí)際指導(dǎo),拓展了我的思路,使得我得以完成了任務(wù).在此,我對(duì)焦家林老師的指導(dǎo)表示衷心的感謝。同時(shí),我也衷心的感謝XX學(xué)校四年來(lái)對(duì)我的精心栽培,良好的校園環(huán)境、精良的師資隊(duì)伍、濃厚的校園文化都讓我深深懷念,都為我進(jìn)入社會(huì)提供了莫大的幫助。Y:是TBD:不確定N:不是NA:不適用檢查項(xiàng)Y/TBD/N/NA清晰性

系統(tǒng)的目標(biāo)是否已定義?

是否對(duì)關(guān)鍵術(shù)語(yǔ)和縮略語(yǔ)進(jìn)行定義和描述?

所使用的術(shù)語(yǔ)是否和用戶/客戶使用的一致?

需求的描述是否清晰,不含糊?

是否有對(duì)整套系統(tǒng)進(jìn)行功能概述?

是否已詳細(xì)說(shuō)明了軟件環(huán)境(共存的軟件)和硬件環(huán)境(特定的配置)?

如果有會(huì)影響實(shí)施的假設(shè)情況,是否已經(jīng)聲明?

是否已經(jīng)對(duì)每個(gè)業(yè)務(wù)邏輯進(jìn)行輸入、輸出以及過(guò)程的詳細(xì)說(shuō)明?

完整性

是否列出了系統(tǒng)所必須的依賴、假設(shè)以及約束?

是否對(duì)每個(gè)提交物或階段實(shí)施都進(jìn)行了需求說(shuō)明?

需求說(shuō)明書(shū)是否已包括了主要的質(zhì)量屬性,例如有效性、高效性、靈活性、完整性、互操作性、可靠性、健壯性、可用性、可維護(hù)性、可移植性、可重用性和可測(cè)試性。

依從性

該文檔是否遵守了該項(xiàng)目的文檔編寫(xiě)標(biāo)準(zhǔn)?

一致性

需求說(shuō)明是否存在直接相互矛盾的條目?

本需求說(shuō)明書(shū)是否與相關(guān)需求素材一致?

可行性

所描述的所有功能是否必要并充分地滿足了客戶/系統(tǒng)目標(biāo)?

需求說(shuō)明書(shū)的描述的詳細(xì)程度是否足以進(jìn)行詳細(xì)的設(shè)計(jì)?

已知的限制(局限)是否已經(jīng)詳細(xì)說(shuō)明?

是否已確定每個(gè)需求的優(yōu)先級(jí)別?

可管理性

是否將需求分別陳述,因此它們是獨(dú)立的并且是可檢查的?

是否所有需求都可以回溯到相應(yīng)的需求素材,反之亦然?

是否已詳細(xì)說(shuō)明需求變更的過(guò)程?

需求規(guī)格說(shuō)明書(shū)檢查表概要設(shè)計(jì)檢查表Y:是TBD:不確定N:不是NA:不適用檢查項(xiàng)Y/TBD/N/NA清晰性

是否所設(shè)計(jì)的架構(gòu),包括數(shù)據(jù)流,控制流和接口,被清楚地表達(dá)了?

是否所有的假設(shè)、約束、策略及依賴都被記錄在本文檔了?

是否定義了總體設(shè)計(jì)目標(biāo)?

完整性

是否所有的以前的TBD(待確定條目)都已經(jīng)被解決了?

是否設(shè)計(jì)已經(jīng)可以支持本文檔中遺留的TBD有可能帶來(lái)的變更?

是否所有的TBD的影響都已經(jīng)被評(píng)估了?

是否仍存在可能不可行的設(shè)計(jì)部分?

是否已記錄設(shè)計(jì)時(shí)的權(quán)衡考慮?該文件是否包括了權(quán)衡選擇的標(biāo)準(zhǔn)和不選擇其它方案的原因?

依從性

是否遵守了項(xiàng)目的文檔編寫(xiě)標(biāo)準(zhǔn)?

一致性

數(shù)據(jù)元素、流程和對(duì)象的命名和使用在整套系統(tǒng)和外部接口之間是否一致?

該設(shè)計(jì)是否反映了實(shí)際操作環(huán)境(硬件、軟件、支持軟件)?

可行性

從進(jìn)度、預(yù)算和技術(shù)角度上看該設(shè)計(jì)是否可行?

是否存在錯(cuò)誤的、缺少的或不完整的邏輯?

數(shù)據(jù)使用

所有復(fù)合數(shù)據(jù)元素、參數(shù)以及對(duì)象的概念是否都已文檔化?

是否還有任何需要的但還沒(méi)有定義的數(shù)據(jù)結(jié)構(gòu),反之亦然?

是否已描述最低級(jí)別數(shù)據(jù)元素?是否已詳細(xì)說(shuō)明取值范圍?

功能性

是否對(duì)每一下級(jí)模塊進(jìn)行了概要算法說(shuō)明?

所選擇的設(shè)計(jì)和算法能否滿足所有的需求?

接口

操作界面的設(shè)計(jì)是否有為用戶考慮(例如:詞匯、使用信息和進(jìn)入的簡(jiǎn)易)?

是否已描述界面的功能特性?

界面將有利于問(wèn)題解決嗎?

是否所有界面都互相一致,與其它模塊一致,以及和更高級(jí)別文檔中的需求一致?

是否所有的界面都提供了所要求的信息?

是否已說(shuō)明內(nèi)部各界面之間的關(guān)系?

界面的數(shù)量和復(fù)雜程度是否已減少到最小?

可維護(hù)性

該設(shè)計(jì)是否是模塊化的?

這些模塊具有高內(nèi)聚度和低耦合度?

是否已經(jīng)對(duì)繼承設(shè)計(jì)、代碼或先前選擇工具的使用進(jìn)行了詳細(xì)說(shuō)明?

性能

主要性能參數(shù)是否已被詳細(xì)說(shuō)明(例如:實(shí)時(shí)、速度要求、磁盤(pán)輸入/輸出接口等)?

可靠性

該設(shè)計(jì)能夠提供錯(cuò)誤檢測(cè)和恢復(fù)(例如:輸入輸出檢查)?

是否已考慮非正常情況?

是否所有的錯(cuò)誤情況都被完整和準(zhǔn)確地說(shuō)明?

該設(shè)計(jì)是否滿足該系統(tǒng)進(jìn)行集成時(shí)所遵守的約定?

易測(cè)性

是否能夠?qū)υ撎紫到y(tǒng)進(jìn)行測(cè)試、演示、分析或檢查來(lái)說(shuō)明它是滿足需求的?

該套系統(tǒng)是否能用增量型的方法來(lái)集成和測(cè)試?

可追溯性

是否各部分的設(shè)計(jì)都能追溯到需求說(shuō)明書(shū)的需求?

是否所有的設(shè)計(jì)決策都能追溯到原來(lái)確定的權(quán)衡因素?

所繼承設(shè)計(jì)的已知風(fēng)險(xiǎn)是否已確定和分析?

詳細(xì)設(shè)計(jì)檢查表Y:是TBD:不確定N:不是NA:不適用檢查項(xiàng)Y/TBD/N/NA清晰性

所有單元或過(guò)程的目的是否都已文檔化?

包括了數(shù)據(jù)流、控制流和接口的單元設(shè)計(jì)是否已清晰的說(shuō)明?

完整性

是否已定義和初始化所有的變量、指針和常量?

是否已描述單元的全部功能?

是否已詳細(xì)說(shuō)明用來(lái)實(shí)現(xiàn)該單元的關(guān)鍵算法(例如:用自然語(yǔ)言或PDL)?

是否已列出該單元的調(diào)用?

依從性

該文檔是否遵循了該項(xiàng)目已文檔化的標(biāo)準(zhǔn)?

是否采用了所要求的方法和工具來(lái)進(jìn)行單元設(shè)計(jì)?

一致性

數(shù)據(jù)元素的命名和使用在整個(gè)單元和單元接口之間是否一致?

所有接口的設(shè)計(jì)是否互相一致并且和更高級(jí)別文檔一致?

正確性

是否處理所有條件(大于、等于、小于零、switch/case)?是否存在處理“casenotfound”的條件?

是否正確地規(guī)定了分支(邏輯沒(méi)有顛倒)?

數(shù)據(jù)使用

是否所有聲明的數(shù)據(jù)都被實(shí)際使用到?

是否所有該單元的數(shù)據(jù)結(jié)構(gòu)都被詳細(xì)說(shuō)明?

是否所有修改共享數(shù)據(jù)(或文件)的程序都考慮到了其它程序?qū)υ摴蚕頂?shù)據(jù)(或文件)的存取權(quán)限?

是否所有邏輯單元、時(shí)間標(biāo)志和同步標(biāo)志都被定義和初始化?

接口

接口參數(shù)在數(shù)量、類(lèi)型和順序上是否匹配?

是否所有的輸入和輸出都被正確定義和檢查?

是否傳遞參數(shù)序列都被清晰的描述?

是否所有參數(shù)和控制標(biāo)志由已描述的單元傳遞或返回?

是否詳細(xì)說(shuō)明了參數(shù)的度量單位、取值范圍、正確度和精度?

共享數(shù)據(jù)區(qū)域及其存取規(guī)定的映射是否一致?

可維護(hù)性

單元是否具有高內(nèi)聚度和低耦合度(例如:對(duì)該單元的更改不會(huì)在該單元有任何無(wú)法預(yù)料的影響并對(duì)其它單元的影響很小)?

性能

是否該單元的所有約束例(如過(guò)程時(shí)間和規(guī)模)都被詳細(xì)說(shuō)明?

可靠性

初始化是否使用到缺省值,缺省值是否正確?

是否在內(nèi)存訪問(wèn)的時(shí)候執(zhí)行了邊界檢查(例如:數(shù)組、數(shù)據(jù)結(jié)構(gòu)、指針等)來(lái)確保只是改變了目標(biāo)存儲(chǔ)位置?

是否執(zhí)行輸入、輸出、接口和結(jié)果的錯(cuò)誤檢查?

是否對(duì)所有錯(cuò)誤情況都發(fā)出有意義的信息?

對(duì)特殊情況返回的代碼是否和已規(guī)定的全局定義的返回代碼相匹配?

是否考慮到意外事件?

易測(cè)性

是否能夠?qū)γ總€(gè)單元進(jìn)行測(cè)試、演示、分析或檢查來(lái)說(shuō)明它們是滿足需求的?

該設(shè)計(jì)是否包含檢查點(diǎn)來(lái)幫助測(cè)試(例如:有條件的編譯代碼和數(shù)據(jù)聲明測(cè)試)?

是否所有的邏輯都能被測(cè)試?

是否已描述測(cè)試程序、測(cè)試數(shù)據(jù)集和測(cè)試結(jié)果?

可追溯性

是否設(shè)計(jì)的每一部分都能追溯到其它項(xiàng)目文檔的需求,也能追溯到更高級(jí)別文檔的需求?

是否所有的設(shè)計(jì)決定都能追溯到權(quán)衡考慮?

單元需求是否都能上溯到更高級(jí)別的文檔?更高級(jí)別文檔的需求是否已經(jīng)在單元中體

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論