基于Android計算器功能的實現(xiàn)_第1頁
基于Android計算器功能的實現(xiàn)_第2頁
基于Android計算器功能的實現(xiàn)_第3頁
基于Android計算器功能的實現(xiàn)_第4頁
基于Android計算器功能的實現(xiàn)_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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

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

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

5、的操作,但要符合運算邏輯清除已經(jīng)被記憶的數(shù)據(jù) 如圖2-1 功能圖4、 程序流程圖知道了系統(tǒng)的功能以后,我們通過main.xml來建立顯示界面,完成后系統(tǒng)開始監(jiān)聽用戶的按鍵輸入,每次輸入系統(tǒng)都會判斷一次用戶輸入的類型,是數(shù)字還是運算符號或者是清除,判斷完后分成不同類型如數(shù)字,符號,基本運算等等進行進一步的處理,根據(jù)用戶的要求繼續(xù)進行下一步的操作,最后計算出最終結(jié)果并顯示在顯示區(qū)。系統(tǒng)流程圖如圖2-2所示: 開始監(jiān)聽用戶按鍵輸入判斷是否是清零操作按照用戶的要求進行計算系統(tǒng)重置判斷是否是需要結(jié)算結(jié)果在顯示區(qū)顯示計算出的結(jié)果圖2-2 程序流程圖是是否否 5、 軟件介面及程序主要代碼1:(1)XML文件

6、生成Main.xml的代碼:根據(jù)MVC原則,UI應(yīng)該與程序邏輯相分離,因此,在XML中定義UI結(jié)構(gòu)是強烈推薦的。常用的方式是用圖形化的方式來編寫布局Layout,這些布局保存在XML文件中,然后編譯成資源,在程序中Activity通過setContentView()方法來加載,然后通過findViewByld()方式來獲得每一個界面組件的引用。實現(xiàn)過程及步驟。在layout文件夾下定義自己的XML頁面。如計算器屬性界面的實現(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是線性布局控件,它包含的子控件將以橫向或豎向的方式排列,按照相對位置來排列所有的widgets或者其他的containers,超過邊界時,某些控件將缺失或消失。android:id="+id/txt_input" / 定義了布局的變量名稱為txt_input,會自動寫進R.java; 在R.Java文件中會生成內(nèi)部類id,可在主程序里面調(diào)用R.id.txt_input來獲取這

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

10、用戶界面具有以下優(yōu)點: a)XML文件結(jié)構(gòu)清晰,易于擴展,系統(tǒng)可擴展性好。 b) 用戶界面與業(yè)務(wù)邏輯完全分離,降低了系統(tǒng)界面與業(yè)務(wù)邏輯的耦合性。c)XML文件簡單易懂,可維護性好。2:計算器控制邏輯設(shè)計與實現(xiàn)代碼:CountMain.java用戶在輸入過程中,肯定會存在一定的錯誤,程序設(shè)計過程中需要對應(yīng)用程序進行容錯處理。容錯設(shè)計比如:在輸入過程中小數(shù)的話只能有一個小數(shù)點,操作符不能連續(xù)輸入,整數(shù)數(shù)據(jù)的開頭不能出現(xiàn)0等等。所以設(shè)計了如下代碼:/ 數(shù)字監(jiān)聽public void xianshi(final Button but, final EditText t1) but.

11、setOnClickListener(new OnClickListener() public void onClick(View v) /判斷開始是否可以按操作符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);/判斷一個操作數(shù)中是否可以按多個點 else if (strBuff.indexOf(".") = -1 && strBuff.length() != 0) strBuff.append(but.getText().toString();t1.setText(strBuff); /判斷在什么情況下可以按多個零 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); /判斷第一個按零,接著再按整數(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););運算部分代碼:/ 符號監(jiān)聽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();/判斷開始是否為等號,輸入一個數(shù)字后在輸入等號沒有反映String newchar = ""if (!(newchar1.equals("=") newchar = newchar1;float per1 = 0;/用來存放截取字符串的第一個操作數(shù)float per2 = 0;/用來存放截取字符串的第二個操作數(shù)/判斷按的字符是否為清除鍵if (newchar.equal

16、sIgnoreCase("c") strBuff.delete(0, strBuff.length();t1.setText("0");return;/判斷按的操作符是什么計算字符/判斷是否為加法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();/判斷第二個操作數(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 /判斷操作符是否能接連不斷的點擊if (strBuff.length() > 0&& ('0' <= strBuff.charAt(strBuff.length() - 1)&& ('9' >= strBuff.charAt(strBuff.length() - 1) strBuff.appe

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論