计算器课程设计源代码.docx
《计算器课程设计源代码.docx》由会员分享,可在线阅读,更多相关《计算器课程设计源代码.docx(25页珍藏版)》请在冰豆网上搜索。
计算器课程设计源代码
JAVA课程设计报告
设计题目计算器的设计与实现
学院管理学院
班级信管09
指导教师张振森
姓名、学号杜丹丹200922298
杨志敏200922299
杨鼎200922300
杨朋200922349
提交时间2011年12月28日
三.详细代码
Application程序
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassCalculatorextendsFrameimplementsActionListener
{
privateContainercontainer;
privateGridBagLayoutlayout;
privateGridBagConstraintsconstraints;
privateJTextFielddisplayField;//计算结果显示区
privateStringlastCommand;//保存+,-,*,/,=命令0
privatedoubleresult;//保存计算结果
privatebooleanstart;//判断是否为数字的开始
privateJMenuBarmenubar;
privateJMenuItemm_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,button_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,button_sin,button_exp;
publicCalculator()//构造方法设置布局、为按钮注册事件监听器
{
super("Calculator");
this.setLocation(240,200);
this.setSize(350,300);
this.setResizable(true);
this.setLayout(newGridLayout(7,1));
this.addmyMenu();//调用成员方法添加菜单
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.add(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.add(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.add(button_5);
panel3.add(button_6);
panel3.add(button_tan);
panel3.add(button_multiply);
panel4.add(button_1);
panel4.add(button_2);
panel4.add(button_3);
panel4.add(button_cos);
panel4.add(button_minus);
panel5.add(button_0);
panel5.add(button_point);
panel5.add(button_equal);
panel5.add(button_sin);
panel5.add(button_plus);
button_sqrt.addActionListener(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.addActionListener(this);
button_log.addActionListener(this);
button_divide.addActionListener(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.addActionListener(this);
button_3.addActionListener(this);
button_cos.addActionListener(this);
button_minus.addActionListener(this);
button_0.addActionListener(this);
button_point.addActionListener(this);
button_equal.addActionListener(this);
button_sin.addActionListener(this);
button_plus.addActionListener(this);
addWindowListener(newWindowAdapter()
{publicvoidwindowClosing(WindowEvente)
{System.exit(0);
}
}
);//注册窗口监听器
this.setVisible(true);
}
privatevoidaddmyMenu()//菜单的添加
{
JMenuBarmenubar=newJMenuBar();
this.add(menubar);
JMenum1=newJMenu("选项");
JMenum2=newJMenu("进制转换");
JMenuItemm1_exit=newJMenuItem("退出");
m1_exit.addActionListener(this);
JMenuItemm2_ejz=newJMenuItem("二进制");
m2_ejz.addActionListener(this);
JMenuItemm2_bjz=newJMenuItem("八进制");
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);//标签的字符串为空,居中对齐
dialog.add(label_dialog);
dialog.addWindowListener(newWindowAdapter()
{publicvoidwindowClosing(WindowEvente)
{if(e.getSource()==dialog)
dialog.setVisible(false);//隐藏对话框
else
System.exit(0);
}
}
);
m1.add(m1_exit);
menubar.add(m1);
m2.add(m2_ejz);
m2.add(m2_bjz);
menubar.add(m2);
m3.add(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(button_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("退格"))//退格键的实现方法
{
if(str.length()>0)
displayField.setText(str.substring(0,str.length()-1));
}
elseif(input.equals("C"))//清零键的实现方法
{
displayField.setText("0");
start=true;
}
else
displayField.setText(displayField.getText()+input);
}
}
elseif(e.getActionCommand()=="二进制")//二进制的转换
{
intn=Integer.parseInt(displayField.getText());
displayField.setText(Integer.toBinaryString(n));
}
elseif(e.getActionCommand()=="八进制")//八进制的转换
{
intn=Integer.parseInt(displayField.getText());
displayField.setText(Integer.toOctalString(n));
}
elseif(e.getActionCommand()=="退出")//选项中退出的处理方法
{
System.exit(0);
}
elseif(e.getActionCommand()=="用法")//按下'帮助'菜单栏中用法的处理方法
{
label_dialog.setText("sqrt,exp等键是先输运算符再输数字\n");
dialog.setLocation(400,250);
dialog.setVisible(true);
}
else//各运算符的识别
{
Stringcommand=e.getActionCommand();
if(start)
{
lastCommand=command;
}
else
{
calculate(Double.parseDouble(displayField.getText()));
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=Math.exp(x);
result=d;
}
elseif(lastCommand.equals("log"))
{
d=Math.log(x);
result=d;
}
elseif(lastCommand.equals("tan"))
{
d=Math.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);
}
publicstaticvoidmain(Stringargs[])
{
Calculatorcalculator=newCalculator();
}
}
Applet程序
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassCalculatorextendsFrameimplementsActionListener
{
privateContainercontainer;
privateGridBagLayoutlayout;
privateGridBagConstraintsconstraints;
privateJTextFielddisplayField;//计算结果显示区
privateStringlastCommand;//保存+,-,*,/,=命令0
privatedoubleresult;//保存计算结果
privatebooleanstart;//判断是否为数字的开始
privateJMenuBarmenubar;
privateJMenuItemm_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,button_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,button_sin,button_exp;
publicCalculator()//构造方法设置布局、为按钮注册事件监听器
{
super("Calculator");
this.setLocation(240,200);
this.setSize(350,300);
this.setResizable(true);
this.setLayout(newGridLayout(7,1));
this.addmyMenu();//调用成员方法添加菜单
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.add(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=new