用JAVA编写的计算器程序的设计报告
计算器java课程设计报告(完整版)

《面向对象程序设计》课程设计报告课程设计题目:计算器****:***专业:信息管理与信息系统班级:1424603****:***2016年 5 月25 日一、课设任务及要求1)课设任务:⑴设计的计算器应用程序可以完成加法、减法、乘法、除法以及取余运算(可以进行浮点数和负数的运算)。
⑵有求倒数、退格和清零功能。
2)创新要求:能进行正切、余弦,以及求平方根、指数(包括对e)、自然对数运算。
3)设计要求①设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。
且有小数点、正负号、求倒数、退格和清零功能。
②课程设计可选用Eclipse、JBuilder、NetBeans等作为开发平台以提高开发效率,通过资料查阅和学习尽可能熟练掌握其中一种集成开发环境。
③认真按时完成课程设计报告,课程设计报告内容包括:设计任务与要求、需求分析、设计思路、详细设计、运行调试与分析讨论和设计体会与小结六个部分。
二、设计思路⑴本应用程序继承自框架类(JFrame),容器Container c采用BorderLayout 边缘布局,将单行文本框加入到“North”区域,包含各种按钮的面板JPanel p加入到”Center”区域。
包含各种按钮的面板JPanel p 采用3行6列的网格布局,然后将数字按钮和运算符按钮以及控制按钮用一个for循环添加到面板中同时注册按钮事件监听器。
如:Button b=new Button();b.addActionListener(事件监听器);⑵事件监听器中的事件处理方法void actionPerformed(ActionEvent evt)完成主要的按钮事件的处理。
事件处理分以下几种情况:数字按钮事件(”0”,”1”,”2”…”8”,”9”)、运算符按钮事件(”+”,”-“,”*”,”/”,”%”)、正负号按钮事件(”+/-“)、小数点按钮事件(”.”)、等号按钮事件(”=”)、求倒按钮事件(”求倒”)、退格按钮事件(”退格”)、清除按钮事件(“C”) 、正切(tan)、余弦(cos),以及求平方根(sqrt)、指数(pow)、对e的指数(exp)、对数运算(log)。
java 计算器实验报告

java 计算器实验报告Java计算器实验报告一、引言计算器是我们日常生活和学习中经常使用的工具之一。
它可以帮助我们进行简单的数学运算,提高计算效率。
在本实验中,我们将使用Java编程语言设计并实现一个简单的计算器。
二、实验目的1. 学习Java编程语言的基本语法和数据类型;2. 掌握Java图形用户界面(GUI)的设计和实现;3. 熟悉计算器的基本功能和运算规则。
三、实验步骤1. 界面设计在Java中,我们可以使用Swing库来设计和实现GUI界面。
首先,我们创建一个窗口对象,并设置窗口的标题、大小和布局。
然后,我们在窗口中添加文本框和按钮,用于显示计算结果和接收用户输入。
2. 功能实现计算器的基本功能包括加法、减法、乘法和除法运算。
我们可以通过监听按钮点击事件,获取用户输入的数字和操作符,然后进行相应的运算,并将结果显示在文本框中。
3. 异常处理在进行计算过程中,可能会出现一些异常情况,例如除数为零或输入非法字符等。
为了保证程序的健壮性,我们需要对这些异常进行处理,并给出相应的提示信息。
4. 测试和优化完成代码编写后,我们需要进行测试和优化。
通过输入一系列测试用例,检查计算器是否能够正确处理各种情况,并对可能存在的bug进行修复和优化。
四、实验结果经过多次测试和优化,我们的计算器程序已经能够正确地进行加减乘除运算,并能够处理各种异常情况。
用户友好的界面设计和清晰的提示信息,使得计算器易于使用和操作。
五、实验总结通过本次实验,我学习了Java编程语言的基本语法和数据类型,并且掌握了Java图形用户界面(GUI)的设计和实现方法。
通过实践,我深入理解了计算器的基本功能和运算规则,并学会了如何处理异常情况。
此外,我还培养了代码编写、测试和优化的能力,提高了自己的编程水平。
六、实验感想本次实验让我更加熟悉了Java编程语言,并且提高了我的代码设计和编程能力。
通过自己动手实现一个计算器,我对计算机科学的理论知识有了更深入的理解,并且增强了我的实践能力。
java计算器设计实验报告

java计算器设计实验报告《Java计算器设计实验报告》摘要:本实验报告基于Java语言,设计了一个简单的计算器。
通过使用面向对象的编程方法,实现了基本的加、减、乘、除运算,并且实现了用户界面的交互操作。
本实验报告详细介绍了计算器的设计思路、实现过程和代码结构,并对实验结果进行了分析和总结。
1. 引言计算器是人们日常生活中常用的工具之一,它能够帮助人们进行简单的数学运算。
随着计算器的普及和发展,计算器的功能也越来越丰富,例如科学计算器、金融计算器等。
本实验旨在通过使用Java语言,设计一个简单的计算器,以加深对面向对象编程的理解和应用。
2. 设计思路在设计计算器时,首先需要确定计算器的功能需求,包括加法、减法、乘法、除法等基本运算。
其次,需要考虑用户界面的设计,使用户能够方便地输入数字和选择运算符。
最后,需要考虑计算器的实现方式,包括数据结构的选择、算法的设计等。
3. 实现过程在本实验中,我们使用Java语言和Swing库来实现计算器的设计。
首先,我们创建一个Calculator类来处理计算器的逻辑操作,包括加法、减法、乘法、除法等运算。
然后,我们创建一个CalculatorUI类来处理用户界面的设计,包括数字按钮、运算符按钮和显示屏的设计。
最后,我们将Calculator类和CalculatorUI类进行整合,实现一个完整的计算器。
4. 代码结构以下是计算器的主要代码结构:Calculator类:- add(double a, double b):加法运算- subtract(double a, double b):减法运算- multiply(double a, double b):乘法运算- divide(double a, double b):除法运算CalculatorUI类:- createNumberButton(int number):创建数字按钮- createOperatorButton(String operator):创建运算符按钮- createDisplayScreen():创建显示屏Main类:- main(String[] args):主函数,启动计算器界面5. 实验结果分析通过实验,我们成功地实现了一个简单的计算器,用户能够输入数字并进行加、减、乘、除等运算。
java计算器设计报告

1
目录
摘要.............................................................................................................1 1 概述..........................................................................................................3
5
jButton4.addActionListener(this); pnl.add(jButton4); jButton5=new JButton("5"); jButton5.addActionListener(this); pnl.add(jButton5); jButton6=new JButton("6"); jButton6.addActionListener(this); pnl.add(jButton6); jButtonJIA=new JButton("+"); jButtonJIA.addActionListener(this); pnl.add(jButtonJIA); jButton7=new JButton("7"); jButton7.addActionListener(this); pnl.add(jButton7); jButton8=new JButton("8"); jButton8.addActionListener(this); pnl.add(jButton8); jButton9=new JButton("9"); jButton9.addActionListener(this); pnl.add(jButton9); jButtonJIAN=new JButton("-"); jButtonJIAN.addActionListener(this); pnl.add(jButtonJIAN); jButton0=new JButton("0"); jButton0.addActionListener(this); pnl.add(jButton0); jButtonQINGKONG=new JButton("清空"); jButtonQINGKONG.addActionListener(this); pnl.add(jButtonQINGKONG); jButtonCHENG=new JButton("*"); jButtonCHENG.addActionListener(this); pnl.add(jButtonCHENG); jButtonCHU=new JButton("/"); jButtonCHU.addActionListener(this); pnl.add(jButtonCHU); jButtonQUYU=new JButton("%"); jButtonQUYU.addActionListener(this); pnl.add(jButtonQUYU); jButtonPINGFANG=new JButton("平方"); jButtonPINGFANG.addActionListener(this); pnl.add(jButtonPINGFANG); jButtonXIAOSHUDIAN=new JButton("."); jButtonXIAOSHUDIAN.addActionListener(this); pnl.add(jButtonXIAOSHUDIAN);
Java课程设计报告计算器

Java课程设计报告-计算器第一部分设计的内容要求1.1 Windows自带计算器版面设计1.2计算器计算功能算法实现第二部分设计思想2.1根据图形用户界面设计方法设计计算器版面。
①容器类(窗口--Window类,面板--Panel类),框架类--Frame,Button类,Label类,TextField类等类的构造方法,菜单(菜单栏、菜单项)的建立于应用。
②事件处理机制:监听器类WinClose(),actionPerformed()。
2.2计算器计算功能实现,即按钮监听器的实现自定义变量:x,y为操作数,op为操作符。
根据单击按钮不同进行不同的操作,详见处理按钮单击事件方法actionPerformed(ActionEvent e)(计算功能算法)流程图。
第三部分详细设计3.2处理按钮单击事件方法actionPerformed(ActionEvent e)(计算器计算功能算法)流程图:第四部分运行效果图4.1运行初始图:4.2 计算功能测试图:-1+23.4 将textp中数据赋给yN Y单击”1”~”9”将单击数字插入到textp中数据后,并将textp中数据赋给y 将textp赋0,并str.stelength(0);结束4.2 数学分组功能测试图:第五部分心得与体会5.1 Java是一门实践性很强的编程语言,每学习到一个新的知识点应当及时动手编写程序,提高动手能力,加深对语言的理解。
5.2 根据Java图形用户界面设计方法设计计算器版面有很多种设计方法,学习过程中应灵活变通,使版面的设计更简单易懂。
5.3 本次设计的计算器还有不足之处,首先还没有实现科学型的计算功能,其次还没有键盘输入功能,因此还应继续努力,更加完善计算器的功能。
第六部分附录6.1计算器计算功能算法(按钮"="):if(e.getSource()==b26) // "="{str.setLength(0);switch(op){case 0 :if(flag==1)textp.setText(String.valueOf(x+y));else{str.setLength(0);str.append(x+y);fun();}break;case 1 :if(flag==1)textp.setText(String.valueOf(x-y)); else{str.setLength(0);str.append(x-y);fun();}break;case 2 :if(flag==1)textp.setText(String.valueOf(x*y)); else{str.setLength(0);str.append(x*y);fun();}break;case 3 :if(y==0){textp.setText("除数不能为零");str.setLength(0);y=0;}else{if(flag==1)textp.setText(String.valueOf(x/y)); else{str.setLength(0);str.append(x/y);fun();}}break;}}6.2 fun()函数(数学分组功能)public void fun(){flag=0;int t=0;StringBuffer temp;String sstr=str.toString();if(sstr.trim().indexOf("-")==1){temp=new StringBuffer(str.substring(1));t=1;}elsetemp=new StringBuffer(str.substring(0));if(sstr.trim().indexOf(".")==-1){int j=temp.length();for(int i=j;i>3;){temp.insert(i-3,",");i=i-3;}if(t==0)textp.setText(temp.toString());elsetextp.setText('-'+temp.toString());}else{int i=sstr.indexOf('.');StringBuffer s1=new StringBuffer(sstr.substring(0,i));StringBuffer s2=new StringBuffer(sstr.substring(i+1));for(int j=s1.length();j>3;){s1.insert(j-3,",");j=j-3;}if(t==0)textp.setText(s1.toString()+'.'+s2.toString());elsetextp.setText('-'+s1.toString()+'.'+s2.toString());}}。
java计算器设计报告

设计报告课题名称:计算器设计学院:专业班级:学号:学生:指导教师:教务处年月日学生指导教师课题名称JAVA计算器课程设计设计时间设计地点设计目的图形界面设计,熟悉java.awt包中的组件,掌握图形界面设计方法,理解委托事件处理模型。
从而检测对这门课的掌握情况,有助于及时查漏补缺。
1.1功能模块设计以下为标准计算器的基本功能:(1)加法两个数据进行加操作,可以为小数。
(2)减法两个数据进行减操作,可以为负数相减。
(3)乘法两个数相乘操作。
(4)除法两个数相除操作。
(5)开平方对任意一个数进行开方运算,可以是小数。
(6)百分号对任意一个数进行百分号运算。
(7)倒数对任意一个数进行倒数运算。
1.2标准计算器界面(图1-1)图1-1 1.3系统功能图(图1-2)2标准计算器演示(1)启动计算器(图2-1)图2-1(2)加法、乘法运算分别输入9和3然后分别计算其加法、乘法运算(图2-2,图2-3)图2-2(加法运算)图2-3(乘法运算)(3)开平方运算sqrt(图2-4)图2-4(4)百分号运算%(图2-5)图2-5(5)倒数运算1/x(图2-6)图2-63程序设计过程中的问题该设计目前还不太完整全面,在测试时有以下问题:1.在进行aqrt 、%、 1/x这三个运算后再输入数据就在文本框中继续输入,不能重新输入。
需要按下清零键才可继续输入下一数据再进行运算。
2.菜单栏中虽然设计了“查看—标准型、科学型、数字分组”以及“帮助—帮助主题、关于计算器”可是其功能并没有时间。
3.该计算器设计了有关内存的操作,可是并没有达到预期中的效果。
java计算器实验报告

课程设计论文设计题目:java计算器学生姓名:指导教师:专业名称:所在院系:摘要在当今这个网络的时代,java语言在网络编程方面的优势使得网络编程有了更好的选择。
Java语言最大的特点是具有跨平台性,使其不受平台不同的影响,得到了广泛的应用。
该程序是一个图形界面的java 计算器,其界面主要采用了swing包,程序实现了:(1)实现简单加、减、乘、除的运算。
(2)实现除了加、减、乘、除按钮外其他按钮功能。
(3)给软件添加一个编辑、查看、帮助的主菜单。
(4)在数据输入方面,提高程序代码的健壮性,增强其对非法输入数据的识别能力。
(5)科学型计算器与标准计算器之间的菜单切换。
Java的早期版本以来,抽象窗口工具包为用户界面组件提供了平台独立的API。
在AWT中,每个组件都由一个原生的等同组件生成和控制,这个原生组件是由当前的图形窗口系统决定的。
与此相对,Swing 组件经常被描述为轻量级的,因为它们不需要操作系统本身所带窗口工具包的原生资源来生成。
目录第1章概要设计 (1)1.1查找资料 (1)1.2选题 (1)1.3标准型计算器界面设计 (1)1.4本章小节 (3)第2章程序整体设计说明 (4)2.1程序中所用到的变量 (4)2.2程序部分源代码及注释 (4)2.3本章小节 (15)第3章程序运行效果 (16)3.1程序运行主界面 (16)3.2程序中各按钮运行界面 (16)3.3本章小节 (20)第4章设计中遇到的重点及难点 (21)4.1设计中遇到的重点 (21)4.2设计中的遇到的难点 (21)4.3本章小节 (23)第5章本次设计中存在不足与改良方案 (24)5.1本次设计中存在的不足 (24)5.2本次设计的改良方案 (24)5.3本章小节 (24)结论 (25)参考文献 (26)致谢 (27)指导教师评语 (28)答辩委员会评语 (29)第1章概要设计1.1查找资料21世纪,随着社会经济的迅速发展和科学技术的全面进步,人类社会已进入信息和网络时代。
java实验报告计算器

java实验报告计算器Java实验报告:计算器引言:计算器是我们日常生活中常用的工具之一,它能够帮助我们进行各种数学运算,提高计算的效率。
本实验旨在使用Java编程语言设计和实现一个简单的计算器,通过实践来加深对Java语言和面向对象编程的理解。
一、需求分析在设计计算器之前,我们首先需要明确计算器的功能需求。
一个基本的计算器应该包括加、减、乘、除四种基本运算,同时还应该具备清零、取反、百分比等附加功能。
在本实验中,我们将实现这些基本功能,并尝试添加一些额外的功能,如开根号、求平方等。
二、设计思路1. 用户界面设计我们可以使用Java的图形用户界面(GUI)库来设计计算器的界面。
可以使用按钮来表示数字和运算符,使用文本框来显示计算结果。
2. 数据结构设计为了实现计算器的功能,我们需要设计一个合适的数据结构来存储用户输入的数字和运算符。
可以使用栈(Stack)数据结构来实现这个功能。
当用户按下数字按钮时,将数字入栈;当用户按下运算符按钮时,将运算符入栈。
当用户按下等号按钮时,从栈中取出数字和运算符进行计算,并将结果显示在文本框中。
3. 运算逻辑设计计算器的运算逻辑可以使用逆波兰表达式来实现。
逆波兰表达式是一种不需要括号的数学表达式表示方法,通过后缀表达式的形式来表示运算符的优先级。
在计算器中,我们可以使用栈来实现逆波兰表达式的计算。
三、实验步骤1. 创建一个Java项目,并导入GUI库。
2. 设计计算器的用户界面,包括按钮和文本框。
3. 实现按钮的点击事件,根据用户输入的数字和运算符来更新栈的状态。
4. 实现等号按钮的点击事件,从栈中取出数字和运算符进行计算,并将结果显示在文本框中。
5. 实现清零、取反、百分比等附加功能的按钮点击事件。
6. 运行程序,测试计算器的各项功能是否正常。
四、实验结果与分析经过测试,我们的计算器能够正常地进行加、减、乘、除等基本运算,并且附加功能也能正常使用。
通过这个实验,我们不仅学习了Java语言的基本语法和面向对象编程的思想,还加深了对数据结构和逆波兰表达式的理解。
java实验报告——简单计算器的编写五篇范文

java实验报告——简单计算器的编写五篇范文第一篇:java实验报告——简单计算器的编写JAVA实验报告——简单计算器的编写班级:学号:姓名:一、实验目的1.掌握java图形用户界面(GUI)的设计原理和程序结构2.能设计复核问题要求的图形用户界面程序3.掌握常用组件的事件接口4.应用awt和swing组件进行应用程序设计二、实验条件1.计算机一台2.java软件开发环境三、实验步骤1、编写代码:mport java.awt.*;import java.awt.event.*;import javax.swing.*;public class JCalculator extends JFrame implements ActionListener {private static final long serialVersionUID =-***457Lprivate class WindowCloser extends WindowAdapter {public void windowClosing(WindowEvent we){System.exit(0);}}int i;private final String[] str = { “7”, “8”, “9”, “/”, “4”, “5”, “6”, “*”, “1”,“2”, “3”, “-”, “.”, “0”, “=”, “+” };JButton[] buttons = new JButton[str.length]; JButton reset = new JButton(“CE”); JTextField display = new JTextField(“0”);public JCalculator(){super(“Calculator”);JPanel panel1 = new JPanel(new GridLayout(4, 4)); for(i = 0;i < str.length;i++){buttons[i] = new JButton(str[i]);panel1.add(buttons[i]);}JPanel panel2 = new JPanel(new BorderLayout()); panel2.add(“Center”, display);panel2.add(“East”, reset);getContentPane().setLayout(new BorderLayout()); getContentPane().add(“North”, panel2); getContentPane().add(“Center”, panel1);for(i = 0;i < str.length;i++)buttons[i].addActionListener(this);reset.addActionListener(this);display.addActionListener(this); addWindowListener(new WindowCloser()); setSize(800, 800);setVisible(true);pack();}public void actionPerformed(ActionEvent e){ Object target = e.getSource();String label = e.getActionCommand();if(target == reset)handleReset();else if(“0123456789.”.indexOf(label)> 0)handleNumber(label);elsehandleOperator(label);}boolean isFirstDigit = true;public void handleNumber(String key){if(isFirstDigit)display.setText(key);else if((key.equals(“.”))&&(display.getText().indexOf(“.”)< 0))display.setText(display.getText()+ “.”);else if(!key.equals(“.”))display.setText(display.getText()+ key);isFirstDigit = false;}public void handleReset(){display.setText(“0”);isFirstDigit = true;operator = “=”;}double number = 0.0;String operator = “=”;public void handleOperator(String key){if(operator.equals(“+”))number += Double.valueOf(display.getText());else if(operator.equals(“-”))number-= Double.valueOf(display.getText());else if(operator.equals(“*”))number *= Double.valueOf(display.getText());else if(operator.equals(“/”))number /= Double.valueOf(display.getText());else if(operator.equals(“=”))number = Double.valueOf(display.getText());display.setText(String.valueOf(number));operator = key;isFirstDigit = true;}public static void main(String[] args){new JCalculator();} }2、运行结果,见截图计算测试:123+456=579结果正确,程序无误。
java课设计算器报告

java课设计算器报告随着计算机的快速发展,计算机科学正在成为21世纪最重要的学科之一。
同时,作为计算机科学的一部分,Java语言也正在发展壮大。
因此,Java的课程也随之增加,如程序设计,软件工程,数据库,机器学习等等。
作为一名Java专业的学生,在学习课程的同时,我也做了一次课程设计,即实现一个Java算法计算器,如加,减,乘,除以及整数,小数,次方,根号等功能。
首先,我们需要完成一些准备工作,即使用Java语言实现功能。
为了实现上述功能,我们按照以下步骤进行:首先,使用if..else 语句来判断输入是操作数还是操作符;其次,使用switch语句来实现操作;最后,使用System.out.print()函数将结果显示在控制台中。
在实现完上述步骤之后,算法计算器功能就完成了,我们可以开始进行测试。
在测试过程中,我们输入各种操作数和操作符,并检查计算器是否能够正确计算出结果,并且检查算法是否能够实现各种功能,如加减乘除等。
我们最终实现了加减乘除,整数,小数,次方,根号等功能,在测试中结果都正确,证明算法可以实现预期的功能。
最后,总结一下这次实现Java算法计算器的过程:首先,我们使用if..else语句和switch语句来实现功能;其次,我们使用System.out.print()函数来显示结果;最后,在测试中结果都正确,证明算法可以实现预期的功能。
本次实验表明,当我们使用编程语言实现算法时,可以正确地实现我们预期的功能。
本次实验也使我对Java语言有了更深的理解,并且也使我对算法的原理有了更深的认识。
综上所述,我们实现的Java算法计算器可以满足本次实验的需要,具有正确的功能,并且在实验过程中,我们也对算法和Java语言都有了更深的了解。
java计算器设计实验报告

java计算器设计实验报告Java计算器设计实验报告引言:计算器是人们日常生活中常见的工具之一,它能够进行基本的数学运算,方便人们进行快速计算。
本实验旨在通过使用Java编程语言设计一个简单的计算器,探索计算器的基本原理和实现方法。
一、实验目的本实验的主要目的是通过设计和实现一个基本的计算器,加深对Java编程语言的理解和应用。
通过这个实验,我们可以学习到如何设计一个简单的界面,实现基本的计算功能,并对用户输入进行处理和错误处理。
二、实验步骤1. 界面设计首先,我们需要设计一个简单的计算器界面。
可以使用Swing或JavaFX等工具包来实现界面设计。
界面应该包括数字按钮、运算符按钮以及一个显示屏幕等组件。
2. 事件处理接下来,我们需要为每个按钮添加事件处理程序。
当用户点击按钮时,程序应该能够根据按钮的类型执行相应的操作。
例如,当用户点击数字按钮时,程序应该能够将数字显示在屏幕上;当用户点击运算符按钮时,程序应该能够执行相应的运算。
3. 运算逻辑在实现运算逻辑时,我们需要考虑用户的输入和错误处理。
例如,当用户输入非法字符或进行非法操作时,程序应该能够给出相应的提示或错误信息。
同时,我们还需要考虑运算的优先级和顺序,确保计算结果的准确性。
4. 测试和调试完成代码编写后,我们需要进行测试和调试。
通过输入一系列数字和运算符,检查计算器是否能够正确计算并显示结果。
如果发现错误或异常,需要对代码进行调试,找出并解决问题。
三、实验结果经过测试和调试,我们成功实现了一个简单的计算器。
用户可以通过界面上的按钮输入数字和运算符,并在屏幕上显示计算结果。
计算器能够处理用户的输入并进行相应的运算,同时还能够对错误输入进行处理和提示。
四、实验总结通过本实验,我们深入了解了Java编程语言的应用和实践。
通过设计和实现一个简单的计算器,我们掌握了界面设计、事件处理和运算逻辑的基本原理和方法。
同时,我们也学会了如何进行测试和调试,提高了代码的可靠性和稳定性。
java编写的计算器设计报告

java编写的计算器设计报告实验7:综合实验二一、试验目的进一步掌握图形用户界面GUI,了解Swing组件的使用,以及系统提供的该工具的作用,进一步掌握JAVA事件响应机制的原理,更好的掌握面向对象编程的思路。
二、实验要求创建一个界面来实现一个简单的计算器,要求:1、实现最基本的计算器界面,包括:0~9的10个数字按钮,加、减、乘、除、等于5个运算符按钮,一个结果存放的文本区域。
2、实现最基本的加、减、乘、除运算,并能得到正确结果。
3、实现连续的运算,小数点的使用,并考虑各种可能导致异常的情况,将程序作完善;4、可以通过关闭按钮实现关闭窗口。
三、实验步骤、结果1、程序代码:import java.awt.BorderLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent; importjava.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.SwingConstants;public class ZhxCacu extends JFrame implements ActionListener { JPanel jpResult = new JPanel();JPanel jpButton = new JPanel();JTextField jtfResult = new JTextField("0");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");//com代表敲击运算符,digit代表敲击数字键boolean com = false;boolean digit = false;float total=0;String sum="";int symbol=0;int b,c=0;public ZhxCacu(){// 添加结果输入框并设置对齐方式jpResult.setLayout(new BorderLayout());jpResult.add(jtfResult);jtfResult.setEditable(false);jtfResult.setHorizontalAlignment(SwingConstants.RIGHT); //将组件添加到窗体上this.add(jpResult,"North");this.add(jpButton,"Center");// 定义按钮区域布局管理器为网格布局jpButton.setLayout(new GridLayout(6, 3, 10, 10));// 添加各个按钮键jpButton.add(seven);jpButton.add(eight);jpButton.add(nine);jpButton.add(four);jpButton.add(five);jpButton.add(six);jpButton.add(one);jpButton.add(two);jpButton.add(three);jpButton.add(zero);jpButton.add(tzero);jpButton.add(plus);jpButton.add(sub);jpButton.add(mul);jpButton.add(div);jpButton.add(point);jpButton.add(equal);jpButton.add(ce);one.addActionListener(this);//对1按钮添加监听事件two.addActionListener(this);//对2按钮添加监听事件three.addActionListener(this);//对3按钮添加监听事件four.addActionListener(this);//对4按钮添加监听事件five.addActionListener(this);//对5按钮添加监听事件six.addActionListener(this);//对6按钮添加监听事件seven.addActionListener(this);//对7按钮添加监听事件eight.addActionListener(this);//对8按钮添加监听事件nine.addActionListener(this);//对9按钮添加监听事件zero.addActionListener(this);//对0按钮添加监听事件ce.addActionListener(this);//对置零按钮添加监听事件plus.addActionListener(this);//对+按钮添加监听事件equal.addActionListener(this);//对=按钮添加监听事件sub.addActionListener(this);//对-按钮添加监听事件mul.addActionListener(this);//对*按钮添加监听事件div.addActionListener(this);//对/按钮添加监听事件tzero.addActionListener(this);//对00按钮添加监听事件point.addActionListener(this);//对.按钮添加监听事件pack();//初始化窗体大小最合适大小this.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});this.setSize(300,300);this.setVisible(true);}public static void main(String[] args) {// TODO 自动生成方法存根new ZhxCacu();}public void actionPerformed(ActionEvent e) {// TODO 自动生成方法存根//数字if(e.getSource()==one){if(com||digit==false){//第一次敲击数字按钮jtfResult.setText("1");com = false;digit = true;}else{sum = jtfResult.getText()+"1"; jtfResult.setText(sum);}}else if(e.getSource()==two){if(com||digit==false){//第一次敲击数字按钮jtfResult.setText("2");com = false;digit = true;}else{sum = jtfResult.getText()+"2"; jtfResult.setText(sum);}}else if(e.getSource()==two){if(com||digit==false){//第一次敲击数字按钮jtfResult.setText("2");com = false;digit = true;}else{sum = jtfResult.getText()+"2"; jtfResult.setText(sum);}}else if(e.getSource()==two){if(com||digit==false){//第一次敲击数字按钮jtfResult.setText("2");com = false;digit = true;}else{sum = jtfResult.getText()+"2"; jtfResult.setText(sum);}}else if(e.getSource()==two){if(com||digit==false){//第一次敲击数字按钮jtfResult.setText("2");com = false;digit = true;}else{sum = jtfResult.getText()+"2"; jtfResult.setText(sum);}}else if(e.getSource()==three){if(com||digit==false){//第一次敲击数字按钮jtfResult.setText("3");com = false;digit = true;}else{sum = jtfResult.getText()+"3"; jtfResult.setText(sum);}}else if(e.getSource()==four){if(com||digit==false){//第一次敲击数字按钮jtfResult.setText("4");com = false;digit = true;}else{sum = jtfResult.getText()+"4"; jtfResult.setText(sum);}}else if(e.getSource()==five){if(com||digit==false){//第一次敲击数字按钮jtfResult.setText("5");com = false;digit = true;}else{sum = jtfResult.getText()+"5"; jtfResult.setText(sum);}}else if(e.getSource()==six){if(com||digit==false){//第一次敲击数字按钮jtfResult.setText("6");com = false;digit = true;}else{sum = jtfResult.getText()+"6"; jtfResult.setText(sum);}}else if(e.getSource()==seven){if(com||digit==false){//第一次敲击数字按钮jtfResult.setText("7");com = false;digit = true;}else{sum = jtfResult.getText()+"7";jtfResult.setText(sum);}}else if(e.getSource()==eight){if(com||digit==false){//第一次敲击数字按钮jtfResult.setText("8");com = false;digit = true;}else{sum = jtfResult.getText()+"8"; jtfResult.setText(sum);}}else if(e.getSource()==nine){if(com||digit==false){//第一次敲击数字按钮jtfResult.setText("9");com = false;digit = true;}else{sum = jtfResult.getText()+"9"; jtfResult.setText(sum);}}else if(e.getSource()==zero){if(com||digit==false){//第一次敲击数字按jtfResult.setText("0");com = false;digit = true;}else{sum = jtfResult.getText()+"0"; jtfResult.setText(sum);if(Float.parseFloat(sum)!=0){}else{if(b==1){sum = jtfResult.getText()+"0"; jtfResult.setText(sum);}elsejtfResult.setText("0");}}}else if(e.getSource()==tzero){if(com||digit==false){//第一次敲击数字按jtfResult.setText("00");com = false;digit = true;}else{sum = jtfResult.getText()+"00";jtfResult.setText(sum);}}else if(e.getSource()==point){if(com||digit==false){//第一次敲击数字按钮b=1;com = true;digit = false;}else if(c==1); else{b=1;sum = jtfResult.getText()+".";jtfResult.setText(sum);c=1;}}//运算else if(e.getSource()==plus){symbol = 1;c=0;total = Float.parseFloat(jtfResult.getText()); com = true;digit = false;}else if(e.getSource()==sub){symbol = 2;c=0;total = Float.parseFloat(jtfResult.getText()); com = true;digit = false;}else if(e.getSource()==mul){symbol = 3;c=0;total = Float.parseFloat(jtfResult.getText()); com = true;digit = false;}else if(e.getSource()==div){symbol = 4;c=0;total = Float.parseFloat(jtfResult.getText()); com = true;digit = false;}else if(e.getSource()==ce){com = true;digit = false;total=0;sum ="0" ;jtfResult.setText(sum);}//=else if(e.getSource()==equal){com = true;digit = false;switch(symbol){case 1:jtfResult.setText(newFloat(total+Float.parseFloat(jtfResult.getText())).toString());b=0;c=0;b reak;case 2:jtfResult.setText(newFloat(total-Float.parseFloat(jtfResult.getText())).toString());b=0;c=0;break;case 3:jtfResult.setText(newFloat(total*Float.parseFloat(jtfResult.getText())).toString());b=0;c =0;break;case 4:if( Float.parseFloat(jtfResult.getText())==0 ){try{throw new Exception();}catch(Exception a){jtfResult.setText("错误~被除数不能为0,请重新输入:");}}elsejtfResult.setText(newFloat(total/Float.parseFloat(jtfResult.getText())).toString());b=0;c =0;break;}digit=false;total = 0;}}}2、界面:四、实验中的问题以及解决方案:1、问题: 被除数为0解决:抛出异常2、问题: 阻止0、小数点在同一数字中重复出现解决: 设置标志,五、总结:1、进一步了解了项目开发的步骤,思路,以及程序的布局和框架结构,尤其是对JAVA的模块化设计有了更为深入的了解。
java课设计算器报告

java课设计算器报告
今天,我们取得了一个令人惊叹的成果:利用Java语言实现了简单的计算器,它可以进行多种数学运算。
本报告展示了其原理与实施过程,并讨论了开发过程中涉及到的关键思想与核心技术。
本课设计报告是针对使用Java编写的计算器的一个评估报告,以下是详细内容:
1.项目背景:由于现在计算机发展得很快,计算机语言也是随之发展起来,更多的语言可以实现各种功能,而Java语言作为编程语言被广泛应用,本次课设希望能够利用Java编写一个小型计算器。
2.功能实现:通过Java编写简单计算器,实现输入两个参数,然后进行加减乘除的计算。
3.开发过程:
(1)首先要创建一个Java程序,然后定义两个变量,用于存放输入的参数。
(2)然后为程序添加输入的函数,以获取用户输入的参数。
(3)利用if语句判断用户输入的运算符号,根据不同的运算符号,调用相应的函数进行计算。
(4)将计算结果输出,以及耗时等信息。
4.评估结果:本次使用Java实现了一个小型计算器,实现了加减乘除功能。
整个程序的开发流程非常顺利,而且具有良好的可实施性和可维护性,程序运行流畅,计算结果准确,性能极佳。
用JAVA编写的计算器程序的设计报告

目录目 录 (1)1 需求分析 . (1)1.1 计算器的基本功能: 1.1.1 加法运算: 用数字按钮和“ +” 1.1.2 减法运算: 用数字按钮和“ - ”1.1.3 乘法运算: 用数字按钮和“ *” 1.1.4 除法运算: 用数字按钮和“ / ”按钮进行运算; ........... 1 按钮进行运算; ........... 1 按钮进行运算; .. (1)按钮进行运算; ........... 11.2退格键和清零键:用” Backspace ”和” C'按钮实现; .................1.3 计算器的科学计算方法:1.3.1 开方:用数字按钮和“ Sqrt ”按钮进行运算; .......................... 1 1.3.2 百分比:用数字按钮和“ %”按钮进行运算; ........................... 1 1.3.3求倒数:用数字按钮和“ 1/x ”按钮进行运算; (1)2 设计 .......................................2.1 用户界面设计 ...................................2.1.1 该计算器程序的设计:用户界面包括 Swing 组件,不过程序中大都使用的是 AWT 组件.import java.awt.*; (2)2.1.2 在 AWT 组件, ........................................................ 2 2.1.3这个界面设计中包含了两个接口, 单击事件监听器接 ActionListener口和键盘事件监听器接口 (KeyListener). (4)2.1.4程序设计中 , 使用了布局管理 : (4)2.2 概要设计 (4)2.2.1 Calculator 类中的类名是 Calculator. 它的功能是使用图形用户来实现 计算器的界面设计和运算功能以及一些科学运算方法2.2.2 main 主类.中调用了 cal.display来实现计算器的功能3 实现4 测试4.6 用” Backspace ”实现退格功能 : (20)4.7求倒数 :1/4=0.25 (20)4 164.1实现加法运算: 4+12=16 .... 4.2 实现减法运算:22-11=11 .. 4.3 实现乘法运算: 3*9=27 ....17 17 18 64/32=2 ...............................18 4.5 用” C'实现清零功能: (19)4.4实现除法运算1需求分析(该部分主要阐述所要实现的程序具体具有什么样的功能,要细化,可以用图表作为辅助描述手段)该计算器程序除了具备加减乘除基本功能外,还有清零键C和退格键Backspace,和一些部分的科学计算方法,包括开方、求倒、百分比,程序里面也写了键盘事件监听器接口,不过由于时间仓促,还没能设计出来,所以该计算器不能实现此功能。
java课设计算器报告

java课设计算器报告Java是一种跨平台的面向对象的编程语言,使用Java编写的程序可以运行在各种环境(如Windows,Linux, Mac OS)之中。
而在学习Java语言的过程中,设计一个功能比较完善的计算器是学习者比较需要掌握的一项基本技能,故本文的目的在于,设计一个更加完善的Java课设计算器,并介绍如何实现。
二、计算器简介计算器是一种用于计算数字表达式的设备或程序,它可以计算算术表达式(包括加、减、乘、除),可以处理复杂的表达式,并有多种式样,如科学计算器,财务计算器,历史计算器等等。
三、计算器实现(一)编写程序首先,编写一个简单的计算器程序,让它能够实现输入输出的功能。
程序的实现使用Java的swing组件,并设置相应的按钮和文本框。
(二)处理表达式计算器可以接受复杂的表达式,所以必须使用相应的算法来处理表达式,以便得到正确的结果。
(三)计算结果接收到表达式后,依据编写的算法,计算得到所需要的结果,并在结果框中显示出来。
四、计算器应用计算器是日常生活中非常常见且实用的工具,它有助于改善计算准确性以及节约计算时间。
此外,计算器也有多种应用,比如:(一)金融领域计算器可以帮助金融行业的职员进行计算,例如计算投资收益、贷款利息、汇率等;(二)学术领域计算器可以帮助学生进行科学计算,从而更加方便快捷地完成学术研究;(三)数据分析计算器可以帮助对大量数据进行快速分析,从而节省时间和精力,提高工作效率。
五、总结本文基于Java语言设计了一款更加完善的计算器,并介绍了如何实现,它既可以进行简单的计算,也可以处理复杂的表达式,具有很强的实用性。
在实际的应用中,计算器的功能可以帮助我们更快更准确地完成计算,且多种应用,可以更好地提高工作效率。
java 计算器 实验报告

java 计算器实验报告Java计算器实验报告一、引言计算器是我们日常生活中常用的工具之一,它可以帮助我们进行简单的数学运算。
随着计算机技术的发展,计算器也逐渐从传统的机械计算器转变为电子计算器,甚至是手机上的应用程序。
本实验旨在利用Java编程语言设计一个简单的计算器,并通过实现基本的数学运算功能来加深对Java编程的理解和应用。
二、实验目的1. 掌握Java编程语言的基本语法和数据类型;2. 理解面向对象编程的概念和思想;3. 学习如何使用Java编写简单的用户界面;4. 实现基本的数学运算功能。
三、实验方法本实验采用Java编程语言,使用Eclipse集成开发环境进行开发。
主要步骤如下:1. 创建一个Java项目;2. 在项目中创建一个计算器类,实现基本的数学运算功能;3. 使用Swing库设计一个简单的用户界面,包括数字按钮、运算符按钮和显示结果的文本框;4. 将用户界面与计算器类进行关联,实现用户输入和计算结果的交互。
四、实验过程1. 创建Java项目并导入Swing库在Eclipse中创建一个新的Java项目,并导入Swing库,以便后续设计用户界面。
2. 设计用户界面使用Swing库提供的组件,设计一个简单的用户界面。
界面包括数字按钮、运算符按钮和显示结果的文本框。
通过设置按钮的事件监听器,实现用户输入和计算结果的显示。
3. 实现计算器类创建一个名为"Calculator"的Java类,该类包含实现基本数学运算的方法。
例如,实现加法运算的方法"add",减法运算的方法"subtract"等。
4. 关联用户界面和计算器类在用户界面的事件监听器中,调用计算器类的相应方法,实现用户输入和计算结果的交互。
五、实验结果经过以上步骤的设计和实现,我们成功创建了一个简单的Java计算器。
用户可以通过界面上的按钮输入数字和运算符,并在文本框中显示计算结果。
java程序设计报告---设计一个计算器

课程设计课程设计目的设计一个基于Swing的计算器应用程序,完成普通的算术运算。
课程设计要求1.设计的计算器是基于Swing的,可以完成加减乘除和取余运算。
2.增加计算器的日期计算功能,能够计算两个日期之间相距的天数。
(要判断键入的日期格式是否正确,并能正确处理按钮动作事件,同时能够得到正确的计算结果)设计要点主要练习使用布局管理器设计一个计算器的界面,并使用事件监听器处理数据的输入,完成相关的计算。
在面板上可以增加一个算术/日期的转换按钮来选择是普通计算还是日期计算。
以及增加一个清零的按钮CE,用以将显示结果的单行文本域清空,同时将各个参数设置为默认值。
二、总体方案设计日常生活中经常需要用到计算器,比如科学计算,数值计算,会计业务等等,在Applet 中实现一个精巧的计算器,可以让用户的操作也更方便和快捷。
本项目需要实现一个具有四则运算的计算器,能够实现基本的加、减、乘、除运算,以及其它的辅助功能;界面简洁适用;要提供主要的设计思路、类的设计,本次设计添加转进制等功能。
本应用程序继承自框架(frame),此程序使用frame布局管理器bordelayout,将单行文本加入相应区域,包含各种按纽的面板buttonpanel加入相应区域还可以将进制转换的面板与单行文本框放一块包含各种按纽的面板buttonpanel采用N行N列的网格布局,然后将数字按钮和运算符按钮以及控制按钮添加到面板中,同时注册按钮事件监听器。
布局设计好后再添加按钮事件。
对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。
四、程序的调试与运行结果说明程序功能实现:使用swing组件和awt图形用户界面以及BroadLayout布局管理器。
通过在按钮的单击事件处理方法中调用类的成员方法calculator()来进行简易计算器的各种运算,并正确实现运算功能。
Java计算器课程设计报告

石家庄职业技术学院课程设计报告计算器应用程序学生姓名:指导教师:系别:专业:年级:论文提交时间:年月日目录一概述 (3)二总体方案设计 (4)三详细设计 (5)四程序的调试与运行结果说明 (7)五课程设计总结 (9)六附录 (10)一概述1.程序具备的功能:(1)使用图形用户界面:一个文本框;0-9数字按钮;加、减、乘、除运算符;“等于”符号;复位按钮;(2)完成整数、实数的四则运算(加、减、乘、除);(3)通过按钮点击实现数据的复位(清零);(4)实数运算中小数位的精度一致。
2.课程设计的主要设计思想对于此计算器程序,首先要设计其GUI界面,总体界面有一个文本框,18个按钮,总体界面用BorderLayout布局。
文本框放置在最NORTH,然后0到9以及+,-,*,/的按钮放置到一个面板Panel中,添加到整体布局的CENTER,界面设计完成。
布局设计好后再添加按钮事件。
对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。
在进行加、减、乘、除计算时要把点击加、减、乘、除按钮之前的数值保存下来,运算时是这个被保存下来的数值和文本框中的数值加、减、乘、除。
二总体方案设计1.界面设计界面设计要求用GUI,界面设计中有用到swing组件的TextField和Button,用到awt中的BorderLayout和GridLayout布局管理方式,其图形界面如下:2.功能介绍这是计算器中的一种:简单计算器,本项目用到了Java中的GUI界面和swing 组件以及awt布局,所以简单易用,它能完成如下的几个小功能:点击按钮中的数字键和运算符键就能进行简单的加、乘、乘、除求模四则运算;还能通过用户自己在文本框中输入数字,进行简单运算;如果输入有误时可以按Clear撤销后重新输入新数据三详细设计程序流程图如下:部分代码展示及说明:这段代码主要是对程序的主框架进行相应的设置。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录目录 (1)1 需求分析 (1)1.1 计算器的基本功能: (1)1.1.1 加法运算:用数字按钮和“+”按钮进行运算; (1)1.1.2 减法运算:用数字按钮和“-”按钮进行运算; (1)1.1.3 乘法运算:用数字按钮和“*”按钮进行运算; (1)1.1.4 除法运算:用数字按钮和“/”按钮进行运算; (1)1.2 退格键和清零键: 用”Backspace”和”C”按钮实现; (1)1.3 计算器的科学计算方法: (1)1.3.1 开方:用数字按钮和“Sqrt”按钮进行运算; (1)1.3.2 百分比:用数字按钮和“%”按钮进行运算; (1)1.3.3 求倒数:用数字按钮和“1/x”按钮进行运算; (1)2 设计 (2)2.1 用户界面设计 (2)2.1.1 该计算器程序的设计:用户界面包括Swing组件,不过程序中大都使用的是AWT组件. import java.awt.*; (2)2.1.2 在AWT组件, (2)2.1.3 这个界面设计中包含了两个接口,单击事件监听器接ActionListener口和键盘事件监听器接口(KeyListener). (4)2.1.4 程序设计中,使用了布局管理: (4)2.2 概要设计 (4)2.2.1 Calculator类中的类名是Calculator.它的功能是使用图形用户来实现计算器的界面设计和运算功能以及一些科学运算方法. (4)2.2.2 main主类.中调用了cal.display来实现计算器的功能 . (4)3 实现 (4)4 测试 (16)4.1 实现加法运算:4+12=16 (17)4.2 实现减法运算:22-11=11 (17)4.3 实现乘法运算:3*9=27 (18)4.4 实现除法运算:64/32=2 (18)4.5 用”C’实现清零功能: (19)4.6 用”Backspace”实现退格功能: (20)4.7 求倒数:1/4=0.25 (20)5 总结和体会............................................... 错误!未定义书签。
1需求分析(该部分主要阐述所要实现的程序具体具有什么样的功能,要细化,可以用图表作为辅助描述手段)该计算器程序除了具备加减乘除基本功能外,还有清零键C和退格键Backspace,和一些部分的科学计算方法,包括开方、求倒、百分比,程序里面也写了键盘事件监听器接口,不过由于时间仓促,还没能设计出来,所以该计算器不能实现此功能。
1.1计算器的基本功能:1.1.1加法运算:用数字按钮和“+”按钮进行运算;1.1.2减法运算:用数字按钮和“-”按钮进行运算;1.1.3乘法运算:用数字按钮和“*”按钮进行运算;1.1.4除法运算:用数字按钮和“/”按钮进行运算;1.2退格键和清零键: 用”Backspace”和”C”按钮实现;1.3计算器的科学计算方法:1.3.1开方:用数字按钮和“Sqrt”按钮进行运算;1.3.2百分比:用数字按钮和“%”按钮进行运算;1.3.3求倒数:用数字按钮和“1/x”按钮进行运算;2设计(该部分主要要说明,在使用Java实现该程序前考虑的内容,主要包括下面两部分:用户界面设计和概要设计(这部分可简单看作是类设计))。
2.1用户界面设计(用图或文字阐述你的界面如何设计,如:包括哪些部分,使用什么样的布局管理器等)2.1.1该计算器程序的设计:用户界面包括Swing组件,不过程序中大都使用的是AWT组件. import java.awt.*;import java.awt.event.*;import javax.swing.*;2.1.2在AWT组件,(1)使用了面板和按钮:Panel p1,p2,p3,p4,p5,p6;Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b0;ButtonbDiv,bSqrt,bMulti,bMinus,bPercent,bPlus,bReciprocal,bEqual,bDot,bNegative;Button bBackspace,bCE,bC,bMR,bMS,bMC,bM;(2)界面设计也包括了AWT的委托事件模型,该程序设计在java.awt.event包中定义了窗口事件类public void windowClosing(WindowEvent e){System.exit(0);}单击事件类.public void actionPerformed(ActionEvent e){//key 0 to 9if(this.keyAvailable && e.getActionCommand().length()==1 &&e.getActionCommand().compareTo("0")>=0 &&e.getActionCommand().compareTo("9")<=0){if(this.isTempNowInput){this.dNowInput=0;this.isTempNowInput=false;}this.nBitsNum++;if(this.alreadyHaveDot==false)this.dNowInput=this.dNowInput*10+Double.parseDouble(e.getActionCommand()); else{double temp=Double.parseDouble(e.getActionCommand());for(int i=this.n;i<0;i++){temp*=0.1;}this.dNowInput+=temp;this.n--;}this.tf1.setText(Double.toString(this.dNowInput));}在程序中也注册了事件监听器,里面包含了事件处理方法./*add(b1);add(b2);add(b3);add(b4);add(b5);add(b6);add(b7);add(b8);add(b9);add(b0);*/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);2.1.3这个界面设计中包含了两个接口,单击事件监听器接ActionListener口和键盘事件监听器接口(KeyListener).public class Calculator extends WindowAdapter implements ActionListener, KeyListener2.1.4程序设计中,使用了布局管理:(1)用流布局管理器(FlowLayout)设置面板p4=new Panel(new FlowLayout());p5=new Panel(new FlowLayout());p6=new Panel(new FlowLayout());(2)用边布局管理器(BorderLayout)设置计算器容器北西组件的大小:f.setLayout(new BorderLayout(4,4));f.add(p5,BorderLayout.NORTH);`f.add(p4,BorderLayout.CENTER);f.add(p3,BorderLayout.WEST);(3)用网格布局管理器(GridLayout)设置面板p1=new Panel(new GridLayout(1,3,5,5));p2=new Panel(new GridLayout(4,5,5,5));p3=new Panel(new GridLayout(5,1,5,5));2.2概要设计该部分主要阐述整个程序包括哪些类,各个类的类名、功能,以及各类中具有什么样的public成员方法(方法访问修饰符、返回值类型、名字、参数列表、方法的功能),以及这些类的对象之间有什么样的关系(或类和类之间有什么关系,即,函数调用关系)。
计算器的整个程序包括:Calculator类和一个main主类.2.2.1Calculator类中的类名是Calculator.它的功能是使用图形用户来实现计算器的界面设计和运算功能以及一些科学运算方法.(1)在Calculator类中具有设置计算器界面布局和颜色的成员方法,使用了两个接口单击事件监听器接ActionListener口和键盘事件监听器接口(KeyListener).(2)返回值类型是布尔类型.2.2.2main主类.中调用了cal.display来实现计算器的功能 .3实现(程序的实现代码)import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Calculator extends WindowAdapter implements ActionListener, KeyListener{double dResult=0;double dNowInput=0;double dMemory;int n=0;int nOperation=1;int nBitsNum=0;char ch;boolean alreadyHaveDot=false;boolean keyAvailable=true;boolean alreadyClickedEqueal=false;boolean isTempNowInput=false;JFrame f;Panel p1,p2,p3,p4,p5,p6;TextField tf1,tf2;Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b0;ButtonbDiv,bSqrt,bMulti,bMinus,bPercent,bPlus,bReciprocal,bEqual,bDot,bNegative; Button bBackspace,bCE,bC,bMR,bMS,bMC,bM;public void display(){f=new JFrame("Calculator");f.setForeground(Color.BLUE);f.setSize(290,223);f.setLocation(220,220);f.setBackground(Color.PINK);f.setResizable(false);f.setLayout(new BorderLayout(4,4));p1=new Panel(new GridLayout(1,3,5,5));p2=new Panel(new GridLayout(4,5,5,5));p3=new Panel(new GridLayout(5,1,5,5));p4=new Panel(new FlowLayout());p5=new Panel(new FlowLayout());p6=new Panel(new FlowLayout());p4.add(p1);p4.add(p2);tf1=new TextField(35);tf1.setText("0.");tf1.setEditable(false);p5.add(tf1);f.add(p5,BorderLayout.NORTH);f.add(p4,BorderLayout.CENTER);f.add(p3,BorderLayout.WEST); tf1.addKeyListener(this);b1=new Button("1");b2=new Button("2");b3=new Button("3");b4=new Button("4");b5=new Button("5");b6=new Button("6");b7=new Button("7");b8=new Button("8");b9=new Button("9");b0=new Button("0");b1.setForeground(Color.BLUE); b2.setForeground(Color.BLUE); b3.setForeground(Color.BLUE); b4.setForeground(Color.BLUE); b5.setForeground(Color.BLUE); b6.setForeground(Color.BLUE); b7.setForeground(Color.BLUE); b8.setForeground(Color.BLUE); b9.setForeground(Color.BLUE); b0.setForeground(Color.BLUE);/*add(b1);add(b2);add(b3);add(b4);add(b5);add(b6);add(b7);add(b8);add(b9);add(b0);*/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);b1.addKeyListener(this);b2.addKeyListener(this);b3.addKeyListener(this);b4.addKeyListener(this);b5.addKeyListener(this);b6.addKeyListener(this);b7.addKeyListener(this);b8.addKeyListener(this);b9.addKeyListener(this);b0.addKeyListener(this);bDiv=new Button("/");bSqrt=new Button("sqrt");bMulti=new Button("*");bMinus=new Button("-");bPercent=new Button("%");bPlus=new Button("+");bReciprocal=new Button("1/x");bEqual=new Button("=");bDot=new Button(".");bNegative=new Button("+/-");bDiv.setForeground(Color.RED);bSqrt.setForeground(Color.RED);bMulti.setForeground(Color.RED);bMinus.setForeground(Color.RED);bPercent.setForeground(Color.RED);bPlus.setForeground(Color.RED);bReciprocal.setForeground(Color.RED); bEqual.setForeground(Color.RED);bDot.setForeground(Color.RED);bNegative.setForeground(Color.RED);/*add(bDiv);add(bSqrt);add(bMulti);add(bMinus);add(bPercent);add(bPlus);add(bReciprocal);add(bEqual);add(bDot);add(bNegative);*/bDiv.addActionListener(this);bSqrt.addActionListener(this);bMulti.addActionListener(this);bMinus.addActionListener(this);bPercent.addActionListener(this);bPlus.addActionListener(this);bReciprocal.addActionListener(this); bEqual.addActionListener(this);bDot.addActionListener(this);bNegative.addActionListener(this); bDiv.addKeyListener(this);bSqrt.addKeyListener(this);bMulti.addKeyListener(this);bMinus.addKeyListener(this);bPercent.addKeyListener(this);bPlus.addActionListener(this);bReciprocal.addKeyListener(this);bEqual.addKeyListener(this);bDot.addKeyListener(this);bNegative.addKeyListener(this);p2.add(b7);p2.add(b8);p2.add(b9);p2.add(bDiv);p2.add(bSqrt);p2.add(b4);p2.add(b5);p2.add(b6);p2.add(bMulti);p2.add(bPercent);p2.add(b1);p2.add(b2);p2.add(b3);p2.add(bMinus);p2.add(bReciprocal);p2.add(b0);p2.add(bNegative);p2.add(bDot);p2.add(bPlus);p2.add(bEqual);bBackspace=new Button("Backspace");bCE=new Button("CE");bC=new Button("C");bBackspace.setForeground(Color.GREEN); bCE.setForeground(Color.BLACK);bC.setForeground(Color.BLACK);/*add(bBackspace);add(bCE);add(bC);*/bBackspace.addActionListener(this);bCE.addActionListener(this);bC.addActionListener(this);bBackspace.addKeyListener(this);bCE.addKeyListener(this);bC.addKeyListener(this);p1.add(bBackspace);p1.add(bCE);p1.add(bC);tf2=new TextField(2);tf2.setEnabled(false);tf2.setBackground(Color.PINK);bMC=new Button("MC");bMR=new Button("MR");bMS=new Button("MS");bM=new Button("M+");bMC.setForeground(Color.BLUE);bMR.setForeground(Color.BLUE);bMS.setForeground(Color.BLUE);bM.setForeground(Color.BLUE);tf2.addKeyListener(this);/*add(MC);add(MR);add(MS);add(M);*/bMC.addActionListener(this);bMR.addActionListener(this);bMS.addActionListener(this);bM.addActionListener(this);bMC.addKeyListener(this);bMR.addKeyListener(this);bMS.addKeyListener(this);bM.addKeyListener(this);p6.add(tf2);p3.add(p6);p3.add(bMC);p3.add(bMR);p3.add(bMS);p3.add(bM);f.setVisible(true);f.addWindowListener(this);}public void actionPerformed(ActionEvent e){//key 0 to 9if(this.keyAvailable && e.getActionCommand().length()==1 && e.getActionCommand().compareTo("0")>=0 && e.getActionCommand().compareTo("9")<=0){if(this.isTempNowInput){this.dNowInput=0;this.isTempNowInput=false;}this.nBitsNum++;if(this.alreadyHaveDot==false)this.dNowInput=this.dNowInput*10+Double.parseDouble(e.getActionCommand()); else{double temp=Double.parseDouble(e.getActionCommand());for(int i=this.n;i<0;i++){temp*=0.1;}this.dNowInput+=temp;this.n--;}this.tf1.setText(Double.toString(this.dNowInput));}// key dotif(this.keyAvailable && e.getActionCommand()=="."){if(this.alreadyHaveDot==false){this.nBitsNum++;this.alreadyHaveDot=true;this.n=-1;}}//key "+","-","*","/"if(this.keyAvailable && e.getActionCommand()=="+" || e.getActionCommand()=="-" || e.getActionCommand()=="*" || e.getActionCommand()=="/") {if(this.alreadyClickedEqueal){this.dNowInput=this.dResult;this.isTempNowInput=true;}else{switch(this.nOperation){case 1: this.dResult+=this.dNowInput; break;case 2: this.dResult-=this.dNowInput; break;case 3: this.dResult*=this.dNowInput; break;case 4:{if(this.dNowInput==0){tf1.setText("除数不能为零");this.keyAvailable=false;} else this.dResult=this.dResult/this.dNowInput;}}if(this.keyAvailable)tf1.setText(Double.toString(this.dResult));this.dNowInput=0;}if(e.getActionCommand()=="+"){this.nOperation=1;}if(e.getActionCommand()=="-"){this.nOperation=2;}if(e.getActionCommand()=="*"){this.nOperation=3;}if(e.getActionCommand()=="/"){this.nOperation=4;}this.nBitsNum=0;this.alreadyClickedEqueal=false;}// key "+/-"if(this.keyAvailable && e.getActionCommand()=="+/-") {this.dNowInput=0-this.dNowInput;tf1.setText(Double.toString(this.dNowInput));}// key "C"if(e.getActionCommand()=="C"){this.nBitsNum=0;this.dResult=0;this.dNowInput=0;this.alreadyHaveDot=false;this.n=0;this.nOperation=1;this.keyAvailable=true;this.alreadyClickedEqueal=false;tf1.setText("0.");{ch='C';}}// key "CE"if(e.getActionCommand()=="CE"){this.nBitsNum=0;this.dNowInput=0;this.alreadyHaveDot=false;this.n=0;this.nOperation=1;this.keyAvailable=true;tf1.setText("0.");}// key "sqrt"if(this.keyAvailable && e.getActionCommand()=="sqrt"){if(this.alreadyClickedEqueal){if(this.dResult>=0){this.dResult=Math.sqrt(this.dResult);tf1.setText(Double.toString(this.dResult)); }else{tf1.setText("函数输入无效");this.keyAvailable=false;}}else{if(this.dNowInput>=0){this.dNowInput=Math.sqrt(this.dNowInput);tf1.setText(Double.toString(this.dNowInput)); }else{tf1.setText("函数输入无效");this.keyAvailable=false;}}}// key "1/x"if(this.keyAvailable && e.getActionCommand()=="1/x"){if(this.dNowInput==0){tf1.setText("除数不能为零");this.keyAvailable=false;}else{this.dNowInput=1/this.dNowInput;tf1.setText(Double.toString(this.dNowInput));}}// key "="if(this.keyAvailable && e.getActionCommand()=="="){this.alreadyClickedEqueal=true;switch(this.nOperation){case 1: this.dResult+=this.dNowInput; break;case 2: this.dResult-=this.dNowInput; break;case 3: this.dResult*=this.dNowInput; break;case 4:{if(this.dNowInput==0){tf1.setText("除数不能为零");this.keyAvailable=false;} else this.dResult=this.dResult/this.dNowInput; }}if(this.keyAvailable)tf1.setText(Double.toString(this.dResult));}// key "MS"if(this.keyAvailable && e.getActionCommand()=="MS"){this.dMemory=this.dNowInput;if(this.dMemory!=0)tf2.setText("M");}// key "MC"if(this.keyAvailable && e.getActionCommand()=="MC"){this.dMemory=0;tf2.setText("");}// key "MR"if(this.keyAvailable && e.getActionCommand()=="MR"){this.dNowInput=this.dMemory;tf1.setText(Double.toString(this.dNowInput));}// key "M+"if(this.keyAvailable && e.getActionCommand()=="M+"){this.dMemory+=this.dNowInput;if(this.dMemory!=0)tf2.setText("M");else tf2.setText("");}// key "%"if(this.keyAvailable && e.getActionCommand()=="%"){this.dNowInput=(this.dResult*this.dNowInput)/100;tf1.setText(Double.toString(this.dNowInput));}// key "Backspace"if(this.keyAvailable && e.getActionCommand()=="Backspace"){if(!this.alreadyClickedEqueal){if(this.dNowInput!=0){if(this.alreadyHaveDot){if(this.n==-1){this.alreadyHaveDot=false;this.n=0;}else{String str,str1;str=tf1.getText();str1=str.substring(0,this.nBitsNum-1);this.nBitsNum--;this.n++;this.dNowInput=Double.parseDouble(str1);tf1.setText(Double.toString(this.dNowInput)); }}else{int temp;temp=(int)(this.dNowInput/10);this.dNowInput=(double)temp;tf1.setText(Double.toString(this.dNowInput));}}}}}public void keyPressed(KeyEvent e){}public void keyReleased(KeyEvent e){}public void keyTyped(KeyEvent e){char ch=e.getKeyChar();System.out.println(ch+" ");}public void processEvent(char ch){}public static void main(String args[]){Calculator cal=new Calculator();cal.display();}public void windowClosing(WindowEvent e){System.exit(0);}}4测试(针对需求分析部分提出的功能和要求进行对应的一项项的测试,并给出测试内容和测试结果)4+12=164.2实现减法运算:22-11=113*9=24.4实现除法运算:64/32=24.5用”C’实现清零功能:4.6用”Backspace”实现退格功:能数:1/4=0.25. . .。