軟件工程畢業(yè)論文-基于android的家庭理財通軟件的設(shè)計——支出管理模塊_第1頁
已閱讀1頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  本科畢業(yè)論文</b></p><p><b> ?。?0 屆)</b></p><p>  基于Android的家庭理財通軟件的設(shè)計——支出管理模塊</p><p><b>  目 錄</b></p><p><b>  摘要1&

2、lt;/b></p><p><b>  1 引言2</b></p><p>  1.1 Android安全性能分析2</p><p>  2 Android的相關(guān)技術(shù)介紹及分析3</p><p>  2.1Linux內(nèi)核3</p><p><b>  2.2中間件3&l

3、t;/b></p><p>  2.3 應(yīng)用程序框架4</p><p><b>  2.4應(yīng)用程序4</b></p><p>  3 Android應(yīng)用程序結(jié)構(gòu)剖析5</p><p>  3.1 Android的API5</p><p>  3.2Android應(yīng)用程序結(jié)構(gòu)解析6&

4、lt;/p><p>  3.2.1activity6</p><p>  3.2.2意圖接收器(也成為廣播接收器)6</p><p><b>  3.2.3服務(wù)7</b></p><p>  3.2.4 content provider7</p><p>  3.3 Intent7</

5、p><p>  3.4 Android活動的生命周期7</p><p>  3.4.1活動的生命狀態(tài)7</p><p>  3.4.2 活動的運作流程8</p><p>  4 Android家庭理財軟件支出部分的設(shè)計與實現(xiàn)9</p><p>  4.1 研究目標(biāo)9</p><p> 

6、 4.2 需求分析9</p><p>  4.3 UI界面設(shè)計10</p><p>  4.4 程序模塊設(shè)計10</p><p>  4.5 軟件功能圖12</p><p>  4.6 文件結(jié)構(gòu)與用途12</p><p>  4.7 程序主要代碼13</p><p>  4

7、.8 用戶界面17</p><p><b>  5 總結(jié)21</b></p><p><b>  參考文獻(xiàn)22</b></p><p>  基于Android平臺的家庭理財軟件</p><p>  摘要:隨著智能手機被越來越多的人所接受,手機已經(jīng)慢慢從一個通訊工具變成了我們隨身的百寶箱,從最

8、早的電話短信功能,發(fā)展到如今的拍照、攝像、上網(wǎng)、玩游戲,手機,已經(jīng)變成了堪比電腦的存在。因此,手機的貼身應(yīng)用開發(fā)將會有很大的發(fā)展空間,本次設(shè)計的家庭理財軟件就是其中之一。Android平臺提供給用戶非常方便的數(shù)據(jù)的隨時記錄、查詢、計算與統(tǒng)計功能,這為家庭理財軟件的設(shè)計實現(xiàn)與應(yīng)用推廣提供了良好的平臺。另外,android作為一款免費的開發(fā)平臺,開發(fā)成本基本為0,為軟件的普及提供了良好的基礎(chǔ)。</p><p>  不

9、過,正如android是開源的系統(tǒng),其系統(tǒng)安全性必然存在很多問題,如何避免私人數(shù)據(jù)丟失,如何保證個人數(shù)據(jù)安全就成為了每個軟件開發(fā)者不得不面對的問題。</p><p>  本文針對目前android系統(tǒng)的安全性、系統(tǒng)框架進(jìn)行了簡要分析,并針對安全問題提出了自己的解決辦法?;谙到y(tǒng)框架以及各組件的學(xué)習(xí)研究,設(shè)計開發(fā)了家庭理財軟件的支出部分設(shè)計。本系統(tǒng)界面簡潔,操作簡單,具有良好的可擴展性和可維護(hù)性。經(jīng)測試,系統(tǒng)可以在

10、android 4.0手機完美穩(wěn)定運行,滿足軟件用戶所需的賬本記錄查詢等功能。</p><p>  關(guān)鍵詞:Android;Java;家庭理財;Intent;布局;數(shù)據(jù)安全</p><p><b>  1 引言</b></p><p>  目前隨著移動設(shè)備越來越普及以及移動設(shè)備的硬件的提升,移動設(shè)備的功能越來越完善,移動設(shè)備的系統(tǒng)平臺也日漸火熱

11、起來。目前國內(nèi)最常見的移動開發(fā)平臺有Symbian,iPhone,Windows Phone以及當(dāng)下異軍突起的Android。目前為止國內(nèi)已經(jīng)有很多Android系統(tǒng)的用戶。截止至今Android系統(tǒng)的國內(nèi)市場占有率已經(jīng)過已超過七成,可見Android系統(tǒng)的用戶基數(shù)之大。但是對于Android系統(tǒng)的應(yīng)用和開發(fā)在國內(nèi)仍然屬于起步和探索階段。急需要大量的相關(guān)技術(shù)和人員的投入。</p><p>  下面首先介紹一下A

12、ndroid系統(tǒng)的安全性以及框架結(jié)構(gòu)。Android是基于Linux內(nèi)核的軟件平臺和操作系統(tǒng),是Google在2007年11月5日公布的手機系統(tǒng)平臺,早期由Google開發(fā),后由(Open Handset Alliance)開發(fā)。它采用了軟件堆層(Software stack,又名以軟件疊層)的架構(gòu),主要分為三部分。低層以Linux核心工作為基礎(chǔ),只提供基本功能;其他的應(yīng)用軟件則由各公司自行開發(fā),以Java作為編寫程式的一部分。<

13、/p><p>  因為興趣和挑戰(zhàn),我開始學(xué)習(xí)android編程,通關(guān)指導(dǎo)老師的幫助完成了安卓家庭理財軟件。希望通過這篇論文的研究,展示我在校期間學(xué)習(xí)與實踐的成果,希望給在農(nóng)大四年的本科學(xué)習(xí)交上一份圓滿的答卷。</p><p>  1.1 Android安全性能分析</p><p>  (1)Android內(nèi)核存在大量漏洞,已有許多漏洞利用工具</p>&l

14、t;p>  由于Android系統(tǒng)平臺自身開源性的特征,它已經(jīng)成為現(xiàn)今黑客重點攻擊目標(biāo)。黑客針對現(xiàn)有漏洞,已開發(fā)出眾多的漏洞利用工具,其中竊取用戶隱私、惡意扣費等行為的工具和木馬類型的惡意軟件占到多數(shù)。此類程序,病毒會自動聯(lián)網(wǎng)、在系統(tǒng)后臺啟動惡意進(jìn)程,竊取手機中的隱私內(nèi)容,直接威脅到用戶的安全。</p><p>  (2)Android 缺乏功能強大的病毒防護(hù)或者防火墻現(xiàn)階段,專業(yè)從事手機系統(tǒng)防護(hù)

15、和手機病毒查殺的公司還比較少見,公眾手機防病毒意識還不強,Android系統(tǒng)作為基于Linux的智能手機平臺,其病毒防護(hù)或防火墻功能較弱,目前基于Android平臺的病毒變種也正在呈集群式爆發(fā)。從發(fā)現(xiàn)“給你米”、“安卓吸費王”病毒到現(xiàn)在,其變種已多達(dá)63個,波及用戶數(shù)超過90萬。并且,Android平臺病毒的某些特征也在逐漸凸顯,病毒作者所植入的軟件也越來越有名,近期被查殺的“紅透透(HongTouTou)病毒”就是偽裝在知名手機游戲軟

16、件“機器人塔防”中,用來盜取用戶私人信息的病毒,已造成較大破壞。</p><p>  (3)Android 應(yīng)用軟件缺乏安全審核及監(jiān)管保護(hù)Android用戶遠(yuǎn)離惡意應(yīng)用程序的是一種基于“功能”的安全模式。每個Android應(yīng)用程序必須告知手機的操作系統(tǒng)它需要的功能。當(dāng)你安裝應(yīng)用程序時,操作系統(tǒng)列出應(yīng)用程序需要運行的功能。你可以判斷這是否與應(yīng)用程序聲稱的相符?;诠δ艿南到y(tǒng)具有由操作系統(tǒng)強制執(zhí)行的優(yōu)勢。應(yīng)

17、用程序根本不可能說一套做一套。它也不依賴于人工篩選的警覺。這樣做的問題在于,無法確保應(yīng)用程序的行為會與其被給予的信任相稱。</p><p>  功能限制并不能保護(hù)用戶免受這一類的攻擊,因為流氓軟件要求的權(quán)限與合法應(yīng)用程序是一樣的:也就是,接收一個人的用戶名和密碼,并通過互聯(lián)網(wǎng)與遠(yuǎn)程服務(wù)器溝通這些信息的權(quán)限?;诠δ芟到y(tǒng)的另一個問題在于,它需要用戶仔細(xì)考慮安全問題。許多用戶難以準(zhǔn)確評估他們想要下載運行的軟件風(fēng)險——

18、即便當(dāng)他們懷疑軟件可能是惡意軟件時。Android手機系統(tǒng)自身的驗證機制相對薄弱,如其只能保證對下載程序的穩(wěn)定性、數(shù)據(jù)完整性進(jìn)行檢測,無法驗證Android手機軟件的來源,以及對安裝后程序可能存在的行為進(jìn)行判定,故無法對安全性進(jìn)行保證。</p><p> ?。?)Android 軟件開發(fā)工具包(SDK) 存在較多安全隱患</p><p>  Android S

19、DK 自測試階段就不斷暴露出例如遠(yuǎn)程控制漏洞、整數(shù)溢出和瀏覽器在處理GIF、BMP和PNG圖像時的數(shù)據(jù)溢出等各種類型的漏洞,攻擊者可利用這些漏洞執(zhí)行自己的惡意代碼,進(jìn)而完全控制裝有Android軟件的手機。如果補丁未及時更新,及易在這方面造成較大危害。</p><p>  2 Android的相關(guān)技術(shù)介紹及分析</p><p>  2.1 Linux內(nèi)核(Linux Kernel

20、) </p><p>  Android運行在linux kernel 2.6之上,但是把linux內(nèi)受GNU協(xié)議約束的部分做了取代,這樣在Android的程序可以用于商業(yè)目的。</p><p>  Linux 內(nèi)核是硬件和軟件層之間的抽象層。</p><p><b>  2.2 中間件</b></p><p>  中間

21、件包括兩部分:核心庫和運行時(libraries & Android runtime)</p><p>  核心庫包括,SurfaceManager 顯示系統(tǒng)管理庫,負(fù)責(zé)把2D或3D內(nèi)容顯示到屏幕;Media Framework 媒體庫,負(fù)責(zé)支持圖像,支持多種視頻和音頻的錄制和回放;SQlite 數(shù)據(jù)庫,一個功能強大的輕量級嵌入式關(guān)系數(shù)據(jù)庫;WebKit 瀏覽器引擎等。</p><p&

22、gt;  Dalvik虛擬機:區(qū)別于Java虛擬機的是,每一個Android 應(yīng)用程序都在它自己的進(jìn)程中運行,都有一個屬于自己的Dalvik 虛擬機,這一點可以讓系統(tǒng)在運行時可以達(dá)到優(yōu)化,程序間的影響大大降低。Dalvik虛擬機并非運行Java字節(jié)碼,而是運行自己的字節(jié)碼。</p><p>  2.3應(yīng)用程序框架(Application Framework)</p><p>  豐富而又可

23、擴展性的視圖(Views),可以用來構(gòu)建應(yīng)用程序,它包括列表(lists),網(wǎng)格(grids),文本框(text boxes),按鈕(buttons),可嵌入的web瀏覽器。</p><p>  內(nèi)容提供者(Content Providers)使得應(yīng)用程序可以訪問另一個應(yīng)用程序的數(shù)據(jù)(如聯(lián)系人數(shù)據(jù)庫),或者共享它們自己的數(shù)據(jù)。</p><p>  資源管理器(Resource Manage

24、r)提供非代碼資源的訪問,如本地字符串,圖形,和布局文件(layoutfiles)。</p><p>  通知管理器(Notification Manager) 使得應(yīng)用程序可以在狀態(tài)欄中顯示自定義的提示信息。</p><p>  活動管理器( Activity Manager) 用來管理應(yīng)用程序生命周期并提供常用的導(dǎo)航回退功能。</p><p>  2.4 應(yīng)用程

25、序 (Applications)</p><p>  Android系統(tǒng)會內(nèi)置一些應(yīng)用程序包,包括email客戶端、SMS短消息程序、日歷、地圖、瀏覽器、聯(lián)系人管理程序等。所有的應(yīng)用程序都是使用JAVA 語言編寫的。下圖用來顯示android架構(gòu)的五個部分:</p><p>  圖2-1 安卓架構(gòu)的五個部分</p><p>  3 Android應(yīng)用程序結(jié)構(gòu)剖析&

26、lt;/p><p>  3.1 Android的API</p><p>  Android API主要包含了以下幾個部分:</p><p>  (1)AndroidManifest.xml</p><p>  AndroidManifest.xml是系統(tǒng)的控制文件,用于對軟件所有用到的activity、service等進(jìn)行注冊,并進(jìn)行簡單的屬性設(shè)

27、置。另外,該文件也記錄了軟件所需要的系統(tǒng)使用權(quán)限。</p><p>  (2)Activity</p><p>  翻譯過來就是活動。也就一個完整的操作過程,這個過程可以用來顯示一個界面,接受一些數(shù)據(jù),或者只是單純的運行一些方法。</p><p><b>  (3)View</b></p><p>  視圖是主要用于顯示

28、的圖形界面。Android的圖形界面基本上都是由各種視圖組件構(gòu)成,如listview、imageview等,視圖的存在讓android的圖形界面設(shè)計更簡單豐富。另外,開發(fā)者也可以自定義視圖,以實現(xiàn)開發(fā)者想得到但系統(tǒng)未自帶的效果。</p><p><b>  (4)Intent</b></p><p>  也可以稱之為意圖,實際上它就是一個簡單地消息對象,表示程序?qū)⒁\

29、行到的位置,可以是一個視圖,也可以是一個service,并且可以將一些簡單的消息在跳轉(zhuǎn)的時候進(jìn)行傳送,也可以通過bundle傳輸一些稍微復(fù)雜的數(shù)據(jù)對象。</p><p>  (5)Service</p><p>  主要是用來承擔(dān)一些后臺的操作過程。作為一款智能的操作系統(tǒng),多線程以及后臺必不可少,這就是service的存在。它可以用于后臺運行一些過程,比如音樂播放,也可以用于永久監(jiān)聽一些事

30、件,比如監(jiān)聽短信。</p><p>  (6)Message</p><p>  Android的特色之一,可以將一些后臺接受到的消息,比如短信,提示更新等用小圖標(biāo)顯示到通知欄上,用戶可以通過下拉點擊的過程對消息進(jìn)行處理。</p><p>  (7)Content Provider</p><p>  主要是用于程序間的數(shù)據(jù)共享,比如可以從電

31、話應(yīng)用中調(diào)用聯(lián)系人信息,短信發(fā)送也可以調(diào)用聯(lián)系人信息。</p><p>  3.2Android應(yīng)用程序結(jié)構(gòu)解析</p><p>  Android應(yīng)用程序由以下四大組件構(gòu)成:</p><p><b>  ①activity</b></p><p> ?、贐roadcast Receiver</p><

32、;p><b> ?、踫ervice</b></p><p>  ④content provider</p><p>  但程序與這四大組件并不是對等關(guān)系,并不是要求每個應(yīng)用都必須包含這四大組件。成俗可根據(jù)需求選擇需要用到的組件,但必須注冊到主文件中。</p><p>  3.2.1Activity</p><p>

33、  Activity是android應(yīng)用開發(fā)最常用到的組件之一。它的存在主要是為了顯示應(yīng)用軟件的圖形界面。Activity之間主要是通過intent進(jìn)行跳轉(zhuǎn)組合。</p><p>  3.2.2意圖接收器(也稱為廣播接收器)</p><p>  可以被注冊在AndroidManifest.xml文件中,同時也可以在代碼中使用Context.registerReceiver()來注冊,主要是

34、程序用來處理一些外部提醒。比如接收到短信時候程序進(jìn)行的操作。</p><p><b>  3.2.3服務(wù)</b></p><p>  主要是用于后臺,沒有圖形界面,具有長生命周期。</p><p>  3.2.4 content provider</p><p>  一個專門用于不同應(yīng)用間共享程序的工具類。每個應(yīng)用都可以

35、訪問到別的應(yīng)用用該類處理提供的數(shù)據(jù)信息。</p><p>  3.3 Intent</p><p>  由上文綜述可知Android應(yīng)用程序主要包含四大組件。但每個組件之間都是相互獨立存在,而完成任何一個復(fù)雜的應(yīng)用處理過程都不能能只用到一個組件,這時候我們就需要一個工具來將這些組件有機的組合到一起,我們使用的這個工具就叫做Intent,也稱之為意圖。通過這個工具,我們可以實現(xiàn)activit

36、y的跳轉(zhuǎn),實現(xiàn)service的開啟,系統(tǒng)功能的調(diào)用,簡單數(shù)據(jù)的傳輸?shù)取?lt;/p><p>  例如,在本次的畢業(yè)設(shè)計中,需要用到gps模塊,但是打開系統(tǒng)設(shè)置的gps模塊相對比較復(fù)雜,所以在登陸界面可以通過一個intent來定位系統(tǒng)的gps設(shè)置界面,然后調(diào)用startActivity(intent)方法來開啟系統(tǒng)的gps設(shè)置。</p><p>  3.4 Android activity的生命

37、周期</p><p>  Android系統(tǒng)作為一款針對手機、平板的操作系統(tǒng),智能化是其主要特色。因此必然會引入類似于生命周期的概念。生命周期的存在,讓界面的跳轉(zhuǎn)、返回變得靈活,讓多線程、后臺能方便順暢的引入。下面就纖細(xì)說一下android生命周期的各個狀態(tài)以及轉(zhuǎn)換過程:</p><p>  3.4.1activity的生命狀態(tài)</p><p>  Android的

38、虛擬機是使用堆棧管理。主要有四種狀態(tài):</p><p><b>  (l)活動狀態(tài)</b></p><p>  活動狀態(tài)指的是當(dāng)前activity,就是手機上邊顯示出來的界面,該界面有且只有一個,不會出現(xiàn)同時有兩個界面處于活動狀態(tài)</p><p><b>  (2)暫停狀態(tài)</b></p><p>

39、  當(dāng)有一些彈出框出現(xiàn),活動界面變暗處于底層并且不可操作,此時的界面狀態(tài)就是暫停狀態(tài)</p><p><b>  (3)停止?fàn)顟B(tài)</b></p><p>  一個新的activity處于活動狀態(tài),原activity不可見,此時原activity就是處于停止?fàn)顟B(tài),但仍然處于存在狀態(tài),可以被消息喚醒</p><p>  (4)已回收或未啟動狀態(tài)&l

40、t;/p><p>  調(diào)用finis()方法或者因內(nèi)存不足時一些處于停止?fàn)顟B(tài)的會自動被虛擬機回收后就處于該狀態(tài),不能被喚醒。</p><p>  圖3-1 Android活動生命周期</p><p>  3.4.2 活動activity的轉(zhuǎn)換過程</p><p><b>  (l)啟動</b></p><

41、;p>  啟動一個activity的基本流程為onCreate一>onstart一>onResume。該流程首先分配資源給這個activity(創(chuàng)建狀態(tài)),然后將activity的內(nèi)容顯示到屏幕上(啟動狀態(tài));在一切就緒后,取得屏幕的控制權(quán)(恢復(fù)狀態(tài)),用戶可以開始使用這個程序。</p><p><b>  (2)調(diào)用</b></p><p>  調(diào)

42、用另一個activity的基本流程為onpause(l)一>onCreate(2)一>onstart(2)一>0nResume(2)一>onStop(l)。該流程首先凍結(jié)原來的activity,再交出屏幕控制權(quán);直到activity2完成一般啟動流程后,activity1才會被停止。</p><p><b>  (3)返回</b></p><p&g

43、t;  回到原來activity的基本流程為onPause(2)一>onRestart(1)一>onstart(l)一>onResume(1)一>onstop(2)一>onDestroy(2)。另外按返回鍵也可以回到原來的activity。</p><p><b> ?。?)退出</b></p><p>  退出結(jié)束的基本流程為onPau

44、se一>onStop一>onDestroy。如果程序中有直接調(diào)用finish方法來關(guān)閉activity的話,系統(tǒng)會跳過先凍結(jié)的階段,直接暫停,停止,然后銷毀。</p><p>  (5)回收(finish)后再次啟動</p><p>  回收后再啟動的基本流程為oncreate一>onstart一>onresume。如果被回收掉的activity一旦又重新被調(diào)用時,

45、會像一般啟動一樣再次調(diào)用activity的onCreate方法。</p><p>  當(dāng)在模擬器上已經(jīng)執(zhí)行過多個應(yīng)用程序,只要按下返回鍵,就會開啟最近一次開啟過的activity。所以如果要讓再次被創(chuàng)建的activity跟原來開啟過的一樣,那么在activity之間切換時,就要保存資料:即在每次activity運行到暫停或停止?fàn)顟B(tài)時先保存資料,然后在創(chuàng)建時將資料讀出來。</p><p> 

46、 4 Android家庭理財軟件支出部分的設(shè)計與實現(xiàn)</p><p><b>  4.1 研究目標(biāo)</b></p><p>  (1)熟悉使用android軟件開發(fā)流程,養(yǎng)成良好的軟件開發(fā)習(xí)慣</p><p>  (2)學(xué)習(xí)使用android的多種組件的使用。</p><p>  (3)對數(shù)據(jù)安全進(jìn)行基本的分析了

47、解,初步養(yǎng)成隨時注意數(shù)據(jù)安全的習(xí)慣</p><p>  (4)熟悉java環(huán)境對android數(shù)據(jù)庫的操作過程</p><p>  本軟件是采用Eclipse的環(huán)境開發(fā),基于android 4.03版本完美測試運行。</p><p><b>  4.2 需求分析</b></p><p>  本軟件是Android平臺家庭

48、理財工具,啟動程序后應(yīng)該可以對日常每一天的收入支出進(jìn)行查詢與統(tǒng)計,并且要有用戶個人信息的基本安全加密;</p><p><b>  由此可得項目需求:</b></p><p>  首先要實現(xiàn)用戶登陸管理,只有擁有權(quán)限的用戶才能登陸應(yīng)用,保證用戶的信息安全;</p><p>  要有對用戶進(jìn)行修改新增的功能,并且對數(shù)據(jù)進(jìn)行加密處理;</p&

49、gt;<p>  要有支出記錄功能,記錄支出時間以及面額,坐標(biāo)獲取功能讓你知道都是在哪兒消費過,照片記錄能讓你記錄個人都在哪兒消費過;</p><p>  要擁有對記錄數(shù)據(jù)的查詢功能;</p><p>  在查詢的同時要擁有對保存數(shù)據(jù)進(jìn)行刪除以及修改的功能;</p><p>  關(guān)于模塊,記錄軟件版本及發(fā)行等相關(guān)信息;</p><p

50、>  幫助模塊,提供對軟件功能及大概使用方法的綜合描述。</p><p>  4.3 UI界面設(shè)計</p><p>  根據(jù)需求分析可以知道,應(yīng)用程序應(yīng)包含十二個用戶界面,在這一步進(jìn)一步分析每一個用戶界面的基本構(gòu)成,也就是每一個界面的結(jié)構(gòu)框架。</p><p>  在登陸界面,需要有兩個輸入框,分別輸入用戶名跟密碼,然后要有登陸按鈕,又因為應(yīng)用需要用到gps模

51、塊,所以還需要一個按鈕進(jìn)行連接到gps開啟界面,使軟件應(yīng)用更加方便。</p><p>  登陸完成后,跳轉(zhuǎn)到主界面,因為主界面功能較多,所以采用GridView+imageview布局,是界面統(tǒng)一簡單,也就是網(wǎng)格布局</p><p>  支出記錄界面,設(shè)計為從上到下的線性布局,分別記錄當(dāng)前坐標(biāo),時間,消費金額以及消費場景照片,在最下排放入功能按鈕</p><p> 

52、 查詢界面,用listview列表顯示以往的記錄信息,同步實現(xiàn)對每一條數(shù)據(jù)的查詢修改功能。</p><p>  用戶新增界面,線性提供三個文本輸入框,分別用來輸入用戶名跟密碼以及密碼確認(rèn),最下排放功能按鈕</p><p>  用戶修改界面,要比新增界面增加一個文本框,用于輸入用戶原密碼。</p><p>  關(guān)于以及幫助界面基本上結(jié)構(gòu)相同,都由一個大的文本區(qū)域以及最

53、下排的功能按鈕構(gòu)成</p><p>  4.4 程序模塊設(shè)計</p><p>  從功能需求上分析可以看出,整個應(yīng)用程序應(yīng)劃分為11個模塊,分別是登陸、功能選擇、記錄、查詢方式選擇、記錄修改、記錄查看、照片查看、用戶新增、用戶修改、關(guān)于、幫助</p><p>  登陸是應(yīng)用軟件打開后的第一個界面,用于驗證用戶是否有對軟件的使用權(quán)限;功能選擇是整個軟件的核心,其中包

54、括了軟件的各種主要功能;記錄用于對支出情況進(jìn)行詳細(xì)數(shù)據(jù)采集記錄;查詢方式選擇用于選擇所要查詢的內(nèi)容;記錄修改用于更改某一次消費信息的具體數(shù)額;記錄查看用于顯示全部的支出信息;照片查看用于查看某一次消費信息的照片情況;用戶新增用于對新用戶賦予軟件的使用權(quán)限;用戶修改用于修改某一現(xiàn)存用戶的密碼;關(guān)于用于顯示軟件版本信息以及發(fā)行人;幫助用于對軟件基本功能以及使用方法進(jìn)行介紹;</p><p>  根據(jù)如上功能,對數(shù)據(jù)庫

55、進(jìn)行設(shè)計,共需要user表、out表;分別用于記錄用戶信息以及支出信息數(shù)據(jù),user表包括(id,name,password),out表包括(id,out,x,y,time,pic,name)</p><p>  在完成用戶界面設(shè)計、數(shù)據(jù)庫設(shè)計和模塊設(shè)計后,至此程序設(shè)計階段基本完成。</p><p>  4.5 軟件功能圖</p><p>  圖4-1 軟件功能圖

56、</p><p>  4.6 文件結(jié)構(gòu)與用途</p><p>  建立項目,項目名稱為“MyMoneyManager”,選擇開發(fā)版本sdk為4.03,項目工作空間為“com.ymtq.hu”,確定之后系統(tǒng)會自動生成一個項目工作空間。</p><p>  Android的資源文件保存在/res的子目錄中。其中、/res/anim目錄中保存的是產(chǎn)生動畫效果的XML文件

57、,/res/drawable/目錄中保存的是圖像文件,/res/values目錄中保存的是用來自定義字符串和顏色的文件,/res/xml目錄中保存的是XML格式的數(shù)據(jù)文件。所有在程序開發(fā)階段可以被調(diào)用的資源都保存在這些目錄中,具體每個資源文件的用途可以參考表4.2:</p><p>  表4.2 資源文件名稱與用途</p><p>  4.7 程序主要代碼</p><

58、;p>  Login.java的部分代碼:</p><p>  Button login, cancel;</p><p>  private DataBaseHelper dh;</p><p>  String name, password;</p><p>  EditText Name, Password;</p>

59、<p>  int flag = 1;</p><p>  int mflag = 1;</p><p>  int mflag2 = 1;</p><p>  大類中首先就是生命組件跟變量,android是一個組件式開發(fā)環(huán)境,以組件修改套接開發(fā)為主;</p><p>  public static String MD5(Stri

60、ng str) {</p><p>  MessageDigest md5 = null;</p><p><b>  try {</b></p><p>  md5 = MessageDigest.getInstance("MD5");</p><p>  } catch (Exception e)

61、 {</p><p>  e.printStackTrace();</p><p>  return "";</p><p><b>  }</b></p><p>  char[] charArray = str.toCharArray();</p><p>  byte[]

62、 byteArray = new byte[charArray.length];</p><p>  for (int i = 0; i < charArray.length; i++) {</p><p>  byteArray[i] = (byte) charArray[i];</p><p><b>  }</b></p>

63、;<p>  byte[] md5Bytes = md5.digest(byteArray);</p><p>  StringBuffer hexValue = new StringBuffer();</p><p>  for (int i = 0; i < md5Bytes.length; i++) {</p><p>  int val

64、= ((int) md5Bytes[i]) & 0xff;</p><p>  if (val < 16) {</p><p>  hexValue.append("0");</p><p><b>  }</b></p><p>  hexValue.append(Integer.to

65、HexString(val));</p><p><b>  }</b></p><p>  return hexValue.toString();</p><p><b>  }</b></p><p>  MD5算法加密,用于對用戶名密碼加密保存。這么做主要是因為sqlite數(shù)據(jù)庫本身安全性不高

66、,訪問權(quán)限基本等于沒限制。</p><p>  手寫一個繼承SQLiteOpenHelper的數(shù)據(jù)庫助手類DataBaseHelper,通過該類進(jìn)行數(shù)據(jù)庫連接初始化工作,通過new出來的DataBaseHelper對象進(jìn)行數(shù)據(jù)庫操作</p><p>  數(shù)據(jù)庫操作主要代碼:</p><p>  SQLiteDatabase db = dh.getReadableDa

67、tabase();</p><p>  String[] columns = { </p><p>  DataBaseHelper.ID, DataBaseHelper.NAME,</p><p>  DataBaseHelper.PASSWORD };</p><p>  Cursor c = db.query(DataBaseHelpe

68、r.TABLE_USER, columns, null,null, null, null, null);</p><p>  while (c.moveToNext()) {</p><p><b>  }</b></p><p><b>  }</b></p><p>  c.close();&l

69、t;/p><p>  db.close();</p><p>  功能選擇界面的部分代碼:</p><p>  Button btn_new,btn_about,btn_up,btn_help;</p><p>  setContentView(R.layout.main);</p><p>  GridView grid

70、view = (GridView) findViewById(R.id.gridview);</p><p>  gridview.setAdapter(new ImageAdapter(this));</p><p>  gridview.setOnItemClickListener(new OnItemClickListener() {}</p><p>  從

71、代碼可見,該界面主要實現(xiàn)的就是按鈕功能,用來作為軟件各功能實現(xiàn)的紐帶;GridView采用一個自定義的布局填充;</p><p> ?。?)記錄中的部分代碼</p><p>  Criteria criteria = new Criteria();// 對gps獲取信息方式進(jìn)行設(shè)置</p><p>  criteria.setAccuracy(Criteria.AC

72、CURACY_FINE);// 精度</p><p>  criteria.setAltitudeRequired(false);// 是否要高度信息</p><p>  criteria.setBearingRequired(false);// 是否要方位信息</p><p>  criteria.setCostAllowed(true);// 是否需要產(chǎn)生費用&

73、lt;/p><p>  criteria.setPowerRequirement(Criteria.POWER_LOW);// 耗電量設(shè)置了首先對gps模塊進(jìn)行設(shè)置,因為該功能的實現(xiàn)要啟用gps模塊,獲取定位信息</p><p>  protected void camera() {</p><p>  Intent intent = new Intent();<

74、/p><p>  intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);</p><p>  picpath = System.currentTimeMillis() + ".jpg";</p><p>  Uri uri = Uri.fromFile(new File("/sdcard/&qu

75、ot; + picpath));</p><p>  intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);</p><p>  startActivityForResult(intent, REQUESTCODE);</p><p><b>  }</b></p><p>  調(diào)用

76、系統(tǒng)的照相接口,實現(xiàn)照片采集功能,并自動保存到內(nèi)存卡上邊。</p><p>  Toast.makeText(getApplicationContext(), "已保存完成",</p><p>  Toast.LENGTH_LONG).show();</p><p>  用Toast提示照片保存完成</p><p>  查

77、詢中的部分代碼。 </p><p>  private List<Manager> find(){</p><p>  dh = new DataBaseHelper(this);</p><p>  SQLiteDatabase db = dh.getReadableDatabase();</p><p>  String[]

78、 columns = { DataBaseHelper.IN, DataBaseHelper.TIME,</p><p>  DataBaseHelper.PIC,DataBaseHelper.X,DataBaseHelper.Y };</p><p>  Cursor c = db.query(DataBaseHelper.TABLE_USER_IN, columns, null,

79、null,null, null, null);</p><p>  List<Manager> users = new ArrayList<Manager>();</p><p>  Manager e = null;</p><p>  while (c.moveToNext()) {</p><p> 

80、 e = new Manager();</p><p>  e.setIn(c.getDouble(0));</p><p>  e.setTime(c.getString(1));</p><p>  e.setPic(c.getString(2));</p><p>  e.setX(c.getDouble(3));</p>

81、<p>  e.setY(c.getDouble(4));</p><p>  users.add(e);</p><p><b>  }</b></p><p>  c.close();</p><p>  db.close();</p><p>  return users;<

82、;/p><p><b>  }</b></p><p>  查詢方法,查詢返回一個list集合,包含數(shù)據(jù)庫表內(nèi)的全部數(shù)據(jù)信息</p><p><b>  新用戶的部分代碼:</b></p><p>  if (userpassword.equals(testpassword)) {</p>

83、<p>  SQLiteDatabase db = dh.getWritableDatabase();</p><p>  User user = new User(MD5(userName.getText().toString()),</p><p>  MD5(userpassword));</p><p>  ContentValues value

84、s = new ContentValues();</p><p>  values.put(DataBaseHelper.NAME, user.getName());</p><p>  values.put(DataBaseHelper.PASSWORD, user.getPassWord());</p><p>  db.insert(DataBaseHelpe

85、r.TABLE_USER, null, values);</p><p>  db.close();</p><p>  Toast.makeText(NewUser.this, "數(shù)據(jù)插入成功",</p><p>  Toast.LENGTH_LONG).show();</p><p><b>  } else

86、 {</b></p><p>  Toast.makeText(NewUser.this, "數(shù)據(jù)未插入成功",</p><p>  Toast.LENGTH_LONG).show();</p><p><b>  }</b></p><p><b>  } else {<

87、/b></p><p>  Toast.makeText(NewUser.this, "兩次輸入的密碼不一致,請重新輸入",</p><p>  Toast.LENGTH_LONG).show();</p><p><b>  }</b></p><p>  首先驗證兩次輸入的密碼是否一致,然后

88、將用戶信息插入user表,并用toast對操作結(jié)果進(jìn)行提示</p><p>  用戶修改的主要代碼:</p><p>  SQLiteDatabase db1 = dh.getWritableDatabase();</p><p>  User user = new User(name, MD5(userPassword</p><p>  

89、.getText().toString()));</p><p>  ContentValues values = new ContentValues();</p><p>  values.put(DataBaseHelper.NAME, user.getName());</p><p>  values.put(DataBaseHelper.PASSWORD,&

90、lt;/p><p>  user.getPassWord());</p><p>  String whereClause = DataBaseHelper.ID + "=?";</p><p>  String[] whereArgs = { String.valueOf(c.getInt(0)) };</p><p>  

91、db1.update(DataBaseHelper.TABLE_USER, values,</p><p>  whereClause, whereArgs);</p><p>  Toast.makeText(UserUp.this, "數(shù)據(jù)修改成功",</p><p>  Toast.LENGTH_LONG).show();</p>

92、;<p>  c.close();</p><p>  db.close();</p><p>  db1.close();</p><p>  主要實現(xiàn)的是數(shù)據(jù)庫的更新,對user表的用戶密碼進(jìn)行修改</p><p>  AndroidManifest.xml主要代碼:</p><p>  &l

93、t;uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/></p><p>  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/></p><p&g

94、t;  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/></p><p>  <uses-permission android:name="android.permission.INTERNET"/></p><p>  <

95、uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/></p><p>  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/></p><p>  &

96、lt;uses-permission android:name="android.permission.BLUETOOTH"/></p><p>  <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/></p><p>  <uses-perm

97、ission android:name="android.permission.CHANGE_WIFI_STATE"/></p><p>  <uses-permission android:name="android.permission.READ_PHONE_STATE"/></p><p>  <uses-permiss

98、ion android:name="android.permission.ACCESS_MOCK_LOCATION"/></p><p>  <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"/></p><p>  <uses-perm

99、ission android:name="android.permission.CAMERA"/></p><p>  對應(yīng)用所需要的系統(tǒng)權(quán)限進(jìn)行設(shè)置,給予應(yīng)用網(wǎng)絡(luò)、定位、硬件操控等權(quán)限</p><p>  <activity android:name="AndroidXunJianActivity" android:theme=&quo

100、t;@android:style/Theme.NoTitleBar.Fullscreen">></activity></p><p>  <activity android:name="About" android:theme="@android:style/Theme.NoTitleBar.Fullscreen">>&l

101、t;/activity></p><p>  <activity android:name="UserUp" android:theme="@android:style/Theme.NoTitleBar.Fullscreen">></activity></p><p>  <activity android:

102、name="Help" android:theme="@android:style/Theme.NoTitleBar.Fullscreen">></activity></p><p>  <activity android:name="GeoCoder" android:theme="@android:style/

103、Theme.NoTitleBar.Fullscreen">></activity></p><p>  <activity android:name="Find" android:theme="@android:style/Theme.NoTitleBar.Fullscreen">></activity><

104、;/p><p>  <activity android:name="ImageShow" android:theme="@android:style/Theme.NoTitleBar.Fullscreen">></activity></p><p>  <activity android:name="ObjS

105、elect" android:theme="@android:style/Theme.NoTitleBar.Fullscreen">></activity></p><p>  <activity android:name="UpIn" android:theme="@android:style/Theme.NoTitleB

106、ar.Fullscreen">></activity></p><p>  對項目中應(yīng)用到的所有activity進(jìn)行注冊,只有在這里注冊過的activity才能在項目中進(jìn)行使用</p><p><b>  4.8 用戶界面</b></p><p>  在用戶界面設(shè)計上,采用了咨詢軟件框架結(jié)構(gòu),提供簡單直觀的交

107、互操作。軟件所有界面均貫徹這一原則,以簡單易操作為主。下圖為軟件版本信息界面:</p><p><b>  4.9 系統(tǒng)測試</b></p><p>  在虛擬機中運行測試軟件:</p><p>  啟動Android虛擬機</p><p>  在工程名MyMoneyManager上點右鍵,然后選擇“Run As”,然后

108、選擇“Android Application”。 Android虛擬機啟動較慢。如下圖所示:</p><p><b>  “登陸”頁功能演示</b></p><p>  (3)“功能選擇界面”演示</p><p>  (4)“記一筆”功能演示:</p><p>  (5)“查詢”功能演示:</p><

109、;p>  (6)“用戶新增”演示:</p><p>  (7)“用戶修改”功能演示:</p><p><b>  5 總結(jié)</b></p><p>  經(jīng)過一個多月的努力,Android平臺家庭理財軟件終于完成了。</p><p>  在這個過程中,我學(xué)會了 Android環(huán)境的搭建、Intent、Activity

110、、Service、ContentProvider、SQLite、數(shù)據(jù)加密算法等,但我學(xué)會的最重要的一點是,利用現(xiàn)有的資源去解決問題,在圖書館、在網(wǎng)絡(luò)上尋找答案。</p><p>  雖然,這個軟件目前運行良好,但是我認(rèn)為代碼功能還比較單一,在整個工程的構(gòu)思方面也不足,用戶操作界面還不夠絢麗,這些問題還需要今后逐一解決。與此同時,這個軟件還可以進(jìn)一步擴展,例如“便簽”、“數(shù)據(jù)備份”“數(shù)據(jù)同步”等,使功能更加完善,帶

溫馨提示

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

最新文檔

評論

0/150

提交評論