2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩23頁(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)介

1、<p><b>  本科畢業(yè)論文</b></p><p><b> ?。?0 屆)</b></p><p>  基于Android的家庭理財(cái)通軟件的設(shè)計(jì)——支出管理模塊</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活動(dòng)的生命周期7</p><p>  3.4.1活動(dòng)的生命狀態(tài)7</p><p>  3.4.2 活動(dòng)的運(yùn)作流程8</p><p>  4 Android家庭理財(cái)軟件支出部分的設(shè)計(jì)與實(shí)現(xiàn)9</p><p>  4.1 研究目標(biāo)9</p><p> 

6、 4.2 需求分析9</p><p>  4.3 UI界面設(shè)計(jì)10</p><p>  4.4 程序模塊設(shè)計(jì)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平臺(tái)的家庭理財(cái)軟件</p><p>  摘要:隨著智能手機(jī)被越來(lái)越多的人所接受,手機(jī)已經(jīng)慢慢從一個(gè)通訊工具變成了我們隨身的百寶箱,從最

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

30、件,比如監(jiān)聽短信。</p><p>  (6)Message</p><p>  Android的特色之一,可以將一些后臺(tái)接受到的消息,比如短信,提示更新等用小圖標(biāo)顯示到通知欄上,用戶可以通過(guò)下拉點(diǎn)擊的過(guò)程對(duì)消息進(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> ?、賏ctivity</b></p><p>  ②Broadcast Receiver</p><

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

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

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

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

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

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

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

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

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

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

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

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

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

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

46、 4 Android家庭理財(cái)軟件支出部分的設(shè)計(jì)與實(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)對(duì)數(shù)據(jù)安全進(jìn)行基本的分析了

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

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

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

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

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

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

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

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

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

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

57、,/res/drawable/目錄中保存的是圖像文件,/res/values目錄中保存的是用來(lái)自定義字符串和顏色的文件,/res/xml目錄中保存的是XML格式的數(shù)據(jù)文件。所有在程序開發(fā)階段可以被調(diào)用的資源都保存在這些目錄中,具體每個(gè)資源文件的用途可以參考表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是一個(gè)組件式開發(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算法加密,用于對(duì)用戶名密碼加密保存。這么做主要是因?yàn)閟qlite數(shù)據(jù)庫(kù)本身安全性不高

66、,訪問(wèn)權(quán)限基本等于沒(méi)限制。</p><p>  手寫一個(gè)繼承SQLiteOpenHelper的數(shù)據(jù)庫(kù)助手類DataBaseHelper,通過(guò)該類進(jìn)行數(shù)據(jù)庫(kù)連接初始化工作,通過(guò)new出來(lái)的DataBaseHelper對(duì)象進(jìn)行數(shù)據(jù)庫(kù)操作</p><p>  數(shù)據(jù)庫(kù)操作主要代碼:</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、代碼可見,該界面主要實(shí)現(xiàn)的就是按鈕功能,用來(lái)作為軟件各功能實(shí)現(xiàn)的紐帶;GridView采用一個(gè)自定義的布局填充;</p><p> ?。?)記錄中的部分代碼</p><p>  Criteria criteria = new Criteria();// 對(duì)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)生費(fèi)用&

73、lt;/p><p>  criteria.setPowerRequirement(Criteria.POWER_LOW);// 耗電量設(shè)置了首先對(duì)gps模塊進(jìn)行設(shè)置,因?yà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)的照相接口,實(shí)現(xiàn)照片采集功能,并自動(dòng)保存到內(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>  查詢方法,查詢返回一個(gè)list集合,包含數(shù)據(jù)庫(kù)表內(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, "兩次輸入的密碼不一致,請(qǐng)重新輸入",</p><p>  Toast.LENGTH_LONG).show();</p><p><b>  }</b></p><p>  首先驗(yàn)證兩次輸入的密碼是否一致,然后

88、將用戶信息插入user表,并用toast對(duì)操作結(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>  主要實(shí)現(xiàn)的是數(shù)據(jù)庫(kù)的更新,對(duì)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>  對(duì)應(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>  對(duì)項(xiàng)目中應(yīng)用到的所有activity進(jìn)行注冊(cè),只有在這里注冊(cè)過(guò)的activity才能在項(xiàng)目中進(jìn)行使用</p><p><b>  4.8 用戶界面</b></p><p>  在用戶界面設(shè)計(jì)上,采用了咨詢軟件框架結(jié)構(gòu),提供簡(jiǎn)單直觀的交

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

108、選擇“Android Application”。 Android虛擬機(jī)啟動(dòng)較慢。如下圖所示:</p><p><b>  “登陸”頁(yè)功能演示</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)過(guò)一個(gè)多月的努力,Android平臺(tái)家庭理財(cái)軟件終于完成了。</p><p>  在這個(gè)過(guò)程中,我學(xué)會(huì)了 Android環(huán)境的搭建、Intent、Activity

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

溫馨提示

  • 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ù)僅提供信息存儲(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)論