java課程設計運算測試_第1頁
java課程設計運算測試_第2頁
java課程設計運算測試_第3頁
java課程設計運算測試_第4頁
java課程設計運算測試_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目錄程序功能簡介3主體內(nèi)容3設計分析3程序結(jié)構(gòu)3各模塊功能及程序說明4構(gòu)造函數(shù):public yunSuanQi()4新建題目函數(shù):public void creatQuestion()5檢測函數(shù):public void test()5窗體顯示函數(shù):public void showMe()5事件處理:public void actionPerformed(ActionEvent e) 5源程序6操作方法12運行結(jié)果12設計體會13程序功能簡介程序用字符界面實現(xiàn)十道100以內(nèi)加減法數(shù)學題,能根據(jù)題目計算出答案,與輸入答案對比,判斷做題是否正確,最后計算分數(shù)。正確則提示正確并記錄正確個數(shù),錯誤則提

2、示錯誤,不做記錄,但在錯誤時我們可以重新多次輸入答案,如果實在算不出來可以選擇放棄,進行下一題的測試,直到測試完十道題為止。我在程序中還設置了“開始游戲”和“退出游戲”兩個按鈕,增加了游戲的自主控制功能,界面也相當簡潔明了,適合為兒童開發(fā)智力,提高兒童的運算能力。主體內(nèi)容設計分析該程序?qū)崿F(xiàn)的功能是產(chǎn)生一個100以內(nèi)的加減法算術(shù)題,在程序后臺將此算術(shù)式結(jié)果保存到一個參數(shù)中,通過和用戶從圖形界面輸入的答案對比,判斷答案是否正確,并彈出對話框提示信息。界面部分,主窗體包含的控件主要有:JLabel,用于顯示提示語句;JTextField,用于用戶輸入答案;JButton,用于處理操作。界面初始化時,

3、將一些按鍵,例如完成測試、提交答案等按鍵設置成不可用,這樣可以防止誤操作,每次按鈕按下時,都有相應的按鈕屬性被更改。后臺部分,核心就是產(chǎn)生隨機算術(shù)式。用一個字符串數(shù)組存放加和減的操作符,產(chǎn)生一個大等于于0小于2的隨機數(shù),即為0或1,通過此隨機數(shù)對應操作符數(shù)組中的字符,決定產(chǎn)生的算術(shù)式為加法或者減法,后產(chǎn)生兩個100以內(nèi)的隨機數(shù),然后通過以上判斷求出結(jié)果,保存在私有變量中,同時對應的產(chǎn)生一個通過連接完成的字符串,作為界面題目輸出的內(nèi)容,以上便完成了隨機算術(shù)式的生成。程序結(jié)構(gòu)程序主要流程圖如下:函數(shù)的結(jié)構(gòu)如下:public class YunSuanQi extends JFrame implem

4、ents ActionListener public yunSuanQi()/構(gòu)造函數(shù)public void creatQuestion()/新建題目public void test()/檢測是否做到10道題public void showMe()/窗體顯示函數(shù)public void actionPerformed(ActionEvent e) /事件處理public static void main(String args)/主函數(shù)各模塊功能及程序說明構(gòu)造函數(shù):public yunSuanQi()該函數(shù)主要是窗體的初始化,包括添加窗體、設置控件位置等,還包括對一些參數(shù)的初始化。新建題目函數(shù):

5、public void creatQuestion()該函數(shù)是程序的核心,目的是創(chuàng)建一道新的算術(shù)題,程序開始先產(chǎn)生三個隨機數(shù),其中兩個為100以內(nèi)的整數(shù),用于運算,另外一個為0或1,用作隨機選擇減法操作,根據(jù)選擇好的運算,給一個字符變量值為對應的操作符,完成對應運算,將結(jié)果保存到成員變量中,等待比較,同時產(chǎn)生一個字符串,內(nèi)容為:m+""+fl0+n+"=?"或者m+""+fll+n+"=?",將此字符串利用setText方法輸出到JLabel中,即為題目。檢測函數(shù):public void test()該函數(shù)目的是在

6、每次新建題目前檢測是否已經(jīng)做夠十道題,如果夠,則設置對應按鈕的可用性并初始化各個控件的內(nèi)容,同時彈出對話框提示測試分數(shù),如果不夠,則不進行任何操作。窗體顯示函數(shù):public void showMe()該函數(shù)是對主窗體的基本初始化,this.setLocationRelativeTo(null)設置窗體在屏幕中央打開,this.setSize(300,200)設置窗體大小,this.setVisible(true)設置窗體可見,this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)設置窗體關(guān)閉方式。在主函數(shù)中調(diào)用此函數(shù)以使主界面顯示。事件處理:p

7、ublic void actionPerformed(ActionEvent e) 該函數(shù)目的是處理所有按鈕單擊事件,通過對按鈕的監(jiān)聽,分辨哪個按鈕被單擊,然后運行對應按鈕事件的代碼。事件代碼中包括對異常的處理,如輸入有誤等,以保證程序順利運行,異常均會以對話框形式彈出并顯示誤操作類型。在對應按鈕的代碼中包含了對題目及答案的處理和計數(shù)功能。源程序import java.awt.*;import java.awt.event.*;import javax.swing.*;public class YunSuanQi extends JFrame implements ActionListener

8、 private JLabel jlQuestion1;/題目標題 private JLabel jlQuestion2;/題目內(nèi)容 private JLabel jlAnswer;/答案標題 private JLabel jlW;/題號 private JLabel jlT;/正確數(shù) private JButton jbTest;/提交答案 private JButton jbStart;/開始游戲 private JButton jbEnd;/停止游戲 private JButton jbExit;/退出游戲 private JTextField jtfAnswer;/輸入答案 priva

9、te int m,n,l,answer,trueAnswer,x;/隨機數(shù)m、n,計數(shù)參數(shù) private char fl='+','-'/運算符數(shù)組 public yunSuanQi()/構(gòu)造函數(shù) this.x=0;/參數(shù)初始化 this.trueAnswer=0; this.setTitle("益智游戲");/控件初始化 this.setLayout(new GridLayout(6,2);/6行2列布局 this.jlQuestion1=new JLabel(); jlQuestion1.setText("題目:")

10、; this.jlQuestion2=new JLabel(); this.jlAnswer=new JLabel(); jlAnswer.setText("答案:"); this.jbStart=new JButton("開始游戲"); jbStart.addActionListener(this);/添加事件監(jiān)聽器 this.jbEnd=new JButton("完成測試"); jbEnd.setEnabled(false);/開始時不可用 jbEnd.addActionListener(this);/添加事件監(jiān)聽器 this.j

11、bTest=new JButton("提交答案"); jbTest.setEnabled(false);/開始時不可用 jbTest.addActionListener(this);/添加事件監(jiān)聽器 this.jbExit=new JButton("退出游戲"); jbExit.addActionListener(this);/添加事件監(jiān)聽器 this.jtfAnswer=new JTextField(); jlW=new JLabel(); jlW.setText("題號:"+x); jlT=new JLabel(); jlT.se

12、tText("正確提交:"+trueAnswer); this.add(jlW);/添加控件 this.add(jlT); this.add(jlQuestion1); this.add(jlQuestion2); this.add(jlAnswer); this.add(jtfAnswer); this.add(new JLabel();/添加空占位label this.add(new JLabel(); this.add(jbStart); this.add(jbTest); this.add(jbEnd); this.add(jbExit); public void

13、creatQuestion()/新建題目 this.m=(int)(Math.random()*100);/隨機運算數(shù)this.n=(int)(Math.random()*100);this.l=(int)(Math.random()*1);/隨機數(shù)0或1,匹配隨機運算符if(fll='+')/l為0時加法answer=m+n;/加法結(jié)果this.jlQuestion2.setText(m+""+fll+n+"=?");/使label顯示題目內(nèi)容else if(fll='-')/l為1時減法answer=m-n;/減法結(jié)果

14、this.jlQuestion2.setText(m+""+fll+n+"=?");/使label顯示題目內(nèi)容 public void test()/檢測函數(shù),檢測是否做到10道題 if(this.x=11)/如果做夠數(shù)目 jlW.setText("題號:0");/界面初始化 jlT.setText("正確提交:0"); jbStart.setText("開始游戲"); this.jtfAnswer.setText("");this.jlQuestion2.setText(&

15、quot;"); JOptionPane.showMessageDialog( null , "題目數(shù):10,測試得分:"+(10*trueAnswer),"" , JOptionPane.INFORMATION_MESSAGE);/彈出統(tǒng)計對話框 x=0;/數(shù)據(jù)初始化 trueAnswer=0;jbStart.setEnabled(true);/設置對應按鈕是否可用jbEnd.setEnabled(false);jbTest.setEnabled(false); public void showMe()/窗體顯示函數(shù) this.setLoca

16、tionRelativeTo(null);/窗體在屏幕中央打開 this.setSize(300,200);/窗體大小 this.setVisible(true);/窗體可見 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/窗體關(guān)閉方式 public void actionPerformed(ActionEvent e) /事件處理/ TODO Auto-generated method stubif(e.getSource()=jbStart)/開始游戲或下一題按鈕if(jbStart.getText()="開始游戲&quo

17、t;)/按鈕為開始游戲x+;/題目增一jbStart.setText("下一題");jbEnd.setEnabled(true);/設置按鈕可用jbTest.setEnabled(true);creatQuestion();/新建題目jlW.setText("題號:"+x);jlT.setText("正確提交:"+trueAnswer);else if(jbStart.getText()="下一題")/按鈕為下一題x+;/題目增一creatQuestion();/新建題目test();/測試題目總數(shù)是否夠10jlW

18、.setText("題號:"+x);jlT.setText("正確提交:"+trueAnswer);else if(e.getSource()=jbTest)/提交答案按鈕tryint q=Integer.parseInt(jtfAnswer.getText();if(q=answer)/答案正確JOptionPane.showMessageDialog( null , "正確!","" , JOptionPane.INFORMATION_MESSAGE);/提示正確trueAnswer+;/正確回答數(shù)增一crea

19、tQuestion();/新建題目x+;jlW.setText("題號:"+x);jlT.setText("正確提交:"+trueAnswer);test();/判斷題目總數(shù)this.jtfAnswer.setText("");/答案輸入框置空else/答案錯誤JOptionPane.showMessageDialog( null , "錯誤!","" , JOptionPane.INFORMATION_MESSAGE);/提示錯誤catch(NumberFormatException nfe)

20、/轉(zhuǎn)換異常處理JOptionPane.showMessageDialog( null , "輸入有誤!","" , JOptionPane.ERROR_MESSAGE);/提示有誤else if(e.getSource()=jbEnd)/中途結(jié)束游戲按鈕jlW.setText("題號:0");/界面初始化jlT.setText("正確提交:0");jbStart.setText("開始游戲");this.jlQuestion2.setText("");jbStart.setE

21、nabled(true);jbEnd.setEnabled(false);jbTest.setEnabled(false);JOptionPane.showMessageDialog( null , "題目數(shù):"+x+",測試得分:"+(10*trueAnswer),"" , JOptionPane.INFORMATION_MESSAGE);/統(tǒng)計信息對話框else if(e.getSource()=jbExit)/退出游戲按鈕System.exit(0);public static void main(String args)yunSuanQi y=new yunSuanQi();y.showMe();操作方法運行程序,按下“開始”按鈕就可進入算數(shù)計算測試狀態(tài),然后在文本框輸入你算出的答案

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論