版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Xx大學(xué)計(jì)算機(jī)與電子信息學(xué)院移動編程技術(shù)安卓程序開發(fā)設(shè)計(jì)報(bào)告-簡單計(jì)算器安卓開發(fā)程序設(shè)計(jì)報(bào)告題目簡單計(jì)算器開發(fā)專業(yè)(班級)網(wǎng)工111班姓名張波波學(xué)號*(*q*q)*指導(dǎo)教師趙(老師)日期2014.5.7目錄TOC o 1-5 h z HYPERLINK l bookmark6一、設(shè)計(jì)說明:3設(shè)計(jì)內(nèi)容:Android簡單應(yīng)用程序開發(fā),簡單計(jì)算器。3 HYPERLINK l bookmark82程序說明:3二、開發(fā)環(huán)境:3 HYPERLINK l bookmark10三、概要設(shè)計(jì):3 HYPERLINK l bookmark123.1系統(tǒng)的總體3 HYPERLINK l bookmark14四、程
2、序流程和系統(tǒng)功能設(shè)計(jì)44.1程序流程設(shè)計(jì)4 HYPERLINK l bookmark164.2.系統(tǒng)功能設(shè)計(jì)54.3基于Android平臺系統(tǒng)具體設(shè)計(jì)6 HYPERLINK l bookmark224.3.1總體模塊詳細(xì)設(shè)計(jì)6 HYPERLINK l bookmark264.3.2輸入模塊詳細(xì)設(shè)計(jì)6 HYPERLINK l bookmark304.3.3顯示模塊詳細(xì)設(shè)計(jì)7 HYPERLINK l bookmark344.3.4計(jì)算模塊詳細(xì)設(shè)計(jì)7 HYPERLINK l bookmark36五、計(jì)算器系統(tǒng)實(shí)現(xiàn)85.1Android應(yīng)用程序構(gòu)成8 HYPERLINK l bookmark38六、截
3、圖說明9 HYPERLINK l bookmark401、圖標(biāo)92界面10 HYPERLINK l bookmark423運(yùn)算界面11 HYPERLINK l bookmark444錯(cuò)誤輸入11 HYPERLINK l bookmark465設(shè)計(jì)平臺界面12 HYPERLINK l bookmark486簽名導(dǎo)出apk12 HYPERLINK l bookmark50七、總結(jié)13課程設(shè)計(jì)任務(wù)書、設(shè)計(jì)說明:1設(shè)計(jì)內(nèi)容:Android簡單應(yīng)用程序開發(fā),簡單計(jì)算器。2程序說明:1、計(jì)算器界面友好,方便使用。2、具有基本的加、減、乘、除功能,還有+、開方、平方功能3、能夠判斷用戶輸入運(yùn)算數(shù)是否正確。4
4、、4、支持小數(shù)運(yùn)算。5、具有退格功能,能夠刪除最后一個(gè)輸入,ce。6、具有清除功能,刪除所有,c。7、具有結(jié)果存儲功能,能夠顯示存儲器狀態(tài),支持觸屏手機(jī)。8、支持最低版本2.0,最高版本4.4。開發(fā)時(shí)為4.2開發(fā)環(huán)境:本系統(tǒng)是采用Eclipse+EclipseMe+JDK+ADT作為開發(fā)平臺。事實(shí)上為了節(jié)約時(shí)間就直接用Google公司安給的直接綁定好的adt-bundle-windows-x86_64開發(fā),只需要配置下環(huán)境變量,無需要關(guān)聯(lián)等操作。、概要設(shè)計(jì):3.1系統(tǒng)的總體整個(gè)程序基于android技術(shù)開發(fā),出總體模塊外主要分為輸入模塊、顯示模塊以及計(jì)算模塊(包括一些其她功能)這三大部分。在整
5、個(gè)系統(tǒng)中總體模塊控制系統(tǒng)的生命周期,輸入模塊部分負(fù)責(zé)讀取用戶輸入的數(shù)據(jù),顯示模塊部分負(fù)責(zé)顯示用戶之前輸入的數(shù)據(jù)以及顯示最終的計(jì)算結(jié)果,計(jì)算模塊部分負(fù)責(zé)進(jìn)行數(shù)據(jù)的運(yùn)算以及一些其她的功能。總體模塊的作用主要是生成應(yīng)用程序的主類,控制應(yīng)用程序的生命周期。輸入模塊主要描述了計(jì)算器鍵盤以及鍵盤的監(jiān)聽即主要負(fù)責(zé)讀取用戶的鍵盤輸入以及響應(yīng)觸屏的按鍵,需要監(jiān)聽手機(jī)按鍵動作以及用指針事件處理方法處理觸屏的單擊動作(以松開按鍵為準(zhǔn))。同時(shí)提供了較為直觀的鍵盤圖形用戶界面。顯示模塊描述了計(jì)算器的顯示區(qū),即該區(qū)域用于顯示用戶輸入的數(shù)據(jù)以及最終的計(jì)算結(jié)果,同時(shí)還負(fù)責(zé)顯示一些其她的信息。計(jì)算模塊則主要描述了計(jì)算器的整體,
6、實(shí)現(xiàn)了計(jì)算器的界面,負(fù)責(zé)計(jì)算用戶輸入數(shù)據(jù),包括加、減、乘、除、等各種計(jì)算功能,記憶數(shù)據(jù)的相關(guān)功能,退格以及清零的功能。四、程序流程和系統(tǒng)功能設(shè)計(jì)4.1程序流程設(shè)計(jì)知道了系統(tǒng)的功能以后,我們通過main.xml來建立顯示界面,完成后系統(tǒng)開始監(jiān)聽用戶的按鍵輸入,每次輸入系統(tǒng)都會判斷一次用戶輸入的類型,是數(shù)字還是運(yùn)算符號或者是清除,判斷完后分成不同類型如數(shù)字,符號,基本運(yùn)算等等進(jìn)行進(jìn)一步的處理,根據(jù)用戶的要求繼續(xù)進(jìn)行下一步的操作,最后計(jì)算出最終結(jié)果并顯示在顯示區(qū)。系統(tǒng)流程圖如圖4-1所示:4.2.系統(tǒng)功能設(shè)計(jì)整個(gè)系統(tǒng)的功能比較多,比較復(fù)雜,如上所說,可以分為十多個(gè)功能模塊,但是邏輯上理解其實(shí)不算困難
7、,系統(tǒng)包括普通計(jì)算功能,包括加減乘除,退格以及清零功能。下面就讓我們用圖4-2來表示:圖4-2系統(tǒng)的功能圖4.3基于Android平臺系統(tǒng)具體設(shè)計(jì)系統(tǒng)除了總體模塊以外主要由三大模塊來組成,即輸入模塊,顯示模塊和計(jì)算模塊。用系統(tǒng)框圖來表示即如圖4-3。圖4-3糸統(tǒng)框圖4.3.1總體模塊詳細(xì)設(shè)計(jì)總體模塊需要完成的任務(wù)主要就是系統(tǒng)的程序啟動類,需要負(fù)責(zé)整個(gè)系統(tǒng)的生命周期。同時(shí)在還要在模塊中完成菜單欄的所有功能,即退出程序,記憶數(shù)據(jù),顯示數(shù)據(jù),清除記憶數(shù)據(jù)這四個(gè)功能??傮w模塊的功能圖如圖4-4:圖4-4總休模塊功能圖4.3.2輸入模塊詳細(xì)設(shè)計(jì)系統(tǒng)如果想完成計(jì)算器中的各種功能,首先用戶要能進(jìn)行數(shù)據(jù)輸入,
8、由于是在觸屏手機(jī)上開發(fā)計(jì)算器程序,所以要求輸入可以直接使用觸屏進(jìn)行,所以在設(shè)計(jì)的時(shí)候就要充分的考慮要這一點(diǎn)。正是由于考慮到這個(gè)特殊的地方,所以在進(jìn)行模塊設(shè)計(jì)中,選擇編寫輸入模塊類的時(shí)候會特意選取使用了可以支持觸屏輸入的特殊增強(qiáng)型圖形用戶界面類。輸入模塊主要的任務(wù)是描述計(jì)算器鍵盤以及實(shí)現(xiàn)鍵盤的監(jiān)聽,即當(dāng)用戶點(diǎn)擊按鍵或者屏幕的時(shí)候監(jiān)聽器會去調(diào)用相應(yīng)的處理辦法,本模塊還需要為系統(tǒng)提供了一個(gè)較為直觀的鍵盤圖形用戶界面。輸入模塊的功能圖如圖4-5:圖5輸人模塊功能圖4.3.3顯示模塊詳細(xì)設(shè)計(jì)顯示模塊主要要完成的任務(wù)是描述計(jì)算器的顯示區(qū),該區(qū)域用于顯示用戶輸入的數(shù)據(jù)以及最終的計(jì)算結(jié)果和一些其她信息。同時(shí)本
9、模塊還將提供調(diào)用和設(shè)置顯示的具體方法。顯示模塊的功能圖如圖3-6:圖4弋顯示模塊功能圖4.3.4計(jì)算模塊詳細(xì)設(shè)計(jì)系統(tǒng)想要能在屏幕上顯示出計(jì)算器的樣子要有整體的布局,在本模塊中要完成布局的具體設(shè)計(jì),使用戶能夠看到整個(gè)計(jì)算器的畫面。同時(shí)系統(tǒng)想完成計(jì)算功能必須要處理用戶的輸入,當(dāng)輸入模塊的監(jiān)聽傳到計(jì)算模塊中時(shí),計(jì)算模塊就要根據(jù)相應(yīng)的方法進(jìn)行進(jìn)一步的處理。這部分主要是對輸入進(jìn)行的邏輯判斷,基本會通過ifelse來實(shí)現(xiàn)邏輯判斷。計(jì)算模塊的功能圖如圖3-7:圖4訐計(jì)算模塊功能圖五、計(jì)算器系統(tǒng)實(shí)現(xiàn)5.1Android應(yīng)用程序構(gòu)成Android應(yīng)用程序一般是由Activity、Serviece、Content
10、Provider、Intent、IntentReceiver、Notification六個(gè)組件構(gòu)成。但并非每一個(gè)Android應(yīng)用程序都包含這六個(gè)組件。(1)Activity(活動):應(yīng)用程序的表示層。Activity是Android的基本組件。(2)(2)Service(服務(wù)):Android應(yīng)用程序的后臺運(yùn)行組件。(3)ContentProvider(內(nèi)容提供器):用來管理和分享應(yīng)用程序數(shù)據(jù)庫。(4)(4)Intent(意向):Activity之間的粘合劑。使用Intent,可以在系統(tǒng)范圍內(nèi)向目標(biāo)活動或者服務(wù)廣播消息,說明希望執(zhí)行某個(gè)動作的意圖。(5)IntentReceiver(意向接收
11、器):通過IntentReceiver實(shí)現(xiàn)應(yīng)用能夠?qū)σ粋€(gè)外部的事件作出響應(yīng),IntentReceiver在AndroidManifest.xml中注冊,但也可以在代碼中使用Context.registerReceiver()進(jìn)行注冊。左吳caIcuIato-rwSO,Android4.2ZOi亟:sndroid.jsr-F:adt-bundIewindows-xBS_丄匚吳S-FCFRymq.demoOSademoOS.javagen:Ge-nerate-davaFilesFp-ymq.demoOSassetsbinresl25=*drawsib-le-hdpidrawab-le-ldpi17
12、=-dirawab-le-mdpi(75drawab-le-xhdpi|slayoutcijmain.xml7valuescistrings:keIAndroidManif&sii:xml=proguardcfg匡|projectproperrtie-s六、截圖說明1、圖標(biāo)相機(jī)聲強(qiáng)浹的計(jì)韓hellazzb(b112界面PADneteni*hltdinAVDBasicControls3運(yùn)算界面6+/x6:36254刪回BasicConKnls旅志逋的忡算箱MaidwarB-nttoirtg:DPADhs-1inWO23加456減789乘0除HaidwarKtyboirdUseyuuirphysi
13、calkeyboardtn*provideinput4錯(cuò)誤輸入Hrdwar#K督帥曲rdUseyourphysicalkeyboardtc*pnrvideinputHardwareBuLtflhs5設(shè)計(jì)平臺界面tn.4CinClL-2XV,|Ai-draldFtTniiiaC4plgF4T富/淚De5kdock:-1屯ghg:.晨hdlozib|q-?phcmimhvrThliVardrcid-dsi*Gubr-skulSK*虱Android2.2p邑findirddjbr-FPpadL-bunde-ivhdfiws-M#k?sic/審YrqjdamDOJ占rwaHe-Hpi由ZHdbkphd
14、pi丿&hyDvtd;mdn.imld0rjlunvlrrtgi-iml.iiAndreirManiTpstml_progiwrg0?&udv-zzbcaktldtoi/sfc/ymq/dleffiQOS/derrioOS.jawa-ADTFileEdkRelanxsrSource5earhPrqjsaHunWindONHelp=r:QuickZcti士SHnqemci)?_J.SuidCtrnaiffWHlabkSrna*tlHsrtMH型U1NtifJ9CM0nd迫1ExportAndroidlApplicationi|U5P-wagingkrpiJdaisndrodJoeystorePa
15、stm)rd*-*OCrsdsnwhjy6簽名導(dǎo)出apk時(shí)xwtAndroidApplicationD8$t0出Cancelf4和I文件主頁共言音三T.笆舍輾卜菠虹1機(jī)哥下裁匚崑面社i星世訪問的注*4品鞠:呼逹臺電眶七、總結(jié)課程設(shè)計(jì)終于在我的努力下做完了。這個(gè)時(shí)候我更加深入的了解了Java的特點(diǎn)以及一些相關(guān)知識。與其臨淵羨魚,不如退而結(jié)網(wǎng)。這次Android課程設(shè)計(jì)給我的最大的印象就是如果自己有了興趣,就動手去做,困難在你的勇氣和毅力下是抬不了頭的。如果你連失敗都不怕了,那你還怕什么,拾起懶惰的心,勤奮著就會走向成功斬。這次的課程設(shè)計(jì)在我未來的時(shí)日里,是一個(gè)標(biāo)桿,因?yàn)樗嬖V了我,只要我努力沒有
16、什么事我做不好的。安卓開發(fā)是個(gè)很有意思的事情,以后可以在自己手機(jī)上安裝自己開發(fā)的一些小程序,也是個(gè)非常不錯(cuò)的事情,目前還沒有個(gè)安卓機(jī)子,而在其他同學(xué)手機(jī)測試過后,還是比較不錯(cuò)的。注:因?yàn)橛性次募?,并且程序代碼也還是比較長,就不在報(bào)告里面放代碼了。packageymq.demo03;importandroid.app.Activity;importandroid.os.Bundle;importandroid.view.*;importandroid.widget.*;publicclassdemo03extendsActivity/*Calledwhentheactivityisfirstc
17、reated.*/Stringstr=;EditTextet;intc=0,flag=0;doubleb=0.0,g=0.0,f=0.0;Viewvi;publicbooleanonCreateOptionsMenu(Menumenu)/TODOAuto-generatedmethodstubmenu.add(0,1,1,退出);returnsuper.onCreateOptionsMenu(menu);OverridepublicbooleanonOptionsItemSelected(MenuItemitem)/TODOAuto-generatedmethodstubif(item.get
18、ItemId()=1)finish();returnsuper.onOptionsItemSelected(item);/計(jì)算方法publicdoublecalculater()switch(c)case0:f=g;break;case1:f=b+g;break;case2:f=b-g;break;case3:f=b*g;break;case4:f=b/g;break;b=f;c=0;returnf;OverridepublicvoidonCreate(BundlesavedInstanceState)super.onCreate(savedInstanceState);setContentV
19、iew(R.layout.main);/獲得按鍵finalButtonnumber=newButton10;finalButtonfuhao=newButton11;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);fu
20、hao5=(Button)findViewById(R.id.button06);fuhao6=(Button)findViewById(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);numbe
21、r1=(Button)findViewById(R.id.button1);number2=(Button)findViewById(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);numb
22、er8=(Button)findViewById(R.id.button8);number9=(Button)findViewById(R.id.button9);et=(EditText)findViewById(R.id.textView1);et.setText(str);fuhao6.setOnClickListener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstub.str=;et.setText(str);vi=v;);fuhao7.setOnClickListener(n
23、ewView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstubb=0.0;c=0;g=0.0;.str=;et.setText(str););fuhao8.setOnClickListener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstubif(vi!=fuhao5&str!=)charch=str.charAt(0);if(ch=-)str=str.replace(-,);elsestr=-+
24、str;et.setText(str););fuhao9.setOnClickListener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstubif(str!=)doublea=Double.parseDouble(str);str=Math.sqrt(a)+;et.setText(str););fuhao10.setOnClickListener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedme
25、thodstubif(str!=)doublea=Double.parseDouble(str);str=+a*a;et.setText(str););/設(shè)定數(shù)字按鍵number0.setOnClickListener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstubif(flag=1).str=;str+=0;et.setText(str);flag=0;elsecharch1;ch1=str.toCharArray();if(!(ch1.length=1&ch10=0)str+=0;
26、et.setText(str);vi=v;);number1.setOnClickListener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstubif(flag=1).str=;str+=1;et.setText(str);flag=0;elsestr+=1;et.setText(str);vi=v;);number2.setOnClickListener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-genera
27、tedmethodstubif(flag=1).str=;str+=2;et.setText(str);flag=0;elsestr+=2;et.setText(str);vi=v;);number3.setOnClickListener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstubif(flag=1).str=;str+=3;et.setText(str);flag=0;elsestr+=3;et.setText(str);vi=v;);number4.setOnClickList
28、ener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstubif(flag=1).str=;str+=4;et.setText(str);flag=0;elsestr+=4;et.setText(str);vi=v;);number5.setOnClickListener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstubif(flag=1).str=;str+=5;et.setTex
29、t(str);flag=0;elsestr+=5;et.setText(str);vi=v;);number6.setOnClickListener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstubif(flag=1).str=;str+=6;et.setText(str);flag=0;elsestr+=6;et.setText(str);vi=v;);number7.setOnClickListener(newView.OnClickListener()publicvoidonCli
30、ck(Viewv)/TODOAuto-generatedmethodstubif(flag=1).str=;str+=7;et.setText(str);flag=0;elsestr+=7;et.setText(str);vi=v;);number8.setOnClickListener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstubif(flag=1).str=;str+=8;et.setText(str);flag=0;elsestr+=8;et.setText(str);vi=v
31、;);number9.setOnClickListener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstubif(flag=1).str=;str+=9;et.setText(str);flag=0;elsestr+=9;et.setText(str);vi=v;);/設(shè)定符號鍵/加fuhao0.setOnClickListener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstub
32、if(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(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstubif(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(newView.OnClickListener()p
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度企業(yè)合規(guī)管理體系建設(shè)合同范本及實(shí)施指南3篇
- 2025年度個(gè)人貨車租賃合同保險(xiǎn)條款說明3篇
- 2025年度旅游行業(yè)知識產(chǎn)權(quán)顧問合同4篇
- 2025年女方放棄撫養(yǎng)費(fèi)及子女監(jiān)護(hù)權(quán)離婚協(xié)議書子女成長支持協(xié)議
- 2025年度高新技術(shù)企業(yè)股份無償贈與合作協(xié)議
- 二零二五年度石材行業(yè)環(huán)保政策咨詢合同
- 二零二五年度專業(yè)護(hù)理機(jī)構(gòu)護(hù)工勞動合同
- 二零二五年度銀行承兌匯票擔(dān)保業(yè)務(wù)風(fēng)險(xiǎn)管理協(xié)議
- 二零二五版房建木工勞務(wù)合同合同解除與終止流程范本3篇
- 2025年度農(nóng)產(chǎn)品電商銷售合同履約保障與風(fēng)險(xiǎn)控制
- 《色彩基礎(chǔ)》課程標(biāo)準(zhǔn)
- 人力資源 -人效評估指導(dǎo)手冊
- 大疆80分鐘在線測評題
- 2023年成都市青白江區(qū)村(社區(qū))“兩委”后備人才考試真題
- 2024中考復(fù)習(xí)必背初中英語單詞詞匯表(蘇教譯林版)
- 《現(xiàn)代根管治療術(shù)》課件
- 肩袖損傷的護(hù)理查房課件
- 2023屆北京市順義區(qū)高三二模數(shù)學(xué)試卷
- 公司差旅費(fèi)報(bào)銷單
- 2021年上海市楊浦區(qū)初三一模語文試卷及參考答案(精校word打印版)
- 八年級上冊英語完形填空、閱讀理解100題含參考答案
評論
0/150
提交評論