畢業(yè)設(shè)計基于安卓的手機日歷管理系統(tǒng)_第1頁
畢業(yè)設(shè)計基于安卓的手機日歷管理系統(tǒng)_第2頁
畢業(yè)設(shè)計基于安卓的手機日歷管理系統(tǒng)_第3頁
畢業(yè)設(shè)計基于安卓的手機日歷管理系統(tǒng)_第4頁
畢業(yè)設(shè)計基于安卓的手機日歷管理系統(tǒng)_第5頁
已閱讀5頁,還剩48頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、畢業(yè)設(shè)計論文題 目 基于安卓的 日歷管理系統(tǒng)基于安卓的 日歷管理系統(tǒng)摘要隨著生活節(jié)奏的逐步加快,人們常會有許多的重要工作需要去安排或完成,個人的日 常工作、領(lǐng)導的重要會議、個人重要日期或者時間等。這些工作都需要在特定的時間給予 醒目標識或者提示。而為了能盡可能的減少人們的負擔,來更有效率的工作和更舒適的生 活。這就需要有專門的日程管理系統(tǒng)來安排這些事務(wù)。日程管理系統(tǒng)的主要功能是完成個 人一般日程和重要日程安排并提供提醒和查看的功能。如今隨著信息技術(shù)的高速發(fā)展, 已經(jīng)成為現(xiàn)代人們生活所必不可少的物品,將其 作為日程管理系統(tǒng)的平臺可以說是一個很好的選擇。而且現(xiàn)如今 安卓系統(tǒng)已經(jīng)成為一 門及其熱門的

2、技術(shù),因此我選擇將基于安卓的 日程管理系統(tǒng)作為我的畢業(yè)設(shè)計課題。本系統(tǒng)是一個基于安卓 平臺的日程管理系統(tǒng),具有基本的日程活動的增、刪、改、 查功能,在日歷瀏覽中可突出顯示有安排的日期。用戶可根據(jù)不同的活動設(shè)置任務(wù),便于 對日程的管理。系統(tǒng)還具備提醒程序,可幫助管理重要活動,并且實現(xiàn)與網(wǎng)絡(luò)數(shù)據(jù)同步的 功能。系統(tǒng)是基于安卓的基礎(chǔ)知識和 Java 語言,以及 SQLite 提供的數(shù)據(jù)的管理來開發(fā)的, 最終取得了較圓滿的成果。關(guān)鍵詞: 日歷管理 Java 安卓MobilePhone Schedule Management System ased On AndroidAbstractAs the pac

3、e of life has been accelerating gradually,people often have many of the important work need to 缸range or complete,personal daily work,leadership of the important meeting,personal important date or time,etc. All this work need to be in particular time to give marked logo or hints. And in order to red

4、uce the burden of the people as much as possible,tomoreef自cient work and more cornfortable life. This has to be special schedule management system to 缸range these affairs. Schedule management systems main function is to make the personal gene時schedule and important schedules and provide remind and v

5、iew function.And now,with the high speed development of information technology,the mobile phonehas become the modem people living an essential items,as a schedule management system platform can be said to be a ve巧r good choice. And now two mobile phone system,a1ready become a and its popular technol

6、ogy,so 1choose will be based on 由e mobile phone schedule management system andros as my graduation design task.his system is a result of the mobile platform based on schedule management system,have the basic agenda of activity increase and delete,change,check function,in the calendar can browse high

7、light is the date of the 缸Tangement.Users can set according to different activities task,and is convenient for the management of the schedule. The system also has the remind program can help manage 由e important activities,and rea1ize and network data synchronizationfunction.System is based on the fo

8、undation of andros knowledge and Java language,and to provide the data management SQLite to development,and fmally achieved satisfactory results.Key words: Schedule management; Java;Android目 錄摘要2Abs位act . 3 目錄4 第一章緒論 . 6課題背景 . 61.2 安卓平臺簡介71.2.1 安卓平臺特色介紹.71.2.2 安卓系統(tǒng)編程語言81.3 安卓開發(fā)的現(xiàn)狀.8第二章系統(tǒng)開發(fā)環(huán)境與相關(guān)技術(shù)92.

9、1 系統(tǒng)開發(fā)的環(huán)境 . 9 系統(tǒng)開發(fā)軟件的簡介92.2.1 Eclipse 的簡介9 其他軟件的簡介102.3 安卓環(huán)境的搭建四2.3.1 軟件下載準備四2.3.2JDK 安裝.10 燦droid SDK 安裝112.3.4屆T 安裝122.3.5 創(chuàng)建 AVD口2.4 系統(tǒng)開發(fā)編程語言的簡介.口 第三章系統(tǒng)需求分析及概要設(shè)計臼3.1 系統(tǒng)的需求分析臼3.2 系統(tǒng)的概要設(shè)計臼3.2.1 系統(tǒng)的功能模塊說明153.2.2 系統(tǒng)的功能模塊結(jié)構(gòu)圖臼 第四章系統(tǒng)的詳細設(shè)計四 系統(tǒng)主界麗的設(shè)計和實現(xiàn)四4.系統(tǒng)主界麗的頭部菜單欄四4.1.2 系統(tǒng)的日歷界面四4.1.2 系統(tǒng)的日歷特色顯示21 系統(tǒng)任務(wù)界面

10、的設(shè)計224.2.1 任務(wù)界面的數(shù)據(jù)庫準備224.2.2 任務(wù)界面之新增界面254.2.3 任務(wù)界面之總?cè)粘探缑娉?.2.3 任務(wù)界面之單一日程界麗344.2.4 任務(wù)界面之實現(xiàn)對已有日程日期的標記 萬4.3 系統(tǒng)設(shè)置界面到4.4 系統(tǒng)關(guān)于界面刀4.5 系統(tǒng)底部菜單項刀4.5.1 日歷界面使用的底部菜單項到4.5.2 其他界面使用的底部菜單項設(shè)計與實現(xiàn) 40 農(nóng)歷算法41第五章程序測試45M 安卓測試概述.455.2 功能性測試.46以上測試均為真機測試,并且有錄制詳細的操作視頻 465.3 穩(wěn)定性測試 465.4 測試結(jié)果47 結(jié)束語48 參考文獻 50 致謝 . 51第一章緒論 課題背景當

11、今社會是信息社會,人們無論何時、無論何地都是在與信息打交道,您閱讀的報紙 是信息、看到的廣告是信息、電視傳播的是信息、上網(wǎng)瀏覽的是信息,當代人簡直生活在 信息海洋 中。這么多的信息哪些是有用的,哪些是無用的,人們在信息豐富的社會中, 難免會忘記一些重要信息,有時會掉一個尋呼機,有時會掉一個 本或筆記本什么的, 這些 信息載體也許包含著重要的個人信息。如何將這些有用的信息存儲起來避免忘記 或丟失,如何對這些有用信息進行有序地組織、管理以資對生活決策提供幫助,這正是信 息管理軟件要解決的問題。進入 21 世紀以來,無所不在的計算將打破傳統(tǒng)意義上的計算機概念:使用更方便、 移動更容易、功能更多樣化的

12、各種具有計算機功能的設(shè)備大量出現(xiàn),并且在需要時,可以 隨時通過無線方式連接到移動數(shù)據(jù)通信網(wǎng)絡(luò)中,以便高效地交換信息和獲得各種服務(wù)。這 種設(shè)備人們稱之為無限設(shè)備(Mobile Device)。移動設(shè)備最根本的特征是移動性,即能夠利 用無線電波、微波或紅外線等傳輸介質(zhì)允許通信中的設(shè)備在一定范圍內(nèi)自由移動,其位置 不受束縛,從而實現(xiàn)通信雙方至少有一方在移動中進行信息傳輸和交換的目的。移動設(shè)備 從產(chǎn)生到現(xiàn)在的歷史并不長,然而其發(fā)展速度卻遠遠超出人們的預料?,F(xiàn)如今,移動設(shè)備大行其道,全球有超過十億部移動 正在被使用,并且這個數(shù)目 正在逐漸增加。在除美國之外的每個發(fā)達國家,擁有 的人數(shù)比擁有計算機的人數(shù)更

13、多。而目前,隨著移動設(shè)備越來越普及及移動硬件的提升,移動設(shè)備的功能越來越完善, 移動設(shè)備的系統(tǒng) 平 臺也日漸火熱起來。目前國內(nèi)最常見的移動開發(fā)平 臺有 Symbi鈕,iPhone,Windows Phone 以及 Android。如今國內(nèi)外都有非常多的 Android 系統(tǒng)的 用戶。自從 2011 年第一季度,Android 在全球份額首次超過 Symbian,躍居全球第一。截 止 2012 年 2 月?lián)?,Android 占據(jù)全球智能 操作系統(tǒng)市場 52.5%的份額,中國市場占有 率為 68.4%。考慮到如今 系統(tǒng)的發(fā)展現(xiàn)狀,以及 Android 平臺系統(tǒng)自身所擁有的優(yōu)勢。因此,基于安卓平臺開

14、發(fā)一款 應(yīng)用軟件具有較大的意義和可行性。1.2 安卓平臺簡介Androd 一詞的本義指 機器人, 同時也是 Google 于 2007 年 11 月 5 日宣布的基于 Lnux 平臺的開源 操作系統(tǒng)的名稱,該平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟 件組成,號稱是首個為移動終端打造的真正開放軍日完整的移動軟件。目前,最新版本為 Androd Ice Cream Sandwch (冰激凌三明治)以及還在測試中的 Androd Jelly Bean (果凍豆。1.2.1 安卓平臺特色介紹1.開放性在優(yōu)勢方面,Android 平臺首先就是其開放性,開放的平臺允許任何移動終端廠商加入 到 Androd

15、 聯(lián)盟中來。顯著的開放性可以使其擁有更多的開發(fā)者,隨著用戶和應(yīng)用的日益 豐富,一個嶄新的平臺也將很快走向成熟。開發(fā)性對于 Androd 的發(fā)展而言,有利于積累 人氣,這里的人氣包括消費者和廠商,而對于消費者來講,最大的受益正是豐富的軟件資 源。開放的平臺也會帶來更大競爭,如此一來,消費者將可以用更低的價位購得心儀的手 機。2.掙脫運營商的束縛 在過去很長的一段時間,特別是在歐美地區(qū), 應(yīng)用往往受到這營商制約,使用什么功能接入什么網(wǎng)絡(luò),幾乎都受到運營商的控制。自從 Phone 上市,用戶可以更加方便地 連接網(wǎng)絡(luò),運營商的制約減少。隨著 EDGE、HSDPA 這些 2G 至 3G 移動網(wǎng)絡(luò)的逐步過

16、渡 和提升, 隨意接入網(wǎng)絡(luò)已不是運營商口中的笑談。3.豐富的硬件選擇這一點還是與 Androd 平臺的開放性相關(guān),由于 Androd 的開放性,眾多的廠商會推出 千奇百怪,功能特色各具的多種產(chǎn)品。功能上的差異和特色,卻不會影響到數(shù)據(jù)同步、甚 至軟件的兼容。好比你從諾基亞 Symban 風格 一下改用蘋果 iPhone,同時還可將 Symban 中優(yōu)秀的軟件帶到 iPhone 上使用、聯(lián)系人等資料更是可以方便地轉(zhuǎn)移。4.不受任何限制的開發(fā)商Androd 平臺提供給第三方開發(fā)商一個十分寬泛、自由的環(huán)境。因此不會受到各種條條 框框的阻擾,可想而知,會有多少新穎別致的軟件會誕生。但也有其兩面性,血腥、

17、暴力、情色方面的程序和游戲如何控制正是留給 Android 難題之一。1.2.2 安卓系統(tǒng)編程語言在的世oid 中,開發(fā)者可以使用 Java 作為編程語言來開發(fā)應(yīng)用程序,也可以通過 NDK 使用 C/C+作為編程語言來開發(fā)應(yīng)用程序,也可使用 SlAA 來使用其他各種腳本語言進行 編程(如: python、lua,tcl、php 等等),還有其他諸如: Qt ( qt for android )、Mono ( mono for android ) 等一些著名編程框架也開始支持 Android 編程,甚至通過 MonoDroid,開發(fā)者 還可以使用 C#作為編程語言來開發(fā)應(yīng)用程序。另外,谷歌還在

18、2009 年特別發(fā)布了針對初 學者的 Android Simple 語言,該語言類似 Basic 語言。而在網(wǎng)頁編程語言方面,JavaScript, 句缸,H四fl.5,jquery、sencha、dojo、mobl、PhoneGap 等等都已經(jīng)支持 Android 開發(fā)。在 Android 系統(tǒng)底層方面,Android 使用 C/C+作為開發(fā)語言。而 Android 應(yīng)用層的開 發(fā),基本上全部是采用 Java 開發(fā)。但和我們一般互聯(lián)網(wǎng)上應(yīng)用的 JAVA 還是有些區(qū)別的。 此JAVA是 google 自己做的一套實現(xiàn)來實現(xiàn),和 SUN 的底層是不太一樣的。不過對開發(fā) 應(yīng)用區(qū)別不大。 安卓開發(fā)的

19、現(xiàn)狀目前國內(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ī)模較大的公司,這些公司主要為自有品牌或者其他品牌設(shè)計 或者平板電腦的總體方案。除了根據(jù)需求對系統(tǒng)進行定制外,更多的工作在于為這些 系統(tǒng)編寫定制的應(yīng)用。第二類開發(fā)者,一般處于創(chuàng)業(yè)型公司或者是獨立開發(fā)者,他們的盈利方式主要是 2 種: 為國外公司進行外包開發(fā),或者通過 Google 的移動廣告 ( AdMob

20、 ) 通過廣告點擊分成。 而理論上的通過付費下載的形式來盈利的,現(xiàn)在國內(nèi)鮮見成功者。第三類開發(fā)者,目前和第二類開發(fā)者類似。下圖是開發(fā)者提交的應(yīng)用和游戲的數(shù)目 所占的比例圖, 從中也可以看出應(yīng)用開發(fā)數(shù)目遠超游戲開發(fā)。第二章系統(tǒng)開發(fā)環(huán)境與相關(guān)技術(shù) 系統(tǒng)開發(fā)的環(huán)境Android 的上層應(yīng)用程序是用 Java 語言開發(fā),同時還需要基于 Dalvik 虛擬機,所以, Google 公司推薦使用主流的 Java 繼承開發(fā)環(huán)境 Eclipse。只有 Eclipse 還不夠, 因為是使 用 Java 語言進行開發(fā), 還應(yīng)該有由 SUN 公司提供的 Java SDK(其中包括 JRE: Java Runtime

21、Env讓onment)。此外,燦的id 的應(yīng)用程序開發(fā)和 Java 開發(fā)有較大區(qū)別的,所以還 需要有 Google 提供的 Android SDK。同時,還需要在 Eclipse 安裝 ADT,為Android 開發(fā) 提供開發(fā)工具的升級或者變更,是 Eclipse 下開發(fā)工具的升級下載的工具。簡言之,需要 以下軟件,才能搭建 Android 開發(fā)環(huán)境,從而進行 Android 應(yīng)用程序的開發(fā)。(1)Eclipse(2) JDK(3) Android SDK(4) ADT C Android Development Tools) 系統(tǒng)開發(fā)軟件的簡介 Eclipse 的簡介Eclipse 是一個開

22、放源代碼的、基于 Java 的可擴展開發(fā)平臺。就其本身而言,它只是 一個框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運的是,Ec且pse 附帶了一個標 準的插件集,包括 Java 開發(fā)工具 (Java Development Kit,JDK )。雖然大多數(shù)用戶很樂于將 Eclipse 當作 Java 集成開發(fā)環(huán)境 C IDE ) 來使用,但 Eclipse 的目標卻不僅限于此。Eclipse 還包括插件開發(fā)環(huán)境 C Plug-in Development Environment, PDE) ,這個組件主要針對希望擴展 Eclipse 的軟件開發(fā)人員,因為它允許他們構(gòu)建與 Eclipse 環(huán)

23、境無縫集成的工具。由于 Eclipse 中的每樣東西都是插件,對于給 Eclipse 提供 插件,以及給用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的 發(fā)揮場所。這種平等和一致性并不僅限于 Java 開發(fā)工具。盡管 Eclipse 是使用 Java 語言開發(fā)的,但它的用途并不限于 Java 語言: 例如,支持諸如 C/C+ 和 COBOL 等編程語言的插件己經(jīng)可用,或預計將會推出。Eclipse 框架還可用來作為與軟件開發(fā)無關(guān)的其他應(yīng)用程 序類型的基礎(chǔ),比如內(nèi)容管理系統(tǒng)。 其他軟件的簡介(l )JDKJDK(Java Development 阻t)是 Sun Microsy

24、stems 針對 Java 開發(fā)員的產(chǎn)品。 自從 Java 推 出以來,JDK 已經(jīng)成為使用最廣泛的 Java SDK o JDK 是整個 Java 的核心,包括了 Java 運 行環(huán)境,Java 工具和 Java 基礎(chǔ)的類庫。JDK 是學好 Java 的第一步。而專門運行在 x86 平 臺的 Jrocket 在服務(wù)端運行效率也要比 Sun JDK 好很多。從 SUN 的 JDK5.0 開始提供了泛 型等非常實用的功能,其版本也不斷更新,運行效率得到了非常大的提高。(2) Android SDKSDK: Csoftware development kit) 軟件開發(fā)工具包。被軟件開發(fā)工程師用于

25、為特定的 軟件包、軟件框架、硬件平臺、操作系統(tǒng)等建立應(yīng)用軟件的開發(fā)工具的集合。因此,Android SDK 指的既是 Android 專屬的軟件開發(fā)工具包。(3)ADT C Android Development Tools)目前 Android 開發(fā)所用的開發(fā)工具是 Eclipse,在 Eclipse 編譯 IDE 環(huán)境中,安裝 ADT, 為Android 開發(fā)提供開發(fā)工具的升級或者變更,簡單理解為在 Eclipse 下開發(fā)工具的升級下 載工具。2.3安卓環(huán)境的搭建2.3.1 軟件下載準備分別下載 JDK、Eclipse、Android SDK,并首先解壓 Eclipse 完成安裝。 安裝首

26、先按提示完成 SDK 安裝,然后設(shè)置環(huán)境變量(非必須)。1.我的電腦-屬性-高級-環(huán)境變量-系統(tǒng)變量中添加以下環(huán)境變量: 值為: E:山ndroidJava. (我所安裝 JDK 的目錄)值: .;%JAVA_HOl在E%libtools.jar;%JAVA_HOl伍%libdt.j盯;%JAVA_HOl伍%飛bin;4.Path: 在開始追加 %JAVA_H 。如伍%bin;安裝完成之后,檢查 JDK 是否安裝成功。打開 cmd 窗口,輸入 java - version 查看JDK 的版本信息。出現(xiàn)下面的畫面表示安裝成功了,如圖 2-1:iClO:;oft lI indo川9iIII橋本 5

27、.1.2600M問tMW.百iC l o:;oft C01p.):J oClll1lent:; dnd Settin :;-Jldnini:;tldtol dVd -el:; ion e 1 . 0 n .6 .2106)d l1lode.dVd(T問) SE lln I lenvonn n (bl ld 1- .dVd HotSpot(TM) C1ientM (blli1d 17.0-b16. l1lixe:;hd l iny): J OC llITlents and Sett inys -Jldlllinistlat o l 圖 2-1 安卓環(huán)境設(shè)置 DK 效果測試圖2.3.3 Andro

28、id SDK 安裝下載完成后解壓到任意路徑(我的解壓路徑為 E:Androidandroid-s-windows)運行 SDK See,點擊 Available Packages。選擇希望安裝的 SDK 及其文檔或者其它包,按需點擊下面選項開始下載安裝所選包)在用戶變量中新建 PATH 值為: Android SDK 中的 tools 絕對路徑(本機為D:AndroidDevelop飛android-sd.k-windowstools)。 完成按是不是安裝成功。運行 android - h 出現(xiàn)以下的畫面,表明安裝成功,如圖 2-2:圖 2-2 安卓環(huán)欖設(shè)置 SDK 效果測試圖 安裝打開 Ec

29、lipse,進入菜單中的 Help - Install New Software點擊 Add.按鈕,彈出對話框要求輸入 Name 和 Location: Name 自己隨便取,Location輸入 l-ssl.omJandroid/eclipse。確定返回后,在 work with 后的下拉列表中選擇我們剛才添加的 ADT,點擊下面出現(xiàn) 的 Developer Tools,展開它會有 Android DDMS 和 Android Development Tool,勾選他們, 然后按步驟完成。完成之后:選擇 Window Preferences. 在左邊的面板選擇 Android,然后在右側(cè)點擊

30、 Browse.并選中 SDK 路徑,本機為: E:Androidandroid-sdk-windows 點擊 Apply。配置完成。2.3.5 創(chuàng)建 AVD為使 Android 應(yīng)用程序可以在模擬器上運行,必須創(chuàng)建 AVD。1、在 Eclipse 中。選擇 Windows Android SDK and AVD Manager2、點擊左側(cè)面板的 Virtual Devices,再右側(cè)點擊 New3、填入 Name,選擇 Target 的 APL SD Card 大小任意,Skin 隨便選,Hardware 目前保持 默認值4、點擊 Create AVD 即可完成創(chuàng)建 AVD綜上一切完成后安卓

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

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

33、Java 開發(fā)公司被要求所設(shè)計的 Java 軟件必須相互兼容。Java 語言靠群體的力量 而非公司的力量是 Sun 公司的口號之一,并獲得了廣大軟件開發(fā)商的認同。這與微軟公 司所倡導的注重精英和封閉式的模式完全不同。 Sun 公司對 Java 編程語言的解釋是: Java 編程語言是個簡單、面向?qū)ο?、分布式、解釋性、健壯、安全與系統(tǒng)無關(guān)、可移植、 高性能、多線程和動態(tài)的語言。 Java 平臺是基于 Java 語言的平臺。Java 的特點:1.平臺無關(guān)性平臺無關(guān)性是指 Java 能運行于不同的平臺。Java 引進虛擬機原理,并運行于虛擬機, 實現(xiàn)不同平臺的 Java 接口之間。使用 Java 編

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

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

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

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

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

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

40、總的功能模塊的結(jié)構(gòu)圖,其中包括了系統(tǒng)設(shè)計時的總體功能概括,如圖 3-1。類型設(shè)置圖 3-1 總系統(tǒng)功能模塊然后在總體的功能模塊后面是主體功能的詳細模塊顯示。在日歷界面顯示上可分為幾個部分,詳細見圖 3-2,日期顯示 日歷顯示 陰歷顯示 節(jié)假日顯示圖 3-2 日歷顯示模塊還有就是日程的功能模塊的詳細介紹??傮w書寫了日程添加界面的功能點,結(jié)構(gòu)圖如圖 3-3 所示,日程類型選擇重復類型選擇新建日程顯示日程時間書寫 日程內(nèi)容書寫圖 3-3 日程界面模塊第四章系統(tǒng)的詳細設(shè)計 系統(tǒng)主界面的設(shè)計和實現(xiàn)4.1.1 系統(tǒng)主界面的頭部菜單欄制作這個頭部菜單欄是為了提升軟件的可操作性,我用的是 TabHost+Ra

41、dioGroup 相結(jié) 合的方法來制作這個部分的。菜單欄的底部位置是通過 TabHost 這個布局來實現(xiàn)的,然后 是 LinearLayout 的線性布局來布置內(nèi)容。內(nèi)部的選項卡是通過 TabWiget 來實現(xiàn)首先建立好 Android 工程我的工程名為: ScheduleManager ),在工程下的 res/layout下建立一個名為 main 的空 xml 文件,然后在這個文件里按照思路來添加布局代碼。 主界面的菜單選項使用RadioGroup來建立,在這里的布局中RadioGroup里容納4個RadioButton,而RadioButton是單選按鈕。在這種情況下就只有也只能有一個Ra

42、dioButton 能被選擇,并且在開始時默認了第一個按鈕被選中。其中RadioButton的實現(xiàn)方式是在設(shè)置 了內(nèi)部的文字,然后再按鈕的頂部上添加上圖片,實現(xiàn)的代碼如下:從上述代碼可以看到,在菜單的每個選項卡樣式都是調(diào)用了 style 上的 main_tab_bottom 來實現(xiàn)樣式的,而 main_tab_bottom 的背景 background 的值是drawable/btn_bg ,btn_bg 不是一個簡單的背景圖片,而是一個 xml 文件,通過這個文件可以實現(xiàn)菜單選項卡切換時 的背景切換的效果,使得這個菜單欄更加的美觀,代碼是使用了安卓的 selector 來實現(xiàn), 在這里是通過

43、不停的條件來判斷使用哪一個 item 的,里面包括了幾個屬性值,如是否獲得 焦點、是否響應(yīng)事件、是否點擊三個條件。實施的代碼如下:制定完主頁面布局后,在 srclcnage.activity 下的 MainPage 文件中 OnCreate ( OnCreate 方法是用來初始化 Activity 實例對象的)中調(diào)用布局,到現(xiàn)在為止頂部菜單欄 的布局已經(jīng)基本完成,但現(xiàn)在里面所對應(yīng)的內(nèi)容還是空的。所以就需要在這里給 tabHost 中添加 tab 內(nèi)容,以第一格的 tab 為例,先是通過Intent 的方式新建個 mDate,用來實現(xiàn)頁 面的跳轉(zhuǎn)的方法,然后動態(tài)用 tabHost 來通過 add

44、Tab 的方法添加對應(yīng) TabSpec 的值和各個 屬性。最后在添加RadioGroup的選擇操作函數(shù),這里是通過switch來完成對應(yīng)按鈕的功能的實 現(xiàn),在每個case項中通過tabHost.setCurrentTabByTag來給與特定的值實現(xiàn)頁面上的跳轉(zhuǎn)。 最終的效果如圖 4-1:圖4.1.2 系統(tǒng)的日歷界面 系統(tǒng)主界面默認選擇日歷界面在頭部菜單欄下方。(1) 首先是建立一個布局文件,上面一部分是顯示年月日、生肖和農(nóng)歷的干支紀年。 使用的是一個 TextView 類,對應(yīng)的在日歷的 CalendarActivi叩文件中加入函數(shù)來添加頭部 的年份等信息。首先需要寫了一個 CalendarV

45、iew 類,這是為日歷顯示所寫的一個類,在其中使用重載 的方法定義了幾個不同參數(shù)的 CalendarView,用于不同的情況。在 CalendarActivity 中實例化 CalendarView 并且使用 CalendarView 中的一個方法 Calend缸View(this,getResourcesO,jumpMonth扣mpYear,year_c,month_c,day_c);然后書寫方 法來添加頭部的年份閏哪月等信息。首先是對這個頁面的頭部進行布局,通過動態(tài)化的方法來完成。 然后建立一個可以進行改變值的 StringBuffer 類型的參數(shù) textDate。對這個參數(shù)進行 app

46、end 操作,添加例如年月日的知道參數(shù)里。其中有一個閏年判斷的條件函數(shù),是通 過 calV.getLeapMonthO的值驚醒判斷的。完成后對界面使用 setText 方法來賦值到界面上。最后是對界面的一些美化,同樣使用動態(tài)布局模式進行。(2) 下面是日歷界面中主體日期部分顯示的完成在 CalendarActivity 文件初始化實例對象時加入動態(tài)添加布局文件的方法。我將此方法命名為 addGridView。在這個方法中同樣是先進行動態(tài)化布局,由于這里 用的是白idView,這個 GridView 應(yīng)用于將一系列的空間組織成二維網(wǎng)格的形式顯示出來, 所以適用于我在這里進行的日期界面的建立。同樣

47、的首先是動態(tài)化布局的建立,這可以實例化 idView 為 gridView 參數(shù)進行的。 在這里需要添加 GridView 控件的列為 7,列寬為 46。并且壓力日上判斷屏幕大小的條件,這 需要加入取得屏幕大小的對應(yīng)函數(shù),這里如果是 800*480 屏幕的話,就將列寬設(shè)置為 69。 然后進行設(shè)置水平和豎直的問距、取值邊框、設(shè)置居中等操作。在這個方法里面還需加入個 OnTouch 方法,用來將 gridView 中的觸模事件回傳給gestureDetector,進行下面的觸摸操作,即:/將gridview中的觸摸事件回傳給gestureDetectorOverridepublic boolean

48、 onTouch(View v,MotionEvent event) return Ca lendarActivity .this.gestureDetector.onTouchEvent(event) ;創(chuàng)建完日歷的布局后,是在里面添加上具體的日期。就當前顯示的頁面來說,是建立 幾個對應(yīng)的參數(shù),用來顯示或傳接數(shù)據(jù)。例如在函數(shù)開始時就String dayNumber = new String49; 這是作為對GridView控件內(nèi)進行標記序列的,用于下面條件語句的判斷等,還 有就是界面內(nèi)的一些控件名的實例化。 然后是動態(tài)化的對頁面進行屬性值的設(shè)置。其中在對日期中的第一行,即周一等值的這行,設(shè)置

49、字的顏色及背景圖。得出這行的 位置就需要通過對參數(shù)position (對應(yīng)編號)進行判斷是否在7以內(nèi)。下一步是當前月信息的顯示,這也需要條件函數(shù)來判斷是否為當前月,也是來判斷參 數(shù)position是否在范圍內(nèi)。在這個月中還需對當天來一個特殊化,即設(shè)置當天日期的背景為 圖片current_day_bgc,字色為白。在這些操作外,還需要得到一些數(shù)值來用于日期數(shù)據(jù)的插入,在這里建立了個 getCalendar方法,如判斷是否為閏年的函數(shù)返回值isLeapyear,某月的總天數(shù),某月的第一 天是星期兒,上個月總天數(shù)。在這方法中再執(zhí)行方法getweek,用來得出以后需要標記的日 期,這個在后面來介紹。通

50、過上述的步驟基本完成了日歷界面中的初步建設(shè)。(3) 由于日歷菜單需要能通過手勢觸摸來進行翻頁,所以要在總體布局下建立一個ViewFlipper 類,這個類是用來實現(xiàn)屏幕的切換效果的。先是在布局中建立這個類,然后實 例化手勢 gestureDetector 并取得布局中 ViewFlipper 用于下面的調(diào)用。 然后是書寫書寫手勢的各個方法,最主要的是onFling的方法,在這里實現(xiàn)了頁面的向左及 向右滑動的操作,這個操作是由條件語句來實現(xiàn)的,由滑動兩點的X坐標的值進行差值計 算,如果是起點減去重點大于120時著向左滑動,反之則向右滑動。在滑動操作開始,并 且己切換一面后就需要載入新的一張日歷頁

51、面,這里又會用到參數(shù)calV,當向左滑動時則 將參數(shù)calV所代表的函數(shù)CalendarView里的jumpMonth加1,代表下一個月: 當向右滑動時 則將參數(shù)calV所代表的函數(shù)CalendarView里的jumpMonth減1,代表上一個月。為了完整性 剩余的手勢函數(shù)只是寫了方法未使用。4.l.2 系統(tǒng)的日歷特色顯示 在日歷的顯示中除了一些基本的日期顯示,在日期頁面頭部有每年相應(yīng)的生肖和閏年顯示,在日期上有每日的陰歷以及節(jié)假日的顯示。 這里有兩個方法,分別是 LunarCalendar 和 SpecialCalendar。在 LunarCalendar 里面包括干支紀年,陰歷,生肖,節(jié)假

52、日等信息。 例如生肖則是建立一個字節(jié)數(shù)組來記錄十二生肖,并且用函數(shù)來傳回參數(shù)對應(yīng)的生肖。final public String anima lsYear( int year) final String) Animals = new String 鼠,牛,虎,兔,龍,蛇 ,馬,羊,猴,雞,狗,豬);return Animals(year - 4) 屯 12) ;同樣的其他信息,如節(jié)假日的名稱,也是通過字節(jié)數(shù)組來儲存的。在 SpecialCalendar 是閏年的判斷函數(shù),每月天數(shù),以及對每月的第一天星期的判斷。 閏年通過傳回年值通過函數(shù)進行判斷,并傳回布爾值。每月的天數(shù)用 switch 進行判斷

53、賦值給月份天數(shù)的參數(shù)。 對每月的第一天為星期幾的判斷并指定。/指定某年中的某月的第一天是星期幾public int getWeekdayOfMont h ( int year ,int mon th) Calendar cal = Cal endar . getInstance() ;cal . set ( year ,month-1,1) ;dayOfWeek = cal. get(Calendar .DAY_ O已WEEK)-1;return dayOfWeek ;最終的效果如圖4-2:E茵茵回震理白雪1m胃理囂罩回喃自罩扭帽囚2014軍3月閏9月馬軍(串午軍)周曰周一 周二周 周四周五周

54、六2324 2526271二月23456初二初三初四初五初六78布1乞 因Il.主E寶安守E+-9 101 1 12 1315圄;肖戳在權(quán) 初11.初十 組樹節(jié)十三 十四 益曰飛1617 18202122+六+t;+八世十 甘一1才二23242526 I272829廿三甘囚1才五甘t甘J 飛1才11.3031卅-卡三月今天 曰m 民色圖 4-2 日歷界面的最終實現(xiàn)圖4.2 系統(tǒng)任務(wù)界面的設(shè)計任務(wù)界面包括任務(wù)主界面(所有日程的顯示)和對應(yīng)日期任務(wù)的顯示,任務(wù)的添加等。 在任務(wù)界面涉及到日程的數(shù)據(jù)存儲,所以先介紹下關(guān)于日程的數(shù)據(jù)存儲以及有日程的日期存儲(為日歷界面的標記服務(wù)。4.2.1 任務(wù)界面的

55、數(shù)據(jù)庫準備 (1)數(shù)據(jù)庫里表的建立分別建立了 schedule 表日程的表)和 scheduletagdate (標記日期所需的表)Android 提供了標準的數(shù)據(jù)庫創(chuàng)建方式。建立 DBOpenHelper 類繼承到 SQLiteOpenHelper , 實現(xiàn) onCreate 和 onUpgrade 兩個方法。OnCreate 方法是用于初次使用軟件時生成數(shù)據(jù)庫,onUpgrade 方法是用于升級軟件時更新數(shù)據(jù)庫表結(jié)構(gòu)。首先是 schedule 表的建立,在這個表中包括日程 D、日程類型的 D、日程重復類型 的 B、日程正文內(nèi)容、日程日程時間這兒個參數(shù)。建立時對應(yīng)需要寫上參數(shù)名、參數(shù)類型、

56、主鍵等。db .execSQL ( CREATE TABLE IF NOT EXISTS schedule (schedu leID in t eger primary key autoincrement ,scheduleTypeID integer ,remindID integer ,scheduleContenttext ,scheduleDate text) ) ;下面是scheduletagdate表的建立,在這個表中包括標記的D、年信息、月信息、日信息、 日程E這幾個參數(shù)。db .execSQL( CREATE TABLE IF NOT EXISTS scheduletagdat

57、e(tagID integer primary key autoincremen t ,year i口teger ,month integer ,day integer ,schedu leIDinteger) ) ;建立完表后是繼續(xù)寫入 onUpgrade 方法,這個方法會在數(shù)據(jù)庫升級時被觸發(fā),以便于 軟件升級時更新表結(jié)構(gòu)。public void onUpgrade(SQLit eDa tabase db ,int oldVersion ,int newVersion)db .execSQL( DROP TABLE IF EXISTS schedule ) ;db .execSQL( DRO

58、P TABLE IF EXISTS scheduletagdate ) ;onCreate(db);(2) 再分別建立ScheduleVO 和ScheduleDateTag ,里面分別寫了表里面各個數(shù)據(jù)的get ( 表 示獲取某個變量值)和set (表示設(shè)置某個變量值)方法,以便于調(diào)用。(3) 建立ScheduleDAO文件,這個文件是用來寫數(shù)據(jù)庫的查找、刪除等方法。首先是需要實例化DBOpenHelper用于數(shù)據(jù)庫數(shù)據(jù)的get與set 。private DBOpenHe lper dbOpenHelper = null;public Schedu leDAO(Context con t ex

59、 t ) dbOpenHelper = new DBOpenHelper(con tex t ,schedules . db );下面就是對表中數(shù)據(jù)的操作了,包括了保存日程信息、查詢某一條日程信息、查詢所 有的信息、刪除日程、將日程標記的日期保存到數(shù)據(jù)庫中。(1) 保存日程信息,先是從日程添加頁面里獲取日程類型的D、日程重復類型的D、 日程正文內(nèi)容、日程日程時間這幾個參數(shù),然后是使用ContentValues類這個類是一個鍵值對,是用來存儲名值對,它的名一般是String類型,而值都是基本類型來new一個參數(shù),用這個參數(shù)的put方法將這些個參數(shù)放入到數(shù)據(jù)庫中。values .put( sche

60、duleType1D,scheduleVO .getSchedu leType1D() ;/放入日程類型工 Dvalues .put( r emind1D ,scheduleVO .getRemind1D (); /放入重復類型1Dvalues .put( scheduleCon t en t ,scheduleVO . getSchedu leContent() ;/放入日程正文內(nèi)容values .put ( schedu leDate ,scheduleVO .getScheduleDa te () ) ;/放入日程日期信息最后調(diào)用添加方法inse此。db . insert ( sched

溫馨提示

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

評論

0/150

提交評論