基于android的手機通訊_錄系統(tǒng)設計課程設計_第1頁
已閱讀1頁,還剩56頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  課 程 設 計</b></p><p>  畢業(yè)論文(設計)原創(chuàng)性聲明</p><p>  本人所呈交的畢業(yè)論文(設計)是我在導師的指導下進行的研究工作及取得的研究成果。據我所知,除文中已經注明引用的內容外,本論文(設計)不包含其他個人已經發(fā)表或撰寫過的研究成果。對本論文(設計)的研究做出重要貢獻的個人和集體,均已在文中作了明確說明并表示

2、謝意。 </p><p>  作者簽名: 日期: </p><p>  畢業(yè)論文(設計)授權使用說明</p><p>  本論文(設計)作者完全了解**學院有關保留、使用畢業(yè)論文(設計)的規(guī)定,學校有權保留論文(設計)并向相關部門送交論文(設計)的電子版和紙質版。有權將論文(設計)用于非贏利目的的少量復制并允

3、許論文(設計)進入學校圖書館被查閱。學校可以公布論文(設計)的全部或部分內容。保密的論文(設計)在解密后適用本規(guī)定。 </p><p>  作者簽名: 指導教師簽名: </p><p>  日期: 日期: </p><p><b>

4、  注 意 事 項</b></p><p>  1.設計(論文)的內容包括:</p><p>  1)封面(按教務處制定的標準封面格式制作)</p><p><b>  2)原創(chuàng)性聲明</b></p><p>  3)中文摘要(300字左右)、關鍵詞</p><p>  4)外文摘要、

5、關鍵詞 </p><p>  5)目次頁(附件不統(tǒng)一編入)</p><p>  6)論文主體部分:引言(或緒論)、正文、結論</p><p><b>  7)參考文獻</b></p><p><b>  8)致謝</b></p><p>  9)附錄(對論文支持必要時)<

6、;/p><p>  2.論文字數要求:理工類設計(論文)正文字數不少于1萬字(不包括圖紙、程序清單等),文科類論文正文字數不少于1.2萬字。</p><p>  3.附件包括:任務書、開題報告、外文譯文、譯文原文(復印件)。</p><p>  4.文字、圖表要求:</p><p>  1)文字通順,語言流暢,書寫字跡工整,打印字體及大小符合要求

7、,無錯別字,不準請他人代寫</p><p>  2)工程設計類題目的圖紙,要求部分用尺規(guī)繪制,部分用計算機繪制,所有圖紙應符合國家技術標準規(guī)范。圖表整潔,布局合理,文字注釋必須使用工程字書寫,不準用徒手畫</p><p>  3)畢業(yè)論文須用A4單面打印,論文50頁以上的雙面打印</p><p>  4)圖表應繪制于無格子的頁面上</p><p&

8、gt;  5)軟件工程類課題應有程序清單,并提供電子文檔</p><p><b>  5.裝訂順序</b></p><p><b>  1)設計(論文)</b></p><p>  2)附件:按照任務書、開題報告、外文譯文、譯文原文(復印件)次序裝訂</p><p><b>  3)其它&

9、lt;/b></p><p><b>  目 錄</b></p><p><b>  1.系統(tǒng)描述1</b></p><p>  1.1 問題描述1</p><p>  1.2 功能描述1</p><p>  1.3 數據需求2</p>&l

10、t;p>  1.4 設計意義2</p><p><b>  2.背景介紹2</b></p><p>  2.1 Android系統(tǒng)概述2</p><p>  2.2 Android開發(fā)組件4</p><p>  2.2.1 Activity組件4</p><p>  2.2.2 S

11、ervice 組件7</p><p>  2.2.3 BroadcastReceiver 組件8</p><p>  2.2.4 Content Provider 組件8</p><p>  2.3 Android數據庫9</p><p>  2.3.1 SQLite數據庫9</p><p>  2.3.2

12、SQLite數據庫特點10</p><p>  3.可行性研究11</p><p>  3.1 技術可行性11</p><p>  3.2 經濟可行性11</p><p>  3.3 操作可行性11</p><p><b>  4.需求分析12</b></p><p

13、>  4.1 前期調研12</p><p>  4.2 數據流圖12</p><p>  4.3 數據字典13</p><p><b>  5.系統(tǒng)設計14</b></p><p>  5.1 總體設計14</p><p>  5.2 數據庫表結構14</p>&l

14、t;p>  5.2.1 實體14</p><p>  5.2.2 系統(tǒng)E-R圖15</p><p>  5.2.3 數據庫表設計15</p><p>  5.3 輸入/輸出設計16</p><p>  5.4 處理過程設計17</p><p>  5.4.1 業(yè)務流程圖17</p>&l

15、t;p>  5.4.2 系統(tǒng)Activity設計18</p><p>  5.4.3 功能處理設計19</p><p>  5.4.4 系統(tǒng)界面設計23</p><p><b>  6.詳細設計28</b></p><p>  6.1 開發(fā)環(huán)境28</p><p>  6.2 程序

16、設計29</p><p>  6.2.1 數據類設計29</p><p>  6.2.2 Main(Activity)設計32</p><p>  6.2.3 AddNew(Activity)設計33</p><p>  6.2.4 UserDetail(Activity)設計34</p><p>  6.2

17、.5 MainPrivacy(Activity)設計35</p><p><b>  7.系統(tǒng)測試36</b></p><p>  7.1 程序調試36</p><p>  7.2 系統(tǒng)的測試36</p><p>  7.2.1 測試的意義及目的36</p><p>  7.2.2 測試

18、步驟36</p><p>  7.2.3 測試的主要內容37</p><p>  7.3 測試數據38</p><p>  7.3.1 添加模塊測試38</p><p>  7.3.2 查看編輯模塊測試39</p><p>  7.3.3 查詢模塊測試41</p><p>  7.3

19、.4 刪除模塊測試43</p><p>  7.3.5 備份與還原模塊測試46</p><p><b>  8設計總結48</b></p><p>  8.1 設計特點48</p><p>  8.2 經驗與收獲49</p><p>  本科生課程設計成績評定表51</p>

20、<p>  計算機能力拓展訓練任務書</p><p>  學生姓名: 專業(yè)班級: 計算機班 </p><p>  指導教師: 工作單位: 計算機科學與技術學院 </p><p>  題 目: </p><p>

21、<b>  初始條件:</b></p><p>  理論:.NET、Java、Linux、Android或Windows Phone環(huán)境, Oracle、SQLite、SQL Server、SQL Server CE或MySQL數據庫, C#、Eclipse、C++或其它合適、有效的開發(fā)工具,等等。</p><p>  實踐:計算機科學系實驗中心提供計算機及軟件開發(fā)環(huán)

22、境。</p><p>  要求完成的主要任務: </p><p> ?。?)系統(tǒng)需求分析:使用軟件工程所學的知識對擬開發(fā)的系統(tǒng)進行數據需求和功能需求分析,確定開發(fā)環(huán)境和工具軟件。 </p><p> ?。?)系統(tǒng)設計:根據系統(tǒng)需求分析進行概要設計和詳細設計,在確定好的開發(fā)環(huán)境中利用確定的工具軟件進行系統(tǒng)實現(xiàn)。</p><p> ?。?)編制好

23、程序后,設計若干測試用例,上機測試所設計的原型系統(tǒng)。</p><p> ?。?)設計報告按格式要求書寫。設計報告正文的內容應包括:</p><p>  1)系統(tǒng)描述 包括問題說明、數據需求和功能需求。</p><p>  2)系統(tǒng)設計 包括總體設計、數據庫表結構、輸入/輸出設計、用戶界面設計、處理過程設計。</p><p>  3

24、)系統(tǒng)測試 包括測試用例的描述、測試方法和測試結果。</p><p>  4)設計的特點、不足、收獲和體會。</p><p><b>  時間安排:</b></p><p><b>  1、暑期完成。</b></p><p>  2、下學期開學第一周到計算機學院實驗中心(三樓)檢查程序、交課程

25、設計報告、源程序(CD盤)。</p><p>  指導教師簽名: 年 月 日</p><p>  系主任(或責任教師)簽名: 年 月 日</p><p>  基于Andriod環(huán)境的通訊錄系統(tǒng)設計</p><p><b>  1.系統(tǒng)描述<

26、/b></p><p><b>  1.1 問題描述</b></p><p>  學習完計算機相關專業(yè)課后,對計算機軟硬件相關知識有了一定的了解;基于此,設計與實現(xiàn)一個在Android系統(tǒng)上運行的手機通訊管理軟件,實現(xiàn)手機通訊錄的基本功能,包括:添加聯(lián)系人、查看聯(lián)系人、修改聯(lián)系人、刪除聯(lián)系人、撥打電話、發(fā)送短信、查詢聯(lián)系人,以及聯(lián)系人的導入導出功能即聯(lián)系人的備份

27、。</p><p>  主要開發(fā)基于Android 的手機的通訊管理軟件。以Java語言為基礎,結合Android移動開發(fā)平臺,并利用Android提供的SDK,實現(xiàn)在Android平臺上運行的手機通訊錄,方便廣大手機用戶更加便捷地對聯(lián)系人的信息進行管理。該手機通訊錄面向所有的Android手機用戶,為他們提供更實際便捷的手機服務,具有撥號、通訊記錄等基本功能。該通訊錄的數據導出功能是該軟件的一個特色,可以實現(xiàn)聯(lián)

28、系人數據導出到文本,實現(xiàn)數據備份。大家生活當中經常遇到手機丟失,出現(xiàn)故障,和其他一些事故。最擔心的就是丟失手機里的電話號碼。</p><p><b>  1.2 功能描述</b></p><p>  此次設計的軟件主要功能有:</p><p>  添加聯(lián)系人:可以添加聯(lián)系人的基本信息,如:姓名、電話、單位、住址等信息;</p>&

29、lt;p>  查看信息:查看某個聯(lián)系人的具體信息;</p><p>  查詢聯(lián)系人:根據輸入的條件查詢聯(lián)系人;</p><p><b>  修改聯(lián)系人的信息;</b></p><p>  數據備份與還原:可以將整個通訊錄備份到SD卡上,以防止信息丟失、抑可將備份的數據還原到通訊錄中;</p><p><b&g

30、t;  1.3 數據需求</b></p><p>  本程序的數據為通訊錄中的聯(lián)系人信息,這些信息有用戶輸入,并保存在Android的SQLite數據庫中,主要有:聯(lián)系人的姓名、手機、家庭電話、公司電話、單位、家庭地址、電子郵件、備注等信息。</p><p><b>  1.4 設計意義</b></p><p>  隨著3G網絡的使

31、用,移動終端不再僅是通訊網絡的終端,還將成為互聯(lián)網的終端。因此,移動終端的應用軟件和需要的服務將會有很大的發(fā)展空間。在Google和Android手機聯(lián)盟的共同推動下,Android在眾多手機操作系統(tǒng)中脫穎而出,受到廣大消費者的歡迎。</p><p>  手機通訊錄作為手機的基本功能之一,每天我們都在頻繁地使用著。根據手機功能使用調查顯示,有八成以上的消費者使用手機通訊錄功能。隨著手機通訊錄功能的不斷加強與完善,

32、手機通訊錄對于人們的意義,已不僅僅像記事簿一樣顯示通訊地址,而是向著個性化、人性化的方向發(fā)展[4]。通訊錄從無到有,從英文到中文,經過了十幾年的發(fā)展歷程,今后的發(fā)展趨勢就是從通訊錄發(fā)展為名片夾,也就是在一個人名下,可以存儲座機、手機、單位、地址、電子郵件等內容。這種名片夾在電話薄的基礎上,大大豐富了內容,同時結構也發(fā)生了革命性變化,而且隨著手機的發(fā)展,相信更優(yōu)秀的通訊錄會越來越受到社會各層人士的喜愛。</p><p&

33、gt;<b>  2.背景介紹</b></p><p>  2.1 Android系統(tǒng)概述</p><p>  Android一詞的本義指"機器人",同時也是Google在2007年11月5日宣布的基于Linux內核的開源手機系統(tǒng)的名稱,中文注冊商標"安致", 該平臺由操作系統(tǒng)、中間件、用戶界面和應用軟件組成,是一個為移動終端

34、打造的真正開放和完整的智能手機系統(tǒng)。其早期為Google開發(fā),后由開放手機聯(lián)盟( Open Handset Alliance)開發(fā)。它采用了軟件堆層(software stack,又名以軟件疊層)的架構,主要分為三部分,底層以Linux內核為基礎,由C語言開發(fā),只提供基本功能;中間層包括數據庫Library和虛擬機Virtual Machine,由C++開發(fā);最上層是由各公司自行開發(fā),以Java編寫的各種應用軟件,如通話程序,短信程序等

35、。</p><p>  Android平臺架構:</p><p>  Android平臺整體自底向上由以下四個層次組成:Linux內核層、Android運行庫和其他庫層、應用框架層、應用程序層。</p><p><b>  Linux內核層</b></p><p>  Android 基于Linux version 2.

36、6.23內核開發(fā)的,主要是添加了一個名為Goldfish的虛擬CPU以及Android運行。</p><p>  所需的特定驅動代碼,該層用來提供系統(tǒng)的底層服務,包括安全機制、存管理、進程管理、網絡堆棧及一系列驅動模塊。作為一虛擬的中間層,該層位于硬件和軟件層之間。但這個內核操作系統(tǒng)并非類GNU/Linux的,所以其系統(tǒng)庫、系統(tǒng)初始化和編程接口都和標準Linux系統(tǒng)有所不同的。它沒有采用虛擬內存文件系統(tǒng)。而是采用

37、YAFFS2文件系統(tǒng)YAFFSYetAnotherFlash File System文件系統(tǒng)是一個開源的,專門為 NAND Flash 設計的文件系統(tǒng),具有很好的可移植性,也是一種日志型文件系統(tǒng),能夠在 Linux,uCLinux和 Windows CE 上運行。YAFFS 目前有 YAFFS 和 YAFFS2 兩個版本,一般來說,YAFFS 對小頁面528 字節(jié)/頁有很好的支持,而更大的頁面2K 64字節(jié)/頁就需要支持超大容量的 NA

38、ND Flash。所以采用支持大頁面的 YAFFS2文件系統(tǒng)。</p><p>  Android運行庫和其他庫層</p><p>  Android運行庫包含一組核心庫和Dalvik虛擬機。同時Android提供了豐富的庫類支持且大部分為開源代碼,如采用的數據庫為SQLite。Android選擇它作為移動終端的嵌入式數據庫有以下優(yōu)點,它無需安裝和管理配置,它是一個存儲在單一磁盤文件中的完

39、整數據庫,體積小只有250KB但支持數據庫大小至2TB,提供了對事務功能和并發(fā)處理的支持,而且比目前流行的大多數數據庫運行速度快。</p><p><b>  應用框架層</b></p><p>  在應用框架Android開發(fā)人員可以跟那些核心應用一樣擁有訪問框架APIS的全部權限。應用的系統(tǒng)機構化設計簡化了各組件之間的重用,任何應用都可以分發(fā)自己的足見,任何應用也

40、可以使用這些分發(fā)的足見。</p><p><b>  應用程序層</b></p><p>  Android本身會附帶一些核心的應用程序,包括e-mail客戶端、短信程序、日歷、地圖、瀏覽器、通訊錄等等,目前所有的應用程序都是由java語言開發(fā)的。</p><p>  圖2-1 Android體系結構</p><p> 

41、 2.2 Android開發(fā)組件</p><p>  Android開發(fā)四大組件分別是:活動(Activity): 用于表現(xiàn)功能;服務(Service): 后臺運行服務,不提供界面呈現(xiàn);廣播接收器(BroadcastReceiver):用于接收廣播;內容提供商(Content Provider): 支持在多個應用中存儲和讀取數據,相當于數據庫。</p><p>  2.2.1 Activi

42、ty組件</p><p>  Android 中,Activity 是所有程序的根本,所有程序的流程都運行在Activity 之中,Activity可以算是開發(fā)者遇到的最頻繁,也是Android 當中最基本的模塊之一。</p><p>  一般一個Android 應用是由多個Activity 組成的,這多個Activity 之間可以進行相互跳轉,每個Activity都是一個單獨的類,它擴展

43、實現(xiàn)了Activity基礎類。這個類顯示為一個有Views組成的用戶界面,并響應事件。大多數程序有多個Activity。某些情況下,一個Activity可能會給前一個Activity返回值。</p><p>  打開一個新界面后,前一個界面被暫停,并放入歷史棧中。使用者可以回溯前面已經打開的存放在歷史棧中的界面,也可以從歷史棧中刪除沒有價值的界面。</p><p>  Activity的生

44、命周期</p><p>  如圖2-1所示,Activity的5中狀態(tài)之間的如何切換與運作</p><p>  圖2-2 Activity的生命周期</p><p>  一個Activity的啟動順序:onCreate()-->onStart()-->onResume()</p><p>  當另一個Activity啟動時:<

45、;/p><p>  第一個Activity onPause()--></p><p>  第二個ActivityonCreate()-->onStart()-->onResume()--></p><p>  第一個ActivityonStop()當返回到第一個Activity時:</p><p>  第二個Activit

46、y onPause()--> </p><p>  第一個ActivityonRestart()-->onStart()-->onResume()--></p><p>  第二個ActivityonStop()-->onDestroy()</p><p>  一個Activity的銷毀順序:</p><p> 

47、 情況一:onPause()--><Process Killed></p><p>  情況二:onPause()-->onStop()--><Process Killed></p><p>  情況三:onPause()-->onStop()-->onDestroy()每一個活動Activity都處于某一個狀態(tài),對于開發(fā)者來說,是無法

48、控制其應用程序處于某一個狀態(tài)的,這些均由系統(tǒng)來完成。</p><p>  但是當一個活動的狀態(tài)發(fā)生改變的時候,開發(fā)者可以通過調用 onXX() 的方法獲取到相關的通知信息。在實現(xiàn) Activity 類的時候,通過覆蓋override這些方法即可在你需要處理的時候來調用。</p><p>  onCreate : 當活動第一次啟動的時候,觸發(fā)該方法,可以在此時完成活動的初始化工作。 onCr

49、eate 方法有一個參數,該參數可以為空null,也可以是之前調用 onSaveInstanceState ()方法保存的狀態(tài)信息。</p><p>  onStart: 該方法的觸發(fā)表示所屬活動將被展現(xiàn)給用戶。</p><p>  onResume:當一個活動和用戶發(fā)生交互的時候,觸發(fā)該方法。 </p><p>  onPause: 當一個正在前臺運行的活動

50、因為其他的活動需要前臺運行而轉入后臺運行的時候,觸發(fā)該方法。這時候需要將活動的狀態(tài)持久化,比如正在編輯的數據庫記錄等。</p><p>  onStop: 當一個活動不再需要展示給用戶的時候,觸發(fā)該方法。如果內存緊張,系統(tǒng)會直接結束這個活動,而不會觸發(fā) onStop 方法。 所以保存狀態(tài)信息是應該在onPause時做,而不是onStop時做?;顒尤绻麤]有在前臺運行,都將被停止或者Linux管理進程為了給新的活

51、動預留足夠的存儲空間而隨時結束這些活動。在一些情況下,onPause方法或許是活動觸發(fā)的最后的方法,因此開發(fā)者需要在這個時候保存需要保存的信息。</p><p>  onRestart: 當處于停止狀態(tài)的活動需要再次展現(xiàn)給用戶的時候,觸發(fā)該方法。</p><p>  onDestroy:當活動銷毀的時候,觸發(fā)該方法。和 onStop 方法一樣,如果內存緊張,系統(tǒng)會直接結束這個活動而不會觸發(fā)

52、該方法。</p><p>  onSaveInstanceState :系統(tǒng)調用該方法,允許活動保存之前的狀態(tài),比如說在一串字符串中的光標所處的位置等。</p><p><b>  Activity棧</b></p><p>  每個Activity的狀態(tài)是由它在Activity棧(是一個后進先出LIFO,包含所有正在運行Activity的隊列

53、)中的位置決定的。</p><p>  當一個新的Activity啟動時,當前的活動的Activity將會移到Activity棧的頂部。 </p><p>  如果用戶使用后退按鈕返回的話,或者前臺的Activity結束,活動的Activity就會被移出棧消亡,而在棧上的上一個活動的Activity將會移上來并變?yōu)榛顒訝顟B(tài)。如圖2-3所示,Activity在棧中的活動順序:</p&g

54、t;<p>  圖2-3 Activity棧</p><p>  每個Activity都有一個默認窗體;另外Activity也會使用額外的窗體,例如:彈出式對話框,窗體中的元素是由view類的對象生成的,它們都繼承自基類View。</p><p>  2.2.2 Service 組件</p><p>  Service 是android 系統(tǒng)中的一種組

55、件,它跟Activity 的級別差不多,但是它不能自己運行,只能后臺運行,并且可以和其他組件進行交互。Service 是沒有界面的長生命周期的代碼。Service 是一種程序,它可以運行很長時間,但是它卻沒有用戶界面。</p><p>  開啟service有兩種方式:</p><p>  (1) Context.startService():Service會經歷onCreate ->

56、; onStart(如果Service還沒有運行,則android先調用onCreate()然后調用onStart();如果Service已經運行,則只調用onStart(),所以一個Service的onStart方法可能會重復調用多次 );stopService的時候直接onDestroy,如果是調用者自己直接退出而沒有調用stopService的話,Service會一直在后臺運行。該Service的調用者再啟動起來后可以通過stop

57、Service關閉Service。 注意,多次調用Context.startservice()不會嵌套(即使會有相應的onStart()方法被調用),所以無論同一個服務被啟動了多少次,一旦調用Context.stopService()或者stopSelf(),他都會被停止。補充說明:傳遞給startService()的Intent對象會傳遞給onStart()方法。調用順序為:onCreate --> onStart(可多次調用)

58、 --> onDestroy。</p><p>  (2) Context.bindService():Service會經歷onCreate() -> onBind(),onBind將返回給客戶端一個IBind接口實例,IBind允許客戶端回調服務的方法,比如得到Service運行的狀態(tài)或其他操作。這個時候把調用者(Context,例如Activity)會和Service綁定在一起,Context退出

59、了,Srevice就會調用onUnbind -> onDestroyed相應退出,所謂綁定在一起就共存亡了 。</p><p>  2.2.3 BroadcastReceiver 組件</p><p>  在Android 中,Broadcast 是一種廣泛運用的在應用程序之間傳輸信息的機制。而BroadcastReceiver 是對發(fā)送出來的Broadcast進行過濾接受并響應的一

60、類組件??梢允褂肂roadcastReceiver 來讓應用對一個外部的事件做出響應。例如,當電話呼入這個外部事件到來的時候,可以利用BroadcastReceiver 進行處理。BroadcastReceiver不能生成UI,也就是說對于用戶來說不是透明的,用戶是看不到的。BroadcastReceiver通過NotificationManager 來通知用戶這些事情發(fā)生了。BroadcastReceiver 既可以在AndroidM

61、anifest.xml 中注冊,也可以在運行時的代碼中使用Context.registerReceiver()進行注冊。只要是注冊了,當事件來臨的時候,即使程序沒有啟動,系統(tǒng)也在需要的時候啟動程序。各種應用還可以通過使用Context.sendBroadcast () 將它們自己的intent broadcasts廣播給其他應用程序。</p><p>  2.2.4 Content Provider 組件<

62、/p><p>  Content Provider 是Android提供的第三方應用數據的訪問方案。</p><p>  在Android中,對數據的保護是很嚴密的,除了放在SD卡中的數據,一個應用所持有的數據庫、文件、等等內容,都是不允許其他直接訪問的。Andorid當然不會真的把每個應用都做成一座孤島,它為所有應用都準備了一扇窗,這就是Content Provider。應用想對外提供的數據

63、,可以通過派生ContentProvider類, 封裝成一枚Content Provider,每個Content Provider都用一個uri作為獨立的標識,形如:content://com.xxxxx。所有東西看著像REST的樣子,但實際上,它比REST 更為靈活。和REST類似,uri也可以有兩種類型,一種是帶id的,另一種是列表的。</p><p>  另外,Content Provider不和REST一

64、樣只有uri可用,還可以接受Projection,Selection,OrderBy等參數,這樣,就可以像數據庫那樣進行投影,選擇和排序。查詢到的結果,以Cursor的形式進行返回,調用者可以移動Cursor來訪問各列的數據。</p><p>  Content Provider屏蔽了內部數據的存儲細節(jié),向外提供了上述統(tǒng)一的接口模型,這樣的抽象層次,大大簡化了上層應用的書寫,也對數據的整合提供了更方便的途徑。Co

65、ntent Provider內部,常用數據庫來實現(xiàn),Android提供了強大的Sqlite支持,但很多時候,你也可以封裝文件或其他混合的數據。</p><p>  2.3 Android數據庫</p><p>  2.3.1 SQLite數據庫</p><p>  SQLite,是一款輕型的數據庫,是遵守ACID的關聯(lián)式數據庫管理系統(tǒng),它的設計目標是嵌入式的,而且目

66、前已經在很多嵌入式產品中使用了它,它占用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統(tǒng),同時能夠跟很多程序語言相結合,比如 Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開源世界著名的數據庫管理系統(tǒng)來講,它的處理速度比他們都快。SQLite第一個Alpha版本誕生于2000年5月. 至今已經有10個年頭,SQ

67、Lite也迎來了一個版本 SQLite 3已經發(fā)布。</p><p>  SQLite數據類型:</p><p>  一般數據采用的固定的靜態(tài)數據類型,而SQLite采用的是動態(tài)數據類型,會根據存入值自動判斷。SQLite具有以下五種常用的數據類型:</p><p>  NULL:這個值為空值</p><p>  VARCHAR(n):長度不

68、固定且其最大長度為n的字串,n不能超過 4000</p><p>  CHAR(n):長度固定為n的字串,n不能超過 254。</p><p>  INTEGER:值被標識為整數,依據值的大小可以依次被存儲為1,2,3,4,5,6,7,8.</p><p>  REAL:所有值都是浮動的數值,被存儲為8字節(jié)的IEEE浮動標記序號.</p><p&

69、gt;  TEXT:值為文本字符串,使用數據庫編碼存儲(TUTF-8, UTF-16BE or UTF-16-LE).</p><p>  BLOB:值是BLOB數據塊,以輸入的數據格式進行存儲。如何輸入就如何存儲,不改變格</p><p>  DATA:包含了 年份、月份、日期。TIME: 包含了 小時、分鐘、秒。</p><p>  2.3.2 SQLite數據

70、庫特點</p><p><b>  輕量級</b></p><p>  SQLite和C/S模式的數據庫軟件不同,它是進程內的數據庫引擎,因此不存在數據庫的客戶端和服務器。使用SQLite一般只需要帶上它的一個動態(tài)庫,就可以分享它的全部功能。而且動態(tài)庫的尺寸也相當小。</p><p><b>  獨立性。</b></

71、p><p>  SQLite數據庫的核心引擎不依賴第三方軟件,使用它也不需要“安裝”。所以在部署的使用能省去不少麻煩。</p><p><b>  隔離性</b></p><p>  SQLite數據庫中所有的信息(比如表、視圖、觸發(fā)器等)都包含在一個文件內,方便管理和維護。</p><p><b>  跨平臺性&

72、lt;/b></p><p>  SQLite數據庫支持大部分操作系統(tǒng),除了我們在電腦上使用的操作系統(tǒng)之外。很多手機操作系統(tǒng)都可以運行,比如Android、Windows Phone、Symbin、Plam、IOS等。</p><p><b>  多語言接口</b></p><p>  SQLite數據庫支持很多編程語言接口,比如C/C+

73、+、Java等,得到很多開發(fā)者的喜愛。</p><p><b>  安全性</b></p><p>  SQLite數據庫通過數據庫級上的獨占性和共享鎖實現(xiàn)獨立事務處理。這就意味著多個進程可以在同一時間從同一數據庫讀取數據,但只有一個可以寫入數據。在某個進程或線程向數據庫執(zhí)行寫入操作之前,必須取得獨占鎖。在發(fā)出獨占鎖后,其他的讀或寫操作將不會在發(fā)生。</p>

74、;<p><b>  3.可行性研究</b></p><p><b>  3.1 技術可行性</b></p><p>  本系統(tǒng)設計到的技術因素主要有如下幾個方面:</p><p><b>  UI頁面的設計</b></p><p>  Android控件的各種函

75、數的應用,實現(xiàn)其功能</p><p>  Activity的之間的跳轉,頁面之間值得傳遞方式,如何利用Intent</p><p>  數據庫的創(chuàng)建和操作,如何把聯(lián)系人的信息存儲到數據庫中,并把它顯示出來</p><p>  配置環(huán)境,裝有Windows 電腦一臺,安裝Eclipse,安裝Android SDK,安裝JDK,并配置了環(huán)境變量,安裝 ADT插件。<

76、;/p><p>  開發(fā)技術:本次設計用的是Java開發(fā)語言和Android相關開發(fā)知識,由于Android是開源項目,基于Java,語法上并不難,網絡上學習資源較多,因此技術上可行,調試相對簡單。</p><p>  硬件支持:當前的計算機硬件配置也完全能滿足開發(fā)的需求,能夠良好的運行哥開發(fā)軟件和Android虛擬機。</p><p>  軟件方面:相關的開發(fā)軟件,可

77、以方便的從網上下載,易于獲得,且可以滿足系統(tǒng)需求。</p><p>  綜上所述:技術上可行!</p><p><b>  3.2 經濟可行性</b></p><p>  由于軟件資源可以從網絡上免費獲得,因此,軟件尚不需要花費,另外,由于Android有自己的運行虛擬機,因此開發(fā)的應用不用在Android實體機上運行,省去了一部分硬件成本,因

78、此經濟上可行。</p><p><b>  3.3 操作可行性</b></p><p>  開發(fā)的應用完全可以運行在Android虛擬機上,當然也可以運行在實體機上,而且整個應用操作上相對簡單,操作上可行。</p><p><b>  4.需求分析</b></p><p><b>  4.

79、1 前期調研</b></p><p>  通過對已有的手機通訊錄的研究,對其基本業(yè)務流程進行分析,確定出基本的處理需求:</p><p>  用戶的行為:增、刪、改、查、備份與還原。</p><p>  增:增加聯(lián)系人的基本信息;</p><p>  刪:刪除已有聯(lián)系人的基本信息;</p><p>  改:

80、修改已有聯(lián)系人的信息;</p><p>  查:查詢聯(lián)系人的基本信息;</p><p>  備份與還原:備份該通訊錄數據庫中的數據到SD卡上,或者從SD卡上還原備份的數據。</p><p><b>  4.2 數據流圖</b></p><p>  根據“功能分解,逐步求精”的原則,此次需求分析的數據流圖主要分為三層:頂層

81、數據流圖:確定系統(tǒng)的輸入與輸出、第一層數據流圖:對系統(tǒng)進行第一層功能分解,確定系統(tǒng)的主要工作、第二層數據流圖:確定系統(tǒng)詳細的工作流圖</p><p><b>  頂層數據流圖:</b></p><p><b>  底層數據流圖:</b></p><p><b>  4.3 數據字典</b></p

82、><p>  數據流圖表達了數據和處理的關系,數據字典則是系統(tǒng)中的各類數據描述的集合,是進行詳細的數據手機和數據分析做得到的主要成果,可以自己設計一套適合閱讀的圖表。</p><p>  本設計的數據字典有:聯(lián)系人的信息,具體如下:</p><p><b>  5.系統(tǒng)設計</b></p><p><b>  5.

83、1 總體設計</b></p><p>  Android手機通訊管理軟件主要功能模塊包括:聯(lián)系人添加、聯(lián)系人查看、聯(lián)系人編輯、聯(lián)系人刪除、聯(lián)系人查找、呼叫、發(fā)送短信、數據備份與還原、個人空間等,如圖5-1所示:</p><p>  圖5-1 總體設計圖</p><p>  5.2 數據庫表結構</p><p><b> 

84、 5.2.1 實體</b></p><p>  根據需求分析的數據流圖,對其進行自底向上的分析。抽象出設計視圖,集成局部視圖,得到全局的概念結構。</p><p><b>  本數據庫的實體為:</b></p><p>  聯(lián)系人信息(頭像 ,姓名,手機號碼,辦公室號碼,家庭電話,職務職稱,單位名稱,地址,郵編,Email,其他聯(lián)系

85、方式,備注)</p><p>  5.2.2 系統(tǒng)E-R圖</p><p>  根據E-R的設計過程,根據初始數據流圖設計初始的E-R圖,而后將各分E-R圖集成,消除沖突、消除冗余,得到最初的E-R圖,對其進行分析和根據規(guī)范化理論進行規(guī)范化,集成視圖,最后形成基本的E-R圖。其過程如圖所示: </p><p><b>  聯(lián)系人實體E-R圖</b&g

86、t;</p><p>  圖5-2 聯(lián)系人信息實體E-R圖</p><p>  5.2.3 數據庫表設計</p><p>  根據上述聯(lián)系人實體E-R圖,設計出數據庫的表,如表5-1所示,</p><p>  表5-1 user表的設計</p><p>  5.3 輸入/輸出設計</p><p>

87、;  在這個系統(tǒng)中,通過對系統(tǒng)的分析,可以識別出參與者:用戶。對于用戶而言,通訊錄上按鈕、菜單、輸入框是用戶向系統(tǒng)輸入的操作請求的輸入設備,GUI與是用于向用戶輸出信息的輸出設備。</p><p>  圖5-3通訊錄的參與者</p><p>  事件是來自人操作的重要的消息,表5-2給出了通訊錄系統(tǒng)中可能發(fā)生的所有事件。</p><p>  表5-2系統(tǒng)響應及其

88、執(zhí)行結果</p><p>  其中的輸入包括:用戶選擇的上述按鈕、菜單,還包括輸入框的內容,包括:聯(lián)系人頭像、聯(lián)系人姓名、手機號、家庭電話、單位電話、單位名、職位、住址、郵編、備注等信息。</p><p>  其中輸出包括:根據用戶的選擇輸出的相應內容,如:聯(lián)系人列表顯示信息、聯(lián)系人詳細信息等。</p><p>  5.4 處理過程設計</p><

89、;p>  5.4.1 業(yè)務流程圖</p><p>  用戶進入手機通訊管理軟件后,會看到聯(lián)系人列表界面。聯(lián)系人列表界面主菜單中包括:添加、搜索、刪除、菜單、退出;其中菜單又包括:顯示所有聯(lián)系人、刪除所有聯(lián)系人、備份信息到SD卡、還原數據到通訊錄、個人空間、退出。點擊添加聯(lián)系人,則進入聯(lián)系人添加界面,添加成功后返回聯(lián)系人列表界面。點擊搜索菜單,則進入聯(lián)系人搜索界面,輸入聯(lián)系人的全名或一個字,即可查找到相關聯(lián)系

90、人,點擊聯(lián)系人會進入聯(lián)系人查看界面,可以對聯(lián)系人進行編輯、刪除、撥打電話、發(fā)送短信,,長按某分聯(lián)系人,可以選中該聯(lián)系人,點擊刪除,會刪除已經標記的聯(lián)系人。點擊菜單,可進入菜單界面:點擊所有聯(lián)系人,可以顯示所有人信息、點擊刪除所有聯(lián)系人,可以刪除所有人信息、點擊備份信息到SD卡,可以將數據庫數據備份到SD卡、點擊還原數據到通訊錄,可以從SD卡上備份的數據還原到數據庫、點擊個人空間,輸入密碼并進入個人操作界面、點擊退出,退出到主界面。該軟件

91、的業(yè)務流程如圖5-4所示:</p><p>  圖5-4 系統(tǒng)業(yè)務流程圖</p><p>  5.4.2 系統(tǒng)Activity設計</p><p>  根據Android的Activity設計原則,設計出整個系統(tǒng)的界面,如圖5-5所示:</p><p>  圖5-5 系統(tǒng)Activity設計圖</p><p>  5.

92、4.3 功能處理設計</p><p><b>  瀏覽聯(lián)系人</b></p><p>  用例名稱:瀏覽聯(lián)系人</p><p>  用例描述:瀏覽聯(lián)系人列表</p><p><b>  角色:手機用戶</b></p><p>  前置條件:通訊錄中已有聯(lián)系人</p>

93、;<p>  后置條件:顯示出所有聯(lián)系人</p><p><b>  基本路徑</b></p><p><b>  打開通訊錄</b></p><p><b>  系統(tǒng)查詢數據庫</b></p><p><b>  顯示出聯(lián)系人列表</b>&

94、lt;/p><p><b>  查看聯(lián)系人</b></p><p>  用例名稱:查看聯(lián)系人</p><p>  用例描述:查看聯(lián)系人信息</p><p><b>  角色:手機用戶</b></p><p>  前置條件:通訊錄中已有聯(lián)系人</p><p>

95、;  后置條件:給出聯(lián)系人信息</p><p><b>  基本路徑</b></p><p><b>  A.查看聯(lián)系人信息</b></p><p><b>  B.給出相關信息</b></p><p><b>  編輯聯(lián)系人</b></p>

96、<p>  用例名稱:編輯聯(lián)系人</p><p>  用例描述:編輯聯(lián)系人信息</p><p><b>  角色:手機用戶</b></p><p>  前置條件:通訊錄中已有聯(lián)系人</p><p>  后置條件:修改聯(lián)系人信息</p><p><b>  基本路徑</b

97、></p><p>  A.輸入要修改的新信息</p><p><b>  B.修改聯(lián)系人信息</b></p><p><b>  刪除聯(lián)系人</b></p><p>  用例名稱:刪除聯(lián)系人</p><p>  用例描述:刪除聯(lián)系人</p><p&

98、gt;<b>  角色:手機用戶</b></p><p>  前置條件:通訊錄中已有聯(lián)系人</p><p>  后置條件:刪除聯(lián)系人</p><p><b>  基本路徑</b></p><p>  A.選中聯(lián)系人,選擇刪除操做</p><p>  B.詢問是否確定刪除操作&

99、lt;/p><p><b>  C.刪除聯(lián)系人</b></p><p>  上述三種業(yè)務操作的流程圖</p><p>  圖5-6 查看/修改/刪除流程圖</p><p><b>  查詢聯(lián)系人</b></p><p>  用例名稱:查詢聯(lián)系人</p><p&

100、gt;  用例描述:查詢聯(lián)系人信息</p><p><b>  角色:手機用戶</b></p><p>  前置條件:通訊錄中已有聯(lián)系人</p><p>  后置條件:給出聯(lián)系人信息</p><p><b>  基本路徑</b></p><p><b>  A.輸入

101、查找的數據</b></p><p>  B.查詢列表根據數據動態(tài)現(xiàn)實出信息</p><p>  點擊Menu菜單,選擇查找聯(lián)系人跳轉SearchContactActivity,在查找聯(lián)系人界面中,TextView被監(jiān)聽,根據TextView輸入的數據,進行查詢后在List中顯示。</p><p>  圖5-7 查詢聯(lián)系人流程圖</p>&l

102、t;p><b>  菜單操作</b></p><p><b>  用例名稱:菜單操作</b></p><p>  用例描述:選擇菜單功能</p><p><b>  角色:手機用戶</b></p><p>  前置條件:單擊菜單按鈕</p><p>

103、;  后置條件:進入菜單界面</p><p><b>  基本路徑</b></p><p><b>  A.單擊菜單按鈕</b></p><p><b>  B.選擇菜單的功能</b></p><p>  圖5-8 菜單操作流程圖</p><p>  5

104、.4.4 系統(tǒng)界面設計</p><p>  本系統(tǒng)一共有11個頁面文件,主要的界面如下:</p><p>  Main.xml文件,如圖5-9所示,顯示已經存儲的聯(lián)系人數據數據:</p><p>  圖5-9 系統(tǒng)主界面</p><p>  AddNew.xml文件,如圖5-10所示,顯示添加聯(lián)系人的選項,完成聯(lián)系人的添加:</p>

105、;<p>  圖5-10 添加聯(lián)系人界面</p><p>  Main-menu_grid.xml 顯示彈出的主菜單的對話</p><p>  圖5-11 主菜單界面</p><p>  Userdetail.xml文件如圖5-12所示,顯示聯(lián)系人的信息具體選項,可以完成數據的編輯和刪除:</p><p>  圖5-12 查看

106、修改界面</p><p>  Imgaeswitch.xml 顯示用戶頭像的切換:</p><p>  圖5-13 選擇頭像界面</p><p>  Numchoose.xml 打電話時彈出的對話框顯示</p><p>  圖5-14 打電話發(fā)短信界面</p><p>  Item_menu.xml 顯示主頁的菜單&

107、lt;/p><p>  圖5-15 子菜單界面</p><p>  Login.xml 為特權用戶登錄</p><p>  圖5-16 個人空間登陸界面</p><p><b>  進入后的界面:</b></p><p>  圖5-17 個人空間界面</p><p><

108、b>  6.詳細設計</b></p><p>  完成上述的操作后,便是進行代碼的編寫和調試,使用Java語言和Android API進行程序設計。</p><p><b>  6.1 開發(fā)環(huán)境</b></p><p>  開發(fā)軟件:Eclipse 、JDK1.7、Android SDK 、ADT </p>&l

109、t;p>  開發(fā)環(huán)境:Windows7</p><p>  虛擬設備:Android AVD </p><p>  開發(fā)版本:Android 2.1</p><p><b>  6.2 程序設計</b></p><p>  6.2.1 數據類設計</p><p><b>  用戶U

110、ser類</b></p><p>  如圖6-1所示,主要用于暫存頁面獲得的信息,然后再存入數據庫中。</p><p>  圖6-1 User類</p><p><b>  DBhelper類</b></p><p>  如圖6-2所示,主要完成數據庫的表的創(chuàng)建和數據的添加刪除以及備份的功能,以下是各個具體的

111、函數和變量。</p><p>  圖6-2 DBhelper類</p><p>  insert(User)函數實現(xiàn):</p><p>  完成數據的插入,并根據插入是否成功,返回一個長整型的值</p><p>  getAllUser(boolean)的實現(xiàn):</p><p>  完成數據的顯示,使用SQLiteDa

112、tabase.query() 方法,利用cursor對象,一一取出字段的值,放入一個hasp表中,最后存入數組列表中,返回給數組列表。</p><p>  modify(User )函數的實現(xiàn):</p><p>  使用user類中的字段,更新數據庫</p><p>  delete(int)函數的實現(xiàn):</p><p>  根據數據的id進

113、行單個數據的刪除</p><p>  deleteAll(int )函數的實現(xiàn):</p><p><b>  刪除所有數據</b></p><p>  getTotalCount() 函數的實現(xiàn):</p><p>  使用cursor對象getint()方法得到數據的個數</p><p>  ge

114、tUsers(String boolean) 函數的實現(xiàn):</p><p>  完成數據的查找,使用SQL語句中的模糊查找,然后放入數組列表,進行返回。</p><p>  deleteMarked(ArrayList<Integer>)函數的實現(xiàn):</p><p>  刪除被標記多個數據的數據,</p><p>  backu

115、pData(boolean)函數的實現(xiàn):</p><p>  新建一個字符串,把當前所有數據的值寫成一個insert 語句存入字符串中,以便備份的時候能夠插入到數據庫中</p><p>  saveDataToFile(string,boolean)函數的實現(xiàn):</p><p>  把插入字符串寫到zpcontacData下的文件中</p><p

116、>  public void backupData(boolean privacy) {</p><p>  StringBuffer sqlBackup = new StringBuffer();</p><p>  Cursor cursor = null;</p><p>  if(privacy) {</p><p>  cur

117、sor = dbInstance.query(DB_TABLENAME, </p><p>  new String[]{"_id","name","mobilephone","officephone","familyphone","address","othercontact&quo

118、t;,"email","position","company","zipcode","remark","imageid,privacy"}, </p><p>  "privacy=1", null, null, null, null);</p><p&g

119、t;<b>  } else {</b></p><p>  cursor = dbInstance.query(DB_TABLENAME, </p><p>  new String[]{"_id","name","mobilephone","officephone","fam

120、ilyphone","address","othercontact","email","position","company","zipcode","remark","imageid,privacy"}, </p><p>  "pri

121、vacy=0",null, null, null, null);</p><p><b>  }</b></p><p>  while(cursor.moveToNext()) {</p><p>  sqlBackup.append("insert into " + DB_TABLENAME + "(

122、name,mobilephone,officephone,familyphone,address,othercontact,email,position,company,zipcode,remark,imageid,privacy)")</p><p>  .append(" values ('")</p><p>  .append(cursor.g

123、etString(cursor.getColumnIndex("name"))).append("','")</p><p>  .append(cursor.getString(cursor.getColumnIndex("mobilephone"))).append("','")</p>

溫馨提示

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

評論

0/150

提交評論