




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
word完美格式word完美格式精心整理 學(xué)習(xí)幫手精心整理 學(xué)習(xí)幫手目錄 11 需求分析 1計(jì)算器的基本功能:1.1.1加法運(yùn)算:1.1.1加法運(yùn)算:用數(shù)字按鈕和“+”1.1.2減法運(yùn)算:用數(shù)字按鈕和“-1.1.3乘法運(yùn)算:用數(shù)字按鈕和“*,,1.1.4除法運(yùn)算:用數(shù)字按鈕和“/”按鈕進(jìn)行運(yùn)算; 1按鈕進(jìn)行運(yùn)算; 1按鈕進(jìn)行運(yùn)算; 1按鈕進(jìn)行運(yùn)算; 1退格鍵和清零鍵:用"Backspace”和“C按鈕實(shí)現(xiàn); TOC\o"1-5"\h\z計(jì)算器的科學(xué)計(jì)算方法: 1開方:用數(shù)字按鈕和“Sqrt”按鈕進(jìn)行運(yùn)算; 1百分比:用數(shù)字按鈕和“%'按鈕進(jìn)彳T運(yùn)算; 1求倒數(shù):用數(shù)字按鈕和“1/x”按鈕進(jìn)行運(yùn)算; 1設(shè)計(jì) 2用戶界面設(shè)計(jì) 2該計(jì)算器程序的設(shè)計(jì):用戶界面包括 Swing組件,不過程序中大都使用的AWW件.importjava.awt.*; 2在AWW件, 2這個(gè)界面設(shè)計(jì)中包含了兩個(gè)接口 ,單擊事件監(jiān)聽器接 ActionListener口監(jiān)聽器接口 (KeyListener) 4程序設(shè)計(jì)中,使用了布局管理: 4概要設(shè)計(jì) 4Calculator類中的類名是Calculator.它的功能是使用圖形用戶來實(shí)現(xiàn)計(jì)算器的界面設(shè)計(jì)和運(yùn)算功能以及一些科學(xué)運(yùn)算方法 4main主類.中調(diào)用了cal.display 來實(shí)現(xiàn)計(jì)算器的功能 4實(shí)現(xiàn) 4\o"CurrentDocument"4測(cè)試 164+12=16 22-11=11 4+12=16 22-11=11 3*9=27 64/32=2 17171818實(shí)現(xiàn)減法運(yùn)算實(shí)現(xiàn)乘法運(yùn)算實(shí)現(xiàn)除法運(yùn)算TOC\o"1-5"\h\z用“C'實(shí)現(xiàn)清零功能: 19用“Backspace”實(shí)現(xiàn)退格功能 : 20求倒數(shù):1/4=0.25 20總結(jié)和體會(huì).總結(jié)和體會(huì).1需求分析(該部分主要闡述所要實(shí)現(xiàn)的程序具體具有什么樣的功能, 要細(xì)化,可以用圖表作為輔助描述手段)該計(jì)算器程序除了具備加減乘除基本功能外,還有清零鍵C和退格鍵Backspace,和一些部分的科學(xué)計(jì)算方法,包括開方、求倒、百分比,程序里面也寫了鍵盤事件監(jiān)聽器接口,不過由于時(shí)間倉(cāng)促,還沒能設(shè)計(jì)出來,所以該計(jì)算器不能實(shí)現(xiàn)此功能。BackspaceCECMC789/SqrtMR456*%MS123-1/xM+0+/-.+=計(jì)算器的基本功能:加法運(yùn)算:用數(shù)字按鈕和“+”按鈕進(jìn)行運(yùn)算;減法運(yùn)算:用數(shù)字按鈕和“-”按鈕進(jìn)行運(yùn)算;乘法運(yùn)算:用數(shù)字按鈕和“*”按鈕進(jìn)行運(yùn)算;除法運(yùn)算:用數(shù)字按鈕和“/”按鈕進(jìn)行運(yùn)算;退格鍵和清零鍵:用"Backspace"和“C'按鈕實(shí)現(xiàn);計(jì)算器的科學(xué)計(jì)算方法:開方:用數(shù)字按鈕和“Sqrt”按鈕進(jìn)行運(yùn)算;百分比:用數(shù)字按鈕和“%按鈕進(jìn)行運(yùn)算;求倒數(shù):用數(shù)字按鈕和“1/x”按鈕進(jìn)行運(yùn)算;2設(shè)計(jì)(該部分主要要說明,在使用Java實(shí)現(xiàn)該程序前考慮的內(nèi)容,主要包括下面兩部分:用戶界面設(shè)計(jì)和概要設(shè)計(jì)(這部分可簡(jiǎn)單看作是類設(shè)計(jì)) )。用戶界面設(shè)計(jì)(用圖或文字闡述你的界面如何設(shè)計(jì), 如:包括哪些部分,使用什么樣的布局管理器等)該計(jì)算器程序的設(shè)計(jì):用戶界面包括 Swing組件,不過程序中大都使用的是AWffi件.importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;在AWffi件,(1)使用了面板和按鈕:Panelp1,p2,p3,p4,p5,p6;Buttonb1,b2,b3,b4,b5,b6,b7,b8,b9,b0;ButtonbDiv,bSqrt,bMulti,bMinus,bPercent,bPlus,bReciprocal,bEqual,bDot,bNegative;ButtonbBackspace,bCE,bC,bMR,bMS,bMC,bM;(2)界面設(shè)計(jì)也包括了 AWT的委托事件模型,該程序設(shè)計(jì)在java.awt.event 包中定義了窗口事件類publicvoidwindowClosing(WindowEvente){System.exit(0);}單擊事件類.publicvoidactionPerformed(ActionEvente){//key0to9if(this.keyAvailable &&e.getActionCommand().length()==1 &&e.getActionCommand().compareTo("0")>=0 &&e.getActionCommand().compareTo("9")<=0){if(this.isTempNowInput){this.dNowInput=0;this.isTempNowInput=false;}this.nBitsNum++;if(this.alreadyHaveDot==false)this.dNowInput=this.dNowInput*10+Double.parseDouble(e.getActionCommand());elsedoubletemp=Double.parseDouble(e.getActionCommand());for(inti=this.n;i<0;i++){temp*=0.1;}this.dNowInput+=temp;this.n--;}this.tf1.setText(Double.toString(this.dNowInput));在程序中也注冊(cè)了事件監(jiān)聽器,里面包含了事件處理方法/*add(b1);add(b2);add(b3);add(b4);add(b5);add(b6);add(b7);add(b8);add(b9);add(b0);*/b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);b4.addActionListener(this);b5.addActionListener(this);b6.addActionListener(this);b7.addActionListener(this);b8.addActionListener(this);b9.addActionListener(this);b0.addActionListener(this);這個(gè)界面設(shè)計(jì)中包含了兩個(gè)接口 ,單擊事件監(jiān)聽器接ActionListener口和鍵盤事件監(jiān)聽器接口(KeyListener).publicclassCalculatorextendsWindowAdapterimplementsActionListener,KeyListener程序設(shè)計(jì)中,使用了布局管理:(1)用流布局管理器(FlowLayout)設(shè)置面板p4=newPanel(newFlowLayout());p5=newPanel(newFlowLayout());p6=newPanel(newFlowLayout());(2)用邊布局管理器(BorderLayout)設(shè)置計(jì)算器容器北西組件的大小 :f.setLayout(newBorderLayout(4,4));f.add(p5,BorderLayout.NORTH);'f.add(p4,BorderLayout.CENTER);f.add(p3,BorderLayout.WEST);(3)用網(wǎng)格布局管理器(GridLayout)設(shè)置面板p1=newPanel(newGridLayout(1,3,5,5));p2=newPanel(newGridLayout(4,5,5,5));p3=newPanel(newGridLayout(5,1,5,5));概要設(shè)計(jì)該部分主要闡述整個(gè)程序包括哪些類, 各個(gè)類的類名、功能,以及各類中具有什么樣的public成員方法(方法訪問修飾符、返回值類型、名字、參數(shù)列表、方法的功能) ,以及這些類的對(duì)象之間有什么樣的關(guān)系(或類和類之間有什么關(guān)系,即,函數(shù)調(diào)用關(guān)系) 。計(jì)算器的整個(gè)程序包括:Calculator類和一個(gè)main主類.Calculator 類中的類名是Calculator.它的功能是使用圖形用戶來實(shí)現(xiàn)計(jì)算器的界面設(shè)計(jì)和運(yùn)算功能以及一些科學(xué)運(yùn)算方法 .(1)在Calculator 類中具有設(shè)置計(jì)算器界面布局和顏色的成員方法 ,使用了兩個(gè)接口單擊事件監(jiān)聽器接ActionListener 口和鍵盤事件監(jiān)聽器接口 (KeyListener).(2)返回值類型是布爾類型.main主類.中調(diào)用了cal.display 來實(shí)現(xiàn)計(jì)算器的功能.3實(shí)現(xiàn)(程序的實(shí)現(xiàn)代碼)importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassCalculatorextendsWindowAdapterimplementsActionListener,KeyListener{doubledResult=0;doubledNowInput=0;doubledMemory;intn=0;intnOperation=1;intnBitsNum=0;charch;booleanalreadyHaveDot=false;booleankeyAvailable=true;booleanalreadyClickedEqueal=false;booleanisTempNowInput=false;JFramef;Panelp1,p2,p3,p4,p5,p6;TextFieldtf1,tf2;Buttonb1,b2,b3,b4,b5,b6,b7,b8,b9,b0;ButtonbDiv,bSqrt,bMulti,bMinus,bPercent,bPlus,bReciprocal,bEqual,bDot,bNegative;ButtonbBackspace,bCE,bC,bMR,bMS,bMC,bM;publicvoiddisplay(){f=newJFrame("Calculator");f.setForeground(Color.BLUE);f.setSize(290,223);f.setLocation(220,220);f.setBackground(Color.PINK);f.setResizable(false);f.setLayout(newBorderLayout(4,4));p1=newPanel(newGridLayout(1,3,5,5));p2=newPanel(newGridLayout(4,5,5,5));p3=newPanel(newGridLayout(5,1,5,5));p4=newPanel(newFlowLayout());p5=newPanel(newFlowLayout());p6=newPanel(newFlowLayout());p4.add(p1);p4.add(p2);tf1=newTextField(35);tf1.setText("0.");tfl.setEditable(false);p5.add(tf1);f.add(p5,BorderLayout.NORTH);f.add(p4,BorderLayout.CENTER);f.add(p3,BorderLayout.WEST);tfl.addKeyListener(this);b1=newButton("1");b2=newButton("2");b3=newButton("3");b4=newButton("4");b5=newButton("5");b6=newButton("6");b7=newButton("7");b8=newButton("8");b9=newButton("9");b0=newButton("0");bl.setForeground(Color.BLUE);b2.setForeground(Color.BLUE);b3.setForeground(Color.BLUE);b4.setForeground(Color.BLUE);b5.setForeground(Color.BLUE);b6.setForeground(Color.BLUE);b7.setForeground(Color.BLUE);b8.setForeground(Color.BLUE);b9.setForeground(Color.BLUE);bO.setForeground(Color.BLUE);/*add(b1);add(b2);add(b3);add(b4);add(b5);add(b6);add(b7);add(b8);add(b9);add(b0);*/bl.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);b4.addActionListener(this);b5.addActionListener(this);b6.addActionListener(this);b7.addActionListener(this);b8.addActionListener(this);b9.addActionListener(this);bO.addActionListener(this);bl.addKeyListener(this);b2.addKeyListener(this);b3.addKeyListener(this);b4.addKeyListener(this);b5.addKeyListener(this);b6.addKeyListener(this);b7.addKeyListener(this);b8.addKeyListener(this);b9.addKeyListener(this);bO.addKeyListener(this);bDiv=newButton"");bSqrt=newButton("sqrt");bMulti=newButton("*");bMinus=newButton("-");bPercent=newButton("%");bPlus=newButton("+");bReciprocal=newButton("1/x");bEqual=newButton("=");bDot=newButton(".");bNegative=newButton("+/-");bDiv.setForeground(Color.RED);bSqrt.setForeground(Color.RED);bMulti.setForeground(Color.RED);bMinus.setForeground(Color.RED);bPercent.setForeground(Color.RED);bPlus.setForeground(Color.RED);bReciprocal.setForeground(Color.RED);bEqual.setForeground(Color.RED);bDot.setForeground(Color.RED);bNegative.setForeground(Color.RED);/*add(bDiv);add(bSqrt);add(bMulti);add(bMinus);add(bPercent);add(bPlus);add(bReciprocal);add(bEqual);add(bDot);add(bNegative);*/bDiv.addActionListener(this);bSqrt.addActionListener(this);bMulti.addActionListener(this);bMinus.addActionListener(this);bPercent.addActionListener(this);bPlus.addActionListener(this);bReciprocal.addActionListener(this);bEqual.addActionListener(this);bDot.addActionListener(this);bNegative.addActionListener(this);bDiv.addKeyListener(this);bSqrt.addKeyListener(this);bMulti.addKeyListener(this);bMinus.addKeyListener(this);bPercent.addKeyListener(this);bPlus.addActionListener(this);bReciprocal.addKeyListener(this);bEqual.addKeyListener(this);bDot.addKeyListener(this);bNegative.addKeyListener(this);p2.add(b7);p2.add(b8);p2.add(b9);p2.add(bDiv);p2.add(bSqrt);p2.add(b4);p2.add(b5);p2.add(b6);p2.add(bMulti);p2.add(bPercent);p2.add(b1);p2.add(b2);p2.add(b3);p2.add(bMinus);p2.add(bReciprocal);p2.add(b0);p2.add(bNegative);p2.add(bDot);p2.add(bPlus);p2.add(bEqual);bBackspace=newButton("Backspace");bCE=newButton("CE");bC=newButton("C");bBackspace.setForeground(Color.GREEN);bCE.setForeground(Color.BLACK);bC.setForeground(Color.BLACK);/*add(bBackspace);add(bCE);add(bC);*/bBackspace.addActionListener(this);bCE.addActionListener(this);bC.addActionListener(this);bBackspace.addKeyListener(this);bCE.addKeyListener(this);bC.addKeyListener(this);pl.add(bBackspace);pl.add(bCE);pl.add(bC);tf2=newTextField(2);tf2.setEnabled(false);tf2.setBackground(Color.PINK);bMC=newButton("MC");bMR=newButton("MR");bMS=newButton("MS");bM=newButton("M+");bMC.setForeground(Color.BLUE);bMR.setForeground(Color.BLUE);bMS.setForeground(Color.BLUE);bM.setForeground(Color.BLUE);tf2.addKeyListener(this);/*add(MC);add(MR);add(MS);add(M);*/bMC.addActionListener(this);bMR.addActionListener(this);bMS.addActionListener(this);bM.addActionListener(this);bMC.addKeyListener(this);bMR.addKeyListener(this);bMS.addKeyListener(this);bM.addKeyListener(this);p6.add(tf2);p3.add(p6);p3.add(bMC);p3.add(bMR);p3.add(bMS);p3.add(bM);f.setVisible(true);f.addWindowListener(this);}publicvoidactionPerformed(ActionEvente){//key0to9if(this.keyAvailable &&e.getActionCommand().length()==1 &&e.getActionCommand().compareTo("0")>=0 &&e.getActionCommand().compareTo("9")<=0){if(this.isTempNowInput){this.dNowInput=0;this.isTempNowInput=false;}this.nBitsNum++;if(this.alreadyHaveDot==false)this.dNowInput=this.dNowInput*10+Double.parseDouble(e.getActionCommand());else{doubletemp=Double.parseDouble(e.getActionCommand());for(inti=this.n;i<0;i++){temp*=0.1;}this.dNowInput+=temp;this.n--;}this.tf1.setText(Double.toString(this.dNowInput));}//keydotif(this.keyAvailable&&e.getActionCommand()=="."){if(this.alreadyHaveDot==false){this.nBitsNum++;this.alreadyHaveDot=true;this.n=-1;}}//key"+","-","*","/"if(this.keyAvailable &&e.getActionCommand()=="+" ||e.getActionCommand()=="-" || e.getActionCommand(尸"*" ||e.getActionCommand(尸"/"){if(this.alreadyClickedEqueal){this.dNowInput=this.dResult;this.isTempNowInput=true;}else{switch(this.nOperation){case1:this.dResult+=this.dNowInput;break;case2:this.dResult-=this.dNowInput;break;case3:this.dResult*=this.dNowInput;break;case4:{if(this.dNowInput==0){tf1.setText(" 除數(shù)不能為零");this.keyAvailable=false;}elsethis.dResult=this.dResult/this.dNowInput;}}if(this.keyAvailable)tf1.setText(Double.toString(this.dResult));this.dNowInput=0;}if(e.getActionCommand()=="+"){this.nOperation=1;}if(e.getActionCommand()=="-"){this.nOperation=2;}if(e.getActionCommand()=="*"){this.nOperation=3;}if(e.getActionCommand()=="/"){this.nOperation=4;}this.nBitsNum=0;this.alreadyClickedEqueal=false;}//key"+/-”if(this.keyAvailable&&e.getActionCommand()=="+/-"){this.dNowInput=0-this.dNowInput;tf1.setText(Double.toString(this.dNowInput));}//key"C"if(e.getActionCommand()=="C"){this.nBitsNum=0;this.dResult=0;this.dNowInput=0;this.alreadyHaveDot=false;this.n=0;this.nOperation=1;this.keyAvailable=true;this.alreadyClickedEqueal=false;tf1.setText("0.");{ch='C';}}//key"CE"if(e.getActionCommand()=="CE"){this.nBitsNum=0;this.dNowInput=0;this.alreadyHaveDot=false;this.n=0;this.nOperation=1;this.keyAvailable=true;tf1.setText("0.");}//key"sqrt"if(this.keyAvailable&&e.getActionCommand()=="sqrt"){if(this.alreadyClickedEqueal){if(this.dResult>=0){this.dResult=Math.sqrt(this.dResult);tf1.setText(Double.toString(this.dResult));}else{tf1.setText(" 函數(shù)輸入無效");this.keyAvailable=false;}}else{if(this.dNowInput>=0){this.dNowInput=Math.sqrt(this.dNowInput);tf1.setText(Double.toString(this.dNowInput));}else{tf1.setText(" 函數(shù)輸入無效");this.keyAvailable=false;}}}//key"1/x"if(this.keyAvailable&&e.getActionCommand()=="1/x"){if(this.dNowInput==0){tf1.setText(" 除數(shù)不能為零");this.keyAvailable=false;}else{this.dNowInput=1/this.dNowInput;tf1.setText(Double.toString(this.dNowInput));}}//key"="if(this.keyAvailable&&e.getActionCommand()=="="){this.alreadyClickedEqueal=true;switch(this.nOperation){this.dResult+=this.dNowInput;break;this.dResult-=this.dNowInput;break;this.dResult*=this.dNowInput;break;{if(this.dNowInput==0){tf1.setText(" 除數(shù)不能為零");this.keyAvailable=false;}elsethis.dResult=this.dResult/this.dNowInput;}}if(this.keyAvailable)tf1.setText(Double.toString(this.dResult));}//key"MS"if(this.keyAvailable&&e.getActionCommand()=="MS"){this.dMemory=this.dNowInput;if(this.dMemory!=0)tf2.setText("M");}//key"MC"if(this.keyAvailable&&e.getActionCommand()=="MC"){this.dMemory=0;tf2.setText("");}//key"MR"if(this.keyAvailable&&e.getActionCommand()=="MR"){this.dNowInput=this.dMemory;tf1.setText(Double.toString(this.dNowInput));}//key"M+"if(this.keyAvailable&&e.getActionCommand()=="M+"){this.dMemory+
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度合伙終止合同:體育產(chǎn)業(yè)發(fā)展合作終止協(xié)議
- 二零二五年度素食餐廳商鋪?zhàn)赓U與品牌推廣合同
- 二零二五年度私人住宅綠色環(huán)保材料采購(gòu)合同
- 二零二五年度區(qū)域生態(tài)環(huán)境保護(hù)與修復(fù)合作協(xié)議
- 二零二五年度旅游團(tuán)隊(duì)意外傷害免責(zé)協(xié)議
- 二零二五年度勞動(dòng)合同電子臺(tái)賬定制化功能開發(fā)合同
- 實(shí)證研究接送服務(wù)合同
- 反向融資協(xié)議
- 衛(wèi)生系統(tǒng)改革造價(jià)咨詢協(xié)議
- 地下管線施工合同模板
- “家校合育”手冊(cè)
- 食堂安全培訓(xùn)-課件
- 計(jì)算機(jī)之父-圖靈課件
- 水利工程建設(shè)監(jiān)理人員培訓(xùn)講義課件
- 長(zhǎng)短樁樁復(fù)合地基長(zhǎng)短樁基技術(shù)
- 長(zhǎng)沙市建筑施工安全生產(chǎn)“一會(huì)三卡”
- 藥品質(zhì)量管理體系文件目錄
- 直臂式高空作業(yè)車施工方案
- 安徽涵豐科技有限公司年產(chǎn)6000噸磷酸酯阻燃劑DOPO、4800噸磷酸酯阻燃劑DOPO衍生品、12000噸副產(chǎn)品鹽酸、38000噸聚合氯化鋁、20000噸固化劑項(xiàng)目環(huán)境影響報(bào)告書
- 大學(xué)生安全教育第一章維護(hù)國(guó)家安全
- 《職場(chǎng)關(guān)系與溝通技巧》教案第15課上行溝通-與上級(jí)之間的溝通
評(píng)論
0/150
提交評(píng)論