基于Android計(jì)算器功能的實(shí)現(xiàn)綜述_第1頁(yè)
基于Android計(jì)算器功能的實(shí)現(xiàn)綜述_第2頁(yè)
基于Android計(jì)算器功能的實(shí)現(xiàn)綜述_第3頁(yè)
基于Android計(jì)算器功能的實(shí)現(xiàn)綜述_第4頁(yè)
基于Android計(jì)算器功能的實(shí)現(xiàn)綜述_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、南京曉莊學(xué)院android課程設(shè)計(jì)An droid課程設(shè)計(jì)基于An droid計(jì)算器功能的實(shí)現(xiàn)所在系(院): 學(xué)生姓名: 指導(dǎo)教師: 研究起止日期:目 錄1、軟件產(chǎn)品介紹12、軟件開發(fā)環(huán)境23、軟件功能說(shuō)明24、 程序流程圖25、 軟件介面及程序主要代碼46、 設(shè)計(jì)總結(jié)10南京曉莊學(xué)院android課程設(shè)計(jì)基于An droid計(jì)算器相關(guān)技術(shù)概述1、軟件產(chǎn)品介紹隨著移動(dòng)通信技術(shù)和網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,手機(jī)系統(tǒng)發(fā)生了巨大的變化,從進(jìn)行簡(jiǎn)單通 話功能的非智能手機(jī)到現(xiàn)在集上網(wǎng)、聊天、收發(fā)郵件、視屏電話會(huì)議等各種服務(wù)于娛樂 為一身的智能手機(jī)系統(tǒng)。由Google公司牽頭眾多實(shí)力雄厚的軟硬件廠商加盟成立了OM

2、S聯(lián)盟,并推出的An droid平臺(tái)手機(jī)系統(tǒng)。作為時(shí)代的新生兒,An droid手機(jī)操作平臺(tái)有著得天獨(dú)厚的優(yōu)勢(shì)廣闊的發(fā)展前景。本文正是基于An droid平臺(tái)開發(fā)的計(jì)算器。計(jì)算器作為現(xiàn)在人們?nèi)粘I钪谐S玫囊环N工具已經(jīng)可以說(shuō)是人們?nèi)粘I钪斜夭豢缮俚墓?具了。整個(gè)程序基于an droid技術(shù)開發(fā),出總體模塊外主要分為輸入模塊、顯示模塊以及計(jì)算 模塊(包括一些其他功能)這三大部分。在整個(gè)系統(tǒng)中總體模塊控制系統(tǒng)的生命周期, 輸入模塊部分負(fù)責(zé)讀取用戶輸入的數(shù)據(jù), 顯示模塊部分負(fù)責(zé)顯示用戶之前輸入的數(shù)據(jù)以 及顯示最終的計(jì)算結(jié)果,計(jì)算模塊部分負(fù)責(zé)進(jìn)行數(shù)據(jù)的運(yùn)算以及一些其他的功能。下面 較為詳細(xì)的做了說(shuō)明

3、。具體的說(shuō),總體模塊的作用主要是生成應(yīng)用程序的主類,控制應(yīng)用程序的生命周期。 輸入模塊 主要描述了計(jì)算器鍵盤以及鍵盤的監(jiān)聽即主要負(fù)責(zé)讀取用戶的鍵盤輸入以及 響應(yīng)觸屏的按鍵,需要監(jiān)聽手機(jī)按鍵動(dòng)作以及用指針事件處理方法處理觸屏的單擊動(dòng)作(以松開按鍵為準(zhǔn))。同時(shí)提供了較為直觀的鍵盤圖形用戶界面。顯示模塊 描述了計(jì)算器的顯示區(qū),即該區(qū)域用于顯示用戶輸入的數(shù)據(jù)以及最終的計(jì)算 結(jié)果,同時(shí)還負(fù)責(zé)顯示一些其他的信息。計(jì)算模塊 則主要描述了計(jì)算器的整體,實(shí)現(xiàn)了計(jì)算器的界面,負(fù)責(zé)計(jì)算用戶輸入數(shù)據(jù), 包括加、減、乘、除、等各種計(jì)算功能以及清零的功能。用系統(tǒng)框圖來(lái)表示即如圖2-0。圖2-0系統(tǒng)框圖2、軟件開發(fā)環(huán)境論文

4、主要闡述以面向?qū)ο蟮某绦蜷_發(fā)語(yǔ)言eclipse為開發(fā)工具,設(shè)計(jì)并實(shí)現(xiàn)基于An droid的計(jì)算器。步驟1女嘗JDK步驟5女裝Eclipse的ADTfi件步驟2女裝Tomcat步驟6Eclipse 的 SDK配置步驟3安裝 An droid SDK步驟7建立AVD虛擬機(jī)步驟4女裝 Eclipse3、軟件功能說(shuō)明如圖2-1功能圖系統(tǒng)包括普通計(jì)算功能,基本的加減乘除,小數(shù)運(yùn)算以及清零功能。如圖2-1對(duì)任意兩個(gè)數(shù)據(jù)進(jìn)行相加的操作對(duì)任意兩個(gè)數(shù)據(jù)進(jìn)行相減的操作對(duì)任意兩個(gè)數(shù)相乘的操作任意兩個(gè)數(shù)相除的操作,但要符合運(yùn)算邏輯清除已經(jīng)被記憶的數(shù)據(jù)4、程序流程圖知道了系統(tǒng)的功能以后,我們通過(guò)main.xml來(lái)建立顯

5、示界面,完成后系統(tǒng)開始監(jiān)聽用戶的按鍵輸入,每次輸入系統(tǒng)都會(huì)判斷一次用戶輸入的類型,是數(shù)字還是運(yùn)算符號(hào)或者 是清除,判斷完后分成不同類型如數(shù)字,符號(hào),基本運(yùn)算等等進(jìn)行進(jìn)一步的處理,根據(jù) 用戶的要求繼續(xù)進(jìn)行下一步的操作,最后計(jì)算出最終結(jié)果并顯示在顯示區(qū)。系統(tǒng)流程圖如圖2-2所示:105、軟件介面及程序主要代碼12:29.Hursday, Newt trier 21C Char (5M|Ardroid0 ft 6 31:( 1)XML文件生成Main.xml的代碼:根據(jù)MVC原則,UI應(yīng)該與程序邏輯相分離,因此,在XML中定義UI結(jié)構(gòu)是強(qiáng)烈推薦的。 常用的方式是用圖形化的方式來(lái)編寫布局 Layout

6、,這些布局保存在XML文件中,然后編 譯成資源,在程序中Activity 通過(guò)setContentView()方法來(lái)加載,然后通過(guò)findView Byld()方式來(lái)獲得每一個(gè)界面組件的引用。實(shí)現(xiàn)過(guò)程及步驟。在 layout文件夾下定義 自己的XML頁(yè)面。如計(jì)算器屬性界面的實(shí)現(xiàn)如下所示 部分代碼vEditText an droid:id=+id/txt_i nputan droid:layout_width=240dpan droid:layout_height=wrap_co nten tan droid:gravity =right an droid:text =stri ng/zero

7、/LinearLayout是線性布局控件,它包含的子控件將以橫向或豎向的方式排列,按照相對(duì)位置來(lái)排列所有的widgets或者其他的con tai ners,超過(guò)邊界時(shí),某些控件將缺失或消 失。android:id=+id/txt_input /定義了布局的變量名稱為txt_input, 會(huì)自動(dòng)寫進(jìn)R.java;在R.Java文件中會(huì)生成內(nèi)部類id,可在主程序里面調(diào)用 R.id.txtnput 來(lái)獲取 這個(gè)布局變量實(shí)體。android:orientation=vertical /這個(gè)布局是垂直布局;(水平 horizontal)an droid:layout_width=fill_pare nt

8、/設(shè)置一個(gè)頂部布局或控件強(qiáng)制性讓它布滿整個(gè)屏幕;(wrap_co nte nt設(shè)置一個(gè)頂部布局或控件強(qiáng)制性讓它布滿整個(gè)屏幕)android:gravity=right / 限定里面的內(nèi)容向右對(duì)齊;(android:layout_gravity=right表示在界面上的位置向右對(duì)齊)用XML實(shí)現(xiàn)用戶界面具有以下優(yōu)點(diǎn):a) XML文件結(jié)構(gòu)清晰,易于擴(kuò)展,系統(tǒng)可擴(kuò)展性好。b) 用戶界面與業(yè)務(wù)邏輯完全分離,降低了系統(tǒng)界面與業(yè)務(wù)邏輯的耦合性。c) XML文件簡(jiǎn)單易懂,可維護(hù)性好。2:計(jì)算器控制邏輯設(shè)計(jì)與實(shí)現(xiàn)代碼:CountMain .java用戶在輸入過(guò)程中,肯定會(huì)存在一定的錯(cuò)誤,程序設(shè)計(jì)過(guò)程中需要對(duì)應(yīng)

9、用程序進(jìn)行容錯(cuò)處理。容錯(cuò)設(shè)計(jì)比如:在輸入過(guò)程中小數(shù)的話只能有一個(gè)小數(shù)點(diǎn),操作符不能連續(xù)輸入,整數(shù)數(shù)據(jù)的開頭不能出現(xiàn)0等等。所以設(shè)計(jì)了如下代碼:/數(shù)字監(jiān)聽public void xia nshi(fi nal Butt on but, final EditText t1) but.set On ClickListe ner( new On ClickListe ner() public void on Click(View v) /判斷開始是否可以按操作符if (but.getText().toStri ng().equals(.) if (strBuff.i ndexOf(+) != -1|

10、strBuff.i ndexOf(-) != -1| strBuff.i ndexOf(*) != -1| strBuff. in dexOf(/) != -1) strBuff. appe nd(but.getText().toStri ng(); t1.setText(strBuff);/判斷一個(gè)操作數(shù)中是否可以按多個(gè)點(diǎn) else if (strBuff. in dexOf(.) = -1 & strBuff.le ngth() != 0) strBuff.appe nd(but.getText().toStri ng(); t1.setText(strBuff);/判斷在什么情況下可以按

11、多個(gè)零 else if (but.getText().toStri ng().equals(O) if (strBuff.i ndexOf(O) = 0 & strBuff.i ndexOf(.) = 1) strBuff. appe nd(but.getText().toStri ng(); t1.setText(strBuff); else if (strBuff.le ngth() = 0) strBuff. appe nd(but.getText().toStri ng(); t1.setText(strBuff);/判斷第一個(gè)按零,接著再按整數(shù)的情況時(shí),屏幕的顯示 else if (

12、strBuff.i ndexOf(0) = 0& strBuff. in dexOf(.) = -1) strBuff.delete(0, strBuff.le ngth(); strBuff.appe nd(but.getText().toStri ng(); t1.setText(strBuff); else strBuff.appe nd(but.getText().toStri ng();tl.setText(strBuff););運(yùn)算部分代碼:/符號(hào)監(jiān)聽public void jisua n(final Button butl, final EditText t1) butl.set

13、 On ClickListe ner(new On ClickListe ner() public void on Click(View v) /存放輸入的字符Stri ng n ewchar1 = but1.getText().toStri ng();/判斷開始是否為等號(hào),輸入一個(gè)數(shù)字后在輸入等號(hào)沒有反映Stri ng n ewchar =;if (!(newchar1.equals(=) n ewchar = n ewchar1;float per1 = 0;/用來(lái)存放截取字符串的第一個(gè)操作數(shù)float per2 = 0;/用來(lái)存放截取字符串的第二個(gè)操作數(shù)/判斷按的字符是否為清除鍵if (

14、n ewchar.equalsIg no reCase(c) strBuff.delete(0, strBuff.le ngth();t1.setText(0);return;/判斷按的操作符是什么計(jì)算字符/判斷是否為加法if (strBuff.i ndexOf(+) != -1& strBuff.i ndexOf(+) strBuff.le ngth() - 1& strBuff.i ndexOf(+) != 0) int i = strBuff.i ndexOf(+);perl = Float.parseFloat(strBuff.substri ng(0, i);per2 = Float

15、.parseFloat(strBuff.substri ng(i + 1, strBuff.le ngth();float sum = per1 + per2;strBuff.delete(0, strBuff.le ngth();strBuff.appe nd(sum);strBuff.appe nd(n ewchar);t1.setText(strBuff);/判斷是否為減法 else if (strBuff.i ndexOf(-) != -1& strBuff.i ndexOf(-) strBuff.le ngth() - 1& strBuff.i ndexOf(-) != 0) int

16、 i = strBuff.i ndexOf(-);per1 = Float.parseFloat(strBuff.substri ng(0, i);per2 = Float.parseFloat(strBuff.substri ng(i + 1, strBuff.le ngth();float sum = per1 - per2;strBuff.delete(0, strBuff.le ngth();strBuff.appe nd(sum);strBuff.appe nd(n ewchar);t1.setText(strBuff);/判斷是否為乘法 else if (strBuff.i nde

17、xOf(*) != -1& strBuff.i ndexOf(*) strBuff.le ngth() - 1& strBuff.i ndexOf(*) != 0) int i = strBuff.i ndexOf(*);per1 = Float.parseFloat(strBuff.substri ng(0, i);per2 = Float.parseFloat(strBuff.substri ng(i + 1, strBuff.le ngth();float sum = per1 * per2;strBuff.delete(0, strBuff.le ngth();strBuff.appe

18、 nd(sum);strBuff.appe nd(n ewchar);tl.setText(strBuff);/判斷是否為除法 else if (strBuff. in dexOf(/) != -1& strBuff.i ndexOf(/) 0& (0 = strBuff.charAt(strBuff.le ngth() - 1) strBuff.appe nd(n ewchar);t1.setText(strBuff););Overridepublic void on Create(B un dle saved In sta nceState) /這是 Activity 建立的時(shí)候一定會(huì)調(diào)用的onCreate()方法,第一行是聲明super.onCreate(savedln

溫馨提示

  • 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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論