![基于安卓Android平臺(tái)的新聞客戶端的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文_第1頁(yè)](http://file4.renrendoc.com/view/3dd1c0461a0a6faae4478d8af0119f4c/3dd1c0461a0a6faae4478d8af0119f4c1.gif)
![基于安卓Android平臺(tái)的新聞客戶端的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文_第2頁(yè)](http://file4.renrendoc.com/view/3dd1c0461a0a6faae4478d8af0119f4c/3dd1c0461a0a6faae4478d8af0119f4c2.gif)
![基于安卓Android平臺(tái)的新聞客戶端的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文_第3頁(yè)](http://file4.renrendoc.com/view/3dd1c0461a0a6faae4478d8af0119f4c/3dd1c0461a0a6faae4478d8af0119f4c3.gif)
![基于安卓Android平臺(tái)的新聞客戶端的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文_第4頁(yè)](http://file4.renrendoc.com/view/3dd1c0461a0a6faae4478d8af0119f4c/3dd1c0461a0a6faae4478d8af0119f4c4.gif)
![基于安卓Android平臺(tái)的新聞客戶端的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文_第5頁(yè)](http://file4.renrendoc.com/view/3dd1c0461a0a6faae4478d8af0119f4c/3dd1c0461a0a6faae4478d8af0119f4c5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于Android平臺(tái)的新聞客戶端的設(shè)計(jì)與實(shí)現(xiàn)摘要隨著智能世界范圍內(nèi)的迅速開(kāi)展,智能的操作系統(tǒng)之間的競(jìng)爭(zhēng)也是越來(lái)越劇烈。為了讓智能用戶能夠十分便利地了解當(dāng)前世界的實(shí)時(shí)資訊,一種高效的方法就是將查看新聞的功能拓展到終端上。因此,開(kāi)發(fā)出一款智能的新聞客戶端將有廣闊的前景。本文是基于android操作系統(tǒng),開(kāi)發(fā)出一款android新聞客戶端應(yīng)用程序,通過(guò)工具Eclipse編寫(xiě)邏輯代碼,ApacheTomcat6.0作為應(yīng)用程序的效勞器,根據(jù)數(shù)據(jù)量的要求,采用Mysql數(shù)據(jù)庫(kù)處理數(shù)據(jù),三者共同作用開(kāi)發(fā)出的android新聞客戶端軟件。本文在分析Android系統(tǒng)軟件開(kāi)發(fā)原理的技術(shù)層面上,開(kāi)發(fā)出能為用戶提供更人性化、更方便的基于Android新聞客戶端軟件。通過(guò)實(shí)踐與測(cè)試,本文所述的原理和方法能夠完成設(shè)計(jì)所需要的功能。【關(guān)鍵詞】Android;新聞客戶端軟件;智能操作系統(tǒng)DesignandRealizationofAndroidClientBasedonTheNewsAbstractWiththerapiddevelopmentofsmartphonesworldwide,competitionbetweensmartphoneoperatingsystemisalsomoreintense.Toallowsmartphoneuserstoreal-timeinformationisveryconvenienttounderstandthecurrentworld,anefficientapproachistoviewthenewsfeaturetoexpandtothemobileterminals.Therefore,thedevelopmentofasmartphonenewsclientwillhavebroadprospects.Thisarticleisbasedonandroidoperatingsystem,developedanandroidphonenewsclientapplicationlogiccodebywritingtoolsEclipse,ApacheTomcat6.0asaserverapplication,accordingtotheamountofdatarequiredtoprocessdatausingMysqldatabase,combinedactiondevelopedaandroidphonenewsclientsoftware.ThispaperanalyzestheAndroidsysteminprinciplethetechnicalaspectsofsoftwaredevelopment,thedevelopmentcouldprovideamorehumane,moreconvenientmobileoperatingsystembasedonAndroidnewsclientsoftwareforusers.Throughpracticeandtesting,principlesandmethodsdescribedhereincanachievetherequiredfunctionaldesign.【Keywords】Android;NewsClientSoftware;Smartphoneoperatingsystems目錄1緒論 11.1研究?jī)?nèi)容 11.2研究意義 11.3研究現(xiàn)狀和開(kāi)展趨勢(shì) 12系統(tǒng)分析與環(huán)境搭建 22.1研究目標(biāo) 22.2可行性分析 22.3需求分析 32.4性能分析 32.5開(kāi)發(fā)環(huán)境的搭建 32.5.1Java環(huán)境配置 32.5.2Eclipse的安裝 32.5.3EclipseStandard的安裝 32.5.4Tomcat效勞器的安裝 32.5.5Mysql數(shù)據(jù)庫(kù)的安裝 33系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 43.1軟件流程 43.1.1模塊設(shè)計(jì) 43.1.2功能設(shè)計(jì) 53.3用戶界面設(shè)計(jì) 53.4數(shù)據(jù)庫(kù)設(shè)計(jì) 63.5軟件的實(shí)現(xiàn) 83.5.1文件結(jié)構(gòu)與說(shuō)明 83.5.2具體實(shí)現(xiàn) 114系統(tǒng)測(cè)試 174.1軟件的測(cè)試 174.2測(cè)試結(jié)果及說(shuō)明 175總結(jié)與展望 215.1總結(jié) 215.2展望 21參考文獻(xiàn) 22致謝 23附錄A 241 緒論1.1研究?jī)?nèi)容 Android應(yīng)用平臺(tái)新聞客戶端軟件是基于Android平臺(tái),采用Java語(yǔ)言,從網(wǎng)絡(luò)上的開(kāi)放的新聞接口獲取數(shù)據(jù),設(shè)計(jì)出針對(duì)使用Android平臺(tái)的新聞客戶端資訊實(shí)時(shí)掌控的應(yīng)用程序。1.2研究意義 Android平臺(tái)新聞客戶端軟件的開(kāi)發(fā)可以進(jìn)一步擴(kuò)大時(shí)事新聞的覆蓋面,讓廣闊公眾能夠隨時(shí)隨地方便且快捷地獲取最新的新聞資訊信息,了解新聞時(shí)事,本軟件的廣泛使用,尤其是在傳授知識(shí)、普及教育方面起著非常重要的作用。1.3研究現(xiàn)狀和開(kāi)展趨勢(shì)目前市場(chǎng)研究機(jī)構(gòu)Worldpanel發(fā)布了全球主要的國(guó)家智能操作系統(tǒng)在去年Q4內(nèi)的分布報(bào)告,報(bào)告指出了谷歌的Android繼續(xù)保持著增長(zhǎng)的勢(shì)態(tài),但是增幅已經(jīng)明顯放緩了。而在另一個(gè)方面,蘋(píng)果iOS操作系統(tǒng)在全球只能市場(chǎng)上均有下滑,個(gè)別國(guó)家的降幅甚至高達(dá)10.3%。最新統(tǒng)計(jì)數(shù)據(jù)中顯示,Android操作系統(tǒng)將繼續(xù)領(lǐng)跑全球市場(chǎng),包括美國(guó)、澳大利亞、中國(guó)、意大利、英國(guó)、德國(guó)、西班牙等所占的市場(chǎng)比例都已經(jīng)超出50%,并且還將繼續(xù)呈現(xiàn)上漲的趨勢(shì)。而在蘋(píng)果iOS操作系統(tǒng)方面,最大的市場(chǎng)份額所占比的國(guó)家依舊是美國(guó),數(shù)值為43.9%;緊隨美國(guó)的那么是澳大利亞,數(shù)值為35.2%;而在中國(guó)方面,市場(chǎng)份額也從21.2%下降到了19%;在意大利,iOS所占的市場(chǎng)份額更是從23.1%猛降至12.8%[1]。從上面的數(shù)據(jù)可以看出,Android軟件的開(kāi)發(fā)具有巨大的開(kāi)展前景,在Android系統(tǒng)上開(kāi)發(fā)出一款新聞客戶端軟件所支持的用戶量也是相比擬于其他系統(tǒng)多出很多的。谷歌的移動(dòng)平臺(tái)主管安迪·魯賓(AndyRubin)表示,跟軟件開(kāi)發(fā)合作對(duì)象的密切接觸正在進(jìn)行中。Google與開(kāi)放聯(lián)盟聯(lián)合開(kāi)發(fā)了Android操作系統(tǒng),這個(gè)聯(lián)盟由摩托羅拉、高通、宏達(dá)電、中國(guó)移動(dòng)和T-Mobile等在內(nèi)的多家無(wú)線應(yīng)用和技術(shù)的領(lǐng)軍企業(yè)組成。Google通過(guò)與設(shè)備制造商、開(kāi)發(fā)商、運(yùn)營(yíng)商和其他有關(guān)各方結(jié)成深層次的合作關(guān)系,希望借助建立開(kāi)放式、標(biāo)準(zhǔn)化的移動(dòng)移動(dòng)軟件平臺(tái),在移動(dòng)產(chǎn)業(yè)內(nèi)形成一個(gè)開(kāi)放性的生態(tài)系統(tǒng),這將是開(kāi)發(fā)Android軟件的一個(gè)契機(jī),Android平臺(tái)的開(kāi)發(fā)在將來(lái)必定大放異彩[2]。2系統(tǒng)分析與環(huán)境搭建2.1研究目標(biāo)1)了解Android應(yīng)用的設(shè)計(jì)和開(kāi)發(fā)過(guò)程;2)使用多種組件進(jìn)行Android平臺(tái)新聞軟件的開(kāi)發(fā)。本款新聞客戶端軟件是采用java語(yǔ)言編寫(xiě),基于Eclipse的開(kāi)發(fā)平臺(tái),連接網(wǎng)絡(luò)新聞數(shù)據(jù)接口,開(kāi)發(fā)出了針對(duì)Android平臺(tái)的新聞客戶端軟件。2.2可行性分析開(kāi)發(fā)任何一個(gè)基于的應(yīng)用程序,都會(huì)受到資源和時(shí)間上的限制。因此,在接收任何一個(gè)應(yīng)用程序發(fā)任務(wù)之前,必須根據(jù)用戶可能提供的資源和時(shí)間條件進(jìn)行可行性分析,旨在減少工程開(kāi)發(fā)風(fēng)險(xiǎn),防止人力、財(cái)力和物力的浪費(fèi)。風(fēng)險(xiǎn)分析與可行性分析在很多方面是相互關(guān)聯(lián)的,工程的風(fēng)險(xiǎn)越大,開(kāi)發(fā)質(zhì)量高的軟件的可行性的幾率就越小。1)經(jīng)濟(jì)可行性采用的數(shù)據(jù)流量作為通信手段,當(dāng)今通信技術(shù)的迅速開(kāi)展,2G的運(yùn)營(yíng)商的GSM網(wǎng)絡(luò)已經(jīng)逐漸被當(dāng)今的3G、甚至是4G所取代,數(shù)據(jù)流量的資費(fèi)也越來(lái)越低,而且現(xiàn)在很多都可連接無(wú)線wifi,實(shí)現(xiàn)數(shù)據(jù)流量0資費(fèi),大大加強(qiáng)了本新聞閱讀軟件的經(jīng)濟(jì)可行性。2)技術(shù)可行性開(kāi)發(fā)一個(gè)新聞客戶端軟件,用到的技術(shù)不會(huì)十分復(fù)雜,用到最多的就是客戶端與效勞端的數(shù)據(jù)交換時(shí)所用到的servlet及常見(jiàn)的數(shù)據(jù)庫(kù)技術(shù),android系統(tǒng)下的解析json數(shù)據(jù)以及UI的設(shè)計(jì),經(jīng)查閱相關(guān)資料是可以實(shí)現(xiàn)的。2.3需求分析啟動(dòng)程序后可以進(jìn)行新聞資訊的實(shí)時(shí)更新,可分不同的欄目讓使用者了解任意感興趣的資訊進(jìn)行閱讀,同時(shí),能對(duì)感興趣的新聞資訊發(fā)表自己的意見(jiàn),進(jìn)行評(píng)論,其他用戶也能看見(jiàn)別人發(fā)表的評(píng)論,從而進(jìn)行互動(dòng)交流,增強(qiáng)用戶的體驗(yàn)感,用戶能通過(guò)下拉新聞列表,方便于操作。從上面的描述中可以根本了解軟件的功能需求:1)啟動(dòng)應(yīng)用程序;2)設(shè)置界面:采用多種布局嵌套,美化控件。3)顯示界面:模仿網(wǎng)易新聞客戶端進(jìn)行UI編寫(xiě)。4)詳細(xì)界面:分為頭條、推薦、娛樂(lè)、體育、財(cái)經(jīng)、科技、游戲等板塊。2.4性能分析從用戶的角度出發(fā),針對(duì)用戶的需求,所涉及的程序響應(yīng)速度快、信息處理速度快、平安性高是用戶所需要的三大主要性能[2],另外為了受眾面更廣,根據(jù)目前的android設(shè)備系統(tǒng)版本的分布情況,android2.3以上的版本占到設(shè)備總量的80%以上,所以做開(kāi)發(fā)的時(shí)候選擇的android系統(tǒng)最低版本也必須是android2.3以上來(lái)保證用戶量。2.5開(kāi)發(fā)環(huán)境的搭建Java環(huán)境配置采用jdk的版本是jdk1.6,目前jdk版本最高的是jdk1.7,但是為了程序的穩(wěn)定性,還是采用已經(jīng)穩(wěn)定成熟的版本作為開(kāi)發(fā)工具。從Oracle公司下載jdk1.6之后安裝,由于本機(jī)的開(kāi)發(fā)系統(tǒng)是win8的64位操作系統(tǒng),選擇下載64為jdk,然后按照安裝步驟一步一步next,jdk就安裝完成了,然后配置環(huán)境java的環(huán)境變量,整個(gè)jdk的過(guò)程就完成了。Eclipse的安裝從Eclipse官網(wǎng):///downloads/下載Eclipse3.2,根據(jù)系統(tǒng)下載相應(yīng)的Eclipse版本,點(diǎn)擊解壓縮就行了,然后啟動(dòng)eclipse.exe就行了。值得注意的是Eclipse的bit數(shù)要與jdk的一致,就是說(shuō)jdk如果是32位的,Eclipse也要是32位的。EclipseStandard4.3.2的安裝EclipseStandard版本用來(lái)做效勞器端程序,方法與Eclipse的方法類(lèi)似。Tomcat效勞器的安裝從:/下載tomcat6.0作為的效勞器,下載好文件后開(kāi)始安裝,點(diǎn)擊下一步,在安裝過(guò)程中會(huì)提示設(shè)置默認(rèn)的效勞器端口號(hào),假設(shè)是不做修改默認(rèn)為8080,建議不要修改,安裝完成。在EclipseforJavaEE建立效勞器工程的時(shí)候選擇剛剛安裝的tomcat作為效勞器就行了。安裝Mysql數(shù)據(jù)庫(kù)現(xiàn)如今有很多種類(lèi)的數(shù)據(jù)庫(kù),如oracle、sqlserver、mysql、access等等很多種,但是在選擇的時(shí)候也有考究,本設(shè)計(jì)的開(kāi)發(fā)涉及到的數(shù)據(jù)并不是很多所以選擇一種輕量級(jí)的數(shù)據(jù)mysql[3]。3系統(tǒng)設(shè)計(jì)3.1系統(tǒng)流程模塊設(shè)計(jì)軟件分為了兩大模塊,分別是新聞客戶端模塊和效勞器模塊。圖形解析能夠清楚的看出程序的功能與流程,以下圖3-1是客戶端流程圖:新聞界面新聞界面詳細(xì)界面效勞器接收指令詳細(xì)界面效勞器接收指令接收效勞器的數(shù)據(jù)接收效勞器的數(shù)據(jù)評(píng)論界面評(píng)論界面顯示在界面顯示在界面圖3-1客戶端流程圖如以下圖圖3-2所示的是效勞器端的流程圖:客戶端客戶端效勞器接收指令效勞器接收指令生成sql語(yǔ)句生成sql語(yǔ)句調(diào)用sql類(lèi)調(diào)用sql類(lèi)返回結(jié)果數(shù)據(jù)庫(kù)操作返回結(jié)果數(shù)據(jù)庫(kù)操作圖3-2效勞器流程圖功能設(shè)計(jì)客戶端模塊功能結(jié)構(gòu)如以下圖所示3-3:新聞客戶端新聞客戶端新聞內(nèi)容管理新聞內(nèi)容管理游戲科技時(shí)尚財(cái)經(jīng)娛樂(lè)體育推薦頭條游戲科技時(shí)尚財(cái)經(jīng)娛樂(lè)體育推薦頭條詳細(xì)內(nèi)容管理詳細(xì)內(nèi)容管理評(píng)論管理評(píng)論管理圖3-3客戶端功能結(jié)構(gòu)圖效勞器端模塊功能結(jié)構(gòu)如以下圖3-4所示:數(shù)據(jù)庫(kù)配置數(shù)據(jù)轉(zhuǎn)換工具數(shù)據(jù)解析配置數(shù)據(jù)交互管理數(shù)據(jù)模型配置效勞器端數(shù)據(jù)庫(kù)配置數(shù)據(jù)轉(zhuǎn)換工具數(shù)據(jù)解析配置數(shù)據(jù)交互管理數(shù)據(jù)模型配置效勞器端圖3-4效勞器端功能結(jié)構(gòu)圖3.3用戶界面設(shè)計(jì)根據(jù)需求分析可知,應(yīng)用程序應(yīng)包含三個(gè)主要的用戶界面,這里要進(jìn)一步分析每個(gè)用戶界面中應(yīng)該包括哪些顯示內(nèi)容。1)在“新聞概況頁(yè)面〞中,需要顯示得是各類(lèi)新聞的的欄目頭,然后在選擇欄目頭時(shí)選擇相應(yīng)的新聞資訊信息顯示在當(dāng)前的欄目頭下,資訊信息以一個(gè)ListView的形式展示在界面上,用戶可拖動(dòng)獲得內(nèi)容,并在滑到最后一個(gè)內(nèi)容時(shí)有一個(gè)加載更多的按鈕,用戶點(diǎn)擊之后可以獲得更多內(nèi)容。2)在“詳細(xì)新聞頁(yè)面〞中,用戶在點(diǎn)擊了一條新聞之后,可以進(jìn)入詳細(xì)新聞界面,在界面中會(huì)展示當(dāng)前所點(diǎn)擊新聞的標(biāo)題、發(fā)表時(shí)間、作者以及評(píng)論條數(shù),在點(diǎn)擊新聞詳細(xì)內(nèi)容的區(qū)域向兩邊滑動(dòng)的時(shí)候還能顯示上一條新聞和下一條新聞,方便操作,不需要返回上一個(gè)界面之后才能閱讀上一條或者下一條。3)在“新聞評(píng)論頁(yè)面〞中,此頁(yè)面展示的信息就比擬簡(jiǎn)單了,根據(jù)時(shí)間的排列顯示相應(yīng)新聞的評(píng)論內(nèi)容,一條內(nèi)容包含的信息有,用戶所在的省份,發(fā)表的時(shí)間以及評(píng)論的內(nèi)容,在發(fā)表評(píng)論的編輯框會(huì)默認(rèn)提示用戶“請(qǐng)文明發(fā)表言論〞。以下圖就是根據(jù)對(duì)新聞界面顯示內(nèi)容的分析,繪制出用戶界面的草圖。圖3-5用戶界面草圖3.4數(shù)據(jù)庫(kù)設(shè)計(jì)本軟件是一個(gè)需要存儲(chǔ)很多新聞資訊信息的程序,其中包括新聞的閱讀和用戶的評(píng)論信息,這些數(shù)據(jù)都是要從數(shù)據(jù)庫(kù)中查詢而來(lái)的并不是緩存的數(shù)據(jù),所以少不了使用數(shù)據(jù)庫(kù),其中數(shù)據(jù)庫(kù)為我們管理數(shù)據(jù)提供方便,Mysql數(shù)據(jù)庫(kù)使用方便、易懂。如以下圖3-6所示的是新聞欄目的E-R圖:新聞欄目新聞欄目編號(hào)序列標(biāo)題編號(hào)序列標(biāo)題圖3-6新聞欄目E-R圖如以下圖3-7所示的是新聞詳細(xì)內(nèi)容的E-R圖:欄目編號(hào)新聞編號(hào)標(biāo)題新聞欄目?jī)?nèi)容來(lái)源序列欄目編號(hào)新聞編號(hào)標(biāo)題新聞欄目?jī)?nèi)容來(lái)源序列評(píng)論數(shù)量評(píng)論數(shù)量編號(hào)摘要編號(hào)摘要圖3-7新聞詳細(xì)內(nèi)容E-R圖如以下圖3-8所示的是新聞評(píng)論的E-R圖:新聞編號(hào)欄目編號(hào)新聞欄目新聞編號(hào)欄目編號(hào)新聞欄目地區(qū)評(píng)論時(shí)間評(píng)論內(nèi)容地區(qū)評(píng)論時(shí)間評(píng)論內(nèi)容圖3-8新聞評(píng)論內(nèi)容E-R圖本軟件中有三張表的數(shù)據(jù)需要存儲(chǔ),因此在MySql中分別建立三張表。新聞?lì)悇e分類(lèi)表t_category,新聞評(píng)論表t_comment,新聞內(nèi)容表t_news。三張表分別如下表所示:表3.1新聞?lì)悇e分類(lèi)表t_category的結(jié)構(gòu)屬性數(shù)據(jù)類(lèi)型說(shuō)明cidinteger分類(lèi)編號(hào),自動(dòng)增加的主鍵titleString分類(lèi)名稱(chēng)sequncetext序列表3.2顯示新聞評(píng)論表t_comment的結(jié)構(gòu)屬性數(shù)據(jù)類(lèi)型說(shuō)明cidinteger評(píng)論編號(hào),自動(dòng)增長(zhǎng)nidinteger新聞編號(hào)ptimeString評(píng)論的日期regionString發(fā)布人地區(qū)〔默認(rèn)為未知地區(qū)〕contentString評(píng)論內(nèi)容續(xù)表3.2顯示新聞評(píng)論表t_comment的結(jié)構(gòu)supportcountString支持?jǐn)?shù)opposecounttext反對(duì)數(shù)表3.3顯示新聞內(nèi)容表t_news的結(jié)構(gòu)屬性數(shù)據(jù)類(lèi)型說(shuō)明nidinteger新聞編號(hào)編號(hào),自動(dòng)增長(zhǎng)cidinteger新聞分類(lèi)號(hào)titleString新聞標(biāo)題bodyString新聞?wù)膕ourceString新聞來(lái)源ptimeString發(fā)表時(shí)間imgsrctext圖片來(lái)源summaryString摘要sequenceint序列仔細(xì)分析不難得出,后臺(tái)效勞是整個(gè)應(yīng)用程序的核心,主要是“數(shù)據(jù)獲取〞,用戶進(jìn)行點(diǎn)擊操作,后臺(tái)效勞接收用戶的指令,向效勞器接口調(diào)用收據(jù),效勞端接收指令,從效勞器進(jìn)行相應(yīng)的增刪改查,然后返回信息給客戶端,使用戶獲得需要的新聞資訊,滿足客戶的需求。效勞端器端的代碼主要的功能就是對(duì)數(shù)據(jù)庫(kù)進(jìn)行的操作,采用servlet技術(shù)通過(guò)接受客戶端傳過(guò)來(lái)的指令查詢數(shù)據(jù)庫(kù),然后返回json數(shù)據(jù)格式的數(shù)據(jù)跟客戶端進(jìn)行數(shù)據(jù)交互操作,簡(jiǎn)單方便,客戶端接收的時(shí)候也能十分方便的解析出來(lái),顯示在用戶界面上。在完成用戶界面設(shè)計(jì)、效勞器和數(shù)據(jù)庫(kù)設(shè)計(jì)后,至此軟件的框架設(shè)計(jì)階段根本完成。3.5功能的實(shí)現(xiàn)文件結(jié)構(gòu)與說(shuō)明1)客戶端Eclipse開(kāi)發(fā)局部在程序的開(kāi)發(fā)階段,首先確定“Android平臺(tái)新聞客戶端〞的工程名為“快看新聞〞,據(jù)程序模塊設(shè)計(jì)的內(nèi)容,建立“快看新聞〞工程,然后分析完成功能所需要的代碼結(jié)構(gòu),認(rèn)真完善,做好每一個(gè)功能。其工程源代碼的結(jié)構(gòu)與作用如以下圖3-9所示。圖3-9“快看新聞〞工程的源代碼文件為了使源代碼文件的結(jié)構(gòu)更清晰,快看新聞〞工程設(shè)置了多個(gè)命名空間,其包的作用分別展示在下表。表3.4“快看新聞〞工程的文件用途說(shuō)明包名稱(chēng)文件名說(shuō)明Category.java新聞欄目的bean類(lèi)CustomSimpleAdapter.java新聞欄目標(biāo)題的適配器DensityUtil.java像素和dip之間的轉(zhuǎn)換工具類(lèi)StringUtil.javaString數(shù)據(jù)轉(zhuǎn)化成int的工具類(lèi)MainActivity.java主新聞界面的ActivitycoCommentActivity.java新聞評(píng)論界面的ActivityNewDetailActivity.ava新聞詳細(xì)內(nèi)容的Activity包內(nèi)所有文件互聯(lián)網(wǎng)上開(kāi)源的異步訪問(wèn)框架結(jié)構(gòu)Android中資源文件都保存在/res的子目錄中。其中,/res/drawable/目錄中下保存的是圖像文件,/res/values目錄中保存的是自定義的字符串和顏色的文件以及樣式文件,/res/xml目錄中保存的是xml格式的數(shù)據(jù)文件,/res/layout目錄下保存的是UI的布局文件。/res/anim目錄下包含的是所有的動(dòng)畫(huà)控制文件。程序開(kāi)發(fā)階段可以被調(diào)用的所有資源都保存在這些目錄中[4],具體的文件圖圖3-10示如下。圖3-10android資源文件圖2)效勞器端EclipseStandard開(kāi)發(fā)局部在效勞器開(kāi)發(fā)端,建立工程名為“News〞的工程,如以下圖3-11所示圖3-11效勞器端目錄圖配合上圖的目錄結(jié)構(gòu)圖,使結(jié)構(gòu)更加清晰,目標(biāo)類(lèi)的作用分別展示在如下表3-5的工程文件目錄說(shuō)明中。表3.5“News〞工程的文件用途說(shuō)明包名稱(chēng)文件名說(shuō)明CategoryDAO.javaCommentDAO.javaNewsDAO.java對(duì)數(shù)據(jù)庫(kù)增刪改查的類(lèi)CpertiesSqlManager.java連接MySql的配置文件Category.javaComment.javaNews.java新聞、評(píng)論、類(lèi)型的模型類(lèi)GetCategoriesServlet.javaGetCommentsServlet.javaGetNewsServlet.javaGetSpecifyCategoryNewsServlet.javaPostCommentServlet.java數(shù)據(jù)交互操作的servlet類(lèi)org.jsonJSONArray.javaJSONException.javaJSONML.javaJSONObject.javaJSONString.javaJSONStringer.javaJSONTokener.javaJSONWriter.java生成json文件的工具類(lèi)org.jsonCDL.javaCookie.javaCookieList.java.javaTokener.java緩存級(jí)訪問(wèn)工具類(lèi)TextUtility.java字符編碼轉(zhuǎn)換工具類(lèi)具體實(shí)現(xiàn)主新聞頁(yè)面的設(shè)計(jì)與實(shí)現(xiàn)1)開(kāi)頭定義出頁(yè)面所需要用到的控件以及新聞欄目的適配器,從代碼中可以看出,除了全局變量layoutinflater,loadnews_progress,titlebar_refresh,MainActivity類(lèi)中有以上私有屬性cid、newsData、newsListAdapter、newslists、CatName、ategories。點(diǎn)擊新聞欄目之后,MainActivity會(huì)顯示相應(yīng)欄目下的的新聞信息,假設(shè)此欄目下有新聞的話就會(huì)顯示出來(lái),假設(shè)沒(méi)有新聞的話就會(huì)提示“該欄目下沒(méi)有新聞信息〞,要是無(wú)法連接網(wǎng)絡(luò)的話就會(huì)提示“網(wǎng)絡(luò)無(wú)法連接〞,十分清楚的告訴用戶現(xiàn)在所處的狀態(tài)??蛻舳瞬捎玫氖钱惒皆L問(wèn)框架,其中AsyncClient類(lèi)是十分方便的異步訪問(wèn)類(lèi),它是封裝好的,只需提供接口地址和參數(shù),就能十分方便的訪問(wèn)接口獲得數(shù)據(jù),并且不用再寫(xiě)回調(diào)方法,只需要AsyncClient中的cilent對(duì)象get或者post請(qǐng)求方式訪問(wèn)接口,然后重寫(xiě)兩個(gè)方法,一個(gè)是onsuccess(),另一個(gè)是onfailure(),其中onsuccess()方法是訪問(wèn)接口成功,獲得的數(shù)據(jù)將從方法的參數(shù)content中可以得到,然后再進(jìn)行相應(yīng)解析,當(dāng)由于接口錯(cuò)誤或者網(wǎng)絡(luò)錯(cuò)誤時(shí)或者返回錯(cuò)誤信息時(shí),請(qǐng)求數(shù)據(jù)時(shí)將會(huì)執(zhí)行onfailure()方法。2)訪問(wèn)接口成功后,會(huì)從效勞器得到一個(gè)json數(shù)據(jù),我們要做的就是解析它,然后將之填充到我們的頁(yè)面顯示,解析MainActivity.java頁(yè)面中接收各個(gè)欄目的json格式數(shù)據(jù),需要導(dǎo)入json包的支持,代碼見(jiàn)附錄A。3)加載更多新聞按鈕,是訪問(wèn)getSpeCatNews這個(gè)接口,點(diǎn)擊按鈕的時(shí)候只是傳的第二個(gè)參數(shù)變成了我們需要加載的新聞個(gè)數(shù),這是一個(gè)變量由我們自己定義出來(lái)的,getSpeCatNews(cid,newsData.size(),false)。newsData.size()新聞數(shù)目的size就是自己定義出來(lái)的變量。實(shí)現(xiàn)的代碼如下:loadMoreBtn.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){getSpeCatNews(cid,newsData.size(),false);}});4)關(guān)于界面的退出,是重寫(xiě)了onKeyDown()的方法,判斷是否按了后退鍵,然后在界面上提示再按一次退出鍵退出程序,兩次退出操作的時(shí)間間隔超過(guò)兩秒退出無(wú)效,兩秒以內(nèi)完成退出操作,具體界面退出的代碼見(jiàn)附錄 新聞詳細(xì)頁(yè)面的設(shè)計(jì)與實(shí)現(xiàn):1)頁(yè)面初始化首先要初始化變量一些控件和變量的信息,如上一頁(yè)按鈕newsdetails_titlebar_previous,下一頁(yè)按鈕newsdetails_titlebar_next,評(píng)論的按鈕newsdetails_titlebar_comments,以及手指觸摸屏幕時(shí)記錄的坐標(biāo)StartX起點(diǎn)坐標(biāo)X,floatStartY起點(diǎn)坐標(biāo)Y等等相關(guān)的控件及變量。2)發(fā)送評(píng)論評(píng)論按鈕newsdetails_titlebar_comments會(huì)通過(guò)intent對(duì)象把新聞的nid穿到評(píng)論頁(yè)面,這里是實(shí)現(xiàn)按鈕的監(jiān)聽(tīng),實(shí)現(xiàn)代碼:newsdetails_titlebar_comments.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){Intentintent=newIntent(NewDetailActivity.this,CommentActivity.class);intent.putExtra("nid",mNid);startActivity(intent);}});根據(jù)用戶的體驗(yàn)感,顯示詳細(xì)新聞信息的時(shí)候希望能夠不用返回主新聞界面查看下一條或者上一條新聞,所以在詳細(xì)新聞頁(yè)面添加手勢(shì)判斷功能,手指觸摸屏幕實(shí)現(xiàn)上一條或者是下一條,然后添加動(dòng)畫(huà)效果,讓用戶用起來(lái)更加舒服,更加人性化,動(dòng)畫(huà)效果的配置在res/anim目錄下。評(píng)論界面的設(shè)計(jì)與實(shí)現(xiàn)1)初始化變量首先定義頁(yè)面控件和一些變量,首先定義出評(píng)論界面的控件和變量,如發(fā)表按鈕news_reply_post,LinearLayoutnews_reply_edit_layout;//評(píng)論的編輯區(qū)域,LinearLayoutnews_reply_img_layout;//評(píng)論的圖形區(qū)域2)獲得評(píng)論信息獲得評(píng)論信息,訪問(wèn)評(píng)論的接口,以get方式傳遞新聞的id,然后從json的格式數(shù)據(jù)中獲得返回的評(píng)論信息,要是沒(méi)有網(wǎng)絡(luò)或者傳遞的參數(shù)不正確會(huì)彈出toast框提示錯(cuò)誤信息。獲得評(píng)論的接口地址是:.1:8080/News/getComments?nid="+nid"&startnid=0&count=10";里面的三個(gè)參數(shù)分別是:nid新聞ID,startnid評(píng)論的起始ID和count每次需要獲得的數(shù)目,參數(shù)的作用就是讓我們每次訪問(wèn)時(shí),只獲取10個(gè)數(shù)據(jù),這樣的好處就是節(jié)省數(shù)據(jù)流量,并且無(wú)需占用額外的內(nèi)存。3)發(fā)送評(píng)論信息以post方式請(qǐng)求數(shù)據(jù),通過(guò)Requestparams對(duì)象傳遞參數(shù)信息,發(fā)送評(píng)論的接口地址是:Stringurl="://:8080/News/postComment",需要傳遞的參數(shù)是:nid新聞ID,region發(fā)送人的地址,content發(fā)送內(nèi)容,訪問(wèn)的方法是采用異步訪問(wèn)框架的post方法訪問(wèn)成功會(huì)返回發(fā)送成功了信息,失敗也會(huì)有相應(yīng)提示,核心代碼參見(jiàn)附錄A。EclipseStandard效勞器端開(kāi)發(fā)局部1)首先導(dǎo)入測(cè)試類(lèi)和mysql的jar包如以下圖3-12。圖3-12測(cè)試類(lèi)和mysql的jar包2)配置servlet的web.xml文件詳見(jiàn)附錄A3)數(shù)據(jù)庫(kù)管理類(lèi)SqlManager.java的作用就是連接數(shù)據(jù)庫(kù)配置的屬性,包括數(shù)據(jù)庫(kù)主機(jī)地址、數(shù)據(jù)庫(kù)名、數(shù)據(jù)庫(kù)端口、數(shù)據(jù)庫(kù)密碼、連接字符串、連接對(duì)象。配置資源文件和JDBC的驅(qū)動(dòng)類(lèi)型,代碼如下:privatestaticSqlManagermanager=null;//靜態(tài)變量,支持單態(tài)模式 privatePropertyResourceBundlebundle;//配置資源文件 privatestaticStringjdbcDrive=null;//JDBC驅(qū)動(dòng)類(lèi)型 privateStringDBhost="";//數(shù)據(jù)庫(kù)主機(jī)地址 privateStringDBname="";//數(shù)據(jù)庫(kù)名 privateStringDBprot="";//數(shù)據(jù)庫(kù)端口 privateStringDBuser="";//數(shù)據(jù)庫(kù)用戶名 privateStringDBpasswd="";//數(shù)據(jù)庫(kù)密碼 privateStringstrcon=null;//連接字符串 privateConnectionconn=null;//連接對(duì)象 privatePreparedStatementpstm=null; privateCallableStatementcstm=null;私有的成員變量只是定義出來(lái),并沒(méi)有進(jìn)行初始化,創(chuàng)立一個(gè)Cperties的配置文件,用來(lái)配置連接數(shù)據(jù)的各項(xiàng)配置參數(shù)。Cperties的配置信息如下:DBpassword=123456然后再SqlManager.java添加一個(gè)私有的構(gòu)造方法,將Cperties的配置信息加載到代碼中來(lái),用new一個(gè)屬性資源的bundle,參數(shù)是得到一個(gè)配置文件的輸入流,構(gòu)造方法如下:privateSqlManager()throwsIOException{bundle=newPropertyResourceBundle(SqlManager.classgetResourceAsStream("Cperties"));this.DBhost=getString("DBhost");//讀取主機(jī)名this.DBname=getString("DBname");//讀取用戶名this.DBprot=getString("DBport");//讀取端口this.DBuser=getString("DBuser");//讀取用戶this.DBpasswd=getString("DBpassword");//讀取密碼//設(shè)置mysql數(shù)據(jù)庫(kù)的驅(qū)動(dòng)程序和連接字符river";strcon="jdbc:mysql://"+DBhost+":"+DBprot+"/"+DBname;}我們對(duì)數(shù)據(jù)庫(kù)的增、刪、改、查用到的方法全都依賴于SqlManager.java中的方法,要在SqlManager.java中寫(xiě)出查詢和更新的方法,在sql語(yǔ)句對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作的時(shí)候會(huì)根據(jù)sql語(yǔ)句的不同,參數(shù)也會(huì)不同,所以要在這里設(shè)置PrepareStatement對(duì)象中sql語(yǔ)句中的參數(shù)的方法,配置參數(shù)的代碼如下:privatevoidsetPrepareStatementParams(Stringsql,Object[]params)throwsSQLException{pstm=conn.prepareStatement(sql);//獲取對(duì)象if(params!=null){for(inti=0;i<params.length;i++)//遍歷參數(shù)列表填充參數(shù){pstm.setObject(i+1,params[i]); } }}執(zhí)行查詢操作是數(shù)據(jù)庫(kù)操作的核心功能,代碼如下:publicResultSetexecuteQuery(Stringsql,Object[]params)throwsSQLException{//執(zhí)行查詢數(shù)據(jù)庫(kù)接口ResultSetrs=null;manager.setPrepareStatementParams(sql,params);//填充參數(shù)rs=pstm.executeQuery();//執(zhí)行查詢操作returnrs;}更新數(shù)據(jù)庫(kù)的代碼如下:publicbooleanexecuteUpdate(Stringsql,Object[]params)throwsSQLException{booleanresult=false;manager.setPrepareStatementParams(sql,params);//填充參數(shù)pstm.executeUpdate();//執(zhí)行更新managermitChange();result=true;returnresult;}4)效勞器端的核心功能就是接收客戶端發(fā)過(guò)來(lái)的指令,獲得參數(shù)對(duì)數(shù)據(jù)進(jìn)行操作,然后返回json格式的數(shù)據(jù)給客戶端,這里面的數(shù)據(jù)交互所用到的技術(shù)是servlet技術(shù),前面已經(jīng)在web.xml文件中已經(jīng)對(duì)各個(gè)servlet進(jìn)行了配置。這里以接收客戶端發(fā)送過(guò)來(lái)的發(fā)表評(píng)論P(yáng)ostCommentServlet.java的指令為例,進(jìn)行說(shuō)明,因?yàn)槠渌牟僮髦噶铑?lèi)似,區(qū)別在于參數(shù)的獲得和json數(shù)據(jù)的生成,下面進(jìn)行詳細(xì)代碼的介紹。request.setCharacterEncoding("iso-8859-1")因?yàn)閺目蛻舳藗鬟^(guò)來(lái)的參數(shù)的編碼是“iso-8859-1〞,所以效勞器端接收數(shù)據(jù)是設(shè)置格式編碼為一致。發(fā)送評(píng)論的時(shí)候客戶端會(huì)向效勞器傳遞三個(gè)參數(shù),所以我們要接收者三個(gè)參數(shù):StringnidStr=request.getParameter("nid");Stringregion=request.getParameter("region");Stringcontent=request.getParameter("content");接收到的三個(gè)參數(shù)都是String類(lèi)型的數(shù)據(jù),因?yàn)閚id是int類(lèi)型,所以要對(duì)其進(jìn)行轉(zhuǎn)換,這里用到先前提到的工具類(lèi)TextUtility.java:intnid=TextUtility.String2Int(nidStr);參數(shù)content代表的發(fā)表評(píng)論內(nèi)容,參數(shù)region代表的是地域,它們都有可能是中文、英文以及數(shù)字,因?yàn)椤癷so-8859-1〞并不支持中文,所以這里要將它們轉(zhuǎn)換成“utf-8〞的編碼格式,這樣才不會(huì)出現(xiàn)亂碼的情況,這里同樣是用到TextUtility.java這個(gè)工具類(lèi),轉(zhuǎn)換如下:region=TextUtility.toUTF8(region);content=TextUtility.toUTF8(content);在獲得參數(shù)以后,需要調(diào)用CommentDAO.java中的addComment方法,將參數(shù)添加進(jìn)去。publicvoidaddComment(intnid,Stringptime,Stringregion,Stringcontent)throwsSQLException{sql="INSERTINTOt_comment(nid,ptime,region,content)VALUES Object[]params=newObject[]{nid,ptime,region,content};manager.connectDB();manager.executeUpdate(sql,params);manager.closeDB();}在增加成功之后,要返回一個(gè)成功的json數(shù)據(jù)給客戶端。其他的servlet類(lèi)的操作原理與上述類(lèi)似,這里就不一一累贅了。4系統(tǒng)測(cè)試4.1軟件的測(cè)試軟件測(cè)試的目的,第一個(gè)是確認(rèn)android新聞客戶端是否能運(yùn)行,其一個(gè)方面就是確認(rèn)軟件是否完成了我先前設(shè)計(jì)的那些功能。第二個(gè)是提供信息,比方提供應(yīng)我回饋信息,看看在開(kāi)發(fā)的哪些步驟上面能夠有精簡(jiǎn),能夠有提升。第三個(gè)是測(cè)試不僅是在測(cè)試這個(gè)新聞客戶端的本身,而且還包括了整個(gè)的開(kāi)發(fā)過(guò)程。如果在這個(gè)新聞客戶端開(kāi)發(fā)完成后出現(xiàn)了很多問(wèn)題,那就說(shuō)明了開(kāi)發(fā)的過(guò)程還存在漏洞。4.2測(cè)試與實(shí)現(xiàn)的結(jié)果及說(shuō)明1)采用的真機(jī)進(jìn)行測(cè)試在工程名“快看新聞〞上點(diǎn)右鍵,然后選擇“RunAs〞或者點(diǎn)擊菜單欄上面的按鈕,然后選擇“AndroidApplication〞。出現(xiàn)如以下圖4-1所示:圖4-1選擇測(cè)試工具圖為什么要用真機(jī)來(lái)做測(cè)試,因?yàn)橛脩舳际怯玫恼鏅C(jī),而且選擇用模擬器來(lái)做,有兩點(diǎn)弊端。(1)模擬器反響速度太慢(2)測(cè)試效果不如在真機(jī)上看的方便2)啟動(dòng)新聞客戶端選擇屏幕上的“快看新聞〞如以下圖4-2:圖4-2新聞頁(yè)面的圖標(biāo)3)進(jìn)入到載入界面如以下圖4-3所示:圖4-3載入界面效果圖4)然后就是顯示主要新聞界面的內(nèi)容了,界面顯示如前面設(shè)計(jì)的簡(jiǎn)單界面加以樣式修飾,界面包含軟件名稱(chēng)、刷新按鈕、新聞分欄、欄目下一欄的按鈕、新聞列表和加載更多按鈕,所有的新聞放在一個(gè)ListView里面界面只會(huì)顯示六條新聞,滑動(dòng)界面可以查看更多的新聞,點(diǎn)擊加載更多按鈕可以加載出更多的新聞參加ListView顯示在界面上,具體效果如以下圖4-4所示:圖4-4主新聞頁(yè)面效果圖5)點(diǎn)擊新聞列表中的某一條新聞,選擇查看新聞詳細(xì)信息,因?yàn)樵谥餍侣劦捻?yè)面只能看到新聞的預(yù)覽內(nèi)容,新聞的詳細(xì)頁(yè)面能夠看到新聞的標(biāo)題,詳細(xì)信息,發(fā)表人和發(fā)表時(shí)間,在上面的新聞分欄的右邊還能看到評(píng)論的數(shù)目信息,點(diǎn)擊新聞的數(shù)目的信息能夠看到該條新聞的具體評(píng)論信息,具體效果如以下圖5-5所示:圖4-5詳細(xì)新聞頁(yè)面效果圖 6)點(diǎn)擊跟帖數(shù)目,進(jìn)入評(píng)論界面,界面顯示的就是該條新聞的評(píng)論信息,每一條評(píng)論信息包含發(fā)表人的地點(diǎn),內(nèi)容和評(píng)論時(shí)間,然后再參加一條評(píng)論與左圖進(jìn)行比照,效果如以下圖4-6所示:圖4-6新聞評(píng)論頁(yè)面效果圖測(cè)試小結(jié):經(jīng)過(guò)一系列的測(cè)試,這款新聞客戶端軟件根本完成了預(yù)期的功能,并且系統(tǒng)的穩(wěn)定性也較好。5總結(jié)與展望5.1總結(jié)經(jīng)過(guò)數(shù)月的不懈努力,Android平臺(tái)新聞客戶端軟件終于完成了,用戶可以通過(guò)這款新聞客戶端了解新聞時(shí)事,對(duì)于Android平臺(tái)的開(kāi)發(fā)需要用到很多Java的根底知識(shí),在這方面Java語(yǔ)言帶給我了很多的方便。在整個(gè)開(kāi)發(fā)設(shè)計(jì)過(guò)程之中,我學(xué)習(xí)到了很多的Android平臺(tái)的知識(shí),比方Android的UI的設(shè)計(jì)優(yōu)化、樣式的的設(shè)計(jì)、Activity、Service、BroadcastReceiver、ContentProvider等四大組件的運(yùn)用,還有對(duì)Eclipse、Tomcat、Mysql等開(kāi)發(fā)工具的熟練使用。雖然軟件相比于已經(jīng)上線的新聞客戶端軟件還有一定的差距,但是這并沒(méi)有打擊我對(duì)于Android平臺(tái)開(kāi)發(fā)的興趣,反倒這是一件鼓勵(lì)我的事情,我從中發(fā)現(xiàn)了我很多缺乏的方面,然后可以通過(guò)更加認(rèn)真地學(xué)習(xí),掌握更多先進(jìn)的編程技術(shù),設(shè)計(jì)出更系統(tǒng)更好用的Android軟件。5.2展望經(jīng)過(guò)了對(duì)本軟件的設(shè)計(jì)和實(shí)踐,將老師在課堂上和自己在課外時(shí)間學(xué)習(xí)的知識(shí)做了一個(gè)總結(jié)。一方面有做的很好的地方,另一方面同樣也存在著有缺陷的地方。這是為我們馬上畢業(yè)工作敲的一個(gè)警鐘。學(xué)校學(xué)習(xí)到的知識(shí)雖然可能能用在工作中的并不會(huì)很多,但是我們?cè)趯W(xué)校學(xué)到的是學(xué)習(xí)方法,因?yàn)椴还茉谌魏坞A段,人總是需要不停地學(xué)習(xí)。在以后的工作和學(xué)習(xí)當(dāng)中,我將保持積極認(rèn)真的態(tài)度,遇事謹(jǐn)慎,仔細(xì)分析,以一顆永不停歇的心來(lái)面對(duì)人生,在軟件開(kāi)發(fā)這份職業(yè)上,需要充分鍛煉自己的思維與敏銳,因?yàn)檐浖_(kāi)發(fā)更新?lián)Q代是十分迅速的,想不被淘汰就不能停下學(xué)習(xí)的腳步。參考文獻(xiàn)肖云鵬,劉宴兵.Android程序設(shè)計(jì)教程[M].清華大學(xué)出版社,2021-04張榮.Android開(kāi)發(fā)與應(yīng)用[M].人民郵電出版,2021-02王向輝,張國(guó)印,賴明珠.Android應(yīng)用程序開(kāi)發(fā)[M].清華大學(xué)出版社,2021-05趙常松.Android應(yīng)用程序開(kāi)發(fā)與典型案例[M].電子工業(yè)出版社,2021-10高凱,仇晶.Android智能軟件開(kāi)發(fā)教程[M].國(guó)防工業(yè)出版社,2021-06孫衛(wèi)琴編著.JAVA面向?qū)ο缶幊蘙M].電子工業(yè)出版社,2021-7張帆編著.Java范例開(kāi)發(fā)大全[M].清華大學(xué)出版社,2010-6-1楊春花,俞黎敏.EffectiveJava中文版[M].機(jī)械工業(yè)出版社,2009-1-1[10]李剛.輕量級(jí)JavaEE企業(yè)應(yīng)用實(shí)戰(zhàn)[M].電子工業(yè)出版社,2008-11-1[11]〔美〕塞假設(shè)貝茨.HeadFirstJava〔中文版〕[M].中國(guó)電力出版社,2007-2-1[12]張孝祥,張紅梅.JavaScript網(wǎng)頁(yè)開(kāi)發(fā)[M].清華大學(xué)出版社,2004-11[13]張孝祥.深入體驗(yàn)JavaWeb開(kāi)發(fā)內(nèi)幕[M].電子工業(yè)出版社,2006-10-1[14]張孝祥.深入體驗(yàn)JavaWeb高級(jí)特性[M].電子工業(yè)出版社,2007-12[15]俞東進(jìn),任祖杰JavaEEWeb應(yīng)用開(kāi)發(fā)根底[M].電子工業(yè)出版社,2021-6[16]求是科技.Java數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)實(shí)例導(dǎo)航[J].人民郵電出版社,2004-5附錄A初始化新聞界面控件和變量:privateintcid;//新聞ID privateArrayList<HashMap<String,Object>>newsData;//新聞列表 privateSimpleAdapternewsListAdapter;//定義新聞欄目適配器 privateListViewnewslists;//新聞列表的ListView LayoutInflaterlayoutinflater; Buttontitlebar_refresh;//刷新按鈕 ProgressBarloadnews_progress;//進(jìn)程提示框 privateStringmCatName; privateList<HashMap<String,Category>>categories;獲取新聞的代碼:TextViewcategorytitle;for(inti=0;i<parent.getCount();i++){ categorytitle=(TextView)parent.getChildAt(i); categorytitle.setTextColor(0xffadb2ad); categorytitle.setBackgroundDrawable(null); } categorytitle=(TextView)v; categorytitle.setTextColor(Color.WHITE); categorytitl.setBackgroundResource(R.drawable.categorybar_item_background); if(newsListAdapter==null){ Toast.makeText(MainActivity.this,"網(wǎng)絡(luò)連接失敗",0).show(); return; } newsListAdapter.notifyDataSetChanged(); cid=categories.get(position).get("category_title").getCid(); mCatName=categories.get(position).get("category_title").getTitle(); System.out.println("cid="+cid);//獲取該欄目下新聞 System.out.println(newsData.size()+"newsData數(shù)目"); getSpeCatNews(cid,0,true); System.out.println(newsData.size()+"newsData數(shù)目");//通知ListView進(jìn)行更新 newsListAdapter.notifyDataSetChanged();}其中,封裝好的訪問(wèn)效勞器的接口方法:getSpeCatNews(cid,0,true),具體的代碼如下:publicvoidgetSpeCatNews(intcid,intstartnid,booleanfirsttime) { AsyncClientclient=newAsyncClient(); Stringpath="://6:8080/News/getSpecifyCategoryNews?startnid="+startnid+"&count=7&cid=" +cid; client.get(path,newAsyncResponseHandler(){ @Override publicvoidonSuccess(Stringcontent){ //TODOAuto-generatedmethodstub super.onSuccess(content); dothis(content); } publicvoidonFailure(Throwableerror,Stringcontent){ Toast.makeText(MainActivity.this,"網(wǎng)絡(luò)連接失敗,請(qǐng)檢查", 0).show(); } });}JSONArraynewslist=dataObject.getJSONArray("newslist");for(inti=0;i<newslist.length();i++){JSONObjectnewsObject=(JSONObject)newslist.opt(i);HashMap<String,Object>hashMap=newHashMap<String,Object>(); hashMap.put("nid",newsObject.getInt("nid")); hashMap.put("newslist_item_title",newsObject.getString("title")); hashMap.put("newslist_item_digest",newsObject.getString("digest")); hashMap.put("newslist_item_source",newsObject.getString("source")); hashMap.put("newslist_item_ptime",newsObject.getString("ptime")); hashMap.put("newslist_item_comments",newsObject.getString("commentcount"); newsData.add(hashMap);}退出界面實(shí)現(xiàn)的代碼如下: publicbooleanonKeyDown(intkeyCode,KeyEventevent){ if(keyCode==KeyEvent.KEYCODE_BACK){//截獲后退鍵 longcurrentTime=newDate().getTime(); //如果時(shí)間間隔大于2秒,不處理 if((currentTime-preTime)>TWO_SECOND){ Toast.makeText(this,"再按一次退出鍵退出程序", Toast.LENGTH_SHORT).show();//顯示消息 preTime=currentTime;//更新時(shí)間 returntrue;//截獲事件,不再處理 } } returnsuper.onKeyDown(keyCode,event);}評(píng)論界面的初始化代碼:ViewFlippernews_body_flipper;//動(dòng)畫(huà)Flipper LayoutInflaternewsbodyinflater; Buttonnewsdetails_titlebar_previous;//上一頁(yè) Buttonnewsdetails_titlebar_next;//下一頁(yè) Buttonnewsdetails_titlebar_comments;//評(píng)論按鈕 intcount;//數(shù)量 ArrayList<HashMap<String,Object>>mNewsData=new ArrayList<HashMap<String,Object>>(); intposition;//當(dāng)前頁(yè)面的位置 IntegermNid; floatStartX;//起點(diǎn)坐標(biāo)X floatStartY;//起點(diǎn)坐標(biāo)Y TextViewnewsdetails_titlebar_title; TextViewnewsDetails; HashMap<String,Object>hashmap;Viewbodyviewlayout;加載下一頁(yè) privatevoidshownext(){ if(position>=mNewsData.size()-1){ Toast.makeText(NewDetailActivity.this,"已到最后一頁(yè)", 0).show(); return; }else{ position++; inflateview(); news_body_flipper.setOutAnimation(this, R.anim.push_left_out); news_body_flipper.setInAnimation(this, R.anim.push_left_in); news_body_flipper.showNext(); }}加載上一頁(yè) privatevoidshowprevious(){ if(position<=0){ Toast.makeText(NewDetailActivity.this,"當(dāng)前已經(jīng)是第一頁(yè)", 0).show(); return; }else{ position--; inflateview(); news_body_flipper.setInAnimation(this, R.anim.push_right_in); news_body_flipper.setOutAnimation(this, R.anim.push_right_out); news_body_flipper.showPrevious(); }}判斷手指方向的代碼:publicbooleanonTouch(Viewv,MotionEventevent){ switch(event.getAction()){ caseMotionEvent.ACTION_DOWN: StartX=event.getX(); StartY=event.getY(); break; caseMotionEvent.ACTION_UP: floaty=StartY-event.getY(); floatx=StartX-event.getX(); if(x>0){//假設(shè)x>0,那么方向是向坐滑 floatangle=Math.abs(y)/Math.abs(x); if(angle<0.5){ shownext(); } }else//假設(shè)x<0,那么方向是向右滑{ floatangle=Math.abs(y)/Math.abs(x); if(angle<0.5){ showprevious(); } } break; } returntrue; }ImageButtonnews_reply_img_btn;//回復(fù)評(píng)論的imageview LinearLayoutnews_reply_edit_layout;//評(píng)論的編輯區(qū)域 LinearLayoutnews_reply_img_layout;//評(píng)論的圖形區(qū)域 Buttonnews_reply_post;//發(fā)表評(píng)論 intnid;//新聞id EditTextnews_reply_edittext;//評(píng)論的回復(fù)內(nèi)容 Stringcontent;List<HashMap<String,Object>>comments;發(fā)送評(píng)論的核心代碼: publicvoidsenComment(){ content=news_reply_edittext.getText().toString().trim(); AsyncClientclient=newAsyncClient(); Stringurl="://:8080/News/postComment"; RequestParamsparams=newRequestParams(); params.put("nid",nid+""); params.put("region","湖南省長(zhǎng)沙市"); params.put("content",content); client.post(url,params,newAsyncResponseHandler(){ //發(fā)送成功 publicvoidonSuccess(Stringcontent){ StringretStr=content; try{ JSONObjectjsonObject=newJSONObject(retStr); intretCode=jsonObject.getInt("ret"); if(0==retCode){ Toast.makeText(CommentActivity.this,"發(fā)送成功", Toast.LENGTH_SHORT).show(); return; } }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } //發(fā)送失敗 publicvoidonFailure(Throwableerror,Stringcontent){ Toast.makeText(CommentActivity.this,"網(wǎng)絡(luò)連接異常", Toast.LENGTH_SHORT).show(); } }); }Servlet的web.xml配置文件<servlet><servlet-name>GetCategoriesServlet</servlet-name><servlet-class>com.szy.web.servlet.GetCategoriesServlet</servlet-class></servlet><servlet><servlet-name>GetSpecifyCategoryNewsServlet</servlet-name><servlet-class>com.szy.web.servlet.GetSpecifyCategoryNewsServlet</servlet-class></servlet><servlet><servlet-name>GetNewsServlet</servlet-name><servlet-class>com.szy.web.servlet.GetNewsServlet</servlet-class></servlet><servlet><servlet-name>GetCommentsServlet</servlet-name> <servlet-class>com.szy.web.servlet.GetCommentsServlet</servlet-class></servlet><servlet><servlet-name>PostCommentServlet</servlet-name><servlet-class>com.szy.web.servlet.PostCommentServlet</servlet-class></servlet><servlet-mapping><servlet-name>GetCategoriesServlet</servlet-name><url-pattern>/getCategories</url-pattern></servlet-mapping><servlet-mapping><servlet-name>GetSpecifyCategoryNewsServlet</servlet-name><url-pattern>/getSpecifyCategoryNews</url-pattern></servlet-mapping><servlet-mapping><servlet-name>GetNewsServlet</servlet-name><url-pattern>/getNews</url-pattern></servlet-mapping><servlet-mapping><servlet-name>GetCommentsServlet</servlet-name><url-pattern>/getComments</url-pattern></servlet-mapping><servlet-mapping><servlet-name>PostCommentServlet</servlet-name><url-pattern>/postComment</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>本科畢業(yè)設(shè)計(jì)〔論文〕簡(jiǎn)明指導(dǎo)手冊(cè)1畢業(yè)設(shè)計(jì)(論文)總論1.1概述高等院校的畢業(yè)設(shè)計(jì)(論文)教學(xué)過(guò)程是實(shí)現(xiàn)本科培養(yǎng)目標(biāo)及規(guī)格的重要培養(yǎng)階段。畢業(yè)設(shè)計(jì)(論文)是學(xué)生畢業(yè)前的最后學(xué)習(xí)階段,是學(xué)習(xí)深化與升華的重要過(guò)程;是能力與素質(zhì)培養(yǎng)的重要途徑;是學(xué)生學(xué)習(xí)、研究與實(shí)踐成果的全面總結(jié);是學(xué)生綜合素質(zhì)與實(shí)踐能力培養(yǎng)效果的全面檢驗(yàn);是學(xué)生畢業(yè)及學(xué)位資格認(rèn)定的重要依據(jù);是評(píng)價(jià)高等學(xué)校教育教學(xué)質(zhì)量的重要依據(jù)。1.1.1畢業(yè)設(shè)計(jì)(論文)的根本概念〔1〕畢業(yè)設(shè)計(jì)的內(nèi)涵畢業(yè)設(shè)計(jì)是高等學(xué)校應(yīng)屆畢業(yè)生,畢業(yè)前接受課題任務(wù),所進(jìn)行的設(shè)計(jì)過(guò)程,并取得其設(shè)計(jì)成果?!?〕畢業(yè)論文的內(nèi)涵畢業(yè)論文是高等學(xué)校學(xué)生畢業(yè)前所撰寫(xiě)的學(xué)術(shù)論文。畢業(yè)論文說(shuō)明作者在科學(xué)研究工作中取得的新成果或提出的新見(jiàn)解,并說(shuō)明作者具有的科研能力與學(xué)識(shí)水平。畢業(yè)論文具有學(xué)術(shù)論文所共有的一般屬性,它的構(gòu)成與展開(kāi)嚴(yán)格按照緒論、本論、結(jié)論的思維方式,以事實(shí)為根底,以嚴(yán)謹(jǐn)?shù)耐评磉^(guò)程為依據(jù),得出可信的科學(xué)結(jié)論。1.1.2畢業(yè)設(shè)計(jì)(論文)的特點(diǎn)與功能〔1〕畢業(yè)設(shè)計(jì)的特點(diǎn)與功能①畢業(yè)設(shè)計(jì)的特點(diǎn)高等院校學(xué)生畢業(yè)設(shè)計(jì)具有設(shè)計(jì)內(nèi)容的科學(xué)性、設(shè)計(jì)思想的新穎性、設(shè)計(jì)表述的標(biāo)準(zhǔn)性、設(shè)計(jì)條件的約束性、設(shè)計(jì)過(guò)程的綜合性、設(shè)計(jì)結(jié)果的實(shí)用性等工程設(shè)計(jì)的特點(diǎn)外,還具有畢業(yè)設(shè)計(jì)任務(wù)確實(shí)定首先考慮教學(xué)根本要求、畢業(yè)設(shè)計(jì)時(shí)間的限定性及學(xué)業(yè)的規(guī)定性、畢業(yè)設(shè)計(jì)是在指導(dǎo)教師指導(dǎo)下獨(dú)立完成的等特點(diǎn)。②畢業(yè)設(shè)計(jì)的功能·教學(xué)與教育功能畢業(yè)設(shè)計(jì)教學(xué)過(guò)程是高等院校培養(yǎng)方案的重要組成局部;是進(jìn)行設(shè)計(jì)科學(xué)教育,強(qiáng)化工程意識(shí),接受工程根本訓(xùn)練,提高工程實(shí)踐能力的重要培養(yǎng)階段;是培養(yǎng)優(yōu)良的思維品質(zhì),進(jìn)行綜合素質(zhì)教育的重要途徑。通過(guò)畢業(yè)設(shè)計(jì)教學(xué)工作,培養(yǎng)學(xué)生綜合運(yùn)用多學(xué)科理論、知識(shí)與技能,解決具有一定復(fù)雜程度的工程實(shí)際問(wèn)題的能力;培養(yǎng)學(xué)生樹(shù)立正確的設(shè)計(jì)思想和掌握現(xiàn)代設(shè)計(jì)方法;培養(yǎng)學(xué)生嚴(yán)肅認(rèn)真的科學(xué)態(tài)度和嚴(yán)謹(jǐn)求實(shí)的工作作風(fēng);培養(yǎng)學(xué)生優(yōu)良的思維品質(zhì),強(qiáng)化工程實(shí)際意識(shí);培養(yǎng)學(xué)生2工學(xué)院畢業(yè)設(shè)計(jì)〔論文〕簡(jiǎn)明指導(dǎo)手冊(cè)勇于實(shí)踐、勇于探索和開(kāi)拓創(chuàng)新的精神。在畢業(yè)設(shè)計(jì)階段,通過(guò)畢業(yè)設(shè)計(jì)教學(xué)與教育功能的實(shí)現(xiàn),有益于學(xué)生科學(xué)的智能結(jié)構(gòu)的形成及綜合素質(zhì)的全面培養(yǎng)?!ど鐣?huì)功能畢業(yè)設(shè)計(jì)課題來(lái)源于實(shí)際,畢業(yè)設(shè)計(jì)成果直接或間接為經(jīng)濟(jì)建設(shè)效勞,為生產(chǎn)、科研效勞,為社會(huì)效勞,以實(shí)現(xiàn)畢業(yè)設(shè)計(jì)的社會(huì)功能?!?〕畢業(yè)論文的特點(diǎn)與功能①畢業(yè)論文的特點(diǎn)畢業(yè)論文或稱(chēng)學(xué)位論文是學(xué)術(shù)論文中的一種類(lèi)型,具有學(xué)術(shù)性、科學(xué)性、創(chuàng)造性,即一般學(xué)術(shù)論文的共同屬性,同時(shí)具有以下特點(diǎn):·畢業(yè)論文課題確實(shí)定,首先要符合教學(xué)根本要求,同時(shí)也要兼顧科學(xué)研究實(shí)際需要,緊密聯(lián)系實(shí)際?!ぎ厴I(yè)論文具有時(shí)間的限定性及學(xué)業(yè)的規(guī)定性。·畢業(yè)論文是在指導(dǎo)教師指導(dǎo)下獨(dú)立完成的。②畢業(yè)論文的功能·教學(xué)與教育功能畢業(yè)論文教學(xué)過(guò)程是高等學(xué)校培養(yǎng)方案的重要組成局部,是學(xué)生畢業(yè)前提交的一份具有一定理論與實(shí)際價(jià)值的學(xué)術(shù)論文。它是高等學(xué)校學(xué)生從事系統(tǒng)的科學(xué)研究的初步嘗試;是在指導(dǎo)教師指導(dǎo)下,對(duì)取得的科研成果的綜合表述。通過(guò)畢業(yè)論文的教學(xué)過(guò)程,培養(yǎng)學(xué)生探求未知、探索真理的科學(xué)精神,以及優(yōu)良的科學(xué)品質(zhì)與科學(xué)素養(yǎng);培養(yǎng)學(xué)生從事科學(xué)研究的根本能力。通過(guò)畢業(yè)論文的教學(xué)過(guò)程,檢驗(yàn)學(xué)生綜合運(yùn)用根底理論、根本知識(shí)和實(shí)驗(yàn)技術(shù),解決科學(xué)和技術(shù)領(lǐng)域有關(guān)問(wèn)題的能力;檢驗(yàn)科研根本訓(xùn)練的實(shí)際效果?!ど鐣?huì)功能畢業(yè)論文是以應(yīng)用研究成果作為媒介與生產(chǎn)和社會(huì)實(shí)際相聯(lián)系。然后,通過(guò)開(kāi)發(fā)研究的成果應(yīng)用于生產(chǎn)實(shí)際,為社會(huì)效勞。同時(shí),畢業(yè)論文又是面向社會(huì)發(fā)表研究成果的重要手段,也是信息交流與信息存儲(chǔ)的重要工具,從而實(shí)現(xiàn)其社會(huì)功能。3工學(xué)院畢業(yè)設(shè)計(jì)〔論文〕簡(jiǎn)明指導(dǎo)手冊(cè)1.2畢業(yè)設(shè)計(jì)(論文)教學(xué)各階段流程表1畢業(yè)設(shè)計(jì)(論文)教學(xué)各階段流程1、指導(dǎo)教師上報(bào)課12、教研室(課程組)召開(kāi)會(huì)議進(jìn)行課題審查、論證〔要求紀(jì)錄3、院系〔學(xué)術(shù)委員會(huì)〕或邀請(qǐng)校外專(zhuān)家對(duì)教研室上報(bào)課題進(jìn)行評(píng)4、對(duì)學(xué)生公布課題,并確保一名學(xué)生做一個(gè)課題〔或子課題5、院系匯總通過(guò)評(píng)審的課題,并作為教學(xué)執(zhí)行方案報(bào)教務(wù)1、指導(dǎo)教師指導(dǎo)學(xué)生查閱相關(guān)文獻(xiàn)〔包括一定數(shù)量的外文文獻(xiàn)22、畢業(yè)生就課題撰寫(xiě)開(kāi)題報(bào)告,開(kāi)題報(bào)告包括以下內(nèi)容2.1課題背景介2.2課題擬設(shè)計(jì)研究的主要內(nèi)容、實(shí)驗(yàn)方2.3相關(guān)文獻(xiàn)綜2.4預(yù)期成果〔或階段性結(jié)果3、開(kāi)題報(bào)告辯論〔各院系制定辯論方法,報(bào)教務(wù)處備案1
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年神經(jīng)科手術(shù)器械項(xiàng)目可行性研究報(bào)告
- 2025年棉氨綸背心式健美服項(xiàng)目可行性研究報(bào)告
- 2025年無(wú)粉防靜電紅色指套項(xiàng)目可行性研究報(bào)告
- 2025年扁圓濾芯項(xiàng)目可行性研究報(bào)告
- 2025年固定式遙控插座項(xiàng)目可行性研究報(bào)告
- 2025年南方花柜項(xiàng)目可行性研究報(bào)告
- 2025年絲網(wǎng)鋁框項(xiàng)目可行性研究報(bào)告
- 2025年CWDM解決方案項(xiàng)目可行性研究報(bào)告
- 2025至2030年鎖花片項(xiàng)目投資價(jià)值分析報(bào)告
- 2025至2030年行走馬達(dá)油封項(xiàng)目投資價(jià)值分析報(bào)告
- 如何構(gòu)建高效課堂課件
- 虛擬化與云計(jì)算技術(shù)應(yīng)用實(shí)踐項(xiàng)目化教程 教案全套 第1-14周 虛擬化與云計(jì)算導(dǎo)論-騰訊云服務(wù)
- 甲基丙烯酸甲酯生產(chǎn)工藝畢業(yè)設(shè)計(jì)設(shè)備選型與布置模板
- 徐金桂行政法與行政訴訟法新講義
- 瀝青拌合設(shè)備結(jié)構(gòu)認(rèn)知
- 2023年北京高考政治真題試題及答案
- 復(fù)旦中華傳統(tǒng)體育課程講義05木蘭拳基本技術(shù)
- 北師大版五年級(jí)上冊(cè)數(shù)學(xué)教學(xué)課件第5課時(shí) 人民幣兌換
- 工程回訪記錄單
- 住房公積金投訴申請(qǐng)書(shū)
- 檢驗(yàn)科生物安全風(fēng)險(xiǎn)評(píng)估報(bào)告
評(píng)論
0/150
提交評(píng)論