java課程設(shè)計(jì)運(yùn)算測(cè)試_第1頁
java課程設(shè)計(jì)運(yùn)算測(cè)試_第2頁
java課程設(shè)計(jì)運(yùn)算測(cè)試_第3頁
java課程設(shè)計(jì)運(yùn)算測(cè)試_第4頁
java課程設(shè)計(jì)運(yùn)算測(cè)試_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

目錄程序功能簡(jiǎn)介 3主體內(nèi)容 3設(shè)計(jì)分析 3程序結(jié)構(gòu) 3各模塊功能及程序說明 4構(gòu)造函數(shù):publicyunSuanQi(){} 4新建題目函數(shù):publicvoidcreatQuestion(){} 5檢測(cè)函數(shù):publicvoidtest(){} 5窗體顯示函數(shù):publicvoidshowMe(){} 5事件處理:publicvoidactionPerformed(ActionEvente){} 5源程序 6操作方法 12運(yùn)行結(jié)果 12設(shè)計(jì)體會(huì) 13程序功能簡(jiǎn)介程序用字符界面實(shí)現(xiàn)十道100以內(nèi)加減法數(shù)學(xué)題,能根據(jù)題目計(jì)算出答案,與輸入答案對(duì)比,判斷做題是否正確,最后計(jì)算分?jǐn)?shù)。正確則提示正確并記錄正確個(gè)數(shù),錯(cuò)誤則提示錯(cuò)誤,不做記錄,但在錯(cuò)誤時(shí)我們可以重新多次輸入答案,如果實(shí)在算不出來可以選擇放棄,進(jìn)行下一題的測(cè)試,直到測(cè)試完十道題為止。我在程序中還設(shè)置了“開始游戲”和“退出游戲”兩個(gè)按鈕,增加了游戲的自主控制功能,界面也相當(dāng)簡(jiǎn)潔明了,適合為兒童開發(fā)智力,提高兒童的運(yùn)算能力。主體內(nèi)容設(shè)計(jì)分析該程序?qū)崿F(xiàn)的功能是產(chǎn)生一個(gè)100以內(nèi)的加減法算術(shù)題,在程序后臺(tái)將此算術(shù)式結(jié)果保存到一個(gè)參數(shù)中,通過和用戶從圖形界面輸入的答案對(duì)比,判斷答案是否正確,并彈出對(duì)話框提示信息。界面部分,主窗體包含的控件主要有:JLabel,用于顯示提示語句;JTextField,用于用戶輸入答案;JButton,用于處理操作。界面初始化時(shí),將一些按鍵,例如完成測(cè)試、提交答案等按鍵設(shè)置成不可用,這樣可以防止誤操作,每次按鈕按下時(shí),都有相應(yīng)的按鈕屬性被更改。后臺(tái)部分,核心就是產(chǎn)生隨機(jī)算術(shù)式。用一個(gè)字符串?dāng)?shù)組存放加和減的操作符,產(chǎn)生一個(gè)大等于于0小于2的隨機(jī)數(shù),即為0或1,通過此隨機(jī)數(shù)對(duì)應(yīng)操作符數(shù)組中的字符,決定產(chǎn)生的算術(shù)式為加法或者減法,后產(chǎn)生兩個(gè)100以內(nèi)的隨機(jī)數(shù),然后通過以上判斷求出結(jié)果,保存在私有變量中,同時(shí)對(duì)應(yīng)的產(chǎn)生一個(gè)通過連接完成的字符串,作為界面題目輸出的內(nèi)容,以上便完成了隨機(jī)算術(shù)式的生成。程序結(jié)構(gòu)程序主要流程圖如下:函數(shù)的結(jié)構(gòu)如下:publicclassYunSuanQiextendsJFrameimplementsActionListener{publicyunSuanQi(){//構(gòu)造函數(shù)}publicvoidcreatQuestion(){//新建題目}publicvoidtest(){//檢測(cè)是否做到10道題}publicvoidshowMe(){//窗體顯示函數(shù)}publicvoidactionPerformed(ActionEvente){//事件處理}publicstaticvoidmain(String[]args){//主函數(shù)}}各模塊功能及程序說明構(gòu)造函數(shù):publicyunSuanQi(){}該函數(shù)主要是窗體的初始化,包括添加窗體、設(shè)置控件位置等,還包括對(duì)一些參數(shù)的初始化。新建題目函數(shù):publicvoidcreatQuestion(){}該函數(shù)是程序的核心,目的是創(chuàng)建一道新的算術(shù)題,程序開始先產(chǎn)生三個(gè)隨機(jī)數(shù),其中兩個(gè)為100以內(nèi)的整數(shù),用于運(yùn)算,另外一個(gè)為0或1,用作隨機(jī)選擇減法操作,根據(jù)選擇好的運(yùn)算,給一個(gè)字符變量值為對(duì)應(yīng)的操作符,完成對(duì)應(yīng)運(yùn)算,將結(jié)果保存到成員變量中,等待比較,同時(shí)產(chǎn)生一個(gè)字符串,內(nèi)容為:m+""+fl[0]+n+"=?"或者m+""+fl[l]+n+"=?",將此字符串利用setText方法輸出到JLabel中,即為題目。檢測(cè)函數(shù):publicvoidtest(){}該函數(shù)目的是在每次新建題目前檢測(cè)是否已經(jīng)做夠十道題,如果夠,則設(shè)置對(duì)應(yīng)按鈕的可用性并初始化各個(gè)控件的內(nèi)容,同時(shí)彈出對(duì)話框提示測(cè)試分?jǐn)?shù),如果不夠,則不進(jìn)行任何操作。窗體顯示函數(shù):publicvoidshowMe(){}該函數(shù)是對(duì)主窗體的基本初始化,this.setLocationRelativeTo(null)設(shè)置窗體在屏幕中央打開,this.setSize(300,200)設(shè)置窗體大小,this.setVisible(true)設(shè)置窗體可見,this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)設(shè)置窗體關(guān)閉方式。在主函數(shù)中調(diào)用此函數(shù)以使主界面顯示。事件處理:publicvoidactionPerformed(ActionEvente){}該函數(shù)目的是處理所有按鈕單擊事件,通過對(duì)按鈕的監(jiān)聽,分辨哪個(gè)按鈕被單擊,然后運(yùn)行對(duì)應(yīng)按鈕事件的代碼。事件代碼中包括對(duì)異常的處理,如輸入有誤等,以保證程序順利運(yùn)行,異常均會(huì)以對(duì)話框形式彈出并顯示誤操作類型。在對(duì)應(yīng)按鈕的代碼中包含了對(duì)題目及答案的處理和計(jì)數(shù)功能。源程序importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassYunSuanQiextendsJFrameimplementsActionListener{privateJLabeljlQuestion1;//題目標(biāo)題privateJLabeljlQuestion2;//題目?jī)?nèi)容privateJLabeljlAnswer;//答案標(biāo)題privateJLabeljlW;//題號(hào)privateJLabeljlT;//正確數(shù)privateJButtonjbTest;//提交答案privateJButtonjbStart;//開始游戲privateJButtonjbEnd;//停止游戲privateJButtonjbExit;//退出游戲privateJTextFieldjtfAnswer;//輸入答案privateintm,n,l,answer,trueAnswer,x;//隨機(jī)數(shù)m、n,計(jì)數(shù)參數(shù)privatechar[]fl={'+','-'};//運(yùn)算符數(shù)組publicyunSuanQi(){//構(gòu)造函數(shù) this.x=0;//參數(shù)初始化 this.trueAnswer=0; this.setTitle("益智游戲");//控件初始化 this.setLayout(newGridLayout(6,2));//6行2列布局 this.jlQuestion1=newJLabel(); jlQuestion1.setText("題目:"); this.jlQuestion2=newJLabel(); this.jlAnswer=newJLabel(); jlAnswer.setText("答案:"); this.jbStart=newJButton("開始游戲"); jbStart.addActionListener(this);//添加事件監(jiān)聽器 this.jbEnd=newJButton("完成測(cè)試"); jbEnd.setEnabled(false);//開始時(shí)不可用 jbEnd.addActionListener(this);//添加事件監(jiān)聽器 this.jbTest=newJButton("提交答案"); jbTest.setEnabled(false);//開始時(shí)不可用 jbTest.addActionListener(this);//添加事件監(jiān)聽器 this.jbExit=newJButton("退出游戲"); jbExit.addActionListener(this);//添加事件監(jiān)聽器 this.jtfAnswer=newJTextField(); jlW=newJLabel(); jlW.setText("題號(hào):"+x);jlT=newJLabel();jlT.setText("正確提交:"+trueAnswer); this.add(jlW);//添加控件 this.add(jlT); this.add(jlQuestion1); this.add(jlQuestion2); this.add(jlAnswer); this.add(jtfAnswer); this.add(newJLabel());//添加空占位label this.add(newJLabel()); this.add(jbStart); this.add(jbTest); this.add(jbEnd); this.add(jbExit);}publicvoidcreatQuestion(){//新建題目 this.m=(int)(Math.random()*100);//隨機(jī)運(yùn)算數(shù) this.n=(int)(Math.random()*100); this.l=(int)(Math.random()*1);//隨機(jī)數(shù)0或1,匹配隨機(jī)運(yùn)算符 if(fl[l]=='+'){//l為0時(shí)加法 answer=m+n;//加法結(jié)果 this.jlQuestion2.setText(m+""+fl[l]+n+"=?");//使label顯示題目?jī)?nèi)容 }elseif(fl[l]=='-'){//l為1時(shí)減法 answer=m-n;//減法結(jié)果 this.jlQuestion2.setText(m+""+fl[l]+n+"=?");//使label顯示題目?jī)?nèi)容 }}publicvoidtest(){//檢測(cè)函數(shù),檢測(cè)是否做到10道題 if(this.x==11){//如果做夠數(shù)目 jlW.setText("題號(hào):0");//界面初始化 jlT.setText("正確提交:0"); jbStart.setText("開始游戲"); this.jtfAnswer.setText(""); this.jlQuestion2.setText(""); JOptionPane.showMessageDialog(null,"題目數(shù):10,測(cè)試得分:"+(10*trueAnswer),"",JOptionPane.INFORMATION_MESSAGE);//彈出統(tǒng)計(jì)對(duì)話框 x=0;//數(shù)據(jù)初始化 trueAnswer=0; jbStart.setEnabled(true);//設(shè)置對(duì)應(yīng)按鈕是否可用 jbEnd.setEnabled(false); jbTest.setEnabled(false); }}publicvoidshowMe(){//窗體顯示函數(shù) this.setLocationRelativeTo(null);//窗體在屏幕中央打開 this.setSize(300,200);//窗體大小 this.setVisible(true);//窗體可見 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//窗體關(guān)閉方式} publicvoidactionPerformed(ActionEvente){//事件處理 //TODOAuto-generatedmethodstub if(e.getSource()==jbStart){//開始游戲或下一題按鈕 if(jbStart.getText()=="開始游戲"){//按鈕為開始游戲 x++;//題目增一 jbStart.setText("下一題"); jbEnd.setEnabled(true);//設(shè)置按鈕可用 jbTest.setEnabled(true); creatQuestion();//新建題目 jlW.setText("題號(hào):"+x); jlT.setText("正確提交:"+trueAnswer); }elseif(jbStart.getText()=="下一題"){//按鈕為下一題 x++;//題目增一 creatQuestion();//新建題目 test();//測(cè)試題目總數(shù)是否夠10 jlW.setText("題號(hào):"+x); jlT.setText("正確提交:"+trueAnswer); } }elseif(e.getSource()==jbTest){//提交答案按鈕 try{ intq=Integer.parseInt(jtfAnswer.getText()); if(q==answer){//答案正確 JOptionPane.showMessageDialog(null,"正確!","",JOptionPane.INFORMATION_MESSAGE);//提示正確 trueAnswer++;//正確回答數(shù)增一 creatQuestion();//新建題目 x++; jlW.setText("題號(hào):"+x); jlT.setText("正確提交:"+trueAnswer); test();//判斷題目總數(shù) this.jtfAnswer.setText("");//答案輸入框置空 }else{//答案錯(cuò)誤 JOptionPane.showMessageDialog(null,"錯(cuò)誤!","",JOptionPane.INFORMATION_MESSAGE);//提示錯(cuò)誤 } }catch(NumberFormatExceptionnfe){//轉(zhuǎn)換異常處理 JOptionPane.showMessageDialog(null,"輸入有誤!","",JOptionPane.ERROR_MESSAGE);//提示有誤 } }elseif(e.getSource()==jbEnd){//中途結(jié)束游戲按鈕 jlW.setText("題號(hào):0");//界面初始化 jlT.setText("正確提交:0"); jbStart.setText("開始游戲"); this.jlQuestion2.setText(""); jbStart.setEnabled(true); jbEnd.setEnabled(false); jbTest.setEnabled(false); JOptionPane.showMessageDialog(null,"題目數(shù):"+x+",測(cè)試得分:"+(10*trueAnswer),"",JOptionPane.INFORMATION_MESSAGE);//統(tǒng)計(jì)信息對(duì)話框 }elseif(e.getSource()==jbExit){//退出游戲按鈕 System.exit(0); } } publicstaticvoidmain(String[]args){ yunSuanQiy=newyunSuanQi(); y.showMe(); }}操作方法運(yùn)行程序,按下“開始”按鈕就可

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論