版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 Xx大學(xué)計算機(jī)與電子信息學(xué)院 移動編程技術(shù) 安卓程序開發(fā)設(shè)計報告-簡單計算器安卓開發(fā)程序設(shè)計報告題目簡單計算器開發(fā)專業(yè)(班級)網(wǎng)工111班波波學(xué)號952937885( )指導(dǎo)教師(老師)日期2014.5.7目錄一、設(shè)計說明:31.設(shè)計容: Android簡單應(yīng)用程序開發(fā),簡單計算器。32程序說明:3二、開發(fā)環(huán)境:3三、概要設(shè)計:33.1 系統(tǒng)的總體 3四、程序流程和系統(tǒng)功能設(shè)計44.1程序流程設(shè)計 44.2.系統(tǒng)功能設(shè)計 54.3基于Android平臺系統(tǒng)具體設(shè)計 54.3.1 總體模塊詳細(xì)設(shè)計 54.3.2 輸
2、入模塊詳細(xì)設(shè)計64.3.3 顯示模塊詳細(xì)設(shè)計 74.3.4 計算模塊詳細(xì)設(shè)計7五、計算器系統(tǒng)實(shí)現(xiàn) 85.1 Android應(yīng)用程序構(gòu)成 8六、截圖說明91、圖標(biāo)92界面93運(yùn)算界面94錯誤輸入105設(shè)計平臺界面106簽名導(dǎo)出apk11七、總結(jié)12 課程設(shè)計任務(wù)書一、設(shè)計說明:1.設(shè)計容: Android簡單應(yīng)用程序開發(fā),簡單計算器。2程序說明:1、計算器界面友好,方便使用。2、具有基本的加、減、乘、除功能,還有+、開方、平方功能。3、 能夠判斷用戶輸入運(yùn)算數(shù)是否正確。4、4、 支持小數(shù)運(yùn)算。5、 具有退格功能,能夠刪除最后一個輸入,c
3、e。6、 具有清除功能,刪除所有,c。7、 具有結(jié)果存儲功能,能夠顯示存儲器狀態(tài),支持觸屏手機(jī)。 8、 支持最低版本2.0,最高版本4.4。開發(fā)時為4.2二、開發(fā)環(huán)境:開發(fā)環(huán)境:本系統(tǒng)是采用Eclipse+EclipseMe+JDK+ADT作為開發(fā)平臺。事實(shí)上為了節(jié)約時間就直接用Google公司安給的直接綁定好的adt-bundle-windows-x86_64開發(fā),只需要配置下環(huán)境變量,無需要關(guān)聯(lián)等操作。三、概要設(shè)計:3.1 系統(tǒng)的總體 整個程序基于android技術(shù)開發(fā),出總體模塊外主要分為輸入模塊、顯示模塊以與計算模塊(包括一些其她功能)這三大部分。在整個系
4、統(tǒng)中總體模塊控制系統(tǒng)的生命周期,輸入模塊部分負(fù)責(zé)讀取用戶輸入的數(shù)據(jù),顯示模塊部分負(fù)責(zé)顯示用戶之前輸入的數(shù)據(jù)以與顯示最終的計算結(jié)果,計算模塊部分負(fù)責(zé)進(jìn)行數(shù)據(jù)的運(yùn)算以與一些其她的功能。總體模塊的作用主要是生成應(yīng)用程序的主類,控制應(yīng)用程序的生命周期。 輸入模塊主要描述了計算器鍵盤以與鍵盤的監(jiān)聽即主要負(fù)責(zé)讀取用戶的鍵盤輸入以與響應(yīng)觸屏的按鍵,需要監(jiān)聽手機(jī)按鍵動作以與用指針事件處理方法處理觸屏的單擊動作(以松開按鍵為準(zhǔn))。同時提供了較為直觀的鍵盤圖形用戶界面。顯示模塊描述了計算器的顯示區(qū),即該區(qū)域用于顯示用戶輸入的數(shù)據(jù)以與最終的計算結(jié)果,同時還負(fù)責(zé)顯示一些其她的信息。 計算模塊則主要
5、描述了計算器的整體,實(shí)現(xiàn)了計算器的界面,負(fù)責(zé)計算用戶輸入數(shù)據(jù),包括加、減、乘、除、等各種計算功能,記憶數(shù)據(jù)的相關(guān)功能,退格以與清零的功能。 四、程序流程和系統(tǒng)功能設(shè)計4.1程序流程設(shè)計 知道了系統(tǒng)的功能以后,我們通過main.xml來建立顯示界面,完成后系統(tǒng)開始監(jiān)聽用戶的按鍵輸入,每次輸入系統(tǒng)都會判斷一次用戶輸入的類型,是數(shù)字還是運(yùn)算符號或者是清除,判斷完后分成不同類型如數(shù)字,符號,基本運(yùn)算等等進(jìn)行進(jìn)一步的處理,根據(jù)用戶的要求繼續(xù)進(jìn)行下一步的操作,最后計算出最終結(jié)果并顯示在顯示區(qū)。系統(tǒng)流程圖如圖4-1所示:4.2.系統(tǒng)功能設(shè)計 整個系統(tǒng)的功能比較多,比較復(fù)雜,如上
6、所說,可以分為十多個功能模塊,但是邏輯上理解其實(shí)不算困難,系統(tǒng)包括普通計算功能,包括加減乘除,退格以與清零功能。下面就讓我們用圖4-2來表示:4.3基于Android平臺系統(tǒng)具體設(shè)計 系統(tǒng)除了總體模塊以外主要由三大模塊來組成,即輸入模塊,顯示模塊和計算模塊。用系統(tǒng)框圖來表示即如圖4-3。4.3.1 總體模塊詳細(xì)設(shè)計 總體模塊需要完成的任務(wù)主要就是系統(tǒng)的程序啟動類,需要負(fù)責(zé)整個系統(tǒng)的生命周期。同時在還要在模塊中完成菜單欄的所有功能,即退出程序,記憶數(shù)據(jù),顯示數(shù)據(jù),清除記憶數(shù)據(jù)這四個功能。 總體模塊的功能圖如圖4-4:4.3.2 輸入模塊詳細(xì)設(shè)計系
7、統(tǒng)如果想完成計算器中的各種功能,首先用戶要能進(jìn)行數(shù)據(jù)輸入,由于是在觸屏手機(jī)上開發(fā)計算器程序,所以要求輸入可以直接使用觸屏進(jìn)行,所以在設(shè)計的時候就要充分的考慮要這一點(diǎn)。正是由于考慮到這個特殊的地方,所以在進(jìn)行模塊設(shè)計中,選擇編寫輸入模塊類的時候會特意選取使用了可以支持觸屏輸入的特殊增強(qiáng)型圖形用戶界面類。 輸入模塊主要的任務(wù)是描述計算器鍵盤以與實(shí)現(xiàn)鍵盤的監(jiān)聽,即當(dāng)用戶點(diǎn)擊按鍵或者屏幕的時候監(jiān)聽器會去調(diào)用相應(yīng)的處理辦法,本模塊還需要為系統(tǒng)提供了一個較為直觀的鍵盤圖形用戶界面。輸入模塊的功能圖如圖4-5:4.3.3 顯示模塊詳細(xì)設(shè)計 顯示模塊主要要完成的任務(wù)是描述計算器的
8、顯示區(qū),該區(qū)域用于顯示用戶輸入的數(shù)據(jù)以與最終的計算結(jié)果和一些其她信息。同時本模塊還將提供調(diào)用和設(shè)置顯示的具體方法。顯示模塊的功能圖如圖3-6:4.3.4 計算模塊詳細(xì)設(shè)計系統(tǒng)想要能在屏幕上顯示出計算器的樣子要有整體的布局,在本模塊中要完成布局的具體設(shè)計,使用戶能夠看到整個計算器的畫面。同時系統(tǒng)想完成計算功能必須要處理用戶的輸入,當(dāng)輸入模塊的監(jiān)聽傳到計算模塊中時,計算模塊就要根據(jù)相應(yīng)的方法進(jìn)行進(jìn)一步的處理。這部分主要是對輸入進(jìn)行的邏輯判斷,基本會通過if else來實(shí)現(xiàn)邏輯判斷。計算模塊的功能圖如圖3-7:五、計算器系統(tǒng)實(shí)現(xiàn) 5.1 Android應(yīng)用程序
9、構(gòu)成 Android應(yīng)用程序一般是由Activity、Serviece、Content Provider、Intent、Intent Receiver、Notification六個組件構(gòu)成。但并非每一個Android應(yīng)用程序都包含這六個組件。(1) Activity(活動):應(yīng)用程序的表示層。Activity是Android的基本組件。(2) (2)Service(服務(wù)):Android應(yīng)用程序的后臺運(yùn)行組件。 (3) Content Provider(容提供器):用來管理和分享應(yīng)用程序數(shù)據(jù)庫。(4) (4)Intent(意向):Activit
10、y之間的粘合劑。使用Intent,可以在系統(tǒng)圍向目標(biāo)活動或者服務(wù)廣播消息,說明希望執(zhí)行某個動作的意圖。(5)Intent Receiver(意向接收器):通過Intent Receiver實(shí)現(xiàn)應(yīng)用能夠?qū)σ粋€外部的事件作出響應(yīng),Intent Receiver在AndroidManifest.xml中注冊,但也可以在代碼中使用Context.registerReceiver()進(jìn)行注冊。 六、截圖說明1、圖標(biāo)2界面3運(yùn)算界面4錯誤輸入5設(shè)計平臺界面6簽名導(dǎo)出apk七、總結(jié)課程設(shè)計終于在我的努力下做完了。這個時候我更加深入的了解了Java的特點(diǎn)以與一些相關(guān)知識
11、。 與其臨淵羨魚,不如退而結(jié)網(wǎng)。這次Android課程設(shè)計給我的最大的印象就是如果自己有了興趣,就動手去做,困難在你的勇氣和毅力下是抬不了頭的。如果你連失敗都不怕了,那你還怕什么,拾起懶惰的心,勤奮著就會走向成功斬。這次的課程設(shè)計在我未來的時日里,是一個標(biāo)桿,因?yàn)樗嬖V了我,只要我努力沒有什么事我做不好的。安卓開發(fā)是個很有意思的事情,以后可以在自己手機(jī)上安裝自己開發(fā)的一些小程序,也是個非常不錯的事情,目前還沒有個安卓機(jī)子,而在其他同學(xué)手機(jī)測試過后,還是比較不錯的。注:因?yàn)橛性次募?,并且程序代碼也還是比較長,就不在報告里面放代碼了。package ymq.demo03;import andro
12、id.app.Activity;import android.os.Bundle;import android.view.*;import android.widget.*;public class demo03 extends Activity /* Called when the activity is first created. */String str=""EditText et;int c=0,flag=0;double b=0.0,g=0.0,f=0.0;View vi;public boolean onCreateOptionsMenu(Menu menu)
13、 / TODO Auto-generated method stubmenu.add(0, 1, 1, "退出");return super.onCreateOptionsMenu(menu);Overridepublic boolean onOptionsItemSelected(MenuItem item) / TODO Auto-generated method stubif(item.getItemId()=1)finish();return super.onOptionsItemSelected(item);/計算方法public double calculate
14、r()switch(c)case 0:f=g;break;case 1:f=b+g;break;case 2:f=b-g;break;case 3:f=b*g;break;case 4:f=b/g;break;b=f;c=0;return f; Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); /獲得按鍵 final Button number=new Button10;final Button f
15、uhao=new Button11;fuhao0=(Button)findViewById(R.id.button01);fuhao1=(Button)findViewById(R.id.button02);fuhao2=(Button)findViewById(R.id.button03);fuhao3=(Button)findViewById(R.id.button04);fuhao4=(Button)findViewById(R.id.button05);fuhao5=(Button)findViewById(R.id.button06);fuhao6=(Button)findViewB
16、yId(R.id.buttonce);fuhao7=(Button)findViewById(R.id.buttonc);fuhao8=(Button)findViewById(R.id.zheng);fuhao9=(Button)findViewById(R.id.kaifang);fuhao10=(Button)findViewById(R.id.pingfang);number0=(Button)findViewById(R.id.button0);number1=(Button)findViewById(R.id.button1);number2=(Button)findViewByI
17、d(R.id.button2);number3=(Button)findViewById(R.id.button3);number4=(Button)findViewById(R.id.button4);number5=(Button)findViewById(R.id.button5);number6=(Button)findViewById(R.id.button6);number7=(Button)findViewById(R.id.button7);number8=(Button)findViewById(R.id.button8);number9=(Button)findViewBy
18、Id(R.id.button9); et=(EditText) findViewById(R.id.textView1); et.setText(str); fuhao6.setOnClickListener(new View.OnClickListener() public void onClick(View v) / TODO Auto-generated method stubstr=""et.setText(str);vi=v;); fuhao7.setOnClickListener(new View.OnClickListener() public void on
19、Click(View v) / TODO Auto-generated method stubb=0.0;c=0;g=0.0;str=""et.setText(str);); fuhao8.setOnClickListener(new View.OnClickListener() public void onClick(View v) / TODO Auto-generated method stubif(vi!=fuhao5&&str!="")char ch=str.charAt(0);if(ch='-')str=str
20、.replace("-","");elsestr="-"+str;et.setText(str);); fuhao9.setOnClickListener(new View.OnClickListener() public void onClick(View v) / TODO Auto-generated method stubif(str!="")double a=Double.parseDouble(str);str=Math.sqrt(a)+""et.setText(str);); fu
21、hao10.setOnClickListener(new View.OnClickListener() public void onClick(View v) / TODO Auto-generated method stubif(str!="")double a=Double.parseDouble(str);str=""+a*a;et.setText(str);); /設(shè)定數(shù)字按鍵 number0.setOnClickListener(new View.OnClickListener() public void onClick(View v) / T
22、ODO Auto-generated method stubif(flag=1)str=""str+=0;et.setText(str);flag=0; elsechar ch1;ch1=str.toCharArray();if(!(ch1.length=1&&ch10='0')str+=0;et.setText(str); vi=v;); number1.setOnClickListener(new View.OnClickListener() public void onClick(View v) / TODO Auto-generate
23、d method stubif(flag=1)str=""str+=1;et.setText(str);flag=0; elsestr+=1;et.setText(str); vi=v;); number2.setOnClickListener(new View.OnClickListener() public void onClick(View v) / TODO Auto-generated method stubif(flag=1)str=""str+=2;et.setText(str);flag=0; elsestr+=2;et.setText(
24、str); vi=v;); number3.setOnClickListener(new View.OnClickListener() public void onClick(View v) / TODO Auto-generated method stubif(flag=1)str=""str+=3;et.setText(str);flag=0; elsestr+=3;et.setText(str); vi=v;); number4.setOnClickListener(new View.OnClickListener() public void onClick(View
25、 v) / TODO Auto-generated method stubif(flag=1)str=""str+=4;et.setText(str);flag=0; elsestr+=4;et.setText(str); vi=v;); number5.setOnClickListener(new View.OnClickListener() public void onClick(View v) / TODO Auto-generated method stubif(flag=1)str=""str+=5;et.setText(str);flag=0
26、; elsestr+=5;et.setText(str); vi=v;); number6.setOnClickListener(new View.OnClickListener() public void onClick(View v) / TODO Auto-generated method stubif(flag=1)str=""str+=6;et.setText(str);flag=0; elsestr+=6;et.setText(str); vi=v;); number7.setOnClickListener(new View.OnClickListener()
27、public void onClick(View v) / TODO Auto-generated method stubif(flag=1)str=""str+=7;et.setText(str);flag=0; elsestr+=7;et.setText(str); vi=v;); number8.setOnClickListener(new View.OnClickListener() public void onClick(View v) / TODO Auto-generated method stubif(flag=1)str=""str+=
28、8;et.setText(str);flag=0; elsestr+=8;et.setText(str); vi=v;); number9.setOnClickListener(new View.OnClickListener() public void onClick(View v) / TODO Auto-generated method stubif(flag=1)str=""str+=9;et.setText(str);flag=0; elsestr+=9;et.setText(str); vi=v;); /設(shè)定符號鍵 /加 fuhao0.setOnClickLis
29、tener(new View.OnClickListener() public void onClick(View v) / TODO Auto-generated method stubif(str!="")if(vi=fuhao0|vi=fuhao1|vi=fuhao2|vi=fuhao3)c=1;elseg=Double.parseDouble(str);calculater();str=""+f;et.setText(str);c=1;flag=1;vi=v;); /減 fuhao1.setOnClickListener(new View.OnC
30、lickListener() public void onClick(View v) / TODO Auto-generated method stubif(str!="")if(vi=fuhao0|vi=fuhao1|vi=fuhao2|vi=fuhao3)c=2;elseg=Double.parseDouble(str);calculater();str=""+f;et.setText(str);c=2;flag=1;vi=v;); /乘 fuhao2.setOnClickListener(new View.OnClickListener() public void onClick(View v) / TODO Auto-generated method stubif(str!="")if(vi=fuhao0|vi=fuhao1|vi=fuhao2|vi=fuhao3
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- G網(wǎng)絡(luò)構(gòu)建關(guān)鍵技術(shù)解析
- 醫(yī)患關(guān)系研究參考答案
- MCS-51系列單片機(jī)的指令系統(tǒng)及匯編語言程序設(shè)計
- 輿情管控培訓(xùn)課件講稿
- 敗血癥抗生素應(yīng)用護(hù)理
- 配電運(yùn)維檢修培訓(xùn)課件
- 高效護(hù)膚秘訣分享會
- 腦血管疾病患者的運(yùn)動康復(fù)與護(hù)理
- 分詞技術(shù)路線規(guī)劃
- 企業(yè)標(biāo)準(zhǔn)化通訊規(guī)范
- 醫(yī)療安全(不良)事件根本原因分析法活動指南團(tuán)體標(biāo)準(zhǔn)2025
- DB53∕T 1269-2024 改性磷石膏用于礦山廢棄地生態(tài)修復(fù)回填技術(shù)規(guī)范
- 北師大版五年級數(shù)學(xué)上冊第七單元《可能性》教案
- 2023-2024學(xué)年上海市閔行區(qū)四上數(shù)學(xué)期末綜合測試試題含答案
- 中等職業(yè)學(xué)校班主任能力比賽幼兒保育專業(yè)班級建設(shè)方案
- 解除勞動合同證明電子版(6篇)
- 呼吸科規(guī)培疑難病例討論
- 《離子反應(yīng)》 第1課時 教學(xué)設(shè)計【高中化學(xué)必修1(人教版)】
- 有關(guān)中國居民死亡態(tài)度的調(diào)查報告
- 核對稿100和200單元概述
- 醫(yī)學(xué)統(tǒng)計學(xué)(12)共143張課件
評論
0/150
提交評論