当前位置:文档之家› Java大作业--计算器

Java大作业--计算器

J a v a大作业--计算器-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KIIJAVA大作业简易计算器课程名称: Java开发技术教学班级: B02班学院:信息管理学院2013~2014学年第1学期(第 1 册共 1 册)目录1 引言 (4)1.1 开发背景 (4)1.2 项目目标 (4)1.4 计算器的基本情况 (4)2技术支持 (5)2.1 Applet概述 (5)3系统设计及实现 (5)3.1 系统功能实现 (5)3.2 系统界面设计 (6)3.3 系统函数功能说明 (6)4 计算器的测试 (6)4.1 测试“输入”功能 (6)4.2 测试“输出结果”功能 (8)4.3 测试“清零功能”功能 (8)5 分析与总结 (9)5.1 个人总结 (9)1 引言1.1 开发背景电脑已经深入到日常生活和工作的方方面面,例如文字办公、信息管理、图像处理、游戏娱乐等,尤其是游戏。

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

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

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

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

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

1.3开发环境Eclipse3.5 Java集成开发环境1.4 计算器的基本情况最早的计算工具诞生在中国。

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

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

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

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

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

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

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

2技术支持2.1 Applet概述小应用程序(Applet)是指采用Java创建的基于HTML的程序。

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

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

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

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

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

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

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

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

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

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

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

3系统设计及实现3.1 系统功能实现1. 通过按钮事件来获得用户的输入。

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

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

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

当前输入的是算术符,则计算当前结果total=total运算符text2.通过计算将结果输出到JTextField中。

3.清零功能。

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

计算器系统界面3.3 系统函数功能说明函数功能Result() 显示输入和结果的函数Number_Key() 添加数字键的函数actionPerformed(ActionEvent e) 触发事件setLayout(new BorderLayout()) 设置边框布局的函数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运算符text6附录:import javax.swing.*;import java.awt.*;import java.awt.event.*;//计算器显示结果的窗体class Result extends JPanel{//text显示输入和结果JTextField text=new JTextField("0");Result(){//将输入的数字或得到的结果在text的右边显示text.setHorizontalAlignment(SwingConstants.RIGHT);text.enable(false); //文本框不能编辑setLayout(new BorderLayout()); //设定布局管理器边框布局add(text,BorderLayout.CENTER); //text放置在窗体的中间}}//计算器数字按钮定义面板class Number_Key extends JPanel{JButton zero=new JButton("0"); //数字键0JButton one=new JButton("1"); //数字键1JButton two=new JButton("2"); //数字键2JButton three=new JButton("3"); //数字键3JButton four=new JButton("4"); //数字键4JButton five=new JButton("5"); //数字键5JButton six=new JButton("6"); //数字键6JButton seven=new JButton("7"); //数字键7JButton eight=new JButton("8"); //数字键8JButton nine=new JButton("9"); //数字键9JButton plus=new JButton("+");JButton sub=new JButton("-");JButton mul=new JButton("*");JButton div=new JButton("/");JButton equal=new JButton("=");JButton ce=new JButton("ce"); //置零键JButton point=new JButton(".");JButton tzero=new JButton("00");Number_Key(){//定义布局管理器为网格布局setLayout(new GridLayout(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);}}//计算器主类public class Calculator extends JFrame implements ActionListener{Result result=new Result(); //定义text的面板Number_Key number_key=new Number_Key(); //定义按钮面板boolean com=false; //当单击按钮+、-、*、/ 时,com=trueint i=0; //当i=0时,说明我们是第一次输入,字符串sum不会累加String sum=""; //存放text的内容double total=0; //+、-、*、/的代号分别是1、2、3、4int symbol=0;Calculator(){super("Calculator"); //设定标题setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设定关闭窗体时退出程序JPanel pane=new JPanel(); //定义主面板pane.setLayout(new BorderLayout());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();//初始化窗体大小为正好乘方所有按钮}//各个触发的事件public void actionPerformed(ActionEvent e){/*如果是单击数字按钮那么先要判断是否在此之前单击了+、-、*、、、=、如果是,那么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");}}else if(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");}}else if(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");}}else if(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");}}else if(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");}}else if(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");}}else if(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");}}else if(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");}}else if(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;否则保持原来的数值不变*/else if(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");}}}}else if(e.getSource()==number_key.ce){result.text.setText("0");i=0;com=true;}else if(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");}}}}/*不让一个数值中出现两个小数点。

相关主题