




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
..本科畢業(yè)設(shè)計<論文>基于android的云通訊錄的設(shè)計學院信息工程學院專業(yè)信息工程<電子信息工程方向>年級班別2011級〔2班學號3111002767學生姓名潘歡歡指導教師童懷2015年5月..摘要三號黑體加粗<摘要內(nèi)容>論文摘要應能概括研究題目的內(nèi)容和主要觀點,中文摘要在400字左右,并譯成英文。三號黑體加粗摘要正文后下空一行打印"關(guān)鍵詞"三字〔四號黑體,加粗,關(guān)鍵詞一般為3~5個,每一關(guān)鍵詞之間用逗號分開,最后一個關(guān)鍵詞后不打標點符號。目錄中各章題序的阿拉伯數(shù)字用TimesNewRoman體,第一級標題用小四號黑體,其余用小四號宋體。關(guān)鍵詞:關(guān)鍵詞1,關(guān)鍵詞2,關(guān)鍵詞3,關(guān)鍵詞4,關(guān)鍵詞5注:摘要和封面之間不需要豎排"書脊"頁,一切以此模板的格式為準。注:本設(shè)計〔論文題目來源于老師的國家級〔或部級、省級、廳級、市級、校級、企業(yè)科研項目,項目編號為:____________。..Abstract<Abstractcontent.>Keywords:keywords1,keyword2目錄1.系統(tǒng)描述11.1問題描述11.2功能描述11.3數(shù)據(jù)需求21.4設(shè)計意義22.背景介紹22.1Android系統(tǒng)概述22.2Android開發(fā)組件42.2.1Activity組件42.2.2Service組件72.2.3BroadcastReceiver組件82.2.4ContentProvider組件82.3Android數(shù)據(jù)庫92.3.1SQLite數(shù)據(jù)庫92.3.2SQLite數(shù)據(jù)庫特點103.可行性研究113.1技術(shù)可行性113.2經(jīng)濟可行性113.3操作可行性114.需求分析124.1前期調(diào)研124.2數(shù)據(jù)流圖124.3數(shù)據(jù)字典135.系統(tǒng)設(shè)計145.1總體設(shè)計145.2數(shù)據(jù)庫表結(jié)構(gòu)145.2.1實體145.2.2系統(tǒng)E-R圖155.2.3數(shù)據(jù)庫表設(shè)計155.3輸入/輸出設(shè)計165.4處理過程設(shè)計175.4.1業(yè)務流程圖175.4.2系統(tǒng)Activity設(shè)計185.4.3功能處理設(shè)計195.4.4系統(tǒng)界面設(shè)計236.詳細設(shè)計286.1開發(fā)環(huán)境286.2程序設(shè)計296.2.1數(shù)據(jù)類設(shè)計296.2.2Main<Activity>設(shè)計326.2.3AddNew<Activity>設(shè)計336.2.4UserDetail<Activity>設(shè)計346.2.5MainPrivacy<Activity>設(shè)計357.系統(tǒng)測試367.1程序調(diào)試367.2系統(tǒng)的測試367.2.1測試的意義及目的367.2.2測試步驟367.2.3測試的主要內(nèi)容377.3測試數(shù)據(jù)387.3.1添加模塊測試387.3.2查看編輯模塊測試397.3.3查詢模塊測試417.3.4刪除模塊測試437.3.5備份與還原模塊測試468設(shè)計總結(jié)488.1設(shè)計特點488.2經(jīng)驗與收獲49本科生課程設(shè)計成績評定表51..畢業(yè)設(shè)計〔論文任務書學生姓名潘歡歡專業(yè)班級11級電子信息工程2班學號3211002837指導教師姓名及職稱童懷教授題目基于Android的云通訊錄的設(shè)計與開發(fā)論文〔設(shè)計的主要任務與具體要求主要任務:1>聯(lián)系人的新增、編輯、刪除功能。2>可進行聯(lián)系人的備份與恢復功能。3>個人空間登錄功能。4>直接撥打和發(fā)送短信。5>長按聯(lián)系人可進行批量刪除聯(lián)系人6>在搜索聯(lián)系人界面下,可按拼音或漢字等搜索快速搜索具體要求:1搭建相關(guān)的開發(fā)環(huán)境和數(shù)據(jù)庫環(huán)境;2搜集與課題有關(guān)的JDK、Eclipse、ADT、AndroidSDK、AVD、微信開放平臺SDK工具,并結(jié)合工具實現(xiàn)相關(guān)功能;3>論文篇幅10000字以上,材料詳實、論描述完整、嚴密;4>語言通順,邏輯性強。進度安排〔包括時間劃分和各階段主要工作內(nèi)容1、第一階段:20XX12月~2015年3月,收集資料,確定研究方向,完成論文選題。2、第二階段:2015年3月~4月,完成論文開題報告、撰寫提綱3、第三階段:20XX4月~5月,完成論文初稿、二稿。4、第四階段:20XX5月~6月,畢業(yè)論文完稿,答辯。主要參考文獻[1]靳巖.GoogleAndroid開發(fā)入門與實戰(zhàn)[M][M].北京:人民郵電出版社,2009:1-12.[2]景保玉.2010中國移動應用開發(fā)現(xiàn)狀與趨勢大調(diào)查[M].[R].北京:人民郵電出版社,2011.[3]郭志宏..Android應用開發(fā)詳解[M].[M].北京:電子工業(yè)出版社,2010.[4]韓超,梁泉..Android?系統(tǒng)開發(fā)原理及開發(fā)要點詳解[M][M].北京:電子工業(yè)出版社,2010.[5]余志龍.GoogleAndroidSDK開發(fā)范例大全<第2版>[M].[M].北京:人民郵電出版社,2010.系審核意見:審核人簽名及系公章:年月日任務下達人〔簽字年月日任務接受人〔簽字年月日基于Andriod環(huán)境的通訊錄系統(tǒng)設(shè)計1.系統(tǒng)描述1.1問題描述設(shè)計與實現(xiàn)一個在Android系統(tǒng)上運行的手機通訊管理軟件,實現(xiàn)手機通訊錄的基本功能,包括:添加聯(lián)系人、查看聯(lián)系人、修改聯(lián)系人、刪除聯(lián)系人、撥打、發(fā)送短信、查詢聯(lián)系人,以及聯(lián)系人的導入導出功能即聯(lián)系人的備份。主要開發(fā)基于Android的手機的通訊管理軟件。以Java語言為基礎(chǔ),結(jié)合Android移動開發(fā)平臺,并利用Android提供的SDK,實現(xiàn)在Android平臺上運行的手機通訊錄,方便廣大手機用戶更加便捷地對聯(lián)系人的信息進行管理。該手機通訊錄面向所有的Android手機用戶,為他們提供更實際便捷的手機服務,具有撥號、通訊記錄等基本功能。該通訊錄的數(shù)據(jù)導出功能是該軟件的一個特色,可以實現(xiàn)聯(lián)系人數(shù)據(jù)導出到文本,實現(xiàn)數(shù)據(jù)備份。大家生活當中經(jīng)常遇到手機丟失,出現(xiàn)故障,和其他一些事故。最擔心的就是丟失手機里的號碼。1.2功能描述此次設(shè)計的軟件主要功能有:添加__可以添加聯(lián)系人的基本信息,如:姓名、、單位、住址等信息;查看信息:查看某個聯(lián)系人的具體信息;查詢__根據(jù)輸入的條件查詢聯(lián)系人;修改聯(lián)系人的信息;數(shù)據(jù)備份與還原:可以將整個通訊錄備份到SD卡上,以防止信息丟失、抑可將備份的數(shù)據(jù)還原到通訊錄中;1.3數(shù)據(jù)需求本程序的數(shù)據(jù)為通訊錄中的聯(lián)系人信息,這些信息有用戶輸入,并保存在Android的SQLite數(shù)據(jù)庫中,主要有:聯(lián)系人的姓名、手機、家庭、公司、單位、家庭地址、電子郵件、備注等信息。1.4設(shè)計意義隨著3G網(wǎng)絡的使用,移動終端不再僅是通訊網(wǎng)絡的終端,還將成為互聯(lián)網(wǎng)的終端。因此,移動終端的應用軟件和需要的服務將會有很大的發(fā)展空間。在Google和Android手機聯(lián)盟的共同推動下,Android在眾多手機操作系統(tǒng)中脫穎而出,受到廣大消費者的歡迎。手機通訊錄作為手機的基本功能之一,每天我們都在頻繁地使用著。根據(jù)手機功能使用調(diào)查顯示,有八成以上的消費者使用手機通訊錄功能。隨著手機通訊錄功能的不斷加強與完善,手機通訊錄對于人們的意義,已不僅僅像記事簿一樣顯示通訊地址,而是向著個性化、人性化的方向發(fā)展。通訊錄從無到有,從英文到中文,經(jīng)過了十幾年的發(fā)展歷程,今后的發(fā)展趨勢就是從通訊錄發(fā)展為名片夾,也就是在一個人名下,可以存儲座機、手機、單位、地址、電子郵件等內(nèi)容。這種名片夾在薄的基礎(chǔ)上,大大豐富了內(nèi)容,同時結(jié)構(gòu)也發(fā)生了革命性變化,而且隨著手機的發(fā)展,相信更優(yōu)秀的通訊錄會越來越受到社會各層人士的喜愛。2.背景介紹2.1Android系統(tǒng)概述Android一詞的本義指"機器人",同時也是Google在20XX11月5日宣布的基于Linux內(nèi)核的開源手機系統(tǒng)的名稱,中文注冊商標"安致",該平臺由操作系統(tǒng)、中間件、用戶界面和應用軟件組成,是一個為移動終端打造的真正開放和完整的智能手機系統(tǒng)。其早期為Google開發(fā),后由開放手機聯(lián)盟〔OpenHandsetAlliance開發(fā)。它采用了軟件堆層〔softwarestack,又名以軟件疊層的架構(gòu),主要分為三部分,底層以Linux內(nèi)核為基礎(chǔ),由C語言開發(fā),只提供基本功能;中間層包括數(shù)據(jù)庫Library和虛擬機VirtualMachine,由C++開發(fā);最上層是由各公司自行開發(fā),以Java編寫的各種應用軟件,如通話程序,短信程序等。Android平臺架構(gòu):Android平臺整體自底向上由以下四個層次組成:Linux內(nèi)核層、Android運行庫和其他庫層、應用框架層、應用程序?qū)?。Linux內(nèi)核層Android基于Linuxversion內(nèi)核開發(fā)的,主要是添加了一個名為Goldfish的虛擬CPU以及Android運行。所需的特定驅(qū)動代碼,該層用來提供系統(tǒng)的底層服務,包括安全機制、存管理、進程管理、網(wǎng)絡堆棧及一系列驅(qū)動模塊。作為一虛擬的中間層,該層位于硬件和軟件層之間。但這個內(nèi)核操作系統(tǒng)并非類GNU/Linux的,所以其系統(tǒng)庫、系統(tǒng)初始化和編程接口都和標準Linux系統(tǒng)有所不同的。它沒有采用虛擬內(nèi)存文件系統(tǒng)。而是采用YAFFS2文件系統(tǒng)YAFFSYetAnotherFlashFileSystem文件系統(tǒng)是一個開源的,專門為NANDFlash設(shè)計的文件系統(tǒng),具有很好的可移植性,也是一種日志型文件系統(tǒng),能夠在Linux,uCLinux和WindowsCE上運行。YAFFS目前有YAFFS和YAFFS2兩個版本,一般來說,YAFFS對小頁面528字節(jié)/頁有很好的支持,而更大的頁面2K64字節(jié)/頁就需要支持超大容量的NANDFlash。所以采用支持大頁面的YAFFS2文件系統(tǒng)。Android運行庫和其他庫層Android運行庫包含一組核心庫和Dalvik虛擬機。同時Android提供了豐富的庫類支持且大部分為開源代碼,如采用的數(shù)據(jù)庫為SQLite。Android選擇它作為移動終端的嵌入式數(shù)據(jù)庫有以下優(yōu)點,它無需安裝和管理配置,它是一個存儲在單一磁盤文件中的完整數(shù)據(jù)庫,體積小只有250KB但支持數(shù)據(jù)庫大小至2TB,提供了對事務功能和并發(fā)處理的支持,而且比目前流行的大多數(shù)數(shù)據(jù)庫運行速度快。應用框架層在應用框架Android開發(fā)人員可以跟那些核心應用一樣擁有訪問框架APIS的全部權(quán)限。應用的系統(tǒng)機構(gòu)化設(shè)計簡化了各組件之間的重用,任何應用都可以分發(fā)自己的足見,任何應用也可以使用這些分發(fā)的足見。應用程序?qū)覣ndroid本身會附帶一些核心的應用程序,包括e-mail客戶端、短信程序、日歷、地圖、瀏覽器、通訊錄等等,目前所有的應用程序都是由java語言開發(fā)的。圖2-1Android體系結(jié)構(gòu)2.2Android開發(fā)組件Android開發(fā)四大組件分別是:活動<Activity>:用于表現(xiàn)功能;服務<Service>:后臺運行服務,不提供界面呈現(xiàn);廣播接收器<BroadcastReceiver>:用于接收廣播;內(nèi)容提供商〔ContentProvider:支持在多個應用中存儲和讀取數(shù)據(jù),相當于數(shù)據(jù)庫。2.2.1Activity組件Android中,Activity是所有程序的根本,所有程序的流程都運行在Activity之中,Activity可以算是開發(fā)者遇到的最頻繁,也是Android當中最基本的模塊之一。一般一個Android應用是由多個Activity組成的,這多個Activity之間可以進行相互跳轉(zhuǎn),每個Activity都是一個單獨的類,它擴展實現(xiàn)了Activity基礎(chǔ)類。這個類顯示為一個有Views組成的用戶界面,并響應事件。大多數(shù)程序有多個Activity。某些情況下,一個Activity可能會給前一個Activity返回值。打開一個新界面后,前一個界面被暫停,并放入歷史棧中。使用者可以回溯前面已經(jīng)打開的存放在歷史棧中的界面,也可以從歷史棧中刪除沒有價值的界面。Activity的生命周期如圖2-1所示,Activity的5中狀態(tài)之間的如何切換與運作圖2-2Activity的生命周期一個Activity的啟動順序:onCreate<>-->onStart<>-->onResume<>當另一個Activity啟動時:第一個ActivityonPause<>-->第二個ActivityonCreate<>-->onStart<>-->onResume<>-->第一個ActivityonStop<>當返回到第一個Activity時:第二個ActivityonPause<>-->第一個ActivityonRestart<>-->onStart<>-->onResume<>-->第二個ActivityonStop<>-->onDestroy<>一個Activity的銷毀順序:情況一:onPause<>--><ProcessKilled>情況二:onPause<>-->onStop<>--><ProcessKilled>情況三:onPause<>-->onStop<>-->onDestroy<>每一個活動Activity都處于某一個狀態(tài),對于開發(fā)者來說,是無法控制其應用程序處于某一個狀態(tài)的,這些均由系統(tǒng)來完成。但是當一個活動的狀態(tài)發(fā)生改變的時候,開發(fā)者可以通過調(diào)用onXX<>的方法獲取到相關(guān)的通知信息。在實現(xiàn)Activity類的時候,通過覆蓋override這些方法即可在你需要處理的時候來調(diào)用。onCreate:當活動第一次啟動的時候,觸發(fā)該方法,可以在此時完成活動的初始化工作。onCreate方法有一個參數(shù),該參數(shù)可以為空null,也可以是之前調(diào)用onSaveInstanceState〔方法保存的狀態(tài)信息。onStart:該方法的觸發(fā)表示所屬活動將被展現(xiàn)給用戶。onResume:當一個活動和用戶發(fā)生交互的時候,觸發(fā)該方法。onPause:當一個正在前臺運行的活動因為其他的活動需要前臺運行而轉(zhuǎn)入后臺運行的時候,觸發(fā)該方法。這時候需要將活動的狀態(tài)持久化,比如正在編輯的數(shù)據(jù)庫記錄等。onStop:當一個活動不再需要展示給用戶的時候,觸發(fā)該方法。如果內(nèi)存緊張,系統(tǒng)會直接結(jié)束這個活動,而不會觸發(fā)onStop方法。所以保存狀態(tài)信息是應該在onPause時做,而不是onStop時做?;顒尤绻麤]有在前臺運行,都將被停止或者Linux管理進程為了給新的活動預留足夠的存儲空間而隨時結(jié)束這些活動。在一些情況下,onPause方法或許是活動觸發(fā)的最后的方法,因此開發(fā)者需要在這個時候保存需要保存的信息。onRestart:當處于停止狀態(tài)的活動需要再次展現(xiàn)給用戶的時候,觸發(fā)該方法。onDestroy:當活動銷毀的時候,觸發(fā)該方法。和onStop方法一樣,如果內(nèi)存緊張,系統(tǒng)會直接結(jié)束這個活動而不會觸發(fā)該方法。onSaveInstanceState:系統(tǒng)調(diào)用該方法,允許活動保存之前的狀態(tài),比如說在一串字符串中的光標所處的位置等。Activity棧每個Activity的狀態(tài)是由它在Activity?!彩且粋€后進先出LIFO,包含所有正在運行Activity的隊列中的位置決定的。當一個新的Activity啟動時,當前的活動的Activity將會移到Activity棧的頂部。如果用戶使用后退按鈕返回的話,或者前臺的Activity結(jié)束,活動的Activity就會被移出棧消亡,而在棧上的上一個活動的Activity將會移上來并變?yōu)榛顒訝顟B(tài)。如圖2-3所示,Activity在棧中的活動順序:圖2-3Activity棧每個Activity都有一個默認窗體;另外Activity也會使用額外的窗體,例如:彈出式對話框,窗體中的元素是由view類的對象生成的,它們都繼承自基類View。2.2.2Service組件Service是android系統(tǒng)中的一種組件,它跟Activity的級別差不多,但是它不能自己運行,只能后臺運行,并且可以和其他組件進行交互。Service是沒有界面的長生命周期的代碼。Service是一種程序,它可以運行很長時間,但是它卻沒有用戶界面。開啟service有兩種方式:<1>Context.startService<>:Service會經(jīng)歷onCreate->onStart〔如果Service還沒有運行,則android先調(diào)用onCreate<>然后調(diào)用onStart<>;如果Service已經(jīng)運行,則只調(diào)用onStart<>,所以一個Service的onStart方法可能會重復調(diào)用多次;stopService的時候直接onDestroy,如果是調(diào)用者自己直接退出而沒有調(diào)用stopService的話,Service會一直在后臺運行。該Service的調(diào)用者再啟動起來后可以通過stopService關(guān)閉Service。注意,多次調(diào)用Context.startservice<>不會嵌套〔即使會有相應的onStart<>方法被調(diào)用,所以無論同一個服務被啟動了多少次,一旦調(diào)用Context.stopService<>或者stopSelf<>,他都會被停止。補充說明:傳遞給startService<>的Intent對象會傳遞給onStart<>方法。調(diào)用順序為:onCreate-->onStart<可多次調(diào)用>-->onDestroy。<2>Context.bindService<>:Service會經(jīng)歷onCreate<>->onBind<>,onBind將返回給客戶端一個IBind接口實例,IBind允許客戶端回調(diào)服務的方法,比如得到Service運行的狀態(tài)或其他操作。這個時候把調(diào)用者〔Context,例如Activity會和Service綁定在一起,Context退出了,Srevice就會調(diào)用onUnbind->onDestroyed相應退出,所謂綁定在一起就共存亡了。2.2.3BroadcastReceiver組件在Android中,Broadcast是一種廣泛運用的在應用程序之間傳輸信息的機制。而BroadcastReceiver是對發(fā)送出來的Broadcast進行過濾接受并響應的一類組件??梢允褂肂roadcastReceiver來讓應用對一個外部的事件做出響應。例如,當呼入這個外部事件到來的時候,可以利用BroadcastReceiver進行處理。BroadcastReceiver不能生成UI,也就是說對于用戶來說不是透明的,用戶是看不到的。BroadcastReceiver通過NotificationManager來通知用戶這些事情發(fā)生了。BroadcastReceiver既可以在AndroidManifest.xml中注冊,也可以在運行時的代碼中使用Context.registerReceiver<>進行注冊。只要是注冊了,當事件來臨的時候,即使程序沒有啟動,系統(tǒng)也在需要的時候啟動程序。各種應用還可以通過使用Context.sendBroadcast<>將它們自己的intentbroadcasts廣播給其他應用程序。2.2.4ContentProvider組件ContentProvider是Android提供的第三方應用數(shù)據(jù)的訪問方案。在Android中,對數(shù)據(jù)的保護是很嚴密的,除了放在SD卡中的數(shù)據(jù),一個應用所持有的數(shù)據(jù)庫、文件、等等內(nèi)容,都是不允許其他直接訪問的。Andorid當然不會真的把每個應用都做成一座孤島,它為所有應用都準備了一扇窗,這就是ContentProvider。應用想對外提供的數(shù)據(jù),可以通過派生ContentProvider類,封裝成一枚ContentProvider,每個ContentProvider都用一個uri作為獨立的標識,形如:content://com.xxxxx。所有東西看著像REST的樣子,但實際上,它比REST更為靈活。和REST類似,uri也可以有兩種類型,一種是帶id的,另一種是列表的。另外,ContentProvider不和REST一樣只有uri可用,還可以接受Projection,Selection,OrderBy等參數(shù),這樣,就可以像數(shù)據(jù)庫那樣進行投影,選擇和排序。查詢到的結(jié)果,以Cursor的形式進行返回,調(diào)用者可以移動Cursor來訪問各列的數(shù)據(jù)。ContentProvider屏蔽了內(nèi)部數(shù)據(jù)的存儲細節(jié),向外提供了上述統(tǒng)一的接口模型,這樣的抽象層次,大大簡化了上層應用的書寫,也對數(shù)據(jù)的整合提供了更方便的途徑。ContentProvider內(nèi)部,常用數(shù)據(jù)庫來實現(xiàn),Android提供了強大的Sqlite支持,但很多時候,你也可以封裝文件或其他混合的數(shù)據(jù)。2.3Android數(shù)據(jù)庫2.3.1SQLite數(shù)據(jù)庫SQLite,是一款輕型的數(shù)據(jù)庫,是遵守ACID的關(guān)聯(lián)式數(shù)據(jù)庫管理系統(tǒng),它的設(shè)計目標是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統(tǒng),同時能夠跟很多程序語言相結(jié)合,比如Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開源世界著名的數(shù)據(jù)庫管理系統(tǒng)來講,它的處理速度比他們都快。SQLite第一個Alpha版本誕生于20XX5月.至今已經(jīng)有10個年頭,SQLite也迎來了一個版本SQLite3已經(jīng)發(fā)布。SQLite數(shù)據(jù)類型:一般數(shù)據(jù)采用的固定的靜態(tài)數(shù)據(jù)類型,而SQLite采用的是動態(tài)數(shù)據(jù)類型,會根據(jù)存入值自動判斷。SQLite具有以下五種常用的數(shù)據(jù)類型:NULL:這個值為空值VARCHAR<n>:長度不固定且其最大長度為n的字串,n不能超過4000CHAR<n>:長度固定為n的字串,n不能超過254。INTEGER:值被標識為整數(shù),依據(jù)值的大小可以依次被存儲為1,2,3,4,5,6,7,8.REAL:所有值都是浮動的數(shù)值,被存儲為8字節(jié)的IEEE浮動標記序號.TEXT:值為文本字符串,使用數(shù)據(jù)庫編碼存儲<TUTF-8,UTF-16BEorUTF-16-LE>.BLOB:值是BLOB數(shù)據(jù)塊,以輸入的數(shù)據(jù)格式進行存儲。如何輸入就如何存儲,不改變格DATA:包含了年份、月份、日期。TIME:包含了小時、分鐘、秒。2.3.2SQLite數(shù)據(jù)庫特點輕量級SQLite和C/S模式的數(shù)據(jù)庫軟件不同,它是進程內(nèi)的數(shù)據(jù)庫引擎,因此不存在數(shù)據(jù)庫的客戶端和服務器。使用SQLite一般只需要帶上它的一個動態(tài)庫,就可以分享它的全部功能。而且動態(tài)庫的尺寸也相當小。獨立性。SQLite數(shù)據(jù)庫的核心引擎不依賴第三方軟件,使用它也不需要"安裝"。所以在部署的使用能省去不少麻煩。隔離性SQLite數(shù)據(jù)庫中所有的信息〔比如表、視圖、觸發(fā)器等都包含在一個文件內(nèi),方便管理和維護??缙脚_性SQLite數(shù)據(jù)庫支持大部分操作系統(tǒng),除了我們在電腦上使用的操作系統(tǒng)之外。很多手機操作系統(tǒng)都可以運行,比如Android、WindowsPhone、Symbin、Plam、IOS等。多語言接口SQLite數(shù)據(jù)庫支持很多編程語言接口,比如C/C++、Java等,得到很多開發(fā)者的喜愛。安全性SQLite數(shù)據(jù)庫通過數(shù)據(jù)庫級上的獨占性和共享鎖實現(xiàn)獨立事務處理。這就意味著多個進程可以在同一時間從同一數(shù)據(jù)庫讀取數(shù)據(jù),但只有一個可以寫入數(shù)據(jù)。在某個進程或線程向數(shù)據(jù)庫執(zhí)行寫入操作之前,必須取得獨占鎖。在發(fā)出獨占鎖后,其他的讀或?qū)懖僮鲗⒉粫诎l(fā)生。3.可行性研究3.1技術(shù)可行性本系統(tǒng)設(shè)計到的技術(shù)因素主要有如下幾個方面:UI頁面的設(shè)計Android控件的各種函數(shù)的應用,實現(xiàn)其功能Activity的之間的跳轉(zhuǎn),頁面之間值得傳遞方式,如何利用Intent數(shù)據(jù)庫的創(chuàng)建和操作,如何把聯(lián)系人的信息存儲到數(shù)據(jù)庫中,并把它顯示出來配置環(huán)境,裝有Windows電腦一臺,安裝Eclipse,安裝AndroidSDK,安裝JDK,并配置了環(huán)境變量,安裝ADT插件。開發(fā)技術(shù):本次設(shè)計用的是Java開發(fā)語言和Android相關(guān)開發(fā)知識,由于Android是開源項目,基于Java,語法上并不難,網(wǎng)絡上學習資源較多,因此技術(shù)上可行,調(diào)試相對簡單。硬件支持:當前的計算機硬件配置也完全能滿足開發(fā)的需求,能夠良好的運行哥開發(fā)軟件和Android虛擬機。軟件方面:相關(guān)的開發(fā)軟件,可以方便的從網(wǎng)上下載,易于獲得,且可以滿足系統(tǒng)需求。綜上所述:技術(shù)上可行!3.2經(jīng)濟可行性由于軟件資源可以從網(wǎng)絡上免費獲得,因此,軟件尚不需要花費,另外,由于Android有自己的運行虛擬機,因此開發(fā)的應用不用在Android實體機上運行,省去了一部分硬件成本,因此經(jīng)濟上可行。3.3操作可行性開發(fā)的應用完全可以運行在Android虛擬機上,當然也可以運行在實體機上,而且整個應用操作上相對簡單,操作上可行。4.需求分析4.1前期調(diào)研通過對已有的手機通訊錄的研究,對其基本業(yè)務流程進行分析,確定出基本的處理需求:用戶的行為:增、刪、改、查、備份與還原。增:增加聯(lián)系人的基本信息;刪:刪除已有聯(lián)系人的基本信息;改:修改已有聯(lián)系人的信息;查:查詢聯(lián)系人的基本信息;備份與還原:備份該通訊錄數(shù)據(jù)庫中的數(shù)據(jù)到SD卡上,或者從SD卡上還原備份的數(shù)據(jù)。4.2數(shù)據(jù)流圖根據(jù)"功能分解,逐步求精"的原則,此次需求分析的數(shù)據(jù)流圖主要分為三層:頂層數(shù)據(jù)流圖:確定系統(tǒng)的輸入與輸出、第一層數(shù)據(jù)流圖:對系統(tǒng)進行第一層功能分解,確定系統(tǒng)的主要工作、第二層數(shù)據(jù)流圖:確定系統(tǒng)詳細的工作流圖頂層數(shù)據(jù)流圖:底層數(shù)據(jù)流圖:4.3數(shù)據(jù)字典數(shù)據(jù)流圖表達了數(shù)據(jù)和處理的關(guān)系,數(shù)據(jù)字典則是系統(tǒng)中的各類數(shù)據(jù)描述的集合,是進行詳細的數(shù)據(jù)手機和數(shù)據(jù)分析做得到的主要成果,可以自己設(shè)計一套適合閱讀的圖表。本設(shè)計的數(shù)據(jù)字典有:聯(lián)系人的信息,具體如下:名字:聯(lián)系人信息名字:聯(lián)系人信息別名:Contacts描述:聯(lián)系人的詳細信息定義:聯(lián)系人的信息=頭像+姓名+手機號碼+辦公室號碼+家庭+職務職稱+單位名稱+地址++Email+其他聯(lián)系方式+備注位置:聯(lián)系人信息表5.系統(tǒng)設(shè)計5.1總體設(shè)計Android手機通訊管理軟件主要功能模塊包括:聯(lián)系人添加、聯(lián)系人查看、聯(lián)系人編輯、聯(lián)系人刪除、聯(lián)系人查找、呼叫、發(fā)送短信、數(shù)據(jù)備份與還原、個人空間等,如圖5-1所示:圖5-1總體設(shè)計圖5.2數(shù)據(jù)庫表結(jié)構(gòu)5.2.1實體根據(jù)需求分析的數(shù)據(jù)流圖,對其進行自底向上的分析。抽象出設(shè)計視圖,集成局部視圖,得到全局的概念結(jié)構(gòu)。本數(shù)據(jù)庫的實體為:聯(lián)系人信息〔頭像,姓名,手機號碼,辦公室號碼,家庭,職務職稱,單位名稱,地址,,Email,其他聯(lián)系方式,備注5.2.2系統(tǒng)E-R圖根據(jù)E-R的設(shè)計過程,根據(jù)初始數(shù)據(jù)流圖設(shè)計初始的E-R圖,而后將各分E-R圖集成,消除沖突、消除冗余,得到最初的E-R圖,對其進行分析和根據(jù)規(guī)范化理論進行規(guī)范化,集成視圖,最后形成基本的E-R圖。其過程如圖所示:聯(lián)系人實體E-R圖圖5-2聯(lián)系人信息實體E-R圖5.2.3數(shù)據(jù)庫表設(shè)計根據(jù)上述聯(lián)系人實體E-R圖,設(shè)計出數(shù)據(jù)庫的表,如表5-1所示,表5-1user表的設(shè)計字段名數(shù)據(jù)類型是否為空約束條件備注_idint非空主鍵自動增量nameText非空mobilephoneText可以為空officephoneTextfamilyphoneTextaddressTextothercontactTextemailTextpositionTextcompanyTextzipcodeTextremarkTextimageidintprivacyint隱私用戶1普通用戶05.3輸入/輸出設(shè)計在這個系統(tǒng)中,通過對系統(tǒng)的分析,可以識別出參與者:用戶。對于用戶而言,通訊錄上按鈕、菜單、輸入框是用戶向系統(tǒng)輸入的操作請求的輸入設(shè)備,GUI與是用于向用戶輸出信息的輸出設(shè)備。按鈕、菜單、輸入框按鈕、菜單、輸入框SQLite數(shù)據(jù)庫GUI系統(tǒng)SQLite數(shù)據(jù)庫GUI系統(tǒng)圖5-3 通訊錄的參與者事件是來自人操作的重要的消息,表5-2給出了通訊錄系統(tǒng)中可能發(fā)生的所有事件。表5-2 系統(tǒng)響應及其執(zhí)行結(jié)果事件系統(tǒng)響應執(zhí)行結(jié)果1從手機屏幕點擊軟件系統(tǒng)調(diào)用函數(shù)入口,啟動系統(tǒng),進入該軟件進入該軟件,顯示聯(lián)系人列表2點擊"Menu",選擇添加聯(lián)系人調(diào)用添加函數(shù)進入添加界面3點擊其中一個聯(lián)系人調(diào)用查看/修改某個聯(lián)系人函數(shù)進入聯(lián)系人詳細界面4在聯(lián)系人詳細界面點擊"Menu",可對聯(lián)系人進行發(fā)送短信調(diào)用系統(tǒng)發(fā)送短信函數(shù)進入發(fā)送短信界面5在聯(lián)系人詳細界面點擊"Menu",可對聯(lián)系人進行撥打調(diào)用系統(tǒng)撥打函數(shù)進入呼叫聯(lián)系人界面6在聯(lián)系人詳細界面點擊"Menu",可對聯(lián)系人進行修改調(diào)用修改函數(shù)修改聯(lián)系人信息7在聯(lián)系人詳細界面點擊"Menu",可對聯(lián)系人進行刪除調(diào)用刪除函數(shù)調(diào)用刪除函數(shù)8在聯(lián)系人列表界面點擊"Menu",選擇查找調(diào)用查找聯(lián)系人函數(shù)顯示用戶查找結(jié)果9在聯(lián)系人列表界面點擊"Menu",選擇退出調(diào)用退出函數(shù)退出通訊錄軟件10在聯(lián)系人列表界面點擊"Menu",選擇菜單調(diào)用菜單函數(shù)先是菜單界面11在菜單界面選擇顯示所有人信息調(diào)用顯示函數(shù)顯示所有人信息12在菜單界面選擇刪除所有人信息調(diào)用刪除函數(shù)刪除所有人信息13在菜單界面選擇備份所有人信息調(diào)用備份函數(shù)備份信息到SD卡14在菜單界面選擇還原所有人信息調(diào)用還原函數(shù)進入還原界面,還原信息到數(shù)據(jù)庫15在菜單界面選擇個人空間調(diào)用私人空間類進入私人界面其中的輸入包括:用戶選擇的上述按鈕、菜單,還包括輸入框的內(nèi)容,包括:聯(lián)系人頭像、聯(lián)系人姓名、手機號、家庭、單位、單位名、職位、住址、、備注等信息。其中輸出包括:根據(jù)用戶的選擇輸出的相應內(nèi)容,如:聯(lián)系人列表顯示信息、聯(lián)系人詳細信息等。5.4處理過程設(shè)計5.4.1業(yè)務流程圖用戶進入手機通訊管理軟件后,會看到聯(lián)系人列表界面。聯(lián)系人列表界面主菜單中包括:添加、搜索、刪除、菜單、退出;其中菜單又包括:顯示所有聯(lián)系人、刪除所有聯(lián)系人、備份信息到SD卡、還原數(shù)據(jù)到通訊錄、個人空間、退出。點擊添加聯(lián)系人,則進入聯(lián)系人添加界面,添加成功后返回聯(lián)系人列表界面。點擊搜索菜單,則進入聯(lián)系人搜索界面,輸入聯(lián)系人的全名或一個字,即可查找到相關(guān)聯(lián)系人,點擊聯(lián)系人會進入聯(lián)系人查看界面,可以對聯(lián)系人進行編輯、刪除、撥打、發(fā)送短信,,長按某分聯(lián)系人,可以選中該聯(lián)系人,點擊刪除,會刪除已經(jīng)標記的聯(lián)系人。點擊菜單,可進入菜單界面:點擊所有聯(lián)系人,可以顯示所有人信息、點擊刪除所有聯(lián)系人,可以刪除所有人信息、點擊備份信息到SD卡,可以將數(shù)據(jù)庫數(shù)據(jù)備份到SD卡、點擊還原數(shù)據(jù)到通訊錄,可以從SD卡上備份的數(shù)據(jù)還原到數(shù)據(jù)庫、點擊個人空間,輸入密碼并進入個人操作界面、點擊退出,退出到主界面。該軟件的業(yè)務流程如圖5-4所示:用戶用戶手機通訊管理軟件添加聯(lián)系人編輯聯(lián)系人刪除聯(lián)系人聯(lián)系人列表聯(lián)系人搜索聯(lián)系人菜單呼叫聯(lián)系人發(fā)送短信退出通訊錄顯示所有聯(lián)系人刪除所有聯(lián)系人備份還原個人空間退出菜單圖5-4系統(tǒng)業(yè)務流程圖5.4.2系統(tǒng)Activity設(shè)計根據(jù)Android的Activity設(shè)計原則,設(shè)計出整個系統(tǒng)的界面,如圖5-5所示:圖5-5系統(tǒng)Activity設(shè)計圖5.4.3功能處理設(shè)計瀏覽聯(lián)系人用例名稱:瀏覽聯(lián)系人用例描述:瀏覽聯(lián)系人列表角色:手機用戶前置條件:通訊錄中已有聯(lián)系人后置條件:顯示出所有聯(lián)系人基本路徑打開通訊錄系統(tǒng)查詢數(shù)據(jù)庫顯示出聯(lián)系人列表查看聯(lián)系人用例名稱:查看聯(lián)系人用例描述:查看聯(lián)系人信息角色:手機用戶前置條件:通訊錄中已有聯(lián)系人后置條件:給出聯(lián)系人信息基本路徑 A.查看聯(lián)系人信息 B.給出相關(guān)信息編輯聯(lián)系人用例名稱:編輯聯(lián)系人用例描述:編輯聯(lián)系人信息角色:手機用戶前置條件:通訊錄中已有聯(lián)系人后置條件:修改聯(lián)系人信息基本路徑 A.輸入要修改的新信息 B.修改聯(lián)系人信息刪除聯(lián)系人用例名稱:刪除聯(lián)系人用例描述:刪除聯(lián)系人角色:手機用戶前置條件:通訊錄中已有聯(lián)系人后置條件:刪除聯(lián)系人基本路徑 A.選中聯(lián)系人,選擇刪除操做 B.詢問是否確定刪除操作 C.刪除聯(lián)系人上述三種業(yè)務操作的流程圖開始開始聯(lián)系人列表單擊某個聯(lián)系人查看/修改/刪除跳轉(zhuǎn)到聯(lián)系人信息Activity結(jié)束聯(lián)系人數(shù)據(jù)庫圖5-6查看/修改/刪除流程圖查詢聯(lián)系人用例名稱:查詢聯(lián)系人用例描述:查詢聯(lián)系人信息角色:手機用戶前置條件:通訊錄中已有聯(lián)系人后置條件:給出聯(lián)系人信息基本路徑 A.輸入查找的數(shù)據(jù) B.查詢列表根據(jù)數(shù)據(jù)動態(tài)現(xiàn)實出信息點擊Menu菜單,選擇查找聯(lián)系人跳轉(zhuǎn)SearchContactActivity,在查找聯(lián)系人界面中,TextView被監(jiān)聽,根據(jù)TextView輸入的數(shù)據(jù),進行查詢后在List中顯示。開始開始聯(lián)系人列表按查詢按鈕跳轉(zhuǎn)到查看聯(lián)系人Activity結(jié)束輸入查詢條件顯示信息修改/刪除操作打、發(fā)短信聯(lián)系人數(shù)據(jù)庫圖5-7查詢聯(lián)系人流程圖菜單操作用例名稱:菜單操作用例描述:選擇菜單功能角色:手機用戶前置條件:單擊菜單按鈕后置條件:進入菜單界面基本路徑 A.單擊菜單按鈕 B.選擇菜單的功能開始開始聯(lián)系人列表按查詢按鈕跳轉(zhuǎn)到菜單Activity結(jié)束查看所有聯(lián)系人數(shù)據(jù)庫刪除所有備份還原個人空間退出菜單SD卡數(shù)據(jù)圖5-8菜單操作流程圖5.4.4系統(tǒng)界面設(shè)計本系統(tǒng)一共有11個頁面文件,主要的界面如下:Main.xml文件,如圖5-9所示,顯示已經(jīng)存儲的聯(lián)系人數(shù)據(jù)數(shù)據(jù):圖5-9系統(tǒng)主界面AddNew.xml文件,如圖5-10所示,顯示添加聯(lián)系人的選項,完成聯(lián)系人的添加:圖5-10添加聯(lián)系人界面Main-menu_grid.xml顯示彈出的主菜單的對話圖5-11主菜單界面Userdetail.xml文件如圖5-12所示,顯示聯(lián)系人的信息具體選項,可以完成數(shù)據(jù)的編輯和刪除:圖5-12查看修改界面Imgaeswitch.xml顯示用戶頭像的切換:圖5-13選擇頭像界面Numchoose.xml打時彈出的對話框顯示圖5-14打發(fā)短信界面Item_menu.xml顯示主頁的菜單圖5-15子菜單界面Login.xml為特權(quán)用戶登錄圖5-16個人空間登陸界面進入后的界面:圖5-17個人空間界面6.詳細設(shè)計完成上述的操作后,便是進行代碼的編寫和調(diào)試,使用Java語言和AndroidAPI進行程序設(shè)計。6.1開發(fā)環(huán)境開發(fā)軟件:Eclipse、JDK1.7、AndroidSDK、ADT開發(fā)環(huán)境:Windows7虛擬設(shè)備:AndroidAVD開發(fā)版本:Android2.16.2程序設(shè)計6.2.1數(shù)據(jù)類設(shè)計用戶User類如圖6-1所示,主要用于暫存頁面獲得的信息,然后再存入數(shù)據(jù)庫中。圖6-1User類DBhelper類如圖6-2所示,主要完成數(shù)據(jù)庫的表的創(chuàng)建和數(shù)據(jù)的添加刪除以及備份的功能,以下是各個具體的函數(shù)和變量。圖6-2DBhelper類insert<User>函數(shù)實現(xiàn):完成數(shù)據(jù)的插入,并根據(jù)插入是否成功,返回一個長整型的值getAllUser<boolean>的實現(xiàn):完成數(shù)據(jù)的顯示,使用SQLiteDatabase.query<>方法,利用cursor對象,一一取出字段的值,放入一個hasp表中,最后存入數(shù)組列表中,返回給數(shù)組列表。modify<User>函數(shù)的實現(xiàn):使用user類中的字段,更新數(shù)據(jù)庫delete<int>函數(shù)的實現(xiàn):根據(jù)數(shù)據(jù)的id進行單個數(shù)據(jù)的刪除deleteAll<int>函數(shù)的實現(xiàn):刪除所有數(shù)據(jù)getTotalCount<>函數(shù)的實現(xiàn):使用cursor對象getint<>方法得到數(shù)據(jù)的個數(shù)getUsers<Stringboolean>函數(shù)的實現(xiàn):完成數(shù)據(jù)的查找,使用SQL語句中的模糊查找,然后放入數(shù)組列表,進行返回。deleteMarked<ArrayList<Integer>>函數(shù)的實現(xiàn):刪除被標記多個數(shù)據(jù)的數(shù)據(jù),backupData<boolean>函數(shù)的實現(xiàn):新建一個字符串,把當前所有數(shù)據(jù)的值寫成一個insert語句存入字符串中,以便備份的時候能夠插入到數(shù)據(jù)庫中saveDataToFile<string,boolean>函數(shù)的實現(xiàn):把插入字符串寫到zpcontacData下的文件中publicvoidbackupData<booleanprivacy>{StringBuffersqlBackup=newStringBuffer<>;Cursorcursor=null;if<privacy>{cursor=dbInstance.query<DB_TABLENAME,newString[]{"_id","name","mobilephone","officephone","familyphone","address","othercontact","email","position","company","zipcode","remark","imageid,privacy"},"privacy=1",null,null,null,null>;}else{cursor=dbInstance.query<DB_TABLENAME,newString[]{"_id","name","mobilephone","officephone","familyphone","address","othercontact","email","position","company","zipcode","remark","imageid,privacy"},"privacy=0",null,null,null,null>;}while<cursor.moveToNext<>>{sqlBackup.append<"insertinto"+DB_TABLENAME+"<name,mobilephone,officephone,familyphone,address,othercontact,email,position,company,zipcode,remark,imageid,privacy>">.append<"values<'">.append<cursor.getString<cursor.getColumnIndex<"name">>>.append<"','">.append<cursor.getString<cursor.getColumnIndex<"mobilephone">>>.append<"','">.append<cursor.getString<cursor.getColumnIndex<"officephone">>>.append<"','">.append<cursor.getString<cursor.getColumnIndex<"familyphone">>>.append<"','">.append<cursor.getString<cursor.getColumnIndex<"address">>>.append<"','">.append<cursor.getString<cursor.getColumnIndex<"othercontact">>>.append<"','">.append<cursor.getString<cursor.getColumnIndex<"email">>>.append<"','">.append<cursor.getString<cursor.getColumnIndex<"position">>>.append<"','">.append<cursor.getString<cursor.getColumnIndex<"company">>>.append<"','">.append<cursor.getString<cursor.getColumnIndex<"zipcode">>>.append<"','">.append<cursor.getString<cursor.getColumnIndex<"remark">>>.append<"',">.append<cursor.getInt<cursor.getColumnIndex<"imageid">>>.append<",">.append<cursor.getInt<cursor.getColumnIndex<"privacy">>>.append<">;">.append<"\n">;}saveDataToFile<sqlBackup.toString<>,privacy>;}restoreData<string>函數(shù)的實現(xiàn):載入備份文件,讀出插入字符串,寫到數(shù)據(jù)庫中,完成備份findFile<string>函數(shù)的實現(xiàn):判斷文件是否存在,能否備份MyDBHleper類:繼承于SQLiteOpenHelper,主要有倆個函數(shù),onCreate<>和onUpgrade<>onCreate<>函數(shù)主要用于數(shù)據(jù)庫中表的創(chuàng)建。onUpgrade<>函數(shù)主要用于數(shù)據(jù)庫的版本不對應,重新創(chuàng)建表。6.2.2Main<Activity>設(shè)計如圖6-3所示,顯示了Main<Activity>涉及的變量以及調(diào)用和重寫的函數(shù):圖6-3Main<Activity>onCreate<Bundle>為主函數(shù),創(chuàng)建ListView對象,將數(shù)據(jù)與adapter集合起來,顯示給用戶看,然后響應ListView的點擊事件,跳轉(zhuǎn)用戶詳細信息頁面。onActivityResult〔函數(shù)的實現(xiàn):此函數(shù)主要是判斷是從那些頁面跳轉(zhuǎn)到主頁面,并刷新主頁面onKeyDown<intKeyEvent>的函數(shù)實現(xiàn):響應點擊Menu按鈕時的事件,用于設(shè)置底部菜單是否可見loadBottomMenu<>函數(shù)的實現(xiàn):主菜單的點擊事件的響應,實現(xiàn)各種功能模塊getMenuAdapter<string[]>函數(shù)的實現(xiàn):將圖片和文字設(shè)置在一個集合中,組成一個菜單6.2.3AddNew<Activity>設(shè)計如圖6-4所示,AddNew<Activity>用到的變量以及函數(shù)圖6-4AddNew<Activity>onCreate〔函數(shù)的實現(xiàn):實現(xiàn)頭像的選擇,數(shù)據(jù)的填寫。loadImage<>函數(shù)實現(xiàn):使用gallery控件和imageswith實現(xiàn)頭像的加載和選擇ImageAdapter類的實現(xiàn)自定義頭像適配器publicViewmakeView<>{ ImageViewview=newImageView<this>; view.setBackgroundColor<0xff000000>; view.setScaleType<ScaleType.FIT_CENTER>; view.setLayoutParams<newImageSwitcher.LayoutParams<90,90>>; returnview; }initImageChooseDialog<>函數(shù)實現(xiàn):完成圖像的選擇對話框6.2.4UserDetail<Activity>設(shè)計函數(shù)基本同AddNew<Activity>,增加了修改按鈕的點擊事件和刪除按鈕的點擊事件。增加的函數(shù)有:loadUserData<>:獲得控件,為控件賦值setEditTextAble<>:把頁面中的控件可修改setColorToBlack<>設(shè)置顯示的字體顏色為黑色setColorToWhite<>設(shè)置顯示的字體顏色為白色setEditTextDisable<>把設(shè)置控件不可修改privatevoidmodify<>{數(shù)據(jù)更新函數(shù) delete<>數(shù)據(jù)刪除函數(shù)onCreateOptionsMenu<Menu>的實現(xiàn):通訊菜單的實現(xiàn),完成聯(lián)系人的打,發(fā)短信,發(fā)郵件功能6.2.5MainPrivacy<Activity>設(shè)計如圖6-5所示,MainPrivacy<Activity>涉及到的變量以及函數(shù)圖6-5MainPrivacy<Activity>類圖用到的函數(shù):onCreate<>;onActivityResult<>;onKeyDown<int,KeyEvent>;loadBottomMenu<>;loadMainMenuDialog<>;loadSearchLinearout<>;getMenuAdapter<String[],int[]>;onDestroy<>;函數(shù)與Main<Activity>的函數(shù)相同,不再贅述。7.系統(tǒng)測試7.1程序調(diào)試由于以前只學過Java,對Android的開發(fā)沒有接觸過,所以這課設(shè)計完全是在自學的基礎(chǔ)上進行的開發(fā),開發(fā)過程充滿了艱辛了喜悅,程序開發(fā)中遇到各種問題,如語法的錯誤,程序邏輯設(shè)計的錯誤。程序開發(fā)是一個循序漸進的過程。開發(fā)完一個功能,需要及時的測試,待功能測試通過后,方可以進行下一個功能的開發(fā),這樣可以保證程序的質(zhì)量。在程序開發(fā)中,使用了打印調(diào)試信息,debug調(diào)試和斷點調(diào)試等方法。7.2系統(tǒng)的測試7.2.1測試的意義及目的系統(tǒng)測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程,成功的測試是發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的錯誤的測試。測試的目的就是希望能發(fā)現(xiàn)潛在的各種錯誤和缺陷。應根據(jù)開發(fā)各階段的需求、設(shè)計等文檔或程序的內(nèi)部結(jié)構(gòu)精心設(shè)計測試用例,并利用這些實例來運行程序,以便發(fā)現(xiàn)錯誤。7.2.2測試步驟1.模塊測試這個測試步驟中是為了發(fā)現(xiàn)編碼和詳細設(shè)計的錯誤。2.系統(tǒng)測試這個測試步驟是為了發(fā)現(xiàn)軟件設(shè)計中的錯誤。3.驗收測試這個測試步驟是為了發(fā)現(xiàn)系統(tǒng)需求說明書中的錯誤。7.2.3測試的主要內(nèi)容為了保證測試的質(zhì)量,測試過程包括:代碼審查、單元測試、集成測試、確認測試以及系統(tǒng)測試。代碼審查代碼審查為了發(fā)現(xiàn)代碼中冗余的部分,不合理的部分。單元測試單元測試〔模塊測試是編寫的一小段代碼,用于檢驗被測代碼的一個很小的、很明確的功能是否正確。通常而言,一個單元測試是用于判斷某個特定條件〔或者場景下某個特定函數(shù)的行為。1.集成測試集成測試是在單元測試的基礎(chǔ)上,測試在將所有的軟件單元按照概要設(shè)計規(guī)格說明的要求組裝成模塊、子系統(tǒng)或系統(tǒng)的過程中各部分工作是否達到或?qū)崿F(xiàn)相應技術(shù)指標及要求的活動。也就是說,在集成測試之前,單元測試已經(jīng)完成,集成測試中所使用的對象是已經(jīng)經(jīng)過單元測試的軟件單元。如果不經(jīng)過單元測試,集成測試的效果將會受到很大影響,并且會大幅增加軟件單元代碼糾錯的代價。2.確認測試確認測試又稱有效性測試。有效性測試是在模擬的環(huán)境下,運用黑盒測試的方法,驗證被測軟件是否滿足需求規(guī)格說明書列出的需求。任務是驗證軟件的功能和性能及其他特性是否與需求一致。對軟件的功能和性能要求在軟件需求規(guī)格說明書中已經(jīng)明確規(guī)定,它包含的信息就是軟件確認測試的基礎(chǔ)。3.系統(tǒng)測試系統(tǒng)測試是針對整個產(chǎn)品系統(tǒng)進行的測試,目的是驗證系統(tǒng)是否滿足了需求規(guī)格的定義,找出與需求規(guī)格不符或與之矛盾的地方,從而提出更加完善的方案。〔1功能測試經(jīng)測試:該軟件系統(tǒng)的添加聯(lián)系人功能、查看聯(lián)系人、編輯聯(lián)系人、查找聯(lián)系人、撥打、發(fā)送短息、導入導出功能皆正常。軟件的質(zhì)量可以達到保證?!?健壯性測試經(jīng)測試:該軟件系統(tǒng)在異常情況下能正常運行的能力。如:直接退出,沒有點退出菜單,程序數(shù)據(jù)不會受到破壞?!?性能測試經(jīng)測試:該軟件系統(tǒng)處理事務的速度快捷。測試過程中運存占用平均為1.4MB左右。正常該軟件時,手機的耗電量并未明顯增加。〔4界面測試。經(jīng)測試:該軟件系統(tǒng)的易用性較強,可操作性強,界面視覺效果而等。7.3測試數(shù)據(jù)在系統(tǒng)運行時,由于系統(tǒng)數(shù)據(jù)庫沒有數(shù)據(jù),會在背景顯示"NoContacts",提示用戶添加數(shù)據(jù)。7.3.1添加模塊測試選擇菜單->添加,進入添加界面,輸入如下信息:職務職稱:學生單位:GDUT地址:XX:510006Email:163選擇頭像后點擊保存,保存成功!系統(tǒng)回到主界面,可以顯示添加的數(shù)據(jù)!圖7-1添加聯(lián)系人測試圖說明:測試編號測試輸入期待輸出實際輸出說明1聯(lián)系人信息聯(lián)系人主要信息主界面顯示聯(lián)系人主要信息添加模塊功能完成7.3.2查看編輯模塊測試在按照7.3.1添加好一定的聯(lián)系人信息后,在主界面打擊某個聯(lián)系人,則會進入查看、編輯修改模塊。通過滑動屏幕可以查看聯(lián)系人的詳細信息;單擊修改按鈕,則聯(lián)系人的信息框會變成可編輯模式,用戶能輸入修改信息,修改好后,可以打擊保存修改按鈕,則會保存用戶的修改,如輸入:然后單擊保存修改,用戶信息已改變!圖7-2修改聯(lián)系人信息測試圖若單擊刪除按鈕,則會彈出刪除確定對話框,提示用戶刪除確定。若單擊菜單,則會提示打或者發(fā)短信,若該聯(lián)系人有幾個號碼,則會提示選擇號碼:圖7-3打/發(fā)短信號碼選擇測試界面選中一個號碼,進入打或者發(fā)短信界面:圖7-4打/發(fā)短信測試界面說明:測試編號測試輸入期待輸出實際輸出說明2修改的聯(lián)系人信息修改后聯(lián)系人主要信息主界面顯示聯(lián)系人主要信息修改模塊功能完成3刪除按鈕提示用戶刪除,確定后刪除成功提示并刪除成功刪除模塊功能完成4進入聯(lián)系人詳細信息界面,選擇菜單打發(fā)短信按鈕若有多個號碼,提示選擇號碼,如無,則進入打或者發(fā)短信界面有多個號碼,提示選擇號碼,如無,則進入打或者發(fā)短信界
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度專業(yè)車庫租賃與物業(yè)管理合同
- 服裝批發(fā)市場垃圾清運合同
- 2025年度多人共同經(jīng)營網(wǎng)店借款及利潤分配合同
- 二零二五年度玉器珠寶市場拓展與區(qū)域代理合同
- 2025年度安全無憂型個人租房合同
- 2025年度企業(yè)節(jié)能減排改造補貼協(xié)議書
- 2025年度員工心理健康關(guān)懷上班協(xié)議合同全新版
- 2025年度文化場館設(shè)施維護勞務協(xié)議書
- 2025年度影視演員場記助理職業(yè)素養(yǎng)培訓聘用合同
- 2025年佳木斯職業(yè)學院單招職業(yè)技能測試題庫新版
- 弱電系統(tǒng)巡查記錄表(辦公樓)
- 預防接種人員崗位培訓習題(Ⅰ類培訓練習題庫共385題)
- 現(xiàn)場經(jīng)濟簽證單范本
- 《網(wǎng)店運營與管理》課件(完整版)
- 《跨境電商B2B操作實務》教學大綱
- 河口區(qū)自然資源
- 精益改善項目管理制度
- 2012數(shù)據(jù)結(jié)構(gòu)英文試卷A及答案
- 服裝購銷合同最新版
- 機翼結(jié)構(gòu)(課堂PPT)
- 二次回路施工驗收
評論
0/150
提交評論