-基于Android計(jì)算器的設(shè)計(jì)與應(yīng)用論文-備課講稿_第1頁(yè)
-基于Android計(jì)算器的設(shè)計(jì)與應(yīng)用論文-備課講稿_第2頁(yè)
-基于Android計(jì)算器的設(shè)計(jì)與應(yīng)用論文-備課講稿_第3頁(yè)
-基于Android計(jì)算器的設(shè)計(jì)與應(yīng)用論文-備課講稿_第4頁(yè)
-基于Android計(jì)算器的設(shè)計(jì)與應(yīng)用論文-備課講稿_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Good is good, but better carries it.精益求精,善益求善。-基于Android計(jì)算器的設(shè)計(jì)與應(yīng)用論文-北京北大方正軟件技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)題目:基于Android計(jì)算器的設(shè)計(jì)與應(yīng)用系別:軟件工程分院專(zhuān)業(yè):軟件技術(shù)學(xué)號(hào):110110335姓名:王可可指導(dǎo)老師:李強(qiáng)完成日期:2014年5月20日北京北大方正軟件技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)成績(jī)?cè)u(píng)定表(理科)年級(jí)11級(jí)專(zhuān)業(yè)軟件技術(shù)姓名王可可學(xué)號(hào)110110335論文題目:基于Android計(jì)算器的設(shè)計(jì)與應(yīng)用指導(dǎo)教師:李強(qiáng)項(xiàng)目評(píng)分標(biāo)準(zhǔn)優(yōu)秀良好合格不合格選題優(yōu)秀:選題有重要理論意義和實(shí)際價(jià)值;良好:選題有較強(qiáng)理論意義和實(shí)

2、際價(jià)值;合格:選題有一定理論意義和實(shí)際價(jià)值;不合格:選題欠妥?;A(chǔ)知識(shí)優(yōu)秀:有堅(jiān)實(shí)的理論基礎(chǔ)和系統(tǒng)深入的專(zhuān)業(yè)知識(shí);良好:有較堅(jiān)實(shí)的理論基礎(chǔ)和系統(tǒng)深入的專(zhuān)業(yè)知識(shí);合格:有一定的理論基礎(chǔ)和專(zhuān)業(yè)知識(shí);不合格:基礎(chǔ)理論不夠全面,專(zhuān)業(yè)知識(shí)不系統(tǒng)。實(shí)踐能力優(yōu)秀:體現(xiàn)出較強(qiáng)的實(shí)踐工作能力;良好:體現(xiàn)出較好的實(shí)踐工作能力;合格:體現(xiàn)出一定的實(shí)踐工作能力;不合格:體現(xiàn)出工作能力較差。寫(xiě)作能力優(yōu)秀:條理清楚,層次分明,文筆流暢,學(xué)風(fēng)嚴(yán)謹(jǐn);良好:條理性好,層次分明,文字通順,工作認(rèn)真;合格:條理較好,層次較分明,文字較通順;不合格:條理不清,寫(xiě)作較差。論文綜合評(píng)價(jià)優(yōu)秀良好合格不合格指導(dǎo)教師評(píng)定意見(jiàn)簽字:年月日畢業(yè)設(shè)

3、計(jì)領(lǐng)導(dǎo)小組簽字簽字:年月日摘要目前手機(jī)可以說(shuō)是普及率非常高的電子設(shè)備了,由于其便于攜帶,使用方便,資費(fèi)適中等等原因,現(xiàn)在手機(jī)已經(jīng)在一定程度開(kāi)始代替固定電話(huà)的通話(huà)功能,以及一些原來(lái)電腦軟件上的功能了。手機(jī)上的軟件也隨著手機(jī)的發(fā)展變得豐富起來(lái)了,時(shí)至今日已經(jīng)出現(xiàn)了很多專(zhuān)門(mén)制作手機(jī)軟件的公司,雖然制作的多是游戲軟件,但是一些輔助性的工具軟件也有了很多。手機(jī)軟件簡(jiǎn)單說(shuō)就是可以安裝在手機(jī)上的軟件,作用自然是擴(kuò)展手機(jī)的原始功能,使手機(jī)變得更加的實(shí)用。但是手機(jī)的軟件需要安裝到相應(yīng)的系統(tǒng)中才能完美的運(yùn)行。正是由于考慮到以上這些情況,Android系統(tǒng)是現(xiàn)今比較流行的手機(jī)系統(tǒng),所以本系統(tǒng)選擇了java語(yǔ)言來(lái)作為

4、開(kāi)發(fā)語(yǔ)言?,F(xiàn)在市面上常見(jiàn)的手機(jī)大致可以分為三類(lèi),一類(lèi)是傳統(tǒng)的鍵盤(pán)手機(jī),使用鍵盤(pán)對(duì)手機(jī)進(jìn)行操作。另一類(lèi)是處于過(guò)度期時(shí)使用的既可以使用手指或者觸控筆在屏幕上進(jìn)行觸控操作又可以使用傳統(tǒng)的鍵盤(pán)進(jìn)行對(duì)手機(jī)的操作。第三類(lèi)則是新興的觸屏手機(jī),這類(lèi)手機(jī)就是直接通過(guò)手指或者觸控筆在屏幕上面進(jìn)行操作,需要鍵盤(pán)的部分,基本都是以在屏幕中產(chǎn)生一個(gè)虛擬鍵盤(pán)的模式來(lái)實(shí)現(xiàn)的。具體手機(jī)的觸摸屏到底是需要觸控筆進(jìn)行觸控操作還是需要使用手指進(jìn)行操作主要還是要看手機(jī)使用的觸摸屏是電阻屏還是電容屏。使用觸控筆的手機(jī)使用的屏幕都是電阻屏的手機(jī),這種屏幕的觸控定位實(shí)際上是利用你在屏幕上的點(diǎn)擊對(duì)屏幕的電阻產(chǎn)生的變化進(jìn)行判斷以至于可以判斷出

5、用戶(hù)觸控的位置,用戶(hù)只要對(duì)屏幕造成壓力即可實(shí)現(xiàn),無(wú)所謂是什么東西觸控的。而電容屏就不同了,使用電容屏的手機(jī)只能判斷帶電物體的觸控,使帶電物體在屏幕上產(chǎn)生耦合電容,通過(guò)耦合電容來(lái)判斷觸控的位置,這種方法還更有利于多點(diǎn)觸控技術(shù)的實(shí)現(xiàn)。在人們?nèi)粘J褂檬謾C(jī)中這個(gè)帶電物體就是人自己的身體,一般情況下就是手。綜上所述,本系統(tǒng)是一個(gè)基于現(xiàn)有手機(jī)計(jì)算器開(kāi)發(fā)的在觸屏手機(jī)上運(yùn)行的簡(jiǎn)單科學(xué)計(jì)算器。關(guān)鍵字JAVA語(yǔ)言EclipseJDKandroid-sdkLinearLayout布局目錄TOCo1-3hzuHYPERLINKl_Toc231154508摘要.2第一章項(xiàng)目概述.51.1手機(jī)的發(fā)展及背景.51.2計(jì)算器

6、的發(fā)展歷史.6項(xiàng)目相關(guān)技術(shù)知識(shí).82.1JAVA技術(shù).82.2JDK.112.3Eclipse.11系統(tǒng)設(shè)計(jì).133.1系統(tǒng)功能圖.133.2程序流程圖.133.3系統(tǒng)框圖.153.4總體模塊詳細(xì)設(shè)計(jì).153.5輸入模塊詳細(xì)設(shè)計(jì).163.6顯示模塊詳細(xì)設(shè)計(jì).173.7計(jì)算模塊詳細(xì)設(shè)計(jì).17系統(tǒng)實(shí)現(xiàn).184.1輸入模塊的內(nèi)容.184.2輸入模塊的實(shí)現(xiàn).194.3顯示模塊的內(nèi)容.194.4顯示模塊的實(shí)現(xiàn).204.5顯示模塊的布局代碼.204.6計(jì)算模塊的內(nèi)容.214.7計(jì)算模塊實(shí)現(xiàn)重要代碼.21謝辭.33參考文獻(xiàn).34第一章項(xiàng)目概述1.1手機(jī)的發(fā)展及背景隨著21世紀(jì)的到來(lái),我們已經(jīng)步入了信息化時(shí)代

7、,這個(gè)時(shí)代的最重要的標(biāo)志就是信息技術(shù)的廣泛應(yīng)用。而手機(jī)正是信息技術(shù)的一個(gè)重要體現(xiàn)。如今社會(huì)上手機(jī)的應(yīng)用已經(jīng)達(dá)到了非常普及的程度,基本隨處都可以見(jiàn)到手機(jī)的身影。我們也熟悉了在社會(huì)各處遇見(jiàn)它們,家里,辦公室里,學(xué)校,馬路上,基本可以說(shuō)是有人的地方就用手機(jī)的存在。手機(jī)發(fā)展到今天,已經(jīng)和最初的手機(jī)有了天差地別。1938年,在美國(guó)的貝爾實(shí)驗(yàn)室,美國(guó)軍方研制成了世界上第一部“移動(dòng)電話(huà)”即手機(jī)。1973年4月,在美國(guó)著名的摩托羅拉公司工作的工程技術(shù)員“馬丁庫(kù)帕”發(fā)明了世界上第一部推向民用的手機(jī),從此以后馬丁庫(kù)帕也被稱(chēng)為現(xiàn)代手機(jī)之父。這些就是軍方和民用手機(jī)最初的出現(xiàn)時(shí)間。下面我們按手機(jī)的發(fā)展來(lái)仔細(xì)介紹一下:第

8、一代手機(jī)(1G)是指模擬的移動(dòng)電話(huà),也就是在我們小時(shí)候活躍在各種影視作品中的“大哥大”。最先研制出這種手機(jī)的是美國(guó)摩托羅拉公司的Cooper博士。由于當(dāng)時(shí)的電池、天線和集成電路的規(guī)模等等技術(shù)水平的制約,這種手機(jī)體積很大,只能稱(chēng)的上時(shí)可移動(dòng),嚴(yán)格來(lái)說(shuō)都算不上便攜。這種手機(jī)有多種制式,AMPS(北美蜂窩系統(tǒng))、NMT(北歐移動(dòng)電話(huà))和TACS(全向通信系統(tǒng))都是主要的模擬標(biāo)準(zhǔn),但是無(wú)論是什么制式的工作方式基本上是頻分復(fù)用,而且這種手機(jī)只能進(jìn)行簡(jiǎn)單語(yǔ)音通信,通話(huà)的效果也不穩(wěn)定,同時(shí)保密性也很不足,基本可以說(shuō)是沒(méi)有保密性。由于當(dāng)時(shí)這種手機(jī)的通話(huà)頻率是固定的,只需要使用雙工的無(wú)線電臺(tái)就能監(jiān)聽(tīng)到用戶(hù)通話(huà)的

9、內(nèi)容。另外這種手機(jī)對(duì)于無(wú)線帶寬利用也是十分不充分的。第二代手機(jī)(2G)也是手機(jī)發(fā)展過(guò)程中最常見(jiàn)的手機(jī)。通常這些手機(jī)使用GSM或者CDMA這些成熟的標(biāo)準(zhǔn)制式,通過(guò)了一段時(shí)間的發(fā)展電池、天線和集成電路規(guī)模已經(jīng)有了突破性的進(jìn)展了,不會(huì)再成為第二代手機(jī)發(fā)展的制約,而手機(jī)也在這些技術(shù)的促進(jìn)中發(fā)展的越來(lái)越快。通話(huà)質(zhì)量和待機(jī)時(shí)間都得到了很大的發(fā)展。第二代手機(jī)為了適應(yīng)用戶(hù)對(duì)于數(shù)據(jù)通訊的需求,一些在現(xiàn)在普遍使用的技術(shù)也在手機(jī)上得到了發(fā)展,例如GPRS彩信業(yè)務(wù)和WAP上網(wǎng)業(yè)務(wù),也是在這個(gè)時(shí)期各式各樣的Java程序開(kāi)始登上歷史舞臺(tái),從此Java程序的拓展也成為了手機(jī)一個(gè)重要的部分。下面我們來(lái)說(shuō)說(shuō)我們現(xiàn)在常常會(huì)提起的

10、3G吧。3G是英文3rdGeneration的縮寫(xiě),即指第三代移動(dòng)通信技術(shù)。相對(duì)第一代手機(jī)(1G)和第二代手機(jī)(2G),第三代手機(jī)更加強(qiáng)調(diào)的是網(wǎng)絡(luò)的部分,利用3G技術(shù),手機(jī)能夠更好的進(jìn)行數(shù)據(jù)業(yè)務(wù)。它能夠隨時(shí)隨地的來(lái)處理圖像、音樂(lè)、視頻等等多媒體業(yè)務(wù),服務(wù)的范圍提供包括比第二代手機(jī)更加快速的網(wǎng)頁(yè)瀏覽、視頻通話(huà)、HYPERLINK/view/757.htm電子商務(wù)等等多種信息服務(wù)。而為了確保能夠給用戶(hù)提供以上這些服務(wù),第三代手機(jī)就需要更高的數(shù)據(jù)傳輸速度,據(jù)本人了解,現(xiàn)在的3G手機(jī)在室內(nèi)、室外和行車(chē)的環(huán)境中能夠分別支持2Mbps、384kbps以及144kbps以上的傳輸速度。最后我們來(lái)說(shuō)說(shuō)現(xiàn)在國(guó)際

11、上承認(rèn)的3G手機(jī)的標(biāo)準(zhǔn),現(xiàn)在國(guó)際上3G手機(jī)(3Ghandsets)有3種制式標(biāo)準(zhǔn),這三種標(biāo)準(zhǔn)分別是歐洲的WCDMA標(biāo)準(zhǔn)、美國(guó)的CDMA2000標(biāo)準(zhǔn)和我國(guó)自主研發(fā)的TDSCDMA標(biāo)準(zhǔn)。手機(jī)發(fā)展到今天,科技水平已經(jīng)越來(lái)越高,而3G手機(jī)也已經(jīng)開(kāi)始進(jìn)入我們的生活了,手機(jī)應(yīng)用的擴(kuò)展更是從第二代手機(jī)開(kāi)始就已經(jīng)變得具有極其重要的意義了,而本文正是在這樣的背景下開(kāi)展研究的。1.2計(jì)算器的發(fā)展歷史計(jì)算器作為現(xiàn)在人們?nèi)粘I钪谐S玫囊环N工具已經(jīng)可以說(shuō)是人們?nèi)粘I钪斜夭豢缮俚墓ぞ吡?。但是?jì)算器的發(fā)展經(jīng)歷了漫長(zhǎng)的過(guò)程,凝聚無(wú)數(shù)先人的智慧,甚至連計(jì)算機(jī)的發(fā)展都可以說(shuō)是源于計(jì)算器的發(fā)展。計(jì)算器和計(jì)算機(jī)一樣都能夠?qū)崿F(xiàn)數(shù)據(jù)

12、的輸入、處理、存儲(chǔ)和輸出這些基本的功能,但計(jì)算器區(qū)別于計(jì)算機(jī)的地方就是,它不能自動(dòng)的進(jìn)行計(jì)算,必須要求由人來(lái)操作完成計(jì)算;而計(jì)算機(jī)通過(guò)提前編寫(xiě)好的程序就能夠自動(dòng)的按照程序進(jìn)行處理。所以計(jì)算器和計(jì)算機(jī)的一個(gè)顯著的區(qū)別就在于是否需要人為地操作來(lái)完成運(yùn)行。這二者還有另一個(gè)本質(zhì)性的區(qū)別。計(jì)算器的處理數(shù)據(jù)的方法是生產(chǎn)時(shí)就已經(jīng)固化在系統(tǒng)中了,所以計(jì)算器只能按照系統(tǒng)中規(guī)定的處理方法來(lái)處理用戶(hù)要求的計(jì)算任務(wù);而計(jì)算機(jī)由于可以自行安裝操作系統(tǒng)和各種的相關(guān)軟件和硬件,理論上計(jì)算機(jī)擁有的可擴(kuò)展性是無(wú)窮的。所以簡(jiǎn)單的說(shuō),計(jì)算器和計(jì)算機(jī)的本質(zhì)性區(qū)別就在于該系統(tǒng)是否存在可擴(kuò)展性。在我所了解到的知識(shí)中,最早的計(jì)算工具可以追

13、溯到中國(guó)古代一種叫做籌策(又叫算籌)的東西上。這種計(jì)算工具在計(jì)算的時(shí)候擺成縱式和橫式兩種數(shù)字,按照縱式相間的原則表示任何自然數(shù),從而進(jìn)行加、減、乘、除、開(kāi)方以及其它的代數(shù)計(jì)算。負(fù)數(shù)出現(xiàn)后,算籌分為紅和兩種,紅籌表示正數(shù),黑籌表示負(fù)數(shù)。雖然我對(duì)于這種計(jì)算的原理不是很了解,但是不得不說(shuō),這種運(yùn)算工具和運(yùn)算方法確實(shí)是當(dāng)時(shí)世界上獨(dú)一無(wú)二的。直到今天仍有一些人在使用的HYPERLINK/view/116024.htm珠算或者叫算盤(pán),是中國(guó)古代計(jì)算工具中的另一項(xiàng)偉大發(fā)明,而從明朝開(kāi)始使用的HYPERLINK/view/18627.htm算盤(pán)就已經(jīng)與現(xiàn)代的算盤(pán)幾乎完全相同了。以上介紹完了中國(guó)關(guān)于計(jì)算工具的發(fā)

14、展,下面我們來(lái)看看西方社會(huì)中計(jì)算工具的發(fā)展情況。我通過(guò)查詢(xún)資料得知,17世紀(jì)初這個(gè)時(shí)期,西方國(guó)家的計(jì)算工具開(kāi)始有了一個(gè)較大的發(fā)展,英國(guó)數(shù)學(xué)家納皮爾發(fā)明的納皮爾算籌,英國(guó)牧師奧卻德發(fā)明了圓柱型對(duì)數(shù)計(jì)算尺,這種計(jì)算尺的功能不僅僅能做加減乘除、乘方、開(kāi)方運(yùn)算,甚至可以計(jì)算三角函數(shù),指數(shù)函數(shù)和對(duì)數(shù)函數(shù),這些計(jì)算工具的產(chǎn)生不單單是帶動(dòng)了計(jì)算器的發(fā)展,更是為現(xiàn)代計(jì)算器的發(fā)展奠定了一個(gè)堅(jiān)實(shí)的基礎(chǔ)。雖然當(dāng)時(shí)的技術(shù)水平有限,這些工具使用的不是機(jī)械或者電子作為載體,但是這些計(jì)算工具卻為了后世的計(jì)算器提供了一個(gè)良好的思路。1642年,偉大的法國(guó)科學(xué)家HYPERLINK/view/17673.htm帕斯卡在年僅19歲

15、的時(shí)候就利用了算盤(pán)的計(jì)算原理發(fā)明了世界上第一部機(jī)械式的計(jì)算器,在這個(gè)計(jì)算器中有一些互相咬合的齒輪,一個(gè)轉(zhuǎn)過(guò)十位的齒輪會(huì)使另一個(gè)齒輪轉(zhuǎn)過(guò)一位,靠這樣來(lái)實(shí)現(xiàn)十進(jìn)制的算法,人們可以轉(zhuǎn)動(dòng)齒輪,把想要輸入的數(shù)據(jù)輸入進(jìn)去,計(jì)算結(jié)果就會(huì)出現(xiàn)在另一個(gè)窗口中,但是這個(gè)計(jì)算器只能做一些加減計(jì)算。1694年,萊布尼茲在德國(guó)將其改進(jìn),使這種計(jì)算器成為可以進(jìn)行加減乘除計(jì)算的計(jì)算器。此后,一直要到20世紀(jì)50年代末才有電子計(jì)算器的出現(xiàn)。第二章項(xiàng)目相關(guān)技術(shù)知識(shí)2.1JAVA技術(shù)首先要說(shuō),Java是一門(mén)現(xiàn)在使用很普遍編程語(yǔ)言,但是也是一個(gè)平臺(tái),它基于Java虛擬機(jī)技術(shù),并且借助虛擬機(jī)技術(shù)實(shí)現(xiàn)了跨平臺(tái)的優(yōu)勢(shì)。Java平臺(tái)由Ja

16、vaHYPERLINK/view/1132.htm虛擬機(jī)(JavaVirtualMachine)和Java應(yīng)用編程HYPERLINK/view/159864.htm接口(ApplicationProgrammingInterface、簡(jiǎn)稱(chēng)API)構(gòu)成。Java應(yīng)用HYPERLINK/view/3281.htm編程接口為Java應(yīng)用提供了一個(gè)獨(dú)立于HYPERLINK/view/880.htm操作系統(tǒng)的標(biāo)準(zhǔn)接口,再進(jìn)一步則可分為基本部分和擴(kuò)展部分。在HYPERLINK/view/25278.htm硬件或操作系統(tǒng)平臺(tái)上安裝一個(gè)Java平臺(tái)之后,Java應(yīng)用HYPERLINK/view/17674.h

17、tm程序就可運(yùn)行。由于Java技術(shù)本身的優(yōu)勢(shì),現(xiàn)在Java平臺(tái)已經(jīng)嵌入了幾乎所有的操作系統(tǒng)。這樣Java程序的優(yōu)勢(shì)就更加明顯了,甚至可以做到只編譯一次,就可以在各種系統(tǒng)中運(yùn)行的地步。Java技術(shù)的重要性就不講了,從我了解接觸過(guò)的編程語(yǔ)言來(lái)看,接觸的最多的編程語(yǔ)言就是Java,我對(duì)于編程語(yǔ)言的接觸程度雖然本身不能不說(shuō)明什么,但至少在一定程度上可以反映出編程語(yǔ)言的使用率和普及率??傮w的了解了Java技術(shù)以后我們來(lái)進(jìn)一步的了解一下Java的語(yǔ)言。簡(jiǎn)單的說(shuō),如書(shū)上所說(shuō)的概念一樣,Java是一種簡(jiǎn)單的,面向?qū)ο蟮?,分布式的,解釋型的,健壯安全的,結(jié)構(gòu)中立的,可移植的,性能優(yōu)異、HYPERLINK/vie

18、w/65706.htm多線程的動(dòng)態(tài)語(yǔ)言。在1995年SUN推出Java語(yǔ)言之后,全世界軟件工程師的目光都被這個(gè)特別的語(yǔ)言所吸引。這種語(yǔ)言的優(yōu)越性有此可見(jiàn)。我了解到的Java語(yǔ)言其實(shí)最早誕生于1991年,起初也并不叫做Java,而是被稱(chēng)為OAK語(yǔ)言,這種語(yǔ)言是SUN公司為一些消費(fèi)性電子產(chǎn)品而設(shè)計(jì)的一個(gè)通用環(huán)境。他們最初的目的只是為了開(kāi)發(fā)一種獨(dú)立于平臺(tái)的軟件技術(shù),在網(wǎng)絡(luò)出現(xiàn)之前,OAK語(yǔ)言可以說(shuō)是默默無(wú)聞。但是,隨著網(wǎng)絡(luò)的出現(xiàn)和發(fā)展,OAK語(yǔ)言的命運(yùn)被完全的改變了。在Java出現(xiàn)以前,Internet上的信息內(nèi)容都是千篇一律的使用HTML這種有點(diǎn)死板的文檔。這讓網(wǎng)絡(luò)瀏覽者對(duì)于網(wǎng)絡(luò)的興趣有所下降,網(wǎng)

19、絡(luò)不能滿(mǎn)足他們對(duì)于趣味性和互動(dòng)性的要求。這些使用者希望能在網(wǎng)頁(yè)中看到一些交互式的內(nèi)容,而網(wǎng)站的開(kāi)發(fā)人員也極希望能夠在為網(wǎng)站開(kāi)發(fā)應(yīng)用程序的時(shí)候不用再去考慮用戶(hù)的軟硬件平臺(tái)是否能夠與程序兼容的這些問(wèn)題,同時(shí)這些程序還能夠提供足夠安全保障。對(duì)于用戶(hù)的這種要求,傳統(tǒng)的那些HYPERLINK/view/552871.htm編程語(yǔ)言都表現(xiàn)的無(wú)能為力。而SUN公司的工程師十分敏銳的察覺(jué)到了這些需求,從1994年起,他們開(kāi)始將OAK技術(shù)應(yīng)用于WEB上,并且于同年開(kāi)發(fā)出了HotJava的第一個(gè)版本。而當(dāng)SUN公司1995年正式以Java這個(gè)名字推出該語(yǔ)言的時(shí)候,幾乎所有的WEB開(kāi)發(fā)人員都發(fā)現(xiàn)Java這種語(yǔ)言能夠

20、完全的滿(mǎn)足他們之前的需求,滿(mǎn)足用戶(hù)的需求。于是Java一夜之間成了炙手可熱的一種編程語(yǔ)言。那么Java的主要特性又是什么呢?如上文中所說(shuō)的,Java是一種簡(jiǎn)單的,面向?qū)ο蟮模植际降?,解釋型的,健壯安全的,結(jié)構(gòu)中立的,可移植的,性能優(yōu)異、HYPERLINK/view/65706.htm多線程的動(dòng)態(tài)語(yǔ)言。下面我們就來(lái)詳細(xì)的介紹一下這些特點(diǎn)。Java語(yǔ)言是簡(jiǎn)單的。由于Java語(yǔ)言的語(yǔ)法與C語(yǔ)言和C+語(yǔ)言很相近,這就使得大多數(shù)的HYPERLINK/view/39175.htm程序員可以只通過(guò)很容易學(xué)習(xí)就能使用Java。另一方面,Java語(yǔ)言祛除了一些C+語(yǔ)言中令人迷惑或者難以理解的特性,比如操作符重

21、載、多繼承、自動(dòng)的HYPERLINK/view/2886403.htm強(qiáng)制類(lèi)型轉(zhuǎn)換等等。另外,在Java語(yǔ)言種不使用HYPERLINK/view/159417.htm指針,并提供了自動(dòng)的廢料收集的功能,從此使用Java的程序員再也不用為了HYPERLINK/view/4541016.htm內(nèi)存管理而擔(dān)憂(yōu)了。Java語(yǔ)言是面向?qū)ο蟮?。Java語(yǔ)言中提供了類(lèi)、接口和繼承等等,其中只支持類(lèi)之間的單繼承,想要進(jìn)行多繼承就要使用接口,支持類(lèi)與接口之間的實(shí)現(xiàn)機(jī)制的HYPERLINK/view/390935.htm關(guān)鍵字為implements。與C+語(yǔ)言只對(duì)HYPERLINK/view/161302.htm

22、虛函數(shù)使用動(dòng)態(tài)綁定相比,Java語(yǔ)言全面支持動(dòng)態(tài)綁定??傊?,Java語(yǔ)言可以說(shuō)是一個(gè)純粹HYPERLINK/view/249254.htm面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。Java語(yǔ)言是分布式的。Java語(yǔ)言支持Internet應(yīng)用的開(kāi)發(fā),所以在基本的Java應(yīng)用HYPERLINK/view/897136.htm編程接口中會(huì)有一個(gè)網(wǎng)絡(luò)應(yīng)用編程接口(javanet),這個(gè)編程接口提供了用于網(wǎng)絡(luò)應(yīng)用編程的類(lèi)庫(kù),包括URL、URLConnection、Socket、ServerSocket等。Java的遠(yuǎn)程方法激活機(jī)制也是開(kāi)發(fā)分布式應(yīng)用的一個(gè)重要手段。Java語(yǔ)言是健壯的。Java的HYPERLINK/vie

23、w/1792102.htm強(qiáng)類(lèi)型機(jī)制、異常處理、廢料的自動(dòng)收集等是Java程序健壯性的重要保證。而不再使用指針更是Java的明智選擇。Java的安全檢查機(jī)制使得Java更具健壯性。Java語(yǔ)言是安全的。由于Java通常被用在網(wǎng)絡(luò)環(huán)境中,因此,Java特意提供了一個(gè)安全機(jī)制以防惡意代碼的攻擊。除了Java語(yǔ)言具有的許多HYPERLINK/view/634959.htm安全特性以外,Java對(duì)通過(guò)網(wǎng)絡(luò)下載的類(lèi)還具有一個(gè)安全防范機(jī)制(類(lèi)ClassLoader),如分配不同的名字空間以防替代本地的同名類(lèi)、HYPERLINK/view/185293.htm字節(jié)代碼檢查,并提供安全管理機(jī)制(類(lèi)Securi

24、tyManager)讓Java應(yīng)用更加安全。Java語(yǔ)言是體系結(jié)構(gòu)中立的。Java程序(后綴為java的文件)在Java平臺(tái)上被編譯為體系結(jié)構(gòu)中立的HYPERLINK/view/560330.htm字節(jié)碼格式(后綴為class的文件),然后可以在實(shí)現(xiàn)這個(gè)Java平臺(tái)的任何系統(tǒng)中運(yùn)行。這種適應(yīng)性使得Java的應(yīng)用變的更加的廣泛。Java語(yǔ)言是可移植的。由于Java語(yǔ)言的結(jié)構(gòu)中立的特性,這種語(yǔ)言同時(shí)也具備了很強(qiáng)的可移植性,另外,Java語(yǔ)言中還規(guī)定了各個(gè)基本數(shù)據(jù)類(lèi)型的長(zhǎng)度。而Java系統(tǒng)的本身也具有很強(qiáng)的可移植性,Java編譯器是用Java實(shí)現(xiàn)的,Java的運(yùn)行環(huán)境是用ANSIC實(shí)現(xiàn)的。Java語(yǔ)

25、言是解釋型的。Java程序在Java平臺(tái)上被編譯為一種特殊的字節(jié)碼格式,然后該程序就可以在任何系統(tǒng)中裝有Java平臺(tái)的實(shí)現(xiàn)運(yùn)行。在運(yùn)行時(shí),Java平臺(tái)中的JavaHYPERLINK/view/592974.htm解釋器對(duì)這些特殊的字節(jié)碼再進(jìn)行解釋?zhuān)谡麄€(gè)過(guò)程中所需要的類(lèi)在聯(lián)接階段就會(huì)被載入到運(yùn)行環(huán)境中。Java是高性能的。我了解到的Java語(yǔ)言與解釋型的高級(jí)HYPERLINK/view/76320.htm腳本語(yǔ)言相比Java的性能確實(shí)是占優(yōu)勢(shì)的。Java的運(yùn)行速度更是隨著JIT(Just-In-Time)編譯器技術(shù)的發(fā)展變得越來(lái)越快了。Java語(yǔ)言是多線程的。Java語(yǔ)言支持多個(gè)線程在同一時(shí)

26、間一同執(zhí)行,并且專(zhuān)門(mén)的提供了多線程之間的同步機(jī)制(關(guān)鍵字為synchronized)。Java語(yǔ)言是動(dòng)態(tài)的。在Java語(yǔ)言的設(shè)計(jì)之初就有要求語(yǔ)言能夠適應(yīng)于動(dòng)態(tài)變化的環(huán)境這個(gè)目標(biāo)。Java程序需要的類(lèi),既可以動(dòng)態(tài)地被載入到運(yùn)行環(huán)境,又可以通過(guò)網(wǎng)絡(luò)來(lái)載入所需要的類(lèi)。這樣的設(shè)計(jì)有利于軟件的升級(jí)。另外,我還了解到Java中的類(lèi)存在一個(gè)運(yùn)行時(shí)刻的表示,能進(jìn)行運(yùn)行時(shí)刻的類(lèi)型檢查。由于Java語(yǔ)言編寫(xiě)的Java應(yīng)用具有很強(qiáng)的健壯性和可靠性,這樣就能減少很多應(yīng)用系統(tǒng)的維護(hù)費(fèi)用。Java對(duì)面向?qū)ο蟮募夹g(shù)的全面支持和Java平臺(tái)內(nèi)嵌的API能極大的縮短應(yīng)用系統(tǒng)的開(kāi)發(fā)時(shí)間同時(shí)還能降低開(kāi)發(fā)成本。Java的編譯一次,可

27、以在任意裝有Java平臺(tái)的系統(tǒng)運(yùn)行的特性使得它成為能夠直接在多個(gè)平臺(tái)之間傳遞信息的簡(jiǎn)單便利的方式。有必要一說(shuō)的是Java企業(yè)應(yīng)用編程接口還為企業(yè)計(jì)算及HYPERLINK/view/2622737.htm電子商務(wù)應(yīng)用系統(tǒng)提供了有關(guān)技術(shù)和豐富的類(lèi)庫(kù)。Java編程語(yǔ)言最與眾不同之處在于:Java程序既是編譯型的又是解釋型的。編譯型是指,程序會(huì)轉(zhuǎn)換為一種稱(chēng)為Java字節(jié)碼的中間語(yǔ)言,解釋型則是指,運(yùn)行程序的時(shí)候JVM會(huì)對(duì)字節(jié)碼進(jìn)行解析和運(yùn)行。這個(gè)過(guò)程中,編譯只進(jìn)行一次,而解釋在每次運(yùn)行程序時(shí)都會(huì)進(jìn)行。2.2JDKJDK(JavaDevelopmentKit)是SunMicrosystems針對(duì)Java

28、語(yǔ)言程序開(kāi)發(fā)的產(chǎn)品。自從Java推出以來(lái),JDK已經(jīng)成為使用最廣泛的JavaSDK。JDK是整個(gè)Java的核心組件,其中包括了Java的運(yùn)行環(huán)境,Java工具和Java基礎(chǔ)的類(lèi)庫(kù)??梢哉f(shuō)JDK是學(xué)好Java的第一步。從SUN的JDK5.0開(kāi)始提供了泛型等等一些非常實(shí)用的功能,而且版本還在不斷更新,到本論文寫(xiě)作時(shí)已經(jīng)更新到了JDK7.0了。運(yùn)行效率也隨著版本的不斷更新而得到了很大的提高。2.3EclispeEclipse是一個(gè)開(kāi)放源代碼的、基于Java的可擴(kuò)展開(kāi)發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過(guò)HYPERLINK/view/18979.htm插件組件構(gòu)建開(kāi)發(fā)環(huán)境。換句話(huà)說(shuō)就

29、是Eclipse只是提供了一個(gè)界面,所有的開(kāi)發(fā)環(huán)境都要通過(guò)安裝相關(guān)的插件來(lái)完成。不過(guò)Eclipse附帶了一個(gè)標(biāo)準(zhǔn)的插件集合,在這個(gè)集合中包括了Java的開(kāi)發(fā)工具(JavaDevelopmentTools,JDT)。首先我們來(lái)介紹一下Eclipse歷史和版本。Eclipse最初是由OTI和IBM公司開(kāi)發(fā)的替代商業(yè)HYPERLINK/view/37.htm軟件VisualAgeforJava的下一代IDE開(kāi)發(fā)環(huán)境,在2001年11月貢獻(xiàn)給開(kāi)源社區(qū),現(xiàn)在它由非營(yíng)利軟件供應(yīng)商聯(lián)盟Eclipse基金會(huì)(EclipseFoundation)管理。2003年,Eclipse3.0選擇OSGi服務(wù)平臺(tái)規(guī)范為運(yùn)

30、行時(shí)架構(gòu)。2007年6月,穩(wěn)定版3.3發(fā)布。2008年6月發(fā)布代號(hào)為Ganymede的3.4版。2009年7月發(fā)布代號(hào)為GALILEO的3.5版。2010年6月發(fā)布代號(hào)為Helios的3.6版。本系統(tǒng)開(kāi)發(fā)使用的是3.6的版本。此外我們?cè)賮?lái)談?wù)凟clips語(yǔ)言拓展能力。Eclipse基本已經(jīng)成為世界最著名的跨平臺(tái)自由HYPERLINK/view/14867.htm集成開(kāi)發(fā)環(huán)境(IDE)。最初主要用來(lái)HYPERLINK/view/229611.htmJava語(yǔ)言開(kāi)發(fā),但是由于其開(kāi)源的特性,也有人通過(guò)為其安裝插件使其作為其他編程語(yǔ)言(比如C+和Python)的開(kāi)發(fā)工具。如上文所說(shuō),Eclipse的本

31、身只是一個(gè)框架平臺(tái),但是眾多插件的支持使得Eclipse擁有了其他功能固定的IDE軟件很難擁有的靈活性?,F(xiàn)在許多的軟件開(kāi)發(fā)商以Eclipse為框架開(kāi)發(fā)出了自己的IDE。Eclipse由OTI和IBM兩家公司的IDE產(chǎn)品開(kāi)發(fā)組創(chuàng)建,起始于1999年4月。IBM提供了最初的Eclipse代碼基礎(chǔ),包括Platform、JDT和PDE。目前也是由IBM牽頭,圍繞著Eclipse已經(jīng)發(fā)展成為了一個(gè)龐大的Eclipse聯(lián)盟,這個(gè)聯(lián)盟中已經(jīng)有150多家軟件公司參與到Eclipse項(xiàng)目中,其中不乏知名的廠商例如Borland、RationalSoftware、RedHat及Sybase等。Eclipse是一

32、個(gè)開(kāi)發(fā)源碼項(xiàng)目,其界面跟先前的VisualAgeforJava差不多,但由于它是個(gè)開(kāi)源的系統(tǒng),任何人都可以免費(fèi)得到其碼源,并可以在此基礎(chǔ)上開(kāi)發(fā)各自的插件,正是因此,它越來(lái)越受人們關(guān)注。近幾年更有包括Oracle在內(nèi)的許多大公司也紛紛加入了該項(xiàng)目,這標(biāo)志著Eclipse將來(lái)能會(huì)成為可進(jìn)行任何語(yǔ)言開(kāi)發(fā)的IDE大集合,使用者只需根據(jù)自己的需要下載各種語(yǔ)言的插件即可。接著說(shuō)說(shuō)Eclipse插件開(kāi)發(fā)環(huán)境。雖然大多數(shù)用戶(hù)很樂(lè)于將Eclipse當(dāng)作JavaIDE來(lái)使用,但Eclipse的目標(biāo)不僅限于此,如上文所說(shuō),Eclipse的最終目標(biāo)是成為可以進(jìn)行任何語(yǔ)言開(kāi)發(fā)的IDE大集合。所以在Eclipse中還包括

33、插件開(kāi)發(fā)環(huán)境(Plug-inDevelopmentEnvironment,PDE),這個(gè)組件主要是針對(duì)希望擴(kuò)展Eclipse功能的軟件開(kāi)發(fā)人員,因?yàn)檫@個(gè)組件允許開(kāi)發(fā)者構(gòu)建與Eclipse環(huán)境無(wú)縫集成的工具。由于Eclipse中可以說(shuō)是每樣?xùn)|西都是插件,所以說(shuō)對(duì)于想給Eclipse提供插件,以及給用戶(hù)提供一致和統(tǒng)一的集成開(kāi)發(fā)環(huán)境的開(kāi)發(fā)人員來(lái)說(shuō),所有人都具有了一個(gè)同等的發(fā)揮機(jī)會(huì)。我在網(wǎng)上找到的基于Eclipse的HYPERLINK/view/330120.htm應(yīng)用程序的突出例子是IBM的WebSphereStudioWorkbench,它構(gòu)成了IBM關(guān)于Java開(kāi)發(fā)工具系列的基礎(chǔ)。例如,WebS

34、phereStudioApplicationDeveloper添加了對(duì)JSP、servlet、EJB、XML、Web服務(wù)和HYPERLINK/view/1088.htm數(shù)據(jù)庫(kù)訪問(wèn)的支持。Eclipse都有哪些的主要組成部分呢?Eclipse作為一個(gè)開(kāi)放源代碼的軟件開(kāi)發(fā)項(xiàng)目,目標(biāo)是成為可進(jìn)行任何語(yǔ)言開(kāi)發(fā)的IDE大集合。它主要是由Eclipse項(xiàng)目、Eclipse工具項(xiàng)目和Eclipse技術(shù)項(xiàng)目三個(gè)項(xiàng)目組成,其中具體的又包括四個(gè)部分,分別是EclipsePlatform、JDT、CDT和PDE。JDT是支持Java開(kāi)發(fā)的、CDT是支持C開(kāi)發(fā)的、PDE是用來(lái)支持Eclipse插件開(kāi)發(fā)的,Eclips

35、ePlatform則是一個(gè)開(kāi)放的可擴(kuò)展IDE,為使用者提供了一個(gè)通用的開(kāi)發(fā)平臺(tái)。EclipseSDK(軟件開(kāi)發(fā)者包)是一個(gè)EclipsePlatform、JDT和PDE所生產(chǎn)的組件合并,它們可以一次性打包下載。這些部分一起提供了一個(gè)具有性能可靠,特性豐富的開(kāi)發(fā)環(huán)境,在這個(gè)環(huán)境中允許開(kāi)發(fā)者有效地建造可以無(wú)縫連接到EclipsePlatform中的工具。EclipseSDK由Eclipse項(xiàng)目生產(chǎn)的工具和來(lái)自其它開(kāi)放源代碼的HYPERLINK/view/287257.htm第三方軟件組合而成。Eclipse項(xiàng)目生產(chǎn)的軟件以GPL發(fā)布,第三方組件有各自自身的使用許可協(xié)議。第三章系統(tǒng)設(shè)計(jì)3.1系統(tǒng)的功

36、能圖整個(gè)系統(tǒng)的功能比較多,比較復(fù)雜,如上節(jié)所說(shuō),可以分為十多個(gè)功能模塊,但是邏輯上理解其實(shí)不算困難,系統(tǒng)包括普通計(jì)算功能,包括加減乘除;高級(jí)計(jì)算功能,包括平方,開(kāi)方,三角函數(shù)(sin,cos),清零功能。下面就讓我們用圖3-1來(lái)表示:高級(jí)計(jì)算功能清除相關(guān)功能加法運(yùn)算減法運(yùn)算乘法運(yùn)算手機(jī)計(jì)算器除法運(yùn)算記憶相關(guān)功能圖3-1系統(tǒng)的功能圖以上是系統(tǒng)的功能圖,由于系統(tǒng)的功能眾多,于是按功能進(jìn)行了合并,沒(méi)有完全的一一列舉,其中高級(jí)計(jì)算功能中包括了上文所述的所有高級(jí)計(jì)算功能,記憶相關(guān)功能和清除相關(guān)功能同樣包括在了圖示上所列的功能中。由于沒(méi)有完全羅列出來(lái),此處特意說(shuō)明。3.2程序流程圖知道了系統(tǒng)的功能以后,那

37、么系統(tǒng)又是怎么工作的呢?系統(tǒng)通過(guò)Form來(lái)建立顯示界面,完成后系統(tǒng)開(kāi)始監(jiān)聽(tīng)用戶(hù)的按鍵輸入,每次輸入系統(tǒng)都會(huì)判斷一次用戶(hù)輸入的類(lèi)型,是數(shù)字還是運(yùn)算符號(hào)或者是清除,判斷完后分成不同類(lèi)型如數(shù)字,符號(hào),特殊運(yùn)算等等進(jìn)行進(jìn)一步的處理,根據(jù)用戶(hù)的要求繼續(xù)進(jìn)行下一步的操作,最后計(jì)算出最終結(jié)果并顯示在顯示區(qū)。系統(tǒng)流程圖如圖3-2所示:否開(kāi)始監(jiān)聽(tīng)用戶(hù)按鍵輸入圖3-2程序流程圖是按照用戶(hù)的要求進(jìn)行計(jì)算判斷是否需要結(jié)算結(jié)果在顯示區(qū)顯示計(jì)算出的結(jié)果判斷是否是清零操作是系統(tǒng)重置否以上就是系統(tǒng)的流程圖,不過(guò)只是一個(gè)簡(jiǎn)單是示意流程圖,不是整個(gè)程序的完整流程圖,整個(gè)系統(tǒng)的流程圖由于模塊眾多,整個(gè)列舉不易于理解,故此就只采用簡(jiǎn)

38、單流程圖作為示例說(shuō)明,反而更加的簡(jiǎn)單明了。3.3系統(tǒng)框圖系統(tǒng)除了總體模塊以外主要由三大模塊來(lái)組成,即輸入模塊,顯示模塊和計(jì)算模塊。用系統(tǒng)框圖來(lái)表示即如圖2-3。總體系統(tǒng)顯示模塊輸入模塊計(jì)算模塊圖3-3系統(tǒng)框圖系統(tǒng)這三大模塊都各自包含什么內(nèi)容在下文的系統(tǒng)詳細(xì)設(shè)計(jì)中會(huì)有進(jìn)一步的說(shuō)明,此處就暫且略過(guò)。3.4總體模塊詳細(xì)設(shè)計(jì)任何Java程序的實(shí)現(xiàn)都需要有MIDlet類(lèi)作為程序的啟動(dòng)類(lèi)。總體模塊需要完成的任務(wù)主要就是系統(tǒng)的程序啟動(dòng)類(lèi),需要負(fù)責(zé)整個(gè)系統(tǒng)的生命周期。同時(shí)在還要在模塊中完成菜單欄的所有功能,即退出程序,記憶數(shù)據(jù),顯示數(shù)據(jù),清除記憶數(shù)據(jù)這四個(gè)功能。3.5輸入模塊詳細(xì)設(shè)計(jì)系統(tǒng)如果想完成計(jì)算器中的各

39、種功能,首先用戶(hù)要能進(jìn)行數(shù)據(jù)輸入,由于是在觸屏手機(jī)上開(kāi)發(fā)計(jì)算器程序,所以要求輸入可以直接使用觸屏進(jìn)行,所以在設(shè)計(jì)的時(shí)候就要充分的考慮要這一點(diǎn)。正是由于考慮到這個(gè)特殊的地方,所以在進(jìn)行模塊設(shè)計(jì)中,選擇編寫(xiě)輸入模塊類(lèi)的時(shí)候會(huì)特意選取使用了可以支持觸屏輸入的特殊增強(qiáng)型圖形用戶(hù)界面類(lèi)CustomItem。輸入模塊主要的任務(wù)是描述計(jì)算器鍵盤(pán)以及實(shí)現(xiàn)鍵盤(pán)的監(jiān)聽(tīng),即當(dāng)用戶(hù)點(diǎn)擊按鍵或者屏幕的時(shí)候監(jiān)聽(tīng)器會(huì)去調(diào)用相應(yīng)的處理辦法,本模塊還需要為系統(tǒng)提供了一個(gè)較為直觀的鍵盤(pán)圖形用戶(hù)界面。輸入模塊的功能圖如圖3-5:支持觸屏輸入模塊描述計(jì)算器鍵盤(pán)實(shí)現(xiàn)按鍵監(jiān)聽(tīng)設(shè)置按鍵監(jiān)聽(tīng)定義鍵盤(pán)按鍵和畫(huà)法設(shè)置監(jiān)聽(tīng)調(diào)用方法圖3-5輸入模塊

40、功能圖3.6顯示模塊詳細(xì)設(shè)計(jì)作為手機(jī)計(jì)算器系統(tǒng),顯示部分也是必不可少的一部分。沒(méi)有顯示部分就沒(méi)有辦法顯示用戶(hù)輸入的數(shù)字是否正確,甚至不能顯示計(jì)算出的結(jié)果,由此可見(jiàn)顯示模塊即包括輸入的部分也包括輸出的部分。由于考慮到Java開(kāi)發(fā)中低級(jí)界面和高級(jí)界面可能產(chǎn)生不兼容等等問(wèn)題,所以在對(duì)顯示模塊進(jìn)行設(shè)計(jì)的時(shí)候也選用了同樣的增強(qiáng)型圖形用戶(hù)界面類(lèi)CustomItem。顯示模塊主要要完成的任務(wù)是描述計(jì)算器的顯示區(qū),該區(qū)域用于顯示用戶(hù)輸入的數(shù)據(jù)以及最終的計(jì)算結(jié)果和一些其他信息。同時(shí)本模塊還將提供調(diào)用和設(shè)置顯示的具體方法。顯示模塊的功能圖如圖3-6:顯示區(qū)的相關(guān)設(shè)置顯示模塊調(diào)用顯示區(qū)數(shù)據(jù)方法設(shè)置顯示區(qū)數(shù)據(jù)方法圖3

41、-6顯示模塊功能圖3.7計(jì)算模塊詳細(xì)設(shè)計(jì)系統(tǒng)要完成整個(gè)的計(jì)算器的計(jì)算功能,那么計(jì)算模塊就是整個(gè)系統(tǒng)的重點(diǎn)模塊。沒(méi)有計(jì)算模塊系統(tǒng)就不能順利的完成計(jì)算,就無(wú)法達(dá)到用戶(hù)的要求。所以計(jì)算模塊的設(shè)計(jì)也是本次系統(tǒng)設(shè)計(jì)中的重點(diǎn)。系統(tǒng)想要能在屏幕上顯示出計(jì)算器的樣子要有整體的布局,在本模塊中要完成布局的具體設(shè)計(jì),使用戶(hù)能夠看到整個(gè)計(jì)算器的畫(huà)面。同時(shí)系統(tǒng)想完成計(jì)算功能必須要處理用戶(hù)的輸入,當(dāng)輸入模塊的監(jiān)聽(tīng)傳到計(jì)算模塊中時(shí),計(jì)算模塊就要根據(jù)相應(yīng)的方法進(jìn)行進(jìn)一步的處理。這部分主要是對(duì)輸入進(jìn)行的邏輯判斷,基本會(huì)通過(guò)ifelse來(lái)實(shí)現(xiàn)邏輯判斷。計(jì)算模塊的功能圖如圖3-7:整體布局?jǐn)?shù)值輸入判斷記憶相關(guān)功能普通運(yùn)算功能清零

42、復(fù)位功能高級(jí)功能運(yùn)算輸入判斷邏輯判斷計(jì)算模塊高級(jí)計(jì)算功能第四章系統(tǒng)實(shí)現(xiàn)4.1輸入模塊的內(nèi)容輸入模塊主要描述了計(jì)算器鍵盤(pán)以及鍵盤(pán)的監(jiān)聽(tīng)即主要負(fù)責(zé)讀取用戶(hù)的鍵盤(pán)輸入以及響應(yīng)觸屏的按鍵,當(dāng)用戶(hù)點(diǎn)擊按鍵或者屏幕的時(shí)候監(jiān)聽(tīng)器會(huì)去調(diào)用相應(yīng)的處理辦法,具體的處理辦法會(huì)在相關(guān)的地方進(jìn)行說(shuō)明。本模塊最主要還是為系統(tǒng)提供了一個(gè)較為直觀的鍵盤(pán)圖形用戶(hù)界面。4.2輸入模塊的實(shí)現(xiàn)在觸屏上提供了各種功能的按鍵,分別是C(清除鍵),XY(平方鍵),sin(計(jì)算角度的sin值),cos(計(jì)算角度的cos值),X(開(kāi)方),0,1,2,3,4,5,6,7,8,9,+,-,-/+,*,/,.,=。鍵盤(pán)如圖3-1:圖4-1觸屏鍵盤(pán)4

43、.3顯示模塊的內(nèi)容顯示模塊描述了計(jì)算器的顯示區(qū),即該區(qū)域用于顯示用戶(hù)輸入的數(shù)據(jù)以及最終的計(jì)算結(jié)果和一些其他信息。顯示區(qū)中設(shè)置了顯示字體,顯示區(qū)的大小,邊框的顏色和大小,同時(shí)還設(shè)置了顯示字體的顏色。圖4-2顯示區(qū)4.4顯示模塊的實(shí)現(xiàn)顯示區(qū)中使用的是LinearLayout布局。如上節(jié)所說(shuō),顯示區(qū)設(shè)置了顯示字體,顯示區(qū)的大小,邊框的顏色和大小,以及顯示字體的顏色,同時(shí)還使用了TableLayout布局。顯示模塊具體的實(shí)現(xiàn)流程請(qǐng)參照下文代碼。4.5顯示模塊的布局頁(yè)面此圖為手機(jī)計(jì)算器的整體布局4.6計(jì)算模塊的內(nèi)容計(jì)算模塊則主要描述了計(jì)算器的整體,實(shí)現(xiàn)了計(jì)算器的界面,定義了用戶(hù)單擊的處理辦法,通過(guò)定義的

44、處理辦法來(lái)完成用戶(hù)的操作命令,實(shí)現(xiàn)用戶(hù)的計(jì)算要求,這些計(jì)算要求包括了數(shù)值的輸入,小數(shù)點(diǎn)的輸入,正負(fù)號(hào)的輸入,值的輸入,記憶相關(guān)功能的完成,加、減、乘、除、平方、開(kāi)方、倒數(shù)、三角函數(shù)等等各種計(jì)算功能的完成,運(yùn)算符的替換,初始化系統(tǒng)等等。4.7計(jì)算模塊實(shí)現(xiàn)重要代碼packagew.w;importandroid.app.Activity;importandroid.os.Bundle;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.View;importandroid.view.View.OnClickL

45、istener;importandroid.widget.Button;importandroid.widget.TextView;importandroid.widget.Toast;publicclassJiSuanQiActivityextendsActivityprivateintoption=0;/運(yùn)算符狀態(tài)privatebooleannewdigital=true;/標(biāo)記是否是新輸入的數(shù)字privatedoublea=0,b=0;/兩個(gè)相加的數(shù)privatedoublec;/表示取正負(fù)privateButtonbutton1;privateButtonbutton2;private

46、Buttonbutton3;privateButtonbutton4;privateButtonbutton5;privateButtonbutton6;privateButtonbutton7;privateButtonbutton8;privateButtonbutton9;privateButtonbutton0;privateButtonbuttonjia;privateButtonbuttonjian;privateButtonbuttonchen;privateButtonbuttonchu;privateButtonbuttonzhenfu;privateButtonbutton

47、denyu;privateButtonbuttonxiaoshudian;privateButtonbuttonqingchu;privateButtonbuttonkaifang;privateButtonbuttonzhishu;privateButtonbuttoncos;privateButtonbuttonsin;publicvoidonCreate(BundlesavedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.main);button0=(Button)findViewById

48、(R.id.btn0);button1=(Button)findViewById(R.id.btn1);button2=(Button)findViewById(R.id.btn2);button3=(Button)findViewById(R.id.btn3);button4=(Button)findViewById(R.id.btn4);button5=(Button)findViewById(R.id.btn5);button6=(Button)findViewById(R.id.btn6);button7=(Button)findViewById(R.id.btn7);button8=

49、(Button)findViewById(R.id.btn8);button9=(Button)findViewById(R.id.btn9);buttonjia=(Button)findViewById(R.id.jia);buttonjian=(Button)findViewById(R.id.jian);buttonchen=(Button)findViewById(R.id.chen);buttonchu=(Button)findViewById(R.id.chu);buttonzhenfu=(Button)findViewById(R.id.zhenfu);buttondenyu=(

50、Button)findViewById(R.id.denyu);buttonqingchu=(Button)findViewById(R.id.qingchu);buttonxiaoshudian=(Button)findViewById(R.id.xiaoshudian);buttonkaifang=(Button)findViewById(R.id.kaifang);buttonzhishu=(Button)findViewById(R.id.zhishu);buttoncos=(Button)findViewById(R.id.cos);buttonsin=(Button)findVie

51、wById(R.id.sin);button0.setOnClickListener(lisenter);button1.setOnClickListener(lisenter);button2.setOnClickListener(lisenter);button3.setOnClickListener(lisenter);button4.setOnClickListener(lisenter);button5.setOnClickListener(lisenter);button6.setOnClickListener(lisenter);button7.setOnClickListene

52、r(lisenter);button8.setOnClickListener(lisenter);button9.setOnClickListener(lisenter);buttonjia.setOnClickListener(lisenter);buttonjian.setOnClickListener(lisenter);buttonchen.setOnClickListener(lisenter);buttonchu.setOnClickListener(lisenter);buttondenyu.setOnClickListener(lisenter);buttonzhenfu.se

53、tOnClickListener(lisenter);buttonqingchu.setOnClickListener(lisenter);buttonxiaoshudian.setOnClickListener(lisenter);buttonkaifang.setOnClickListener(lisenter);buttonzhishu.setOnClickListener(lisenter);buttoncos.setOnClickListener(lisenter);buttonsin.setOnClickListener(lisenter);privateOnClickListen

54、erlisenter=newOnClickListener()publicvoidonClick(Viewv)TextViewtext=(TextView)findViewById(R.id.text);Strings=text.getText().toString();/獲取文本框顯示的字符串Buttonbtn=(Button)v;Stringt=(String)btn.getText();/獲取按鈕的字符if(btn.getId()=R.id.btn0|btn.getId()=R.id.btn1|btn.getId()=R.id.btn2|btn.getId()=R.id.btn3|btn

55、.getId()=R.id.btn4|btn.getId()=R.id.btn5|btn.getId()=R.id.btn6|btn.getId()=R.id.btn7|btn.getId()=R.id.btn8|btn.getId()=R.id.btn9)if(newdigital)text.setText(s+t);elsetext.setText(s);newdigital=false;return;if(btn.getId()=R.id.zhenfu)/改變數(shù)的正負(fù)性/c=Double.parseDouble(s);/text.setText(String.valueOf(-c);/r

56、eturn;if(s.length()=0)a=0;b=0;option=0;newdigital=true;text.setText();return;elseif(s!=)c=Double.parseDouble(s);text.setText(String.valueOf(-c);newdigital=true;return;if(btn.getId()=R.id.jia)/加a=Double.parseDouble(s);option=1;text.setText();return;if(btn.getId()=R.id.jian)/減a=Double.parseDouble(s);o

57、ption=2;text.setText();return;if(btn.getId()=R.id.chen)/乘a=Double.parseDouble(s);option=3;text.setText();return;if(btn.getId()=R.id.chu)/除a=Double.parseDouble(s);option=4;text.setText();return;if(btn.getId()=R.id.qingchu)/清除a=0;b=0;option=0;newdigital=true;text.setText();return;if(btn.getId()=R.id.kaifang)/開(kāi)方if(s.length()=0)a=

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論