android記事本設(shè)計(jì)與實(shí)現(xiàn)大學(xué)本科畢業(yè)論文_第1頁
android記事本設(shè)計(jì)與實(shí)現(xiàn)大學(xué)本科畢業(yè)論文_第2頁
android記事本設(shè)計(jì)與實(shí)現(xiàn)大學(xué)本科畢業(yè)論文_第3頁
android記事本設(shè)計(jì)與實(shí)現(xiàn)大學(xué)本科畢業(yè)論文_第4頁
android記事本設(shè)計(jì)與實(shí)現(xiàn)大學(xué)本科畢業(yè)論文_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

PAGE1摘要手機(jī)記事本,是一項(xiàng)新興且有廣闊市場和應(yīng)用價(jià)值的業(yè)務(wù),它運(yùn)行于android智能手機(jī)上,通過手機(jī)的顯示終端與手機(jī)內(nèi)數(shù)據(jù)庫的通訊,提供給客戶各種與日程相關(guān)的信息服務(wù),方便了用戶的日常生活安排。本論文主要闡述了手機(jī)日程表服務(wù)系統(tǒng)的需求分析、功能模塊的設(shè)計(jì)、系統(tǒng)流程和界面設(shè)計(jì),并對系統(tǒng)實(shí)現(xiàn)過程中所用到的關(guān)鍵技術(shù)進(jìn)行了介紹。本文所實(shí)現(xiàn)的日程表是基于Android平臺開發(fā)的,主要使用人群定位為在校大學(xué)生,主要可以對上課的時(shí)間地點(diǎn)進(jìn)行輸入,然后在上課之前對用戶進(jìn)行提醒,從而滿足了在校大學(xué)生對基本日常生活的安排和記錄的需求。關(guān)鍵詞:Android;手機(jī)記事本;ABSTRACTMobileschedule,andthereisanemergingmarketandthevalueofbroadbusiness,whichbenefitsreal-timemonitoringalarmtechnology,throughthecopperphone'sdisplayterminalwiththephoneinthedatabaseshallbeavailabletocustomerswithavarietyofrelatedinformationservicesschedulefacilitatetheuser'sdailyroutine.Thispaperdescribestheneedforphoneserviceschedulesystemanalysis,design,systemprocessesandinterfacedesignfunctionmodules,andsystemstoachievethekeytechnologiesusedintheprocesswereintroduced.Inthispaper,thescheduleisimplementedbasedontheAndroidplatform,themainuseofthecrowdstandingforcollegestudents,themainplaceofclasstimecanbeentered,andthenbeforetheclasstoremindtheusertomeetthebasicdailycollegestudentslivingarrangementsandrecordingneeds.Keywords:Android;schedule目錄TOC\o"1-3"\h\u153681引言 1317611.1手機(jī)記事本的產(chǎn)生 1262461.2手機(jī)記事本的發(fā)展現(xiàn)狀 184242Android及相關(guān)技術(shù)簡介 3225762.1Android簡介 3174092.2相關(guān)編程語言 6155502.2.1xml簡介 626632.2.2java簡介 7298243需求設(shè)計(jì) 933083.1系統(tǒng)需求分析 940213.1.1功能分析 9293463.1.2性能分析 9229594系統(tǒng)設(shè)計(jì) 10163744.1系統(tǒng)設(shè)計(jì)目標(biāo) 1066634.2系統(tǒng)功能模塊設(shè)計(jì) 1019384.3用戶界面設(shè)計(jì) 1193184.4數(shù)據(jù)庫設(shè)計(jì) 12213735系統(tǒng)的實(shí)現(xiàn) 14214285.1主要界面實(shí)現(xiàn) 1441115.2數(shù)據(jù)庫功能的實(shí)現(xiàn) 17132296總結(jié)與致謝 2220404參考文獻(xiàn) 231引言1.1手機(jī)記事本的產(chǎn)生隨著android手機(jī)售量的大量提升,android應(yīng)用也變得十分火熱。在龐大的用戶群體中,人們已經(jīng)習(xí)慣了把需要處理的事物記錄在手機(jī)上。雖然用戶群體龐大,但是個(gè)人的業(yè)務(wù)需求也不完全相同,即使大的廠商對android的日歷進(jìn)行了修改,但并不能滿足部分用戶的特殊需求。這時(shí)能夠針對某一或者某些用戶群體的定制記事本就十分的必要,這次所開發(fā)的記事本主要針對的用戶群體是在校大學(xué)生。由于手機(jī)又存在著諸多的特性,所以與紙質(zhì)的記事本相比,手機(jī)記事本存在著諸多的優(yōu)點(diǎn)和特性。手機(jī)記事本的優(yōu)點(diǎn):◆移動(dòng)性和便攜性,手機(jī)用戶可以自由的移動(dòng)?!艨芍貜?fù)擦寫,多次使用◆具有一定的隱私性?!艨蓪?shí)時(shí)提醒,這一點(diǎn)在事務(wù)越多的時(shí)候越是能體現(xiàn)出優(yōu)勢。1.2手機(jī)記事本的發(fā)展現(xiàn)狀隨著計(jì)算機(jī)和手機(jī)的飛速發(fā)展,通過電子設(shè)備來完成更多的事情將是一種趨勢。在效率越來越被重視的當(dāng)今社會,及時(shí)妥善的的處理事務(wù)的前提就是準(zhǔn)確地記錄事務(wù)。使用記事本的意義不僅僅是及時(shí)處理事務(wù),也是對各種事務(wù)有著認(rèn)真負(fù)責(zé)的態(tài)度的體現(xiàn)。手機(jī)記事本的便捷性是有目共睹的。隨著業(yè)務(wù)的擴(kuò)展,其作用、形式、工作方式必然也會有極大地改變和發(fā)展,所以記事本的發(fā)展現(xiàn)狀也是十分值得我們?nèi)リP(guān)注的。下面就簡要闡述一下記事本的發(fā)展現(xiàn)狀:◆個(gè)性化隨著社會的發(fā)展,不同人群對記事本的需求必然不會相同,不同需求的人群都希望從記事本服務(wù)中得到的不僅僅是方便,還有效率和效益。學(xué)生可能希望把課程表記錄在手機(jī)上,白領(lǐng)可能希望把領(lǐng)導(dǎo)交代的事務(wù)處理好,女生需要記錄經(jīng)期,而個(gè)性化的記事本可能就是一個(gè)十分方便的解決方案,人們可以下載部分或全部的功能,既能滿足自己的需求,又能避免了手機(jī)存儲空間的浪費(fèi)?!舯C芑謾C(jī)記事本作為一項(xiàng)提高效率的應(yīng)用,對人們生活的影響是積極的。一方面,它可以提高人們的效率。另一方面,記事本本身的效率也是應(yīng)該值得重視的,例如大學(xué)生的課程表并不是相同的,如果單純的用人工錄入的話也是一件十分耗費(fèi)體力和時(shí)間的事情,這時(shí)校園網(wǎng)的課程表如果能提供標(biāo)準(zhǔn)化的統(tǒng)一接口,我們的應(yīng)用就能變得十分的方便快捷,只需要簡單的幾步就能把校園網(wǎng)的課程表同步到手機(jī)應(yīng)用。再比如公司如果統(tǒng)一布置任務(wù),只需要在會議結(jié)束后對通過各種通信方式把任務(wù)布置給各個(gè)職員,甚至是使用NFC技術(shù),只需要手機(jī)輕輕一碰就能達(dá)到目的,這時(shí)統(tǒng)一的標(biāo)準(zhǔn)化的接口就變得十分的重要?!舯C芑謾C(jī)作為隨身攜帶的便攜設(shè)備,存在著巨大的丟失的風(fēng)險(xiǎn),記錄著諸多信息的手機(jī)一旦丟失,損失將是巨大的,如果落在有心的人手中,必然會有帶來不必要的損失。所以對于信息的保密必然是十分重要的。但在保密的同時(shí)又保證用戶的使用的便捷也是一個(gè)難題。◆云端化云端化是將來計(jì)算機(jī)和手機(jī)領(lǐng)域的大熱門,云端化有著諸多的優(yōu)點(diǎn),但是又有其局限性,云端化的首要條件是網(wǎng)絡(luò)接入速度的大幅度提升,并且能夠滿足人們對于數(shù)據(jù)同步的需求。云端化同樣也是保密的一種解決方法,又是能夠暴露統(tǒng)一的接口的一種解決方案,所以云端化必然是將來的重要的趨勢,即使我們換了手機(jī),換了電腦,還是能夠獲取到自己既定的事務(wù)或者是其他數(shù)據(jù)。2Android及相關(guān)技術(shù)簡介Android是Google于2007年11月推出的一款全新的智能手機(jī)平臺,由操作系統(tǒng)、中間件、用戶界面和應(yīng)用程序組成。由于Android平臺的諸多優(yōu)點(diǎn)和特性,使其在短短的幾年中飛速的發(fā)展。隨著用戶群體的增加,使得Android應(yīng)用開發(fā)也成了學(xué)習(xí)的熱門。2.1Android簡介1)Android平臺優(yōu)點(diǎn)Android一詞的本義指“機(jī)器人”,同時(shí)也是一款布的基于Linux平臺的開源手機(jī)操作系統(tǒng)的名稱,該平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成。作為一款手機(jī)操作系統(tǒng),其有著如下的諸多優(yōu)點(diǎn):◆平臺的開放性允許任何廠商加入,使其擁有更多的開發(fā)者,新的應(yīng)用還有創(chuàng)意可以不斷的出現(xiàn)?!魯[脫了運(yùn)營商的束縛,讓手機(jī)更加貼近互聯(lián)網(wǎng)。Android應(yīng)用程序都是基于Java開發(fā)的,Java具有一次編寫、到處運(yùn)行的跨平臺性。實(shí)現(xiàn)了能夠在所有的Android設(shè)備中運(yùn)行,真正做到了硬件無關(guān)性,降低了開發(fā)者的負(fù)擔(dān)?!籼峁┝藰?biāo)準(zhǔn)的API和SDK開發(fā)包,手機(jī)廠商可以根據(jù)需要自行開發(fā)或者使用已有的程序,從而打造出富有特色的Android平臺。2)Android平臺的特征應(yīng)用框架:用于開發(fā)可重用、可替代的組件。Linuxkernel:Android是運(yùn)行于Linuxkernel之上,但并不是GNU/Linux。因?yàn)樵谝话鉍NU/Linux里支持的功能,Android大都沒有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以Bionic取代Glibc、以Skia取代Cairo、再以opencore取代FFmpeg等等。Android為了達(dá)到商業(yè)應(yīng)用,必須移除被GNUGPL授權(quán)證所約束的部份,例如Android將驅(qū)動(dòng)程序移到Userspace,使得Linuxdriver與Linuxkernel徹底分開。Bionic/Libc/Kernel/并非標(biāo)準(zhǔn)的Kernelheaderfiles。Android的Kernelheader是利用工具由LinuxKernelheader所產(chǎn)生的,這樣做是為了保留常數(shù)、數(shù)據(jù)結(jié)構(gòu)與宏。優(yōu)化的圖形:Android提供了優(yōu)化過的圖形系統(tǒng),該系統(tǒng)由一個(gè)自定義的2D圖形庫和一個(gè)遵循OpenGLES1.0標(biāo)準(zhǔn)(硬件加速)的3D圖形庫組成。SQLite數(shù)據(jù)庫:SQLite數(shù)據(jù)庫是Android自帶的一個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)庫,支持SQL語句,是一個(gè)輕量級的嵌入式數(shù)據(jù)庫。媒體功能:支持各種通用的音視頻和靜態(tài)圖像格式。硬件支持功能:支持相機(jī)、GPS、導(dǎo)航和感應(yīng)加速器等各類硬件。強(qiáng)大的開發(fā)環(huán)境:包括設(shè)備模擬器,調(diào)試工具,內(nèi)存和性能檢測工具,以及EclipseIDE的開發(fā)插件。3)Android平臺的體系架構(gòu)Android不僅是一個(gè)操作系統(tǒng),更是一個(gè)開源的體系架構(gòu)。Android軟件平臺從上到下主要由五個(gè)部分構(gòu)成:應(yīng)用程序、應(yīng)用程序框架、程序庫、Android運(yùn)行庫以及Linux內(nèi)核?!魬?yīng)用程序(Application)Android的應(yīng)用程序通常涉及用戶界面和用戶交互。Android本身提供了桌面(Home)、聯(lián)系人(Contact)、電話(Phone)和瀏覽器(Browsers)等眾多的核心應(yīng)用。做為分層結(jié)構(gòu)的最上層是各種應(yīng)用軟件,包括通話程序,短信程序等,應(yīng)用軟件則由各公司自行開發(fā),以Java作為編寫程序的一部分。不存在任何以往阻礙移動(dòng)產(chǎn)業(yè)創(chuàng)新的專有權(quán)障礙,號稱是首個(gè)為移動(dòng)終端打造的真正開放和完整的移動(dòng)軟件。同時(shí)開發(fā)者可以使用應(yīng)用程序框架層的API實(shí)現(xiàn)自己的程序,這也是Android開源優(yōu)勢的體現(xiàn)?!魬?yīng)用程序框架(ApplicationFramework)Android應(yīng)用程序的開發(fā)基于程序框架和組件,開發(fā)人員擁有同核心應(yīng)用程序一樣的API訪問權(quán)限。應(yīng)用程序后面是一系列的服務(wù)和系統(tǒng),其中包括:視圖(Views)一構(gòu)造應(yīng)用程序的視圖部分,包括列表(Lists)、文本框(Textboxes)、按鈕(Buttons)等。內(nèi)容提供器(ContentProviders):提供一種實(shí)現(xiàn)數(shù)據(jù)互訪和共享的機(jī)制。資源管理器(ResourcesManager):負(fù)責(zé)管理非代碼的訪問,如本地字符串、圖片資源及涉及布局的XML文件。通知管理器(NotificationManager):用于將提示信息顯示在狀態(tài)欄上。例如,當(dāng)有短信的時(shí)候,在狀態(tài)欄上顯示有新信息。活動(dòng)管理器(ActivityManager):用于管理應(yīng)用程序的生命周期,并提供應(yīng)用頁面退出的機(jī)制。通過這套應(yīng)用框架,各種服務(wù)和組件可以被用戶的應(yīng)用重復(fù)利用。4)Android應(yīng)用程序構(gòu)成對于一個(gè)Android應(yīng)用程序來說,一般由以下四種組件構(gòu)造而成:◆ActivityActivity是最基本的Android應(yīng)用程序組件。在應(yīng)用程序中,一個(gè)Activity通常就是一個(gè)單獨(dú)的屏幕。每一個(gè)Activity都被實(shí)現(xiàn)為一個(gè)獨(dú)立的類,并繼承基類Activty?!鬊roadcastIntentReceiver當(dāng)需要對一個(gè)外部事件(如當(dāng)電話呼入)做出響應(yīng)時(shí),可以使用目的接收器(IntentReceiveO。目的接收器并不顯示IJI界面,當(dāng)外部事件發(fā)生時(shí),使用NotificationManager通知用戶?!鬝erviceService是具有長生命周期且沒有用戶界面的一段程序,它需要通過某一個(gè)ActMty或者Context對象來調(diào)用。Service的生命周期方法比Activity少一些,只有onCreate、onStart和onDestory。有兩種方式用來啟動(dòng)Service,它們的不同之處在于對Service生命周期的影響不一樣?!鬋ontentProvider一個(gè)應(yīng)用程序可以將它的數(shù)據(jù)保存到文件、SQL數(shù)據(jù)庫,甚至是任何有效的存儲設(shè)備中。當(dāng)需要將應(yīng)用數(shù)據(jù)與其它的應(yīng)用共享時(shí),使用ContentProvider來完成。ContentProvider類實(shí)現(xiàn)了一組標(biāo)準(zhǔn)的方法,從而能夠讓其它的應(yīng)用保存或讀取此ContentProvider處理的各種數(shù)據(jù)類型。5)Android應(yīng)用程序的開發(fā)環(huán)境Android通常采用Eclipse作為應(yīng)用程序的開發(fā)環(huán)境。Eclipse是基于Java的,開放源代碼的可擴(kuò)展開發(fā)平臺。就其本身而言,它只是一個(gè)框架和一個(gè)服務(wù),所有開發(fā)工具都是用插件的形式提供的,通過插件組件構(gòu)建開發(fā)環(huán)境,這種設(shè)計(jì)使得Eclipse具有開放式可擴(kuò)充的結(jié)構(gòu)。Eclipse軟件可以集成不同的軟件工具開發(fā)供應(yīng)商的產(chǎn)品,任何開發(fā)工具廠商都可以將他們的開發(fā)工具或組件加入到Eclipse平臺,用戶可以通過相同的接口使用不同的工具。此外,Eclipse不僅支持團(tuán)隊(duì)協(xié)同開發(fā),還提供了詳細(xì)的幫助文檔以及對許多外部工具的支持。Android為Eclipse定制了一個(gè)插件,即AndroidDevelopmentTools(ADT),目的是為用戶提供一個(gè)強(qiáng)大的綜合環(huán)境用于開發(fā)Android應(yīng)用程序。ADT擴(kuò)展了Eclipse的功能,可以讓用戶快速地建立Android項(xiàng)目,創(chuàng)建應(yīng)用程序界面,在基于Android框架API的基礎(chǔ)上添加組件,以及用SDK工具調(diào)試應(yīng)用程序。6)android內(nèi)置數(shù)據(jù)庫簡介Android內(nèi)置數(shù)據(jù)庫是SQLite,SQLite是一款輕型的數(shù)據(jù)庫,是遵守ACID的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它的設(shè)計(jì)目標(biāo)是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統(tǒng),同時(shí)能夠跟很多程序語言相結(jié)合,比如C#、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開源世界著名的數(shù)據(jù)庫管理系統(tǒng)來講,它的處理速度比他們都快。SQLite第一個(gè)Alpha版本誕生于2000年5月。至今已經(jīng)有14個(gè)年頭,SQLite也迎來了一個(gè)版本SQLite3已經(jīng)發(fā)布。正是由于SQLite的諸多特性,所以他更適用于移動(dòng)平臺2.2相關(guān)編程語言 Android主要用到的編程語言有兩個(gè),一個(gè)是xml用于頁面設(shè)計(jì),一個(gè)是java用于功能實(shí)現(xiàn)。下面對兩種語言做簡要介紹2.2.1xml簡介xml即可擴(kuò)展標(biāo)記語言。可擴(kuò)展標(biāo)記語言,標(biāo)準(zhǔn)通用標(biāo)記語言的子集,一種用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語言。它可以用來標(biāo)記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對自己的標(biāo)記語言進(jìn)行定義的源語言。它非常適合萬維網(wǎng)傳輸,提供統(tǒng)一的方法來描述和交換獨(dú)立于應(yīng)用程序或供應(yīng)商的結(jié)構(gòu)化數(shù)據(jù)。XML能夠更精確地聲明內(nèi)容,方便跨越多種平臺的更有意義的搜索結(jié)果。它提供了一種描述結(jié)構(gòu)數(shù)據(jù)的格式,簡化了網(wǎng)絡(luò)中數(shù)據(jù)交換和表示,使得代碼、數(shù)據(jù)和表示分離,并作為數(shù)據(jù)交換的標(biāo)準(zhǔn)格式,因此它常被稱為智能數(shù)據(jù)文檔。為了使得標(biāo)準(zhǔn)通用標(biāo)記語言顯得用戶友好,它重新定義了標(biāo)準(zhǔn)通用標(biāo)記語言的一些內(nèi)部值和參數(shù),去掉了大量的很少用到的功能,這些繁雜的功能使得標(biāo)準(zhǔn)通用標(biāo)記語言在設(shè)計(jì)網(wǎng)站時(shí)顯得復(fù)雜化。它保留了標(biāo)準(zhǔn)通用標(biāo)記語言的結(jié)構(gòu)化功能,這樣就使得網(wǎng)站設(shè)計(jì)者可以定義自己的文檔類型,它同時(shí)也推出一種新型文檔類型,使得開發(fā)者也可以不必定義文檔類型。XML的簡單使其易于在任何應(yīng)用程序中讀寫數(shù)據(jù),這使XML很快成為數(shù)據(jù)交換的唯一公共語言,雖然不同的應(yīng)用軟件也支持其它的數(shù)據(jù)交換格式,但不久之后他們都將支持XML,那就意味著程序可以更容易的與Windows,MacOS,Linux以及其他平臺下產(chǎn)生的信息結(jié)合,然后可以很容易加載XML數(shù)據(jù)到程序中并分析它,并以XML格式輸出結(jié)果。2.2.2java簡介Java是一種可以撰寫跨平臺應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,是由SunMicrosystems公司于1995年5月推出的Java程序設(shè)計(jì)語言和Java平臺(即JavaEE,JavaME,JavaSE)的總稱。Java自面世后就非常流行,發(fā)展迅速,對C++語言形成了有力沖擊。Java技術(shù)具有卓越的通用性、高效性、平臺移植性和安全性,廣泛應(yīng)用于個(gè)人PC、數(shù)據(jù)中心、游戲控制臺、科學(xué)超級計(jì)算機(jī)、移動(dòng)電話和互聯(lián)網(wǎng),同時(shí)擁有全球最大的開發(fā)者專業(yè)社群。在全球云計(jì)算和移動(dòng)互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下,Java更具備了顯著優(yōu)勢和廣闊前景。java主要特性:◆Java語言是強(qiáng)制面向?qū)ο蟮?。Java語言提供類、接口和繼承等原語,為了簡單起見,只支持類之間的單繼承,但支持接口之間的多繼承,并支持類與接口之間的實(shí)現(xiàn)機(jī)制(關(guān)鍵字為implements)。Java語言全面支持動(dòng)態(tài)綁定,而C++語言只對虛函數(shù)使用動(dòng)態(tài)綁定。總之,Java語言是一個(gè)純的面向?qū)ο蟪绦蛟O(shè)計(jì)語言?!鬔ava語言是健壯的。Java的強(qiáng)類型機(jī)制、異常處理、垃圾的自動(dòng)收集等是Java程序健壯性的重要保證。對指針的丟棄是Java的明智選擇。Java的安全檢查機(jī)制使得Java更具健壯性?!鬔ava語言是可移植的。這種可移植性來源于體系結(jié)構(gòu)中立性,另外,Java還嚴(yán)格規(guī)定了各個(gè)基本數(shù)據(jù)類型的長度。Java系統(tǒng)本身也具有很強(qiáng)的可移植性,Java編譯器是用Java實(shí)現(xiàn)的,Java的運(yùn)行環(huán)境是用ANSIC實(shí)現(xiàn)的?!鬔ava語言是原生支持多線程的。在Java語言中,線程是一種特殊的對象,它必須由Thread類或其子(孫)類來創(chuàng)建。通常有兩種方法來創(chuàng)建線程:其一,使用型構(gòu)為Thread(Runnable)的構(gòu)造子將一個(gè)實(shí)現(xiàn)了Runnable接口的對象包裝成一個(gè)線程,其二,從Thread類派生出子類并重寫run方法,使用該子類創(chuàng)建的對象即為線程。值得注意的是Thread類已經(jīng)實(shí)現(xiàn)了Runnable接口,因此,任何一個(gè)線程均有它的run方法,而run方法中包含了線程所要運(yùn)行的代碼。線程的活動(dòng)由一組方法來控制。Java語言支持多個(gè)線程的同時(shí)執(zhí)行,并提供多線程之間的同步機(jī)制。3需求設(shè)計(jì)在系統(tǒng)需求分析階段,搞清楚軟件“做什么”的問題,形成目標(biāo)系統(tǒng)的邏輯模型。然后所要做的就是要把軟件“做什么”的邏輯模型變換為“怎么做”的物理模型。即從做什么到怎么做的過程。本章主要闡述了手機(jī)記事本的需求分析、功能模塊的設(shè)計(jì)、系統(tǒng)流程和界面設(shè)計(jì),并對系統(tǒng)實(shí)現(xiàn)過程中所用到的關(guān)鍵方法進(jìn)行了介紹。3.1系統(tǒng)需求分析3.1.1功能分析android手機(jī)記事本的使用人群定位為在校大學(xué)生,對于在校大學(xué)生而言最主要的還是上課。并且與其他事務(wù)相比較而言,上課也是大學(xué)生的重中之重,所以記事本的的主要功能是以圖形、文字的形式為用戶提供以課程為中心的服務(wù),并提供友好、方便、快捷的操作界面。其功能需求主要包括:◆事件錄入:用戶可以通過點(diǎn)擊按鈕方便快捷地錄入信息?!羰录榭矗菏录且宰钪庇^最主要的信息顯示給用戶的,如果需要查看詳細(xì)的信息內(nèi)容用戶可以點(diǎn)擊每個(gè)事件,進(jìn)行詳細(xì)信息的查看?!羰录薷模簩τ谝呀?jīng)錄入的信息進(jìn)行修改。◆設(shè)置信息提醒:每條信息可以單獨(dú)地設(shè)置提醒方式。3.1.2性能分析記事本的最重要功能就是對各種事務(wù)的記錄,在性能上也就必須保證應(yīng)用程序在任何時(shí)刻都能夠精確處理數(shù)據(jù)如保持?jǐn)?shù)據(jù)的原子性、持久性和一致性等。又由本應(yīng)用程序是為android平臺開發(fā)的,且android手機(jī)的硬件特性,和性能良莠不齊。所以應(yīng)用程序又要有更好的硬件兼容性,例如在3.5英寸屏幕上和在5.0英寸屏幕上要有一致的效果。4系統(tǒng)設(shè)計(jì)4.1系統(tǒng)設(shè)計(jì)目標(biāo)結(jié)合需求分析和android平臺特點(diǎn),系統(tǒng)設(shè)計(jì)的目標(biāo)也就不難得出了我們需要采用java和xml語言實(shí)現(xiàn)一個(gè)運(yùn)行于android平臺的記事本程序。因?yàn)閍ndroid平臺之下有著數(shù)不勝數(shù)的各種機(jī)型,所以首先在性能上,我們的程序要能在多種屏幕大小的不同款式的手機(jī)上正常運(yùn)行,且運(yùn)行效果一致。另外還需要保證系統(tǒng)在數(shù)據(jù)處理方面的各種能力和性能,即保證數(shù)據(jù)的原子性、持久性和一致性。在功能上,數(shù)據(jù)庫滿足功能分析中的增、刪、改、查四條即可。4.2系統(tǒng)功能模塊設(shè)計(jì)本系統(tǒng)旨在建立Android手機(jī)的記事本服務(wù),主要有如下幾個(gè)核心功能各個(gè)模塊的主要功能描述如下:◆常用課程模塊 主要是周一至周五每天的課程的錄入,課程的方式是以河北農(nóng)業(yè)大學(xué)的課程安排方式進(jìn)行的,每天上午,下午,晚上各兩節(jié)大課,沒接大課分為兩節(jié)小課,課程錄入模塊是以圖表的形式呈現(xiàn)給用戶的,用戶可以通過點(diǎn)擊每個(gè)時(shí)間段對應(yīng)的按鈕來添加課程,這種最簡單直觀的形式容易讓用戶使用?!舨怀S谜n程模塊 對于不常用課程來說就是周六日的課程,在課程安排當(dāng)中,這一部分是不經(jīng)常用到的,又由于手持設(shè)備屏幕大小的限制,所以把這一模塊拿出來單獨(dú)設(shè)計(jì)。這一部分的課程是以列表的形式出現(xiàn)的,由于其用處最少,所以并不需要對復(fù)雜的時(shí)間進(jìn)行可視化?!粲?jì)劃模塊 同樣地計(jì)劃模塊也是以列表形式出現(xiàn)的。計(jì)劃模塊并不針對某一天或者某幾天,設(shè)置計(jì)劃模塊的意義在于,對于課程之外的事務(wù)進(jìn)行安排,這樣的安排是比較合理的,也符合我把學(xué)習(xí)和其他事務(wù)分開的設(shè)計(jì)初衷。因?yàn)閷W(xué)生主要的任務(wù)是學(xué)習(xí),隨然計(jì)劃也是重點(diǎn)之一,但是最主要的內(nèi)容還是課程模塊當(dāng)中的。◆數(shù)據(jù)庫模塊 數(shù)據(jù)庫模塊是所有業(yè)務(wù)邏輯的核心,數(shù)據(jù)庫是所有事務(wù)存儲的場所。這一部分主要是所有的數(shù)據(jù)庫業(yè)務(wù),包括數(shù)據(jù)庫的讀寫,查詢,修改等雨霧邏輯。數(shù)據(jù)庫模塊作為整個(gè)核心,是所有業(yè)務(wù)邏輯的重中之重。4.3用戶界面設(shè)計(jì)在Android平臺下開發(fā)應(yīng)用軟件,最重要的是布局問題。本系統(tǒng)設(shè)計(jì)了多個(gè)主要界面來實(shí)現(xiàn)與用戶的交互。并且界面的設(shè)計(jì)盡可能的符合手持設(shè)備的單手操作原則。頁面的流程圖如圖4-1所示幫助頁面幫助頁面事務(wù)詳情周末課程起始頁面課程頁面計(jì)劃界面圖4-1頁面流程圖◆起始界面主界面是用戶首先看到的界面,此界面主要有一句英語文本,還有就是兩個(gè)按鈕,這兩個(gè)按鈕上的文字,已經(jīng)能夠提示用戶其功能,十分簡單易用?!羧粘绦畔⒅鹘缑?整個(gè)日程信息界面又無縫地分成三個(gè)獨(dú)立的頁面,可以通過手指的滑動(dòng)來改變需要顯示的頁面。這個(gè)界面主要是實(shí)現(xiàn)了手指滑動(dòng)左右翻頁的功能,這樣做能最大的符合人們?nèi)粘2僮魇謾C(jī)的習(xí)慣,也是解決手持設(shè)備單手操作的最好方式之一。子頁面并沒有單獨(dú)存在,而是動(dòng)態(tài)地嵌入在主頁面之中,第二個(gè)和第三個(gè)主頁面類似于清單條目,由于這種信息可能會存儲很多,所以我們給他加上了滾動(dòng)條,通過單指的上下滑動(dòng)來實(shí)現(xiàn)翻頁功能,在這里這樣做也是盡最大努力獲得做好的用戶體驗(yàn),◆事務(wù)詳情界面 這個(gè)界面是日程的詳細(xì)信息,詳細(xì)信息包括多個(gè)條目。這里在顯示上我遇到一個(gè)矛盾的地方:一個(gè)是我們的閱讀習(xí)慣是從上往下,所以重要的信息應(yīng)該在上面,但是為了便于查看和修改這幾個(gè)主要信息條目,我們應(yīng)該把它安排在最下面,這里出于閱讀體驗(yàn)的考慮,犧牲了操作體驗(yàn)。4.4數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)庫設(shè)計(jì)是項(xiàng)目開發(fā)中非常重要的一個(gè)關(guān)鍵環(huán)節(jié),如果設(shè)計(jì)不好,在后來的系統(tǒng)變更和功能擴(kuò)充時(shí),將會遇到非常大的困難。用戶的需求具體體現(xiàn)在各種信息的記錄、刪除、更新和查詢。這就要求數(shù)據(jù)庫能夠滿足各種信息的輸入和輸出。表4-1表功能說明根據(jù)需求分析,需要將用戶錄入的日程及課程信息存儲到到數(shù)據(jù)庫中,便于用戶以后查看。相應(yīng)數(shù)據(jù)表主要有兩個(gè)如表4-1。表4-1表功能說明兩個(gè)不同功能的表分別存儲了不同的表內(nèi)容,具體內(nèi)容分別展示表4-2Tb_schedule表內(nèi)容表4-2Tb_schedule表內(nèi)容表4-3Tb_plan表內(nèi)容表4-3Tb_plan表內(nèi)容5系統(tǒng)的實(shí)現(xiàn)結(jié)合系統(tǒng)設(shè)計(jì)最后對整個(gè)系統(tǒng)進(jìn)行實(shí)現(xiàn),這一階段的目的就是通過代碼實(shí)現(xiàn)系統(tǒng)設(shè)計(jì)中的所有的設(shè)計(jì)。5.1主要界面實(shí)現(xiàn)Android平臺中,Android四大基本組件分別是Activity,Service服務(wù),ContentProvider內(nèi)容提供者,BroadcastReceiver廣播接收器。要實(shí)現(xiàn)程序的可視,Activity是必不可少的,實(shí)現(xiàn)Activity首先要對其有一定的了解。Activity生命周期如圖所示。圖5-1Activity生命周期主要的頁面實(shí)現(xiàn)是模仿騰訊qq的滑窗實(shí)現(xiàn)的,這種滑窗的實(shí)現(xiàn)方式是使用的FragmentActivity和ViewPager兩個(gè)結(jié)合來實(shí)現(xiàn)的,使用ViewPager首先需要引入android-support-v4.jar這個(gè)jar包。這種實(shí)現(xiàn)方式類似于往圓柱體上貼照片,然后通過轉(zhuǎn)動(dòng)圓柱體來實(shí)現(xiàn)頁面的改變。這里ViewPager碼上我們要先實(shí)現(xiàn)圓柱體,再實(shí)現(xiàn)Fragment,最后再把Fragment貼到ViewPager上。主要的代碼實(shí)現(xiàn)如下privatevoidInitViewPager(){mPager=(ViewPager)findViewById(R.id.vPager);fragmentsList=newArrayList<Fragment>();Fragment1fmpro=newFragment1();Fragment2fmweekend=newFragment2();Fragment3fmplan=newFragment3();fragmentsList.add(fmpro);fragmentsList.add(fmweekend);fragmentsList.add(fmplan);mPager.setAdapter(newMyFragmentPagerAdapter(getSupportFragmentManager(),fragmentsList));mPager.setCurrentItem(0);mPager.setOnPageChangeListener(newMyOnPageChangeListener());}這段代碼就實(shí)現(xiàn)了所謂的往圓柱體上貼照片的過程。另外最后幾行還為ViewPager添加上了監(jiān)聽器,實(shí)現(xiàn)滑動(dòng)時(shí)頁面的改變,只有添加上了OnPageChangeListener監(jiān)聽器菜能實(shí)現(xiàn)頁面的滑動(dòng)效果,這里代碼就不再貼了,其他的頁面實(shí)現(xiàn)效果簡單,都是先通過編寫xml文件實(shí)現(xiàn)頁面,setContentView()方法實(shí)現(xiàn)最終的頁面效果。實(shí)現(xiàn)效果圖如圖5-2,看圖可以知道,我把具體的事務(wù)進(jìn)行了一個(gè)簡單的分類和規(guī)劃,分為了日程、周末和計(jì)劃。在日程其實(shí)就是一個(gè)課程表,具體分成了五天,并且每天都分成了幾個(gè)部分,這幾個(gè)部分的劃分是根據(jù)我們農(nóng)大的排課方式劃分來的。也就是周一至周五每天上午、下午和晚上各有兩個(gè)大客,每節(jié)大課又有兩節(jié)小課組成。因?yàn)樵谥苣┪覀円泊嬖谏贁?shù)的排課情況,所以為周末也安排了相應(yīng)的課程計(jì)劃,這部分課很少,如果以圖表的形式出現(xiàn)的話,會顯得十分的空洞,并不能方便我們的查閱,所以這里專門弄了一個(gè)listview,當(dāng)有課程的時(shí)候我們就進(jìn)行添加,當(dāng)沒有內(nèi)容的時(shí)候,listview為空。最后一個(gè)是計(jì)劃列表,同樣也是通過listview實(shí)現(xiàn)的。最后在易用性上,通過FragmentActivity和ViewPager實(shí)現(xiàn)了頁面的滑動(dòng)切換,也達(dá)到了方便人們單手操作的目的。圖5-2程序主界面實(shí)現(xiàn):查看課程詳細(xì)信息:在顯示效果中,每個(gè)課程條目的內(nèi)容只是顯示的相關(guān)課程的名稱,并且每個(gè)課程的條目都是一個(gè)按鈕。點(diǎn)擊每個(gè)課程條目,可以查看每個(gè)課程的詳細(xì)信息,其中詳細(xì)信息包括課程名稱,上課地點(diǎn),時(shí)間,提醒時(shí)間,是否啟動(dòng)提醒,震動(dòng)提醒,鈴聲提醒,其中上課名稱是需要用戶自行輸入的,上課地點(diǎn)也是用戶自行輸入的,在時(shí)間一欄中,時(shí)間是自動(dòng)填充的,因?yàn)樯险n的地點(diǎn)和課程名稱可能會不同,但是上課的時(shí)間是相對固定的,所以在這里上課的時(shí)間由系統(tǒng)自動(dòng)給出。方便用戶對于課程的錄入。在這一部分中,按鈕式很多的,要為每個(gè)按鈕都注冊上監(jiān)聽器,以方便在按鈕點(diǎn)擊的時(shí)候?qū)崿F(xiàn)每項(xiàng)功能。要實(shí)現(xiàn)按鈕的點(diǎn)擊功能首先要找到相關(guān)的按鈕然后為該按鈕注冊上點(diǎn)擊事件監(jiān)聽器。/*通過findViewById方法和按鈕的ID找到按鈕*/ monday=(Button)view.findViewById(R.id.monday);/*通過setOnClickListener方法注冊上監(jiān)聽器*/mon_first.setOnClickListener(newMyButtonListener());這里的MyButtonListener實(shí)現(xiàn)了OnClickListener這個(gè)接口,在接口實(shí)現(xiàn)了對所有點(diǎn)擊事件的處理。圖5-3周末課程界面實(shí)現(xiàn):5.2數(shù)據(jù)庫功能的實(shí)現(xiàn)數(shù)據(jù)庫的實(shí)現(xiàn)是這個(gè)應(yīng)用程序的重點(diǎn),前面已經(jīng)給出了具體的數(shù)據(jù)庫表內(nèi)容,但是光有表的內(nèi)容是遠(yuǎn)遠(yuǎn)不夠的,還要根據(jù)表內(nèi)容對表進(jìn)行創(chuàng)建,并創(chuàng)建累實(shí)現(xiàn)各種功能。Android數(shù)據(jù)庫的實(shí)現(xiàn)流程?!魟?chuàng)建數(shù)據(jù)庫:Android不自動(dòng)提供數(shù)據(jù)庫。在Android應(yīng)用程序中使用SQLite,必須自己創(chuàng)建數(shù)據(jù)庫,然后創(chuàng)建表、索引,填充數(shù)據(jù)。Android提供了SQLiteOpenHelper幫助你創(chuàng)建一個(gè)數(shù)據(jù)庫,你只要繼承SQLiteOpenHelper類,就可以輕松的創(chuàng)建數(shù)據(jù)庫。SQLiteOpenHelper類根據(jù)開發(fā)應(yīng)用程序的需要,封裝了創(chuàng)建和更新數(shù)據(jù)庫使用的邏輯。SQLiteOpenHelper的子類,至少需要實(shí)現(xiàn)三個(gè)方法:構(gòu)造函數(shù),調(diào)用父類SQLiteOpenHelper的構(gòu)造函數(shù)onCreate()方法;//TODO創(chuàng)建數(shù)據(jù)庫后,對數(shù)據(jù)庫的操作onUpgrage()方法。//TODO更改數(shù)據(jù)庫版本的操作當(dāng)你完成了對數(shù)據(jù)庫的操作(例如你的Activity已經(jīng)關(guān)閉),需要調(diào)用SQLiteDatabase的Close()方法來釋放掉數(shù)據(jù)庫連接?!魟?chuàng)建表:通過execSQL方法來執(zhí)行一條SQL語句。具體的的形式如下StringCREATE_TABLE="createtable表名(列名,列名,……)";mSQLiteDatabase.execSQL(CREATE_TABLE);截取程序中的源代碼如下: Stringsql2="CREATETABLE"+TABLE_NAME_PLAN+"(" +ID+"INTEGERPRIMARYKEYAUTOINCREMENT," +PNO+"INTEGER," +CONTENT+"String," +REMIND_TIME+"String," +IS_REMIND+"boolean," +IS_REMIND_BY_VIBRATO+"boolean," +IS_REMIND_BY_RING+"boolean" +");"; db.execSQL(sql2);◆增加增刪改查的具體實(shí)現(xiàn):我們實(shí)現(xiàn)數(shù)據(jù)庫最終的目的就是存儲數(shù)據(jù),其中我們需要實(shí)現(xiàn)的功能無非就是增刪改查。根據(jù)需求分析,抽取出我們需要的具體操作,最后一代碼形式實(shí)現(xiàn)。需要功能如下:查詢所有課程查詢所有單、雙周的課程增加課程根據(jù)ID更新課程根據(jù)ID刪除課程查詢所有星期1-5的課程根據(jù)ID查詢星期1-5的課程查詢所有周末的課程根據(jù)week和whichLesson來查詢周末的課程添加計(jì)劃查詢所有計(jì)劃根據(jù)計(jì)劃編號來查詢計(jì)劃根據(jù)計(jì)劃編號來刪除計(jì)劃根據(jù)pno更新計(jì)劃根據(jù)需求分析我們用到的功能很多,但是總結(jié)一下無非就是增刪改查,實(shí)現(xiàn)方式如下插入記錄: //添加計(jì)劃 publicvoidinsertPlan(Planm){ SQLiteDatabasedb=mOpenHelper.getWritableDatabase(); ContentValuescv=newContentValues(); cv.put(PNO,m.getPno()); cv.put(CONTENT,m.getContent()); cv.put(REMIND_TIME,m.getRemindTime()); cv.put(IS_REMIND,m.isRemind()); cv.put(IS_REMIND_BY_VIBRATO,m.isRemindByVibrato()); cv.put(IS_REMIND_BY_RING,m.isRemindByRing()); db.insert(TABLE_NAME_PLAN,null,cv); db.close(); }更新記錄(修改記錄): //根據(jù)pno更新計(jì)劃 public

溫馨提示

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

評論

0/150

提交評論