

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
8/8java科學(xué)計(jì)算器(進(jìn)制轉(zhuǎn)換)JAVA綜合程序設(shè)計(jì)與分析
一、題目:
用java語言編寫科學(xué)計(jì)算器,要求完成加、減、乘、除以及基本函數(shù)處理還有數(shù)的進(jìn)制轉(zhuǎn)換。
二、
四、詳細(xì)設(shè)計(jì)
package計(jì)算器;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassCalculatorextendsFrameimplementsActionListener,WindowListener
{
privateContainercontainer;
privat(yī)eGridBagLayoutlayout;
?privateGridBagConstraintsconstraints;
privat(yī)eJTextFielddisplayField;//計(jì)算結(jié)果顯示區(qū)
?privat(yī)eStringlastCommand;//保存+,-,*,/,=命令0privatedoubleresult;//保存計(jì)算結(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("選項(xiàng)");
??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))
{//非運(yùn)算符的處理方法
?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("退格"))//退格鍵的實(shí)現(xiàn)方法
??{?
????if(str.length()>0)
???displayField.setText(str.substring(0,str.length()-1));
??}
???elseif(input.equals("C"))//清零鍵的實(shí)現(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()=="退出")//選項(xiàng)中退出的處理方法
?{
??System.exit(0);
}
?elseif(e.getActionCommand()=="用法")//按下'幫助'菜單欄中用法的處理方法
??{?
??label_dialog.setText("sqrt,exp等鍵是先輸運(yùn)算符再輸數(shù)字\n");
dialog.setLocat(yī)ion(400,250);
dialog.setVisible(true);
??}
?else//各運(yùn)算符的識別
{
???Stringcommand=e.getActionCommand();
??if(start)
???{
???lastCommand=command;
??}
??else
???{
?calculate(Double.parseDouble(displayField.get
Text()));
??lastCommand=command;
???start=true;
???}
?}
}
?
publicvoidcalculate(doublex)//各運(yùn)算符的具體運(yùn)算方法
{
?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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年12月湖南長沙人才集團(tuán)有限公司外包及見習(xí)人員公開招聘3人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 新版(GB-T27025)機(jī)動車檢測質(zhì)量手冊2025版-第一部分
- 某國企書記在2025年工作動員部署會上的講話
- 2024火電廠粉煤灰信息化管理系統(tǒng)操作規(guī)范
- 植物提取物分類與提取方法課件
- 第2節(jié) 聲音的特性(備課講義)-2021-2022學(xué)年八年級物理上冊同步備課講義和課后訓(xùn)練(人教版)
- 《電除塵器》課件
- 《度績效考評方法》課件
- (高清版)DB37∕T 3049-2017 專業(yè)氣象服務(wù)規(guī)范 海鹽生產(chǎn)塑苫工藝
- (高清版)JJF(皖) 214-2025 安裝式數(shù)字顯示電測量儀表在線校準(zhǔn)規(guī)范
- 一氧化碳中毒教學(xué)課件
- 冠心病課件完整版本
- 2024年咨詢工程師(投資)《項(xiàng)目決策分析與評價(jià)》考前沖刺必會試題庫300題(含詳解)
- 倉庫安全培訓(xùn)考試題及答案
- 霍尼韋爾Honeywell溫控器UDC2500中文手冊
- 生活垃圾轉(zhuǎn)運(yùn)站技術(shù)規(guī)范 CJJT47-2016知識培訓(xùn)
- 課前三分鐘有效利用活動方案
- HIV陽性孕產(chǎn)婦全程管理專家共識2024年版解讀
- 義務(wù)教育數(shù)學(xué)新課標(biāo)課程標(biāo)準(zhǔn)2022版考試真題附含答案
- 留置胃管課件
- 《紡織服裝材料》課件-項(xiàng)目6 紡織材料的水分及檢測
評論
0/150
提交評論