安卓記事本實(shí)習(xí)報(bào)告_第1頁(yè)
安卓記事本實(shí)習(xí)報(bào)告_第2頁(yè)
安卓記事本實(shí)習(xí)報(bào)告_第3頁(yè)
安卓記事本實(shí)習(xí)報(bào)告_第4頁(yè)
安卓記事本實(shí)習(xí)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩13頁(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)介

-.z.Android記事本的設(shè)計(jì)與實(shí)現(xiàn)——SQLite數(shù)據(jù)庫(kù)的設(shè)計(jì)和操作學(xué)生**:指導(dǎo)老師:摘要:隨著智能手機(jī)的快速普及,智能手機(jī)操作系統(tǒng)市場(chǎng)風(fēng)生水起。Android的最大特點(diǎn)是其開(kāi)放性體系架構(gòu),不僅具有非常好的開(kāi)發(fā)、調(diào)試環(huán)境,而且還支持各種可擴(kuò)展的用戶體驗(yàn),包括豐富的圖形組件、多媒體支持功能以及強(qiáng)大的瀏覽器。本文主要介紹了一款A(yù)ndroid記事本SQLite數(shù)據(jù)庫(kù)模塊的設(shè)計(jì)與實(shí)現(xiàn)。根據(jù)人們?nèi)粘I畹男枰?,該記事本的?nèi)容包括運(yùn)用SQLite封裝好的方法對(duì)數(shù)據(jù)進(jìn)行添加、刪除、修改、更新和密碼進(jìn)入等功能,并且將查詢到的數(shù)據(jù)傳遞給activity,具有一定的實(shí)用性。關(guān)鍵詞:記事本;Android;手勢(shì)密碼;SQLite;ActivityDesignandimplementationofAndroidnotepad—DesignandoperationoftheSQLitedatabaseStudentname:Advisor:AbstractWiththerapidproliferationofsmartphones,smartphoneoperatingsystemmarketburgeoned.Android'sbiggestfeatureisitsopenarchitecture,notonlyhasaverygooddevelopment,debuggingenvironment,butalsosupportsavarietyofscalableusere*perience,includingrichgraphicalponents,multimediasupportandpowerfulbrowser.ThispaperdescribesthedesignandimplementationofanAndroidnotepadSQLitedatabasemodule.Accordingtotheneedsofdailylife,includingthecontentsofthenotepadgoodwaytouseSQLitepackagedatatoadd,delete,modify,updateandpasswordtoaccessotherfunctions,andquerythedataispassedtotheactivity,hasacertainpracticality.KeywordsNotepad;Android;gesturepassword;SQLite;Activity目錄29953目錄3199641.引言456561.1項(xiàng)目背景437891.2項(xiàng)目意義448651.3系統(tǒng)可行性分析5223011.4系統(tǒng)主要任務(wù)514282.系統(tǒng)方案設(shè)計(jì)67602.1搭建Android開(kāi)發(fā)平臺(tái)6176302.2SQLite數(shù)據(jù)庫(kù)簡(jiǎn)介750332.3總體方案設(shè)計(jì)10250253.系統(tǒng)軟件開(kāi)發(fā)環(huán)境1082563.1Windows開(kāi)發(fā)環(huán)境1086693.2JAVA集成開(kāi)發(fā)環(huán)境eclipse11326153.3ADTPluginforEclipse11129544.程序設(shè)計(jì)1273614.1程序詳細(xì)設(shè)計(jì)12239314.2程序運(yùn)行及效果截圖13159794.3對(duì)SQLite數(shù)據(jù)庫(kù)增刪改查代碼實(shí)現(xiàn)1841445.工作總結(jié)與展望2325430參考文獻(xiàn)24-.z.引言1.1項(xiàng)目背景Window操作系統(tǒng)的誕生成就了微軟帝國(guó),同時(shí)也造就了PC時(shí)代的繁榮,然而如今,以Android和iPhone手機(jī)為代表的智能移動(dòng)設(shè)備的發(fā)明與互聯(lián)網(wǎng)云技術(shù)的興起卻敲響了PC時(shí)代的喪鐘!這也預(yù)示著移動(dòng)互聯(lián)網(wǎng)時(shí)代(3G)已經(jīng)來(lái)臨。在這個(gè)互聯(lián)網(wǎng)繁榮的時(shí)代,有一顆超新星,以它獨(dú)特性能優(yōu)勢(shì)與人性化的UI設(shè)計(jì)使它在短短的幾年迅速的占領(lǐng)了智能移動(dòng)設(shè)備的市場(chǎng)份額,它就是Google的Android!這也意味著Google在移動(dòng)互聯(lián)網(wǎng)時(shí)代開(kāi)始搶跑并領(lǐng)跑。通過(guò)調(diào)查顯示,大部分消費(fèi)者都會(huì)使用手機(jī)記事本功能。隨著手機(jī)記事本功能的不斷加強(qiáng)與完善,手機(jī)記事本對(duì)于人們的意義,已不僅僅像一般記事簿一樣簡(jiǎn)單記錄,而是向著更個(gè)性化人性化的方向發(fā)展。Android[1]系統(tǒng)是開(kāi)源的,它以迅猛的姿勢(shì)已經(jīng)占領(lǐng)了全球一半多的市場(chǎng)。記事本在生活和工作也日益凸顯出它的重要性,它能更好地幫助人們更好地管理自己的工作和生活,極大的方便了人們的生活。因其開(kāi)源,我們可以在之上開(kāi)發(fā)安卓記事本軟件,同時(shí)這也符合廣大的市場(chǎng)需求。1.2項(xiàng)目意義近幾年來(lái)隨著3G技術(shù)成熟和智能手機(jī)的不斷普及,移動(dòng)應(yīng)用的需求與日俱增,移動(dòng)應(yīng)用開(kāi)發(fā)成為當(dāng)下最熱門(mén)的技術(shù)之一。在Google和Android手機(jī)聯(lián)盟的共同推動(dòng)下,Android在眾多移動(dòng)應(yīng)用開(kāi)發(fā)平臺(tái)中脫穎而出。Android是一個(gè)真正意義上的開(kāi)源智能手機(jī)操作系統(tǒng),該系統(tǒng)一經(jīng)推出立即受到全球移動(dòng)設(shè)備廠商和開(kāi)發(fā)者的熱捧。我們都知道,無(wú)論是產(chǎn)品還是技術(shù),商業(yè)應(yīng)用都是它最大的發(fā)展動(dòng)力。安卓如此受到廠商與開(kāi)發(fā)者的青睞,它的前景是一片光明的。國(guó)內(nèi)對(duì)于安卓這方面的市場(chǎng)還沒(méi)有完全開(kāi)發(fā)出來(lái)。只要我們努力學(xué)習(xí)安卓,對(duì)理想,對(duì)生活都會(huì)有很大的補(bǔ)益。因此,開(kāi)發(fā)這樣一套很簡(jiǎn)單的記事本軟件對(duì)我們來(lái)講是一件很有必要的事情,在下面的各章中我們將以開(kāi)發(fā)安卓記事本軟件為例,談?wù)勂溟_(kāi)發(fā)過(guò)程和所涉及到的問(wèn)題及解決方法。1.3系統(tǒng)可行性分析1.3.1課題調(diào)研與實(shí)踐活動(dòng)和相關(guān)的文件和資料由作者本人網(wǎng)絡(luò)查找,以及老師幫助。具有遇到問(wèn)題,具有獨(dú)立思考,耐心鉆研,向老師虛心求教的良好態(tài)度。關(guān)于技術(shù)方面的難題,跟指導(dǎo)老師面談。1.3.2可行性分析技術(shù)可行性:本項(xiàng)目?jī)H需要一臺(tái)裝有Eclipse及配置好Android開(kāi)發(fā)環(huán)境的計(jì)算機(jī)即可,對(duì)計(jì)算機(jī)本身有一定的要求,它可以使用Windows*p及其以上版本,Macos,Linu*等操作系統(tǒng)。經(jīng)濟(jì)可行性:由于本軟件開(kāi)發(fā)只有三個(gè)人,三臺(tái)電腦就行,基本不需要太大的成本.在經(jīng)濟(jì)上完全可行。操作可行性:界面設(shè)計(jì)時(shí)充分考慮用戶的習(xí)慣以及手機(jī)方面的局限性,程序必須要很簡(jiǎn)單;本程序只涉及到開(kāi)發(fā)環(huán)境配置,安卓組件的熟悉,以及安卓平臺(tái)上的數(shù)據(jù)存儲(chǔ)。并沒(méi)有太大的難度,所以,該項(xiàng)目完全有可操作性。1.4系統(tǒng)主要任務(wù)(1)設(shè)計(jì)實(shí)現(xiàn)”添加新記事”,”編輯內(nèi)容”,”刪除當(dāng)前記事”這三個(gè)主要的功能模塊。(2)分析并解決實(shí)現(xiàn)中的若干技術(shù)問(wèn)題,像組件的選擇以及保存方式的選擇。(3)進(jìn)行測(cè)試并分析結(jié)果。當(dāng)然記事本的基本功能,建立新文件、修改現(xiàn)有文件、刪除文件、查看已建立文件等功能是首先必須完成的??梢跃帉?xiě)內(nèi)容,編輯及刪除,讓記事的方式多樣化。記事本軟件的界面設(shè)計(jì)力求簡(jiǎn)潔,給人清爽的感覺(jué),讓圖標(biāo)及按鈕以協(xié)調(diào)的布局呈現(xiàn)出了,菜單功能要相對(duì)簡(jiǎn)單,讓用戶操作方便,從而讓用戶體會(huì)到此款軟件的實(shí)用。因?yàn)樯鲜霾僮魃婕暗降臄?shù)據(jù)量不大,所以將數(shù)據(jù)庫(kù)定為安卓系統(tǒng)自帶的SQLite數(shù)據(jù)庫(kù)[3],所以這就要求我們要實(shí)現(xiàn)在SQLite數(shù)據(jù)庫(kù)上面的增刪改查。不少人希望自己記事本上面的內(nèi)容不被被人查看,所以要以設(shè)置密碼的形式來(lái)實(shí)現(xiàn)**。鑒于各種各樣的密碼實(shí)現(xiàn)方式,我們選擇了用戶體驗(yàn)最好的手勢(shì)解鎖方式。以及采用了更加友好的時(shí)間顯示方式,讓用戶在使用過(guò)程中更加的舒服方便。記事本軟件要內(nèi)存占用適中,CPU占用也是適中,這樣讓軟件運(yùn)行順暢。2.系統(tǒng)方案設(shè)計(jì)2.1搭建Android開(kāi)發(fā)平臺(tái)2.1.1

安裝包下載(1)java

JDK下載

進(jìn)入java.sun./javase/downloads/inde*.jsp選擇DownloadJDK只下載JDK,無(wú)需下載jre。

(2)Eclipse下載

進(jìn)入./downloads我們選擇第一個(gè),即EclipseIDEforjavaEEDevelopers。(3)AndroidSDK下載

說(shuō)明:AndroidSDK兩種下載版本,一種是包含具體版本的SDK的,一種是只有升級(jí)工具,而不包含具體的SDK版本,完全版下載(Androidsdk2.01)。

2.1.2

軟件安裝(1)安裝JDK

安裝完成即可。

(2)解壓Eclipse

Eclipse無(wú)需安裝,解壓后,直接打開(kāi)就行。

(3)解壓Android

SDK

這個(gè)也無(wú)需安裝,解壓后供后面使。

(4)配置Eclipse

打開(kāi)Eclipse,在菜單欄上選擇help->InstallNewSoftWare點(diǎn)擊Add按鈕,出現(xiàn)如下界面,輸入網(wǎng)址:https://dl-ssl.google./android/eclipse/(如果出錯(cuò),請(qǐng)將https改成http),名稱:Android(這里可以自定義),點(diǎn)擊OK,點(diǎn)擊Ne*t按鈕,點(diǎn)擊Ne*t按鈕,出現(xiàn)如下界面:選擇Iacceptthetermsofthelicenseagreements,點(diǎn)擊Ne*t,進(jìn)入安裝插件界面安裝完成后,點(diǎn)擊Yes按鈕,重啟Eclips。

(5)配置AndroidSDK

點(diǎn)擊菜單window->preferences選擇你的AndroidSDK解壓后的目錄,選錯(cuò)了就會(huì)報(bào)錯(cuò),這個(gè)是升級(jí)工具,目前還沒(méi)有一個(gè)版本的SDK。升級(jí)SDK版本,選擇菜單window->Androidsdkandavdmanager。選擇update

all按鈕,出現(xiàn)如下界面選擇左邊的*一項(xiàng),點(diǎn)擊accept表示安裝,點(diǎn)擊reject表示不安裝,我這里只選了SDK2.1和samplesforapi7。自己可以任意自定義,確定后,選擇install按鈕,進(jìn)入安裝界面:安裝完成。

(6)新建AVD(Android

vitural

device)

和上面一樣,進(jìn)入Androidsdkandavdmanager,選中VituralDevices在點(diǎn)擊New按鈕后,名稱可以隨便取,target選擇你需要的SDK版本,SD卡大小自定義,點(diǎn)擊CreateAVD,顯示創(chuàng)建AVD完畢。

(7)新建Android項(xiàng)目

選擇菜單file->new->other

進(jìn)入如下界面:選擇新建AndroidProject項(xiàng)目,點(diǎn)擊Ne*t按鈕,進(jìn)入如下界面名稱自定義,應(yīng)用程序名自定義,報(bào)名必須包含一個(gè)點(diǎn)以上,minSDKversion里面必須輸入整數(shù)

(8)配置運(yùn)行

右鍵項(xiàng)目->Runas->RunConfiguration該界面,點(diǎn)擊Browse按鈕,選擇你要運(yùn)行的項(xiàng)目選擇Target切換到以下界面該界面選擇運(yùn)行的AVD,將AVD前面的方框設(shè)置為選擇狀態(tài)。

(9)測(cè)試項(xiàng)目運(yùn)行右鍵項(xiàng)目名稱->runas->AndroidApplication即可啟動(dòng)運(yùn)行該Android程序。2.2SQLite數(shù)據(jù)庫(kù)簡(jiǎn)介SQLite是一款輕型的數(shù)據(jù)庫(kù),是遵守ACID的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它包含在一個(gè)相對(duì)小的C庫(kù)中。它是D.RichardHipp建立的公有領(lǐng)域項(xiàng)目。它的設(shè)計(jì)目標(biāo)是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。它能夠支持Windows/Linu*/Uni*等等主流的操作系統(tǒng),同時(shí)能夠跟很多程序語(yǔ)言相結(jié)合,比如Tcl、C*、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開(kāi)源的世界著名數(shù)據(jù)庫(kù)管理系統(tǒng)來(lái)講,它的處理速度比他們都快。SQLite第一個(gè)Alpha版本誕生于2000年5月。至2015年已經(jīng)有15個(gè)年頭,SQLite也迎來(lái)了一個(gè)版本SQLite3已經(jīng)發(fā)布。2.2.1SQLite功能特性1.ACID事務(wù)2.零配置–無(wú)需安裝和管理配置3.儲(chǔ)存在單一磁盤(pán)文件中的一個(gè)完整的數(shù)據(jù)庫(kù)4.數(shù)據(jù)庫(kù)文件可以在不同字節(jié)順序的機(jī)器間自由的共享5.支持?jǐn)?shù)據(jù)庫(kù)大小至2TB6.足夠小,大致13萬(wàn)行C代碼,4.43M7.比一些流行的數(shù)據(jù)庫(kù)在大部分普通數(shù)據(jù)庫(kù)操作要快8.簡(jiǎn)單,輕松的API9.包含TCL綁定,同時(shí)通過(guò)Wrapper支持其他語(yǔ)言的綁定10.良好注釋的源代碼,并且有著90%以上的測(cè)試覆蓋率11.獨(dú)立:沒(méi)有額外依賴12.源碼完全的開(kāi)源,你可以用于任何用途,包括出售它13.支持多種開(kāi)發(fā)語(yǔ)言,C,C++,PHP,Perl,Java,C*,Python,Ruby等同時(shí)它還支持事務(wù)處理功能等等。也有人說(shuō)它象Microsoft的Access,有時(shí)候真的覺(jué)得有點(diǎn)象,但是事實(shí)上它們區(qū)別很大。比如SQLite支持跨平臺(tái),操作簡(jiǎn)單,能夠使用很多語(yǔ)言直接創(chuàng)建數(shù)據(jù)庫(kù),而不象Access一樣需要Office的支持。如果你是個(gè)很小型的應(yīng)用,或者你想做嵌入式開(kāi)發(fā),沒(méi)有合適的數(shù)據(jù)庫(kù)系統(tǒng),則你可以考慮使用SQLite。到2013年10月17日最新版本是3.8.1。能在上面獲得源代碼和文檔。同時(shí)因?yàn)閿?shù)據(jù)庫(kù)結(jié)構(gòu)簡(jiǎn)單,系統(tǒng)源代碼也不是很多,也適合想研究數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)的專業(yè)人士.2.2.2Java連接SQLite數(shù)據(jù)庫(kù):publicclassTestSQLite{publicstaticvoidmain(String[]args){try{//連接SQLite的JDBCClass.forName("org.sqlite.JDBC");//建立一個(gè)數(shù)據(jù)庫(kù)名zieckey.db的連接,如果不存在就在當(dāng)前目錄下創(chuàng)建之Connectionconn=DriverManager.getConnection("jdbc:sqlite:zieckey.db");Statementstat=conn.createStatement();stat.e*ecuteUpdate("createtabletbl1(namevarchar(20),salaryint);");//創(chuàng)建一個(gè)表,兩列stat.e*ecuteUpdate("insertintotbl1values('ZhangSan',8000);");//插入數(shù)據(jù)stat.e*ecuteUpdate("insertintotbl1values('LiSi',7800);");stat.e*ecuteUpdate("insertintotbl1values('WangWu',5800);");stat.e*ecuteUpdate("insertintotbl1values('ZhaoLiu',9100);");ResultSetrs=stat.e*ecuteQuery("select*fromtbl1;");//查詢數(shù)據(jù)while(rs.ne*t()){//將查詢到的數(shù)據(jù)打印出來(lái)System.out.print("name="+rs.getString("name")+"");//列屬性一System.out.println("salary="+rs.getString("salary"));//列屬性二}rs.close();conn.close();//結(jié)束數(shù)據(jù)庫(kù)的連接}catch(E*ceptione){e.printStackTrace();}}}2.3總體方案設(shè)計(jì)在本模塊中,主要設(shè)計(jì)到三個(gè)文件,第一個(gè)是與數(shù)據(jù)庫(kù)表相對(duì)應(yīng)的實(shí)體類,第二個(gè)是創(chuàng)建數(shù)據(jù)庫(kù)、創(chuàng)建表的類,第三個(gè)是對(duì)應(yīng)的增刪改查的方法。下面是整個(gè)項(xiàng)目的總體方案設(shè)計(jì):本次Android項(xiàng)目中運(yùn)用的技術(shù)比較廣,從基礎(chǔ)的Activity、SQLite到開(kāi)源的手勢(shì)密碼組件,因此將項(xiàng)目盡可能完美的整合到一起成了很重要的一部,如何將總體方案設(shè)計(jì)的規(guī)*以及高校是必不可少。從人員安排上,我們?nèi)朔诸^進(jìn)行,各不影響,我主要負(fù)責(zé)的是Activity的展示,也就是將其他組員的勞動(dòng)成果展示出來(lái),則如何美觀以及高性能的展示變成了難點(diǎn)。從設(shè)計(jì)模式上,我們嚴(yán)格遵循AndroidDesign的規(guī)格,并且使用Google在I/O大會(huì)上推薦的一些開(kāi)發(fā)方法,從而盡可能的講模塊規(guī)*化。從時(shí)間分配上,我們進(jìn)行了敏捷性開(kāi)發(fā),充分合理的利用了大家的時(shí)間。3.系統(tǒng)軟件開(kāi)發(fā)環(huán)境3.1Windows開(kāi)發(fā)環(huán)境1.用戶界面統(tǒng)一、友好、漂亮:Windows應(yīng)用程序大多符合IBM公司提出的CUA(monUserAcess)標(biāo)準(zhǔn),所有的程序擁有相同的或相似的基本外觀,包括窗口、菜單、工具條等。用戶只要掌握其中一個(gè),就不難學(xué)會(huì)其他軟件,從而降低了用戶培訓(xùn)學(xué)習(xí)的費(fèi)用。2.豐富的設(shè)備無(wú)關(guān)的圖形操作:Windows的圖形設(shè)備接口(GDI)提供了豐富的圖形操作函數(shù),可以繪制出諸如線、圓、框等的幾何圖形,并支持各種輸出設(shè)備。設(shè)備無(wú)關(guān)意味著在針式打印機(jī)上和高分辨率的顯示器上都能顯示出相同效果的圖形。3.多任務(wù):Windows是一個(gè)多任務(wù)的操作環(huán)境,它允許用戶同時(shí)運(yùn)行多個(gè)應(yīng)用程序,或在一個(gè)程序中同時(shí)做幾件事情。每個(gè)程序在屏幕上占據(jù)一塊矩形區(qū)域,這個(gè)區(qū)域稱為窗口,窗口是可以重疊的。用戶可以移動(dòng)這些窗口,或在不同的應(yīng)用程序之間進(jìn)行切換,并可以在程序之間進(jìn)行手工和自動(dòng)的數(shù)據(jù)交換和通信。雖然同一時(shí)刻計(jì)算機(jī)可以運(yùn)行多個(gè)應(yīng)用程序,但僅有一個(gè)是處于活動(dòng)狀態(tài)的,其標(biāo)題欄呈現(xiàn)高亮顏色。一個(gè)活動(dòng)的程序是指當(dāng)前能夠接收用戶鍵盤(pán)輸入的程序。3.2JAVA集成開(kāi)發(fā)環(huán)境eclipseEclipse是一個(gè)開(kāi)放源代碼的、基于Java的可擴(kuò)展開(kāi)發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過(guò)插件組件構(gòu)建開(kāi)發(fā)環(huán)境。幸運(yùn)的是,Eclipse附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括Java開(kāi)發(fā)工具(JavaDevelopmentKit,JDK)。雖然大多數(shù)用戶很樂(lè)于將Eclipse當(dāng)作Java集成開(kāi)發(fā)環(huán)境(IDE)來(lái)使用,但Eclipse的目標(biāo)卻不僅限于此。Eclipse還包括插件開(kāi)發(fā)環(huán)境(Plug-inDevelopmentEnvironment,PDE),這個(gè)組件主要針對(duì)希望擴(kuò)展Eclipse的軟件開(kāi)發(fā)人員,因?yàn)樗试S他們構(gòu)建與Eclipse環(huán)境無(wú)縫集成的工具[6]。由于Eclipse中的每樣?xùn)|西都是插件,對(duì)于給Eclipse提供插件,以及給用戶提供一致和統(tǒng)一的集成開(kāi)發(fā)環(huán)境而言,所有工具開(kāi)發(fā)人員都具有同等的發(fā)揮場(chǎng)所。這種平等和一致性并不僅限于Java開(kāi)發(fā)工具[7]。盡管Eclipse是使用Java語(yǔ)言開(kāi)發(fā)的,但它的用途并不限于Java語(yǔ)言;例如,支持諸如C/C++、COBOL、PHP等編程語(yǔ)言的插件已經(jīng)可用,或預(yù)計(jì)將會(huì)推出。Eclipse框架還可用來(lái)作為與軟件開(kāi)發(fā)無(wú)關(guān)的其他應(yīng)用程序類型的基礎(chǔ)。3.3ADTPluginforEclipseADTPluginforEclipse[9]是Eclipse插件,作用是關(guān)聯(lián)AndroidSDK,使Eclipse能夠創(chuàng)建Android工程。Android開(kāi)發(fā)工具(ADT)是一個(gè)EclipseIDE,目的是給你一個(gè)強(qiáng)大的插件,集成環(huán)境中構(gòu)建Android應(yīng)用程序。Eclipse的ADT延伸的能力,可以快速建立新的Android[10]項(xiàng)目,創(chuàng)建一個(gè)應(yīng)用程序的用戶界面,添加組件基于Android框架API,使用AndroidSDK工具調(diào)試程序,甚至出口簽名(或無(wú))APKs以分發(fā)你的應(yīng)用。4.程序設(shè)計(jì)4.1程序詳細(xì)設(shè)計(jì)圖4.1系統(tǒng)流程圖安卓記事本本人涉及到的是SQLite的設(shè)計(jì)與操作,主要設(shè)計(jì)到的文件有三個(gè)。分別是:MemoItem.java(與數(shù)據(jù)庫(kù)表相對(duì)應(yīng)的實(shí)體類)、MemoService.java(對(duì)SQLite數(shù)據(jù)庫(kù)進(jìn)行增刪改查的方法)、DBHelper.java(建立數(shù)據(jù)庫(kù)、建立表的方法)。在SQLite上建數(shù)據(jù)庫(kù),建表主要要繼承SQLiteOpenHelper這個(gè)類。在構(gòu)造方法中實(shí)現(xiàn)建數(shù)據(jù)庫(kù),在onCreate方法中進(jìn)行建表。實(shí)現(xiàn)數(shù)據(jù)的增刪改查,先用dbOpenHelper獲得WritableDatabase,再進(jìn)行相應(yīng)的操作。還要用到cursor來(lái)移動(dòng)游標(biāo),MemoItem返回每一條記錄,List<MemoItem>返回記錄的list集合。在設(shè)計(jì)SQLite數(shù)據(jù)庫(kù)的同時(shí),還進(jìn)行了幾個(gè)簡(jiǎn)單的Activity的編寫(xiě)。Activity是Android開(kāi)發(fā)的重點(diǎn),它與*ML一個(gè)負(fù)責(zé)界面,一個(gè)負(fù)責(zé)界面實(shí)現(xiàn)。此外,在寫(xiě)Activity的時(shí)候充分利用JAVA的繼承特性,將MainActivity作為基類,讓其他Activity繼承它,雖然整個(gè)項(xiàng)目比較小,但是這種利用JAVA特征的設(shè)計(jì)模式還是充分利用了。4.2程序運(yùn)行及效果截圖圖4.2程序的首頁(yè)圖4.3繪制手勢(shì)圖4.4通過(guò)手勢(shì)登錄圖4.5登錄成功圖4.6創(chuàng)建新筆記圖4.7創(chuàng)建成功圖4.8更新筆記圖4.9更新成功圖4.10所有筆記顯示頁(yè)面4.3對(duì)SQLite數(shù)據(jù)庫(kù)增刪改查代碼實(shí)現(xiàn)增刪改查:package.e*ample.others;importjava.util.ArrayList;importjava.util.List;importandroid.content.Conte*t;importandroid.database.Cursor;importandroid.database.sqlite.SQLiteDatabase;publicclassMemoService{ privateDBOpenHelperdbOpenHelper; privateSQLiteDatabasedb; privateCursorcursor; publicMemoService(Conte*tconte*t) { this.dbOpenHelper=newDBOpenHelper(conte*t); } publiclongsave(MemoItemitem)//保存每一條數(shù)據(jù) { db=dbOpenHelper.getWritableDatabase(); Stringsql="insertintomemo(content,time)values(",")"; db.e*ecSQL(sql,newObject[]{item.getContent(),item.getTime()});//將時(shí)間插入 cursor= db.rawQuery("SELECTlast_insert_rowid()",null); cursor.moveToFirst();//每次插入保證都在最前面一個(gè) longresult=cursor.getLong(0); cursor.close(); db.close(); returnresult; } publicMemoItemgetMemoById(longtime)//顯示每一條具體的記錄 { db=dbOpenHelper.getReadableDatabase(); cursor=db.rawQuery("select*frommemowherememoid="", newString[]{time+""}); if(cursor.moveToFirst()) { Stringcontent=cursor.getString(cursor.getColumnInde*("content")); longtimes=cursor.getLong(cursor.getColumnInde*("time")); cursor.close(); db.close(); returnnewMemoItem(content,times); } cursor.close(); db.close(); returnnull; } publicvoidupdateContent(MemoItemitem)//更新每一條記錄 { db=dbOpenHelper.getWritableDatabase(); db.e*ecSQL( "updatememosetcontent="wheretime="", newObject[]{item.getContent(),item.getTime() }); db.close(); } publicvoiddelete(longtime)//刪除一條記錄 { db=dbOpenHelper.getWritableDatabase(); db.e*ecSQL("deletefrommemowheretime="",newObject[]{time}); db.close(); } publiclonggetCount()//得到所有的記錄數(shù) { db=dbOpenHelper.getReadableDatabase(); cursor=db.rawQuery("selectcount(*)frommemo",null); cursor.moveToFirst(); longresult=cursor.getLong(0); cursor.close(); db.close(); returnresult; } publicList<MemoItem>getScrollData(intoffset,longma*Result)//列表顯示 { List<MemoItem>books=newArrayList<MemoItem>(); db=dbOpenHelper.getReadableDatabase(); cursor=db.rawQuery( "select*frommemoorderbytimedesclimit","", newString[]{String.valueOf(offset), String.valueOf(ma*Result)}); while(cursor.moveToNe*t()) { longtime=cursor.getLong(cursor.getColumnInde*("time")); Stringcontent=cursor.getString(cursor.getColumnInde*("content")); books.add(newMemoItem(content,time)); } cursor.close(); db.close(); returnbooks; }}建數(shù)據(jù)庫(kù)、建表package.e*ample.others;importandroid.content.Conte*t;importandroid.database.sqlite.SQLiteDatabase;importandroid.database.sqlite.SQLiteOpenHelper;publicclassDBOpenHelpere*tendsSQLiteOpenHelper{ publicDBOpenHelper(Conte*tconte*t) { super(conte*t,"csust.db",null,1);//創(chuàng)建一個(gè)數(shù)據(jù)庫(kù) } publicvoidonCreate(SQLiteDatabasedb) { db.e*ecSQL("CREATETABLEmemo(memoidintegerprimarykeyautoincrement,contentvarchar,timeinterger)");//創(chuàng)建一個(gè)memo表 } publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion) { db.e*ecSQL(null);//更新數(shù)據(jù)庫(kù) }}表所對(duì)應(yīng)的實(shí)體類package.e*ample.others;importandroid.os.Parcel;importandroid.os.Parcelable;publicclassMemoItemimplementsParcelable{ privateStringcontent; privatelongtime; publicMemoItem(){} publicMemoItem(Stringcontent,longtime) { this.content=content; this.time=time; } publicStringgetContent() { returncontent; } publicvoidsetContent(Stringcontent) { this.content=content; } publiclonggetTime() { returntime; } publicvoidsetTime(longtime) { this.time=time; } Override publicStringtoString() { return"BaseItem[content="+content+",time="+time+"]"; } Override publicintdescribeContents() { return0; } Override publicvoidwriteToParcel(Parceldest,intflags) { dest.writeString(content); dest.writeLong(time); } publicstaticfinalParcelable.Creator<MemoItem>CREATOR=newCreator<MemoItem>() { Override publicMemoItemcreateFromPar

溫馨提示

  • 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)論