JAVA模拟科学计算器

JAVA模拟科学计算器
JAVA模拟科学计算器

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class Ca extends JFrame implements ActionListener

{

//*********************************************************************** //标准型计算器控件键钮

static JFrame f1 = new JFrame("计算器");

private String KEYS[] = {"7","8","9","/","sqrt","4","5","6","*","%",

"1","2","3","-","1/x","0","+/-",".","+","="};

private String M[] = {" ","MC","MR","MS","M+"};

private String COM[] = {"Backspace","CE","C"};

private JButton keys[] = new JButton[KEYS.length];

private JButton com[] = new JButton[COM.length];

private JButton m[] = new JButton[M.length];

private JTextField result,hh,jj;

MenuBar menubar1=new MenuBar();

Menu edit=new Menu("编辑(E)"),

view=new Menu("查看(V)"),

help=new Menu("帮助(H)");

MenuItem copy=new MenuItem("复制(C)"),

paste=new MenuItem("粘贴(P)"),

standar=new MenuItem("标准型(T)"),

science=new MenuItem("科学型(S)"),

numgroup=new MenuItem("数字分组(I)"),

helpt=new MenuItem("帮助主题(H)"),

about=new MenuItem("关于计算器(A)");

private boolean firstDigit = true; //判断第一个输入的字符是否是数字

private double resultNum = 0.0,resultNum2 = 0.0; //中间结果

private String operator = "=",co,str,operator2 = "=";

private boolean operateValidFlag = true;

//*********************************************************************** //科学性计算器控件及按钮

static JFrame f2 = new JFrame("科学计算器");

private JTextField result2;

private String[] KON = {"sta","F-E","(",")","MC","Ave","dms","Exp",

"In","MR","Sum","sin","x^y","log","MS","s","cos","x^3","n!",

"M+","Dat","tan","x^2","1/x","pi"};

private String[] KO = {"7","8","9","/","Mod","And",

"4","5","6","*","Or","Xor",

"1","2","3","-","Lsh","Not",

"0","+/-",".","+","=","Int",

"A","B","C","D","E","F"};

private String ITM[]={"标准型","科学型","十六进制数(H) F5","十进制(D) F6",

"八进制(O) F7","二进制(B) F8","四字(Q) F12","DWORD 值(R)F2","单字(W)F3","字节(Y) F4"

,"数字分组(I)"};

private final String[] COMM = {"Backspace","CE","C"};

private JButton comm[] = new JButton[COMM.length];

private JButton kon[] = new JButton[KON.length];

private JButton ko[] = new JButton[KO.length];

private MenuItem itm[] = new MenuItem[ITM.length];

private JPanel panel0,panel1,panel2,panel3,panel4,panel5,panel6;

Checkbox checkbox1,checkbox2,checkbox3,checkbox4;

MenuBar menubar2=new MenuBar(); //添加菜单条

Menu edit2=new Menu("编辑(E)"),

view2=new Menu("查看(V)"),

help2=new Menu("帮助(H)");

MenuItem copy2=new MenuItem("复制(C) Ctrl+C"),

past2=new MenuItem("粘贴(P) Ctrl+V"),

standar2=new MenuItem("标准型(T)"),

science2=new MenuItem("科学型(S)"),

numgroup2=new MenuItem("数字分组(I)"),

menuitem1=new MenuItem("十六进制数(H) F5"),

menuitem2=new MenuItem("十进制(D) F6"),

menuitem3=new MenuItem("八进制(O) F7"),

menuitem4=new MenuItem("二进制(B) F8"),

menuitem5=new MenuItem("四字(Q) F12"),

menuitem6=new MenuItem("DWORD 值(R)F2"),

menuitem7=new MenuItem("单字(W)F3"),

menuitem8=new MenuItem("字节(Y) F4"),

helpt2=new MenuItem("帮助主题(H)"),

about2=new MenuItem("关于计算器(A)");

//*********************************************************************** //构造函数

public Ca()

{

//标准型开始初始化********************

result = new JTextField("0.");

result.setHorizontalAlignment(JTextField.RIGHT); //文字右对齐

result.setEditable(false); //设置为不可编辑

result.setBackground(Color.WHITE); //设置颜色为白色

JPanel k0 = new JPanel();

k0.setLayout(new GridLayout(4,5,5,5));

for(int i = 0;i < KEYS.length;i++)

{

keys[i] = new JButton(KEYS[i]);

k0.add(keys[i]);

keys[i].setForeground(Color.blue);

}

keys[3].setForeground(Color.red);

keys[8].setForeground(Color.red);

keys[13].setForeground(Color.red);

keys[18].setForeground(Color.red);

keys[19].setForeground(Color.red);

JPanel c0 = new JPanel();

c0.setLayout(new GridLayout(1,3,5,5));

for(int i = 0;i < COM.length;i++)

{

com[i] = new JButton(COM[i]);

c0.add(com[i]);

com[i].setForeground(Color.red);

}

JPanel m0 = new JPanel();

m0.setLayout(new GridLayout(5,1,5,5));

for(int i = 0;i < M.length;i++)

{

m[i] = new JButton(M[i]);

m0.add(m[i]);

m[i].setForeground(Color.red);

}

m[0].setForeground(Color.black);

//f1的监视器

for(int i = 0;i < KEYS.length;i++)

{

keys[i].addActionListener(this);

}

for(int i = 0;i < COM.length;i++)

{

com[i].addActionListener(this);

}

for(int i = 0;i < M.length;i++)

{

m[i].addActionListener(this);

}

//复制事件

copy.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

int count;

count=str.length();

if(count!=0)

co=result.getText();

else

System.out.println("没有可复制的对象");

}

});

//粘贴事件

paste.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

str=co;

result.setText(str);

}

});

//复制事件

copy2.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

int count;

count=str.length();

if(count!=0)

co=result2.getText();

else

System.out.println("没有可复制的对象");

}

});

//粘贴事件

past2.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

str=co;

result2.setText(str);

}

});

edit.add(copy);

edit.add(paste);

view.add(standar);

view.add(science);

view.addSeparator();

view.add(numgroup);

help.add(helpt);

help.addSeparator();

help.add(about);

menubar1.add(edit);

menubar1.add(view);

menubar1.add(help);

//整体布局

JPanel p1 = new JPanel();

p1.setLayout(new BorderLayout());

p1.add("North",c0);

p1.add("Center",k0);

JPanel p2 = new JPanel();

p2.setLayout(new BorderLayout());

p2.add("Center",result);

f1.setLayout(new BorderLayout(3,5));

f1.add("North",p2);

f1.add("Center",p1);

f1.add("West",m0);

f1.setBackground(Color.LIGHT_GRAY);

f1.setLocation(200,200);

f1.setMenuBar(menubar1);

f1.setVisible(true);

f1.setResizable(false);//不可最大化

f1.pack(); //紧凑

f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//标准型初始化结束

//**************************************************** standar2.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

f1.setVisible(true);

f2.setVisible(false); //按钮不可操作

}});

science.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

f1.setVisible(false);

f2.setVisible(true); //按钮不可操作

}});

//****************************************************

//科学性初始化开始

panel0=new JPanel();

panel1=new JPanel();

panel2=new JPanel();

panel3=new JPanel();

panel4=new JPanel();

panel5=new JPanel();

panel6=new JPanel();

panel0.setLayout(new GridLayout(1,4)); //设置网格型布局管理器panel1.setLayout(new GridLayout(1,3,30,0));

panel2.setLayout(new GridLayout(1,2));

panel3.setLayout(new GridLayout(1,3,5,0));

panel4.setLayout(new GridLayout(5,5,5,5));

panel5.setLayout(new GridLayout(5,6,5,5));

panel6.setLayout(new FlowLayout(FlowLayout.LEFT)); //按钮左对齐result2 = new JTextField("0.",100);

result2.setHorizontalAlignment(JTextField.RIGHT); //文字右对齐result2.setEditable(false); //设置为文本不可编辑result2.setBackground(Color.WHITE); //设置文本框颜色为白色

CheckboxGroup cbg1=new CheckboxGroup();

checkbox1=new Checkbox("十六进制",false,cbg1);

checkbox2=new Checkbox("十进制",true,cbg1);

checkbox3=new Checkbox("八进制",false,cbg1);

checkbox4=new Checkbox("二进制",false,cbg1);

panel0.add(checkbox1);

panel0.add(checkbox2);

panel0.add(checkbox3);

panel0.add(checkbox4);

CheckboxGroup cbg2=new CheckboxGroup();

panel1.add(new Checkbox("角度",true,cbg2));

panel1.add(new Checkbox("弧度",false,cbg2));

panel1.add(new Checkbox("梯度",false,cbg2));

JLabel HH = new JLabel(" ");

panel2.add(new Checkbox("Inv",false));

panel2.add(new Checkbox("Hyp",false));

hh = new JTextField();

jj = new JTextField();

hh.setText(" ");

hh.setEditable(false);

jj.setText(" ");

jj.setEditable(false);

panel2.add(hh);panel2.add(HH);panel2.add(jj);

panel6.add(result2);

edit2.add(copy2);

edit2.add(past2);

view2.add(standar2);

view2.add(science2);

view2.addSeparator();

view2.add(menuitem1);

view2.add(menuitem2);

view2.add(menuitem3);

view2.add(menuitem4);

view2.addSeparator();

view2.add(menuitem5);

view2.add(menuitem6);

view2.add(menuitem7);

view2.add(menuitem8);

view2.addSeparator();

view2.add(numgroup2);

help2.add(helpt2);

help2.addSeparator();

help2.add(about2);

menubar2.add(edit2);

menubar2.add(view2);

menubar2.add(help2);

for(int i = 0;i < COMM.length;i++)

{

comm[i] = new JButton(COMM[i]);

panel3.add(comm[i]);

comm[i].setForeground(Color.red); }

for(int i = 0;i < KON.length;i++)

{

kon[i] = new JButton(KON[i]);

panel4.add(kon[i]);

kon[i].setForeground(Color.magenta); }

kon[4].setForeground(Color.red);

kon[9].setForeground(Color.red);

kon[14].setForeground(Color.red);

kon[19].setForeground(Color.red);

kon[0].setForeground(Color.blue);

kon[24].setForeground(Color.blue);

kon[5].setForeground(Color.blue);

kon[10].setForeground(Color.blue);

kon[15].setForeground(Color.blue);

kon[20].setForeground(Color.blue);

for(int i = 0;i < KO.length;i++)

{

ko[i] = new JButton(KO[i]);

panel5.add(ko[i]);

ko[i].setForeground(Color.red);

}

ko[0].setForeground(Color.blue);

ko[1].setForeground(Color.blue);

ko[2].setForeground(Color.blue);

ko[6].setForeground(Color.blue);

ko[7].setForeground(Color.blue);

ko[8].setForeground(Color.blue);

ko[12].setForeground(Color.blue);

ko[13].setForeground(Color.blue);

ko[14].setForeground(Color.blue);

ko[18].setForeground(Color.blue);

ko[19].setForeground(Color.blue);

ko[20].setForeground(Color.blue);

//添加监视器

for(int i = 0;i < KON.length;i++)

{

kon[i].addActionListener(new ca2Actionlistener()); }

for(int i = 0;i < KO.length;i++)

{

ko[i].addActionListener(new ca2Actionlistener());

}

for(int i = 0;i < COMM.length;i++)

{

comm[i].addActionListener(new ca2Actionlistener()); }

checkbox1.addItemListener(new itemListener()); checkbox2.addItemListener(new itemListener()); checkbox3.addItemListener(new itemListener()); checkbox4.addItemListener(new itemListener());

JPanel pp1 = new JPanel();

pp1.setLayout(new GridLayout(3,1));

pp1.add(panel6);

JPanel pp2 = new JPanel();

pp2.setLayout(new FlowLayout(FlowLayout.LEFT));

pp2.add(panel0);

pp2.add(new JLabel(" "));

pp2.add(panel1);

pp1.add(pp2);

JPanel pp3 = new JPanel();

pp3.setLayout(new FlowLayout(FlowLayout.LEFT));

pp3.add(panel2);

pp3.add(new JLabel(" "));

pp3.add(panel3);

pp1.add(pp3);

JPanel pp4 = new JPanel();

pp4.setLayout(new FlowLayout(FlowLayout.LEFT));

JLabel NN = new JLabel(" ");

f2.setLayout(new GridLayout(2,1));

f2.add(pp1);

pp4.add(panel4);

pp4.add(NN);

pp4.add(panel5);

f2.add(pp4);

f2.setBackground(Color.LIGHT_GRAY);

f2.setSize(655,340);

f2.setLocation(200,200);

f2.setMenuBar(menubar2);

f2.setVisible(false);

f2.setResizable(false);

f2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

//科学型初始化结束

//****************************************************

//标准型监听器

public void actionPerformed(ActionEvent e)

{

String label = e.getActionCommand();//获取事件源的标签

if(label.equals(COM[0]))//按Backspace

handleBS();

else if(label.equals(COM[1]))//按CE

result.setText("0");

else if(label.equals(COM[2]))//按C

handleC();

else if(label.equals(M[1]))//按MC

handleMC();

else if(label.equals(M[2]))//按MR

handleMR();

else if(label.equals(M[3]))//按MS

handleMS();

else if(label.equals(M[4]))//按M+

handleM();

else if("0123456789.".indexOf(label) >= 0)//按数字键或者小数点handleNB(label);

else//按运算符

handleOR(label);

}

private void handleBS()//处理Backspace

{

String text = new String(result.getText());

int j = text.length();

if(j > 0)

{

text = text.substring(0,j - 1);

if(text.length() == 0)

{

result.setText("0");

firstDigit = true;

operator = "=";

}

else

{

result.setText(text);

}

}

}

private void handleNB(String key)//处理数字键

{

if(firstDigit)

{

result.setText(key);

}

else if((key.equals("."))&&(result.getText().indexOf(".")<0))

{

result.setText(result.getText() + ".");

}

else if(!key.equals("."))

{

result.setText(result.getText() + key);

}

firstDigit = false;

}

private void handleC()//处理C

{

result.setText("0");

firstDigit = true;

operator = "=";

}

private void handleOR(String key)//处理运算符

{

if(operator.equals("/"))

{

if(getNumberFromText() == 0.0)

{

operateValidFlag = false;

result.setText("除数不能是零");

}

else

resultNum /= getNumberFromText();

}

else if(operator.equals("1/x"))

{

if(resultNum == 0.0)

{

operateValidFlag = false;

result.setText("零没有倒数");

}

else

resultNum = 1 / resultNum;

}

else if(operator.equals("+"))

resultNum += getNumberFromText();

else if(operator.equals("-"))

resultNum -= getNumberFromText();

else if(operator.equals("*"))

resultNum *= getNumberFromText();

else if(operator.equals("sqrt"))

resultNum = Math.sqrt(resultNum);///////// else if(operator.equals("%"))

resultNum = resultNum / 100;

else if(operator.equals("+/-"))

resultNum = resultNum * (-1);

else if(operator.equals("="))

{ resultNum = getNumberFromText();}

if(operateValidFlag)// 双精度浮点数的运算

{

long t1;

double t2;

t1 = (long) resultNum;

t2 = resultNum - t1;

if(t2 == 0 )

{

result.setText(String.valueOf(t1));

}

else

{

result.setText(String.valueOf(resultNum));

}

}

//运算符等于用户按的按钮

operator = key;

firstDigit = true;

operateValidFlag = true;

}

public void handleMC()//处理MC,清除内存

{

resultNum = 0.0;

result.setText("0");

m[0].setText(" ");

firstDigit = true;

operator = "=";

}

public void handleMR()//处理MR,重新调用存储的数据

{

if(result.getText() != "" )//有记忆数字

{

result.setText("" + resultNum);

}

}

public void handleMS()//处理MS,存储显示的数据

{

resultNum = Double.valueOf(result.getText()).doubleValue();

m[0].setText("M");

result.setText("0");

firstDigit = true;

operator = "=";

}

public void handleM()//处理M+,将显示的数字与已经存储的数据相加要查看新的数字单击MR

{

resultNum = resultNum + Double.valueOf(result.getText()).doubleValue();

}

//标准型监听器定义部分结束

//****************************************************

//科学性监听器定义

class itemListener implements ItemListener

{

public void itemStateChanged(ItemEvent e)

{

Checkbox cb=(Checkbox)e.getItemSelectable(); //获取事件源的

resetable(); //使按钮重新可用

if(cb.getLabel().equals( "十六进制"))

{

kon[1].setEnabled(false);

kon[5].setEnabled(false);

kon[6].setEnabled(false);

kon[7].setEnabled(false);

kon[10].setEnabled(false);

kon[11].setEnabled(false);

kon[15].setEnabled(false);

kon[16].setEnabled(false);

kon[20].setEnabled(false);

kon[21].setEnabled(false);

kon[24].setEnabled(false);

kon[1].setForeground(Color.gray);

kon[5].setForeground(Color.gray);

kon[6].setForeground(Color.gray);

kon[7].setForeground(Color.gray);

kon[10].setForeground(Color.gray);

kon[11].setForeground(Color.gray);

kon[15].setForeground(Color.gray);

kon[16].setForeground(Color.gray);

kon[20].setForeground(Color.gray);

kon[21].setForeground(Color.gray);

ko[1].setForeground(Color.blue);

ko[2].setForeground(Color.blue);

ko[24].setForeground(Color.blue);

ko[25].setForeground(Color.blue);

ko[26].setForeground(Color.blue);

ko[27].setForeground(Color.blue);

ko[28].setForeground(Color.blue);

ko[29].setForeground(Color.blue);

ko[0].setForeground(Color.blue);

ko[6].setForeground(Color.blue);

ko[7].setForeground(Color.blue);

ko[8].setForeground(Color.blue);

ko[13].setForeground(Color.blue);

ko[14].setForeground(Color.blue); }

else if(cb.getLabel().equals( "十进制")) {

kon[5].setEnabled(false);

kon[10].setEnabled(false);

kon[15].setEnabled(false);

kon[20].setEnabled(false);

ko[24].setEnabled(false);

ko[25].setEnabled(false);

ko[26].setEnabled(false);

ko[27].setEnabled(false);

ko[28].setEnabled(false);

ko[29].setEnabled(false);

kon[5].setForeground(Color.gray); kon[10].setForeground(Color.gray); kon[15].setForeground(Color.gray); kon[20].setForeground(Color.gray); ko[24].setForeground(Color.gray);

ko[25].setForeground(Color.gray);

ko[26].setForeground(Color.gray);

ko[27].setForeground(Color.gray);

ko[28].setForeground(Color.gray);

ko[29].setForeground(Color.gray);

ko[1].setForeground(Color.blue);

ko[2].setForeground(Color.blue);

kon[1].setForeground(Color.magenta);

kon[7].setForeground(Color.magenta); kon[11].setForeground(Color.magenta); kon[16].setForeground(Color.magenta); kon[21].setForeground(Color.magenta); kon[24].setForeground(Color.blue);

ko[0].setForeground(Color.blue);

ko[6].setForeground(Color.blue);

ko[7].setForeground(Color.blue);

ko[8].setForeground(Color.blue);

ko[13].setForeground(Color.blue);

ko[14].setForeground(Color.blue);

}

else if(cb.getLabel().equals( "八进制")) {

kon[1].setEnabled(false);

kon[5].setEnabled(false);

kon[6].setEnabled(false);

kon[7].setEnabled(false);

kon[10].setEnabled(false);

kon[11].setEnabled(false);

kon[15].setEnabled(false);

kon[16].setEnabled(false);

kon[20].setEnabled(false);

kon[21].setEnabled(false);

kon[24].setEnabled(false);

ko[1].setEnabled(false);

ko[2].setEnabled(false);

ko[24].setEnabled(false);

ko[25].setEnabled(false);

ko[26].setEnabled(false);

ko[27].setEnabled(false);

ko[28].setEnabled(false);

ko[29].setEnabled(false);

kon[1].setForeground(Color.gray);

kon[5].setForeground(Color.gray);

kon[6].setForeground(Color.gray);

kon[7].setForeground(Color.gray);

kon[10].setForeground(Color.gray);

kon[11].setForeground(Color.gray);

kon[15].setForeground(Color.gray);

kon[16].setForeground(Color.gray);

kon[20].setForeground(Color.gray);

kon[24].setForeground(Color.gray);

ko[1].setForeground(Color.gray);

ko[2].setForeground(Color.gray);

ko[24].setForeground(Color.gray);

ko[25].setForeground(Color.gray);

ko[26].setForeground(Color.gray);

ko[27].setForeground(Color.gray);

ko[28].setForeground(Color.gray);

ko[29].setForeground(Color.gray);

ko[0].setForeground(Color.blue);

ko[6].setForeground(Color.blue);

ko[7].setForeground(Color.blue);

ko[8].setForeground(Color.blue);

ko[13].setForeground(Color.blue);

ko[14].setForeground(Color.blue); }

else if(cb.getLabel().equals( "二进制")) {

kon[1].setEnabled(false);

kon[5].setEnabled(false);

kon[6].setEnabled(false);

kon[7].setEnabled(false);

kon[10].setEnabled(false);

kon[11].setEnabled(false);

kon[15].setEnabled(false);

kon[16].setEnabled(false);

kon[20].setEnabled(false);

kon[21].setEnabled(false);

kon[24].setEnabled(false);

ko[1].setEnabled(false);

ko[2].setEnabled(false);

ko[24].setEnabled(false);

ko[25].setEnabled(false);

ko[26].setEnabled(false);

ko[27].setEnabled(false);

ko[28].setEnabled(false);

ko[29].setEnabled(false);

ko[0].setEnabled(false);

ko[6].setEnabled(false);

ko[7].setEnabled(false);

ko[8].setEnabled(false);

ko[13].setEnabled(false);

ko[14].setEnabled(false);

kon[1].setForeground(Color.gray);

kon[5].setForeground(Color.gray);

kon[6].setForeground(Color.gray);

kon[7].setForeground(Color.gray);

kon[10].setForeground(Color.gray);

kon[11].setForeground(Color.gray);

kon[15].setForeground(Color.gray);

kon[16].setForeground(Color.gray);

kon[20].setForeground(Color.gray);

kon[21].setForeground(Color.gray);

kon[24].setForeground(Color.gray);

ko[1].setForeground(Color.gray);

ko[2].setForeground(Color.gray);

ko[24].setForeground(Color.gray);

ko[25].setForeground(Color.gray);

ko[26].setForeground(Color.gray);

ko[27].setForeground(Color.gray);

ko[28].setForeground(Color.gray);

ko[29].setForeground(Color.gray);

ko[0].setForeground(Color.gray);

ko[6].setForeground(Color.gray);

ko[7].setForeground(Color.gray);

ko[8].setForeground(Color.gray);

ko[13].setForeground(Color.gray);

ko[14].setForeground(Color.gray);

}

}

}

class ca2Actionlistener implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

String label2 = e.getActionCommand();//获取事件源的标签

if(label2.equals(COMM[0]))//按Backspace

handleBS2();

else if(label2.equals(COMM[1]))//按CE

result2.setText("0");

else if(label2.equals(COMM[2]))//按C

handleC2();

else if(label2.equals(KON[4]))//按MC

handleMC2();

else if(label2.equals(KON[9]))//按MR

handleMR2();

else if(label2.equals(KON[14]))//按MS

handleMS2();

else if(label2.equals(KON[19]))//按M+

handleM2();

else if(label2.equals(KON[11]))//按sin

handleSI();

else if(label2.equals(KON[12])) //按x^y

handleYT();

else if(label2.equals(KON[13])) //按log

handleLO();

else if(label2.equals(KON[16])) //按cos

handleCO();

else if(label2.equals(KON[17])) //按x^3

handleTT();

else if(label2.equals(KON[22])) //按x^2

handlePF();

else if(label2.equals(KON[18])) //按n!

handleJC();

else if(label2.equals(KON[21])) //按tan

handleTA();

else if(label2.equals(KON[24]))//按pi

result2.setText(""+3.141592653);

else if("0123456789.".indexOf(label2) >= 0)//按数字键或者小数点handleNB2(label2);

else//按运算符

handleOR2(label2);

}

}

//科学性监听器定义结束

//****************************************************

//科学性计算器用到的函数

void resetable() //使按钮重新可用

{

for(int i=0;i

kon[i].setEnabled(true);

for(int i=0;i

ko[i].setEnabled(true);

}

private void handleC2()//处理C

{

result2.setText("0");

firstDigit = true;

operator2 = "=";

}

private void handleBS2()//处理Backspace

{

String text2 = new String(result2.getText());

int j2 = text2.length();

if(j2>0)

{

text2 = text2.substring(0,j2 - 1);

if(text2.length() == 0)

{

result2.setText("0");

firstDigit = true;

operator2 = "=";

}

else

{

result2.setText(text2);

}

}

}

public void handleMC2()//处理MC,清除内存

{

resultNum2 = 0.0;

result2.setText("0");

jj.setText(" ");

firstDigit = true;

operator2 = "=";

}

private void handleNB2(String key)//处理数字键

{

if(firstDigit)

{

result2.setText(key);

}

else if((key.equals("."))&&(result2.getText().indexOf(".")<0))

{

result2.setText(result2.getText() + ".");

}

java简单计算器源代码

简单计算器代码 package calcultorthree; import java.awt.BorderLayout;//导入边界布局管理器类 import java.awt.GridLayout;//导入网格布局管理器类 import java.awt.TextField;//导入文本区域类 import java.awt.event.ActionEvent;//导入事件类 import java.awt.event.ActionListener;//导入事件监听者类 import javax.swing.JButton;//导入按钮类 import javax.swing.JFrame;//导入窗体 import javax.swing.JPanel;//导入面板 /** *本例实现了简单计算器代码,具备加减乘除和正弦功能,旨在抱砖引玉。熟悉java的同学,可以在此基础上实现更复杂的功能。 * @author Fjsh */ public class CalcultorThree { //新建对象,在构造函数中进行初始化 JFrame frame;//新建窗体对象 JButton buttonzero,buttondot,buttonequal;//新建按钮“0”“.”“=” JButton buttonplus,buttonminus,buttonmultiple,buttondevision, buttonsin,buttontozero;//新建按钮“+”“-”“*”“/”“sin”和归零按钮JButton buttonone,buttontwo,buttonthree,buttonfour,buttonfive,buttonsix, buttonseven,buttoneight,buttonnine;//新建数字按钮“0”“1”“2”“3”“4”“5”“6”“7”“8”“9” JPanel panelwest,panelcenter,paneleast;//新建三个面板 TextField tf;//新建文本区域对象 public CalcultorThree(){ //初始化对象 tf=new TextField(30);//构造空文本字段,字符宽度为30 frame =new JFrame("CalculatorThree");//构造窗体对象,名称为“CalculatorThree”

JAVA实现计算器课程设计

JAVA实现计算器课程设计 计算机科学系 计应0701班 指导老师:刘其昌 设计人员:陈秀桃 设计日期:2009年11月10日——2009年12月20日 计算器的设计 目录 第一章绪 论 ..................................................................... .. (2)

1.1 开发环 境 ..................................................................... . (2) 1.2 基本功能介 绍 ..................................................................... ......... 2 第二章系统设 计 ..................................................................... (3) 2.1 系统流程 图 ..................................................................... . (3) 2.2 系统功能框 图 ..................................................................... (3) 2.3 需求分 析 ..................................................................... ................ 4 第三章软件设 计 ..................................................................... (5) 3.1 界面设 计 ..................................................................... . (5) 3.2 代码设 计 .....................................................................

科学计算器程序Java代码

科学计算器程序Java代码

MC:清除独立内存里的数字 MR:读出独立内存数字 MS:将显示数字保存到独立内存,并取代内存中原有数字 M+:将显示数字向独立内存累加 (独立内存是一个临时寄放数字的存储器,方便计算) CE:纠错键(CLEAR ERROR).输入数字有错,按它可以重新输入 C:表示清零,将计算器恢复到开机状态 功能举例: 源程序如下: import java.awt.BorderLayout;

import javax.swing.JRadioButtonMenuItem; import javax.swing.JTextField; public class Calucator extends JFrame { private JTextField tf; private JPanel panel1, panel2, panel3, panel4; private JMenuBar myBar; private JMenu menu1, menu2, menu3; private JMenuItem editItem1, editItem2, help1, help2, help3; private JRadioButtonMenuItem seeItem1, seeItem2;//单选框 private JCheckBoxMenuItem seeItem3;//复选框 private ButtonGroup bgb; private String back; private boolean IfResult = true, flag = false;

用JAVA设计一个科学型计算器

题目:设计一个Windows计算器。 摘要 在当今这个网络的时代,我找了好多java的代码材料。修改后程序是一个图形界面的java计算器,其界面主要采用了awt包,程序实现了: (1)实现简单加、减、乘、除的运算。 (2)实现除了加、减、乘、除按钮外其他按钮功能。 (3)给软件添加一个编辑、查看、帮助的主菜单。 (4)在数据输入方面,提高程序代码的健壮性,增强其对非法输入数据的识别能力。 (5)科学型计算器与标准计算器之间的菜单切换。 关键字:java程序编辑器面向对象计算器 目录 第1章概要设计 (8) 1.标准型计算器界面设计 (8) 第2章程序整体设计说明 (10) 2.1程序中所用到的变量 (10) 2.2程序部分源代码及注释 (11) 3章程序运行效果 (22) 3.程序运行主界面 (22) 3.程序中各按钮运行界面 (24) 3.本章小节 (26) 作业结论 (26) 第1章概要设计 1.1标准型计算器界面设计 1.1.1 JAVA文件的建立 (1)建立一个名称为“java”Java工程, package文件包名称为 :scr;计算器主类:Calculator。 (2)界面的设计:

图1.1标准型计算器界面 图 1.2 图1.3 (3)保持代码简洁 复杂代码写后不易理解,在修改和重写上难度比较大,使工作更加复杂,所以编写代码时应保持代码的简洁易懂。 数字按钮字体和颜色设置 功能按钮字体和颜色设置

(4)功能实现 在整个设计中要保持完整性,能够实现计算器中最基本的功能,如加、减、乘、除等。 1.1.2明确任务 用java编写一个简单的计算器,使其能够实现最基本的功能,如简单的加、减、乘、除;平方根,倒数,余数,三角函数,多数连续运算,科学计数法等功能。 第2章程序整体设计说明 2.2 程序部分源代码及注释 (1)复制菜单的功能创建代码如下: (2)粘贴菜单的功能创建代码如下:

java编写的简单的计算器程序

计算器 项目内容:编写一个Applet,模仿windows附件所带计算器的功能,可以帮助用户完成计算功能,具体如下图所示。 项目要求:使用图形的方式借助窗口、菜单、按钮等标准界面元素和鼠标操作,来帮助用户方便地向计算机系统发出命令,启动操作,并将系统运行的结果同样以图形的方式显示给用户,这样更加直观和生动; 1.Applet容器中组件的添加与设置,包括面板以及菜单的使用; 2.容器中组件的布局管理; 3.Java核心包中数组、数学计算类的使用; 4.异常的处理; 5.事件处理模型中的三类对象的使用: 1.Event-事件,用户对界面操作在java语言上的描述,以类的形式出现,例如键盘操作对应的事件类是KeyEvent。 2.Event Source-事件源,事件发生的场所,通常就是各个组件,例如按钮Button。 3.Event handler-事件处理者,接收事件对象并对其进行处理的对象。 6.程序中事件处理的流程:

1.计算流程的细化

参考代码: import java.awt.*; import https://www.360docs.net/doc/bd770166.html,ng.*; import javax.swing.*; import javax.swing.event.*; import java.awt.event.*; import java.text.DecimalFormat; public class Calculator implements ActionListener { //导入动作监听接口 //设计面板中的单位 JFrame frame; JTextField textAnswer; JPanel panel, panel1, panel2, panel3; JMenuBar mainMenu; JTextField textMemory; JLabel labelMemSpace; //labelMemSpace单纯做摆设,控制面板的形状 JButton buttonBk, buttonCe, buttonC; JButton button[]; JButton buttonMC, buttonMR, buttonMS, buttonMAdd; JButton buttonDot, buttonAddAndSub, buttonAdd, buttonSub, buttonMul, buttonDiv, buttonMod; JButton buttonSqrt, buttonDao, buttonEqual; JMenu editMenu, viewMenu, helpMenu; JMenuItem copyItem, pasteItem, tItem, sItem, numberGroup, topHelp, aboutCal; DecimalFormat df; //设置数据输出精度 boolean clickable; //控制当前能否按键 double memoryd; //使用内存中存储的数字 int memoryi; double vard, answerd; //用来保存double型数据的中间值(vard)和最后结果(answerd)

Java带计算过程的计算器课程设计报告

保存计算过程的计算器 Java程序设计课程设计报告保存计算过程的计算器 目录 1 概述.............................................. 错误!未定义书签。 1.1 课程设计目的............................... 错误!未定义书签。 1.2 课程设计内容............................... 错误!未定义书签。 2 系统需求分析.......................................... 错误!未定义书签。 2.1 系统目标................................... 错误!未定义书签。 2.2 主体功能................................... 错误!未定义书签。 2.3 开发环境................................... 错误!未定义书签。 3 系统概要设计.......................................... 错误!未定义书签。 3.1 系统的功能模块划分......................... 错误!未定义书签。 3.2 系统流程图................................. 错误!未定义书签。4系统详细设计........................................... 错误!未定义书签。 5 测试.................................................. 错误!未定义书签。 5.1 测试方案................................... 错误!未定义书签。 5.2 测试结果................................... 错误!未定义书签。 6 小结.................................................. 错误!未定义书签。参考文献................................................ 错误!未定义书签。附录................................................ 错误!未定义书签。 附录1 源程序清单...................................... 错误!未定义书签。

Java科学计算器程序代码

计算器布局显示: 功能举例: ①13+20=33 ②-7*14=-98:先输入7,再单击-/+将其变成负数,然后依次单击×号、14与= ③7!=5040 ④sin30°=0.5:先输入30,然后按下′″按钮转换成角度值,再按下sin即可显示结果 ⑤sqrt(4)=2:利用鼠标点击4后再点击sqrt按键即可显示结果 ⑥2*π=6.2832 …… 源程序如下: import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.DecimalFormat; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JCheckBoxMenuItem; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JRadioButtonMenuItem; import javax.swing.JTextField;

计算器 java程序设计..

目录 1.课程设计目的 (2) 2.设计题目分析 (2) 2.1 题目简介 (2) 2.2 设计要求及需求分析 (2) 3.课程设计内容 (3) 3.1 总体设计 (3) 3.2计算器功能模块设计 (4) 3.3计算器算法流程设计 (4) 3.4类的设计 (5) 3.5代码实现: (6) 3.5 设计结果与分析 (8) 4.设计心得与总结 (10) 参考文献: (10) 附录: (11)

1.课程设计目的 通过课程设计把知识形成系统,把自己所学的知识在实际问题中加以运用。如果自己编写的程序能够给更多的人带来方便,并且得到人们的好评,那么自己编写的程序就可以实现商品化,形成产品给更多的人利用,并实现一定的商品价值。 因此本次课程设计有目的有以下几点: (1)复习巩固java语言的基础知识,进一步加深对java语言的理解和掌控。 (2)提供一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机结合起来,锻炼我们的分析解决实际问题的能力。提高我们适应实际,实践编程的能力。 (3)培养我们在项目开发中创新意识及能力,通过亲身实践,利用所学编写简单的面向对象程序,提高对面向对象及JAVA语言的理解。 2.设计题目分析 2.1 题目简介 设计一个图形界面(GUI)的计算器应用程序,完成简单的算术运算、设计的计算器应用程序可以完成家法、减法、乘法、除法。 2.2 设计要求及需求分析 设计要求:由于现代用户更倾向于由鼠标方便操作的图形用户界面,所以我们采用GUI来实现计算器,并采用Swing组件,AWT事件处理等实现具体功能。 背景需求分析:在我们日常生活中,计算开支、收入时,大额数字或是多倍小数的计算都需要计算器的帮助,而在学习一些科目时,也常常要处理数字。虽然现在的计算器价格比较低廉,但是功能过于简单的不能满足个人需求,功能多的价格较贵,不仅操作不便,很多功能也根本用不到。所以我们想用自己所学设计开发一个属于自己的简单计算器来完成日常学习生活的需求。

Java课设 模拟科学计算器

Java课程设计 设计题目模拟科学计算器 班级计本1120班 姓名王XX 学号 1162042000

一、设计目的 《Java课程设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高自身的应用能力。 二、设计任务 模拟科学计算器 要求:界面模拟Windows中的计算器程序。 实现基本数学运算、函数等功能:加、减、乘、除、阶乘、正弦、余弦和指数运算。 实现要点:添加相关组件并进行按钮事件处理。 三、课题设计思想 对于此计算器程序,首先要设计其GUI界面,总体界面有一个文本框,22个按钮,总体界面用BorderLayout布局。 文本框放置在最north,然后0到9以及+,-,×,÷,.,!的按钮放置到一个面板Panel中,添加到整体布局的center,最后sin,cos,^,=的按钮放在最south,界面设计完成。 本项目用到了Java中的GUI界面和swing组件以及awt布局,所以简单易用,它能完成如下的几个小功能:点击按钮中的数字键和

运算符键就能进行加、减、乘、除阶乘、正弦、余弦和指数运算。还能通过用户自己在文本框中输入数字,进行简单运算;如果输入有误时可以按Clear撤销后重新输入新数据。 四、设计内容 1.需求分析 本项目需要实现一个具有四则运算的计算器,能够实现基本的加、减、乘、除运算,以及其他的辅助功能(阶乘、正弦、余弦、指数运算);界面简洁实用,模拟Windows中的计算器程序,要提供主要的设计思路、类的设计。 2.总体设计 (1)包的描述 本程序导入了 java.awt.BorderLayout包, java.awt.Color包, java.awt.GridLayout包, java.awt.event.ActionEvent包, java.awt.event.ActionListener包, java.text.DecimalFormat包, javax.swing.JButton包, javax.swing.JFrame包, javax.swing.JPanel包, javax.swing.JTextField包

java编写简单计算器源代码

import javax.swing.*; import java.awt.event.*; import java.awt.*; import https://www.360docs.net/doc/bd770166.html,ng.Math; class ring extends JFrame implements ActionListener { //定义成员变量: //JFrame frame;//定义一个窗口类; JTextField text;//定义一个文本框类; JLabel label;//定义一个标签类; JPanel p1,p2,p3,p4,p5,p6;//定义面板类; String s1,s,s2;//定义三个字符串变量; int count=0; JButton a1,a2,a3,a4,a5,a6,b1,b2,b3,b4,b5,b6,c1,c2,c3,c4,c5,c6,d1,d2,d3,d4 ,d5,d6; //ring的构造函数; ring() { this.setTitle("计算器"); // super("计算器"); JMenuBar menubar1=new JMenuBar();//新建菜单条; this.setJMenuBar(menubar1); JMenu menu1=new JMenu("编辑(E)"); JMenu menu2=new JMenu("查看(V)"); JMenu menu3=new JMenu("帮助(H)"); menubar1.add(menu1); menubar1.add(menu2); menubar1.add(menu3); JMenuItem item1=new JMenuItem("复制(c) ctrl+c"); JMenuItem item2=new JMenuItem("粘贴(p) ctrl+v"); JMenuItem item3=new JMenuItem("标准型(T)"); JMenuItem item4=new JMenuItem("科学型(s)"); JMenuItem item5=new JMenuItem("数字分组(I)"); JMenuItem item6=new JMenuItem("帮助主题(H)"); JMenuItem item7=new JMenuItem("关于计算机(A)"); menu1.add(item1); menu1.add(item2); menu2.add(item3); menu2.add(item4); menu2.add(item5); menu3.add(item6);

java课程设计计算器3科学计算器

import javax.swing.*;// 把 javax包里面的swing包里面的所有东西引进来 import java.awt.*;// 导入awt包里的所有java类 import java.awt.event.*;//导入包event import java.text.DecimalFormat;// 处理文本、日期、数字和消息的类和接口 import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.awt.BasicStroke; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.GridLayout; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.geom.Ellipse2D; import java.awt.geom.Line2D; import java.awt.geom.Point2D; public class biaozhunjisuanqi extends JFrame implements ActionListener {// public代表该类公有 //class声明一个类 // biaozhunjisuanqi为类名 // extends 是继承类 //implements代表实现接口 //窗体名称biaozhunjisuanqi继承JFrame类和ActionListener接口,并实现public void actionPerformed(ActionEvent e){}方法 private static final long serialVersionUID = 1L;// serialVersionUID相当于java类的身份证, 默认为1L, serialVersionUID作用是序列化时保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性 private JPanel jContentPane = null; // 创建面板对象, null代表为这些变量赋初值为空,即不分配内存空间,变量不指向任何地址。private是访问控制符,代表这些变量的访问级别为私有,私有级别只能在当前类中进行访问, 这些(JPanel 、JTextArea 、JPanel、 JButton )是java中AWT(包)中的类,用能进行桌面级应用程序的开发,就像平时用的word,上面有各种文本框,菜单栏,工具栏按钮等等,这些都是对象 private JPanel jPanel= null; //JPanel 作为一个容器,可以包容一些组件,然后将这个 JPanel

计算器程序java

1课程实习内容概述 1.1 目的及任务 成功的Java课程设计是其课程学习到位的一个重要体现,通过课程设计使学生更加掌握JAVA语言编程的基础知识并能熟练运用。如: (1)、掌握Java开发面向对象的软件设计思想、方法及步骤; (2)、熟悉类声明与对象的使用,并进一步强化类的定义,掌握类的继承、接口以及变量、数组的应用; (3)、了解JAVA语言的图形用户界面的设计知识,并运用JAVA 编写简单计算器程序。 2 程序实现的基本思想 2.1 问题分析 编写一个简单计算器程序,它要具有0~9数及π的输入、加、减、乘、除、开根号、正三角反三角函数、e^x、ln(x)、lg(x)、tanh、角度和弧度的转换、删除、清空的功能。 2.2 总体设计 (1)、首先要设计其GUI界面,总体界面有一个文本框,共有32个按钮,总体界面用BorderLayout布局。 (2)、文本框放置在总体界的NORTH; (3)、0到9以及“.”=的按钮放置到一个面板Panel1中,并用GridLayout(4,3)来布局,再将其添加到一个面板panel_center中,最后将panel_center面板放进整体布局的CENTER; (4)、将正三角反三角函数、e^x、ln(x)、lg(x)、tanh、角度和弧度的转换等12个按钮放置到一个面板Panel3中,设计其按键字体为蓝色,并用GridLayout(4,3)来布局,再将其放进整体布局的WEST; (5)、将+、-、 *、/、 2√、π、以及删除和清空等8个按钮放置到一个面板Panel2中,设计其按键字体为蓝色,并用GridLayout(4,2)来布局,再将其放进整体布局的EAST中,界面设计完成。

java简单计算器源代码

j a v a简单计算器源代码集团企业公司编码:(LL3698-KKI1269-TM2483-LUI12689-ITT289-

简单计算器代码packagecalcultorthree; /** *本例实现了简单计算器代码,具备加减乘除和正弦功能,旨在抱砖引玉。熟悉java的同学,可以在此基础上实现更复杂的功能。 *@authorFjsh */ publicclassCalcultorThree{ //新建对象,在构造函数中进行初始化 JFrameframe;//新建窗体对象 JButtonbuttonzero,buttondot,buttonequal;//新建按钮“0”“.”“=”JButtonbuttonplus,buttonminus,buttonmultiple,buttondevision, buttonsin,buttontozero;//新建按钮“+”“-”“*”“/”“sin”和归零按钮JButtonbuttonone,buttontwo,buttonthree,buttonfour,buttonfive,buttonsix, buttonseven,buttoneight,buttonnine;//新建数字按钮 “0”“1”“2”“3”“4”“5”“6”“7”“8”“9” JPanelpanelwest,panelcenter,paneleast;//新建三个面板 TextFieldtf;//新建文本区域对象 publicCalcultorThree(){ //初始化对象 tf=newTextField(30);//构造空文本字段,字符宽度为30 frame=newJFrame("CalculatorThree");//构造窗体对象,名称为“CalculatorThree”

计算器设计的java课程设计报告

】 · ( 华东交通大学课程设计 课 程: Java 程序设计 题 目: 计算器设计 年 级: 2010级 专 业: 信息一班 * 学 号: 姓 名: 组 员: 指导教师: 课程设计题目:计算器设计

课程设计(论文)任务书 基础学院信息与计算科学专业2010—1 班 一、课程设计(论文)题目计算器的设计 二、课程设计(论文)工作自2013 年 6 月23日起至2013 年6月27日止。 三、课程设计(论文) 地点: 计算机中心 · 四、课程设计(论文)内容要求: 1.本课程设计的目的 (1)使学生掌握系统各功能模块的基本工作原理; (2)掌握Java的基本编程原理和基本的编程方法; (3)使学生学会系统调试; (4)培养学生分析、解决问题的能力; (5)提高学生的软件文档写作能力和团队合作精神。 2.课程设计的任务及要求 ' 1)基本要求: (1)分析系统各功能模块的工作原理; (2)提出系统的设计方案; (3)对所进行编程、调试、修改。 2)创新要求: 在基本要求达到后,可进行创新设计,如:用虚函数,文件流,重载流插入运算符等。3)课程设计论文编写要求 (1)要按照书稿的规格打印誊写设计论文; > (2)论文包括目录、摘要、正文、总结等; (3)毕业论文装订按学校的统一要求完成。 4)答辩与评分标准: (1)达到课程设计的目的与要求,程序的可读性较好,并调试正确,60分; (2)能正确回答老师所提问题,可增加10分; (3)课程设计报告书写规范整齐,可增加10分; (4)心得体会认真总结,可增加10分; (5)程序有创新性,可增加10分; [ 成绩评定实行优秀、良好、中等、及格和不及格五个等级。不及格者需重做。 5)参考文献:

java课程设计 计算器实际与实现

《面向对象程序设计》 课程设计报告 题目: 计算器设计与实现 专业: 班级: 姓名: 指导教师: 成绩: xx 201x 年 x 月xx 日 xxxxxx

目录 1 设计内容及要求 (1) 1.1设计内容 (1) 1.2设计任务及具体要求 (1) 2 概要设计 (1) 2.1 功能需求 (1) 2.2 系统的开发运行环境 (2) 3 设计过程 (2) 3.2系统功能模块 (3) 4 设计结果与分析 (4) 4.1功能模块的划分 (4) 4.2功能模块的实现 (4) 小结 (10) 5 参考文献 (11)

1 设计内容及要求 1.1设计内容 该程序是一个图形界面的简单Java计算器,具有良好的界面,使用人员能快捷简单的进行操作。即时准确地获得需要的计算结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。可以进行简单的四则运算(加、减、乘、除,等) 1.2设计任务及具体要求 计算器的设计与实现,使学生巩固和加深以Java 语言为基础的面向对象编程技术理论知识的理解,提高实际动手编程能力的培养,掌握以Java为核心的应用软件开发方案,达到能独立阅读、编制和调试一定规模的Java程序的水平。在日常生活中经常需要用到计算器,比如科学计算、数字计算、会计业务甚至是日常生活中的一些运算,当运算比较复杂时没有计算器就会显得很麻烦。为了解决日常生活中的困难,特意设计了这个计算器系统。 2 概要设计 2.1 功能需求 在日常生活中人们总是难以避免的要进行一些运算,当运算比较复杂时没有计算器就会显得很麻烦。为了解决日常生活中的困难,特意设计了这个计算器系统。在该系统中不仅可以进行整数的加、减、乘、除等简单运算,也可以进行浮点数的加、减、乘、除等运算。除此之外还可以进行三角函数、指数、对数、平方等运算。人们应用它可以解决日常生活中的一些运算问题,比如做买卖时进行交易的过程中就可以利用该计算器进行数量、价格以及金额的统计计算。学生也可以利用该计算器进行数学运算,解决简单的三角函数运算。

计算器java课程设计(完整版)

目录 一、课设任务及要求 (1) 二、需求分析 (2) 三、设计思路 (3) 四、详细设计 (4) 五、运行调试与分析讨论 (14) 六、设计体会与小结 (18) 七、参考文献 (19)

一、课设任务及要求 1)课设任务: ⑴、设计的计算器应用程序可以完成加法、减法、乘法、除法以及取余运算(可以进行浮点数和负数的运算); ⑵、有求倒数、退格和清零功能。 2)创新要求: 能进行正切、余弦,以及求平方根、指数(包括对e)、自然对数运算。 3)设计要求 ①设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。且有小数点、正负号、求倒数、退格和清零功能。 ②课程设计可选用Eclipse、JBuilder、NetBeans等作为开发平台以提高开发效率,通过资料查阅和学习尽可能熟练掌握其中一种集成开发环境。 ③认真按时完成课程设计报告,课程设计报告内容包括:设计任务与要求、需求分析、设计思路、详细设计、运行调试与分析讨论和设计体会与小结六个部分。

二、需求分析 ⑴、开发的技术及功能 本课程设计是要做一个图形界面的计算器,其界面主要是由swing组件中的控件构成。程序实现了计算器的基本功能有:加、减、乘、除基本算术运算(可以进行浮点和负数运算)和sin、cos、tan等三角函数求值运算,同时能进行指数运算和自然对数运算,还有求倒数、退格和清零功能。 ⑵设计思路 设计这个计算器主要是参考Windows操作系统中自带的计算器,由于编者水平和时间的限制,不能将计算器设计到科学型及其他更复杂的类型,在设计过程中还参考了一些其他的优秀设计。但本计算器除了常用的加减乘除(可以进行浮点和负数运算)这些基本运算外,还有求余、求倒、退格、清零,甚至还能进行一些复杂科学的运算,比如余弦(cos)、正切(tan)、指数运算(pow)、自然对数运算(log)、求平方根(sqrt)以及对e的指数运算(exp),并且还能进行连续运算。总体上说来,本计算器设计简单,代码很少,程序很小,但功能却很强大,这是同类计算器所不具备的。 ⑶设计效果图 设计时先在设计界面中添加按钮等控件,后在按钮的actionPerformed 事件中添加代码完成其功能其中调用了Java类中的Math函数库以及各种字符串操作。设计的界面如下: 图1 计算器运行界面

java课程设计-模拟科学计算器

JAVA课程设计说明书 题目:模拟科学计算器 姓名: 学号: 班级:网络工程11-2 山东科技大学 2013年11月7日

目录 1 课设任务及要求 (3) 1.1课设任务 (3) 1.2设计要求 (3) 2 需求分析 (2) 2.1 设计背景 (2) 2.2 需求获取 (3) 2.3 程序功能图 (4) 3 设计思路 (4) 3.1 界面布局 (4) 3.2 类的定义 (5) 3.3变量的定义 (5) 4 详细设计 (6) 4.1整体概述 (6) 4.2 误操作处理 (7) 4.3流程图和结构图 (8) 5 系统调试 (11) 5.1 程序界面 (11) 5.2 运行界面 (11) 6 心得与体会 (15) 7 参考文献 (16) 8 附录 (16)

1 课设任务及要求 1.1课设任务: 要求:界面模拟Windows中的计算器程序。 实现基本数学运算、函数等功能:加、减、乘、除、阶乘、正弦、余弦和指数运算。 实现要点:添加相关组件并进行按钮事件处理。 要求提交Application和Applet两个版本的程序。 1.2设计要求 ①设计的java计算器应用程序可以完成加法、减法、乘法、除法和取余运算,和cos,sin,tan等三角函数功能以及阶乘和指数等运算,且有小数点、正负号、求倒数、退格和清零功能。具体可参考windows附件下的计算器 ②课程设计使用Eclipse4.2等作为程序编译和运行测试的开发平台,采用JDK-7u25作为java开发环境,使用Microsoft Office Visio 2007作为绘图工具。

③认真按时完成课程设计报告,制作演讲PPT,积极报名上讲台向大家演示和讲解自己的程序。提交打印版的报告以及电子版的原稿和Application和Applet两个版本的程序代码。 2 需求分析 2.1 设计背景 本程序是老师提供的几个课程设计题目中比较中等的题目。要求实现模拟的科学计算器功能,主要包括加减乘除四则运算和阶乘,三角函数以及指数的运算。具体的功能我参考了Windows7下的计算机小程序,并根据其界面设计了java小程序界面,根据其功能对自己设计的计算器小程序进行了功能的适当增加与修改。在实现了课程设计题目要求的基础上,自己又增添了对数函数,幂函数,三角函数,取余等我们常用到的功能比较简单的函数。由于本函数涉及的函数以及按键数目较多,故没有采用面向对象的设计方法,没有对每个功能封装成函数调用,而是针对每个按键的动作事件直接采用了算法的编写。最终实现了全部的功能,但是由于时间有限,许多功能没有坐到很到位的优化,或许还存在着许多了漏洞,欢迎老师和同学的批评指正,我一定会

java计算器设计报告

摘要 本计算器是由java语言所编程设计的标准计算器,可以进行十进制下的四则运算(加、减、乘、除)、开平方、求余、求倒数,还可以实现二进制与十进制之间的转换。通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。 关键词: java语言,计算器,算法

目录 摘要 (1) 1概述 (3) 1.1设计目的及思路 (3) 1.2功能模块设计 (3) 1.3系统功能图 (3) 2计算器的设计与实现 (4) 2.1程序界面 (4) 2.2程序源代码 (4) 3计算器演示 (10) 4运行调试及讨论分析 (13) 5小结 (14) 参考文献: (14)

1概述 1.1设计目的及思路 通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。利用Java Applet图形界面首先开始设计一个计算器的界面,定义计算器所需要的按钮并赋给其按钮名称,使得使用计算器时简单明了,清晰可见,操作轻松。 给各个按钮进行算法,利用鼠标点击事件,当鼠标点击某个按钮时就开始执行那个按钮所定义的算法,生成数据并显示。 除数字的输入为直接进行输入外,其他运算例如+、-、*、/、开平方等算法要求计算时通过内部较为复杂的运算将结果显示在显示屏上。 至于其中的进制转换功能的实现则是直接调用Java中进制转换的函数,例如要将十进制转换成二进制则可直接调用函数Integer.toBinaryString(int i)来实现,充分显示了Java语言的简洁性和Java语言功能的强大性。 当然了在输入数据时还要进行异常捕捉,防止越界的现象的发生,这也是Java语言健壮性的体现! 1.2功能模块设计 以下为标准计算器的基本功能: (1)加法 两个数据进行加操作,可以为小数。 (2)减法 两个数据进行减操作,可以为负数相减。 (3)乘法 两个数相乘操作。 (4)除法 两个数相除操作。 (5)开平方 对任意一个数进行开方运算,可以是小数。 (6)求余 对任意一个数进行求余运算。 (7)倒数 对任意一个数进行倒数运算。 (8)转换 将十进制数转换为二进制以及将二进制转换为十进制。 1.3系统功能图

JavaSwing计算器设计

JavaSwing计算器设计 《java程序设计》课程设计报告 课题名称:GUI计算器设计 略 …… 略 提交报告时间:2008 年12 月20 日1. 课程设计题目 基于GUI的计算器设计 2. 课程设计目的 1. 巩固和加深课堂所学知识; 2. 将课本上的理论知识和实际应用有机的结合起来,培养同学们分析和解决实际问题的能力; 3. 通过对java语言程序代码的阅读、修改、设计,理解和掌握复杂的java语言应用程序的编程,提高实践编程能力。

3. 程序运行环境及开发工具 本程序在Windows XP的PC机上利用Jbuilder9.0的软件开发实现,在Windows XP平台上Jbuilder9.0及Eclipse环境中运行通过。 4. 程序功能使用说明 运行该程序后,参与运算的操作数可有鼠标点击相应按钮输入,也可有键盘输入,但操作符应有鼠标点击相应的按钮,当: 1.在简易计算中可以按照常规输入计算,基本无bug, “%”未设置其用途; 2.简易计算中,可以进行+、-、*、/、乘方(^)、开方(√)及阶乘(!)运算; 3.科学计算中有许多功能为实现,主要能进行加、减、乘、除、乘方、开方、幂、开n次方、倒数、阶乘、ln、e的x 次幂、三角函数等高级运算; 4.例如: (1). 1 + 9 = 10 (2). 25 + -8 = 17 (3). 98 - 35 = 63 (4). 96 * 2 = 192 (5). 96 / 4 = 24 (6). 4 ^ 3 = 64

(7). 100 √ = 10 (8). -9 √ = 不能执行此操作!! (9). 20 ! = 2432902008176640000 (10). -20 ! = 不能执行此操作!! (11). 0 ! = 1 (12). 8 ln = 2.0794415416798357 (13). 2 Exp = 7.38905609893065 (14). 8 x^y 3 = 512 (15). 20 x^2 = 400 (16). 100 n!= 933262154439441526816992388562667004907159682643816 214685929638952175999932299156089414639761565182862 536979208272237582511852109168640000000000000000000 00000 (17). 30 sin = 0.49999999999999994(0.5) (求sin30度) 其他(cos,tan)依次类推; (18).1/x计算有bug; (19). 3 x√ 8 = 2 (求8开3

相关文档
最新文档