计算器java课程设计.docx
《计算器java课程设计.docx》由会员分享,可在线阅读,更多相关《计算器java课程设计.docx(10页珍藏版)》请在冰豆网上搜索。
计算器java课程设计
《JAVA程序设计》课程设计报告
简单计算器
学号:
101210109
姓名:
王锦锦
班级:
10级计科一班
指导教师:
吕海莲
成绩:
完成时间:
2012-12-25
一、设计内容和要求
1、简单计算器模拟程序的基本要求
模拟Windows中附件里面的计算器软件,能实现整数的加、减、乘、除四则运算。
2、需要实现的主要功能
该计算器模拟程序使用Java的awt包和Swing包的类库设计图形界面的计算器显示用户界面并且使用图形界面中的事件event委托机制来处理事件响应,以及用java语言设计实现整数的加、减、乘、除四则运算。
(附加功能:
清零和异常处理机制)
二、系统分析与概要设计
1、面板
JPaneltxtpanel:
用于放置文本框
Panelbtnpanel:
用于放置按钮(0-9和+,-,*,/,=)
2、显示部分
(1)第一个面板:
txtpanel
位置以及排列方式BorderLayout.NORTH
txtpanel.add(txtinput):
添加文本框到txtpanel面板中
(2)第二个面板:
btnpanel
排列方式:
setLayout(gl)
3、基本按钮
btnpanel.add(b7)btnpanel.add(b8)btnpanel.add(b9);
btnpanel.add(multiply)btnpanel.add(b4)btnpanel.add(b5);
btnpanel.add(b6)btnpanel.add(divide)btnpanel.add(b1);
btnpanel.add(b2)btnpanel.add(b3)btnpanel.add(add);
btnpanel.add(b0).add(bdes)btnpanel.add(equal);
btnpanel.add(subtract)
以上是在第二个面板btnpanelH中添加的0到9和+,-,*,/,=的按钮。
4、附加功能
(1)“清零”:
用于清空文本框和下一次的运算
(2)“异常处理”
除数为零:
当除数为零时,弹出“除数不能为零”窗体
错误输入:
当只单击运算符时,弹出“错误输入”窗体
三、详细设计和编码
1、总体功能图
1、类的定义及关系
Jsq类继承JFrame类创建主界面,在主界面上由文本框JTextField和JButton组件构成,JTextField和JButton组件分别放置在两个不同的面板JPanel上,同时利用按钮注册监听器,获取事件源。
添加实现0--9和加、减、乘、除按钮并实现四则运算并获得运算结果以及“清零”和“异常处理机制”。
2、运行效果图
3、源代码
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
publicclassCalculatorextendsJFrameimplementsActionListener
{
JPaneltxtpanel,btnpanel;
JTextFieldtxtinput;
JButtonb1,b2,b3,b4,b5,b6,b7,b8,b9,b0,bdes,multiply,divide,add,
subtract,clear,equal;
GridLayoutgl;
doubled1,d2;
Strings;
publicCalculator()
{
super("计算器");
txtpanel=newJPanel();
btnpanel=newJPanel();
txtinput=newJTextField(25);
txtinput.setEditable(false);
txtinput.setHorizontalAlignment(JTextField.RIGHT);
txtinput.setText("");
b1=newJButton("1");
b2=newJButton("2");
b3=newJButton("3");
b4=newJButton("4");
b5=newJButton("5");
b6=newJButton("6");
b7=newJButton("7");
b8=newJButton("8");
b9=newJButton("9");
b0=newJButton("0");
bdes=newJButton(".");
add=newJButton("+");
subtract=newJButton("-");
multiply=newJButton("*");
divide=newJButton("/");
clear=newJButton("清零");
equal=newJButton("=");
clear.addActionListener(newActionListener()
{publicvoidactionPerformed(ActionEventargh)
{btnCancelActionPerformed();}
});
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);
bdes.addActionListener(this);
multiply.addActionListener(this);
divide.addActionListener(this);
add.addActionListener(this);
subtract.addActionListener(this);
equal.addActionListener(this);
getContentPane().add(txtpanel,BorderLayout.NORTH);
txtpanel.add(txtinput);
txtpanel.add(clear);
gl=newGridLayout(4,4,5,5);
btnpanel.setLayout(gl);
getContentPane().add(btnpanel);
btnpanel.add(b7);
btnpanel.add(b8);
btnpanel.add(b9);
btnpanel.add(multiply);
btnpanel.add(b4);
btnpanel.add(b5);
btnpanel.add(b6);
btnpanel.add(divide);
btnpanel.add(b1);
btnpanel.add(b2);
btnpanel.add(b3);
btnpanel.add(add);
btnpanel.add(b0);
btnpanel.add(bdes);
btnpanel.add(equal);
btnpanel.add(subtract);
setSize(250,220);
setVisible(true);
setLocation(300,200);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
publicvoidbtnCancelActionPerformed()
{txtinput.setText("");}
publicvoidactionPerformed(ActionEvente)
{try{
Objectobj=e.getSource();
if(obj==b1)
txtinput.setText(txtinput.getText()+"1");
elseif(obj==b2)
txtinput.setText(txtinput.getText()+"2");
elseif(obj==b3)
txtinput.setText(txtinput.getText()+"3");
elseif(obj==b4)
txtinput.setText(txtinput.getText()+"4");
elseif(obj==b5)
txtinput.setText(txtinput.getText()+"5");
elseif(obj==b6)
txtinput.setText(txtinput.getText()+"6");
elseif(obj==b7)
txtinput.setText(txtinput.getText()+"7");
elseif(obj==b8)
txtinput.setText(txtinput.getText()+"8");
elseif(obj==b9)
txtinput.setText(txtinput.getText()+"9");
elseif(obj==b0)
txtinput.setText(txtinput.getText()+"0");
elseif(obj==bdes)
txtinput.setText(txtinput.getText()+".");
elseif(obj==add)
{d1=Double.parseDouble(txtinput.getText());
s="+";
txtinput.setText("");
}
elseif(obj==subtract)
{d1=Double.parseDouble(txtinput.getText());
s="-";
txtinput.setText("");
}
elseif(obj==divide)
{d1=Double.parseDouble(txtinput.getText());
s="/";
txtinput.setText("");
}
elseif(obj==multiply)
{d1=Double.parseDouble(txtinput.getText());
s="*";
txtinput.setText("");
}
elseif(obj==equal)
{if(s=="+")
{d2=d1+Double.parseDouble(txtinput.getText());
txtinput.setText(Double.toString(d2));
}
elseif(s=="-")
{d2=d1-Double.parseDouble(txtinput.getText());
txtinput.setText(Double.toString(d2));
}
elseif(txtinput.equals(txtinput.getText())&&obj==subtract)
{d2=d1-Double.parseDouble(txtinput.getText());
txtinput.setText(Double.toString(d2));}
elseif(s=="/")
{if(Double.parseDouble(txtinput.getText())==0)
JOptionPane.showMessageDialog(this,"除数不能为0");
d2=d1/Double.parseDouble(txtinput.getText());
txtinput.setText(Double.toString(d2));
}
elseif(s=="*")
{d2=d1*Double.parseDouble(txtinput.getText());
txtinput.setText(Double.toString(d2));
}
}
}
catch(Exceptionouch)
{JOptionPane.showMessageDialog(null,"错误输入","error",
JOptionPane.ERROR_MESSAGE);}
}
publicstaticvoidmain(Stringargs[])
{try{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");}
catch(Exceptione){}
newCalculator();
}
}
四、测试结果
本次课程设计的计算器能够满足加、减、乘、除四则基本运算,而且通过自己的努力为此计算器添加了两个附加的功能:
“清零”和“异常处理机制”,并能很好的实现其功能。
但是此计算器的功能还是很单薄,不能进行开方、取余、三角函数等其他计算器的常用功能。
一是因为这些功能相对复杂一些,二是自己有点懒惰。
所以造成此计算器功能不是很完善。
五、小结
在此次的课程设计实践中,我学到了教科书上没有的东西。
这次课程设计,我按照课程设计的要求,分块实现程序的功能。
在实践中我遇到许多的问题,通过同学的帮助和翻阅资料以及网上查询,最后都克服,最终我成功的完成了这次课程设计。
从中我充分理解了Java面对对象的特性,通过编写这个相对复杂的程序,让我认识解决实际问题前应现建立模型,再通过建立的模型使问题简单化,从而解决问题。
这次编写的程序大部分是通过调用各包中的方法来实现的,这也让我充分理解了包和类调用的关系。
并为其增加了两个功能“清零”和“异常处理机制”。
由于这次编写的程序相对比较复杂,所以不能一次性编写、调试,也由此让我学会把程序分块,逐个编写、调试。
在实践的同时,我又从中成长了许多,特别是在对程序的编译和调试中掌握了许多的技巧和方法,为今后的其他计算机语言的学习奠定了一定的基础。
六、参考文献
[1]张思民.Java语言程序设计[M].清华大学出版社.2007.2
[2]耿祥义.Java2使用教程(第三版)[M].清华大学出版社.2006.8