java課程設(shè)計報告(完整版)_第1頁
java課程設(shè)計報告(完整版)_第2頁
java課程設(shè)計報告(完整版)_第3頁
java課程設(shè)計報告(完整版)_第4頁
java課程設(shè)計報告(完整版)_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 目錄1、摘要2、概要設(shè)計3、詳細(xì)設(shè)計4、測試分析5、總結(jié)6、參考文獻(xiàn)前言】Java不依賴平臺的特點使得它受到廣泛的關(guān)注,Java已成為網(wǎng)絡(luò)時代最重要的語言之一。Java語言不僅是一門正在被廣泛使用的編程語言,而且已成為軟件設(shè)計開發(fā)者應(yīng)當(dāng)掌握的一門基礎(chǔ)語言。目前,很多新的技術(shù)領(lǐng)域都涉及Java語言,國內(nèi)外許多大學(xué)已將Java語言列入了本科教學(xué)計劃,掌握J(rèn)ava已經(jīng)成為共識。本次課程設(shè)計就是利用java語言來編寫簡單的計算器,能進(jìn)行加、減、乘、除四則運算,下面給出了該設(shè)計的理論分析和具體步驟。一、摘要本計算器可以進(jìn)行簡單的四則運算(加、減、乘、除),但僅限于十進(jìn)制下?!癇ackspace”按鈕表

2、示退格“CE”按鈕表示清除當(dāng)前文本框內(nèi)的數(shù)據(jù)按鈕表示清除文本框內(nèi)數(shù)據(jù),同時var、answer清零。該程序可在JCreator環(huán)境下直接運行。二、概要設(shè)計1、自定義說明(1)類名:Calculator作用:主類繼承的父類:JFrame類實現(xiàn)的接口:ActionListener類publicclassCalculatorextendsJFrameimplementsActionListenerprivatestaticStringbtnTexts=0,1,2,3,4,5,6,7,8,9,+,-,*,/,.,+/-;/定義數(shù)組bstTexts來存放計算器上的各個按鈕Buttonbutton=new

3、Button16;ButtonBkButton,CeButton,CButton,EqButton;booleanclickable;/控制當(dāng)前能否按鍵doublevard,answerd;用來保存double型數(shù)據(jù)的中間值(vard)和最后結(jié)果(answerd)shortkey=-1,prekey=-1;/key用來保存當(dāng)前進(jìn)行何種運算,prekey用來保存前次進(jìn)行何種運算DecimalFormatdf;/設(shè)置數(shù)據(jù)輸出精度privateJTextFielddisplayField=newJTextField();/計算結(jié)果顯示區(qū)publicCalculator()publicvoidacti

4、onPerformed(ActionEventevent)方法名:Calculator作用:設(shè)置窗體布局publicCalculator()/Frameframe=newFrame(Calculator);super(Calculator);顯示主窗口標(biāo)題“Calculator”設(shè)置數(shù)據(jù)輸出精度(對于doubledf=newDecimalFormat(0.00000000);型值)BkButton=newButton(Backspace);BkButton.setForeground(Color.red);CeButton=newButton(CE);tForeground(Color.red

5、);CButton=newButton(C);CButton.setForeground(Color.red);將“Backspace”、“CE”、”C”、EqButton=newButton(=);EqButton.setForeground(Color.red);“=”顯示為紅色BkButton.addActionListener(this);nListener(this);CButton.addActionListener(this);EqButton.addActionListener(this);displayField.setHorizontalAlignment(JTextFie

6、ld.RIGHT);/將計算結(jié)果顯示在displayField的右面JPanelp1=newJPanel(newFlowLayoutO);以FlowLayout布局p1p1.add(BkButton);p1.add(CeButton);p1.add(CButton);pl.add(EqButton);設(shè)置四個按鈕:Backspace,CE,C,=JPanelp2=newJPanel(newGridLayout(2,l);以GridLayout布局p2p2.add(displayField);p2.add(p1);加入顯示結(jié)果的JTextField和plJPanelp3=newJPanel(ne

7、wGridLayout(4,4);以GridLayout布局p3for(inti=0;ibtnTexts.length;i+)buttoni=newButton(btnTextsi);/將數(shù)組btnTexts的值賦給數(shù)組buttonbuttoni.setForeground(Color.blue);/組件button的前景色顯示藍(lán)色p3.add(buttoni);buttoni.addActionListener(this);Containercp=this.getContentPaneO;采用默認(rèn)的BorderLayout布局cpcp.add(p2,BorderLayout.NORTH);R

8、);(3)方法名:actionPerformed作用:設(shè)置各個按鈕的行為publicvoidactionPerformed(ActionEventevent)booleansign=false;判斷是否是double型數(shù)參與運算,是為true,不是為falseObjecttemp=event.getSource();tryfor(inti=0;i=9;i+)/如果按下數(shù)據(jù)按鈕,將按下的按鈕代表的數(shù)據(jù)插入的當(dāng)前文本框字符串之后if(temp=buttoni&clickable=true)displayField.setText(displayField.getText()+Integer.toS

9、tring(i);/按下.按鈕時,判斷當(dāng)前文本框內(nèi)字符串中含不含.,如果已含,則不允許再插入.if(temp=button14&clickable=true)if(temp=button10|temp=button11|temp=button12|temp=button13)&clickable=true)/+操作if(temp=button10)/-操作if(temp=button11)/*操作if(temp=button12)/操作if(temp=button13)/=操作if(temp=EqButton&clickable=true)/按下+/-按鈕時處理if(temp=button15

10、&clickable=true)按下Backspace鍵,利用循環(huán)將當(dāng)前字符串中的最后一個字母刪除if(temp=BkButton&clickable=true)按下CE按鈕,將當(dāng)前文本框內(nèi)數(shù)據(jù)清除if(temp=CeButton)按下C按鈕,文本框內(nèi)數(shù)據(jù)清除,同時var,answer清0if(temp=CButton)/輸入中如果有操作非法,比如按下兩次+,捕獲異常catch(Exceptione)displayField.setText(操作非法);clickable=false;2、界面設(shè)計下圖為該程序運行時的界面截圖:三、詳細(xì)設(shè)計以下為該程序的主要代碼:importjavax.swin

11、g.*;importjava.awt.*;importjavax.swing.event.*;importjava.awt.event.*;imalFormat;publicclassCalculatorextendsJFrameimplementsActionListenerprivatestaticStringbtnTexts=0123456789+_*/+/_;Buttonbutton=newButton16;ButtonBkButton,CeButton,CButton,EqButton;booleanclickable;控制當(dāng)前能否按鍵doublevard,answerd;用來保存d

12、ouble型數(shù)據(jù)的中間值(vard)和最后結(jié)果(answerd)shortkey=_1,prekey=_1;/key用來保存當(dāng)前進(jìn)行何種運算,prekey用來保存前次進(jìn)行何種運算DecimalFormatdf;設(shè)置數(shù)據(jù)輸出精度privateJTextFielddisplayField=newJTextField();/計算結(jié)果顯示區(qū)publicCalculator()super(Calculator);顯示主窗口標(biāo)題“Calculator”df=newDecimalFormat(0.00000000);/設(shè)置數(shù)據(jù)輸出精度(對于double型值)BkButton=newButton(Backsp

13、ace);BkButton.setForeground(Color.red);CeButton=newButton(CE);CeButton.setForeground(Color.red);CButton=newButton(C);CButton.setForeground(Color.red);EqButton=newButton(=);EqButton.setForeground(Color.red);將“Backspace”、“CE”、”C”、BkButton.addActionListener(this);CeButton.addActionListener(this);CButto

14、n.addActionListener(this);EqButton.addActionListener(this);displayField.setHorizontalAlignment(JTextField.RIGHT);/將計算結(jié)果顯示在displayField的右面JPanelp1=newJPanel(newFlowLayoutO);以FlowLayout布局p1p1.add(BkButton);p1.add(CeButton);p1.add(CButton);pl.add(EqButton);設(shè)置三個按鈕:Backspace,CE,C,=JPanelp2=newJPanel(newG

15、ridLayout(2,l);以GridLayout布局p2p2.add(displayField);p2.add(p1);加入顯示結(jié)果的JTextField和p1JPanelp3=newJPanel(newGridLayout(4,4);以GridLayout布局p3for(inti=0;ibtnTexts.length;i+)將數(shù)組btnTexts的值賦buttoni=newButton(btnTextsi);給數(shù)組button組件button的前景色示藍(lán)buttoni.setForeground(Color.blue);色p3.add(buttoni);buttoni.addAction

16、Listener(this);Containercp=this.getContentPaneO;采用默認(rèn)的BorderLayout布局cpcp.add(p2,BorderLayout.NORTH);cp.add(p3,BorderLayout.CENTER);/設(shè)置各個按鈕行為publicvoidactionPerformed(ActionEventevent)booleansign=false;判斷是否是double型數(shù)參與運算,是為true,不是為falseObjecttemp=event.getSource();tryfor(inti=0;i=9;i+)/如果按下數(shù)據(jù)按鈕,將按下的按鈕代

17、表的數(shù)據(jù)插入的當(dāng)前文本框字符串之后if(temp=buttoni&clickable=true)displayField.setText(displayField.getText()+Integer.toString(i);/按下.按鈕時,判斷當(dāng)前文本框內(nèi)字符串中含不含.,如果已含,則不允許再插入.if(temp=button14&clickable=true)booleanisDot=false;if(displayField.getText().length()=0)isDot=true;for(inti=0;idisplayField.getText().length();i+)if(.

18、=displayField.getText().charAt(i)isDot=true;break;if(isDot=false)displayField.setText(displayField.getText()+.);if(temp=button10|temp=button11|temp=button12|temp=button13)&clickable=true)/+操作if(temp=button10)switch(prekey)case0:answerd+=Double.parseDouble(displayField.getText();break;case1:answerd-=

19、Double.parseDouble(displayField.getText();break;case2:answerd*=Double.parseDouble(displayField.getText();break;case3:if(Double.parseDouble(displayField.getText()=0)displayField.setText(除數(shù)不能為零);clickable=false;elseanswerd/=Double.parseDouble(displayField.getText();break;default:le(displayField.getTex

20、t();displayField.setText();prekey=key=0;/-操作if(temp=button11)switch(prekey)case0:answerd+=Double.parseDouble(displayField.getText();break;case1:answerd-=Double.parseDouble(displayField.getText();break;case2:answerd*=Double.parseDouble(displayField.getText();break;case3:if(Double.parseDouble(displayF

21、ield.getText()=0)displayField.setText(除數(shù)不能為零);clickable=false;elseanswerd/=Double.parseDouble(displayField.getText();break;default:answerd=Double.parseDouble(displayField.getText();displayField.setText();prekey=key=1;/*操作if(temp=button12)switch(prekey)case0:answerd+=Double.parseDouble(displayField.g

22、etText();break;case1:answerd-=Double.parseDouble(displayField.getText();break;case2:answerd*=Double.parseDouble(displayField.getText();break;case3:if(Double.parseDouble(displayField.getText()=0)displayField.setText(除數(shù)不能為零);clickable=false;elseanswerd/=Double.parseDouble(displayField.getText();break;

23、default:answerd=Double.parseDouble(displayField.getText();displayField.setText();prekey=key=2;/操作if(temp=button13)switch(prekey)case0:answerd+=Double.parseDouble(displayField.getText();break;case1:answerd-=Double.parseDouble(displayField.getText();break;case2:answerd*=Double.parseDouble(displayField

24、.getText();break;case3:if(Double.parseDouble(displayField.getText()=0)displayField.setText(除數(shù)不能為零);clickable=false;elseanswerd/=Double.parseDouble(displayField.getText();break;default:answerd=Double.parseDouble(displayField.getText();displayField.setText();prekey=key=3;/=操作if(temp=EqButton&clickable

25、=true)/如果連續(xù)按=,則進(jìn)行連續(xù)運算if(prekey=5)if(key=0)answerd+=vard;displayField.setText(df.format(answerd);if(key=1)answerd-=vard;displayField.setText(df.format(answerd);if(key=2)answerd*=vard;displayField.setText(df.format(answerd);if(key=3)if(Double.parseDouble(displayField.getText()=0)displayField.setText(除

26、數(shù)不能為零);clickable=false;elseanswerd/=vard;displayField.setText(df.format(answerd);elsevard=Double.parseDouble(displayField.getText();if(key=0)prekey=-1;answerd+=Double.parseDouble(displayField.getText();displayField.setText(df.format(answerd);if(key=1)prekey=-1;answerd-=Double.parseDouble(displayFiel

27、d.getText();displayField.setText(df.format(answerd);if(key=2)prekey=-1;answerd*=Double.parseDouble(displayField.getText();displayField.setText(df.format(answerd);if(key=3)prekey=-1;if(Double.parseDouble(displayField.getText()=0)displayField.setText(除數(shù)不能為零);clickable=false;elseanswerd/=Double.parseDo

28、uble(displayField.getText();displayField.setText(df.format(answerd);prekey=5;/按下+/-按鈕時處理if(temp=button15&clickable=true)booleanisNumber=true;Strings=displayField.getText();for(inti=0;i=0&s.charAt(i)=9|s.charAt(i)=.|s.charAt(i)=-)isNumber=false;break;if(isNumber=true)/如果當(dāng)前字符串首字母有-號,代表現(xiàn)在是個負(fù)數(shù),再按下時,則將首符

29、號去掉if(s.charAt(0)=-)displayField.setText();for(inti=1;is.length();i+)chara=s.charAt(i);displayField.setText(displayField.getText()+a);/如果當(dāng)前字符串第一個字符不是符號,則添加一個符號在首字母處elsedisplayField.setText(-+s);按下Backspace鍵,利用循環(huán)將當(dāng)前字符串中的最后一個字母刪除if(temp=BkButton&clickable=true)Strings=displayField.getText();displayFie

30、ld.setText();for(inti=0;is.length()-1;i+)chara=s.charAt(i);displayField.setText(displayField.getText()+a);按下CE按鈕,將當(dāng)前文本框內(nèi)數(shù)據(jù)清除if(temp=CeButton)displayField.setText();clickable=true;按下C按鈕,文本框內(nèi)數(shù)據(jù)清除,同時var,answer清0if(temp=CButton)vard=answerd=0;displayField.setText();clickable=true;/輸入中如果有操作非法,比如按下兩次+,捕獲異常catch(Exceptione)displayF

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論