版權(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è)設(shè)計(jì)(論文)</b></p><p> 題目:基于Android平臺(tái)記事本的設(shè)計(jì)與實(shí)現(xiàn)</p><p> 姓 名: 學(xué) 號(hào): </p><p> 系 (院):信息工程系 班 級(jí): </p><p>
2、; 指導(dǎo)教師: 職 稱: 講師 </p><p> 二O一四 年 五 月 二十 日</p><p><b> 目 錄</b></p><p><b> 第一章 引言3</b></p><p> 1.1研究目的及意義3</p>&l
3、t;p> 1.2 國(guó)內(nèi)外研究現(xiàn)狀分析3</p><p> 1.3 發(fā)展趨勢(shì)4</p><p> 1.4 可行性分析5</p><p> 1.5 基本內(nèi)容6</p><p> 第二章 開發(fā)環(huán)境的安裝和配置7</p><p> 2.1開發(fā)包及其工具的介紹7</p><p&
4、gt; 2.2 Android開發(fā)平臺(tái)搭建步驟:8</p><p><b> 2.3硬件環(huán)境9</b></p><p><b> 2.4軟件環(huán)境9</b></p><p> 2.5 系統(tǒng)架構(gòu)9</p><p> 2.6 工程主體架構(gòu)11</p><p>
5、 第三章 系統(tǒng)的設(shè)計(jì)13</p><p> 3.1功能需求13</p><p> 3.1.1用戶觸發(fā)事件13</p><p> 3.1.2記事本基本需求控制13</p><p> 3.2系能需求14</p><p> 3.2.1響應(yīng)時(shí)間14</p><p> 3.2.2穩(wěn)
6、定性14</p><p> 3.2.3安全性14</p><p> 第四章 程序的設(shè)計(jì)15</p><p> 4.1 記事本組件的設(shè)計(jì)15</p><p> 4.2 記事本邏輯設(shè)計(jì)15</p><p> 4.3記事本存儲(chǔ)實(shí)現(xiàn)15</p><p> 4.3.1數(shù)據(jù)存儲(chǔ)之sh
7、aredPreferences16</p><p> 4.3.2數(shù)據(jù)存儲(chǔ)之files16</p><p> 4.3.3數(shù)據(jù)存儲(chǔ)之network18</p><p> 4.3.4數(shù)據(jù)存儲(chǔ)之SQLite19</p><p> 4.3.5 數(shù)據(jù)存儲(chǔ)之ContentProviders22</p><p>
8、第五章 程序的開發(fā)22</p><p> 5.1主activity的設(shè)計(jì)22</p><p> 5.2編輯內(nèi)容23</p><p> 5.3刪除記事25</p><p> 第六章 系統(tǒng)的測(cè)試25</p><p> 6.1 添加新記事25</p><p> 6.2 查看記事
9、29</p><p> 6.3 刪除/修改/刪除記事30</p><p><b> 第七章 總結(jié)31</b></p><p><b> 參考文獻(xiàn)32</b></p><p><b> 致 謝33</b></p><p><b
10、> 第一章 引言</b></p><p> 1.1研究目的及意義</p><p> 這次課題的目的是在Android系統(tǒng)的手機(jī)開發(fā)平臺(tái)之上,研究與開發(fā)一個(gè)記事本軟件,提供適用手機(jī)的記事本功能服務(wù)。</p><p> 首先,記事本的基本功能就是記事,手機(jī)用戶首先用到的就是文本記事,輸入事務(wù)信息以文本的形式展現(xiàn)出來(lái),存儲(chǔ)起來(lái)。隨著用戶需求的增加
11、,可能希望用圖形來(lái)代替文本來(lái)記事,用戶之間打開記事本,看到圖片就能聯(lián)系自己所記載的事務(wù)信息。這樣免去了輸入文字的麻煩,反而會(huì)更簡(jiǎn)單。又或者是文本與圖片的交叉運(yùn)用,可以讓用戶自己選擇自己喜歡的記事方式,更加自由與便捷。所以此功能的意義是讓簡(jiǎn)單的記事信息能以文本和圖形表達(dá),更加豐富多彩。</p><p> 其次,在支持傳統(tǒng)的文字記事方式下,還要支持語(yǔ)音記事。因?yàn)橛脩粜枰非蟾雍?jiǎn)單的記事方式,不需要手動(dòng)輸入文字,而
12、是直接語(yǔ)音記事。語(yǔ)音直接保存,有利于下次用戶直接查看時(shí)點(diǎn)擊按鈕就可以播放相應(yīng)的錄音信息了。這對(duì)于某些眼睛不太好的,或者說(shuō)更喜歡聽的用戶是很有吸引力的。</p><p> 再次,如果記事本的信息很多,而用戶又需要快速找到自己需要的記事信息,這時(shí)候內(nèi)容檢索就非常有用了。對(duì)于業(yè)務(wù)繁忙,或者是經(jīng)常寫備忘錄記事的群體,</p><p> 這個(gè)內(nèi)容檢索功能能帶給用戶很多的便利。讓他們更加高效的利用
13、手機(jī),節(jié)約時(shí)間,高效工作與生活。</p><p> 最后,針對(duì)商務(wù)人士,或者是經(jīng)常使用郵箱的用戶來(lái)說(shuō),有時(shí)候希望通過(guò)查看郵箱的同時(shí)查看記事本的信息,一次性獲取全部。所以記事本同步郵箱功能能夠?yàn)橛脩魩?lái)更多的功能與便利。</p><p> 1.2 國(guó)內(nèi)外研究現(xiàn)狀分析</p><p> 目前國(guó)內(nèi)外有4款比較火的記事本軟件。分別是Evernote,小米便簽,Note
14、Everything,麥庫(kù)記事。</p><p> Evernote 在軟件界面方面界面清爽,需注冊(cè)登錄后才可使用,圖標(biāo)布局比較協(xié)調(diào);記事筆記方面可編寫內(nèi)容,添加標(biāo)簽,支持上傳圖片、音頻、視頻、文件等附件;特色功能方面具有搜索筆記和發(fā)送筆記、定位服務(wù)、同步等功能;資源占用方面內(nèi)存占最多,CPU占用適中。</p><p> 小米便簽在軟件界面方面界面功能簡(jiǎn)單,可查看和新建便簽,菜單功能相
15、對(duì)豐富;記事方面只支持文字內(nèi)容,可以選擇桌面Widget顏色、字體大小等;特色功能方面可以移進(jìn)文件夾和分享、備份、還原和設(shè)置保護(hù)密碼;資源占用方面內(nèi)存占用較中,CPU占用最少。</p><p> Note Everything界面簡(jiǎn)潔,上方有新建記事和搜索等按鈕,菜單功能非常豐富;支持文本、繪圖、語(yǔ)音、圖片、清單、圖庫(kù)、視頻、條形碼等形式,可固定顯示記事;特色是單個(gè)記事加密,數(shù)據(jù)備份、還原、導(dǎo)入、到處,創(chuàng)建快捷
16、方式;內(nèi)存占用最少,CPU占用較中。</p><p> 麥庫(kù)記事界面比較精美,菜單功能相對(duì)簡(jiǎn)單;可選分類、加標(biāo)簽、附件,支持拍照和實(shí)時(shí)錄音。特色是筆記搜索和分類,網(wǎng)絡(luò)同步和筆記分享;內(nèi)存占用適中,CPU占用最多。</p><p><b> 1.3 發(fā)展趨勢(shì)</b></p><p> 隨著3G應(yīng)用的不斷開發(fā)推廣,用戶會(huì)越來(lái)越需要更加個(gè)性化、
17、優(yōu)質(zhì)化的多媒體數(shù)據(jù)服務(wù),用戶希望能夠隨時(shí)、隨地?zé)o縫利用3G網(wǎng)絡(luò)進(jìn)行辦公、網(wǎng)上交易、游戲娛樂、欣賞影視節(jié)目、收聽和下載音樂等。根據(jù)觀察,在不久的將來(lái),移動(dòng)手機(jī)終端將會(huì)在以下若干方面具有新的發(fā)展。 </p><p> 首先,提供智能提醒服務(wù),手機(jī)能夠與用戶實(shí)現(xiàn)密切配合,并監(jiān)控用戶的個(gè)性化設(shè)置(保持在本地或者云端),當(dāng)重要時(shí)間點(diǎn)或關(guān)鍵事物需要用戶注意時(shí),手機(jī)會(huì)向用戶發(fā)出“提醒”服務(wù),服務(wù)包括日程提醒、交通狀
18、況、最佳行車路線、最佳泊位、優(yōu)惠活動(dòng)、實(shí)時(shí)新聞、體育賽事、天氣情況、股市行情、好友活動(dòng)、親友生日等。 </p><p> 其次,提供虛擬現(xiàn)實(shí)體驗(yàn),手機(jī)可以借助傳感器、周邊設(shè)備了解到您的身邊環(huán)境,并根據(jù)收集到的信息,智能的為您提供有用的信息,如在網(wǎng)絡(luò)世界養(yǎng)的寵物,可以借助音頻設(shè)備表達(dá)叫聲,借助馬達(dá)和位置傳感器等傳遞其跳、躍等行為信息;也可以在用戶購(gòu)物時(shí),提供相關(guān)的同類產(chǎn)品價(jià)格參考,提醒用戶附近的那個(gè)賣場(chǎng)
19、更物美價(jià)廉;根據(jù)實(shí)際場(chǎng)景,為用戶及時(shí)提供正在操控的產(chǎn)品的使用方法提醒。 </p><p> 接著,發(fā)揮物聯(lián)網(wǎng)的優(yōu)勢(shì),借助無(wú)處不在的傳感器,可以感知并分享到周圍世界的海量信息,這些信息將在“云端”得到整合,幫助用戶及時(shí)、準(zhǔn)確的獲得氣息信息、交通路況。另外借助物聯(lián)網(wǎng),用戶間可以方便、快速的分享資源,協(xié)助和交互。如進(jìn)行端到端的多人游戲、照片分享、書籍分享、音樂分享等。 </p>&l
20、t;p> 然后,作為經(jīng)濟(jì)工具,在交通或者信息不發(fā)達(dá)的情況下,幫助用戶找到最佳的市場(chǎng),獲得有價(jià)值的幫助信息,幫助用戶從事的經(jīng)濟(jì)活動(dòng)的收益率。 </p><p> 最后,更加智能、安全的設(shè)備,隨著智能手機(jī)的不斷普及和更加智能,手機(jī)軟件的更新、升級(jí)將會(huì)變得越發(fā)簡(jiǎn)單,并會(huì)為用戶提供工具或信息,讓用戶有能力和權(quán)力決策那些內(nèi)容可以瀏覽、下載或分享。在安全性上也將更加出色,能夠十分有效的幫助用戶進(jìn)行獲取到的
21、內(nèi)容的管理,保護(hù)用戶的個(gè)人隱私和基于手機(jī)的金融活動(dòng)如電子錢包、在線支付、在線貿(mào)易等。</p><p><b> 1.4 可行性分析</b></p><p> ?。保┘夹g(shù)可行性-----本項(xiàng)目?jī)H需要一臺(tái)裝有eclipse及配置好android開發(fā)環(huán)境的計(jì)算機(jī)即可,對(duì)計(jì)算機(jī)本身有一定的要求,它可以使用windows xp及其以上版本,mac os,linux等操作系統(tǒng)。
22、</p><p> 2) 經(jīng)濟(jì)可行性-----由于本軟件開發(fā)只有一個(gè)單個(gè)人,一臺(tái)電腦就行,基本不需要太大的成本。在經(jīng)濟(jì)上完全可行。</p><p> 3) 操作可行性-----界面設(shè)計(jì)時(shí)充分考慮用戶的習(xí)慣以及手機(jī)方面的局限性,程序必須要很簡(jiǎn)單;本程序只涉及到開發(fā)環(huán)境配置,安卓組件的熟悉,以及安卓平臺(tái)上的數(shù)據(jù)存儲(chǔ)。并沒有太大的難度,所以,該項(xiàng)目完全有可操作性。</p>&l
23、t;p><b> 1.5 基本內(nèi)容</b></p><p> 基本內(nèi)容是在android手機(jī)平臺(tái)下,研究與開發(fā)記事本軟件。具體要設(shè)計(jì)與實(shí)現(xiàn)的功能是:</p><p> (1) 設(shè)計(jì)實(shí)現(xiàn)”添加新記事”,”編輯內(nèi)容”,”刪除當(dāng)前記事”這三個(gè)主要的功能模塊。 (2) 分析并解決實(shí)現(xiàn)中的若干技術(shù)問(wèn)題,像組件的選擇以及保存方式的選擇。 </p>
24、<p> (3)進(jìn)行測(cè)試并分析結(jié)果。</p><p> 當(dāng)然記事本的基本功能,建立新文件,修改現(xiàn)有文件,刪除文件,查看已建立文件等功能是首先必須完成的??梢跃帉憙?nèi)容,編輯及刪除,除了支持文字內(nèi)容的記事,還支持圖片等形式,讓記事的方式多樣化。</p><p> 事本軟件的界面設(shè)計(jì)力求簡(jiǎn)潔,給人清爽的感覺,讓圖標(biāo)及按鈕以協(xié)調(diào)的布局呈現(xiàn)出了,菜單功能要相對(duì)簡(jiǎn)單,讓用戶操作方便
25、,不能復(fù)雜。對(duì)于記事本的特色功能實(shí)現(xiàn)是要支持語(yǔ)音記事,讓用戶有不同的記事體驗(yàn);同時(shí)還能夠搜索筆記,在紛繁復(fù)雜的記事文件中搜索出用戶想要獲取的文件,這樣給用戶的備忘生活帶來(lái)了高效,從而讓用戶體會(huì)到此款軟件的實(shí)用。并且能夠?qū)嵙?xí)同步郵箱功能,讓用戶在電腦上或手機(jī)上查收郵件能夠看到記事信息,這是功能的多方便利。</p><p> 記事本軟件要內(nèi)存占用適中,CPU占用也是適中,這樣讓軟件運(yùn)行順暢。</p>
26、<p> 第二章 開發(fā)環(huán)境的安裝和配置</p><p> 2.1開發(fā)包及其工具的介紹</p><p> Android以java作為開發(fā)語(yǔ)言,jdk是進(jìn)行java開發(fā)時(shí)必需的開發(fā)包。eclipse是一款非常優(yōu)秀的開源IDE,在大量插件的”配合”下,完全可以滿足從企業(yè)級(jí)java應(yīng)用到手機(jī)終端java游戲的開發(fā)。Google官方也提供了基于Eclipse的android開發(fā)插
27、件ADT,所以本軟件開發(fā)選擇Eclipse作為開發(fā)IDE。</p><p> Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由谷歌公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。尚未有統(tǒng)一中文名稱,中國(guó)大陸地區(qū)較多人使用“安卓”或“安智”Android操作系統(tǒng)最初由Andy Rubin開發(fā),主要支持手機(jī)。2005年8月由Google收購(gòu)注資。2007年11月,Googl
28、e與84家硬件制造商、軟件開發(fā)商及電信營(yíng)運(yùn)商組建開放手機(jī)聯(lián)盟共同研發(fā)改良Android系統(tǒng)。隨后Google以Apache開源許可證的授權(quán)方式,發(fā)布了Android的源代碼。第一部Android智能手機(jī)發(fā)布于2008年10月。Android逐漸擴(kuò)展到平板電腦及其他領(lǐng)域上,如電視,數(shù)碼相機(jī),游戲機(jī)等。2011年第一季度,Android在全球的市場(chǎng)份額首次超過(guò)塞班系統(tǒng),躍居全球第一。 2013年的第四季度,Android平臺(tái)手機(jī)的全球市場(chǎng)份
29、額已經(jīng)達(dá)到78.1%。2013年09月24日谷歌開發(fā)的操作系統(tǒng)Android在迎來(lái)了5歲生日,全世界采用這款系統(tǒng)的設(shè)備數(shù)量已經(jīng)達(dá)到10億臺(tái)。</p><p> JDK包含的基本組件包括:</p><p> javac – 編譯器,將源程序轉(zhuǎn)成字節(jié)碼</p><p> jar – 打包工具,將相關(guān)的類文件打包成一個(gè)文件</p><p>
30、 javadoc – 文檔生成器,從源碼注釋中提取文檔</p><p> jdb – debugger,查錯(cuò)工具</p><p> java – 運(yùn)行編譯后的java程序(.class后綴的)</p><p> appletviewer:小程序?yàn)g覽器,一種執(zhí)行HTML文件上的Java小程序的Java瀏覽器。</p><p> Java
31、h:產(chǎn)生可以調(diào)用Java過(guò)程的C過(guò)程,或建立能被Java程序調(diào)用的C過(guò)程的頭文件。</p><p> Javap:Java反匯編器,顯示編譯類文件中的可訪問(wèn)功能和數(shù)據(jù),同時(shí)顯示字節(jié)代碼含義。</p><p> Jconsole: Java進(jìn)行系統(tǒng)調(diào)試和監(jiān)控的工具</p><p> Eclipse是一個(gè)開放源代碼的軟件開發(fā)項(xiàng)目,專注于為高度集成的工具開發(fā)提供一個(gè)
32、全功能的、具有商業(yè)品質(zhì)的工業(yè)平臺(tái)。它主要由Eclipse項(xiàng)目、Eclipse工具項(xiàng)目和Eclipse技術(shù)項(xiàng)目三個(gè)項(xiàng)目組成,具體包括四個(gè)部分組成——Eclipse Platform、JDT、CDT和PDE。JDT支持Java開發(fā)、CDT支持C開發(fā)、PDE用來(lái)支持插件開發(fā),Eclipse Platform則是一個(gè)開放的可擴(kuò)展IDE,提供了一個(gè)通用的開發(fā)平臺(tái)。它提供建造塊和構(gòu)造并運(yùn)行集成軟件開發(fā)工具的基礎(chǔ)。Eclipse Platform允許
33、工具建造者獨(dú)立開發(fā)與他人工具無(wú)縫集成的工具從而無(wú)須分辨一個(gè)工具功能在哪里結(jié)束,而另一個(gè)工具功能在哪里開始。</p><p> 2.2 Android開發(fā)平臺(tái)搭建步驟:</p><p> 首先到http://www。eclipse。org/downloads/下載Eclipse集成開發(fā)環(huán)境并且解壓,這里推薦下載Java EE 集成版本,可以為平臺(tái)的搭建省下不少工作。接著再去http://
34、java。sun。com/javase/downloads/index。jsp 站點(diǎn)下載SDK后安裝,下載http://dl。google。com/android/android-sdk-windows-1。5_r1。zip,Android SDK1。5后解壓。第一步下載工序就結(jié)束了。</p><p> ②雙擊Eclipse解壓后目錄中的eclipse。exe然后啟動(dòng),選擇Eclipse菜單中的Help->
35、; Install New Software-> 選項(xiàng)卡上的Available Software,點(diǎn)擊右側(cè)的“Add”輸入http://dl-ssl。google。com/android/eclipse/后確定,然后在“Work with”下拉菜單中選擇剛才輸入的網(wǎng)址。過(guò)一會(huì)就會(huì)出現(xiàn)一個(gè)Developer Tools選項(xiàng),勾上以后點(diǎn)擊Next以后Eclipse會(huì)自動(dòng)網(wǎng)上查找Android 開發(fā)工具插件,然后找到Android DD
36、MS和Android Development Tools,選中這兩個(gè)點(diǎn)擊Finish,Eclipse就會(huì)自動(dòng)下載并安裝Android插件了,最后會(huì)提示重啟Eclipse。</p><p> ?、壑貑⒑筮x擇Eclipse菜單中的Windows-> Preferences 在左側(cè)的Android項(xiàng)目中SDK Location中填入Android SDK解壓后的目錄,然后點(diǎn)擊Apply。</p>&
37、lt;p> ?、茉赪indowsXP的系統(tǒng)變量中的path變量中添加一個(gè)值,該值指向解壓后的Android SDK目錄下的tools文件夾。</p><p><b> 2.3硬件環(huán)境</b></p><p> 1. Android設(shè)備,如Android手機(jī)或平板電腦:主頻在1Ghz及以上,內(nèi)存為512MB以上,系統(tǒng)版本為Android2.1及以上。</
38、p><p> 2.在eclipse平臺(tái)下安卓了安卓android SDK 插件的電腦:Window 系統(tǒng) P4 1.8主頻以上電腦</p><p><b> 2.4軟件環(huán)境</b></p><p> 1.操作系統(tǒng):Windows7 </p><p> 2.IDE:Eclipse8.0</p><p
39、> 3.Android SDK集成環(huán)境</p><p><b> 2.5 系統(tǒng)架構(gòu)</b></p><p> Android的系統(tǒng)架構(gòu)和其操作系統(tǒng)一樣,采用分層的架構(gòu)如下圖:</p><p> 圖2.5-Android的系統(tǒng)架構(gòu)和其操作系統(tǒng)分層的架構(gòu)</p><p> 從架構(gòu)圖看,Android分為四個(gè)
40、層,從高層到低層分別是應(yīng)用程序?qū)?、?yīng)用程序框架層、系統(tǒng)運(yùn)行庫(kù)層和Linux內(nèi)核層。</p><p><b> 應(yīng)用程序</b></p><p> Android會(huì)同一系列核心應(yīng)用程序包一起發(fā)布,該應(yīng)用程序包包括客戶端,SMS短消息程序,日歷,地圖,瀏覽器,聯(lián)系人管理程序等。所有的應(yīng)用程序都是使用JAVA語(yǔ)言編寫的。</p><p><
41、b> 應(yīng)用程序框架</b></p><p> 開發(fā)人員也可以完全訪問(wèn)核心應(yīng)用程序所使用的API框架。該應(yīng)用程序的架構(gòu)設(shè)計(jì)簡(jiǎn)化了組件的重用;任何一個(gè)應(yīng)用程序都可以發(fā)布它的功能塊并且任何其它的應(yīng)用程序都可以使用其所發(fā)布的功能塊(不過(guò)得遵循框架的安全性)。同樣,該應(yīng)用程序重用機(jī)制也使用戶可以方便的替換程序組件。</p><p> 隱藏在每個(gè)應(yīng)用后面的是一系列的服務(wù)和系統(tǒng),
42、 其中包括;</p><p> 豐富而又可擴(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&
43、gt;<p> 資源管理器(Resource Manager)提供 非代碼資源的訪問(wèn),如本地字符串,圖形,和布局文件(Layout files )。</p><p> 通知管理器 (Notification Manager) 使得應(yīng)用程序可以在狀態(tài)欄中顯示自定義的提示信息。</p><p> 活動(dòng)管理器( Activity Manager) 用來(lái)管理應(yīng)用程序生命周期并提
44、供常用的導(dǎo)航回退功能。</p><p><b> 系統(tǒng)運(yùn)行庫(kù)</b></p><p> Android 包含一些C/C++庫(kù),這些庫(kù)能被Android系統(tǒng)中不同的組件使用。它們通過(guò) Android 應(yīng)用程序框架為開發(fā)者提供服務(wù)。以下是一些核心庫(kù):</p><p> ?。?)系統(tǒng) C 庫(kù)一個(gè)從BSD繼承來(lái)的標(biāo)準(zhǔn)C系統(tǒng)函數(shù)庫(kù) Libc ),
45、它是專門為基于Embedded linux的設(shè)備定制的。</p><p> (2)媒體庫(kù) 基于PacketVideo OpenCORE;該庫(kù)支持多種常用的音頻、視頻格式回放和錄制,同時(shí)支持靜態(tài)圖像文件。編碼格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。</p><p> (3)Surface Manager 對(duì)顯示子系統(tǒng)的管理,并且為多個(gè)應(yīng)用
46、程序提 供了2D和3D圖層的無(wú)縫融合。</p><p> ?。?)LibWebCore 一個(gè)最新的web瀏覽器引擎用,支持Android瀏覽器和一個(gè)可嵌入的web視圖。</p><p> 2.6 工程主體架構(gòu)</p><p> 工程主體架構(gòu)如下圖所示:</p><p><b> 1.str文件夾</b></
47、p><p> Str文件夾下com.samplenote包下Java為系統(tǒng)主要Activity類:</p><p> AddActivity.java是增加功能的Activity,通過(guò)設(shè)置兩個(gè)按鈕的監(jiān)聽來(lái)實(shí)現(xiàn)對(duì)輸入文本的存儲(chǔ)或退出。DbAdapter.java是數(shù)據(jù)庫(kù)基本操作功能實(shí)現(xiàn)的Activity,類中主要的函數(shù)實(shí)現(xiàn)的功能是:打開、關(guān)閉數(shù)據(jù)庫(kù),獲得時(shí)間,插入數(shù)據(jù),刪除輸入,獲得數(shù)據(jù),查
48、詢數(shù)據(jù),更新數(shù)據(jù),根據(jù)內(nèi)容生成標(biāo)題,創(chuàng)建表和刪除表。NotepadCheckActivity.java是在系統(tǒng)界面中生成記事列表的Activity。通過(guò)onCreate函數(shù)實(shí)現(xiàn)。NotPadActivity.java為系統(tǒng)主要功能實(shí)現(xiàn)的Activity。通過(guò)監(jiān)聽的方法來(lái)實(shí)現(xiàn)記事的刪除、編輯、搜索和短信發(fā)送功能。</p><p><b> 2.gen文件夾</b></p>&l
49、t;p> gen文件夾是項(xiàng)目自動(dòng)生成的文件夾R.java是工程下各個(gè)資源的標(biāo)識(shí)符負(fù)責(zé)所有資源的索引。</p><p><b> 3.bin文件夾</b></p><p> bin文件夾是編譯后的字節(jié)碼存放的目錄,編譯的過(guò)程首先是編譯成為android java虛擬機(jī)文件classes.dex,再打包成APK格式的包。</p><p>
50、;<b> 4.res文件夾</b></p><p> Res是資源目錄,res資源目錄,它包含項(xiàng)目中的資源文件并將其編譯進(jìn)應(yīng)用程序中,向此目錄添加資源時(shí),會(huì)被R.java自動(dòng)記錄。res目錄存放所有程序中用到的資源文件?!百Y源文件”指的資料文件、圖片等。子目錄有:drawable、layout、values。 </p><p> layout。屏幕布局目錄,
51、main.xml是主界面的布局文件、add.xml是增加數(shù)據(jù)頁(yè)面的布局文件、check_notepad.xml是搜索功能時(shí)的布局文件、click.xml是幾個(gè)功能按鈕的布局文件、list.xml是顯示記事列表界面的布局文件、modtitle.xml是修改功能時(shí)所需文本框的布局文件。 values。參數(shù)值目錄,存放軟件所需要顯示的各種文字和一些數(shù)據(jù)。strings.xml存放各種文字,還可以存放不同類型的數(shù)據(jù)。style.xml負(fù)責(zé)存放界
52、面顏色、文本框大小等信息。</p><p> 5.AndroidManifest.xml</p><p> AndroidManifest.xml描述了package中暴露的組件(activities, services, 等等),他們各自的實(shí)現(xiàn)類,各種能被處理的數(shù)據(jù)和啟動(dòng)位置。 除了能聲明程序中的Activities, ContentProviders, Services, 和Int
53、ent Receivers。</p><p><b> 第三章 系統(tǒng)的設(shè)計(jì)</b></p><p><b> 3.1功能需求</b></p><p> 3.1.1用戶觸發(fā)事件</p><p> 用戶通過(guò)點(diǎn)擊屏幕來(lái)實(shí)現(xiàn)與數(shù)據(jù)的交互。記事本上的相關(guān)按鈕是操作請(qǐng)求的輸入設(shè)備,屏幕是用于向用戶輸出信
54、息的輸出設(shè)備。</p><p> 事件是來(lái)自人操作的重要的消息,觸發(fā)時(shí)間如下表所示記事本系統(tǒng)中可能發(fā)生的所有事件響應(yīng)及其執(zhí)行結(jié)果。</p><p> 3.1.2記事本基本需求控制</p><p> 系統(tǒng)用例圖描述的是用戶眼中的系統(tǒng),即用戶希望系統(tǒng)有哪些功能和通過(guò)哪些操作完成這些功能。一個(gè)用例代表用戶與系統(tǒng)交互的一種方式。正如前面介紹過(guò)的,識(shí)別用例的最好方法是從
55、參與者的角度分析系統(tǒng)。在Android記事本中,首先的參與者是用戶。系統(tǒng)E-R圖如下圖所示,它從用戶角度描述了該系統(tǒng)應(yīng)該具有何種功能。</p><p><b> 3.2系能需求</b></p><p><b> 3.2.1響應(yīng)時(shí)間</b></p><p> 一般來(lái)說(shuō),基于Android開發(fā)出來(lái)的應(yīng)用程序響應(yīng)時(shí)間很大程
56、度上依賴于安卓設(shè)備的硬件配置和系統(tǒng)版本。因此,用戶的安卓設(shè)備的硬件配置和系統(tǒng)版本都會(huì)對(duì)應(yīng)用程序的響應(yīng)時(shí)間又一定的影響。</p><p><b> 3.2.2穩(wěn)定性</b></p><p> 應(yīng)用程序?yàn)楸镜貞?yīng)用,用戶只需通過(guò)自己的硬件就可以使用應(yīng)用。</p><p><b> 3.2.3安全性</b></p>
57、;<p> Android為開源系統(tǒng)本身比較穩(wěn)定,同時(shí)應(yīng)用程序無(wú)需連接網(wǎng)絡(luò)因此不存在信息網(wǎng)絡(luò)泄露的風(fēng)險(xiǎn)。</p><p><b> 第四章 程序的設(shè)計(jì)</b></p><p> 4.1 記事本組件的設(shè)計(jì)</p><p> 本項(xiàng)目涉及到以下組件:</p><p> TextView:“記事本”,“新
58、建記事”,“編輯記事”等標(biāo)題</p><p> EditView:“記事本的標(biāo)題”,“內(nèi)容”等</p><p> Button:“確定”按鈕</p><p> Menu:“添加新記事”,“編譯內(nèi)容”,“刪除當(dāng)前記事”等</p><p> 4.2 記事本邏輯設(shè)計(jì)</p><p> 1.首先是添加新記事:<
59、/p><p> 如果當(dāng)前沒有記事,點(diǎn)擊”menu”后只有一個(gè)菜單選項(xiàng)”添加新記事”,寫完記事之后,點(diǎn)擊”確定”進(jìn)行保存</p><p><b> 2.”編輯內(nèi)容”:</b></p><p> 選中要編輯的那一個(gè)記事,然后點(diǎn)擊”menu”菜單,會(huì)出現(xiàn)三個(gè)選項(xiàng)”新建記事”,” 編輯內(nèi)容”,”刪除當(dāng)前記
60、事”,點(diǎn)擊”編輯內(nèi)容”對(duì)被選中的記事進(jìn)行編輯,然后點(diǎn)擊”確定”加以保存.</p><p><b> 3.”刪除記事”</b></p><p> 點(diǎn)擊上下鍵,選中要?jiǎng)h除的記事,然后點(diǎn)擊”menu”菜單,然后點(diǎn)擊”刪除當(dāng)前記事”,對(duì)選中的記事加以刪除.</p><p> 4.3記事本存儲(chǔ)實(shí)現(xiàn)</p><p> And
61、roid 中一共提供了5種數(shù)據(jù)存儲(chǔ)方式,但是由于存儲(chǔ)的這些數(shù)據(jù)都是其應(yīng)用程序私有的,所以如果需要在其他應(yīng)用程序中使用這些數(shù)據(jù).就要使用android提供的ContentProviders.</p><p> ContentProviders:Android提供的一個(gè)特殊的存儲(chǔ)數(shù)據(jù)的類型,它提供了一套標(biāo)準(zhǔn)的接口來(lái)獲取,操作數(shù)據(jù).</p><p> Shared Preference:用來(lái)
62、存儲(chǔ)”key-value paires”格式的數(shù)據(jù),它是一個(gè)輕量級(jí)的鍵值存儲(chǔ)機(jī)制,只可以存儲(chǔ)基本數(shù)據(jù)類型.</p><p> Files:它通過(guò)FileInputStream 和 FileOutputStream對(duì)文件進(jìn)行操作.但是在Android中,文件是一個(gè)應(yīng)用程序私有的,一個(gè)應(yīng)用程序無(wú)法讀寫其他應(yīng)用程序的文件</p><p> SQLite:android提供的一個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù),
63、支持SQL語(yǔ)句</p><p> Network:通過(guò)網(wǎng)絡(luò)來(lái)存儲(chǔ)和獲得數(shù)據(jù)</p><p> 4.3.1數(shù)據(jù)存儲(chǔ)之sharedPreferences</p><p> 通過(guò)getpreferences()方法來(lái)獲得Preference對(duì)象,</p><p> 通過(guò)”SharePreferences.Editor editor=uiSt
64、ate.edit;”取得編輯對(duì)象,然后通過(guò)”editor.put……()”方法添加數(shù)據(jù),最后通過(guò)commit()方法來(lái)保存數(shù)據(jù).</p><p> 4.3.2數(shù)據(jù)存儲(chǔ)之files</p><p> 我們可以通過(guò)自定義的save()方法來(lái)保存數(shù)據(jù),同時(shí)也可以通過(guò)load()方法來(lái)獲取文件中的數(shù)據(jù).</p><p> boolean save()</p&g
65、t;<p><b> {</b></p><p> Properties properties = new Properties();</p><p> /* 將數(shù)據(jù)打包成Properties */</p><p> properties.put("bmusic", String.valueOf(mbM
66、usic));</p><p><b> try</b></p><p><b> {</b></p><p> FileOutputStream stream = this.openFileOutput("music.cfg", Context.MODE_WORLD_WRITEABLE);<
67、;/p><p> /* 將打包好的數(shù)據(jù)寫入文件中 */</p><p> properties.store(stream, "");</p><p><b> }</b></p><p> catch (FileNotFoundException e)</p><p>&l
68、t;b> {</b></p><p> return false;</p><p><b> }</b></p><p> catch (IOException e)</p><p><b> {</b></p><p> return fals
69、e;</p><p><b> }</b></p><p> return true;</p><p><b> }</b></p><p> /* 裝載、讀取數(shù)據(jù) */</p><p> void load()</p><p><b&
70、gt; {</b></p><p> /* 構(gòu)建Properties對(duì)對(duì)象 */</p><p> Properties properties = new Properties();</p><p><b> try</b></p><p><b> {</b></p&g
71、t;<p> /* 開發(fā)文件 */</p><p> FileInputStream stream = this.openFileInput("music.cfg");</p><p> /* 讀取文件內(nèi)容 */</p><p> properties.load(stream);</p><p>&l
72、t;b> }</b></p><p> catch (FileNotFoundException e)</p><p><b> {</b></p><p><b> return;</b></p><p><b> }</b></p>
73、<p> catch (IOException e)</p><p><b> {</b></p><p><b> return;</b></p><p><b> }</b></p><p> /* 取得數(shù)據(jù) */</p><p&g
74、t; mbMusic = Boolean.valueOf(properties.get("bmusic").toString());</p><p><b> }</b></p><p> 4.3.3數(shù)據(jù)存儲(chǔ)之network</p><p> 通過(guò)網(wǎng)絡(luò)來(lái)獲取和保存數(shù)據(jù)資源,將數(shù)據(jù)存儲(chǔ)到網(wǎng)絡(luò)上的方法很多,比如將要保存的
75、數(shù)據(jù)以文件的方式上傳到服務(wù)器,發(fā)送郵件等.</p><p> 下面我們看下如何實(shí)現(xiàn)讀取網(wǎng)絡(luò)文件.</p><p> String myString = null;</p><p><b> try</b></p><p><b> {</b></p><p> /*
76、 定義我們要訪問(wèn)的地址url */</p><p> URL uri = new URL("http://192.168.1.110:8080/android.txt");</p><p> /* 打開這個(gè)url連接 */</p><p> URLConnection ucon = uri.openConnection();</p&g
77、t;<p> /* 從上面的鏈接中取得InputStream */</p><p> InputStream is = ucon.getInputStream();</p><p> BufferedInputStream bis = new BufferedInputStream(is);</p><p> ByteArrayBuffer b
78、af = new ByteArrayBuffer(100);</p><p> int current = 0;</p><p> /* 一直讀到文件結(jié)束 */</p><p> while ((current = bis.read()) != -1)</p><p><b> {</b></p>
79、<p> baf.append((byte) current);</p><p><b> }</b></p><p> myString = new String(baf.toByteArray());</p><p><b> }</b></p><p> catch (Ex
80、ception e)</p><p><b> {</b></p><p> myString = e.getMessage();</p><p><b> }</b></p><p> 另外由于在程序中訪問(wèn)了外部網(wǎng)絡(luò),我們需要在AndroidManifest.xml文件中給予權(quán)限,代碼如下
81、</p><p> <uses-permissiion android:name=”android.permission.INTERNET”/></p><p> 4.3.4數(shù)據(jù)存儲(chǔ)之SQLite</p><p> 這個(gè)方法在數(shù)據(jù)保存中非常常用.只是它只會(huì)被一個(gè)程序讀取數(shù)據(jù),不能在不同程序間共享數(shù)據(jù).</p><p>
82、/*創(chuàng)建和打開數(shù)據(jù)庫(kù)*/</p><p> mSQLiteDatabase = this.openOrCreateDatabase(DATABASE_NAME, MODE_PRIVATE, null);</p><p><b> /*創(chuàng)建表*/</b></p><p> mSQLiteDatabase.execSQL(CREATE_TAB
83、LE);</p><p> /* 刪除數(shù)據(jù)庫(kù) */</p><p> public void DeleteDataBase()</p><p><b> {</b></p><p> this.deleteDatabase(DATABASE_NAME);</p><p> this.fi
84、nish();</p><p><b> }</b></p><p> /* 刪除一個(gè)表 */</p><p> public void DeleteTable()</p><p><b> {</b></p><p> mSQLiteDatabase.execSQ
85、L("DROP TABLE " + TABLE_NAME);</p><p> this.finish();</p><p><b> }</b></p><p> /* 更新一條數(shù)據(jù) */</p><p> public void UpData()</p><p>&
86、lt;b> {</b></p><p> ContentValues cv = new ContentValues();</p><p> cv.put(TABLE_NUM, miCount);</p><p> cv.put(TABLE_DATA, "修改后的數(shù)據(jù)" + miCount);</p><
87、;p> /* 更新數(shù)據(jù) */</p><p> mSQLiteDatabase.update(TABLE_NAME, cv, TABLE_NUM + "=" + Integer.toString(miCount - 1), null);</p><p> UpdataAdapter();</p><p><b> }<
88、;/b></p><p> /* 向表中添加一條數(shù)據(jù) */</p><p> public void AddData()</p><p><b> {</b></p><p> ContentValues cv = new ContentValues();</p><p> cv.
89、put(TABLE_NUM, miCount);</p><p> cv.put(TABLE_DATA, "測(cè)試數(shù)據(jù)庫(kù)數(shù)據(jù)" + miCount);</p><p> /* 插入數(shù)據(jù) */</p><p> mSQLiteDatabase.insert(TABLE_NAME, null, cv);</p><p>
90、 miCount++;</p><p> UpdataAdapter();</p><p><b> }</b></p><p> /* 從表中刪除指定的一條數(shù)據(jù) */</p><p> public void DeleteData()</p><p><b> {</b
91、></p><p> /* 刪除數(shù)據(jù) */</p><p> mSQLiteDatabase.execSQL("DELETE FROM " + TABLE_NAME + " WHERE _id=" + Integer.toString(miCount));</p><p> miCount--;</p>
92、<p> if (miCount < 0)</p><p><b> {</b></p><p> miCount = 0;</p><p><b> }</b></p><p> UpdataAdapter();</p><p><b&g
93、t; }</b></p><p> /* 更行試圖顯示 */</p><p> public void UpdataAdapter()</p><p><b> {</b></p><p> // 獲取數(shù)據(jù)庫(kù)Phones的Cursor</p><p> Cursor cur
94、 = mSQLiteDatabase.query(TABLE_NAME, new String[] { TABLE_ID, TABLE_NUM, TABLE_DATA }, null, null, null, null, null);</p><p> miCount = cur.getCount();</p><p> if (cur != null && cur.g
95、etCount() >= 0)</p><p><b> {</b></p><p> // ListAdapter是ListView和后臺(tái)數(shù)據(jù)的橋梁</p><p> ListAdapter adapter = new SimpleCursorAdapter(this,</p><p> // 定義Lis
96、t中每一行的顯示模板</p><p> // 表示每一行包含兩個(gè)數(shù)據(jù)項(xiàng)</p><p> android.R.layout.simple_list_item_2,</p><p> // 數(shù)據(jù)庫(kù)的Cursor對(duì)象</p><p><b> cur,</b></p><p> // 從數(shù)據(jù)
97、庫(kù)的TABLE_NUM和TABLE_DATA兩列中取數(shù)據(jù)</p><p> new String[] { TABLE_NUM, TABLE_DATA },</p><p> // 與NAME和NUMBER對(duì)應(yīng)的Views</p><p> new int[] { android.R.id.text1, android.R.id.text2 });</p&
98、gt;<p> /* 將adapter添加到m_ListView中 */</p><p> m_ListView.setAdapter(adapter);</p><p><b> }</b></p><p><b> }</b></p><p> 4.3.5 數(shù)據(jù)存儲(chǔ)之Co
99、ntentProviders</p><p> ContentProviders: Android提供的一個(gè)特殊的存儲(chǔ)數(shù)據(jù)的類型,它提供了一套標(biāo)準(zhǔn)的接口來(lái)獲取,操作數(shù)據(jù).</p><p> 查詢數(shù)據(jù):可以使用ContentProvider.query()或者Activity.managedQuery()方法 修改數(shù)據(jù):通過(guò)ContentResolver.update()方法可以用來(lái)
100、修改數(shù)據(jù) 添加數(shù)據(jù):通過(guò)ContentResolver.insert()方法來(lái)增加一條數(shù)據(jù) 刪除數(shù)據(jù):通過(guò)ContentResolver.delete()方法來(lái)刪除一條記錄</p><p><b> 第五章 程序的開發(fā)</b></p><p> 5.1主activity的設(shè)計(jì)</p><p> 當(dāng)選擇”新建記事本”,”編輯內(nèi)容”
101、,”刪除當(dāng)前記事”等菜單選項(xiàng)時(shí)對(duì)應(yīng)的操作</p><p> public boolean onOptionsItemSelected(MenuItem item) {</p><p> switch (item.getItemId()) {</p><p><b> // 插入一條數(shù)據(jù)</b></p><p>
102、case MENU_ITEM_INSERT:</p><p> Intent intent0 = new Intent(this, ActivityDiaryEditor.class);</p><p> intent0.setAction(ActivityDiaryEditor.INSERT_DIARY_ACTION);</p><p> intent0.s
103、etData(getIntent().getData());</p><p> startActivity(intent0);</p><p> return true;</p><p> // 編輯當(dāng)前數(shù)據(jù)內(nèi)容</p><p> case MENU_ITEM_EDIT:</p><p> Intent in
104、tent = new Intent(this, ActivityDiaryEditor.class);</p><p> intent.setData(item.getIntent().getData());</p><p> intent.setAction(ActivityDiaryEditor.EDIT_DIARY_ACTION);</p><p> s
105、tartActivity(intent);</p><p> return true;</p><p><b> // 刪除當(dāng)前數(shù)據(jù)</b></p><p> case MENU_ITEM_DELETE:</p><p> Uri uri = ContentUris.withAppendedId(getInten
106、t().getData(),</p><p> getListView().getSelectedItemId());</p><p> getContentResolver().delete(uri, null, null);</p><p> renderListView();</p><p><b> }</b&
107、gt;</p><p> return super.onOptionsItemSelected(item);</p><p><b> }</b></p><p><b> 5.2編輯內(nèi)容</b></p><p> protected void onCreate(Bundle savedIn
108、stanceState) {</p><p> super.onCreate(savedInstanceState);//</p><p> setTheme(android.R.style.Theme_Black);</p><p> final Intent intent = getIntent();</p><p> final
109、 String action = intent.getAction();</p><p> setContentView(R.layout.diary_edit);</p><p> mTitleText = (EditText) findViewById(R.id.title);</p><p> mBodyText = (EditText) findVie
110、wById(R.id.body);</p><p><b> //確定按鈕</b></p><p> confirmButton = (Button) findViewById(R.id.confirm);</p><p> if (EDIT_DIARY_ACTION.equals(action)) {// 編輯記事本</p>
111、<p> mState = STATE_EDIT;</p><p> mUri = intent.getData();</p><p> mCursor = managedQuery(mUri, PROJECTION, null, null, null);</p><p> mCursor.moveToFirst();</p>&
112、lt;p> String title = mCursor.getString(1);</p><p> mTitleText.setTextKeepState(title);</p><p> String body = mCursor.getString(2);</p><p> mBodyText.setTextKeepState(body);&l
113、t;/p><p> setResult(RESULT_OK, (new Intent()).setAction(mUri.toString()));</p><p> setTitle("編輯記事");</p><p> } else if (INSERT_DIARY_ACTION.equals(action)) {// 新建日記</p&
114、gt;<p> mState = STATE_INSERT;</p><p> setTitle("新建記事");</p><p><b> } else {</b></p><p> Log.e(TAG, "no such action error");</p>&l
115、t;p><b> finish();</b></p><p><b> r</b></p><p> getContentResolver().insert(Diary.DiaryColumns.CONTENT_URI, values);</p><p> private void updateDiary()
116、 {</p><p> String title = mTitleText.getText().toString();</p><p> String body = mBodyText.getText().toString();</p><p> ContentValues values = new ContentValues();</p>&l
117、t;p> values.put(Diary.DiaryColumns.CREATED, DiaryContentProvider</p><p> .getFormateCreatedDate());</p><p> values.put(Diary.DiaryColumns.TITLE, title);</p><p> values.put(Di
118、ary.DiaryColumns.BODY, body);</p><p> getContentResolver().update(mUri, values,</p><p> null, null);</p><p><b> }</b></p><p><b> } </b>
119、</p><p><b> 5.3刪除記事</b></p><p> private void renderListView() {</p><p> Cursor cursor = managedQuery(getIntent().getData(), PROJECTION, null,</p><p> nu
120、ll, DiaryColumns.DEFAULT_SORT_ORDER);</p><p> SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,</p><p> R.layout.diary_row, cursor, new String[] { DiaryColumns.TITLE,</p><
121、p> DiaryColumns.CREATED }, new int[] { R.id.text1,</p><p> R.id.created });</p><p> setListAdapter(adapter);</p><p><b> 第六章 系統(tǒng)的測(cè)試</b></p><p><b>
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 安卓記事本畢業(yè)論文--基于android平臺(tái)記事本的設(shè)計(jì)與實(shí)現(xiàn)
- android記事本設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)論文】
- 基于安卓android手機(jī)平臺(tái)的記事本設(shè)計(jì)課程設(shè)計(jì)畢業(yè)論文
- 基于android平臺(tái)記事本的設(shè)計(jì)與實(shí)現(xiàn)
- 安卓記事本管理系統(tǒng)
- 基于android記事本開發(fā)論文
- 基于安卓系統(tǒng)的記事本.docx
- 【zs精品】【畢業(yè)論文】基于安卓系統(tǒng)的記事本(全套)
- android記事本開發(fā)論文.doc
- android記事本開發(fā)論文.doc
- 基于android的記事本軟件的設(shè)計(jì)與實(shí)現(xiàn)
- 基于android的記事本設(shè)計(jì)-職業(yè)學(xué)院畢業(yè)論文
- 簡(jiǎn)單記事本的設(shè)計(jì)畢業(yè)論文
- 記事本.zip
- 基于安卓平臺(tái)的個(gè)人記事本管理軟件設(shè)計(jì)本科
- 基于android的加密記事本軟件的設(shè)計(jì)與實(shí)現(xiàn)
- 日歷記事本.txt
- 日歷記事本.txt
- 基于Android系統(tǒng)語(yǔ)音云記事本的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于Android的加密記事本軟件的設(shè)計(jì)與實(shí)現(xiàn).doc
評(píng)論
0/150
提交評(píng)論