

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
8/8java科學(xué)計算器(進(jìn)制轉(zhuǎn)換)JAVA綜合程序設(shè)計與分析
一、題目:
用java語言編寫科學(xué)計算器,要求完成加、減、乘、除以及基本函數(shù)處理還有數(shù)的進(jìn)制轉(zhuǎn)換。
二、
四、詳細(xì)設(shè)計
package計算器;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassCalculatorextendsFrameimplementsActionListener,WindowListener
{
privateContainercontainer;
privat(yī)eGridBagLayoutlayout;
?privateGridBagConstraintsconstraints;
privat(yī)eJTextFielddisplayField;//計算結(jié)果顯示區(qū)
?privat(yī)eStringlastCommand;//保存+,-,*,/,=命令0privatedoubleresult;//保存計算結(jié)果
privatebooleanstart;//判斷是否為數(shù)字的開始
privateJMenuBarmenubar;
?privat(yī)eJMenuItemm_exit,m2_ejz,m2_bjz;
?privateDialogdialog;
privateLabellabel_dialog;
?privateJButtonbutton_sqrt,button_plusminus,button_CE,button_cancel,button_1,button_2,
??button_3,button_4,button_5,b
utton_6,button_7,button_8,button_9,button_0,
button_plus,button_minus,button_multiply,button_divide,button_point,
button_equal,button_log,button_tan,button_cos,but
ton_sin,button_exp;
publicCalculat(yī)or()//構(gòu)造方法設(shè)置布局、為按鈕注冊事件監(jiān)聽器?{
super("Calculator");
?this.setLocation(240,200);
?this.setSize(350,300);
??this.setResizable(true);
this.setLayout(newGridLayout(7,1));
?this.addmyMenu();//調(diào)用成員方法添加菜單?displayField=newJTextField(30);
??this.add(displayField);
??displayField.setEditable(true);
start=true;
??result=0;
??lastCommand="=";
JPanelpanel0=newJPanel();
?panel0.setLayout(newGridLayout(1,4,4,4));?
?JPanelpanel1=newJPanel();
??panel1.setLayout(newGridLayout(1,5,4,4));
?this.add(panel1);
button_sqrt=newJButton("sqrt");
?button_plusminus=newJButton("+/-");
?button_exp=newJButton("exp");
button_CE=newJButton("退格");
??button_cancel=newJButton("C");
??JPanelpanel2=newJPanel();
?panel2.setLayout(newGridLayout(1,5,4,4));??this.a(chǎn)dd(panel2);
?button_7=newJButton("7");
??button_8=newJButton("8");
?button_9=newJButton("9");
button_log=newJButton("log");
button_divide=newJButton("/");
JPanelpanel3=newJPanel();
?panel3.setLayout(newGridLayout(1,5,4,4));?this.add(panel3);
??button_4=newJButton("4");
??button_5=newJButton("5");
?button_6=newJButton("6");
??button_tan=newJButton("tan");
?button_multiply=newJButton("*");
JPanelpanel4=newJPanel();
?panel4.setLayout(newGridLayout(1,5,4,4));?this.add(panel4);
button_1=newJButton("1");
?button_2=newJButton("2");
button_3=newJButton("3");
?button_cos=newJButton("cos");
button_minus=newJButton("-");
JPanelpanel5=newJPanel();
panel5.setLayout(newGridLayout(1,5,4,4));
?this.add(panel5);
button_0=newJButton("0");
??button_point=newJButton(".");
??button_equal=newJButton("=");
?button_sin=newJButton("sin");
??button_plus=newJButton("+");
?panel1.add(button_sqrt);
?panel1.a(chǎn)dd(button_plusminus);
panel1.add(button_exp);
??panel1.add(button_CE);
?panel1.add(button_cancel);
panel2.add(button_7);
?panel2.add(button_8);
?panel2.add(button_9);
?panel2.add(button_log);
panel2.add(button_divide);
panel3.add(button_4);
?panel3.a(chǎn)dd(button_5);
?panel3.add(button_6);
?panel3.a(chǎn)dd(button_tan);
?panel3.add(button_multiply);
?panel4.add(button_1);
panel4.a(chǎn)dd(button_2);
panel4.a(chǎn)dd(button_3);
??panel4.add(button_cos);
panel4.add(button_minus);
panel5.add(button_0);
panel5.add(button_point);
panel5.add(button_equal);
?panel5.a(chǎn)dd(button_sin);
panel5.add(button_plus);
?button_sqrt.a(chǎn)ddActionListener(this);
button_plusminus.addActionListener(this);
??button_exp.addActionListener(this);
?button_CE.addActionListener(this);
??button_cancel.addActionListener(this);
??button_7.addActionListener(this);
?button_8.addActionListener(this);
?button_9.a(chǎn)ddActionListener(this);
??button_log.a(chǎn)ddActionListener(this);
button_divide.a(chǎn)ddActionListener(this);
?button_4.addActionListener(this);
?button_5.addActionListener(this);
?button_6.addActionListener(this);
?button_tan.addActionListener(this);
?button_multiply.addActionListener(this);
??button_1.addActionListener(this);
?button_2.a(chǎn)ddActionListener(this);
?button_3.addActionListener(this);
??button_cos.addActionListener(this);
button_minus.a(chǎn)ddActionListener(this);
button_0.addActionListener(this);
??button_point.addActionListener(this);
?button_equal.addActionListener(this);
?button_sin.addActionListener(this);
button_plus.addActionListener(this);
??
?this.addWindowListener(newWinClose());//注冊窗口監(jiān)聽器
??this.setVisible(true);
}
?
privatevoidaddmyMenu()//菜單的添加
{?
JMenuBarmenubar=newJMenuBar();
this.add(menubar);
?JMenum1=newJMenu("選項");
??JMenum2=newJMenu("進(jìn)制轉(zhuǎn)換");
JMenuItemm1_exit=newJMenuItem("退出");
?m1_exit.addActionListener(this);
JMenuItemm2_ejz=newJMenuItem("二進(jìn)制");
?m2_ejz.addActionListener(this);
?JMenuItemm2_bjz=newJMenuItem("八進(jìn)制");
?m2_bjz.addActionListener(this);
?JMenum3=newJMenu("幫助");
?JMenuItemm3_Help=newJMenuItem("用法");
?m3_Help.addActionListener(this);
??dialog=newDialog(this,"提示",true);//模式窗口
dialog.setSize(240,80);
label_dialog=newLabel("",Label.CENTER);//標(biāo)簽的字符串為空,居中對齊
dialog.add(label_dialog);
dialog.addWindowListener(this);//為對話框注冊窗口事件監(jiān)聽器
?
?m1.add(m1_exit);
?menubar.add(m1);
??m2.add(m2_ejz);
?m2.a(chǎn)dd(m2_bjz);
?menubar.add(m2);
?m3.a(chǎn)dd(m3_Help);
menubar.add(m3);?}
?publicvoidactionPerformed(ActionEvente)//按鈕的單擊事件處理方法
{
??if(e.getSource().equals(button_1)||e.getSource().equals(button_2)||
e.getSource().equals(button_3)||e.getSource().equals(button_4)||
e.getSource().equals(button_5)||e.getSource().equals(button_6)||
e.getSource().equals(button_7)||e.getSource().equals(b
utton_8)||
e.getSource().equals(button_9)||e.getSource().equals(button_0)||
e.getSource().equals(button_point)||e.getSource().equals(button_plusminus)||?
e.getSource().equals(button_cancel)||e.getSource().equals(button_CE))
{//非運算符的處理方法
?Stringinput=e.getActionCommand();
?if(start)
{
displayField.setText("");
?start=false;
??if(input.equals("+/-"))
???displayField.setText(displayField.getText()+"-");
?}
??if(!input.equals("+/-"))
{
??Stringstr=displayField.getText();
??if(input.equals("退格"))//退格鍵的實現(xiàn)方法
??{?
????if(str.length()>0)
???displayField.setText(str.substring(0,str.length()-1));
??}
???elseif(input.equals("C"))//清零鍵的實現(xiàn)方法
??{
?displayField.setText("0");
????start=true;
???}
??else
???displayField.setText(displayField.getText()+input);
?}
}
?elseif(e.getActionCommand()=="二進(jìn)制")//二進(jìn)制的轉(zhuǎn)換
?{
??intn=Integer.parseInt(displayField.getText());
?displayField.setText(Integer.toBinaryString(n));?}
elseif(e.getActionCommand()=="八進(jìn)制")//八進(jìn)制的轉(zhuǎn)換
??{
intn=Integer.parseInt(displayField.getText());
?displayField.setText(Integer.toOctalString(n));
?}
??elseif(e.getActionCommand()=="退出")//選項中退出的處理方法
?{
??System.exit(0);
}
?elseif(e.getActionCommand()=="用法")//按下'幫助'菜單欄中用法的處理方法
??{?
??label_dialog.setText("sqrt,exp等鍵是先輸運算符再輸數(shù)字\n");
dialog.setLocat(yī)ion(400,250);
dialog.setVisible(true);
??}
?else//各運算符的識別
{
???Stringcommand=e.getActionCommand();
??if(start)
???{
???lastCommand=command;
??}
??else
???{
?calculate(Double.parseDouble(displayField.get
Text()));
??lastCommand=command;
???start=true;
???}
?}
}
?
publicvoidcalculate(doublex)//各運算符的具體運算方法
{
?doubled=0;
?if(lastCommand.equals("+"))
??result+=x;
?elseif(lastCommand.equals("-"))
??result-=x;
elseif(lastCommand.equals("*"))
??result*=x;
??elseif(lastCommand.equals("/"))
???result/=x;
?elseif(lastCommand.equals("="))
??result=x;
elseif(lastCommand.equals("sqrt"))
??{
??d=Math.sqrt(x);
??result=d;
?}
?elseif(lastCommand.equals("exp"))
?{
???d=Mat(yī)h.exp(x);
??result=d;
?}
?elseif(lastCommand.equals("log"))
{
??d=Math.log(x);
?result=d;
}
?elseif(lastCommand.equals("tan"))
?{
?d=Mat(yī)h.tan(x);
?result=d;
}
?elseif(lastCommand.equals("cos"))
{
d=Math.cos(x);
??result=d;
}
?elseif(lastCommand.equals("sin"))
??{
?d=Math.sin(x);
??result=d;
}
displayField.setText(""+result);
}?
publicvoidwindowClosing(WindowEvente)
{
if(e.getSource
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 門業(yè)加盟代理合同范本
- 代寫軟文合同范例
- 以銷售入股合同范例
- 產(chǎn)業(yè)用地購買合同范例
- 倉庫翻新合同范例
- 憑用合同范例
- 低價小型倉儲租賃合同范例
- 交通事故后合同范例
- 公司提供資料合同范例
- 冷庫設(shè)備拆除合同范例
- 記錄食品安全事故處置等保證食品安全的規(guī)章制度
- 2024年陜西省高中學(xué)業(yè)水平合格性考試化學(xué)模擬試卷(含答案解析)
- “江格爾”的數(shù)字化保護(hù)與再生研究的開題報告
- 2024年公安信息化項目可行性研究報告書
- (2024年)尊老愛幼ppt全新
- 《制作酸奶的方法》課件
- 設(shè)計方案新能源汽車充電樁設(shè)計
- (高清版)DZT 0432-2023 煤炭與煤層氣礦產(chǎn)綜合勘查規(guī)范
- 武漢中考理化生實驗備考試題庫(含答案)
- 酒店客房方案
- 學(xué)校食堂食品安全日管控、周排查、月調(diào)度制度(含記錄)
評論
0/150
提交評論