Java大作业--计算器.doc

上传人:豆**** 文档编号:29929786 上传时间:2022-08-02 格式:DOC 页数:28 大小:276.50KB
返回 下载 相关 举报
Java大作业--计算器.doc_第1页
第1页 / 共28页
Java大作业--计算器.doc_第2页
第2页 / 共28页
点击查看更多>>
资源描述

《Java大作业--计算器.doc》由会员分享,可在线阅读,更多相关《Java大作业--计算器.doc(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、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 开发背景电脑已经深入到日常生活和工作的方方面面,例如文字办公、信息管理、图像处理、游戏娱乐

2、等,尤其是游戏。电脑游戏行业经过二十年的发展,已经成为与影视、音乐等并驾齐驱的全球最重要的娱乐产业之一,其年销售额超过好莱坞的全年收入。Java语言作为一种面向对象的编程语言,具有分布式、可移植性、高性能、多线程等特点。对于一名学生来说,在系统的学习了Java后,面对这次的大作业,正好将学过的Java语言中的各种技术综合起来编写小程序。即对自己学过的技能进行一次检验,也能系统的将学过的知识复习巩固。1.2 项目目标开发一个计算器小程序,具有整数和小数的加减乘除功能,数据记忆清除功能。1.3开发环境 Eclipse3.5 Java集成开发环境1.4 计算器的基本情况最早的计算工具诞生在中国。 中

3、国古代最早采用的一种计算工具叫筹策,又被叫做算筹。这种算筹多用竹子制成,也有用木头,兽骨充当材料的约二百七十枚一束,放在布袋里可随身携带。 直到今天仍在使用的珠算盘,是中国古代计算工具领域中的另一项发明,明代时的珠算盘已经与现代的珠算盘几乎相同。 17世纪初,西方国家的计算工具有了较大的发展,英国数学家纳皮尔发明的纳皮尔算筹,英国牧师奥却德发明了圆柱型对数计算尺,这种计算尺不仅能做加减乘除、乘方、开方运算,甚至可以计算三角函数,指数函数和对数函数,这些计算工具不仅带动了计算器的发展,也为现代计算器发展奠定了良好的基础,成为现代社会应用广泛的计算工具。 1642年,年仅19岁的法国伟大科学家帕斯

4、卡引用算盘的原理,发明了第一部机械式计算器,在他的计算器中有一些互相联锁的齿轮,一个转过十位的齿轮会使另一个齿轮转过一位,人们可以像拨电话号码盘那样,把数字拨进去,计算结果就会出现在另一个窗口中,但是只能做加减计算。1694年,莱布尼兹在德国将其改进成可以进行乘除的计算。此后,一直要到20世纪50年代末才有电子计算器的出现。2技术支持2.1 Applet概述小应用程序(Applet)是指采用Java创建的基于HTML的程序。浏览器将其暂时下载到用户的硬盘上,并在Web页打开时在本地运行。小应用程序(Applet)是可通过因特网下载并在接收计算机上运行的一小段程序。小应用程序通常用Java语言编

5、写并运行在浏览器软件中,applet典型用于为万维网网页页面定制或添加交互格式元素。 Applet可以翻译为小应用程序,Java Applet就是用Java语言编写的这样的一些小应用程序,它们可以直接嵌入到网页或者其他特定的容器中,并能够产生特殊的效果。Applet必须运行于某个特定的“容器”,这个容器可以是浏览器本身,也可以是通过各种插件,或者包括支持Applet的移动设备在内的其他各种程序来运行。与一般的Java应用程序不同,Applet不是通过main方法来运行的。在运行时Applet通常会与用户进行互动,显示动态的画面,并且还会遵循严格的安全检查,阻止潜在的不安全因素(例如根据安全策略

6、,限制Applet对客户端文件系统的访问)。 在Java Applet中,可以实现图形绘制,字体和颜色控制,动画和声音的插入,人机交互及网络交流等功能。 Applet还提供了名为抽象窗口工具箱(Abstract Window Toolkit, AWT)的窗口环境开发工具。 AWT利用用户计算机的GUI元素,可以建立标准的图形用户界面,如窗口、按钮、滚动条等等。在网络上有非常多的Applet范例来生动地展现这些功能,读者可以去调阅相应的网页以观看它们的效果。3系统设计及实现3.1 系统功能实现1. 通过按钮事件来获得用户的输入。通过ActionEvent的getSource()得到被激发的按钮,

7、从而获得输入。通过两个标记记忆上一次输入的情况,当前输入的是数字,如果上一次输入的是数字,那么就将这次输入的数字加到原来text的末尾。如果上次输入的是算术符,那么就重置text。当前输入的是算术符,则计算当前结果total=total运算符text2.通过计算将结果输出到JTextField中。3.清零功能。3.2 系统界面设计为了实现所需要的功能,同时又便于使用,计算器系统的界面设计得比较简单,如下图所示。 计算器系统界面3.3 系统函数功能说明 函 数 功 能Result()显示输入和结果的函数Number_Key()添加数字键的函数actionPerformed(ActionEvent

8、 e)触发事件setLayout(new BorderLayout()设置边框布局的函数addActionListener()监听事件getSource()得到被激发的按钮4 计算器的测试以下测试内容都是针对界面中的一些功能进行分类别的测试。4.1 测试“输入”功能(1)当前输入的是数字: (2)当前输入的是运算符+:4.2 测试“输出结果”功能根据上面的:87+2:4.3 测试“清零功能”功能需要计算另一组数据时,需要清零,点击ce: 清零前: 清零后: 5 分析与总结5.1 个人总结在版面布局上定义了两个面板,一个是用来放置和布局所有按钮,用的版面控制器是GridLayout,设为6行3列

9、,并设置了组件与组件之间的约束为10,另一个用来放置。在事件处理中。ActionPerformed是这个程序最重要的函数,每个按钮都与数字、运算符或者功能符一一对应。通过ActionEvent的getSource()得到被激发的按钮,从而获得输入。通过两个标记记忆上一次输入的情况,当前输入的是数字,如果上一次输入的是数字,那么就将这次输入的数字加到原来text的末尾。如果上次输入的是算术符,那么就重置text。当前输入的是算术符,则计算当前结果total=total运算符text6附录:import javax.swing.*;import java.awt.*;import java.awt

10、.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放置在窗体的中间/计算器数字按钮定义面板

11、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); /数字

12、键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 JButt

13、on(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

14、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); /设定标题

15、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按钮添加监

16、听事件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(t

17、his); /对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.addActi

18、onListener(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 vo

19、id 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

20、_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()=numb

21、er_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()=nu

22、mber_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()=

23、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这一按钮,在此程序中不会出现

24、如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(

25、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(su

26、m+.); 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(e.getSour

27、ce()=number_key.mul)com=true;i=0;total=Double.parseDouble(result.text.getText();System.out.println(total);symbol=3;/获得单击/之前的数值else if(e.getSource()=number_key.div)com=true;i=0;total=Double.parseDouble(result.text.getText();symbol=4;else if(e.getSource()=number_key.equal)switch(symbol)case 1:/计算加法dou

28、ble ad=total+Double.parseDouble(result.text.getText();result.text.setText(ad+);i=0;sum=;break;case 2:/计算减法double ad=total-Double.parseDouble(result.text.getText();result.text.setText(String.valueOf(ad);i=0;sum=;break;case 3:/计算乘法double ad=total*Double.parseDouble(result.text.getText();result.text.se

29、tText(ad+);i=0;sum=;break;case 4:/计算除法double ad=total/Double.parseDouble(result.text.getText();result.text.setText(ad+);i=0;sum=;break;System.out.println(com); public static void main(String args) Calculator calculator=new Calculator(); calculator.show(); 28)( ) ) ) . 00) . . ) . 除除: = 0)+ . ) * = 乘

30、算: 00) . . ) . ( . 减算/ = 0=) )( + 加算/ ) ( ) = = )( . 00 = ) = 数前/获 = ) ( ) 00 ) ._ ) . 数的击获 = )( . 0= ) ) . 数前之得 = )( . = 0= =) . = . 数的之单 ) ( . ). . ) . ( = ) . )=| () ) . *添就加不,存否:做。数个中一不 )+ . ) )-) .( )0+ ( . )( 0 ( . ) . = = )0 )= ) _ ) 0=) ) ) )0 ) ( ) = . ( ) ( )0 0 ) = ) . )=| (). = ( *不值来否0上

31、数在就,?存否值这判就00的 如就断加,样0如不序在一0* ) + . ) ) . )0= ) = . ) ( . )( = = )( . )0| () =( . ) + ) . = ) ( )0 ) =) ( )+( )( . = = )( . )| ( ) _ =( ) ( ) . = ) )=|() = . ) + . ) . ) )=| ) . ) . ) . = = = ) . )= |() _ =( )( . )( = = )( . )= () ) . ) + . ) . = ) ) ) . = * 如,是如键单者 没如 么是、+单此否断先字单果) ( 事的各钮有乘正体始/( )

32、( 事事加./) . . 事监钮0/ ( . _ 事监添/ ) _ 事听加按/ ) _ 事监钮-/ ; ( _ 事监钮对 ) ( 事听钮对/; 事监加零置 _ 事听添按/ ( 事听钮按 事事加 ; ._ 事听钮对/) _ 事监添对 ) ._ 事监加 . 事监钮对/; . 事事钮对 ; ( _ 事听添对/ ) _ 事听添 ._ ) ,_ ) )( 面主/ ) 程出体关设; _ 标定/ ; ( 0 、 别代/、/ ; 内的 放 = 累不 字输次我,时 / ; ,/-+击/ ; 面面义 ; _ 面 / ( 主器) ) ) ) ) ) ) ) ) () ) () () () ( ) () ) ) 钮个

33、加),( ( 布网器局定) _ ;0( = ;. = 零 ) ;= = ;/( = ) = - ( = 键数/ ) = 键字/ ; ( 键字 键数 ) ( 键字/ )( 键字 = 键字/ ( = 键数/ ) = 键数 ; = 键数 面定字算中体在 / ; 布布理定/ ) ( 编能框 .) . 显右 在的得的输)( )0 结入示 窗果示*. . *. * 录 运 = 果结计,是输。 就么算的上果末 原字的这么字数入上如是前,的一记记通输而钮的到( 通对能或运字钮每函重程是 理置来用0 间之组设, , 是面的钮所和用一面两上总个总析 后前 点需据组算功能零测 +:功果输试+符是输字是入功入试试测别进些中针容内测的按发( 事( 函函) 事 函键( 函果结( 功 说能统 界统计 示图下单得面系计用于时功需设界 能功中 果算计 运 果前算符是输 重那算入上。尾 来字的次就字是次一,的前,情一上标通输获,按到( 的 通的用件事实能 实计设果的看观应相去,些展动范 的有在等滚按、如面图 _ / . / 标以素元算 _ 户 工开窗) 具口抽了 功交网机入音和动颜体,现可 。)统件客 限,安 0/ . . /

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁