基于JavaJDK的简易计算器含源文件.docx

上传人:b****5 文档编号:8575123 上传时间:2023-01-31 格式:DOCX 页数:21 大小:201.27KB
下载 相关 举报
基于JavaJDK的简易计算器含源文件.docx_第1页
第1页 / 共21页
基于JavaJDK的简易计算器含源文件.docx_第2页
第2页 / 共21页
基于JavaJDK的简易计算器含源文件.docx_第3页
第3页 / 共21页
基于JavaJDK的简易计算器含源文件.docx_第4页
第4页 / 共21页
基于JavaJDK的简易计算器含源文件.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

基于JavaJDK的简易计算器含源文件.docx

《基于JavaJDK的简易计算器含源文件.docx》由会员分享,可在线阅读,更多相关《基于JavaJDK的简易计算器含源文件.docx(21页珍藏版)》请在冰豆网上搜索。

基于JavaJDK的简易计算器含源文件.docx

基于JavaJDK的简易计算器含源文件

 

Java课程设计

 

设计题目 基于JavaJDK的计算器

设计时间 2017

学生姓名 冯明宇

学生学号 140404211

所在班级 1402班

指导教师 申静

 

摘要

计算器在我们的生活中常常会使用到,本次课程设计,利用课堂所学到的知识,通过界面以及其中的逻辑处理,完成了基本的四则运算的处理。

通过awt包或者swing包中的界面设计,实现了通过界面来显示输入过程和运算结果,同时也使设计出来的计算器符合人性化的基本要求。

面向对象的思想从很大程度上可以让程序的思路更加清晰,而且可重用性很高。

关键词java;计算器;四则运算;面向对象;

目录

一.课设题目及要求…………………………………………………………….1

1.1课设题目描述……………………………………………………………...1

1.2基本要求…………………………………………………………………...1

二.功能描述及设计方案……………………………………………………….1

2.1计算器功能描述……………………………………………………….…..1

2.2设计思想及方案…………………………………………………………...1

三.程序说明…………………………………………………………………….3

3.1界面设计…………………………………………………………………...3

3.1.1UI组件创建与初始化………………………………………..……...3

3.1.2在窗体中添加UI组件…………………………………………..……4

3.2添加事件响应逻辑………………………………………………………..6

3.3计算逻辑实现……………………………………………………………..7

四.运行效果及存在的不足…………………………………………………….9

4.1运行效果…………………………………………………………………..10

4.2存在的不足………………………………………………………………..10

五.结果分析及心得体会………………………………………………………11

六.参考文献…………………………………………………………………....12

七.源程序附录…………………………………………………………………12

一.课设题目及要求

1.1课设题目描述

在JavaJDK平台上设计并实现一个基于窗口界面的计算器

1.2基本要求

该计算器可以运算两个两位数的加减乘除运算,可以通过点击窗口的按键来实现所有操作(包括输入数字和运算符号以及作为计算等等),输入过程及运算结果都要与按键所在同一窗口中呈现

二.功能描述及设计方案

2.1计算器功能描述

本次课程设计的计算器具有能够进行加、减、乘、除四则基本运算的基本功能,并且通过自己的努力为此计算器添加了两个附加的功能:

清零和异常处理机制,即除数为0以及只单击运算符运算的算法错误,并且能很好的实现其功能。

 

2.2设计思想及方案

2.2.1设计思想概述

要制作一个计算器,首先需要知道它由哪些部分组成。

 

结构上来说,一个简单的图形界面,需要由界面组件、组件的事件监听器(响应各类事件的逻辑)和具体的事件处理逻辑组成。

2.2.2设计方案结构图

基本运算功能方案图

异常处理机制功能方案图

设计好实现方案后,接下来,我们首先需要制作界面部分。

这部分主要的工作就是创建各个界面组件对象,对其进行初始化,以及控制各组件之间的层次关系和布局大

三.程序说明

3.1界面设计与实现

3.1.1UI组件创建和初始化

(1)、面板

JPaneltxtpanel:

用于放置文本框

Panelbtnpanel:

用于放置按钮(0-9和+,-,*,/,=)

(2)、显示部分

a.第一个面板:

txtpanel

位置以及排列方式BorderLayout.NORTH

txtpanel.add(txtinput):

添加文本框到txtpanel面板中

b.第二个面板:

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和+,-,*,/,=的按钮。

首先我们需要将界面中要用到的UI组件作为Calculator类的成员变量在一开始声明。

主要代码如下:

//继承一个JFrame对象。

JFrame可以理解为程序的主窗体。

publicclassCalculatorextendsJFrameimplementsActionListener

{

//txtpanel用于放置文本框,btnpanel用于放置按钮

JPaneltxtpanel,btnpanel;

//创建文本框,用于显示内容

JTextFieldtxtinput;

.

.

.

//声明各个UI组件对象并初始化

publicCalculator()

{

super("基于JavaJDK的计算器");

txtpanel=newJPanel();

btnpanel=newJPanel();

//参数25表明可以显示25列的文本内容

txtinput=newJTextField(25);

//设置文本框不能编辑

txtinput.setEditable(false);

//设置文本框为右对齐,使输入和结果都靠右显示

txtinput.setHorizontalAlignment(JTextField.RIGHT);txtinput.setText("");

//数字键0到9

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("=");

 

3.1.2在窗体中添加UI组件

这个计算器有两个JPanel

 

 

什么是JPanel:

JPanel是一般轻量级容器。

如上图所示,你可以将其理解为一个盛放其他UI组件的“篮子”。

JPanel位于 javax.swing 包中,为面板容器,可以加入到JFrame中,它自身是个容器,也可以把其他component(组件)加入到JPanel中,例如JButton、JTextArea、JTextField等。

在这个项目中,两个JPanel分别对应这个计算器按键除“清零”键外其他的键,另个面板则是文本框跟“清零”键。

主要代码如下:

//创建Jpanel的两个对象并初始化

//txtpanel用于放置文本框,btnpanel用于放置按钮

JPaneltxtpanel,btnpanel;

.

.

.

//将UI组件添加进容器内

getContentPane().add(txtpanel,BorderLayout.NORTH);

txtpanel.add(txtinput);

txtpanel.add(clear);

//设置该容器的布局为四行四列,边距为5像素

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(400,250);

setVisible(true);

//设置主窗口出现在屏幕上的位置

setLocation(300,200);setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

}

布局结束后,就是计算器的难点:

事件处理程序

3.2、添加事件响应逻辑

对于计算器而言,涉及到的事件响应逻辑主要有:

数字键、加减乘除运算、等于以及清除

主要代码如下:

//绑定事件响应逻辑到各个UI组件上

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("");

}

3.3、计算逻辑的实现

计算的逻辑要针对输入的不同运算符来对操作数进行运算,同时还要考虑到除数为0这种不合理的以及只单击运算符运算的算法错误,。

主要代码如下:

doubled1;//操作数1

doubled2;//操作数2

Strings;//运算符

.

.

.

//计算逻辑

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);}

}

四.效果及存在的问题

4.1运行效果

(1)加法运算功能:

例如12+14=

先输入12,在按+,在输入14在按=,结果如下图

(2)减法运算功能:

例如26-14=

先输入26,在按-,在输入14,在按=,结果如下图

(3)乘法运算功能:

例如25*15=

先输入25,在按*,在输入15,在按=,结果如下图

(4)除法运算功能:

例如125\5=

先输入125,在按\,在输入5,在按=,结果如下图

(5)“清零按钮”数据清除功能

清除前

清除后

(6).异常处理机制

当除数为0时

当只单击运算符号运算时

4.2本计算器存在的不足

在完成课程设计的期间,参阅了相关的书籍并在网络上查找相关的资料,对实现这个设计提供了很大的帮助。

由于目前知识方面的匮乏,本次课程设计的计算器没能够顺利实现开方运算、正余弦正切运算、阶乘运算,进制转换等高级,更复杂的数据计算功能,希望在以后的时间里丰富这方面的知识,以便更好的运用。

五.结果分析及心得体会

在这次课程设计中,我利用课堂所学的知识和通过查阅课外资料,顺利的实现了计算器的各个功能,并对其进行按键的排版、监听、处理、运算等各个步骤的亲力亲为,基本上完成了任务书上的各项内容。

虽然在这次的课程设计的过程和结果中,也存在一些的不足,但通过分析和解决,我也收获了很多。

其次,在本次的课程设计中,通过与同学们的交流,解决了不少长久以来困扰我的java语言问题,让我深切体会到了大家共同努力的重要性。

在设计这个系统的时候,我查阅了很多相关的书籍,并通过网络解决了不少问题。

通过这次课程设计,我对eclipse的开发环境和使用也有了更多的认识和了解,让我对java语言的认识又加深了一步,不仅使我学会了如何查阅资料,同时也让我发现了网络这个好老师,总之收获了很多。

六.参考文献

[1] 雍俊海 《Java程序设计教程》(第三版) 清华大学出版社 

[2](美)埃克尔 著,陈昊鹏 译 《Java编程思想》(第4版).机械工业出版社

[3] 李兴华 《Java从入门到精通》 人民邮电出版社 2010-4-1版 

 [4] 温沿书 《Java入门与实战教程》人民邮电出版社2010-03-01版

 [5] 李钟尉 《Java范例完全自学手册》 人民邮电出版社 2009-10-1 

七.源程序附录

packagecom.demo1;

importjavax.swing.*;

importjava.awt.*;

importjava.awt.event.*;

publicclassCalculatorextendsJFrameimplementsActionListener

{

JPaneltxtpanel,btnpanel;//txtpanel用于放置文本框,btnpanel用于放置按钮

JTextFieldtxtinput;

JButtonb1,b2,b3,b4,b5,b6,b7,b8,b9,b0,bdes,multiply,divide,add,

subtract,clear,equal;

GridLayoutgl;

doubled1;//操作数1

doubled2;//操作数2

Strings;//运算符

//声明各个UI组件对象并初始化

publicCalculator()

{

super("基于JavaJDK的计算器");

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");

bde

s=newJButton(".");

add=newJButton("+");

subtract=newJButton("-");

multiply=newJButton("*");

divide=newJButton("/");

clear=newJButton("清零");

equal=newJButton("=");

//清除键的逻辑(Clear)

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);

//将UI组件添加进容器内

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(400,250);

setVisible(

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

当前位置:首页 > 职业教育 > 其它

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

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