国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于JAVA的小學數(shù)學四則運算教學系統(tǒng)的設(shè)計與實現(xiàn)?

2018-04-26 11:57閔鵬瑾肖
計算機與數(shù)字工程 2018年4期
關(guān)鍵詞:子系統(tǒng)組件選題

劉 濤 閔鵬瑾肖 漢

(1.鄭州師范學院信息科學與技術(shù)學院 鄭州 450044)(2.吉林大學數(shù)學學院 長春 130012)

1 引言

多媒體技術(shù)的普及促使多媒體教學廣泛應用于課堂教學中。好的多媒體教學軟件更能使教學效果事半功倍,而目前的多媒體教學軟件往往只是將多媒體信息在教學中展現(xiàn)與播放,大多缺少靈活性和交互性[1]。加、減、乘、除四則運算是小學數(shù)學課程中的基礎(chǔ)內(nèi)容[2],在小學數(shù)學知識體系中占有舉足輕重的地位。由于四則運算具有一定的抽象性,而小學生的思維又以具體形象思維為主,對較抽象內(nèi)容的理解存在一定的認知負擔。因此,在實際的教學中,運用一些符合學生認知特點的且具有交互性和靈活性的多媒體教學軟件來幫助學生學習是十分必要的。本文針對小學數(shù)學四則運算的教學實際,設(shè)計了一種具有隨機出題、交互解答,并能對答案進行自動測評的教學系統(tǒng),該系統(tǒng)能更好地完善教與學的過程,滿足教學的實際需求。

2 MVC模式與事件處理機制

MVC就是指模型-視圖-控制器(Mod?el-View-Controller),是一種先進的設(shè)計結(jié)構(gòu),其目的是以會話方式為GUI(圖形用戶接口)設(shè)計提供支持[3]。MVC模式使GUI設(shè)計更具有對象化特性,也更便于維護。因此,在GUI程序設(shè)計時,可以將存儲有數(shù)據(jù)的某個對象作為模型,然后為模型指定合適的顯示組件,該組件就是視圖。為了響應用戶的交互操作,應選用某個組件作控制器使用,當控制器觸發(fā)事件時,啟動事件處理機制來對視圖修改或獲取模型中所維護的數(shù)據(jù),最后使視圖更新顯示。

GUI設(shè)計中除了要完成靜態(tài)設(shè)計,還要為作為控制器的組件提供響應與處理事件的能力,從而使程序具備與用戶或外部程序進行交互的能力,使得程序“活起來”。事件處理關(guān)注程序的動態(tài)特征,控制器組件依據(jù)用戶交互操作來產(chǎn)生不同類型的事件對象[4]。在處理事件時,控制器組件本身并不參與,而是交由第三方即事件監(jiān)聽器來處理。這一處理方式緣于JAVA采用了委托事件處理模式。事件處理過程中執(zhí)行相關(guān)的處理方法,以完成預定任務。圖1即展示了JAVA中事件產(chǎn)生和處理的過程。

圖1 事件處理流程

3 系統(tǒng)設(shè)計

3.1 系統(tǒng)的體系結(jié)構(gòu)

系統(tǒng)基于JAVA語言實現(xiàn),體系結(jié)構(gòu)設(shè)計遵循MVC模式,整個系統(tǒng)按功能模塊劃分為四大模塊:年級模塊、運算模塊、選題模塊、測評模塊。其中年級模塊用于教師設(shè)定授課年級,年級不同該模塊中設(shè)置的試題難度系數(shù)(maxCount)不同,年級越高難度系數(shù)越大,試題也就越難,該模塊確保了系統(tǒng)能夠勝任更多年級學生的教學工作。運算模塊又分為加、減、乘、除,四則運算五個子模塊,前四個模塊用于設(shè)定單一運算模式。例如:教師當前需要進行乘法教學了,就可以設(shè)定乘法運算模式,系統(tǒng)就處于乘法模式當中,那么在之后隨機出題模塊中就只會產(chǎn)生乘法試題。第五個子模塊四則運算模塊主要用于學生日常四則運算測試練習使用,設(shè)定該模塊后,系統(tǒng)進入四則運算模式,那么隨機產(chǎn)生的試題就會包含加、減、乘,除各種運算了。選題模塊用于自動產(chǎn)生不同運算模式的試題,用于教學或?qū)W生練習測試使用。測評模塊可以對學生輸入的答題結(jié)果進行判斷,并顯示判斷結(jié)果。系統(tǒng)的體系結(jié)構(gòu)如圖2所示。

圖2 JAVA四則運算教學系統(tǒng)的體系結(jié)構(gòu)

3.2 系統(tǒng)設(shè)計思路

系統(tǒng)的設(shè)計開發(fā)基于MVC模式,該系統(tǒng)設(shè)計3個類,其中Teacher對象充當監(jiān)視器,負責給出運算題目,并判斷回答者的答案是否正確;Computer?Demo對象負責為運算題目提供視圖,例如用戶可以通過ComputerDemo對象提供的GUI界面看到題目,并通過該GUI界面顯示題目的判定結(jié)果;Main_C是系統(tǒng)的主類負責系統(tǒng)的運行。

Step1:使用 JFrame、JMenuBar、JMenu、JMenu?Item、JLabel、JTextField、JButton、FlowLayout、Con?tainer等類設(shè)計GUI界面。該GUI中包含有9個事件源組件,其中2個年級菜單項組件;5個表示加、減、乘、除以及四則運算模式的菜單項組件;用于隨機出題的選題按鈕組件;進行智能測評的查看答案按鈕組件。

Step2:調(diào)用 addActionListener(new Teacher())方法為這些JMenuItem對象、JButton對象注冊監(jiān)聽器。

Step3:在Teacher類中通過重寫ActionListener接口中 actionPerformed(ActionEvent e)方法,對事件源對象產(chǎn)生的ActionEvent事件進行處理。因為系統(tǒng)中存在觸發(fā)同一事件的多個事件源,所以當它們觸發(fā)事件時,在 actionPerformed(ActionEvent e)方法中處理代碼也不相同。當菜單項“三年級”或“四年級”觸發(fā)ActionEvent事件時,處理該事件的代碼用于設(shè)定試題難度系數(shù)(maxCount),maxCount是Teacher的類成員變量,在Teacher類定義setMax?Count方法為maxCount賦值,該方法定義如下:

public void setMaxCount(int num){

maxCount=num;}

maxCount大小由num來確定,當菜單項選中“三年級”或“四年級”時就可以調(diào)用setMax(num)方法來設(shè)定不同的試題難度系數(shù)。Teacher類還定義了public void setLeap(String str)方法用于當加、減、乘、除、四則運算菜單項觸發(fā)ActionEvent事件時,設(shè)置計算模式變量temp。

Step4:在Teacher類中定義public void createR?andom(String s)方法,該方法滿足以下功能:

1)產(chǎn)生兩個用于計算的操作數(shù),并將其顯示在對應的文本框中;

2)獲取計算模式變量temp,并將其顯示在對應的標簽中;

3)激活智能測評按鈕,為下一步測評解答結(jié)果作好準備;

4)調(diào)用pack()方法,是窗口能夠自適應調(diào)節(jié)大小。

Step5:對解題結(jié)果進行智能測評。點擊“查看答案”按鈕組件可以對學生輸入的答案進行對錯判斷,并顯示判斷結(jié)果。在Step4呈現(xiàn)出來的2個操作數(shù)、運算符,被放置在2個JTextField和1個JLa?bel組件上,學生將此試題的答案輸入到第3個JTextField組件中。利用智能測評功能模塊,可以方便快捷地獲取JTextField組件中操作數(shù)與JLabel中的運算符。接著對運算符進行判斷,并按判斷結(jié)果進行相應的算數(shù)運算,最后將運算結(jié)果與學生輸入的答案進行驗證,顯示驗證結(jié)果。

4 系統(tǒng)實現(xiàn)

4.1 加法運算子系統(tǒng)的實現(xiàn)

該子系統(tǒng)實現(xiàn)了教學年級設(shè)定、加法運算選擇、隨機出題以及對輸入的結(jié)果進行正無誤評判等功能。該系統(tǒng)實現(xiàn)效果如圖3所示。

圖3 加法運算子系統(tǒng)

該子系統(tǒng)運行時,首先選擇年級模式,設(shè)定教學年級,如果未設(shè)定教學年級,那么運算模式、選題、查看答案等對象均處于未激活狀態(tài);接著選擇運算模式,這時選題按鈕處于激活狀態(tài),查看答案按鈕仍處于未激活狀態(tài);接下來選擇選課按鈕,產(chǎn)生加法運算習題,查看答案按鈕由未激活變?yōu)榧せ顮顟B(tài);最后輸入計算結(jié)果,點擊查看答案按鈕可以對計算結(jié)果進行正誤判斷。該加法運算子系統(tǒng)執(zhí)行流程如圖4所示。其它運算子系統(tǒng)的執(zhí)行流程與此類似。

圖4 加法運算子系統(tǒng)執(zhí)行流程

在加法的計算表達式中,需要呈現(xiàn)出來的有操作數(shù)、加法運算符以及計算結(jié)果,其中操作數(shù)和加法運算符由系統(tǒng)中選題模塊來隨機生成,計算結(jié)果需要首先存儲下來,以便與學生輸入的題目解答結(jié)果進行測評。

在系統(tǒng)中,通過“選擇年級”來設(shè)定教學的難度系數(shù)。將int型難度系數(shù)變量maxCount通過set?MaxCount方法設(shè)定難度值,然后選定“加法運算”菜單項,該菜單項觸發(fā)ActionEvent事件,將“+”運算符存儲在字符串變量temp中,并激活選題按鈕為下一步生成加法運算練習題作好準備。其設(shè)計代碼如下:

public void setLeap(String s){

temp=s;

bt1.setEnabled(false);

bt2.setEnabled(true);//激活選題按鈕}

接下來通過單擊“選題”按鈕來隨機生成加法運算習題。該運算習題生成步驟如下:

Step1:使用new Random()生成隨機類對象r,r調(diào)用nextInt(int x)方法來隨機生成操作數(shù),該操作數(shù)取值范圍由難度系數(shù)maxCount決定。難度系數(shù)越大,操作數(shù)取值范圍越大,生成的加法運算題也越難。

Step2:定義 createRandom(String s)方法來生成操作數(shù)和運算符,將操作數(shù)放進文本框?qū)ο髏ext1、text2中,將運算符放進標簽對象lab1中。字符串s表示運算符。該代碼定義如下:

public void createRandom(String s){

int i=r.nextInt(maxCount)+1;

int j=r.nextInt(maxCount)+1;

text1.setText(String.valueOf(i));

text2.setText(String.valueOf(j));

lab1.setText(s);

bt1.setEnabled(true);

text3.setText(null);

pack();}

Step3:單擊“選題”按鈕觸發(fā)ActionEvent事件,調(diào)用createRandom方法將temp存儲的運算符傳遞給s。代碼如下:

else if(e.getSource()==bt2){//bt2表示選題按鈕

if(temp.equals(“+”)){

createRandom(temp);}

最后進行結(jié)果判定,該過程由“查看答案”按鈕bt1觸發(fā)ActionEvent事件,該事件處理將對兩個操作數(shù)求和與學生輸入的結(jié)果進行比較,如結(jié)果相等則給出正確結(jié)果,相反給出錯誤結(jié)果。設(shè)計代碼如下:

else if(e.getSource()==bt1){

String s=lab1.getText();

if(s.equals(“+”)){

int i=Integer.parseInt(text1.getText())+Inte?ger.parseInt(text2.getText());

if(String.valueOf(i).equals(text3.getText())){

lab3.setText(“恭喜!答對了!”);

pack();}

else{lab3.setText(“抱歉!答錯了,再想想!”);

pack();}}

至此,加法測試子系統(tǒng)設(shè)計完成,下面對加法測試子系統(tǒng)進行測試。在菜單中分別設(shè)定“四年級”和“+”菜單項后,用鼠標單擊“選題”按鈕,系統(tǒng)會自動產(chǎn)生一個100以內(nèi)的加法運算習題。當交互輸入一個計算結(jié)果后,單擊“查看答案”按鈕,系統(tǒng)會根據(jù)所填答案,自動地給出正確或錯誤的評判結(jié)果,并顯示在lab3中。如圖5所示。

圖5 加法運算子系統(tǒng)運行效果

4.2 其它子系統(tǒng)的實現(xiàn)

減法運算子系統(tǒng)的設(shè)計與加法基本一致,系統(tǒng)里包含三個文本框?qū)ο蠓謩e為text1、text2和text3,它們分別用來存放被減數(shù)、減數(shù)和輸入結(jié)果。因為小學數(shù)學還沒有學習到負數(shù),所以在隨機產(chǎn)生操作數(shù)時,要確保大的操作數(shù)作被減數(shù)。因此,減法運算初始化時,可以使用if判定語句比較操作數(shù)i和j的大小,然后將大的操作數(shù)放入text1中。其設(shè)計代碼如下:

int i=r.nextInt(maxCount)+1;

int j=r.nextInt(maxCount)+1;f

(s.equals(“-”)&&i<j){//s表示運算符

text1.setText(String.valueOf(j));

text2.setText(String.valueOf(i));}

lab1.setText(s);

bt1.setEnabled(true);

text3.setText(null);

pack();

類似地,可實現(xiàn)乘法運算和除法運算子系統(tǒng)。需要注意的是除法運算的答案可能存在余數(shù),所以在text3中輸入結(jié)果時應在商后帶上余數(shù),例如:5…2這種形式的結(jié)果。這樣才能判定出除法答案的正確性。其設(shè)計代碼如下:

else if(s.equals(“/”)){

int l=Integer.parseInt(text1.getText

())%Integer.parseInt(text2.getText());

int i1=Integer.parseInt(text1.getText

())/Integer.parseInt(text2.getText());

if(l!=0){

if(((new StringBuilder()).append

(i1).append(“...”).append(l).toString()).equals

(text3.getText()))

{lab3.setText(“恭喜!答對了!”);

pack();}else

{lab3.setText(“抱歉!答錯了,再想想!”);

pack();}

}}

運行結(jié)果如圖6所示。

圖6 帶余數(shù)除法運算解答、與判定

四則運算子系統(tǒng)主要用于學生課下自測練習使用,該系統(tǒng)能夠通過“選題”按鈕隨機生成加、減、乘、除四種運算類型的習題,能較為全面地幫助學生牢固掌握加、減、乘、除四則運算法則。系統(tǒng)首先使用Math.random()方法產(chǎn)生[0,1)內(nèi)的實數(shù)d,接著,根據(jù)d取值來確定運算符s1是哪種類型的運算符,最后調(diào)用createRandom(String s)方法將隨機產(chǎn)生的運算符傳遞給參數(shù)s。代碼如下:

double d=Math.random();

String s1=“”;

if(d>=0.75D){

s1=“+”;}

else if(d>=0.5D&&d<0.75D){

s1=“-”;}

else if(d>=0.25D&&d<0.5D){

s 1=“*”;}

else{s1=“/”;}

createRandom(s1);

5 系統(tǒng)測試

在小學數(shù)學四則運算教學系統(tǒng)測試中,功能測試部分是核心,該部分的測試要完成對系統(tǒng)各模塊的驗證和檢查,主要包含選題、判定等按鈕的功能是否正常。以下對系統(tǒng)性能、功能進行測試如表1~2所示。

表1 系統(tǒng)性能測試結(jié)果

表2 系統(tǒng)功能測試結(jié)果

根據(jù)以上的測試結(jié)果,并結(jié)合多名學生進行的300次以上的反復測試效果,可以證實該系統(tǒng)確實能方便地隨機出題,自行評判正誤,評判正確率達到100%。

6 結(jié)語

基于JAVA SE技術(shù)的小學數(shù)學四則運算教學系統(tǒng)已真正用于教學實踐,受到教師、學生用戶的一致好評。因此,該系統(tǒng)符合最初的需求設(shè)計。在實際應用中,系統(tǒng)界面友好、操作流程清晰簡練,整體運行效果良好,為數(shù)學四則運算教學工作帶來極大便利。

[1]何克抗,李文光.教育技術(shù)學[M].北京:北京師范大學出版社,2009:81-126.HE Kekang,LI Wenguang.Educational technology[M].Beijing:Beijing Normal University Press,2009:81-126.

[2]采明才.游戲化教學模式在小學數(shù)學教學中的應用分析[J].吉林教育,2010(12):92-94.CAI Mingcai.Analysis of the application of gamification based teaching model in primary school mathematics teaching[J].Jilin education,2010(12):92-94.

[3]耿祥義,張躍平.Java程序設(shè)計實用教程[M].北京:人民郵電出版社,2015:367-389.GENG Xiangyi,ZHANG Yueping.Java programming prac?tical tutorial[M].Beijing:Posts and Telecommunications Press,2015:367-389.

[4]Bruce Eckel.Java編程思想(第4版)[M].北京:機械工業(yè)出版社,2007:759-803.Bruce Eckel.Thinking In java(4th edition)[M].Beijing:Machinery Industry Press,2007:759-803.

猜你喜歡
子系統(tǒng)組件選題
不對中轉(zhuǎn)子系統(tǒng)耦合動力學特性研究
無人機智能巡檢在光伏電站組件診斷中的應用
Kistler全新的Kitimer2.0系統(tǒng)組件:使安全氣囊和安全帶測試更加可靠和高效
一種嵌入式軟件組件更新方法的研究與實現(xiàn)
本刊誠征“獨唱團”選題
通用(OA)辦公自動化系統(tǒng)的組件運用
談詩詞的選題
本刊誠征“獨唱團”選題
本刊誠征“獨唱團”選題
網(wǎng)絡(luò)空間供應鏈中入侵檢測及防御子系統(tǒng)的投資機制研究