Java课程设计计算器.docx
《Java课程设计计算器.docx》由会员分享,可在线阅读,更多相关《Java课程设计计算器.docx(14页珍藏版)》请在冰豆网上搜索。
Java课程设计计算器
《JAVA程序设计》课程设计报告
简单计算器模拟程序
学号:
101210120
姓名:
刘凯丽
班级:
10级1班
指导教师:
吕海莲
成绩:
完成时间:
2012.12.26
一、设计内容和要求
1、基本要求:
使用swing组件或awt组件(推荐使用swing组件)模拟实现Windows操作系统的计算器。
2、需要实现的主要功能为:
模拟Windows中附件里面的计算器软件,能实现整数的加、减、乘、除四则运算。
二、系统分析与概要设计
1、本计算器包括一种显示类型:
标准型。
2、标准型的功能:
可以进行简单的十进制数据的加、减、乘、除运算。
3、通过Jsq()构造函数初始化。
4、通过actionPerformed(ActionEvente)实现接口。
三、详细设计和编码
1、程序流程图
首先明确该实验设计的要求实现的基本功能,其次设计布局,将空间划分为由行和列组成的网格单元,每个单元放一个组件,网格单元大小可以不同,尽量将相同属性的按钮放在一个区域,方便操作。
程序流程图如下图:
2、定义及关系
(1)创建所需的各种组件,代码如下:
publicclassJsqextendsJFrameimplementsActionListener
{
doublenum1,num2,num3;
booleanend,add,mul,sub,div;
JTextFieldt=newJTextField("0");
JButtonb1=newJButton("1");JButtonb2=newJButton("2");
JButtonb3=newJButton("3");JButtonb4=newJButton("+");
JButtonb5=newJButton("4");JButtonb6=newJButton("5");
JButtonb7=newJButton("6");JButtonb8=newJButton("-");
JButtonb9=newJButton("7");JButtonb10=newJButton("8");
JButtonb11=newJButton("9");JButtonb12=newJButton("*");
JButtonb13=newJButton(".");JButtonb14=newJButton("0");
JButtonb15=newJButton("=");JButtonb16=newJButton("/");
JPanelp1=newJPanel();JPanelp2=newJPanel();
(2)通过Jsq()函数初始化及添加各种组件并为其注册监听器,代码如下:
publicJsq(){
setTitle("刘凯丽—计算器");
setResizable(false);
setBounds(100,100,230,230);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
add(p1,"North");
t.setEditable(false);
t.setHorizontalAlignment(JTextField.CENTER);
t.setColumns(18);
t.setHorizontalAlignment(JTextField.RIGHT);
p1.add(t);
GridLayoutl=newGridLayout(4,0);
l.setVgap(10);l.setHgap(10);
p2.setLayout(l);add(p2,"Center");
p2.add(b1);p2.add(b2);
p2.add(b3);p2.add(b4);
p2.add(b5);p2.add(b6);
p2.add(b7);p2.add(b8);
p2.add(b9);p2.add(b10);
p2.add(b11);p2.add(b12);
p2.add(b13);p2.add(b14);
p2.add(b15);p2.add(b16);
JLabelll=newJLabel();
ll.setPreferredSize(newDimension(10,0));
add(ll,"West");
JLabelrl=newJLabel();
rl.setPreferredSize(newDimension(10,0));
add(rl,"East");
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);b10.addActionListener(this);
b11.addActionListener(this);b12.addActionListener(this);
b13.addActionListener(this);b14.addActionListener(this);
b15.addActionListener(this);b16.addActionListener(this);
setVisible(true);
}
(3)接口的实现,代码如下:
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==b1)
num
(1);
if(e.getSource()==b2)
num
(2);
if(e.getSource()==b3)
num(3);
if(e.getSource()==b5)
num(4);
if(e.getSource()==b6)
num(5);
if(e.getSource()==b7)
num(6);
if(e.getSource()==b9)
num(7);
if(e.getSource()==b10)
num(8);
if(e.getSource()==b11)
num(9);
if(e.getSource()==b14)
num(0);
if(e.getSource()==b4)
sign
(1);
if(e.getSource()==b8)
sign
(2);
if(e.getSource()==b12)
sign(3);
if(e.getSource()==b16)
sign(4);
if(e.getSource()==b13)
point();
if(e.getSource()==b15)
eql();
}
3、运行效果图
4、源代码
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
publicclassJsqextendsJFrameimplementsActionListener
{
doublenum1,num2,num3;
booleanend,add,mul,sub,div;
JTextFieldt=newJTextField("0");
JButtonb1=newJButton("1");
JButtonb2=newJButton("2");
JButtonb3=newJButton("3");
JButtonb4=newJButton("+");
JButtonb5=newJButton("4");
JButtonb6=newJButton("5");
JButtonb7=newJButton("6");
JButtonb8=newJButton("-");
JButtonb9=newJButton("7");
JButtonb10=newJButton("8");
JButtonb11=newJButton("9");
JButtonb12=newJButton("*");
JButtonb13=newJButton(".");
JButtonb14=newJButton("0");
JButtonb15=newJButton("=");
JButtonb16=newJButton("/");
JPanelp1=newJPanel();
JPanelp2=newJPanel();
publicJsq(){
setTitle("刘凯丽—计算器");
setResizable(false);
setBounds(100,100,230,230);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
add(p1,"North");
t.setEditable(false);
t.setHorizontalAlignment(JTextField.CENTER);
t.setColumns(18);
t.setHorizontalAlignment(JTextField.RIGHT);
p1.add(t);
GridLayoutl=newGridLayout(4,0);
l.setVgap(10);
l.setHgap(10);
p2.setLayout(l);
add(p2,"Center");
p2.add(b1);
p2.add(b2);
p2.add(b3);
p2.add(b4);
p2.add(b5);
p2.add(b6);
p2.add(b7);
p2.add(b8);
p2.add(b9);
p2.add(b10);
p2.add(b11);
p2.add(b12);
p2.add(b13);
p2.add(b14);
p2.add(b15);
p2.add(b16);
JLabelll=newJLabel();
ll.setPreferredSize(newDimension(10,0));
add(ll,"West");
JLabelrl=newJLabel();
rl.setPreferredSize(newDimension(10,0));
add(rl,"East");
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);
b10.addActionListener(this);
b11.addActionListener(this);
b12.addActionListener(this);
b13.addActionListener(this);
b14.addActionListener(this);
b15.addActionListener(this);
b16.addActionListener(this);
setVisible(true);
}
publicstaticvoidmain(Stringargs[]){
Jsqf=newJsq();}
publicvoidnum(inti){
Strings=String.valueOf(i);
if(end)
{
t.setText("0");
end=false;
}
if((t.getText()).equals("0"))
{
t.setText(s);
}
else
{
s=t.getText()+s;
t.setText(str);
}
}
publicvoidsign(inti){
if(i==1)
{add=true;mul=false;sub=false;div=false;}
if(i==2)
{add=false;mul=false;sub=true;div=false;}
if(i==3)
{add=false;mul=true;sub=false;div=false;}
if(i==4)
{add=false;mul=false;sub=false;div=true;}
num1=Double.parseDouble(t.getText());
end=true;
}
publicvoidpoint(){
Strings;
if(t.getText().indexOf('.')<0)
{s=t.getText()+".";
t.setText(s);}
}
publicvoideql(){
num2=Double.parseDouble(t.getText());
if(add)
num3=num1+num2;
if(mul)
num3=num1*num2;
if(sub)
num3=num1-num2;
if(div)
num3=num1/num2;
Strings=String.valueOf(num3);
t.setText(s);
end=true;
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==b1)
num
(1);
if(e.getSource()==b2)
num
(2);
if(e.getSource()==b3)
num(3);
if(e.getSource()==b5)
num(4);
if(e.getSource()==b6)
num(5);
if(e.getSource()==b7)
num(6);
if(e.getSource()==b9)
num(7);
if(e.getSource()==b10)
num(8);
if(e.getSource()==b11)
num(9);
if(e.getSource()==b14)
num(0);
if(e.getSource()==b4)
sign
(1);
if(e.getSource()==b8)
sign
(2);
if(e.getSource()==b12)
sign(3);
if(e.getSource()==b16)
sign(4);
if(e.getSource()==b13)
point();
if(e.getSource()==b15)
eql();
}
}
四、测试结果
1、加法运算:
4+5=9
2、减法运算:
11-10=1
3、乘法运算:
5*9=45
4、除法运算:
85/6=14.16
五、小结
通过这次课程设计,我按照课程设计的要求,实现了数的加、减、乘、除的基本算术运算。
我不仅复习了以前学习过的知识,更深刻的懂得了学好学会了并不是代表就能够在真正的实践中运用的流畅,这次实践给了我们一个既动手又动脑,独立实践的机会但其中又包含着共同合作,这次又将理论和实践相结合,提高我们的分析、解决实际问题的能力,并且让我认识到了要从要从实际、实践出发提高自己的学术能力;通过这次课程设计使我懂得了理论与实际相结合很重要,只有理论知识是远远不够的,只有把所学的理论知识与实际相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在实验中,我参考了一些资料,也请教了同学,最终成功地完成了这次的课程设计。
经过学习,我深刻认识到自己的不足和缺点,自己处于怎么样的水平,但是我也了解到自己的长处和优点。
善于总结,也是学习能力的一种体现,每次完成一个编程任务,完成一段代码,都应当有目的的跟踪该程序的应用状况,随时总结,找到自己的不足,这样所编写的程序才能逐步提高。
对程序的编写、编译和调试中,我也掌握了很多技巧和方法。
在今后的学习中,我会继续努力,注重多思考。
灵活的运用所学的知识。
且多加练习,从而进一步提高自己的编程能力。
六、参考文献
1、耿祥义java课程设计清华大学出版社
2、陈昊鹏饶若男等译java编程思想机械工程出版社