基于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、Android課程設(shè)計(jì) 基于Android計(jì)算器功能的實(shí)現(xiàn)所在系(院): 學(xué) 生 姓 名: 指 導(dǎo) 教 師: 研究起止日期: 目 錄1、軟件產(chǎn)品介紹.12、軟件開(kāi)發(fā)環(huán)境.23、軟件功能說(shuō)明.24、程序流程圖.25、軟件介面及程序主要代碼.46、設(shè)計(jì)總結(jié). .10基于Android計(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ù)于娛樂(lè)為一身的智能手機(jī)系統(tǒng)。由Google公司牽頭眾多實(shí)力雄厚的軟硬件廠商加盟成立了OMS聯(lián)盟,并推出的Android平臺(tái)手機(jī)系統(tǒng)。作為時(shí)

2、代的新生兒,Android手機(jī)操作平臺(tái)有著得天獨(dú)厚的優(yōu)勢(shì)廣闊的發(fā)展前景。本文正是基于Android平臺(tái)開(kāi)發(fā)的計(jì)算器。計(jì)算器作為現(xiàn)在人們?nèi)粘I钪谐S玫囊环N工具已經(jīng)可以說(shuō)是人們?nèi)粘I钪斜夭豢缮俚墓ぞ吡?。整個(gè)程序基于android技術(shù)開(kāi)發(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ō)明。具體的說(shuō),總體模塊的作用主要是生成應(yīng)用程序的主類,控制應(yīng)用程序的生命

3、周期。輸入模塊 主要描述了計(jì)算器鍵盤以及鍵盤的監(jiān)聽(tīng)即主要負(fù)責(zé)讀取用戶的鍵盤輸入以及響應(yīng)觸屏的按鍵,需要監(jiān)聽(tīng)手機(jī)按鍵動(dòng)作以及用指針事件處理方法處理觸屏的單擊動(dòng)作(以松開(kāi)按鍵為準(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)輸入模塊顯示模塊計(jì)算模塊用系統(tǒng)框圖來(lái)表示即如圖 2-0。 圖2-0 系統(tǒng)框圖2、 軟件開(kāi)發(fā)環(huán)境 論文主要闡述以面向?qū)ο蟮某绦蜷_(kāi)

4、發(fā)語(yǔ)言eclipse為開(kāi)發(fā)工具, 設(shè)計(jì)并實(shí)現(xiàn)基于 Android的計(jì)算器。步驟1à安裝JDK步驟2à安裝Tomcat步驟3à安裝 Android SDK步驟4à安裝Eclipse步驟5à安裝Eclipse的ADT插件 步驟6 Eclipse的SDK配置步驟7à建立AVD虛擬機(jī)3、 軟件功能說(shuō)明系統(tǒng)包括普通計(jì)算功能,基本的加減乘除,小數(shù)運(yùn)算以及清零功能。如圖2-1。對(duì)任意兩個(gè)數(shù)據(jù)進(jìn)行相加的操作除法(/)手機(jī)計(jì)算器加法(+) 減法(-)乘法(*)清零 C 對(duì)任意兩個(gè)數(shù)據(jù)進(jìn)行相減的操作對(duì)任意兩個(gè)數(shù)相乘的操作任意兩個(gè)數(shù)相除

5、的操作,但要符合運(yùn)算邏輯清除已經(jīng)被記憶的數(shù)據(jù) 如圖2-1 功能圖4、 程序流程圖知道了系統(tǒng)的功能以后,我們通過(guò)main.xml來(lái)建立顯示界面,完成后系統(tǒng)開(kāi)始監(jiān)聽(tīng)用戶的按鍵輸入,每次輸入系統(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所示: 開(kāi)始監(jiān)聽(tīng)用戶按鍵輸入判斷是否是清零操作按照用戶的要求進(jìn)行計(jì)算系統(tǒng)重置判斷是否是需要結(jié)算結(jié)果在顯示區(qū)顯示計(jì)算出的結(jié)果圖2-2 程序流程圖是是否否 5、 軟件介面及程序主要代碼1:(1)XML文件

6、生成Main.xml的代碼:根據(jù)MVC原則,UI應(yīng)該與程序邏輯相分離,因此,在XML中定義UI結(jié)構(gòu)是強(qiáng)烈推薦的。常用的方式是用圖形化的方式來(lái)編寫布局Layout,這些布局保存在XML文件中,然后編譯成資源,在程序中Activity通過(guò)setContentView()方法來(lái)加載,然后通過(guò)findViewByld()方式來(lái)獲得每一個(gè)界面組件的引用。實(shí)現(xiàn)過(guò)程及步驟。在layout文件夾下定義自己的XML頁(yè)面。如計(jì)算器屬性界面的實(shí)現(xiàn)如下所示部分代碼<?xml version="1.0" encoding="utf-8"?><LinearLayo

7、ut xmlns:android="android:orientation="vertical" android:layout_width="fill_parent"android:layout_height="fill_parent"><EditText android:id="+id/txt_input" android:layout_width="240dp"android:layout_height="wrap_content" android:

8、gravity="right" android:text="string/zero"/>.</LinearLayout>LinearLayout是線性布局控件,它包含的子控件將以橫向或豎向的方式排列,按照相對(duì)位置來(lái)排列所有的widgets或者其他的containers,超過(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.txt_input來(lái)獲取這

9、個(gè)布局變量實(shí)體。android:orientation="vertical" /這個(gè)布局是垂直布局;(水平horizontal)android:layout_width="fill_parent" /設(shè)置一個(gè)頂部布局或控件強(qiáng)制性讓它布滿整個(gè)屏幕;("wrap_content"設(shè)置一個(gè)頂部布局或控件強(qiáng)制性讓它布滿整個(gè)屏幕)android:gravity="right" /限定里面的內(nèi)容向右對(duì)齊;(android:layout_gravity="right" 表示在界面上的位置向右對(duì)齊)用XML實(shí)現(xiàn)

10、用戶界面具有以下優(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)用程序進(jìn)行容錯(cuò)處理。容錯(cuò)設(shè)計(jì)比如:在輸入過(guò)程中小數(shù)的話只能有一個(gè)小數(shù)點(diǎn),操作符不能連續(xù)輸入,整數(shù)數(shù)據(jù)的開(kāi)頭不能出現(xiàn)0等等。所以設(shè)計(jì)了如下代碼:/ 數(shù)字監(jiān)聽(tīng)public void xianshi(final Button but, final EditText t1) but.

11、setOnClickListener(new OnClickListener() public void onClick(View v) /判斷開(kāi)始是否可以按操作符if (but.getText().toString().equals(".") if (strBuff.indexOf("+") != -1| strBuff.indexOf("-") != -1| strBuff.indexOf("*") != -1| strBuff.indexOf("/") != -1) strBuff.app

12、end(but.getText().toString();t1.setText(strBuff);/判斷一個(gè)操作數(shù)中是否可以按多個(gè)點(diǎn) else if (strBuff.indexOf(".") = -1 && strBuff.length() != 0) strBuff.append(but.getText().toString();t1.setText(strBuff); /判斷在什么情況下可以按多個(gè)零 else if (but.getText().toString().equals("0") if (strBuff.indexOf(&

13、quot;0") = 0 && strBuff.indexOf(".") = 1) strBuff.append(but.getText().toString();t1.setText(strBuff); else if (strBuff.length() = 0) strBuff.append(but.getText().toString();t1.setText(strBuff); /判斷第一個(gè)按零,接著再按整數(shù)的情況時(shí),屏幕的顯示 else if (strBuff.indexOf("0") = 0&& st

14、rBuff.indexOf(".") = -1) strBuff.delete(0, strBuff.length();strBuff.append(but.getText().toString();t1.setText(strBuff); else strBuff.append(but.getText().toString();t1.setText(strBuff););運(yùn)算部分代碼:/ 符號(hào)監(jiān)聽(tīng)public void jisuan(final Button but1, final EditText t1) but1.setOnClickListener(new OnCl

15、ickListener() public void onClick(View v) /存放輸入的字符String newchar1 = but1.getText().toString();/判斷開(kāi)始是否為等號(hào),輸入一個(gè)數(shù)字后在輸入等號(hào)沒(méi)有反映String newchar = ""if (!(newchar1.equals("=") newchar = newchar1;float per1 = 0;/用來(lái)存放截取字符串的第一個(gè)操作數(shù)float per2 = 0;/用來(lái)存放截取字符串的第二個(gè)操作數(shù)/判斷按的字符是否為清除鍵if (newchar.equal

16、sIgnoreCase("c") strBuff.delete(0, strBuff.length();t1.setText("0");return;/判斷按的操作符是什么計(jì)算字符/判斷是否為加法if (strBuff.indexOf("+") != -1&& strBuff.indexOf("+") < strBuff.length() - 1&& strBuff.indexOf("+") != 0) int i = strBuff.indexOf(&qu

17、ot;+");per1 = Float.parseFloat(strBuff.substring(0, i);per2 = Float.parseFloat(strBuff.substring(i + 1, strBuff.length();float sum = per1 + per2;strBuff.delete(0, strBuff.length();strBuff.append(sum);strBuff.append(newchar);t1.setText(strBuff);/判斷是否為減法 else if (strBuff.indexOf("-") !=

18、 -1&& strBuff.indexOf("-") < strBuff.length() - 1&& strBuff.indexOf("-") != 0) int i = strBuff.indexOf("-");per1 = Float.parseFloat(strBuff.substring(0, i);per2 = Float.parseFloat(strBuff.substring(i + 1, strBuff.length();float sum = per1 - per2;strBu

19、ff.delete(0, strBuff.length();strBuff.append(sum);strBuff.append(newchar);t1.setText(strBuff);/判斷是否為乘法 else if (strBuff.indexOf("*") != -1&& strBuff.indexOf("*") < strBuff.length() - 1&& strBuff.indexOf("*") != 0) int i = strBuff.indexOf("*"

20、);per1 = Float.parseFloat(strBuff.substring(0, i);per2 = Float.parseFloat(strBuff.substring(i + 1, strBuff.length();float sum = per1 * per2;strBuff.delete(0, strBuff.length();strBuff.append(sum);strBuff.append(newchar);t1.setText(strBuff);/判斷是否為除法 else if (strBuff.indexOf("/") != -1&&a

21、mp; strBuff.indexOf("/") < strBuff.length() - 1&& strBuff.indexOf("/") != 0) int i = strBuff.indexOf("/");per1 = Float.parseFloat(strBuff.substring(0, i);per2 = Float.parseFloat(strBuff.substring(i + 1, strBuff.length();/判斷第二個(gè)操作數(shù)是否為零,為零則把顯示框清零if (per2 != 0) f

22、loat sum = per1 / per2;strBuff.delete(0, strBuff.length();strBuff.append(sum);strBuff.append(newchar);t1.setText(strBuff); else strBuff.delete(0, strBuff.length();strBuff.append("0");t1.setText(strBuff); else /判斷操作符是否能接連不斷的點(diǎn)擊if (strBuff.length() > 0&& ('0' <= strBuff.charAt(strBuff.length() - 1)&& ('9' >= strBuff.charAt(strBuff.length() - 1) strBuff.appe

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論