Java大作业计算器.docx

上传人:b****0 文档编号:25738915 上传时间:2023-06-12 格式:DOCX 页数:21 大小:168.29KB
下载 相关 举报
Java大作业计算器.docx_第1页
第1页 / 共21页
Java大作业计算器.docx_第2页
第2页 / 共21页
Java大作业计算器.docx_第3页
第3页 / 共21页
Java大作业计算器.docx_第4页
第4页 / 共21页
Java大作业计算器.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

Java大作业计算器.docx

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

Java大作业计算器.docx

Java大作业计算器

 

JAVA大作业

简易计算器

课程名称:

Java开发技术

教学班级:

B02班

学院:

信息管理学院

2013~2014学年第1学期

(第1册共1册)

 

1引言

1.1开发背景

电脑已经深入到日常生活和工作的方方面面,例如文字办公、信息管理、图像处理、游戏娱乐等,尤其是游戏。

电脑游戏行业经过二十年的发展,已经成为与影视、音乐等并驾齐驱的全球最重要的娱乐产业之一,其年销售额超过好莱坞的全年收入。

Java语言作为一种面向对象的编程语言,具有分布式、可移植性、高性能、多线程等特点。

对于一名学生来说,在系统的学习了Java后,面对这次的大作业,正好将学过的Java语言中的各种技术综合起来编写小程序。

即对自己学过的技能进行一次检验,也能系统的将学过的知识复习巩固。

1.2项目目标

开发一个计算器小程序,具有整数和小数的加减乘除功能,数据记忆清除功能。

1.3开发环境

Eclipse3.5Java集成开发环境

1.4计算器的基本情况

最早的计算工具诞生在中国。

中国古代最早采用的一种计算工具叫筹策,又被叫做算筹。

这种算筹多用竹子制成,也有用木头,兽骨充当材料的.约二百七十枚一束,放在布袋里可随身携带。

直到今天仍在使用的珠算盘,是中国古代计算工具领域中的另一项发明,明代时的珠算盘已经与现代的珠算盘几乎相同。

17世纪初,西方国家的计算工具有了较大的发展,英国数学家纳皮尔发明的"纳皮尔算筹",英国牧师奥却德发明了圆柱型对数计算尺,这种计算尺不仅能做加减乘除、乘方、开方运算,甚至可以计算三角函数,指数函数和对数函数,这些计算工具不仅带动了计算器的发展,也为现代计算器发展奠定了良好的基础,成为现代社会应用广泛的计算工具。

1642年,年仅19岁的法国伟大科学家帕斯卡引用算盘的原理,发明了第一部机械式计算器,在他的计算器中有一些互相联锁的齿轮,一个转过十位的齿轮会使另一个齿轮转过一位,人们可以像拨电话号码盘那样,把数字拨进去,计算结果就会出现在另一个窗口中,但是只能做加减计算。

1694年,莱布尼兹在德国将其改进成可以进行乘除的计算。

此后,一直要到20世纪50年代末才有电子计算器的出现。

2技术支持

2.1Applet概述

小应用程序(Applet)是指采用Java创建的基于HTML的程序。

浏览器将其暂时下载到用户的硬盘上,并在Web页打开时在本地运行。

小应用程序(Applet)是可通过因特网下载并在接收计算机上运行的一小段程序。

小应用程序通常用Java语言编写并运行在浏览器软件中,applet典型用于为万维网网页页面定制或添加交互格式元素。

Applet可以翻译为小应用程序,JavaApplet就是用Java语言编写的这样的一些小应用程序,它们可以直接嵌入到网页或者其他特定的容器中,并能够产生特殊的效果。

Applet必须运行于某个特定的“容器”,这个容器可以是浏览器本身,也可以是通过各种插件,或者包括支持Applet的移动设备在内的其他各种程序来运行。

与一般的Java应用程序不同,Applet不是通过main方法来运行的。

在运行时Applet通常会与用户进行互动,显示动态的画面,并且还会遵循严格的安全检查,阻止潜在的不安全因素(例如根据安全策略,限制Applet对客户端文件系统的访问)。

在JavaApplet中,可以实现图形绘制,字体和颜色控制,动画和声音的插入,人机交互及网络交流等功能。

Applet还提供了名为抽象窗口工具箱(AbstractWindowToolkit,AWT)的窗口环境开发工具。

AWT利用用户计算机的GUI元素,可以建立标准的图形用户界面,如窗口、按钮、滚动条等等。

在网络上有非常多的Applet范例来生动地展现这些功能,读者可以去调阅相应的网页以观看它们的效果。

3系统设计及实现

3.1系统功能实现

1.通过按钮事件来获得用户的输入。

通过ActionEvent的getSource()得到被激发的按钮,从而获得输入。

通过两个标记记忆上一次输入的情况,当前输入的是数字,如果上一次输入的是数字,那么就将这次输入的数字加到原来text的末尾。

如果上次输入的是算术符,那么就重置text。

当前输入的是算术符,则计算当前结果total=total运算符text

2.通过计算将结果输出到JTextField中。

3.清零功能。

3.2系统界面设计

为了实现所需要的功能,同时又便于使用,计算器系统的界面设计得比较简单,如下图所示。

计算器系统界面

3.3系统函数功能说明

函数

功能

Result()

显示输入和结果的函数

Number_Key()

添加数字键的函数

actionPerformed(ActionEvente)

触发事件

setLayout(newBorderLayout())

设置边框布局的函数

addActionListener()

监听事件

getSource()

得到被激发的按钮

4计算器的测试

以下测试内容都是针对界面中的一些功能进行分类别的测试。

4.1测试“输入”功能

(1)当前输入的是数字:

(2)当前输入的是运算符+:

 

4.2测试“输出结果”功能

根据上面的:

87+2:

4.3测试“清零功能”功能

需要计算另一组数据时,需要清零,点击ce:

 

清零前:

清零后:

5分析与总结

5.1个人总结

在版面布局上定义了两个面板,一个是用来放置和布局所有按钮,用的版面控制器是GridLayout,设为6行3列,并设置了组件与组件之间的约束为10,另一个用来放置。

在事件处理中。

ActionPerformed是这个程序最重要的函数,每个按钮都与数字、运算符或者功能符一一对应。

通过ActionEvent的getSource()得到被激发的按钮,从而获得输入。

通过两个标记记忆上一次输入的情况,当前输入的是数字,如果上一次输入的是数字,那么就将这次输入的数字加到原来text的末尾。

如果上次输入的是算术符,那么就重置text。

当前输入的是算术符,则计算当前结果total=total运算符text

6附录:

importjavax.swing.*;

importjava.awt.*;

importjava.awt.event.*;

//计算器显示结果的窗体

classResultextendsJPanel{

//text显示输入和结果

JTextFieldtext=newJTextField("0");

Result(){

//将输入的数字或得到的结果在text的右边显示

text.setHorizontalAlignment(SwingConstants.RIGHT);

text.enable(false);//文本框不能编辑

setLayout(newBorderLayout());//设定布局管理器边框布局

add(text,BorderLayout.CENTER);//text放置在窗体的中间

}

}

//计算器数字按钮定义面板

classNumber_KeyextendsJPanel{

JButtonzero=newJButton("0");//数字键0

JButtonone=newJButton("1");//数字键1

JButtontwo=newJButton("2");//数字键2

JButtonthree=newJButton("3");//数字键3

JButtonfour=newJButton("4");//数字键4

JButtonfive=newJButton("5");//数字键5

JButtonsix=newJButton("6");//数字键6

JButtonseven=newJButton("7");//数字键7

JButtoneight=newJButton("8");//数字键8

JButtonnine=newJButton("9");//数字键9

JButtonplus=newJButton("+");

JButtonsub=newJButton("-");

JButtonmul=newJButton("*");

JButtondiv=newJButton("/");

JButtonequal=newJButton("=");

JButtonce=newJButton("ce");//置零键

JButtonpoint=newJButton(".");

JButtontzero=newJButton("00");

Number_Key(){

//定义布局管理器为网格布局

setLayout(newGridLayout(6,3,10,10));

//添加各个按钮键

add(seven);

add(eight);

add(nine);

add(four);

add(five);

add(six);

add(one);

add(two);

add(three);

add(zero);

add(tzero);

add(plus);

add(sub);

add(mul);

add(div);

add(point);

add(equal);

add(ce);

}

}

//计算器主类

publicclassCalculatorextendsJFrameimplementsActionListener{

Resultresult=newResult();//定义text的面板

Number_Keynumber_key=newNumber_Key();//定义按钮面板

booleancom=false;//当单击按钮+、-、*、/时,com=true

inti=0;//当i=0时,说明我们是第一次输入,字符串sum不会累加

Stringsum="";//存放text的内容

doubletotal=0;//+、-、*、/的代号分别是1、2、3、4

intsymbol=0;

Calculator(){

super("Calculator");//设定标题

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设定关闭窗体时退出程序

JPanelpane=newJPanel();//定义主面板

pane.setLayout(newBorderLayout());

pane.add(result,BorderLayout.NORTH);

pane.add(number_key,BorderLayout.SOUTH);

number_key.one.addActionListener(this);//对1按钮添加监听事件

number_key.two.addActionListener(this);//对2按钮添加监听事件

number_key.three.addActionListener(this);//对3按钮添加监听事件

number_key.four.addActionListener(this);//对4按钮添加监听事件

number_key.five.addActionListener(this);//对5按钮添加监听事件

number_key.six.addActionListener(this);//对6按钮添加监听事件

number_key.seven.addActionListener(this);//对7按钮添加监听事件

number_key.eight.addActionListener(this);//对8按钮添加监听事件

number_key.nine.addActionListener(this);//对9按钮添加监听事件

number_key.zero.addActionListener(this);//对0按钮添加监听事件

number_key.ce.addActionListener(this);//对置零键按钮添加监听事件

number_key.plus.addActionListener(this);//对+按钮添加监听事件

number_key.equal.addActionListener(this);//对=按钮添加监听事件

number_key.sub.addActionListener(this);//对-按钮添加监听事件

number_key.mul.addActionListener(this);//对*按钮添加监听事件

number_key.div.addActionListener(this);//对/按钮添加监听事件

number_key.tzero.addActionListener(this);//对00按钮添加监听事件

number_key.point.addActionListener(this);//对.按钮添加监听事件

setContentPane(pane);

pack();//初始化窗体大小为正好乘方所有按钮

}

//各个触发的事件

publicvoidactionPerformed(ActionEvente){

/*如果是单击数字按钮那么先要判断是否在此之前单击了+、-、*、、、=、如果是,那么com=true,如果没有,com=false;

或者是否单击数字键,如果是,i=1,如果没有,i=0*/

if(e.getSource()==number_key.one){

if(com||i==0){

result.text.setText("1");

com=false;

i=1;

}

else{

sum=result.text.getText();

result.text.setText(sum+"1");

}

}

elseif(e.getSource()==number_key.two){

if(com||i==0){

result.text.setText("2");

com=false;

i=1;

}

else{

sum=result.text.getText();

result.text.setText(sum+"2");

}

}

elseif(e.getSource()==number_key.three){

if(com||i==0){

result.text.setText("3");

com=false;

i=1;

}

else{

sum=result.text.getText();

result.text.setText(sum+"3");

}

}

elseif(e.getSource()==number_key.four){

if(com||i==0){

result.text.setText("4");

com=false;

i=1;

}

else{

sum=result.text.getText();

result.text.setText(sum+"4");

}

}

elseif(e.getSource()==number_key.five){

if(com||i==0){

result.text.setText("5");

com=false;

i=1;

}

else{

sum=result.text.getText();

result.text.setText(sum+"5");

}

}

elseif(e.getSource()==number_key.six){

if(com||i==0){

result.text.setText("6");

com=false;

i=1;

}

else{

sum=result.text.getText();

result.text.setText(sum+"6");

}

}

elseif(e.getSource()==number_key.seven){

if(com||i==0){

result.text.setText("7");

com=false;

i=1;

}

else{

sum=result.text.getText();

result.text.setText(sum+"7");

}

}

elseif(e.getSource()==number_key.eight){

if(com||i==0){

result.text.setText("8");

com=false;

i=1;

}

else{

sum=result.text.getText();

result.text.setText(sum+"8");

}

}

elseif(e.getSource()==number_key.nine){

if(com||i==0){

result.text.setText("9");

com=false;

i=1;

}

else{

sum=result.text.getText();

result.text.setText(sum+"9");

}

}

/*对于0这一按钮,在此程序中不会出现如0000这样的情况,加的判断条件就是:

如果text中的数值=0,

就要判断在这个数值中是否有"."存在?

如果有,那么就在原来数值基础上添加0;否则保持原来的数值不变*/

elseif(e.getSource()==number_key.zero){

if(com||i==0){

result.text.setText("0");

com=false;

i=1;

}

else{

sum=result.text.getText();

if(Float.parseFloat(sum)>0||Float.parseFloat(sum)<0){

result.text.setText(sum+"0");

}

else{

if(sum.trim().indexOf(".")==-1){

result.text.setText(sum);

}

else{

result.text.setText(sum+"0");

}

}

}

}

elseif(e.getSource()==number_key.ce){

result.text.setText("0");

i=0;

com=true;

}

elseif(e.getSource()==number_key.tzero){

if(com||i==0){

result.text.setText("0");

com=false;

i=1;

}

else{

sum=result.text.getText();

if(Float.parseFloat(sum)>0||Float.parseFloat(sum)<0){

result.text.setText(sum+"00");

}

else{

if(sum.trim().indexOf(".")==-1){

result.text.setText(sum);

}

else{

result.text.setText(sum+"00");

}

}

}

}

/*不让一个数值中出现两个小数点。

具体做法是:

判断是否已经存在".",存在就不添加,不存在就添加*/

elseif(e.getSource()==number_key.tzero){

if(com||i==0){

result.text.setText("0");

com=false;

i=1;

}

else{

if(sum.trim().indexOf(".")==-1){

result.text.setText(sum+".");

}

else{

result.text.setText(sum);

}

}

}

//获得单击+之前的数值

elseif(e.getSource()==number_key.plus){

com=true;

i=0;

total=Double.parseDouble(result.text.getText());

symbol=1;

}

//获得单击-之前的数值

elseif(e.getSource()==number_key.sub){

com=true;

i=0;

total=Double.parseDouble(result.text.getText());

symbol=2;

}

//获得单击*之前的数值

elseif(e.getSource()==number_key.mul){

com=true;

i=0;

total=Double.parseDouble(result.text.getText());

System.out.println(total);

symbol=3;

}

//获得单击/之前的数值

elseif(e.getSource()==number_key.div){

com=true;

i=0;

total=Double.parseDouble(result.text.getText());

symbol=4;

}

elseif(e.ge

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

当前位置:首页 > 经管营销 > 经济市场

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

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