java计算器编程.docx

上传人:b****6 文档编号:5894531 上传时间:2023-01-02 格式:DOCX 页数:16 大小:116.11KB
下载 相关 举报
java计算器编程.docx_第1页
第1页 / 共16页
java计算器编程.docx_第2页
第2页 / 共16页
java计算器编程.docx_第3页
第3页 / 共16页
java计算器编程.docx_第4页
第4页 / 共16页
java计算器编程.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

java计算器编程.docx

《java计算器编程.docx》由会员分享,可在线阅读,更多相关《java计算器编程.docx(16页珍藏版)》请在冰豆网上搜索。

java计算器编程.docx

java计算器编程

Java课程设计

--小型计算器

 

姓名:

郑建羊

学号:

104412

专业:

软件技术

指导教师:

姜子敬

提交时间:

2013年1月8日

一设计任务书

1.程序具备的功能:

(1)使用图形用户界面:

一个文本框;0-9数字按钮;加、减、乘、除运算符;“等于”符号,“点”符号,“sqrt”符号,“1/x”符号,“退格”按钮和“%”符号;

(2)完成整数、实数的四则运算以及两个数的取余运算和一个数的倒数运算;

(3)通过按钮点击实现数据的复位(清零);

(4)实数运算中小数位的精度一致。

2.课程设计的主要设计思想

对于此计算器程序,首先要设计其GUI界面,总体界面有一个文本框,20个按钮,按钮总体界面用GridLayout布局。

按钮和文本框则使用BorderLayout布局,文本框放置在最NORTH,然后按钮放置到一个面板Panel中,添加到整体布局的CENTER,界面设计完成。

布局设计好后再添加按钮事件。

对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。

在进行加、减、乘、除计算时要把点击加、减、乘、除按钮之前的数值保存下来,运算时是这个被保存下来的数值和文本框中的数值加、减、乘、除。

二总体方案设计

1.界面设计

界面设计要求用GUI,界面设计中有用到swing组件的TextField和Button,用到awt中的BorderLayout和GridLayout布局管理方式,其图形界面如下:

2.功能介绍

这是计算器中的一种:

简单计算器,本项目用到了Java中的GUI界面和swing组件以及awt布局,所以简单易用,它能完成如下的几个小功能:

点击按钮中的数字键和运算符键就能进行简单的加、乘、乘、除四则运算和取余运算以及求倒数运算;

如果输入有误时可以按“退格”重新输入数据。

三详细设计主题任务

程序流程图如下:

四程序的调试与运行结果说明

事件1:

加法:

45+89预计结果134。

事件2:

减法89-45预计结果44。

事件3:

乘法45*4预计结果是180。

事件4:

除法48/4预计结果是12。

事件5:

取余6/45预计结果6。

事件6:

求倒数6的倒数预计结果。

五设计源代码

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

publicclassJisuanqiimplementsActionListener{

doubleop1=0,op2=0;//操作数

intpreOp,currentOp=0;//标准位

StringBufferstr=newStringBuffer();

JTextFieldjg=newJTextField("",30);

booleanisDouble=false;//是否为实数;

publicJisuanqi(){

JButtonyi=newJButton("1");

yi.setForeground(Color.blue);

yi.addActionListener(this);

JButtoner=newJButton("2");

er.setForeground(Color.blue);

er.addActionListener(this);

JButtonsan=newJButton("3");

san.setForeground(Color.blue);

san.addActionListener(this);

JButtonsi=newJButton("4");

si.setForeground(Color.blue);

si.addActionListener(this);

JButtonwu=newJButton("5");

wu.setForeground(Color.blue);

wu.addActionListener(this);

JButtonliu=newJButton("6");

liu.setForeground(Color.blue);

liu.addActionListener(this);

JButtonqi=newJButton("7");

qi.setForeground(Color.blue);

qi.addActionListener(this);

JButtonba=newJButton("8");

ba.setForeground(Color.blue);

ba.addActionListener(this);

JButtonjiu=newJButton("9");

jiu.setForeground(Color.blue);

jiu.addActionListener(this);

JButtonling=newJButton("0");

ling.setForeground(Color.blue);

ling.addActionListener(this);

JButtonjia=newJButton("+");

jia.setForeground(Color.red);

jia.addActionListener(this);

JButtonjian=newJButton("-");

jian.setForeground(Color.red);

jian.addActionListener(this);

JButtoncheng=newJButton("*");

cheng.setForeground(Color.red);

cheng.addActionListener(this);

JButtonchu=newJButton("/");

chu.setForeground(Color.red);

chu.addActionListener(this);

JButtonqy=newJButton("%");

qy.setForeground(Color.red);

qy.addActionListener(this);

JButtonxy=newJButton("1/x");

xy.setForeground(Color.red);

xy.addActionListener(this);

JButtonfg=newJButton("sqrt");

fg.setForeground(Color.red);

fg.addActionListener(this);

JButtonbs=newJButton("退格");

bs.setForeground(Color.red);

bs.addActionListener(this);

JButtondeng=newJButton("=");

deng.setForeground(Color.red);

deng.addActionListener(this);

JButtondian=newJButton(".");

dian.setForeground(Color.red);

dian.addActionListener(this);

JPanelpanel=newJPanel();

JPanelpanel2=newJPanel();

JPanelpanel3=newJPanel();

panel2.setLayout(newFlowLayout());

panel2.setSize(50,300);

panel2.add(jg);

panel3.setLayout(newGridLayout(4,5,8,8));

panel3.add(qi);

panel3.add(ba);

panel3.add(jiu);

panel3.add(chu);

panel3.add(fg);

panel3.add(si);

panel3.add(wu);

panel3.add(liu);

panel3.add(cheng);

panel3.add(qy);

panel3.add(yi);

panel3.add(er);

panel3.add(san);

panel3.add(jian);

panel3.add(xy);

panel3.add(ling);

panel3.add(bs);

panel3.add(dian);

panel3.add(jia);

panel3.add(deng);

panel.setLayout(newBorderLayout());

panel.add(panel2,BorderLayout.NORTH);

panel.add(panel3,BorderLayout.CENTER);

JFrameframe=newJFrame();

frame.add(panel);

frame.setTitle("Java课程设计--计算器");

frame.setSize(350,250);

frame.setVisible(true);

frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);

}

publicvoidactionPerformed(ActionEvente)

{

Strings=e.getActionCommand();

if(s.equals("退格"))

{

if(!

jg.getText().trim().equals(""))

{

//如果文本框中有内容

if(str.length()!

=1&&str.length()!

=0)

{

jg.setText(str.delete(str.length()-1,str.length()).toString());

}

else

{

jg.setText("");

str.setLength(0);

}

}

//op2=Double.parseDouble(jg.getText().trim());

}

elseif(s.equals("1/x"))

{

//如果按键为1/x则将文本框中的数据为它的倒数

Stringtemp=jg.getText().trim();

doubledtemp=Double.parseDouble(temp);

jg.setText(dtemp+"的倒数是"+1/dtemp);

}

elseif(s.equals("sqrt"))

{

//如果按键为sqrt则将文本框中的内容求平方根

Stringtemp=jg.getText().trim();

doubledtemp=Double.parseDouble(temp);

jg.setText(temp+"的开放根为"+Math.sqrt(dtemp));

}

elseif(s.equals("+"))

{

str.setLength(0);

if(currentOp==0)

{

preOp=currentOp=1;

op2=0;

jg.setText(""+op1);

}

else

{

currentOp=preOp;

preOp=1;

switch(currentOp){

case1:

op1+=op2;

jg.setText(""+op1);

break;

case2:

op1-=op2;

jg.setText(""+op1);

break;

case3:

op1*=op2;

jg.setText(""+op1);

break;

case4:

op1/=op2;

jg.setText(""+op1);

case5:

op1=op1%op2;

jg.setText(""+op1);

break;

}

}

}

elseif(s.equals("-")){

str.setLength(0);

if(currentOp==0)

{

preOp=currentOp=2;//op1=op2;op2=0;

jg.setText(""+op1);

}

else

{

currentOp=preOp;

preOp=2;

switch(currentOp){

case1:

op1=op1+op2;jg.setText(""+op1);break;

case2:

op1=op1-op2;jg.setText(""+op1);break;

case3:

op1=op1*op2;jg.setText(""+op1);break;

case4:

op1=op1/op2;jg.setText(""+op1);break;

case5:

op1=op1%op2;jg.setText(""+op1);break;

}

}

}

elseif(s.equals("*"))//*

{

str.setLength(0);

if(currentOp==0)

{

preOp=currentOp=3;//op1=op2;op2=1;

jg.setText(""+op1);//op1=op2;

}

else

{

currentOp=preOp;

preOp=3;

switch(currentOp){

case1:

op1=op1+op2;jg.setText(""+op1);break;

case2:

op1=op1-op2;jg.setText(""+op1);break;

case3:

op1=op1*op2;jg.setText(""+op1);break;

case4:

op1=op1/op2;jg.setText(""+op1);break;

case5:

op1=op1%op2;jg.setText(""+op1);break;

}

}

}

elseif(s.equals("/"))///

{

str.setLength(0);

if(currentOp==0)

{

preOp=currentOp=4;//op2=1;

jg.setText(""+op1);//op1=op2;

}

else

{

currentOp=preOp;

preOp=4;

switch(currentOp){

case1:

op1=op1+op2;jg.setText(""+op1);break;

case2:

op1=op1-op2;jg.setText(""+op1);break;

case3:

op1=op1*op2;jg.setText(""+op1);break;

case4:

op1=op1/op2;jg.setText(""+op1);break;

case5:

op1=op1%op2;jg.setText(""+op1);break;

}

}

}

elseif(s.equals("%")){

str.setLength(0);

if(currentOp==0)

{

preOp=currentOp=5;

jg.setText(""+op1);//op1=op2;

}

else

{

currentOp=preOp;

preOp=5;

switch(currentOp){

case1:

op1=op1+op2;jg.setText(""+op1);break;

case2:

op1=op1-op2;jg.setText(""+op1);break;

case3:

op1=op1*op2;jg.setText(""+op1);break;

case4:

op1=op1/op2;jg.setText(""+op1);break;

case5:

op1=op1%op2;jg.setText(""+op1);break;

}

}

}

elseif(s.equals("="))//=

{

if(currentOp==0)

{

str.setLength(0);

jg.setText(""+op2);

}

else

{

str.setLength(0);

currentOp=preOp;

switch(currentOp){

case1:

op1=op1+op2;jg.setText(""+op1);break;

case2:

op1=op1-op2;jg.setText(""+op1);break;

case3:

op1=op1*op2;jg.setText(""+op1);break;

case4:

op1=op1/op2;jg.setText(""+op1);break;

case5:

op1=op1%op2;jg.setText(""+op1);break;}

currentOp=0;

op2=0;

}

}

elseif(s.equals("."))

{

isDouble=true;

if(jg.getText().trim().indexOf('.')!

=-1);

else{

if(jg.getText().trim().equals("0")){

str.setLength(0);

jg.setText((str.append("0"+s)).toString());

}

//elseif(tResult.getText().trim().equals("")){}//如果初时显示为空则不做任何操作

else{

jg.setText((str.append(s)).toString());

}

}

}

elseif(s.equals("0"))//如果选择的是"0"这个数字键

{

if(jg.getText().trim().equals("0.")){}

else{

jg.setText(str.append(s).toString());

op2=Double.parseDouble(jg.getText().trim());

}

}

else{

jg.setText(str.append(s).toString());

op2=Double.parseDouble(jg.getText().trim());

if(currentOp==0)

op1=op2;

}

}

publicstaticvoidmain(String[]args){

newJisuanqi();

}

}

六课程设计总结

在做本项目是时候,会遇到很多小问题,比如说:

如何保存输入的数字和下一个数进行加、减、乘、除运算。

还有如何判断它是第几个输入的数字。

后来进行多次研究和查询才知道可以通过设运算符标志位来判断是输入的第几个数值。

此次课程设计让我更了解熟悉了Java中的图形用户界面和它的编程方式。

在完成课题的过程中也不断充实了自己,学习到了很多以前没有学习到的知识,收获很大。

最大的收获就是对大学学习的总结和培养了解决困难的信心和能力,使我对所学知识能够融会贯通,又不断丰富了新知识。

Java计算器设计使得我们对所学的专业课有了更为深刻的认识,使得知识得到了巩固和提高。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1