版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、-. z.安卓應用程序設計簡易計算器的實現(xiàn)院系名稱專業(yè)名稱學生*學生*課程名稱2016年6月日系統(tǒng)需求分析Android是以Linu*為核心的手機操作平臺,作為一款開放式的操作系統(tǒng),隨著Android的快速開展,如今已允許開發(fā)者使用多種編程語言來開發(fā)Android應用程序,而不再是以前只能使用Java開發(fā)Android應用程序的單一局面,因而受到眾多開發(fā)者的歡送,成為真正意義上的開放式操作系統(tǒng)。計算器通過算法實行簡單的數(shù)學計算從而提高了數(shù)學計算的效率,實現(xiàn)計算器的界面優(yōu)化,使界面更加友好,操作更加方便?;赼ndroid的計算器的設計,系統(tǒng)具有良好的界面;必要的交互信息;簡約美觀的效果。使用人
2、員能快捷簡單地進展操作,即可單機按鈕進展操作,即時準確地獲得需要的計算的結果,充分降低了數(shù)字計算的難度和節(jié)約了時間。系統(tǒng)概要設計2.1計算器功能概要設計根據(jù)需求,符合用戶的實際要求,系統(tǒng)應實現(xiàn)以下功能:計算器界面友好,方便使用,具有根本的加、減、乘、除功能,能夠判斷用戶輸入運算數(shù)是否正確,支持小數(shù)運算,具有去除功能。圖2.1系統(tǒng)功能圖整個程序基于Android技術開發(fā),除總體模塊外主要分為輸入模塊、顯示模塊以及計算模塊這三大局部。在整個系統(tǒng)中總體模塊控制系統(tǒng)的生命周期,輸入模塊局部負責讀取用戶輸入的數(shù)據(jù),顯示模塊局部負責顯示用戶之前輸入的數(shù)據(jù)以及顯示最終的計算結果,計算模塊局部負責進展數(shù)據(jù)的運
3、算以及一些其他的功能。具體的說,總體模塊的作用主要是生成應用程序的主類,控制應用程序的生命周期。輸入模塊主要描述了計算器鍵盤以及鍵盤的監(jiān)聽即主要負責讀取用戶的鍵盤輸入以及響應觸屏的按鍵,需要監(jiān)聽手機動作以及用指針事件處理方法處理觸屏的單擊動作。同時提供了較為直觀的鍵盤圖形用戶界面。顯示模塊描述了計算器的顯示區(qū),即該區(qū)域用于顯示用戶輸入的數(shù)據(jù)以及最終的計算結果,同時負責顯示一些其他的信息。計算模塊則主要描述了計算器的整體,實現(xiàn)了計算器的界面,負責計算用戶輸入數(shù)據(jù),包括加、減、乘、除等各種功能,記憶數(shù)據(jù)的相關功能,清零的功能??傮w系統(tǒng)顯示模塊計算模塊輸入模塊圖2.2三大模塊2.2輸入模塊設計系統(tǒng)如
4、果想完成計算器中各種功能,首先用戶要能進展數(shù)據(jù)輸入,由于是在觸屏手機上開發(fā)計算器程序,所以要求輸入可以直接使用觸屏進展,所以在設計的時候就要充分的考慮這一點。正是由于考慮到這個特殊的地方,所以在進展模塊設計中,選擇編寫輸入模塊類的時候會特意選取使用可以支持觸屏輸入的特殊增強型圖形用戶界面類。輸入模塊主要的任務是描述計算器鍵盤以及實現(xiàn)鍵盤的監(jiān)聽,即當用戶點擊按鍵或者屏幕的時候監(jiān)聽會去調用相應的處理方法,本模塊還需要為系統(tǒng)提供一個較為直觀的鍵盤圖形用戶界面。輸入模塊的功能圖如圖輸入模塊設置按鈕按鍵監(jiān)聽設置按鍵監(jiān)聽設置監(jiān)聽調用圖2.3輸入模塊2.3顯示模塊設計作為手機計算器系統(tǒng),顯示局部也是必不可少
5、的一局部。沒有顯示局部就沒有方法顯示用戶輸入的數(shù)字是否正確,甚至不能顯示計算出的結果,由此可見顯示模塊即包括輸入的局部因個人技術原因不能顯示表達式的形式也包括輸出的局部。顯示模塊主要完成的任務是描述計算器的顯示區(qū),該區(qū)域用于顯示用戶輸入的數(shù)據(jù)以及最終的計算結果和一些其他信息。同時本模塊還將提供調用和設置顯示的具體方法顯示模塊顯示區(qū)設置顯示數(shù)據(jù)設置顯示圖2.4顯示模塊2.4計算模塊設計系統(tǒng)要完成整個的計算器的功能,則計算模塊就是整個系統(tǒng)的重要模塊。沒有計算模塊系統(tǒng)就不能順利的完成計算,就無法到達用戶的要求。所以計算模塊的設計也是本次系統(tǒng)設計的重點。系統(tǒng)想要能在屏幕上顯示出計算器的樣子要有整體的布
6、局。在本模塊中要完成布局的具體設計,使用戶能夠看到整個計算器的界面。同時系統(tǒng)想完成計算功能必須要處理用戶的輸入,當輸入模塊的監(jiān)聽傳到計算模塊中時,計算模塊就要根據(jù)相應的方法進展進一步的處理。計算模塊邏輯判斷整體布局數(shù)值輸入判斷運算輸入判斷普通運算功能清零功能記憶相關功能圖2.5計算模塊3.設計與實現(xiàn)局部3.1應用程序構成Android應用程序一般是由Activity、Serviece、ContentProvider、Intent、IntentReceiver、Notification六個組件構成。但并非每一個Android應用程序都包含這六個組件。1Activity活動:應用程序的表示層。Ac
7、tivity是Android的根本組件。每一個activity代表一個單獨的屏幕。每一個activity都是繼承于Activity的獨立類。這個activity類將會顯示出幾個Views控件組成的用戶接口,并對事件作出響應。Android使用了Intent,實現(xiàn)在屏幕與屏幕之間跳轉。Activity跳轉時只需要調用startActivityIntentmyIntent方法。然后,系統(tǒng)會在所有安裝的應用程序中定義的IntentFilter中查找,找到最匹配myIntent的Intent對應的activity。新的activity接收到myIntent的通知后,開場啟動運行。當startActiv
8、ity方法被調用將觸發(fā)解析myIntent的動作,這個機制提供了兩個關鍵的好處:能夠重復利用從其他組件中以Intent的形式產生的一個請求和可以在任何時候被一個具有一樣IntentFilter的新的startActivity取代。2Service(效勞):Android應用程序的后臺運行組件。Service沒有用戶界面的程序。效勞組件在后臺運行,它們可以更新數(shù)據(jù)源和可見的Activity,并觸發(fā)Notification。它們被用來執(zhí)行一些需要在后臺持續(xù)的常規(guī)處理。例如媒體播放器這個activity會使用Conte*t.startService方法,連接到一個service上如果這個servic
9、e還沒有運行將啟動它。當連接到一個service之后,我們還可以通過service提供的接口與它進展通訊。3ContentProvider內容提供器:用來管理和分享應用程序數(shù)據(jù)庫。ContentProvider是在應用程序之間共享數(shù)據(jù)的首選方法。通過配置ContentProvider允許其他應用程序訪問存儲的數(shù)據(jù),也可以使用其他應用程序提供的ContentProvider來訪問它們存儲的數(shù)據(jù)。Android平臺也提供了系統(tǒng)自帶的ContentProvider,如聯(lián)系人信息等。4Intent意向:Activity之間的粘合劑。使用Intent,可以在系統(tǒng)*圍內向目標活動或者效勞播送消息,說明希望
10、執(zhí)行*個動作的意圖。之后系統(tǒng)就會確定那些最適合執(zhí)行動作的目標。5Notification通知:一種用戶通知框架。通過允許向用戶發(fā)送信號,而不會過分吸引他們的注意力或者打斷他們當前的活動。它們是效勞或者播送接收器吸引用戶注意的首選方法。例如,當設備接收到一個文本消息或者來電的時候,它可以通過閃燈、發(fā)出聲音、顯示圖標或則會顯示對話框信息的方式提示用戶。6IntentReceiver意向接收器:通過IntentReceiver實現(xiàn)應用能夠對一個外部的事件作出響應,IntentReceiver在AndroidManifest.*ml中注冊,但也可以在代碼中使用Conte*t.registerRecei
11、ver()進展注冊。當一個intentreceive被觸發(fā)時,應用不必對請求調用intentreceive,系統(tǒng)會在需要的時候啟動你的應用。各種應用還可以通過使用Conte*t.broadcastIntent()將它們自己的intentreceive播送給其他應用程序。3.2功能的具體實現(xiàn)1計算器布局設計:分別實用Button按鈕操作17個按鈕,分別是+、*、/、=、0-9、去除按鈕,以及EditTest的文本域,并通過代碼布局調整布局,使布局更加清晰,簡潔。布局方式如下圖:代碼實現(xiàn)如下:2計算功能實現(xiàn)加法實現(xiàn):從editTest中獲取數(shù)字賦值于num1,等待數(shù)字num2的輸入。代碼如下:ca
12、se R.id.button13: String mystringadd = edit.getTe*t().toString(); if(mystringadd.equals(null) return; num1 = Double.valueOf(mystringadd); edit.setTe*t(null); op = 1; isClickEqu = false; break; 減法實現(xiàn)、乘法實現(xiàn)、除法實現(xiàn)和加法實現(xiàn)大體一樣,但是op的賦值不同分別是2、3、4。然后進展等號的計算實現(xiàn),在同時記錄下文本中的num2的數(shù)值,然后設置switch方法,case中op的值分別為1、2、3、4代表的
13、分別加、減、乘、除。然后根據(jù)case選項進展相應的加、減、乘、除運算,代碼實現(xiàn)如下所示:case R.id.button12: /等號,算法實現(xiàn) String myStringeq=edit.getTe*t().toString(); if (myStringeq.equals(null) return; num2 = Double.valueOf(myStringeq); edit.setTe*t(null); switch (op) case 0: Result = num2; break; case 1: Result = num1 + num2; break; case 2: Resu
14、lt = num1 - num2; break; case 3: Result = num1 * num2; break; case 4: Result = num1 / num2; break; edit.setTe*t(String.valueOf(Result); isClickEqu = true; break; 4.運行界面截圖運行結果界面:除法:20除以4的結果乘法3.89乘以1.2的結果減法3.6減去0.6除數(shù)為零:點擊去除之后的效果5.核心代碼import android.app.Activity;import android.os.Bundle;import android.
15、view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditTe*t;import android.widget.Toast;public class MainActivity e*tends Activity implements OnClickListener Button button1,button2,button3,button4,button5,button6,button7,but
16、ton8;Button button9,button10,button11,button12,button13,button14,button15,button16,button17;EditTe*t edit=null;double num1 = 0, num2 = 0 ,Result =0;boolean isClickEqu = false;int op = 0; Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.la
17、yout.activity_main);button1=(Button)this.findViewById(R.id.button1);button2=(Button)this. findViewById(R.id.button2);button3=(Button)this. findViewById(R.id.button3);button4=(Button)this. findViewById(R.id.button4);button5=(Button)this. findViewById(R.id.button5);button6=(Button)this. findViewById(R
18、.id.button6);button7=(Button)this. findViewById(R.id.button7);button8=(Button)this. findViewById(R.id.button8);button9=(Button)this. findViewById(R.id.button9);button10=(Button)this. findViewById(R.id.button10);button11=(Button)this. findViewById(R.id.button11);button12=(Button)this. findViewById(R.
19、id.button12);button13=(Button)this. findViewById(R.id.button13);button14=(Button)this. findViewById(R.id.button14);button15=(Button)this. findViewById(R.id.button15);button16=(Button)this. findViewById(R.id.button16);button17=(Button)this. findViewById(R.id.button17);edit=(EditTe*t) findViewById(R.i
20、d.editTe*t1);button1.setOnClickListener(this);button2.setOnClickListener(this);button3.setOnClickListener(this);button4.setOnClickListener(this);button5.setOnClickListener(this);button6.setOnClickListener(this);button7.setOnClickListener(this);button8.setOnClickListener(this);button9.setOnClickListe
21、ner(this);button10.setOnClickListener(this);button11.setOnClickListener(this);button12.setOnClickListener(this);button13.setOnClickListener(this);button14.setOnClickListener(this);button15.setOnClickListener(this);button16.setOnClickListener(this);button17.setOnClickListener(this);Overridepublic boo
22、lean onCreateOptionsMenu(Menu menu) / Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;Overridepublic void onClick(View v) / TODO Auto-generated method stubswitch(v.getId()case R.id.button17: edit.setTe*t(null); Toast.makeT
23、e*t(MainActivity.this, 已經去除, Toast.LENGTH_LONG).show(); break;case R.id.button1:if(isClickEqu) edit.setTe*t(null); isClickEqu=false; String myString1=edit.getTe*t().toString(); myString1+=1; edit.setTe*t(myString1); break; case R.id.button2:if(isClickEqu) edit.setTe*t(null); isClickEqu=false; String
24、 myString2=edit.getTe*t().toString(); myString2+=2; edit.setTe*t(myString2); break;case R.id.button3:if(isClickEqu) edit.setTe*t(null); isClickEqu=false; String myString3=edit.getTe*t().toString(); myString3+=3; edit.setTe*t(myString3); break;case R.id.button4:if(isClickEqu) edit.setTe*t(null); isCl
25、ickEqu=false; String myString4=edit.getTe*t().toString(); myString4+=4; edit.setTe*t(myString4); break;case R.id.button5:if(isClickEqu) edit.setTe*t(null); isClickEqu=false; String myString5=edit.getTe*t().toString(); myString5+=5; edit.setTe*t(myString5); break;case R.id.button6:if(isClickEqu) edit
26、.setTe*t(null); isClickEqu=false; String myString6=edit.getTe*t().toString(); myString6+=6; edit.setTe*t(myString6); break;case R.id.button7:if(isClickEqu) edit.setTe*t(null); isClickEqu=false; String myString7=edit.getTe*t().toString(); myString7+=7; edit.setTe*t(myString7); break;case R.id.button8
27、:if(isClickEqu) edit.setTe*t(null); isClickEqu=false; String myString8=edit.getTe*t().toString(); myString8+=8; edit.setTe*t(myString8); break;case R.id.button9:if(isClickEqu) edit.setTe*t(null); isClickEqu=false; String myString9=edit.getTe*t().toString(); myString9+=9; edit.setTe*t(myString9); bre
28、ak;case R.id.button10:if(isClickEqu) edit.setTe*t(null); isClickEqu=false; String myString10=edit.getTe*t().toString(); myString10+=0; edit.setTe*t(myString10); break; /點case R.id.button11:if(isClickEqu) edit.setTe*t(null); isClickEqu=false; String myString11=edit.getTe*t().toString(); myString11+=.
29、; edit.setTe*t(myString11); break; /加case R.id.button13: String mystringadd = edit.getTe*t().toString(); if(mystringadd.equals(null) return; num1 = Double.valueOf(mystringadd); edit.setTe*t(null); op = 1; isClickEqu = false; break; /減 case R.id.button14: String mystringred = edit.getTe*t().toString(); if(mystringred.equals(null) retu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度安全生產宣傳教育培訓合同
- 2024舞臺租賃合同范本下載與范本解讀6篇
- 二零二五年度建筑隔音材料供應合同3篇
- 二零二五年度手房買賣意向金代理支付及糾紛解決合同3篇
- 二零二五年度房產中介返傭服務專項合同2篇
- 2025年度共有產權房屋買賣合同違約補償協(xié)議3篇
- 2025年度交通樞紐房租遞增及運輸服務合同3篇
- 2025年度手車二手交易合同3篇
- 高中信息技術必修說課稿-4.2.1 表格數(shù)據(jù)的處理1-教科版001
- 2025年度旅游線路推廣合作二零二五年度合同3篇
- (八省聯(lián)考)河南省2025年高考綜合改革適應性演練 化學試卷(含答案)
- 2025中國電信山東青島分公司校園招聘高頻重點提升(共500題)附帶答案詳解
- 2025年八省聯(lián)考高考語文作文真題及參考范文
- 新課標(水平三)體育與健康《籃球》大單元教學計劃及配套教案(18課時)
- 開題報告-鑄牢中華民族共同體意識的學校教育研究
- 部編版三年級上冊道德與法治期末測試卷帶答案(鞏固)
- 計件工勞務合同范例
- 2024年公交車開通儀式講話例文(4篇)
- 2024-2025學年八年級上冊物理 第五章 透鏡以及其應用 測試卷(含答案)
- 教師個人工作業(yè)績總結范文
- 《中華人民共和國政府采購法》專題培訓
評論
0/150
提交評論