Java大作业--计算器.doc_第1页
Java大作业--计算器.doc_第2页
Java大作业--计算器.doc_第3页
Java大作业--计算器.doc_第4页
Java大作业--计算器.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JAVA大作业简易计算器 课程名称: Java开发技术 教学班级: B02班 学 院: 信息管理学院 20132014学年第1学期(第 1 册共 1 册)目录1 引言31.1 开发背景31.2 项目目标31.4 计算器的基本情况32技术支持32.1 Applet概述33系统设计及实现43.1 系统功能实现43.2 系统界面设计43.3 系统函数功能说明54 计算器的测试54.1 测试“输入”功能54.2 测试“输出结果”功能74.3 测试“清零功能”功能75 分析与总结85.1 个人总结81 引言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 Window Toolkit, 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 JPanelJButton 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 ActionListenerResult 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|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); /*不让一个数值中出现两个小数点。具体做法是:判断是否已经存在.,存在就不添加,不存在就添加*/ else if(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); /获得单击+之前的数值else if(e.getSource()=number_key.plus)com=true;i=0;total=Double.parseDouble(result.text.getText();symbol=1;/获得单击-之前的数值else if(e.getSource()=number_key.sub)com=true;i=0;total=Double.parseDouble(result.text.getText();symbol=2;/获得单击*之前的数值else if(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论