畢業(yè)論文基于安卓的手機(jī)日程管理系統(tǒng)_第1頁
畢業(yè)論文基于安卓的手機(jī)日程管理系統(tǒng)_第2頁
畢業(yè)論文基于安卓的手機(jī)日程管理系統(tǒng)_第3頁
畢業(yè)論文基于安卓的手機(jī)日程管理系統(tǒng)_第4頁
畢業(yè)論文基于安卓的手機(jī)日程管理系統(tǒng)_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第二章 系統(tǒng)開發(fā)的平臺(tái)與設(shè)計(jì)2012 屆畢業(yè)設(shè)計(jì)(論文)題題 目目基于安卓的手機(jī)日程管理系統(tǒng)姓名姓名學(xué)號(hào)學(xué)號(hào)專業(yè)專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)班級(jí)班級(jí)指導(dǎo)教師指導(dǎo)教師2012 年年 6 月月基于安卓的手機(jī)日程管理系統(tǒng)摘 要隨著生活節(jié)奏的逐步加快,人們常會(huì)有許多的重要工作需要去安排或完成,個(gè)人的日常工作、領(lǐng)導(dǎo)的重要會(huì)議、個(gè)人重要日期或者時(shí)間等。這些工作都需要在特定的時(shí)間給予醒目標(biāo)識(shí)或者提示。而為了能盡可能的減少人們的負(fù)擔(dān),來更有效率的工作和更舒適的生活。這就需要有專門的日程管理系統(tǒng)來安排這些事務(wù)。日程管理系統(tǒng)的主要功能是完成個(gè)人一般日程和重要日程安排并提供提醒和查看的功能。如今隨著信息技術(shù)的高速發(fā)展,手機(jī)

2、已經(jīng)成為現(xiàn)代人們生活所必不可少的物品,將其作為日程管理系統(tǒng)的平臺(tái)可以說是一個(gè)很好的選擇。而且現(xiàn)如今手機(jī)安卓系統(tǒng)已經(jīng)成為一門及其熱門的技術(shù),因此我選擇將基于安卓的手機(jī)日程管理系統(tǒng)作為我的畢業(yè)設(shè)計(jì)課題。本系統(tǒng)是一個(gè)基于安卓手機(jī)平臺(tái)的日程管理系統(tǒng),具有基本的日程活動(dòng)的增、刪、改、查功能,在日歷瀏覽中可突出顯示有安排的日期。用戶可根據(jù)不同的活動(dòng)設(shè)置任務(wù),便于對(duì)日程的管理。系統(tǒng)還具備提醒程序,可幫助管理重要活動(dòng),并且實(shí)現(xiàn)與網(wǎng)絡(luò)數(shù)據(jù)同步的功能。系統(tǒng)是基于安卓的基礎(chǔ)知識(shí)和 Java 語言,以及 SQLite 提供的數(shù)據(jù)的管理來開發(fā)的,最終取得了較圓滿的成果。關(guān)鍵詞:關(guān)鍵詞:日程管理 Java 安卓目目 錄錄

3、摘摘 要要 .I目目 錄錄 .I第一章第一章 緒論緒論.11.1 課題背景.11.2 安卓平臺(tái)簡(jiǎn)介.21.2.1 安卓平臺(tái)特色介紹.21.2.2 安卓系統(tǒng)編程語言.31.3 安卓開發(fā)的現(xiàn)狀.3第二章第二章 系統(tǒng)開發(fā)環(huán)境與相關(guān)技術(shù)系統(tǒng)開發(fā)環(huán)境與相關(guān)技術(shù).42.1 系統(tǒng)開發(fā)的環(huán)境.42.2 系統(tǒng)開發(fā)軟件的簡(jiǎn)介.42.2.1 Eclipse 的簡(jiǎn)介 .42.2.2 其他軟件的簡(jiǎn)介.52.3 安卓環(huán)境的搭建.52.3.1 軟件下載準(zhǔn)備.52.3.2 JDK 安裝.52.3.3 Android SDK 安裝.62.3.4 ADT 安裝.72.3.5 創(chuàng)建 AVD.72.4 系統(tǒng)開發(fā)編程語言的簡(jiǎn)介.8第三

4、章第三章 系統(tǒng)需求分析及概要設(shè)計(jì)系統(tǒng)需求分析及概要設(shè)計(jì).103.1 系統(tǒng)的需求分析.103.2 系統(tǒng)的概要設(shè)計(jì).103.2.1 系統(tǒng)的功能模塊說明.103.2.2 系統(tǒng)的功能模塊結(jié)構(gòu)圖.10第四章第四章 系統(tǒng)的詳細(xì)設(shè)計(jì)系統(tǒng)的詳細(xì)設(shè)計(jì).134.1 系統(tǒng)主界面的設(shè)計(jì)和實(shí)現(xiàn).134.1.1 系統(tǒng)主界面的頭部菜單欄.134.1.2 系統(tǒng)的日歷界面.144.1.2 系統(tǒng)的日歷特色顯示.164.2 系統(tǒng)任務(wù)界面的設(shè)計(jì).174.2.1 任務(wù)界面的數(shù)據(jù)庫準(zhǔn)備.184.2.2 任務(wù)界面之新增界面.20i4.2.3 任務(wù)界面之總?cè)粘探缑?284.2.3 任務(wù)界面之單一日程界面.304.2.4 任務(wù)界面之實(shí)現(xiàn)對(duì)已有

5、日程日期的標(biāo)記.314.3 系統(tǒng)設(shè)置界面.324.4 系統(tǒng)關(guān)于界面.334.5 系統(tǒng)底部菜單項(xiàng).344.5.1 日歷界面使用的底部菜單項(xiàng).344.5.2 其他界面使用的底部菜單項(xiàng)的總覽.36參考文獻(xiàn)參考文獻(xiàn).37第一章 緒論0第一章 緒論1.1 課題背景課題背景當(dāng)今社會(huì)是信息社會(huì),人們無論何時(shí)、無論何地都是在與信息打交道,您閱讀的報(bào)紙是信息、看到的廣告是信息、電視傳播的是信息、上網(wǎng)瀏覽的是信息,當(dāng)代人簡(jiǎn)直生活在“信息海洋”中。這么多的信息哪些是有用的,哪些是無用的,人們?cè)谛畔⒇S富的社會(huì)中,難免會(huì)忘記一些重要信息,有時(shí)會(huì)掉一個(gè)尋呼機(jī),有時(shí)會(huì)掉一個(gè)電話本或筆記本什么的,這些“信息載體”也許包含著重

6、要的個(gè)人信息。如何將這些有用的信息存儲(chǔ)起來避免忘記或丟失,如何對(duì)這些有用信息進(jìn)行有序地組織、管理以資對(duì)生活決策提供幫助,這正是信息管理軟件要解決的問題。進(jìn)入 21 世紀(jì)以來,無所不在的計(jì)算將打破傳統(tǒng)意義上的計(jì)算機(jī)概念:使用更方便、移動(dòng)更容易、功能更多樣化的各種具有計(jì)算機(jī)功能的設(shè)備大量出現(xiàn),并且在需要時(shí),可以隨時(shí)通過無線方式連接到移動(dòng)數(shù)據(jù)通信網(wǎng)絡(luò)中,以便高效地交換信息和獲得各種服務(wù)。這種設(shè)備人們稱之為無限設(shè)備(Mobile Device)。移動(dòng)設(shè)備最根本的特征是移動(dòng)性,即能夠利用無線電波、微波或紅外線等傳輸介質(zhì)允許通信中的設(shè)備在一定范圍內(nèi)自由移動(dòng),其位置不受束縛,從而實(shí)現(xiàn)通信雙方至少有一方在移動(dòng)

7、中進(jìn)行信息傳輸和交換的目的。移動(dòng)設(shè)備從產(chǎn)生到現(xiàn)在的歷史并不長(zhǎng),然而其發(fā)展速度卻遠(yuǎn)遠(yuǎn)超出人們的預(yù)料?,F(xiàn)如今,移動(dòng)設(shè)備大行其道,全球有超過十億部移動(dòng)電話正在被使用,并且這個(gè)數(shù)目正在逐漸增加。在除美國(guó)之外的每個(gè)發(fā)達(dá)國(guó)家,擁有手機(jī)的人數(shù)比擁有計(jì)算機(jī)的人數(shù)更多。而目前,隨著移動(dòng)設(shè)備越來越普及及移動(dòng)硬件的提升,移動(dòng)設(shè)備的功能越來越完善,移動(dòng)設(shè)備的系統(tǒng)平臺(tái)也日漸火熱起來。目前國(guó)內(nèi)最常見的移動(dòng)開發(fā)平臺(tái)有Symbian,iPhone,Windows Phone 以及 Android。如今國(guó)內(nèi)外都有非常多的 Android 系統(tǒng)的用戶。自從 2011 年第一季度,Android 在全球份額首次超過 Symbian

8、,躍居全球第一。截止 2012 年 2 月?lián)?,Android 占據(jù)全球智能手機(jī)操作系統(tǒng)市場(chǎng) 52.5%的份額,中國(guó)市場(chǎng)占有率為 68.4%??紤]到如今手機(jī)系統(tǒng)的發(fā)展現(xiàn)狀,以及 Android 平臺(tái)系統(tǒng)自身所擁有的優(yōu)勢(shì)。因此,基于安卓平臺(tái)開發(fā)一款手機(jī)應(yīng)用軟件具有較大的意義和可行性。11.2 安卓平臺(tái)簡(jiǎn)介安卓平臺(tái)簡(jiǎn)介Android 一詞的本義指“機(jī)器人” ,同時(shí)也是 Google 于 2007 年 11 月 5 日宣布的基于Linux 平臺(tái)的開源手機(jī)操作系統(tǒng)的名稱,該平臺(tái)由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,號(hào)稱是首個(gè)為移動(dòng)終端打造的真正開放和完整的移動(dòng)軟件。目前,最新版本為Android

9、4.0 Ice Cream Sandwich (冰激凌三明治) 以及還在測(cè)試中的 Android 5.0Jelly Bean(果凍豆) 。1.2.1 安卓平臺(tái)特色介紹1.開放性在優(yōu)勢(shì)方面,Android 平臺(tái)首先就是其開放性,開放的平臺(tái)允許任何移動(dòng)終端廠商加入到 Android 聯(lián)盟中來。顯著的開放性可以使其擁有更多的開發(fā)者,隨著用戶和應(yīng)用的日益豐富,一個(gè)嶄新的平臺(tái)也將很快走向成熟。開發(fā)性對(duì)于 Android 的發(fā)展而言,有利于積累人氣,這里的人氣包括消費(fèi)者和廠商,而對(duì)于消費(fèi)者來講,最大的受益正是豐富的軟件資源。開放的平臺(tái)也會(huì)帶來更大競(jìng)爭(zhēng),如此一來,消費(fèi)者將可以用更低的價(jià)位購(gòu)得心儀的手機(jī)。2.

10、掙脫運(yùn)營(yíng)商的束縛在過去很長(zhǎng)的一段時(shí)間,特別是在歐美地區(qū),手機(jī)應(yīng)用往往受到運(yùn)營(yíng)商制約,使用什么功能接入什么網(wǎng)絡(luò),幾乎都受到運(yùn)營(yíng)商的控制。自從 iPhone 上市,用戶可以更加方便地連接網(wǎng)絡(luò),運(yùn)營(yíng)商的制約減少。隨著 EDGE、HSDPA 這些 2G 至 3G 移動(dòng)網(wǎng)絡(luò)的逐步過渡和提升,手機(jī)隨意接入網(wǎng)絡(luò)已不是運(yùn)營(yíng)商口中的笑談。3.豐富的硬件選擇這一點(diǎn)還是與 Android 平臺(tái)的開放性相關(guān),由于 Android 的開放性,眾多的廠商會(huì)推出千奇百怪,功能特色各具的多種產(chǎn)品。功能上的差異和特色,卻不會(huì)影響到數(shù)據(jù)同步、甚至軟件的兼容。好比你從諾基亞 Symbian 風(fēng)格手機(jī)一下改用蘋果 iPhone,同時(shí)

11、還可將Symbian 中優(yōu)秀的軟件帶到 iPhone 上使用、聯(lián)系人等資料更是可以方便地轉(zhuǎn)移。4.不受任何限制的開發(fā)商Android 平臺(tái)提供給第三方開發(fā)商一個(gè)十分寬泛、自由的環(huán)境。因此不會(huì)受到各種條條框框的阻擾,可想而知,會(huì)有多少新穎別致的軟件會(huì)誕生。但也有其兩面性,血腥、第一章 緒論2暴力、情色方面的程序和游戲如何控制正是留給 Android 難題之一。1.2.2 安卓系統(tǒng)編程語言 在 Android 中,開發(fā)者可以使用 Java 作為編程語言來開發(fā)應(yīng)用程序,也可以通過NDK 使用 C/C+作為編程語言來開發(fā)應(yīng)用程序,也可使用 SL4A 來使用其他各種腳本語言進(jìn)行編程(如:python、l

12、ua、tcl、php 等等) ,還有其他諸如:Qt(qt for android) 、Mono(mono for android)等一些著名編程框架也開始支持 Android 編程,甚至通過MonoDroid,開發(fā)者還可以使用 C#作為編程語言來開發(fā)應(yīng)用程序。另外,谷歌還在 2009年特別發(fā)布了針對(duì)初學(xué)者的 Android Simple 語言,該語言類似 Basic 語言。而在網(wǎng)頁編程語言方面,JavaScript,ajax,HTML5,jquery、sencha、dojo、mobl、PhoneGap 等等都已經(jīng)支持 Android 開發(fā)。 在 Android 系統(tǒng)底層方面,Android 使

13、用 C/C+作為開發(fā)語言。而 Android 應(yīng)用層的開發(fā),基本上全部是采用 Java 開發(fā)。但和我們一般互聯(lián)網(wǎng)上應(yīng)用的 JAVA 還是有些區(qū)別的。 此”JAVA是 google 自己做的一套實(shí)現(xiàn)來實(shí)現(xiàn),和 SUN 的底層是不太一樣的。不過對(duì)開發(fā)應(yīng)用區(qū)別不大。1.3 安卓開發(fā)的現(xiàn)狀安卓開發(fā)的現(xiàn)狀目前國(guó)內(nèi)的 Android 開發(fā)還是主要以應(yīng)用開發(fā)為主,主要分成 3 類:為企業(yè)開發(fā)應(yīng)用、開發(fā)通用應(yīng)用(放到 Android Market 或者其他 App Market 銷售)以及游戲開發(fā)(放到 Android Market 或者其他 App Market 銷售) 。第一類開發(fā)者一般身處規(guī)模較大的公司

14、,這些公司主要為自有品牌或者其他品牌設(shè)計(jì)手機(jī)或者平板電腦的總體方案。除了根據(jù)需求對(duì)系統(tǒng)進(jìn)行定制外,更多的工作在于為這些系統(tǒng)編寫定制的應(yīng)用。第二類開發(fā)者,一般處于創(chuàng)業(yè)型公司或者是獨(dú)立開發(fā)者,他們的盈利方式主要是 2種:為國(guó)外公司進(jìn)行外包開發(fā),或者通過 Google 的移動(dòng)廣告(AdMob)通過廣告點(diǎn)擊分成。而理論上的通過付費(fèi)下載的形式來盈利的,現(xiàn)在國(guó)內(nèi)鮮見成功者。第三類開發(fā)者,目前和第二類開發(fā)者類似。下圖是開發(fā)者提交的 應(yīng)用和游戲的數(shù)目所占的比例圖, 從中也可以看出應(yīng)用開發(fā)數(shù)目遠(yuǎn)超游戲開發(fā)。3第二章 系統(tǒng)開發(fā)環(huán)境與相關(guān)技術(shù)2.1 系統(tǒng)開發(fā)的環(huán)境系統(tǒng)開發(fā)的環(huán)境Android 的上層應(yīng)用程序是用 J

15、ava 語言開發(fā),同時(shí)還需要基于 Dalvik 虛擬機(jī),所以,Google 公司推薦使用主流的 Java 繼承開發(fā)環(huán)境 Eclipse。只有 Eclipse 還不夠, 因?yàn)槭鞘褂?Java 語言進(jìn)行開發(fā), 還應(yīng)該有由 SUN 公司提供的 Java SDK(其中包括 JRE:Java Runtime Environment)。此外,Android 的應(yīng)用程序開發(fā)和 Java 開發(fā)有較大區(qū)別的,所以還需要有 Google 提供的 Android SDK。同時(shí),還需要在 Eclipse 安裝 ADT,為 Android開發(fā)提供開發(fā)工具的升級(jí)或者變更,是 Eclipse 下開發(fā)工具的升級(jí)下載的工具。簡(jiǎn)

16、言之,需要以下軟件,才能搭建 Android 開發(fā)環(huán)境,從而進(jìn)行 Android 應(yīng)用程序的開發(fā)。(1) Eclipse (2) JDK(3) Android SDK(4) ADT(Android Development Tools)2.2 系統(tǒng)開發(fā)軟件的簡(jiǎn)介系統(tǒng)開發(fā)軟件的簡(jiǎn)介2.2.1 Eclipse 的簡(jiǎn)介Eclipse 是一個(gè)開放源代碼的、基于 Java 的可擴(kuò)展開發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運(yùn)的是,Eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括 Java 開發(fā)工具(Java Development Kit,JDK) 。 雖然大多數(shù)用戶很

17、樂于將 Eclipse 當(dāng)作 Java 集成開發(fā)環(huán)境(IDE)來使用,但 Eclipse 的目標(biāo)卻不僅限于此。Eclipse 還包括插件開發(fā)環(huán)境(Plug-in Development Environment,PDE) ,這個(gè)組件主要針對(duì)希望擴(kuò)展 Eclipse 的軟件開發(fā)人員,因?yàn)樗试S他們構(gòu)建與 Eclipse 環(huán)境無縫集成的工具。由于 Eclipse 中的每樣?xùn)|西都是插件,對(duì)于給 Eclipse 提供插件,以及給用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場(chǎng)所。 這種平等和一致性并不僅限于 Java 開發(fā)工具。盡管 Eclipse 是使用 Java 語言開發(fā)的,

18、但它的用途并不限于 Java 語言;例如,支持諸如 C/C+ 和 COBOL 等編程語言的第二章 系統(tǒng)開發(fā)環(huán)境與相關(guān)技術(shù)4插件已經(jīng)可用,或預(yù)計(jì)將會(huì)推出。Eclipse 框架還可用來作為與軟件開發(fā)無關(guān)的其他應(yīng)用程序類型的基礎(chǔ),比如內(nèi)容管理系統(tǒng)。2.2.2 其他軟件的簡(jiǎn)介(1)JDKJDK(Java Development Kit)是 Sun Microsystems 針對(duì) Java 開發(fā)員的產(chǎn)品。自從 Java 推出以來,JDK 已經(jīng)成為使用最廣泛的 Java SDK。JDK 是整個(gè) Java 的核心,包括了 Java運(yùn)行環(huán)境,Java 工具和 Java 基礎(chǔ)的類庫。JDK 是學(xué)好 Java 的

19、第一步。而專門運(yùn)行在 x86平臺(tái)的 Jrocket 在服務(wù)端運(yùn)行效率也要比 Sun JDK 好很多。從 SUN 的 JDK5.0 開始,提供了泛型等非常實(shí)用的功能,其版本也不斷更新,運(yùn)行效率得到了非常大的提高。(2) Android SDKSDK:(software development kit)軟件開發(fā)工具包。被軟件開發(fā)工程師用于為特定的軟件包、軟件框架、硬件平臺(tái)、操作系統(tǒng)等建立應(yīng)用軟件的開發(fā)工具的集合。 因此,Android SDK 指的既是 Android 專屬的軟件開發(fā)工具包。(3)ADT(Android Development Tools)目前 Android 開發(fā)所用的開發(fā)工具是

20、 Eclipse,在 Eclipse 編譯 IDE 環(huán)境中,安裝ADT,為 Android 開發(fā)提供開發(fā)工具的升級(jí)或者變更,簡(jiǎn)單理解為在 Eclipse 下開發(fā)工具的升級(jí)下載工具。 2.3 安卓環(huán)境的搭建安卓環(huán)境的搭建2.3.1 軟件下載準(zhǔn)備分別下載 JDK、Eclipse、Android SDK,并首先解壓 Eclipse 完成安裝。2.3.2 JDK 安裝首先按提示完成 SDK 安裝,然后設(shè)置環(huán)境變量(非必須)。1.我的電腦-屬性-高級(jí)-環(huán)境變量-系統(tǒng)變量中添加以下環(huán)境變量: 52.JAVA_HOME 值為:E:AndroidJavajdk1.6.0_21(我所安裝 JDK 的目錄) 3.

21、CLASSPATH 值:.;%JAVA_HOME%libtools.jar;%JAVA_HOME%libdt.jar;%JAVA_HOME%bin;4.Path: 在開始追加 %JAVA_HOME%bin; 安裝完成之后,檢查 JDK 是否安裝成功。打開 cmd 窗口,輸入 java version 查看JDK 的版本信息。出現(xiàn)下面的畫面表示安裝成功了,如圖 2-1:圖 2-1 安卓環(huán)境設(shè)置 JDK 效果測(cè)試圖2.3.3 Android SDK 安裝 下載完成后解壓到任意路徑(我的解壓路徑為 E:Androidandroid-sdk-windows)運(yùn)行 SDK Setup.exe,點(diǎn)擊 Av

22、ailable Packages。 選擇希望安裝的 SDK 及其文檔或者其它包,按需點(diǎn)擊下面選項(xiàng)(開始下載安裝所選包 )在用戶變量中新建 PATH 值為:Android SDK 中的 tools 絕對(duì)路徑(本機(jī)為D:AndroidDevelopandroid-sdk-windowstools) 。 完成按“確定”后,重新啟動(dòng)計(jì)算機(jī)。重啟計(jì)算機(jī)以后,進(jìn)入 cmd 命令窗口,檢查SDK 是不是安裝成功。 運(yùn)行 android h 出現(xiàn)以下的畫面,表明安裝成功,如圖 2-2:第二章 系統(tǒng)開發(fā)環(huán)境與相關(guān)技術(shù)6圖 2-2 安卓環(huán)境設(shè)置 SDK 效果測(cè)試圖2.3.4 ADT 安裝打開 Eclipse,進(jìn)入

23、菜單中的 Help - Install New Software 點(diǎn)擊 Add.按鈕,彈出對(duì)話框要求輸入 Name 和 Location:Name 自己隨便取,Location 輸入 http:/dl- work with 后的下拉列表中選擇我們剛才添加的 ADT,點(diǎn)擊下面出現(xiàn)的 Developer Tools,展開它會(huì)有 Android DDMS 和 Android Development Tool,勾選他們,然后按步驟完成。完成之后:選擇 Window Preferences. 在左邊的面板選擇 Android,然后在右側(cè)點(diǎn)擊 Browse.并選中 SDK 路徑,本機(jī)為: E:Androi

24、dandroid-sdk-windows 點(diǎn)擊 Apply。配置完成。 2.3.5 創(chuàng)建 AVD為使 Android 應(yīng)用程序可以在模擬器上運(yùn)行,必須創(chuàng)建 AVD。1、在 Eclipse 中。選擇 Windows Android SDK and AVD Manager 2、點(diǎn)擊左側(cè)面板的 Virtual Devices,再右側(cè)點(diǎn)擊 New 3、填入 Name,選擇 Target 的 API,SD Card 大小任意,Skin 隨便選,Hardware 目前保持默認(rèn)值 4、點(diǎn)擊 Create AVD 即可完成創(chuàng)建 AVD 綜上一切完成后安卓環(huán)境搭建完成。72.4 系統(tǒng)開發(fā)編程語言的簡(jiǎn)介系統(tǒng)開發(fā)編

25、程語言的簡(jiǎn)介Java 是一種簡(jiǎn)單的,跨平臺(tái)的,面向?qū)ο蟮?,分布式的,解釋的,健壯的安全的,結(jié)構(gòu)的中立的,可移植的,性能很優(yōu)異的多線程的,動(dòng)態(tài)的語言。Java 編程語言的風(fēng)格十分接近 C、C+語言。Java 是一個(gè)純的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,它繼承了 C+ 語言面向?qū)ο蠹夹g(shù)的核心,Java 舍棄了 C +語言中容易引起錯(cuò)誤的指針(以引用取代) 、運(yùn)算符重載(operator overloading) 、多重繼承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的對(duì)象所占據(jù)的內(nèi)存空間,使得程序員不用再為內(nèi)存管理而擔(dān)憂。在 Java SE 1.5 版本中,Java 又引入了泛型編程(Gen

26、eric Programming) 、類型安全的枚舉、不定長(zhǎng)參數(shù)和自動(dòng)裝/拆箱等語言特性。 Java 不同于一般的編譯執(zhí)行計(jì)算機(jī)語言和解釋執(zhí)行計(jì)算機(jī)語言。它首先將源代碼編譯成二進(jìn)制字節(jié)碼(bytecode),然后依賴各種不同平臺(tái)上的虛擬機(jī)來解釋執(zhí)行字節(jié)碼,從而實(shí)現(xiàn)了“一次編譯、到處執(zhí)行”的跨平臺(tái)特性。不過,每次的編譯執(zhí)行需要消耗一定的時(shí)間,這同時(shí)也在一定程度上降低了 Java 程序的運(yùn)行效率。但在 J2SE 1.4.2 發(fā)布后,Java 的執(zhí)行速度有了大幅提升。與傳統(tǒng)程序不同,Sun 公司在推出 Java 之際就將其作為一種開放的技術(shù)。全球數(shù)以萬計(jì)的 Java 開發(fā)公司被要求所設(shè)計(jì)的 Java

27、 軟件必須相互兼容。 “Java 語言靠群體的力量而非公司的力量”是 Sun 公司的口號(hào)之一,并獲得了廣大軟件開發(fā)商的認(rèn)同。這與微軟公司所倡導(dǎo)的注重精英和封閉式的模式完全不同。 Sun 公司對(duì) Java 編程語言的解釋是:Java 編程語言是個(gè)簡(jiǎn)單、面向?qū)ο?、分布式、解釋性、健壯、安全與系統(tǒng)無關(guān)、可移植、高性能、多線程和動(dòng)態(tài)的語言。 Java 平臺(tái)是基于 Java 語言的平臺(tái)。 。 Java 的特點(diǎn):1.平臺(tái)無關(guān)性 平臺(tái)無關(guān)性是指 Java 能運(yùn)行于不同的平臺(tái)。Java 引進(jìn)虛擬機(jī) 原理,并運(yùn)行于虛擬機(jī),實(shí)現(xiàn)不同平臺(tái)的 Java 接口之間。使用 Java 編寫的程序能在世界范圍內(nèi)共享。Java

28、 的數(shù)據(jù)類型與 機(jī)器無關(guān),Java 虛擬機(jī)(Java Virtual Machine)是建立在硬件和操作系統(tǒng)之上,實(shí)現(xiàn) Java 二進(jìn)制代碼的解釋執(zhí)行功能, 提供于不同平臺(tái)的接口的。 2.安全性 Java 的編程類似 C+,學(xué)習(xí)過 C+的讀者將很快掌握 Java 的精髓。Java 舍棄了 C+的指針對(duì)存儲(chǔ)器地址的直接操作,程序運(yùn)行時(shí),內(nèi)存由操作系統(tǒng)分配,這樣可以避免病毒通過指針侵入系統(tǒng)。Java 對(duì)程序提供了安全管理器,防止程序的非法訪問。 第二章 系統(tǒng)開發(fā)環(huán)境與相關(guān)技術(shù)83.面向?qū)ο?Java 吸取了 C+面向?qū)ο蟮母拍?,將?shù)據(jù)封裝于類中,利用類的優(yōu)點(diǎn),實(shí)現(xiàn)了程序的簡(jiǎn)潔性和便于維護(hù)性。類的封

29、裝性、繼承性等有關(guān)對(duì)象的特性,使程序代碼只需一次編譯,然后通過上述特性反復(fù)利用。程序員只需把主要精力用在類和接口的設(shè)計(jì)和應(yīng)用上。Java 提供了眾多的一般對(duì)象的類,通過繼承即可使用父類的方法。在 Java 中,類的繼承關(guān)系是單一的非多重的,一個(gè)子類只有一個(gè)父類,子類的父類又有一個(gè)父類。Java提供的 Object 類及其子類的繼承關(guān)系如同一棵倒立的樹形,根類為 Object 類,Object 類功能強(qiáng)大,經(jīng)常會(huì)使用到它及其它派生的子類。 4.分布式 Java 建立在擴(kuò)展 TCP/IP 網(wǎng)絡(luò)平臺(tái)上。庫函數(shù)提供了用 HTTP 和 FTP 協(xié)議傳送和接受信息的方法。這使得程序員使用網(wǎng)絡(luò)上的文件和使用

30、本機(jī)文件一樣容易。 5.健壯性 Java 致力于檢查程序在編譯和運(yùn)行時(shí)的錯(cuò)誤。類型檢查幫助檢查出許多開發(fā)早期出現(xiàn)的錯(cuò)誤。Java 自己操縱內(nèi)存減少了內(nèi)存出錯(cuò)的可能性。Java 還實(shí)現(xiàn)了真數(shù)組,避免了覆蓋數(shù)據(jù)的可能,這些功能特征大大提高了開發(fā) Java 應(yīng)用程序的周期。并且 Java 還提供了 Null 指針檢測(cè)、數(shù)組邊界檢測(cè)、異常出口、Byte code 校驗(yàn)等功能。 6.解釋型 我們知道 C,C+等語言,都是針對(duì) CPU 芯片進(jìn)行編譯,生成機(jī)器代碼,該代碼的運(yùn)行就和特定的 CPU 有關(guān)。Java 不像 C 或 C+,它不針對(duì) CPU 芯片進(jìn)行編譯,而是把程序編譯成稱為自字節(jié)碼的一種“中間代碼

31、”。字節(jié)碼是很接近機(jī)器碼的文件,可以在提供了java 虛擬機(jī)(JVM)的任何系統(tǒng)上被解釋執(zhí)行。 7.動(dòng)態(tài) java 程序的基本組成單元就是類,有些類是自己編寫的,有些是從類庫中引入的,而類又是運(yùn)行時(shí)動(dòng)態(tài)裝載的,這就使得 Java 可以在分部環(huán)境中動(dòng)態(tài)的維護(hù)程序及分類,而不像 C+那樣,沒檔期類庫升級(jí)以后,如果想讓程序具有新類庫提供的功能,就需要修改程序,重新編譯。第三章 系統(tǒng)需求分析及概要設(shè)計(jì)0第三章 系統(tǒng)需求分析及概要設(shè)計(jì)3.1 系統(tǒng)的需求分析系統(tǒng)的需求分析該系統(tǒng)是一個(gè)基于安卓平臺(tái)的手機(jī)日程管理軟件。它是為本軟件的持有者提供日程管理方面服務(wù)的,它包括日歷的查看、日歷上日期對(duì)應(yīng)日程的查看、總?cè)?/p>

32、程的查看、日程的增加、日程的刪除、日程的修改、對(duì)本軟件的設(shè)置以及軟件相關(guān)信息的查看等。本軟件有助于人們記住重要的日程并給予提醒,也有助于人們更好的調(diào)節(jié)自己的時(shí)間來減輕生活上的一些負(fù)擔(dān),更輕松及有效的過好每一天。3.2 系統(tǒng)的概要設(shè)計(jì)系統(tǒng)的概要設(shè)計(jì)3.2.1 系統(tǒng)的功能模塊說明(1)日歷查看模塊:擁有一個(gè)完整的日歷界面,包括頭部的年月日、生肖、閏年的顯示,還有每個(gè)日期上都分別有陽歷和陰歷的日期顯示,并且日歷中包含了各個(gè)重要的節(jié)日或紀(jì)念日等。在日歷界面上每個(gè)日期都會(huì)跳到當(dāng)前日期的日程添加界面或者是日程顯示界面。日歷界面上還有對(duì)存在日程的標(biāo)記,有利于人們更好的管理日程。(2)日程管理模塊:在本模塊中

33、包括總的日程顯示頁面和日歷頁面所跳轉(zhuǎn)到的日程顯示界面或者是日程添加界面???cè)粘田@示界面每一個(gè)日程都會(huì)有它所包含的日期、時(shí)間、日程類型、重復(fù)類型和日程內(nèi)容。日歷日期所對(duì)應(yīng)的日程顯示界面也是相應(yīng)的顯示。而在日程添加界面中包含了顯示界面所對(duì)應(yīng)的各項(xiàng)數(shù)據(jù)、添加日程成功后會(huì)有對(duì)應(yīng)日歷日期的標(biāo)記。另外也有對(duì)日程的一系列管理操作的功能。(3)設(shè)置界面模塊:在設(shè)置中包括了對(duì)日程的類型和重復(fù)類型的默認(rèn)設(shè)置。(4)關(guān)于界面模塊:關(guān)于界面中包含了本軟件的設(shè)計(jì)信息及一些基本信息。3.2.2 系統(tǒng)的功能模塊結(jié)構(gòu)圖在程序設(shè)計(jì)分析的基礎(chǔ)上,結(jié)合實(shí)際情況,得出本程序的功能模塊結(jié)構(gòu)圖。在結(jié)構(gòu)圖中包括了功能模塊的表示及其中部分功

34、能的實(shí)現(xiàn)原理。1首先是一個(gè)總的功能模塊的結(jié)構(gòu)圖,其中包括了系統(tǒng)設(shè)計(jì)時(shí)的總體功能概括,如圖 3-1。日程管理系統(tǒng)主界面日歷模塊任務(wù)模塊設(shè)置模塊關(guān)于模塊日歷顯示總?cè)粘田@示類型設(shè)置關(guān)于界面單一日程顯示圖 3-1 總系統(tǒng)功能模塊然后在總體的功能模塊后面是主體功能的詳細(xì)模塊顯示。在日歷界面顯示上可分為幾個(gè)部分,詳細(xì)見圖 3-2,日歷顯示陰歷顯示節(jié)假日顯示日期顯示圖 3-2 日歷顯示模塊日歷模塊日歷模塊日歷模塊第三章 系統(tǒng)需求分析及概要設(shè)計(jì)2 還有就是日程的功能模塊的詳細(xì)介紹。總體書寫了日程添加界面的功能點(diǎn),結(jié)構(gòu)圖如圖 3-3 所示,新建日程顯示重復(fù)類型選擇日程時(shí)間書寫日程類型選擇日程內(nèi)容書寫圖 3-3

35、日程界面模塊第四章 系統(tǒng)詳細(xì)設(shè)計(jì)0第四章 系統(tǒng)的詳細(xì)設(shè)計(jì)4.1 系統(tǒng)主界面的設(shè)計(jì)和實(shí)現(xiàn)系統(tǒng)主界面的設(shè)計(jì)和實(shí)現(xiàn)4.1.1 系統(tǒng)主界面的頭部菜單欄制作這個(gè)頭部菜單欄是為了提升軟件的可操作性,我用的是 TabHost+RadioGroup 相結(jié)合的方法來制作這個(gè)部分的。菜單欄的底部位置是通過 TabHost 這個(gè)布局來實(shí)現(xiàn)的,然后是 LinearLayout 的線性布局來布置內(nèi)容。內(nèi)部的選項(xiàng)卡是通過 TabWiget 來實(shí)現(xiàn)首先建立好 Android 工程(我的工程名為:ScheduleManager) ,在工程下的 res/layout下建立一個(gè)名為 main 的空 xml 文件,然后在這個(gè)文件里

36、按照思路來添加布局代碼。主界面的菜單選項(xiàng)使用RadioGroup來建立,在這里的布局中RadioGroup里容納4個(gè)RadioButton,而RadioButton是單選按鈕。在這種情況下就只有也只能有一個(gè)RadioButton能被選擇,并且在開始時(shí)默認(rèn)了第一個(gè)按鈕被選中。其中RadioButton的實(shí)現(xiàn)方式是在設(shè)置了內(nèi)部的文字,然后再按鈕的頂部上添加上圖片,實(shí)現(xiàn)的代碼如下:從上述代碼可以看到,在菜單的每個(gè)選項(xiàng)卡樣式都是調(diào)用了 style 上的main_tab_bottom 來實(shí)現(xiàn)樣式的,而 main_tab_bottom 的背景 background 的值是drawable/btn_bg ,

37、btn_bg 不是一個(gè)簡(jiǎn)單的背景圖片,而是一個(gè) xml 文件,通過這個(gè)文件可以實(shí)現(xiàn)菜單選項(xiàng)卡切換時(shí)的背景切換的效果,使得這個(gè)菜單欄更加的美觀,代碼是使用了安卓的 selector 來實(shí)現(xiàn),在這里是通過不停的條件來判斷使用哪一個(gè) item 的,里面包括了幾個(gè)屬性值,如是否獲得焦點(diǎn)、是否響應(yīng)事件、是否點(diǎn)擊三個(gè)條件。實(shí)施的代碼如下: 1 制定完主頁面布局后,在 src/com.manage.activity 下的 MainPage 文件中OnCreate(OnCreate 方法是用來初始化 Activity 實(shí)例對(duì)象的)中調(diào)用布局,到現(xiàn)在為止頂部菜單欄的布局已經(jīng)基本完成,但現(xiàn)在里面所對(duì)應(yīng)的內(nèi)容還是空

38、的。所以就需要在這里給 tabHost 中添加 tab 內(nèi)容,以第一格的 tab 為例,先是通過 Intent 的方式新建個(gè) mDate,用來實(shí)現(xiàn)頁面的跳轉(zhuǎn)的方法,然后動(dòng)態(tài)用 tabHost 來通過 addTab 的方法添加對(duì)應(yīng) TabSpec的值和各個(gè)屬性。最后在添加RadioGroup的選擇操作函數(shù),這里是通過switch來完成對(duì)應(yīng)按鈕的功能的實(shí)現(xiàn),在每個(gè)case項(xiàng)中通過tabHost.setCurrentTabByTag來給與特定的值實(shí)現(xiàn)頁面上的跳轉(zhuǎn)。最終的效果如圖 4-1:圖 4-1 頭部菜單欄效果圖4.1.2 系統(tǒng)的日歷界面系統(tǒng)主界面默認(rèn)選擇日歷界面在頭部菜單欄下方。(1)首先是建立

39、一個(gè)布局文件,上面一部分是顯示年月日、生肖和農(nóng)歷的干支紀(jì)年。使用的是一個(gè) TextView 類,對(duì)應(yīng)的在日歷的 CalendarActivity 文件中加入函數(shù)來添加頭部的年份等信息。首先需要寫了一個(gè) CalendarView 類,這是為日歷顯示所寫的一個(gè)類,在其中使用重載的方法定義了幾個(gè)不同參數(shù)的 CalendarView,用于不同的情況。在 CalendarActivity 中實(shí)例化 CalendarView 并且使用 CalendarView 中的一個(gè)方法CalendarView(this, getResources(),jumpMonth,jumpYear,year_c,month_c

40、,day_c);然后書寫方法來添加頭部的年份 閏哪月等信息。第四章 系統(tǒng)詳細(xì)設(shè)計(jì)2首先是對(duì)這個(gè)頁面的頭部進(jìn)行布局,通過動(dòng)態(tài)化的方法來完成。然后建立一個(gè)可以進(jìn)行改變值的 StringBuffer 類型的參數(shù) textDate。對(duì)這個(gè)參數(shù)進(jìn)行 append 操作,添加例如年月日的知道參數(shù)里。其中有一個(gè)閏年判斷的條件函數(shù),是通過 calV.getLeapMonth()的值驚醒判斷的。完成后對(duì)界面使用 setText 方法來賦值到界面上。最后是對(duì)界面的一些美化,同樣使用動(dòng)態(tài)布局模式進(jìn)行。(2)下面是日歷界面中主體日期部分顯示的完成在 CalendarActivity 文件初始化實(shí)例對(duì)象時(shí)加入動(dòng)態(tài)添加布

41、局文件的方法。我將此方法命名為 addGridView。在這個(gè)方法中同樣是先進(jìn)行動(dòng)態(tài)化布局,由于這里用的是 GridView,這個(gè) GridView 應(yīng)用于將一系列的空間組織成二維網(wǎng)格的形式顯示出來,所以適用于我在這里進(jìn)行的日期界面的建立。同樣的首先是動(dòng)態(tài)化布局的建立,這可以實(shí)例化 GridView 為 gridView 參數(shù)進(jìn)行的。在這里需要添加 GridView 控件的列為 7,列寬為 46。并且還加上判斷屏幕大小的條件,這需要加入取得屏幕大小的對(duì)應(yīng)函數(shù),這里如果是 800*480 屏幕的話,就將列寬設(shè)置為69。然后進(jìn)行設(shè)置水平和豎直的間距、取值邊框、設(shè)置居中等操作。在這個(gè)方法里面還需加入

42、個(gè) OnTouch 方法,用來將 gridView 中的觸摸事件回傳給gestureDetector,進(jìn)行下面的觸摸操作,即: /將gridview中的觸摸事件回傳給gestureDetectorOverridepublic boolean onTouch(View v, MotionEvent event) return CalendarActivity.this.gestureDetector.onTouchEvent(event););創(chuàng)建完日歷的布局后,是在里面添加上具體的日期。就當(dāng)前顯示的頁面來說,是建立幾個(gè)對(duì)應(yīng)的參數(shù),用來顯示或傳接數(shù)據(jù)。例如在函數(shù)開始時(shí)就String dayNum

43、ber = new String49; 這是作為對(duì)GridView控件內(nèi)進(jìn)行標(biāo)記序列的,用于下面條件語句的判斷等,還有就是界面內(nèi)的一些控件名的實(shí)例化。 然后是動(dòng)態(tài)化的對(duì)頁面進(jìn)行屬性值的設(shè)置。其中在對(duì)日期中的第一行,即周一等值的這行,設(shè)置字的顏色及背景圖。得出這行的位置就需要通過對(duì)參數(shù)position(對(duì)應(yīng)編號(hào))進(jìn)行判斷是否在7以內(nèi)。 下一步是當(dāng)前月信息的顯示,這也需要條件函數(shù)來判斷是否為當(dāng)前月,也是來判斷參數(shù)position是否在范圍內(nèi)。在這個(gè)月中還需對(duì)當(dāng)天來一個(gè)特殊化,即設(shè)置當(dāng)天日期的背3景為圖片current_day_bgc,字色為白。 在這些操作外,還需要得到一些數(shù)值來用于日期數(shù)據(jù)的插入

44、,在這里建立了個(gè)getCalendar方法,如判斷是否為閏年的函數(shù)返回值isLeapyear,某月的總天數(shù),某月的第一天是星期幾,上個(gè)月總天數(shù)。在這方法中再執(zhí)行方法getweek,用來得出以后需要標(biāo)記的日期,這個(gè)在后面來介紹。通過上述的步驟基本完成了日歷界面中的初步建設(shè)。(3)由于日歷菜單需要能通過手勢(shì)觸摸來進(jìn)行翻頁,所以要在總體布局下建立一個(gè)ViewFlipper 類,這個(gè)類是用來實(shí)現(xiàn)屏幕的切換效果的。先是在布局中建立這個(gè)類,然后實(shí)例化手勢(shì) gestureDetector 并取得布局中 ViewFlipper 用于下面的調(diào)用。然后是書寫書寫手勢(shì)的各個(gè)方法,最主要的是onFling的方法,在這

45、里實(shí)現(xiàn)了頁面的向左及向右滑動(dòng)的操作,這個(gè)操作是由條件語句來實(shí)現(xiàn)的,由滑動(dòng)兩點(diǎn)的x坐標(biāo)的值進(jìn)行差值計(jì)算,如果是起點(diǎn)減去重點(diǎn)大于120時(shí)著向左滑動(dòng),反之則向右滑動(dòng)。在滑動(dòng)操作開始,并且已切換一面后就需要載入新的一張日歷頁面,這里又會(huì)用到參數(shù)calV,當(dāng)向左滑動(dòng)時(shí)則將參數(shù)calV所代表的函數(shù)CalendarView里的jumpMonth加1,代表下一個(gè)月;當(dāng)向右滑動(dòng)時(shí)則將參數(shù)calV所代表的函數(shù)CalendarView里的jumpMonth減1,代表上一個(gè)月。為了完整性剩余的手勢(shì)函數(shù)只是寫了方法未使用。4.1.2 系統(tǒng)的日歷特色顯示在日歷的顯示中除了一些基本的日期顯示,在日期頁面頭部有每年相應(yīng)的生肖

46、和閏年顯示,在日期上有每日的陰歷以及節(jié)假日的顯示。這里有兩個(gè)方法,分別是 LunarCalendar 和 SpecialCalendar。在 LunarCalendar 里面包括干支紀(jì)年,陰歷,生肖,節(jié)假日等信息。例如生肖則是建立一個(gè)字節(jié)數(shù)組來記錄十二生肖,并且用函數(shù)來傳回參數(shù)對(duì)應(yīng)的生肖。final public String animalsYear(int year) final String Animals = new String 鼠, 牛, 虎, 兔, 龍, 蛇,馬, 羊, 猴, 雞, 狗, 豬 ;return Animals(year - 4) % 12;同樣的其他信息,如節(jié)假日的名

47、稱,也是通過字節(jié)數(shù)組來儲(chǔ)存的。在 SpecialCalendar 是閏年的判斷函數(shù),每月天數(shù),以及對(duì)每月的第一天星期的判斷。第四章 系統(tǒng)詳細(xì)設(shè)計(jì)4閏年通過傳回年值通過函數(shù)進(jìn)行判斷,并傳回布爾值。每月的天數(shù)用 switch 進(jìn)行判斷賦值給月份天數(shù)的參數(shù)。 對(duì)每月的第一天為星期幾的判斷并指定。/指定某年中的某月的第一天是星期幾public int getWeekdayOfMonth(int year, int month)Calendar cal = Calendar.getInstance();cal.set(year, month-1, 1);dayOfWeek = cal.get(Calen

48、dar.DAY_OF_WEEK)-1;return dayOfWeek;最終的效果如圖4-2:圖 4-2 日歷界面的最終實(shí)現(xiàn)圖4.2 系統(tǒng)任務(wù)界面的設(shè)計(jì)系統(tǒng)任務(wù)界面的設(shè)計(jì)任務(wù)界面包括任務(wù)主界面(所有日程的顯示)和對(duì)應(yīng)日期任務(wù)的顯示,任務(wù)的添加等。在任務(wù)界面涉及到日程的數(shù)據(jù)存儲(chǔ),所以先介紹下關(guān)于日程的數(shù)據(jù)存儲(chǔ)以及有日程的日期存儲(chǔ)(為日歷界面的標(biāo)記服務(wù)) 。54.2.1 任務(wù)界面的數(shù)據(jù)庫準(zhǔn)備(1)數(shù)據(jù)庫里表的建立分別建立了 schedule 表(日程的表)和 scheduletagdate(標(biāo)記日期所需的表)Android 提供了標(biāo)準(zhǔn)的數(shù)據(jù)庫創(chuàng)建方式。建立 DBOpenHelper 類繼承到 SQ

49、LiteOpenHelper ,實(shí)現(xiàn) onCreate 和 onUpgrade 兩個(gè)方法。OnCreate 方法是用于初次使用軟件時(shí)生成數(shù)據(jù)庫,onUpgrade 方法是用于升級(jí)軟件時(shí)更新數(shù)據(jù)庫表結(jié)構(gòu)。首先是 schedule 表的建立,在這個(gè)表中包括日程 ID、日程類型的 ID、日程重復(fù)類型的 ID、日程正文內(nèi)容、日程日程時(shí)間這幾個(gè)參數(shù)。建立時(shí)對(duì)應(yīng)需要寫上參數(shù)名、參數(shù)類型、主鍵等。db.execSQL(CREATE TABLE IF NOT EXISTS schedule(scheduleID integer primary key autoincrement,scheduleTypeID

50、integer,remindID integer,scheduleContent text,scheduleDate text); 下面是scheduletagdate表的建立,在這個(gè)表中包括標(biāo)記的ID、年信息、月信息、日信息、日程ID這幾個(gè)參數(shù)。db.execSQL(CREATE TABLE IF NOT EXISTS scheduletagdate(tagID integer primary key autoincrement,year integer,month integer,day integer,scheduleID integer); 建立完表后是繼續(xù)寫入 onUpgrade 方

51、法,這個(gè)方法會(huì)在數(shù)據(jù)庫升級(jí)時(shí)被觸發(fā),以便于軟件升級(jí)時(shí)更新表結(jié)構(gòu)。public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) db.execSQL(DROP TABLE IF EXISTS schedule);db.execSQL(DROP TABLE IF EXISTS scheduletagdate);onCreate(db);(2)再分別建立ScheduleVO 和ScheduleDateTag ,里面分別寫了表里面各個(gè)數(shù)據(jù)的get(表示獲取某個(gè)變量值)和set(表示設(shè)置某個(gè)變量值)方法,以便于調(diào)用。(3

52、)建立ScheduleDAO文件,這個(gè)文件是用來寫數(shù)據(jù)庫的查找、刪除等方法。 首先是需要實(shí)例化DBOpenHelper用于數(shù)據(jù)庫數(shù)據(jù)的get與set。private DBOpenHelper dbOpenHelper = null;public ScheduleDAO(Context context)dbOpenHelper = new DBOpenHelper(context, schedules.db);下面就是對(duì)表中數(shù)據(jù)的操作了,包括了保存日程信息、查詢某一條日程信息、查詢第四章 系統(tǒng)詳細(xì)設(shè)計(jì)6所有的信息、刪除日程、將日程標(biāo)記的日期保存到數(shù)據(jù)庫中。(1)保存日程信息,先是從日程添加頁面里

53、獲取日程類型的ID、日程重復(fù)類型的ID、日程正文內(nèi)容、日程日程時(shí)間這幾個(gè)參數(shù),然后是使用ContentValues類(這個(gè)類是一個(gè)鍵值對(duì),是用來存儲(chǔ)名值對(duì),它的名一般是String類型,而值都是基本類型)來new一個(gè)參數(shù),用這個(gè)參數(shù)的put方法將這些個(gè)參數(shù)放入到數(shù)據(jù)庫中。values.put(scheduleTypeID, scheduleVO.getScheduleTypeID();/放入日程類型IDvalues.put(remindID, scheduleVO.getRemindID(); /放入重復(fù)類型ID values.put(scheduleContent, scheduleVO.g

54、etScheduleContent();/放入日程正文內(nèi)容 values.put(scheduleDate, scheduleVO.getScheduleDate();/放入日程日期信息最后調(diào)用添加方法insert。 db.insert(schedule, null, values);/插入信息另外需要moveToFirst方法來判斷是否為空,進(jìn)行相關(guān)的操作。(2)查詢某一條日程信息,由于我這里的設(shè)計(jì)是通過對(duì)日程的點(diǎn)擊來查看當(dāng)前點(diǎn)擊日期的詳細(xì)信息,即是根據(jù)日程的ID來查看的。android sqlite的查詢方法是query方法,它的查詢語句是:db.query(schedule, new S

55、tringscheduleID,scheduleTypeID,remindID,scheduleContent,scheduleDate, scheduleID=?, new StringString.valueOf(scheduleID), null, null, null);另外還需要的是判斷語句,先用cursor.moveToFirst()判斷 curor 是否為空值,不為空則就給 cursor 賦值,空著直接 cursor.close()來關(guān)閉。(3)查詢所有的日程信息,由于所有日期可能不止一個(gè),所以返回值設(shè)為數(shù)組形式。查詢依舊是用query方法,這里的的where語句相關(guān)的就直接設(shè)為

56、null值。其他的依舊與查詢一條語句相仿。(4)刪除日程,這里的刪除日程需要將日程及對(duì)應(yīng)日期上的標(biāo)記一起刪除,這樣才可以便于管理,刪除使用的語句是delete。db.delete(schedule, scheduleID=?, new StringString.valueOf(scheduleID);/刪除日程信息db.delete(scheduletagdate, scheduleID=?, new StringString.valueOf(scheduleID);/刪除日程對(duì)應(yīng)的日期標(biāo)識(shí)信息(5)將日程標(biāo)志日期保存到數(shù)據(jù)庫中,這里是為了將在日期上標(biāo)識(shí)的信息存儲(chǔ)到數(shù)據(jù)庫中,方法同第一步的保存

57、相仿,只是數(shù)據(jù)的不一樣,而且使用的是數(shù)組形式。for(int i = 0; i dateTagList.size(); i+)/以for循環(huán)的方式進(jìn)行dateTag = dateTagList.get(i);7ContentValues values = new ContentValues();values.put(year, dateTag.getYear();/放入年信息values.put(month, dateTag.getMonth();/放入月信息values.put(day, dateTag.getDay();/放入日信息values.put(scheduleID, dateTa

58、g.getScheduleID();/翻入日程的IDdb.insert(scheduletagdate, null, values);/插入到表scheduletagdate中(6)只查詢出當(dāng)前日程的日期,這個(gè)查詢語句是通過當(dāng)前月的年和月信息來得到日程標(biāo)記上的所有信息。這里也是使用query語句進(jìn)行查詢的,只不過改變了里面的查詢使用的參數(shù)。所以方法類同于上面所有日程的查詢。 (7)當(dāng)點(diǎn)擊每一個(gè)gridview中item時(shí),查詢出此日期上所有的日程標(biāo)記(scheduleID),通過點(diǎn)擊后得到對(duì)應(yīng)日期的年月日信息,然后用query方法得到次日程標(biāo)記的ID,用于后面得到想到相關(guān)的日程信息。query

59、(scheduletagdate, new StringscheduleID, year=? and month=? and day=?, newStringString.valueOf(year),String.valueOf(month),String.valueOf(day), null, null, null);(8)關(guān)閉數(shù)據(jù)庫。判斷后直接關(guān)閉當(dāng)前數(shù)據(jù)庫。if(dbOpenHelper != null)dbOpenHelper.close();4.2.2 任務(wù)界面之新增界面新增界面是通過對(duì)日歷界面上單一日期的點(diǎn)擊來實(shí)現(xiàn)跳轉(zhuǎn)的。(1)首先為了界面的美觀我建了幾個(gè)帶邊框的類,這些類是在原有

60、的textview等基本類的基礎(chǔ)上進(jìn)行美化后形成的。這里一共做了下面的三個(gè)實(shí)現(xiàn)了畫筆效果的類。首先是帶下邊框的TextView,這里TextView類的基礎(chǔ)上用畫筆實(shí)現(xiàn)了下邊框的效果。Paint paint = new Paint();/ 實(shí)例化一支畫筆paint.setColor(android.graphics.Color.BLACK); / 設(shè)置所繪制的邊框顏色為黑色canvas.drawLine(0, this.getHeight() - 1, this.getWidth() - 1, this.getHeight() - 1, paint); / 繪制下邊框帶邊框的EditText,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論