




已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
新鄉(xiāng)學院計算機與信息工程學院項目實訓報告項目名稱天氣預報系統(tǒng)的設計與實現(xiàn)班 級2012級計算機科學與技術1班學 號姓 名指導教師2015年 12月29日目錄一、項目背景11.1 項目概述11.2 項目內(nèi)容1二、環(huán)境配置12.1 myeclipse開發(fā)工具12.2 Tomcat服務器2三、相關技術分析23.1 J2EE WEB應用的核心技術23.2 SSH框架技術23.3 數(shù)據(jù)庫3四、系統(tǒng)需求分析34.1目標和任務34.2系統(tǒng)功能性需求分析3五、系統(tǒng)功能界面45.1 設置預報城市界面45.2 天氣顯示界面55.3 桌面顯示界面7六、業(yè)務邏輯設計76.1、獲取城市數(shù)據(jù)庫76.2 可伸縮性列表的的構建與過濾8七、測試11八、總結15參考文獻16一、項目背景1.1 項目概述 隨著手機應用的日益普及和深化,隨時隨地了解未來幾天的天氣情況已經(jīng)成為一種趨勢。本項目要開發(fā)的是基于單機的天氣查詢系統(tǒng)。由于現(xiàn)代都市的快節(jié)奏,再天天守著電視機看雷打不動的天氣預報已經(jīng)變得越來越不現(xiàn)實了。因此,實現(xiàn)一個將各種天氣查詢服務功能集成起來的信息系統(tǒng)就顯得十分必要,即可以節(jié)省時間,又可以實現(xiàn)個性化的服務,減少不必要的等待和繁重的信息。開發(fā)的系統(tǒng)要求界面良好,方便直觀。方便用戶及時了解最新的天氣狀況1.2 項目內(nèi)容該項目是基于SSH框架實現(xiàn)一個實時顯示天氣狀況的系統(tǒng),該系統(tǒng)所研究的問題如下:(1) 系統(tǒng)運行平臺的選取。該系統(tǒng)采用JavaEE主流的框架來設計系統(tǒng)。(2) 確定系統(tǒng)具有的基本功能。該設計分為天氣顯示界面模塊、預報城市設置模塊、桌面小部件模塊三個模塊,天氣顯示模塊顯示指定城市三天內(nèi)的天氣狀況,預報城市設置模塊包括自動設置和手動設置,桌面小部件模塊可在手機桌面上添加小部件,顯示當前天氣與時間。(3)對系統(tǒng)進行詳細設計和分析。根據(jù)系統(tǒng)所實現(xiàn)的功能,進行模塊的設計,畫出系統(tǒng)的結構圖。二、環(huán)境配置該天氣預報系統(tǒng)采用SSH框架,所使用的開發(fā)工具是Myecplise然后再開發(fā)工具的基礎上進行Struts+Spring+Hibernate三大框架的搭建。具體的配置工具如下:2.1 myeclipse開發(fā)工具 MyEclipse是Eclipse的一個插件,是對Eclipse集成丌發(fā)環(huán)境的很好的擴展。 MyEclipse是針對J2EE項目和數(shù)據(jù)庫程序而設計的,因此利用它進行這方面的-開發(fā)將會對工作效率有很大的提高。作為J2EE集成丌發(fā)環(huán)境,它具有豐富的功能,在 MyEclipse環(huán)境中可以進行編碼、程序調(diào)試測試和項目發(fā)布工作,并對HTMI,Struts 、Spring、Hibernate等都支持。2.2 Tomcat服務器 Tomcat是有SUN公司開發(fā)一個可以運行JSP或Servlet容器,是基于Java的Web服務器,是作為Web服務器的組成部分存在的。Tomcat的工作模式流程:當它接收到客戶端的請求時,Tomcat調(diào)用ServletRequest對象把客戶端的請求內(nèi)容封裝起來,接著調(diào)用Servlet生命周期中的方法,完成Servlet這一過程,最后調(diào)用ServletResponse對象把Servlet執(zhí)行的結果封裝起來返回給客戶,這就是Tomcat工作一次的流程。Tomcat在運行時對系統(tǒng)資源要求很低,它具有良好的擴展性,擁有系統(tǒng)開發(fā)中常用到的郵件服務等功能和支持負載平衡。Tomcat進行更改或增加新的功能,因此Tomcat在程序員中越來越受到歡迎。三、相關技術分析3.1 J2EE WEB應用的核心技術 JSP是Sun公司主導開發(fā)的一種動態(tài)網(wǎng)頁設計技術,它設計的出發(fā)點是為了簡化Web編程的步驟和提高Web編程效率,要求JSP程序可以在各種服務器、不同瀏覽 器及開發(fā)工具工作。JSP技術也逐漸演變成服務器和各種開發(fā)工具的規(guī)范。 (1)生成的網(wǎng)頁的內(nèi)容與顯示格式分離 (2)組件的可重用性增強(3)JSP標識符簡化網(wǎng)頁開發(fā)3.2 SSH框架技術 運用框架可以提高系統(tǒng)的質(zhì)量和開發(fā)的速度,現(xiàn)在有許多基于J2EE設計的開源的框架,現(xiàn)在主流的開源框架技術有:升級后處理MVC層次的Struts2框架、具有控制反轉的 Spring框架以及ORM的Hibernate框架等。(1) Struts2框架Struts框架最早用于Web項目開發(fā)中,它是作為Java開發(fā)人員進行大型J2EE項目開發(fā)中使用到框架之一,Struts框架符合MVC設計模式,很好把模型、視圖和控制分離開來,它的工作原理是先用攔截器對HTTP請求信息進行攔截,然后在對請求信息中所包含的數(shù)據(jù)格式進行檢驗,字符進行編碼等操作,這類操作發(fā)生在MVC模式的控制部分之前,提前處理與邏輯關系不是太大的操作,就可以讓控制器專門處理業(yè)務邏輯和H1YrP請求的內(nèi)容,這種處理方式是對“松耦合”的很好體現(xiàn)。(2)Spring框架Spring是由Rod Johnson創(chuàng)建的一個開源框架,創(chuàng)建它的初衷是為解決開發(fā)復雜度高、企業(yè)級服務使用困難等問題,Spring框架可以替代EJB以前的地位而輕松的完 成任務。如果只認識Spring在服務器端進行開發(fā)優(yōu)勢,顯然還沒有對Spring有深刻的了解,從測試性、耦合性和簡便性上來說,Spring框架讓任何Java應用都可以從中受益。 (3)Hibernate框架Hibernate框架實現(xiàn)了對JDBC的封裝,負責對對象的持久化操作,它是數(shù)據(jù)庫和應用程序之問的橋梁。Hibernate框架編程技術的出現(xiàn)可以使Java編程人員用面向對象的思維來進行數(shù)據(jù)庫的操作,可以這樣說,能用到JDBC的地方都可以使Hibernate來代替,Hibernate既可以在客戶端的程序中使用,也可以在Web服務器端中使用。仔細研究發(fā)現(xiàn),JDBC編程中會有許多重復的代碼,增加了代碼的數(shù)量,而Hibernate可以解決這方面的問題,優(yōu)化持久層代碼。Hibernate的核心接口主要有Session、SessionFactory、Transaction、Query和Configuration這五個,在任何關于持久層的開發(fā)中都將離不開這些接口,實現(xiàn)對象的CRUD操作。 3.3 數(shù)據(jù)庫Mysql是一個小型的關系型數(shù)據(jù)庫管理系統(tǒng),Mysql同時還是一種關系數(shù)據(jù)庫管理系統(tǒng),關聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有的數(shù)據(jù)內(nèi)容放在一個大的倉庫內(nèi),這樣提高了速度和靈活性。MYSQL是SQL“結構化查詢語言”。SQL它是用于訪問數(shù)據(jù)庫中最常用的標準語言,由于體積小,速度快,總體擁有成本低,許多種中小型網(wǎng)站為了降低網(wǎng)站總體就會選擇mysql作為網(wǎng)站數(shù)據(jù)庫。四、系統(tǒng)需求分析4.1目標和任務根據(jù)功能的需求分析,此項目的功能應該具備一下幾點: 1、精確查選定位全國各城市未來幾天的天氣情況 2、系統(tǒng)要符合用戶查看信息習慣,界面設計優(yōu)美 3、系統(tǒng)要具備提醒功能,提醒用戶關注城市的天氣情況4.2系統(tǒng)功能性需求分析由上述的需求,現(xiàn)將系統(tǒng)分為三大模塊:天氣顯示界面模塊、預報城市設置模塊與 Widget桌面小部件模塊。各系統(tǒng)模塊功能如下:1、 天氣顯示界面模塊顯示指定城市三天內(nèi)的天氣狀況,包括日期、城市名稱、溫度、風力與當日的建議,用戶可通過按菜單鍵來顯示菜單更新當前天氣與設置天氣顯示的界面背景,以及跳轉至設置預報城市界面來更換預報城市。2、 預報城市設置模塊由自動設置預報城市與手動設置二部分組成,自動設置實現(xiàn) GPS定位功能,自動確定當前用戶所在地;而手動設置則通過可伸展性下拉列表單擊選擇系統(tǒng)數(shù)據(jù)庫中預存的城市來進行設置,同時為了方便用戶查找,支持以輸入框的形式來過濾查詢預報城市。當單擊選中城市時跳轉至天氣顯示界面,來顯示該城市當三天內(nèi)的天氣狀況;第一次運行時自動跳到該界面。3、 Widget桌面小部件模塊為了方便用戶實時了解天氣狀況,特別添加在 Android系統(tǒng)桌面上顯示當前天氣與時間的天氣小部件,使用戶拿起手機的第一時刻就能了解天氣,同時當用戶單擊小部件時,自動跳轉至天氣顯示界面,顯示三天內(nèi)的詳細天氣。五、系統(tǒng)功能界面5.1 設置預報城市界面1、 當?shù)谝淮芜\行程序時,跳轉至城市設置界面進行預報城市的選擇: 2、用戶可以通過單擊選擇“定位當前城市”的方式調(diào)用系統(tǒng) GPS功能自動定位預報城市:3、 用戶可通過輸入框過濾查詢當前系統(tǒng)中預存的城市:5.2 天氣顯示界面1、 選擇了預報城市后,系統(tǒng)跳轉至天氣顯示界面,顯示該城市三天內(nèi)的實時天氣:2、 在天氣界面中用戶可通過按菜單鍵來調(diào)出菜單,選擇城市,更新天氣與更新背景:5.3 桌面顯示界面六、業(yè)務邏輯設計6.1、獲取城市數(shù)據(jù)庫獲取全國各地的城市碼,是通過訪問中央氣象局網(wǎng)從省份直轄市到城鎮(zhèn)一級一級得到,獲得一個地區(qū)的城市碼總共需要訪問 4次網(wǎng)絡,分別如下:1、 訪問 /data5/city.xml得到省份直轄市列表與它的編號:01|北京,02|上海,03|天津,04|重慶,05|黑龍江,06|吉林,07|遼寧,08|內(nèi)蒙古.2、訪問 /data5/city.xml得到該省份直轄市的城市編號:1201|濟南,1202|青島,1203|淄博,1204|德州,1205|煙臺,1206|濰坊,.3、訪問 /data5/city.xml得到該城市的縣區(qū)編號:120101|濟南,120102|長清,120103|商河,120104|章丘,120105|平陰.4、 訪問 /data5/city.xml得到該縣區(qū)的城市編碼實現(xiàn)上述功能需要使用Android的網(wǎng)絡訪問技術,部分代碼如下:public void onCreate(Bundle savedInstanceState) setContentView(R.layout.main1);ETplace = (EditText) findViewById(R.id.place);query = (Button) findViewById(R.id.query);imView = (ImageView) findViewById(R.id.myImageView);placeName = (TextView) findViewById(R.id.tvPlace);query.setOnClickListener(new Button.OnClickListener() public void onClick(View v) try TvPlace = (TextView) findViewById(R.id.tvPlace);/String place = ETplace.getText().toString(); String place = CntoSpell.getFullSpell(ETplace.getText().toString(); 6.2 可伸縮性列表的的構建與過濾首先是對關鍵字進行判斷是否為空,如為空則由 values添加所有省份與城市,其中的 allGroups和 allChilds保存的是所有的省份與對應的城市,如果關鍵字 constraint不為空,則以省份為單位進行匹配,省份匹配的添加下面的所在城鎮(zhèn),如果不匹配,則進行步深入匹配城鎮(zhèn),添加符合條件的城鎮(zhèn)。部分代碼如下: /* * 根據(jù)ASCII碼到SpellMap中查找對應的拼音 * * param ascii * int 字符對應的ASCII * return String 拼音,首先判斷ASCII是否0& 0 & ascii 160) / 單字符 return String.valueOf(char) ascii); if (ascii -10247) / 不知道的字符 return null; Set keySet = spellMap.keySet(); Iterator it = keySet.iterator(); String spell0 = null; String spell = null; int asciiRang0 = -20319; int asciiRang; while (it.hasNext() spell = (String) it.next(); Object valObj = spellMap.get(spell); if (valObj instanceof Integer) asciiRang = (Integer) valObj).intValue(); if (ascii = asciiRang0 & ascii asciiRang) / 區(qū)間找到 return (spell0 = null) ? spell : spell0; else spell0 = spell; asciiRang0 = asciiRang; 6.3 GPS定位功能的實現(xiàn)1、 得到LocationManager系統(tǒng)定位服務管理者LocationManager locationManager = LocationManager)getSystemService(Context.LOCATION_SERVICE);2、 設置 Geocoder對象,過濾得到符合條件的 LocationProvider ,再由LocationProvider得到封裝經(jīng)緯度信息的 Location對象:/設置一個Criteria標準用于過濾LocationProvider Criteria criteria = new Criteria();criteria.setAltitudeRequired(false);criteria.setBearingRequired(false);String provider = locationManager.getBestProvider(criteria, true); 得到當前的位置對象Location location = locationManager.getLastKnownLocation(provider); double latitude = location.getLatitude(); /得到經(jīng)度ouble longitude = location.getLongitude(); /得到緯度3、得到經(jīng)緯度后再訪問 /maps/geo來得到含地址信息的XML文本內(nèi)容,并用自定義的 LocationXMParser工具類解析封裝得到此經(jīng)緯度對應的城市名。上面步驟返回的是一個 Map對象,其中封裝了從XML中解析得到的國家、省份、縣區(qū)和城市四個信息,在得到這些信息后,系統(tǒng)將與數(shù)據(jù)庫中預存的省份城市相比較,最終匹配得到該地區(qū)的城市碼完成GPS自動定位功能的實現(xiàn)。4、Widget窗體小部件的更新由于 widget中的時鐘關系,需要對 widget顯示進行時刻的更新用來保持與系統(tǒng)中時間的一致。實現(xiàn)這個功能需要用到 AlarmManager類,這個類專門用來設定在某個指定的時間去完成指定的事件。設計思路是在 Widget的 onUpdate方法中啟動一個自定義更新后臺服務,更新 widget,并設定下一分鐘再次調(diào)用此服務,實現(xiàn)此功能部分代碼如下:publicclassWeatherWidgetextendsAppWidgetProviderOverridepublicvoidonUpdate(Contextcontext,AppWidgetManagerappWidgetManager,intappWidgetIds)super.onUpdate(context,appWidgetManager,appWidgetIds);/獲取需要更新的桌面小控件ForecastService.addWidgetIDs(appWidgetIds);/啟動獲取天氣預報信息的服務context.startService(newIntent(context,ForecastService.class);/啟動時間信息的服務context.startService(newIntent(context,ForecastTimeService.class);/更新桌面小控件顯示內(nèi)容publicstaticRemoteViewsupdateViews(Contextcontext,Uriuri)七、測試 當系統(tǒng)初啟動時,由于沒有設置預報城市,則自動由 MianActivity天氣顯示視圖跳轉到 SetCityActivity城市設置視圖,并要求用戶選擇預報城市如下:接下來點擊確定選擇城市,則系統(tǒng)確定用戶單擊城市的城市碼跳轉至天氣顯示界面,如下:跳轉到天氣界面后,可單擊菜單按鈕來顯示天氣的菜單選擇壁紙菜單項可以更換程序背景圖片如下:選擇設置城市菜單項,則跳轉到設置城市的界面,在這里可查詢城市,方便了用戶的選擇widget窗體小部件的添加是通過長按桌面的空白處,出現(xiàn)一個選項菜單,然后選擇“窗體小部件”,接著在彈出的選項中選擇“天氣精靈”即本系統(tǒng),則設計的小窗體部件將會出現(xiàn)在主屏幕的桌面上:八、總結本系統(tǒng)基本實現(xiàn)了需求的中的天氣預報的功能,界面設計也較漂亮,具有一定的實用性。其中的天氣數(shù)據(jù)全部來源于網(wǎng)絡,故在運行時一定要確保系統(tǒng)所處環(huán)境的網(wǎng)絡流暢性。由于開發(fā)過程是在模擬器上運行的,故測試的結果可能存在一定的局性性。同時在設計之初考慮問題的不全面,使得在無網(wǎng)狀態(tài)下設計不完善,運行本系統(tǒng)在無網(wǎng)狀態(tài)下時會異常停止。通過本系統(tǒng)的開發(fā)使得我對于 Android平臺的應用開發(fā)有了一定的了解,特別是其中的 GPS功能與 Widget的更新功能的實現(xiàn)讓我體會到了實踐的意義,有自己認真動手
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鐵道養(yǎng)路機械應用技術專業(yè)教學標準(高等職業(yè)教育??疲?025修訂
- 藥學專業(yè)教學標準(高等職業(yè)教育??疲?025修訂
- 臨床皮內(nèi)注射技術
- 稅務師考試東奧課件
- 中國廣告發(fā)布行業(yè)市場調(diào)查研究及投資前景預測報告
- 中國農(nóng)藥殺菌劑行業(yè)市場調(diào)查報告
- 2025年中國手袋線行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 回復反射器行業(yè)深度研究分析報告(2024-2030版)
- 中國城市經(jīng)營行業(yè)市場發(fā)展現(xiàn)狀及前景趨勢與投資分析研究報告(2024-2030)
- 2025年中國小曲酒行業(yè)市場深度調(diào)研分析及投資前景研究預測報告
- 綠化施工進度網(wǎng)絡圖
- 機房接地方案
- 鋼筋焊接接頭平行檢驗記錄
- 醫(yī)用電子儀器原理與實驗:第七章 心臟起博器與除顫器
- 食堂從業(yè)人員知識培訓考核試題與答案
- 合同能源管理協(xié)議書范本
- 壓力容器使用年度檢查報告(范本)
- 壓力管道安裝質(zhì)量證明書新
- 轉預備、預備轉正各種無記名投票表格匯總(20201230021242)
- 腰椎間盤突出癥的診斷、鑒別診斷與分型
- 閥體零件機械加工工藝及裝備設計
評論
0/150
提交評論