![畢業(yè)設(shè)計(jì)(論文)Android手機(jī)電子書閱讀器的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)](http://file4.renrendoc.com/view10/M03/17/2E/wKhkGWeTV6eAFAp9AAGZGTLJ-Q4195.jpg)
![畢業(yè)設(shè)計(jì)(論文)Android手機(jī)電子書閱讀器的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)](http://file4.renrendoc.com/view10/M03/17/2E/wKhkGWeTV6eAFAp9AAGZGTLJ-Q41952.jpg)
![畢業(yè)設(shè)計(jì)(論文)Android手機(jī)電子書閱讀器的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)](http://file4.renrendoc.com/view10/M03/17/2E/wKhkGWeTV6eAFAp9AAGZGTLJ-Q41953.jpg)
![畢業(yè)設(shè)計(jì)(論文)Android手機(jī)電子書閱讀器的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)](http://file4.renrendoc.com/view10/M03/17/2E/wKhkGWeTV6eAFAp9AAGZGTLJ-Q41954.jpg)
![畢業(yè)設(shè)計(jì)(論文)Android手機(jī)電子書閱讀器的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)](http://file4.renrendoc.com/view10/M03/17/2E/wKhkGWeTV6eAFAp9AAGZGTLJ-Q41955.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
畢業(yè)設(shè)計(jì)(論文)Android手機(jī)電子書閱讀器的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)(論文)Android手機(jī)電子書閱讀器的設(shè)計(jì)與實(shí)現(xiàn)UNIVERSITYOFTECHNOLOGY畢業(yè)設(shè)計(jì)題目Android手機(jī)電子書閱讀器的設(shè)計(jì)與實(shí)現(xiàn)學(xué)生姓名學(xué)號(hào)00101106專業(yè)班級(jí)通信工程指導(dǎo)教師學(xué)院通信學(xué)院答辯日期2012年10月11日Android手機(jī)電子書閱讀器的設(shè)計(jì)與實(shí)現(xiàn)ThedesignandImplementationoftheAndroidmobilephonee-bookreaderXxx摘要在這個(gè)信息化的時(shí)代計(jì)算機(jī)越來越精致手機(jī)也越來越智能化所以一個(gè)較好的應(yīng)用軟件在很大程度上能提升一個(gè)手機(jī)的品牌而在智能手機(jī)上安裝一個(gè)擁有豐富功能支持的電子書閱讀器更是我們刻不容緩的事情本設(shè)計(jì)采用Android平臺(tái)根據(jù)對(duì)手機(jī)電子書閱讀器的客戶需求分析和技術(shù)可行性分析經(jīng)過總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)編碼測(cè)試等階段完成了電子書閱讀器軟件的設(shè)計(jì)不僅實(shí)現(xiàn)了電子書閱讀器最基本的閱讀功能而且還為用戶提供了豐富的功能支持包括找書書簽自動(dòng)翻頁(yè)以及閱讀界面設(shè)置的操作而本次設(shè)計(jì)最大的特點(diǎn)則是通過屏幕觸控實(shí)現(xiàn)了移動(dòng)時(shí)的翻頁(yè)特效經(jīng)過不斷的測(cè)試與完善電子書閱讀器功能穩(wěn)定并且在真機(jī)上對(duì)其進(jìn)行了測(cè)試與驗(yàn)證基本上達(dá)到了用戶的需求標(biāo)準(zhǔn)關(guān)鍵詞Android電子書閱讀器屏幕觸控翻頁(yè)AbstractInthetimeofinformationtechnologywiththeincreasinglysophisticatedofcomputersandmoreandmoreintelligentofmobilephonesabetterapplicationsoftwarecanenhanceabrandofthephonetolargeextentItisoururgentforusthatinstalledonthesmart-phonehasarichfunctionalitytosupportthee-bookreaderBasedontheneedsanalysisofcustomersandtechnicalfeasibilityanalysisIusetheAndroidplatformtoachievethedesignofmobilephonese-bookreaderAftercompletingtheoveralldesignanddetaileddesigncodingtestingstageIachievedthedesignofthee-bookreadersoftwareNotonlycanthesoftachievethebasicfunctionofE-bookreaderbutalsooffermanyotherfunctionsforusersincludingbooksandbookmarksflippingpagesautomaticallyanddesigningthereaderThesignificantcharacterofthedesignachievetheflippingpageofmobilebytouchingscreenThroughcontinuoustestingandimprovementE-bookreaderisstableThetestingandverificationinrealdevicehascarriedouttomeetthecustomersrequirementswhichhavereachedthestandardsofthecustomersrequirementsKeywordsAndroide-bookReaderTouchScreenFlip目錄第1章前言111課題提出的背景目的及意義1com課題提出的背景1com課題提出的目的1com課題提出的意義112設(shè)計(jì)思路及研究方法2com設(shè)計(jì)思路2com研究方法2第2章需求分析321軟件的基本功能要求322系統(tǒng)架構(gòu)423開發(fā)環(huán)境4第3章軟件設(shè)計(jì)631總體軟件結(jié)構(gòu)設(shè)計(jì)632接口設(shè)計(jì)7com外部接口7com內(nèi)部接口833數(shù)據(jù)庫(kù)設(shè)計(jì)8com數(shù)據(jù)模式設(shè)計(jì)8com數(shù)據(jù)表格設(shè)計(jì)8com表的具體設(shè)計(jì)9com數(shù)據(jù)字典1034軟件設(shè)計(jì)模型1035代碼設(shè)計(jì)1236軟件維護(hù)設(shè)計(jì)12第4章系統(tǒng)功能模塊的設(shè)計(jì)與實(shí)現(xiàn)1341關(guān)鍵技術(shù)13comandroid平臺(tái)及java語(yǔ)言13com中介軟件13com四大組件14comsqlite3數(shù)據(jù)庫(kù)14comTomcat服務(wù)器1442歡迎界面的實(shí)現(xiàn)1543主控制類的實(shí)現(xiàn)1544工具類的設(shè)計(jì)1645閱讀界面的實(shí)現(xiàn)1646找書功能的實(shí)現(xiàn)1847書簽功能的實(shí)現(xiàn)1948設(shè)置字體大小功能的實(shí)現(xiàn)2049更換背景圖片以及設(shè)置字體顏色功能的實(shí)現(xiàn)21410音樂播放功能的實(shí)現(xiàn)21第5章系統(tǒng)測(cè)試2251歡迎界面2252用戶閱讀界面23畢業(yè)設(shè)計(jì)總結(jié)32參考文獻(xiàn)33附錄一核心代碼34附錄二畢業(yè)設(shè)計(jì)外文翻譯英文36附錄三畢業(yè)設(shè)計(jì)外文翻譯中文44致謝51第1章前言11課題提出的背景目的及意義com課題提出的背景在這個(gè)信息化的時(shí)代IT業(yè)已經(jīng)成為世界發(fā)展的主流我們對(duì)信息技術(shù)的依賴遠(yuǎn)遠(yuǎn)超過了對(duì)我們自己的依賴計(jì)算機(jī)和手機(jī)已經(jīng)成為我們?nèi)粘I钪胁豢扇鄙俚墨@得信息的渠道正因?yàn)槿绱烁鞣N各樣的軟件層出不窮我們的生活也因?yàn)楦鞣N各樣的軟件變的更有滋有味不缺乏娛樂性也不缺乏教育意義讓我們從這些軟件中受益匪淺使我們看到了相比以前的巨大進(jìn)步同時(shí)隨著科技的發(fā)展計(jì)算機(jī)越來越精致手機(jī)也越來越智能化所以我們的依賴性也越來越大越來越離不開這些給我們提供日常信息的工具手機(jī)也已不再僅僅是簡(jiǎn)單的人與人通話的工具而是在很大程度上成為了我們獲取信息的一個(gè)更好的渠道一個(gè)好的軟件能夠標(biāo)志一個(gè)手機(jī)品牌的地位所以開發(fā)一款好的手機(jī)軟件是相當(dāng)必要的以前我們看看雜志小說都要去圖書館借閱而且時(shí)間有限很不方便而現(xiàn)在是在電腦上或者手機(jī)上看雜志看小說文檔以此看來一個(gè)好的手機(jī)閱讀器軟件的開發(fā)是相當(dāng)有必要的com課題提出的目的此次設(shè)計(jì)的目的很明顯就是給予閱讀者更大的便利性閱讀者不用再到處拿著一本厚厚的書籍大大減少了讀者的負(fù)擔(dān)只需要下載一本txt格式的電子書放在sd卡里邊就是人們的生活百科當(dāng)然有些下載不來的資料還是需要翻閱書籍的com課題提出的意義計(jì)算機(jī)改變了人類的工作方式互聯(lián)網(wǎng)創(chuàng)造著全新的生活空間我們接受信息的方式也正在發(fā)生深刻的質(zhì)變由于現(xiàn)在閱讀器的越來越普及我們每天清晨讀報(bào)的習(xí)慣也在面對(duì)大資訊量的新聞網(wǎng)站時(shí)漸漸淡化面對(duì)印刷出版物我們?nèi)砸曋疄槲幕瘋鞒械妮d體但不可抵擋的是無紙化電子閱讀時(shí)代的悄然臨近我們現(xiàn)在信息化的生活充斥著信息的傳遞但是越來越多的人依賴于幾乎朝夕相伴的手機(jī)雖然現(xiàn)在也出現(xiàn)了供人們閱讀使用的電子書但是這些電子書的功能很少很簡(jiǎn)單僅僅是簡(jiǎn)簡(jiǎn)單單的供人們一行一行的閱覽文字信息或者是僅僅添加一個(gè)添加書簽的小功能根本遠(yuǎn)遠(yuǎn)不能滿足人們的需求于是一個(gè)功能良好的全面的電子書閱讀器越來越成為廣大用戶的追求本軟件是基于android系統(tǒng)智能手機(jī)開發(fā)的一款電子書閱讀器軟件它有一個(gè)閱讀主界面主要用來閱讀文檔其優(yōu)越性表現(xiàn)在實(shí)現(xiàn)了從SD卡讀取文檔或從服務(wù)器端下載文檔自動(dòng)翻頁(yè)添加書簽選擇書簽清空書簽設(shè)置背景音樂設(shè)置背景圖片設(shè)置字體顏色設(shè)置字體大小等功能此外給用戶更清晰方便的界面也是本軟件的出發(fā)點(diǎn)之一12設(shè)計(jì)思路及研究方法com設(shè)計(jì)思路閱讀器的設(shè)計(jì)流程主要是按照軟件設(shè)計(jì)的一般流程需求分析概要設(shè)計(jì)詳細(xì)設(shè)計(jì)測(cè)試與維護(hù)的基本流程來設(shè)計(jì)開發(fā)的首先從整體分析軟件功能將功能模塊化然后對(duì)每個(gè)模塊進(jìn)行調(diào)試最后對(duì)各個(gè)模塊進(jìn)行系統(tǒng)集成通過幾個(gè)月的觀察發(fā)現(xiàn)幾乎所有的人都有手機(jī)而且?guī)缀跤幸话胍陨系娜擞檬謾C(jī)來閱讀資料可是這些閱讀軟件不盡人意而且一個(gè)好的閱讀軟件也還沒有安裝在智能手機(jī)上本系統(tǒng)針對(duì)這一點(diǎn)進(jìn)行了較仔細(xì)的分析在老版的閱讀軟件基礎(chǔ)之上進(jìn)行改進(jìn)最后對(duì)系統(tǒng)進(jìn)行了實(shí)現(xiàn)和維護(hù)com研究方法本系統(tǒng)在整體框架研究方法采用的是問卷調(diào)查法和觀察研究法而在總體設(shè)計(jì)上采用的是結(jié)構(gòu)化方法在局部底層開發(fā)上為便于交流采用快速原型法問卷調(diào)查法也稱問卷法它是調(diào)查者運(yùn)用統(tǒng)一設(shè)計(jì)的問卷向被選取的調(diào)查對(duì)象了解情況或征詢意見的調(diào)查方法觀察研究法指根據(jù)既定的研究目的對(duì)現(xiàn)象或行為做有計(jì)劃與有系統(tǒng)的觀察并依觀察的記錄對(duì)現(xiàn)象或行為做客觀性的描述和解釋結(jié)構(gòu)化系統(tǒng)的設(shè)計(jì)方法是在結(jié)構(gòu)化程序設(shè)計(jì)思想基礎(chǔ)上發(fā)展起來的它的基本涵義是一個(gè)系統(tǒng)由層次化的程序模塊構(gòu)成每一個(gè)模塊只有一個(gè)入口和一個(gè)出口每一個(gè)模塊只歸其上一級(jí)模塊調(diào)用并有模塊連接的準(zhǔn)則和構(gòu)造模塊的標(biāo)準(zhǔn)而且用系統(tǒng)結(jié)構(gòu)圖來表達(dá)系統(tǒng)的結(jié)構(gòu)盡可能用最優(yōu)的方式將系統(tǒng)內(nèi)各部分組織起來第2章需求分析21軟件的基本功能要求經(jīng)過以上問卷調(diào)查和觀察研究方法在現(xiàn)行業(yè)務(wù)流程和數(shù)據(jù)分析的基礎(chǔ)上基本上確定了系統(tǒng)的功能設(shè)計(jì)也基本上達(dá)到了目標(biāo)根據(jù)軟件設(shè)計(jì)的步驟需求分析是軟件設(shè)計(jì)成功的基礎(chǔ)也是必不可少的步驟同時(shí)也對(duì)軟件的設(shè)計(jì)提出了具體的要求在做足了充分的調(diào)查研究之后基本可以確定軟件的功能界面如下1剛打開軟件時(shí)的歡迎動(dòng)畫界面2在沒有閱讀記錄情況下打開軟件時(shí)進(jìn)入的軟件說明界面3在主界面下單擊菜單按鈕后彈出的歡迎主菜單界面4找書選擇界面用來選擇找書的途徑5網(wǎng)絡(luò)下載列表界面用來列出服務(wù)器端可供下載的文檔6下載完成提示界面用戶從服務(wù)器端完成指定文檔下載任務(wù)時(shí)顯示的界面7已存在要下載文件提示界面當(dāng)用戶指定要下載的文檔在SD卡中已存在時(shí)顯示的界面8SD卡文件列表界面列出SD卡中存在的所有資料9閱讀界面用來閱讀文檔的主界面是整個(gè)閱讀器設(shè)計(jì)核心部分10書簽功能界面用來選擇與書簽相關(guān)的具體操作11添加書簽功能界面將當(dāng)前閱讀到的位置以書簽名和書頁(yè)號(hào)的形式存至?xí)灡矸奖阆麓伍喿x12選擇書簽功能界面通過選擇書簽記錄跳轉(zhuǎn)至想要閱讀的位置13刪除書簽功能界面再不想要該條書簽記錄的情況下實(shí)現(xiàn)刪除操作14自動(dòng)翻頁(yè)功能界面實(shí)現(xiàn)不同時(shí)間間隔自動(dòng)翻頁(yè)的效果15設(shè)置界面用來選擇對(duì)閱讀界面不同的設(shè)置16背景音樂界面可在閱讀的同時(shí)欣賞音樂更大限度的提升17背景圖片界面用來設(shè)置不同的閱讀界面風(fēng)格使閱讀更為個(gè)性化18字體顏色界面用來設(shè)置不同的閱讀字體顏色提升用戶的視覺體驗(yàn)19字體大小界面通過設(shè)置字體大小來滿足實(shí)際應(yīng)用中的多重需求基本說明如下本系統(tǒng)是一個(gè)電子書閱讀器主要包含一個(gè)主界面用來實(shí)現(xiàn)閱讀的功能在閱讀界面時(shí)點(diǎn)擊menu手機(jī)底部會(huì)出現(xiàn)四個(gè)選項(xiàng)找書書簽自動(dòng)翻頁(yè)設(shè)置點(diǎn)擊找書選項(xiàng)會(huì)有兩種操作可供選擇分別是在SD卡中找書和通過網(wǎng)絡(luò)下載點(diǎn)擊書簽選項(xiàng)會(huì)有三種操作可供選擇分別為添加書簽選擇書簽和清空書簽其中長(zhǎng)按選擇書簽列表中的某條書簽記錄也可達(dá)到刪除該條記錄的目的點(diǎn)擊自動(dòng)翻頁(yè)選項(xiàng)會(huì)有四種操作可供選擇分別為每隔30秒40秒50秒自動(dòng)翻頁(yè)和停止自動(dòng)翻頁(yè)點(diǎn)擊設(shè)置選項(xiàng)會(huì)有四種操作可供選擇分別為設(shè)置背景音樂設(shè)置背景圖片設(shè)置字體顏色和設(shè)置字體大小為此用戶可通過自己的喜好來設(shè)置不同閱讀界面的風(fēng)格并且可以選擇自己喜愛的音樂作為背景音樂在閱讀的同時(shí)欣賞22系統(tǒng)架構(gòu)本設(shè)計(jì)總體邏輯結(jié)構(gòu)層次劃分如圖21所示圖21功能結(jié)構(gòu)圖23開發(fā)環(huán)境數(shù)據(jù)庫(kù)由于本設(shè)計(jì)和數(shù)據(jù)庫(kù)密切相關(guān)但是對(duì)數(shù)據(jù)庫(kù)的要求不高因此可用Android系統(tǒng)本身自帶的Sqlite數(shù)據(jù)庫(kù)AndroidSDK與Eclipse開發(fā)的插件ADT由于本設(shè)計(jì)是基于Android系統(tǒng)的而Android開發(fā)環(huán)境的搭建是基于Eclipse的因此需要下載AndroidSDK與Eclipse開發(fā)的插件ADT服務(wù)器由于本設(shè)計(jì)需要用服務(wù)器來為其提供下載服務(wù)而且對(duì)服務(wù)器的要求不高因此在設(shè)計(jì)時(shí)用Tomcat作服務(wù)器軟件設(shè)計(jì)31總體軟件結(jié)構(gòu)設(shè)計(jì)打開電子書閱讀器之后軟件會(huì)先查看上次閱讀的最后記錄以此作為根據(jù)來進(jìn)行判斷從而跳轉(zhuǎn)至相應(yīng)的閱讀界面然后用戶就可在閱讀界面下通過選擇menu來執(zhí)行想要的操作找書書簽自動(dòng)翻頁(yè)設(shè)置點(diǎn)擊找書選項(xiàng)會(huì)有兩種操作可供選擇分別是在SD卡中找書和通過網(wǎng)絡(luò)下載點(diǎn)擊書簽選項(xiàng)會(huì)有三種操作可供選擇分別為添加書簽選擇書簽和清空書簽其中長(zhǎng)按選擇書簽列表中的某條書簽記錄也可達(dá)到刪除該條記錄的目的點(diǎn)擊自動(dòng)翻頁(yè)選項(xiàng)會(huì)有四種操作可供選擇分別為每隔30秒40秒50秒自動(dòng)翻頁(yè)和停止自動(dòng)翻頁(yè)點(diǎn)擊設(shè)置選項(xiàng)會(huì)有四種操作可供選擇分別為設(shè)置背景音樂設(shè)置背景圖片設(shè)置字體顏色和設(shè)置字體大小為此用戶可通過自己的喜好來設(shè)置不同閱讀界面的風(fēng)格并且可以選擇自己喜愛的音樂作為背景音樂在閱讀的同時(shí)欣賞根據(jù)各個(gè)模塊的不同功能對(duì)本設(shè)計(jì)進(jìn)行了層次結(jié)構(gòu)的劃分在Eclipse下創(chuàng)建了一個(gè)名為Test的工程工程的結(jié)構(gòu)圖如圖31圖31軟件工程結(jié)構(gòu)圖該功能包是通過AndroidSDK自動(dòng)生成的主要包括以下內(nèi)容1src源代碼目錄該目錄存放Android應(yīng)用程序所有的源代碼該目錄項(xiàng)有不同的包包中對(duì)應(yīng)開發(fā)的源代碼開發(fā)過程中的主要精力都集中在開發(fā)src目錄下內(nèi)容2gen文件夾目錄該目錄存放了Eclipse的ADT插件自動(dòng)生成的Rjava文件實(shí)際上Rjava定義了一個(gè)R類它包含了應(yīng)用中用戶界面圖像字符串等各種資源與之相對(duì)應(yīng)的資源編號(hào)id這些資源編號(hào)都是系統(tǒng)自動(dòng)生成的即有一資源對(duì)象系統(tǒng)就為此在R類中生成相應(yīng)資源編號(hào)好比一本字典3Res資源目錄該目錄定義了drawablelayout及values3個(gè)目錄adrawable目錄該目錄下有drawable-hdpidrawable-ldpidrawable-mdpi3個(gè)文件夾分別用來存放不同分辨率的圖片資源用于不同分辨率的手機(jī)的開發(fā)可以通過ResourcegetDrawableid獲得該資源blayout目錄該目錄下包含了所有使用XML格式的界面描述文件主要用于表述應(yīng)用程序的用戶界面布局也用于描述用戶界面和接口組件cvalues目錄該目錄包含了使用XML格式的參數(shù)描述文件也可以在此添加一些額外的資源如字符串顏色樣式和數(shù)組等主要用于在代碼中通過R類來調(diào)用它們而不直接使用這樣可將代碼和資源分開管理便于維護(hù)除了以上文件夾外還用一個(gè)AndroidManifestxml文件該文件是系統(tǒng)的控制文件告訴系統(tǒng)如何處理創(chuàng)建的所有頂層項(xiàng)目尤其是Activity凡是需要用到的組件都要在此注冊(cè)同時(shí)該文件也是所有Android應(yīng)用程序都需要的文件其描述了程序包的全局變量包括公開的應(yīng)用程序組件和每個(gè)組件的實(shí)現(xiàn)類什么樣的數(shù)據(jù)可以操作在什么地方可以運(yùn)行等在這個(gè)文件中最重要的一個(gè)內(nèi)容就是Intent過濾器這些過濾器描述了何時(shí)何種情況下讓Activity啟動(dòng)當(dāng)一個(gè)Activity或操作系統(tǒng)想要執(zhí)行一個(gè)動(dòng)作它將創(chuàng)建一個(gè)Intent對(duì)象該對(duì)象包含了很多描述符描述了想做的操作像處理數(shù)據(jù)數(shù)據(jù)的類型以及一些其他的信息Android將Intent對(duì)象中的所有公開的Intent過濾器比較找到一個(gè)最能恰當(dāng)處理請(qǐng)求的數(shù)據(jù)和動(dòng)作的Activity32接口設(shè)計(jì)com外部接口在用戶界面部分根據(jù)需求分析結(jié)果用戶需要一個(gè)友善界面在界面設(shè)計(jì)上應(yīng)做到簡(jiǎn)單明了易于操作并且要注意到界面的布局應(yīng)突出的顯示重要以及出錯(cuò)信息在界面設(shè)計(jì)部分本系統(tǒng)按照Microsoft公司的用戶界面設(shè)計(jì)標(biāo)準(zhǔn)為用戶提供友好方便直觀簡(jiǎn)潔的操作環(huán)境本系統(tǒng)采用了窗口繼承的方式使窗口有統(tǒng)一的界面風(fēng)格同時(shí)對(duì)錯(cuò)誤信息提示信息進(jìn)行標(biāo)準(zhǔn)化盡量做到清晰明了com內(nèi)部接口系統(tǒng)在功能模塊的設(shè)計(jì)上以高內(nèi)聚低耦合為設(shè)計(jì)目標(biāo)內(nèi)部接口方面各模塊之間采用函數(shù)調(diào)用參數(shù)傳遞返回值的方式進(jìn)行信息傳遞具體參數(shù)的結(jié)構(gòu)將在下面數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)的內(nèi)容中說明接口傳遞的信息將是以數(shù)據(jù)結(jié)構(gòu)封裝的數(shù)據(jù)參數(shù)傳遞或返回值的形式在各模塊間傳遞33數(shù)據(jù)庫(kù)設(shè)計(jì)com數(shù)據(jù)模式設(shè)計(jì)一共設(shè)計(jì)了3張表是1閱讀記錄表閱讀記錄的ID書的路徑閱讀記錄數(shù)據(jù)2書簽表書簽的ID書簽對(duì)應(yīng)的閱讀記錄的ID書簽名書頁(yè)3上次閱讀記錄表上次閱讀記錄的ID書的路徑上次閱讀到的書頁(yè)上次閱讀時(shí)的字體數(shù)據(jù)庫(kù)表的設(shè)計(jì)如下圖32數(shù)據(jù)庫(kù)結(jié)構(gòu)圖com數(shù)據(jù)表格設(shè)計(jì)本數(shù)據(jù)庫(kù)用的是一個(gè)小型數(shù)據(jù)庫(kù)sqlite3在數(shù)據(jù)庫(kù)中創(chuàng)建了三個(gè)表格即BookRecordBookMark和LastTimePage分別用來存放閱讀記錄的數(shù)據(jù)書簽的數(shù)據(jù)和上次的閱讀記錄數(shù)據(jù)具體內(nèi)容如表3-1表3-2和表3-3所示表3-1閱讀記錄表字段名稱數(shù)據(jù)類型字段大小是否主鍵說明ridInteger8是閱讀記錄的IDpath文本50否書的路徑data字節(jié)數(shù)組不定否預(yù)讀記錄數(shù)據(jù)表3-2書簽表字段名稱數(shù)據(jù)類型字段大小是否主鍵說明midInteger8是書簽的IDridfkInteger8否書簽對(duì)應(yīng)的閱讀記錄的IDbmname文本50否書簽名pageInteger8否書頁(yè)表3-3上次閱讀記錄表字段名稱數(shù)據(jù)類型字段大小是否主鍵說明lidInteger8是上次閱讀的記錄IDpath文本50否書的路徑pageInteger8否上次閱讀到的頁(yè)數(shù)fontsizeInteger8否上次閱讀的字體大小com表的具體設(shè)計(jì)表名BookRecord表中字段名稱ridpathdata說明用varchar類型存儲(chǔ)pathblob類型存儲(chǔ)相應(yīng)的路徑下的閱讀過程并規(guī)定rid為閱讀記錄表的主鍵表名BookMark表中字段名稱midridfkbmnamepage說明創(chuàng)建書簽mid為integer類型主鍵定義書簽名字bmname為varchar類型書頁(yè)號(hào)page為integer類型的書簽表表名LastTimePage表中字段名稱lidpathpagefontsize說明創(chuàng)建書簽lid為integer型主鍵定義路徑path為varchar類型書頁(yè)號(hào)page為integer類型字體大小為integer類型的上次閱讀記錄表com數(shù)據(jù)字典數(shù)據(jù)字典是物理數(shù)據(jù)庫(kù)的具體體現(xiàn)表3-4BookRecord數(shù)據(jù)字典字段名類型閱讀記錄的ID整型書的路徑文本閱讀記錄數(shù)據(jù)字節(jié)數(shù)組表3-5BookMark數(shù)據(jù)字典字段名類型書簽的ID整型書簽對(duì)應(yīng)的閱讀記錄的ID整型書簽名文本書頁(yè)整型表3-6LastTimePage數(shù)據(jù)字典字段名類型上次閱讀記錄的ID整型書的路徑文本上次閱讀到的頁(yè)數(shù)整型上次閱讀時(shí)字體大小整型34軟件設(shè)計(jì)模型建立系統(tǒng)數(shù)據(jù)模型的主要工具是實(shí)體關(guān)聯(lián)圖即E-R圖E-R圖的圖形符號(hào)約定如下表表3-7E-R圖圖形符號(hào)圖33存儲(chǔ)閱讀記錄的E-R圖圖34存儲(chǔ)書簽的E-R圖圖35存儲(chǔ)上次閱讀記錄的E-R圖35代碼設(shè)計(jì)代碼是按使用的目的表示識(shí)別分類排序數(shù)據(jù)的數(shù)字文字或符號(hào)識(shí)別是將文件中存儲(chǔ)數(shù)據(jù)區(qū)別開或?qū)⑽募械臄?shù)據(jù)按組區(qū)別開識(shí)別主要用數(shù)據(jù)更新與查找分類是根據(jù)數(shù)據(jù)編碼中的定義對(duì)數(shù)據(jù)分類用于檢索數(shù)據(jù)或統(tǒng)計(jì)分析排序是根據(jù)編碼規(guī)則按代碼中規(guī)定的次序排序用于輸出與生成報(bào)表36軟件維護(hù)設(shè)計(jì)采用MVC設(shè)計(jì)模式將UI層和業(yè)務(wù)邏輯層分離開來采用針對(duì)接口編程的方式降低了代碼之間的耦合度便于軟件的升級(jí)和程序性能的優(yōu)化第4章系統(tǒng)功能模塊的設(shè)計(jì)與實(shí)現(xiàn)41關(guān)鍵技術(shù)comandroid平臺(tái)及java語(yǔ)言以下圖表展示了Android操作系統(tǒng)的主要組成部分圖41Android系統(tǒng)架構(gòu)圖本系統(tǒng)是以java為編程語(yǔ)言從接口到功能靈活多變主要運(yùn)用的是Activity之間的相互跳轉(zhuǎn)然后利用Intent實(shí)現(xiàn)多個(gè)程序同時(shí)運(yùn)行的效果運(yùn)行中如果某個(gè)Activity的畫面被另一個(gè)Activity所取代則這個(gè)Activity停止本系統(tǒng)通過把View類與XML可擴(kuò)展標(biāo)記語(yǔ)言將用戶界面放置在視圖窗口然后注冊(cè)事件來完成相應(yīng)的功能例如當(dāng)視圖要處理用戶的點(diǎn)擊事件的時(shí)候android就要向框架注冊(cè)一個(gè)OnClickListener等本系統(tǒng)中觸發(fā)事件都是通過這種來實(shí)現(xiàn)的Java語(yǔ)言是一種簡(jiǎn)單易用面向?qū)ο蟮目梢浦驳恼Z(yǔ)言它具有很多的優(yōu)越性和特點(diǎn)比如平臺(tái)無關(guān)性安全性面向?qū)ο蠼研缘鹊缺鞠到y(tǒng)就是在android平臺(tái)上使用java語(yǔ)言完成的系統(tǒng)com中介軟件中介軟件是android操作系統(tǒng)應(yīng)用程序的橋梁主要分為函數(shù)和虛擬機(jī)Android的數(shù)據(jù)存儲(chǔ)采用sqlite3數(shù)據(jù)庫(kù)系統(tǒng)用戶可以用ContentProvider類獲取數(shù)據(jù)android中數(shù)據(jù)存儲(chǔ)技術(shù)主要有文件存儲(chǔ)preferencesqliteContentProvider和網(wǎng)絡(luò)存儲(chǔ)在本軟件中主要使用到了文件存儲(chǔ)sqlite和ContentProvider文件存儲(chǔ)是以流的形式讀寫文件可以以文格的格式也可以以二進(jìn)制的形式在java語(yǔ)言中要使用流則寫入文件的對(duì)象必須進(jìn)行序列化sqlite是嵌入式移動(dòng)設(shè)備中常用的輕量級(jí)數(shù)據(jù)庫(kù)可看作計(jì)算機(jī)上使用的sqlserveroracle數(shù)據(jù)庫(kù)本軟件中用戶生詞本中的數(shù)據(jù)都存在sqlite數(shù)據(jù)庫(kù)中而進(jìn)行數(shù)據(jù)備份和恢復(fù)時(shí)則是用文件作為介質(zhì)保存數(shù)據(jù)com四大組件Android的四大組件是支持android應(yīng)用程序顯示跳轉(zhuǎn)服務(wù)和事件的重要工具它們主要是Activity活動(dòng)Intent意圖Service服務(wù)ContentProvider內(nèi)容提供器Activity是一個(gè)用戶的界面基類屬于UI一個(gè)Activity就是一個(gè)類每個(gè)Activity類都需要繼承Activity基類并與其他控件結(jié)合使用Intent實(shí)現(xiàn)Activityservice等之間的跳轉(zhuǎn)和數(shù)據(jù)傳輸Service是后臺(tái)服務(wù)為用戶提供數(shù)據(jù)支持ContentProvider負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)和讀取在android中軟件UI通常使用xml技術(shù)設(shè)計(jì)而xml中控年的位置和狀態(tài)則離不開布局的使用android中常用的布局有5種分別是AbsoluteLayoutLinearLayoutRelativeLayoutFrameLayoutTableLayout由于布局的使用并且布局之間可以互相嵌套使得android軟件UI的設(shè)計(jì)變得非常靈活即使是一些非常復(fù)雜的界面設(shè)計(jì)只要合理的使用布局也會(huì)使開發(fā)變得很容易comsqlite3數(shù)據(jù)庫(kù)Sqlite3是建立在android平臺(tái)上的一個(gè)數(shù)據(jù)庫(kù)除了支持varcharn可變字符charn定長(zhǎng)字符等數(shù)據(jù)特性外還支持空NULL整型INTEGER文本類型TEXT等數(shù)據(jù)類型它的特點(diǎn)入下輕量級(jí)只需帶上很小的動(dòng)態(tài)庫(kù)就能享受它的全部功能獨(dú)立性使用不需要安裝在部署的時(shí)候能省去很多麻煩隔離性數(shù)據(jù)庫(kù)中所有的信息都包含在一個(gè)文件內(nèi)方便管理和維護(hù)和安全性可以同時(shí)讀取數(shù)據(jù)但同時(shí)只有一個(gè)能夠?qū)懭霐?shù)據(jù)等特性comTomcat服務(wù)器服務(wù)器的架設(shè)在httptocom下載合適版本的Tomcat在apache-tomcat-comwebapps目錄下新建文件夾txt在txt文件夾下創(chuàng)建文本文件txt_listtxt在txt_listtxt下寫入內(nèi)容根據(jù)txt_listtxt的內(nèi)容創(chuàng)建文本打開pache-tomcat-combin目錄打開pache-tomcat-combin目錄下的startupbat8打開瀏覽器在地址欄輸入httplocalhost8088效果如圖42所示圖42bin目錄圖42歡迎界面的實(shí)現(xiàn)本模塊主要完成閱讀器歡迎界面的漸變效果顯示在進(jìn)入程序界面時(shí)首先調(diào)用該功能的實(shí)現(xiàn)主要是通過繪制黑色矩形然后對(duì)其進(jìn)行平面貼圖并通過不斷的更改圖片的透明值來實(shí)現(xiàn)的43主控制類的實(shí)現(xiàn)ReaderActivity類是主要控制程序運(yùn)行的類實(shí)現(xiàn)了各個(gè)界面的有序切換各個(gè)按鈕和對(duì)話框的監(jiān)聽事件加載了程序中用到的相關(guān)資源有效地控制了程序的運(yùn)行1onCreate方法是程序運(yùn)行時(shí)進(jìn)入主界面前調(diào)用的方法在此方法中對(duì)程序中用到的相關(guān)變量進(jìn)行賦值并為相關(guān)類創(chuàng)建對(duì)象以方便調(diào)用2onKeyDownf方法是重寫父類的onKeyDown方法當(dāng)按下不同的鍵時(shí)此方法設(shè)計(jì)返回鍵4號(hào)鍵和Menu鍵82號(hào)鍵并且本設(shè)計(jì)中支持屏幕觸控事件和鍵盤監(jiān)聽事件3onCreateOptionsMenu方法表示的是程序運(yùn)行時(shí)用戶按下鍵盤上的Menu鍵后顯示的找書書簽自動(dòng)翻頁(yè)和設(shè)置的按鈕選項(xiàng)當(dāng)用戶按下不同的鍵后彈出相應(yīng)的對(duì)話框4sendMessage方法表示各個(gè)界面相互跳轉(zhuǎn)時(shí)調(diào)用的方法和不同線程之間傳遞消息的方法5isWhichTime方法用以判斷是否為第一次打開程序如果是則程序中的變量值為默認(rèn)值若不是第一次打開則獲取上一次打開時(shí)設(shè)置的值saveCurrentData和savePreference方法表示當(dāng)程序退出換書和第一次打開一本書時(shí)都要想數(shù)據(jù)庫(kù)中BookRecord表中插入數(shù)據(jù)第一次打開一本書時(shí)向數(shù)據(jù)庫(kù)中插入數(shù)據(jù)是因?yàn)槿绻碇胁淮嬖诋?dāng)前書的信息則無法存書簽44工具類的設(shè)計(jì)1Constant類存放了整個(gè)設(shè)計(jì)過程中大部分類經(jīng)常用到的常量值如字體大小字體顏色屏幕的寬和高等將這些常量值放在一起不但方便了設(shè)計(jì)而且方便管理2加載文本的工具類TextLoadUtil的設(shè)計(jì)主要是為文本的讀入提供方法45閱讀界面的實(shí)現(xiàn)ReaderView類主要負(fù)責(zé)自適應(yīng)屏繪制閱讀器的主界面實(shí)現(xiàn)鍵盤和屏幕的觸控事件以及實(shí)現(xiàn)翻頁(yè)功能1surfaceCreated方法主要負(fù)責(zé)成員變量的初始化工作2onDraw方法負(fù)責(zé)標(biāo)題廣告條左右頁(yè)面等圖片的繪制其中廣告條的繪制是動(dòng)態(tài)的在廣告條線程中值需要更改圖片數(shù)據(jù)下標(biāo)志值NUM3onTouchEvent方法負(fù)責(zé)處理屏幕觸控事件屏幕觸控事件為移動(dòng)是翻頁(yè)特效的實(shí)現(xiàn)4drawPage方法負(fù)責(zé)根據(jù)閱讀記錄對(duì)象ReadRecord繪制左右兩頁(yè)面圖43從用戶進(jìn)入軟件到閱讀界面時(shí)的流程圖圖44用戶在閱讀界面時(shí)的操作流程圖當(dāng)用戶進(jìn)行閱讀界面的時(shí)候首先閱讀控制模塊會(huì)根據(jù)用戶之前閱讀到的位置來確定載入電子書文本的起始位置然后會(huì)根據(jù)手機(jī)終端屏幕大小和字體大小來確定該頁(yè)應(yīng)該顯示多少文字在獲取文字長(zhǎng)度之后會(huì)讀取相應(yīng)長(zhǎng)度的字符并以此為基礎(chǔ)生成左右相鄰兩頁(yè)內(nèi)容的bitmap圖片用戶在閱讀的時(shí)候可以觸摸屏幕的不同位置進(jìn)行不同操作左下角是往前翻頁(yè)右下角是往后翻頁(yè)46找書功能的實(shí)現(xiàn)找書功能分為在SDCARD中和在網(wǎng)絡(luò)中找書1在SDCARD中找書用戶可以將已有的txt格式的書放在SDCARD中通過本閱讀器的在SDCARD中找書的功能將書加載進(jìn)閱讀器進(jìn)行閱讀具體步驟如下按下Menu鍵在主界面中彈出的選項(xiàng)中選擇找書彈出找書對(duì)話框選中SDCARD即可根據(jù)當(dāng)前路徑獲得對(duì)應(yīng)文件數(shù)組并將數(shù)組中的所有文件加入到文件列表中然后再為文件列表添加監(jiān)聽從而實(shí)現(xiàn)在點(diǎn)擊某一文件時(shí)跳轉(zhuǎn)至對(duì)應(yīng)頁(yè)面的功能2在網(wǎng)絡(luò)中找書本閱讀器不僅提供了在本地找書的功能而且也支持在網(wǎng)絡(luò)中找書具體步驟如下當(dāng)單擊在網(wǎng)絡(luò)中找書的按鈕時(shí)調(diào)用downTxt方法下載txt文檔圖45用戶找書時(shí)的操作流程圖47書簽功能的實(shí)現(xiàn)添加書簽功能的實(shí)現(xiàn)在本設(shè)計(jì)的書簽功能中有很多漂亮的Dialog這些Dialog是通過xml文件自己布局的或者是通過Java代碼自定義實(shí)現(xiàn)的其中stylesxml文件設(shè)置了Dialog的背景圖片和標(biāo)題格式是設(shè)置對(duì)話框?qū)傩缘奈募谕瓿闪溯斎霑瀸?duì)話框所需要繼承的類布局文件和對(duì)話框?qū)傩缘奈募髣?chuàng)建了書簽輸入對(duì)話框并通過onPrepareDialog方法為自定義的輸入書簽對(duì)話框中的按鈕添加了監(jiān)聽選擇書簽功能的實(shí)現(xiàn)選擇書簽對(duì)話框不同于添加書簽對(duì)話框是用Java代碼實(shí)現(xiàn)的具體的實(shí)現(xiàn)步驟如下在數(shù)據(jù)庫(kù)中取出所有書簽的名字和頁(yè)數(shù)的索引值并分別放入兩個(gè)數(shù)組tempname和temppage中用來放入書簽列表中顯示用Java代碼編寫列表對(duì)話框并且為L(zhǎng)istView添加內(nèi)容適配器將在數(shù)據(jù)庫(kù)中取出的書簽名稱和其對(duì)應(yīng)的頁(yè)數(shù)的索引加入到ListView中當(dāng)單擊選擇書簽對(duì)話框中的某一項(xiàng)時(shí)得到當(dāng)前的頁(yè)數(shù)根據(jù)頁(yè)數(shù)查找HashMap找到相應(yīng)的BookMark類的對(duì)象從而知道要跳轉(zhuǎn)到的頁(yè)的索引值當(dāng)長(zhǎng)時(shí)間按住選擇書簽對(duì)話框中的某一項(xiàng)時(shí)彈出是否刪除這條記錄的對(duì)話框如果單擊確定按鈕則會(huì)刪除這條記錄單擊取消按鈕則不會(huì)刪除記錄圖46書簽功能操作流程圖48設(shè)置字體大小功能的實(shí)現(xiàn)字體大小對(duì)話框與選擇書簽對(duì)話框的設(shè)計(jì)基本相同也是通過Java代碼為對(duì)話框中控件的擺放形式設(shè)置布局當(dāng)單擊小號(hào)中號(hào)大號(hào)字體后如果當(dāng)前字體與要變換的字體相同則不發(fā)生變化否則將字體的大小和中英文間距重新賦值然后重新繪制當(dāng)前界面字體大小變化后書簽和HashMap的更新updataBookMarkAndHashMap方法負(fù)責(zé)字體大小變化后更新書簽和HashMapdrawVirtualPage方法是字體大小變化后書簽和HashMap更新過程中虛擬繪制主界面中每一頁(yè)信息并且為下一頁(yè)的Left_Start的值賦值的方法49更換背景圖片以及設(shè)置字體顏色功能的實(shí)現(xiàn)1更換背景圖片功能的實(shí)現(xiàn)a為了使對(duì)話框看起來更美觀為對(duì)話框中的按鈕設(shè)置背景圖同時(shí)背景圖與要設(shè)置背景一致為用戶提供參考b為按鈕添加監(jiān)聽使單擊按鈕后可以實(shí)現(xiàn)更換閱讀內(nèi)容背景的圖片c設(shè)置要更換的圖片并規(guī)定圖片加載的屬性用到了PicLoadUtil這個(gè)工具類的方法來實(shí)現(xiàn)圖片自適應(yīng)d重新繪制左右兩側(cè)背景圖片上的文字2設(shè)置字體顏色功能的實(shí)現(xiàn)a為了使對(duì)話框看起來更美觀為對(duì)話框中的按鈕設(shè)置背景圖同時(shí)背景圖與要設(shè)置字體顏色一致為用戶提供參考b為按鈕添加監(jiān)聽使單擊按鈕后可以實(shí)現(xiàn)重新設(shè)置閱讀界面字體顏色c完成字體顏色設(shè)置返回到當(dāng)前閱讀界面繼續(xù)閱讀410音樂播放功能的實(shí)現(xiàn)1完成自定義對(duì)話框的設(shè)計(jì)2將曲目導(dǎo)入ListView為其添加監(jiān)聽同時(shí)實(shí)現(xiàn)控制音樂播放與停止的功能3當(dāng)音樂播放器為空或正在播放曲目二則更改播放曲目一在為其設(shè)置播放模式后播放曲目否則是否播放器最終返回閱讀主界面第5章系統(tǒng)測(cè)試51歡迎界面打開本系統(tǒng)首先進(jìn)入的是歡迎界面效com圖51歡迎動(dòng)畫界面1圖52歡迎動(dòng)畫界面252用戶閱讀界面若為第一次打開軟件則在歡迎動(dòng)畫播放完后進(jìn)入軟件說明界面效果如圖53所示圖53軟件說明界面單擊菜單按鈕彈出主菜單效果如圖54所示圖54閱讀界面的menu功能在主菜單中單擊找書按鈕進(jìn)入找書選擇界面效果如圖55所示圖55找書界面在找書選擇界面單擊網(wǎng)絡(luò)按鈕進(jìn)入網(wǎng)絡(luò)下載列表效果如圖56所示圖56網(wǎng)絡(luò)下載列表界面選擇某一文本并單擊下載完畢后彈出提示信息效果如圖57所示圖57下載完成提示信息如果下載文件已存在彈出提示界面效果如圖58所示圖58存在要下載文件提示界面在找書選擇界面單擊SDCARD按鈕進(jìn)入SDCARD文件列表效果如圖59所示圖59SDCARD文件列表界面在SDCARD文件列表中選中某文本后單擊進(jìn)入閱讀界面效果如圖510所示圖510閱讀界面在主菜單中單擊書簽按鈕進(jìn)入書簽功能界面效果如圖511所示圖511書簽功能界面在書簽功能界面中單擊添加書簽按鈕進(jìn)入添加書簽界面效果如圖512所示圖512添加書簽界面在書簽功能界面中單擊選擇書簽按鈕進(jìn)入選擇書簽界面效果如圖513所示圖513選擇書簽界面在書簽功能界面單擊清空書簽按鈕進(jìn)入清空書簽界面效果如圖514所示圖514刪除書簽界面在主菜單中單擊自動(dòng)翻頁(yè)按鈕進(jìn)入自動(dòng)翻頁(yè)界面效果如圖515所示圖515自動(dòng)翻頁(yè)界面在主菜單中單擊設(shè)置按鈕進(jìn)入設(shè)置界面效果如圖516所示圖516設(shè)置界面在設(shè)置界面中單擊背景音樂按鈕進(jìn)入背景音樂界面效果如圖517所示圖517背景音樂界面在設(shè)置界面中單擊背景圖片按鈕進(jìn)入背景圖片界面效果如圖518所示圖518背景圖片界面在設(shè)置界面中單擊字體顏色按鈕進(jìn)入字體顏色界面效果如圖519所示圖519字體顏色界面在設(shè)置界面單擊字體大小按鈕進(jìn)入字體大小界面效果如圖520所示圖520字體大小界面畢業(yè)設(shè)計(jì)總結(jié)經(jīng)過測(cè)試本設(shè)計(jì)的所有模塊均可正常運(yùn)行并且達(dá)到了預(yù)期的效果與此同時(shí)本設(shè)計(jì)還存在著很多的不足在此我對(duì)其特點(diǎn)和不足作些闡述特點(diǎn)本設(shè)計(jì)以java為開發(fā)語(yǔ)言sqlite3數(shù)據(jù)庫(kù)作為后臺(tái)支撐很好的解決了實(shí)際開發(fā)中遇到的技術(shù)問題本設(shè)計(jì)的界面特點(diǎn)界面友好易于操作維護(hù)采用了大量的人機(jī)交互式操作能很好的完成閱讀的全過程使瀏覽者一進(jìn)入就可以獨(dú)立的進(jìn)行自己需要的操作一目了然本設(shè)計(jì)實(shí)現(xiàn)了從SDCARD找書或從服務(wù)器端下載新書添加書簽選擇書簽清空所有書簽清空某一條書簽自動(dòng)翻頁(yè)設(shè)置背景音樂背景圖片更改字體顏色字體大小加載廣告信息的功能能夠讓讀者很順利的達(dá)到閱讀的目的且不會(huì)影響閱讀的進(jìn)度在很大程度上給予了極大的方便通過最終的運(yùn)行可以達(dá)到省時(shí)的目的方便快捷仿真翻頁(yè)記錄閱讀者最后一次閱讀的信息并在下次打開時(shí)自動(dòng)初始化到上次閱讀到的界面是本設(shè)計(jì)最大的特點(diǎn)不足在本設(shè)計(jì)中只有將服務(wù)器端的新書下載至SDCARD中才可供讀者閱讀未能實(shí)現(xiàn)在線閱讀的功能不能充分利用資源SDCARD中存儲(chǔ)的文件名只能以英文的形式存在從而使得在SDCARD找書界面中的書名只能以英文形式出現(xiàn)由于水平有限難免有不足之處設(shè)計(jì)中也還存在不完善之處有待改進(jìn)參考文獻(xiàn)[1]楊豐盛Android應(yīng)用開發(fā)揭秘[M]北京機(jī)械工業(yè)出版社20101[2]王家林大話企業(yè)級(jí)Android應(yīng)用開發(fā)實(shí)踐[M]北京電子工業(yè)出版社20118[3]王永松Android平臺(tái)開發(fā)之旅[M]北京機(jī)械工業(yè)出版社20011[4]佘志龍AndroidSDK開發(fā)范例大全[M]北京人民郵電出版社20106[5]吳亞峰Android應(yīng)用案例開發(fā)大全[M]北京人民郵電出版社201210[6]郭宏志Android應(yīng)用開發(fā)詳解[M]北京電子工業(yè)出版社2010[7]吳亞峰Android核心技術(shù)與實(shí)例詳解[M]北京電子工業(yè)出版社201010[8]李芝興Java程序設(shè)計(jì)之網(wǎng)絡(luò)編程[M]北京清華大學(xué)出版社20098[23]Android官方網(wǎng)站附錄一核心代碼建立BookRecord表的SQL語(yǔ)句staticSQLiteDatabasesldpublicstaticvoidcreateOrOpenDatabasetrysldSQLiteDatabaseopenDatabase"datadatacomerrecordself"nullSQLiteDatabaseOPEN_READWRITESQLiteDatabaseCREATE_IF_NECESSARYStringsql1"createtableifnotexistsBookRecord""""ridINTEGERPRIMARYKEYAUTOINCREMENT""pathvarchar50""datablob"""sldexecSQLsql1catchExceptioneeprintStackTrace建立BookMark表的SQL語(yǔ)句Stringsql2"createtableifnotexistsBookMark""""midINTEGERPRIMARYKEYAUTOINCREMENT""ridfkINTEGER""bmnamevarchar50""pageINTEGER"""sldexecSQLsql2建立LastTimePage表的SQL語(yǔ)句Stringsql3"createtableifnotexistsLastTimePage""""lidINTEGERPRIMARYKEYAUTOINCREMENT""pathvarchar50""pageINTEGER""fontsizeINTEGER"""sldexecSQLsql3附錄二畢業(yè)設(shè)計(jì)外文翻譯英文TheJavaIOSystemCreatingagoodinputoutputIOsystemisoneofthemoredifficulttasksforalanguagedesignerThisisevidencedbythenumberofdifferentapproachesThechallengeseemstobeincoveringallpossibilitiesNotonlyaretheredifferentsourcesandsinksofIOthatyouwanttocommunicatewithfilestheconsolenetworkconnectionsetcbutyouneedtotalktotheminawidevarietyofwayssequentialrandom-accessbufferedbinarycharacterbylinesbywordsetcTheJavalibrarydesignersattackedthisproblembycreatinglotsofclassesInfacttherearesomanyclassesforJavasIOsystemthatitcanbeintimidatingatfirstironicallytheJavaIOdesignactuallypreventsanexplosionofclassesTherewasalsoasignificantchangeintheIOlibraryafterJavaiowhentheoriginalbyte-orientedlibrarywassupplementedwithchar-orientedUnicode-basedIOclassesThenioclassesfor"newIO"anamewellstillbeusingyearsfromnoweventhoughtheywereintroducedinJDK14andsoarealready"old"wereaddedforimprovedperformanceandfunctionalityAsaresultthereareafairnumberofclassestolearnbeforeyouunderstandenoughofJavasIOpicturethatyoucanuseitproperlyInadditionitsratherimportanttounderstandtheevolutionoftheIOlibraryevenifyourfirstreactionis"Dontbothermewithhistoryjustshowmehowtouseit"TheproblemisthatwithoutthehistoricalperspectiveyouwillrapidlybecomeconfusedwithsomeoftheclassesandwhenyoushouldandshouldntusethemInputandoutputProgramminglanguageIOlibrariesoftenusetheabstractionofastreamwhichrepresentsanydatasourceorsinkasanobjectcapableofproducingorreceivingpiecesofdataThestreamhidesthedetailsofwhathappenstothedatainsidetheactualIOdeviceTheJavalibraryclassesforIOaredividedbyinputandoutputasyoucanseebylookingattheclasshierarchyintheJDKdocumentationThroughinheritanceeverythingderivedfromtheInputStreamorReaderclasseshasbasicmethodscalledreadforreadingasinglebyteoranarrayofbytesLikewiseeverythingderivedfromOutputStreamorWriterclasseshasbasicmethodscalledwriteforwritingasinglebyteoranarrayofbytesHoweveryouwon抰generallyusethesemethodstheyexistsothatotherclassescanusethem梩heseotherclassesprovideamoreusefulinterfaceThusyou抣lrarelycreateyourstreamobjectbyusingasingleclassbutinsteadwilllayermultipleobjectstogethertoprovideyourdesiredfunctionalitythisistheDecoratordesignpatternasyoushallseeinthissectionThefactthatyoucreatemorethanoneobjecttoproduceasinglestreamistheprimaryreasonthatJava抯IOlibraryisconfusingIt抯helpfultocategorizetheclassesbytheirfunctionalityInJavalothelibrarydesignersstartedbydecidingthatallclassesthathadanythingtodowithinputwouldbeinheritedfromInputStreamandallclassesthatwereassociatedwithoutputwouldbeinheritedfromOutputStreamTypeofInputStreamInputStreamsjobistorepresentclassesthatproduceinputfromdifferentsourcesThesesourcescanbeAnarrayofbytesAStringobjectAfileA"pipe"whichworkslikeaphysicalpipeYouputthingsinatoneendandtheycomeouttheotherAsequenceofotherstreamssoyoucancollectthemtogetherintoasinglestreamOthersourcessuchasanInternetconnectionThisiscoveredinThinkinginEnterpriseJavaavailableatcomEachofthesehasanassociatedsubclassofInputStreamInadditiontheFilterInputStreamisalsoatypeofInputStreamtoprovideabaseclassfor"decorator"classesthatattachattributeorusefulinterfacestoinputstreamsTypesofOutputStreamThiscategoryincludestheclassesthatdecidewhereyouroutputwillgoanarrayofbytesbutnotaStringpresumablyyoucancreateoneusingthearrayofbytesafileora"pipe"InadditiontheFilterOutputStreamprovidesabaseclassfor"decorator"classesthatattachattributesorusefulinterfacestooutputstreamsThisisdiscussedlaterAddingattributesandusefulinterfacesDecoratorswereintroducedintheGenericschapteronpage717TheJavaIOlibraryrequiresmanydifferentcombinationsoffeaturesandthisisthejustificationforusingtheDecoratordesignpattern1Thereasonfortheexistenceofthe"filter"classesintheJavaIOlibraryisthattheabstract"filter"classisthebaseclassforallthedecoratorsAdecoratormusthavethesameinterfaceastheobjectitdecoratesbutthedecoratorcanalsoextendtheinterfacewhichoccursinseveralofthe"filter"classesThereisadrawbacktoDecoratorhoweverDecoratorsgiveyoumuchmoreflexibilitywhileyourewritingaprogramsinceyoucaneasilymixandmatchattributesbuttheyaddcomplexitytoyourcodeThereasonthattheJavaIOlibraryisawkwardtouseisthatyoumustcreatemanyclassesthe"core"IOtypeplusallthedecoratorsinordertogetthesingleIOobjectthatyouwantTheclassesthatprovidethedecoratorinterfacetocontrolaparticularInputStreamorOutputStreamaretheFilterlnputStreamandFilterOutputStreamwhichdonthaveveryintuitivenamesFilterlnputStreamandFilterOutputStreamarederivedfromthebaseclassesoftheIOlibraryInputStreamandOutputStreamwhichisakeyrequirementofthedecoratorsothatitprovidesthecommoninterfacetoalltheobjectsthatarebeingdecoratedReadersWritersJava11madesignificantmodificationstothefundamentalIOstreamlibraryWhenyouseetheReaderandWriterclassesyourfirstthoughtlikeminemightbethattheseweremeanttoreplacetheInputStreamandOutputStreamclassesButthatsnotthecaseAlthoughsomeaspectsoftheoriginalstreamslibraryaredeprecatedifyouusethemyouwillreceiveawarningfromthecompilertheInputStreamandOutputStreamclassesstillprovidevaluablefunctionalityintheformofbyte-orientedIOwhereastheReaderandWriterclassesprovideUnicode-compliantcharacter-basedIOInadditionJava11addednewclassesintotheInputStreamandOutputStreamhierarchysoitsobviousthosehierarchieswerentbeingreplacedTherearetimeswhenyoumustuseclassesfromthe"byte"hierarchyincombinationwithclassesinthe"character"hierarchyToaccomplishthisthereare"adapter"classesInputStreamReaderconvertsanInputStreamtoaReaderandOutputStreamWriterconvertsanOutputStreamtoaWriterThemostimportantreasonfortheReaderandWriterhierarchiesisforinternationalizationTheoldIOstreamhierarchysupportsonly8-bitbytestreamsanddoesnthandlethe16-bitUnicodecharacterswellSinceUnicodeisusedforinternationalizationandJavasnativecharis16-bitUnicodetheReaderandWriterhierarchieswereaddedtosupportUnicodeinallIOoperationsInadditionthenewlibrariesaredesignedforfasteroperationsthantheoldStandardIOThetermstandardIOreferstotheUnixconceptofasinglestreamofinformationthatisusedbyaprogramthisideaisreproducedinsomeforminWindowsandmanyotheroperatingsystemsAlloftheprogramsinputcancomefromstandardinputallofitsoutputcangotostandardoutputandallofitserrormessagescanbesenttostandarderrorThevalueofstandardIOisthatprogramscaneasilybechainedtogetherandoneprogramsstandardoutputcanbecomethestandardinputforanotherprogramThisisapowerfultoolReadingfromstandardinputFollowingthestandardIOmodelJavahasSysteminSystemoutandSystemerrThroughoutthisbookyouveseenhowtowritetostandardoutputusingSystemoutwhichisalreadypre-wrappedasaPrintStreamobjectSystemerrislikewiseaPrintStreambutSysteminisarawInputStreamwithnowrappingThismeansthatalthoughyoucanuseSystemoutandSystemerrrightawaySysteminmustbewrappedbeforeyoucanreadfromitYoulltypicallyreadinputalineatatimeusingreadLineTodothiswrapSystemininaBufferedReaderwhichrequiresyoutoconvertSystemintoaReaderusingInputStreamReaderRedirectingTheJavaSystemclassallowsyoutoredirectthestandardinputoutputanderrorIOstreamsusingsimplestaticmethodcallssetInInputStreamsetOutPrintStreamsetErrPrintStreamRedirectingoutputisespeciallyusefulifyousuddenlystartcreatingalargeamountofoutputonyourscreenanditsscrollingpastfasterthanyoucanreadit4Redirectinginputisvaluableforacommand-lineprograminwhichyouwanttotestaparticularuser-inputsequencerepeatedlyNewIOTheJava"new"IOlibraryintroducedinJDK14inthejavaniopackageshasonegoalspeedInfactthe"old"IOpackageshavebeenreimplementedusingnioinordertotakeadvantageofthisspeedincreasesoyouwillbenefitevenifyoudontexplicitlywritecodewithnioThespeedincreaseoccursbothinfileIOwhichisexploredhereandinnetworkIOwhichiscoveredinThinkinginEnterpriseJavaThespeedcomesfromusingstructuresthatareclosertotheoperatingsystemswayofperformingIOchannelsandbuffersYoucouldthinkofitasacoalminethechannelistheminecontainingtheseamofcoalthedataandthebufferisthecartthatyousendintothemineThecartcomesbackfullofcoalandyougetthecoalfromthecartThatisyoudontinteractdirectlywiththechannelyouinteractwiththebufferandsendthebufferintothechannelThechanneleitherpullsdatafromthebufferorputsdataintothebufferTheonlykindofbufferthatcommunicatesdirectlywithachannelisaByteBufferthatisabufferthatholdsrawbytesIfyoulookattheJDKdocumentationforcomBufferyoullseethatitsfairlybasicYoucreateonebytellingithowmuchstoragetoallocateandtherearemethodstoputandgetdataineitherrawbyteformorasprimitivedatatypesButtheresnowaytoputorgetanobjectorevenaStringItsfairlylow-levelpreciselybecausethismakesamoreefficientmappingwithmostoperatingsystemsThreeoftheclassesinthe"old"IOhavebeenmodifiedsothattheyproduceaFileChannelFileInputStreamFileOutputStreamandforbothreadingandwritingRandomAccessFileNoticethatthesearethebytemanipulationstreamsinkeepingwiththelow-levelnatureofnioTheReaderandWritercharacter-modeclassesdonotproducechannelsbutthecomnelsChannelsclasshasutilitymethodstoproduceReadersandWritersfromchannelsReadingfromanInputStreamwithFilterlnputStreamTheFilterlnputStreamclassesaccomplishtwosignificantlydifferentthingsDatalnputStreamallowsyoutoreaddifferenttypesofprimitivedataaswellasStringobjectsAllthemethodsstartwith"read"suchasreadBytereadFloatetcThisalongwithitscompanionDataOutputStreamallowsyoutomoveprimitivedatafromoneplacetoanotherviaastreamTheremainingFilterlnputStreamclassesmodifythewayanInputStreambehavesinternallywhetheritsbufferedorunbufferedwhetheritkeepstrackofthelinesitsreadingallowingyoutoaskforlinenumbersorsetthelinenumberandwhetheryoucanpushbackasinglecharacterThelasttwoclasseslookalotlikesupportforbuildingacompilertheywereprobablyaddedtosupporttheexperimentof"buildingaJavacompilerinJava"soyouprobablywontusethemingeneralprogrammingYoullneedtobufferyourinputalmosteverytimeregardlessoftheIOdeviceyoureconnectingtosoitwouldhavemademoresensefortheIOlibrarytohaveaspecialcaseorsimplyamethodcallforunbufferedinputratherthanbufferedinputWritingtoanOutputStreamwithFilterOutputStreamThecomplementtoDatalnputStreamisDataOutputStreamwhichformatseachoftheprimi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)六年級(jí)數(shù)學(xué)下口算題800題
- 電梯限速器效驗(yàn)合同(2篇)
- 電力質(zhì)量保證合同(2篇)
- 2024-2025版教材新高中化學(xué)第3章第3節(jié)第3課時(shí)硝酸人類活動(dòng)對(duì)氮循環(huán)和環(huán)境的影響練習(xí)含解析魯科版必修第一冊(cè)
- 2024-2025學(xué)年高中物理第二章勻變速直線運(yùn)動(dòng)的研究第5節(jié)自由落體運(yùn)動(dòng)同步訓(xùn)練含解析新人教版必修1
- 2024-2025學(xué)年高中歷史第八單元19世紀(jì)以來的世界文學(xué)藝術(shù)第24課音樂與影視藝術(shù)課后篇鞏固提升新人教版必修3
- 2024-2025學(xué)年高中語(yǔ)文同步學(xué)典33讀書:目的和前提練習(xí)含解析部編版必修上冊(cè)
- 幼兒園秋游活動(dòng)工作總結(jié)
- 第一學(xué)期學(xué)年度工作總結(jié)
- 工會(huì)個(gè)人工作計(jì)劃
- 農(nóng)業(yè)行政執(zhí)法現(xiàn)狀及相關(guān)法律法規(guī)課件
- 三重一大事項(xiàng)決策流程
- 精密配電列頭柜介紹講義
- 廣東部分地區(qū)的暴雨強(qiáng)度公式
- 授居家二眾三皈、五戒儀規(guī)
- 裝修工程竣工驗(yàn)收?qǐng)?bào)告模板
- 簡(jiǎn)單娛樂yy頻道設(shè)計(jì)模板
- 防止機(jī)組非計(jì)劃停運(yùn)措施(鍋爐專業(yè))
- 最常用漢字個(gè)
- 慢性硬膜下血腫 ppt課件
- 變電站綜合自動(dòng)化系統(tǒng)課程自學(xué)指導(dǎo)
評(píng)論
0/150
提交評(píng)論