(Java)科学型计算器的开发与实现
- 格式:doc
- 大小:826.50 KB
- 文档页数:41
java课程设计科学计算器。
一、课程目标知识目标:1. 理解Java编程中算术表达式的组成及运算规则;2. 掌握Java中的基本数据类型及其在算术运算中的使用;3. 学会使用Java控制结构和函数实现科学计算器的功能;4. 了解科学计算器中常见的数学函数及其在Java中的实现。
技能目标:1. 能够编写简单的Java程序,实现加、减、乘、除等基本运算;2. 能够运用循环和条件语句,实现科学计算器的逻辑功能;3. 能够利用Java类和对象,设计并实现具有图形用户界面的科学计算器;4. 能够运用调试技巧,找出并修正程序中的错误。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发其探究科学计算器原理的欲望;2. 培养学生严谨、细致的编程习惯,提高其问题解决能力和团队协作能力;3. 培养学生热爱科学、勇于创新的精神,使其认识到编程在科学计算中的重要性。
本课程针对高年级学生,结合Java编程知识,旨在帮助学生掌握科学计算器的核心功能实现。
课程注重实用性,通过设计具体的学习成果,使学生在完成课程后能够独立编写并优化科学计算器程序。
同时,关注学生的情感态度价值观培养,提高其综合素质。
二、教学内容1. Java基本语法与数据类型:回顾Java基本语法规则,重点掌握整型、浮点型等基本数据类型及其在运算中的使用。
- 教材章节:第一章 Java语言概述,第二章 基本数据类型与运算符2. 算术表达式与运算规则:讲解算术表达式的构成,介绍运算符优先级和结合性。
- 教材章节:第二章 基本数据类型与运算符3. Java控制结构:学习顺序、分支和循环结构,实现科学计算器的基本运算功能。
- 教材章节:第三章 控制结构4. 函数的定义与调用:介绍函数的概念,学会编写自定义函数,实现计算器中的特定功能。
- 教材章节:第四章 函数与数组5. 图形用户界面设计:学习Java Swing库,使用其组件设计科学计算器的界面。
- 教材章节:第七章 Java Swing图形用户界面6. 数学函数与运算:介绍科学计算器中常见的数学函数,如三角函数、指数函数等,并在Java中实现。
JAVA科学计算器Java是一种广泛应用于科学计算和数据分析领域的编程语言,拥有强大的数学计算库和丰富的科学计算函数,因此非常适合用于开发科学计算器。
本文将介绍如何使用Java开发一个功能强大的科学计算器。
一、需求分析1.支持基本的四则运算(加、减、乘、除)2.支持高级的数学函数(三角函数、指数函数、对数函数等)3.支持科学计数法(输入和显示均支持科学计数法)4.支持清空功能,删除单个字符功能5.支持键盘输入和界面按钮输入两种方式输入计算表达式二、界面设计1. 界面采用图形用户界面(GUI)设计,使用Swing或JavaFX等界面库进行开发2.使用文本框显示计算结果和表达式3.使用按钮实现数字和运算符的输入4.添加清空按钮和删除按钮5.添加科学计数法开关按钮三、代码实现1. 创建一个继承自JFrame的主窗口类,设置窗口标题、大小和关闭方式```public class ScientificCalculator extends JFrameprivate JTextField outputField;//其他界面组件声明public ScientificCalculatosuper("科学计算器");setSize(400, 600);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//初始化界面组件并添加到窗口//...setVisible(true);}```2. 创建一个继承自JPanel的面板类,用于放置计算器的按钮和文本框```public class CalculatorPanel extends JPanelprivate JTextField outputField;//其他按钮和变量声明public CalculatorPanesetLayout(new BorderLayout();//初始化界面组件并添加到面板//...}```3.在面板类中添加按钮事件监听器,实现按钮的点击响应```public class CalculatorPanel extends JPanel implements ActionListenerprivate JTextField outputField;private JButton[] numberButtons;private JButton[] operatorButtons;//其他按钮和变量声明public CalculatorPanesetLayout(new BorderLayout();//初始化界面组件并添加到面板//...//添加按钮事件监听器for (JButton button : numberButtons)button.addActionListener(this);}for (JButton button : operatorButtons)button.addActionListener(this);}//其他按钮添加监听器//设置文本框只读outputField.setEditable(false);}public void actionPerformed(ActionEvent e)//根据按钮的命令执行相应的操作//...}```4.在按钮事件监听器中实现计算逻辑,调用数学库中的函数完成计算```public void actionPerformed(ActionEvent e)//清空操作outputField.setText("");//删除操作String currentText = outputField.getText(;outputField.setText(currentText.substring(0,currentText.length( - 1));} else//数字或运算符输入}```5.在启动类中创建主窗口对象,并将面板对象添加到主窗口中```public class Mainpublic static void main(String[] args)SwingUtilities.invokeLater(( ->ScientificCalculator calculator = new ScientificCalculator(;calculator.add(new CalculatorPanel();});}```四、测试与优化在开发完成后,需要对科学计算器进行测试,保证其功能正常,并进行优化,确保使用体验良好,例如添加键盘监听器,支持键盘输入,修复可能出现的Bug等。
java科学计算器(进制转换)JAVA综合程序设计与分析一、题目:用java语言编写科学计算器,要求完成加、减、乘、除以及基本函数处理还有数的进制转换。
二、摘要:本计算器可以进行简单的四则运算(加、减、乘、除)但仅限于十进制下,还可以进行(二进制,八进制,十进制)之间的相互转换,还有基本三角函数和平方根,对数等基本数学函数运算三、功能说明:A.运用两个面板的叠加做出界面。
B.通过在按钮的单击事件处理方法中调用类的成员方法calculate ()来进行简易计算器的各种运算,并正确实现运算功能。
C.调用Math包中的方法实现各函数功能。
D.添加菜单条,列出‘选项’、‘进制转换’、‘帮助’等菜单选项,并分别实现‘选项’中‘退出’的功能,通过调用Integer包中的方法实现二进制、八进制的转换,‘帮助'菜单栏中‘用法’的提示对话框。
E.整个程序对话框可实现最小化、最大化、关闭。
四、详细设计package计算器;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Calculator extends Frame implements ActionListener, WindowListener{privateprivateprivate GridBagConstraints constraints;private JTextField displayField; //计算结果显示区private String lastCommand; //保存+,-,*,/,=命令0private double result; //保存计算结果private boolean start; //判断是否为数字的开始private JMenuBar menubar;private JMenuItem m_exit,m2_ejz,m2_bjz;private Dialog dialog;private Label label_dialog;private JButtonbutton_sqrt,button_plusminus,button_CE,button_cancel,butt on_1,button_ 2,button_3,button_4,button_5,button_6,button_7,button_8,but ton_9,button _0,button_plus,button_minus,button_multiply,button_divide,bu tton_point,button_equal,button_log,button_tan,button_cos,button_sin,butt on_exp;public Calculator() //构造方法设置布局、为按钮注册事件监听器{super("Calculator");this.setLocation(240,200);this.setSize(350,300);this.setResizable(true);this.setLayout(new GridLayout(7,1));this.addmyMenu(); //调用成员方法添加菜单displayField=new JTextField(30);this.add(displayField);displayField.setEditable(true);start=true;result=0;lastCommand = "=";JPanel panel0=new JPanel();panel0.setLayout(new GridLayout(1,4,4,4)); JPanel panel1=new JPanel();panel1.setLayout(new GridLayout(1,5,4,4)); this.add(panel1);button_sqrt=new JButton("sqrt");button_plusminus=new JButton("+/-"); button_exp=new JButton("exp");button_CE=new JButton("退格");button_cancel=new JButton("C"); JPanel panel2=new JPanel();panel2.setLayout(new GridLayout(1,5,4,4)); this.add(panel2);button_7=new JButton("7");button_8=new JButton("8");button_9=new JButton("9");button_log=new JButton("log");button_divide=new JButton("/");JPanel panel3=new JPanel();panel3.setLayout(new GridLayout(1,5,4,4)); this.add(panel3);button_4=new JButton("4");button_5=new JButton("5");button_6=new JButton("6");button_tan=new JButton("tan");button_multiply=new JButton("*");JPanel panel4=new JPanel();panel4.setLayout(new GridLayout(1,5,4,4)); this.add(panel4);button_1=new JButton("1");button_2=new JButton("2");button_3=new JButton("3");button_cos=new JButton("cos");button_minus=new JButton("-");JPanel panel5=new JPanel();panel5.setLayout(new GridLayout(1,5,4,4)); this.add(panel5);button_0=new JButton("0");button_point=new JButton(".");button_equal=new JButton("=");button_sin=new JButton("sin");button_plus=new JButton("+");panel1.add(button_sqrt);panel1.add(button_plusminus);panel1.add(button_exp);panel1.add(button_CE);panel1.add(button_cancel);panel2.add(button_7);panel2.add(button_8);panel2.add(button_9);panel2.add(button_log);panel2.add(button_divide);panel3.add(button_4);panel3.add(button_5);panel3.add(button_6);panel3.add(button_tan);panel3.add(button_multiply);panel4.add(button_1);panel4.add(button_2);panel4.add(button_3);panel4.add(button_cos);panel4.add(button_minus);panel5.add(button_0);panel5.add(button_point);panel5.add(button_equal);panel5.add(button_sin);panel5.add(button_plus);button_sqrt.addActionListener(this); button_plusminus.addActionListener(this); button_exp.addActionListener(this); button_CE.addActionListener(this); button_cancel.addActionListener(this); button_7.addActionListener(this);button_8.addActionListener(this);button_9.addActionListener(this);button_log.addActionListener(this); button_divide.addActionListener(this); button_4.addActionListener(this);button_5.addActionListener(this);button_6.addActionListener(this);button_tan.addActionListener(this); button_multiply.addActionListener(this); button_1.addActionListener(this);button_2.addActionListener(this);button_3.addActionListener(this);button_cos.addActionListener(this);button_minus.addActionListener(this);button_0.addActionListener(this);button_point.addActionListener(this);button_equal.addActionListener(this);button_sin.addActionListener(this);button_plus.addActionListener(this);this.addWindowListener(new WinClose()); //注册窗口监听器this.setVisible(true);}private void addmyMenu() //菜单的添加{JMenuBar menubar=new JMenuBar();this.add(menubar);JMenu m1=new JMenu("选项");JMenu m2=new JMenu("进制转换");JMenuItem m1_exit=new JMenuItem("退出");m1_exit.addActionListener(this);JMenuItem m2_ejz=new JMenuItem("二进制");m2_ejz.addActionListener(this);JMenuItem m2_bjz=new JMenuItem("八进制");m2_bjz.addActionListener(this);JMenu m3 = new JMenu(" 帮助");JMenuItem m3_Help = new JMenuItem("用法");m3_Help.addActionListener(this);dialog = new Dialog(this,"提示",true); //模式窗口dialog.setSize(240,80);label_dialog = new Label("",Label.CENTER); //标签的字符串为空,居中对齐dialog.add(label_dialog);dialog.addWindowListener(this); //为对话框注册窗口事件监听器m1.add(m1_exit);menubar.add(m1);m2.add(m2_ejz);m2.add(m2_bjz);menubar.add(m2);m3.add(m3_Help);menubar.add(m3); }public void actionPerformed(ActionEvent e) //按钮的单击事件处理方法{if(e.getSource().equals(button_1)||e.getSource().equals(butto n_2) ||e.getSource().equals(button_3)||e.getSource().equals(button _4)||e.getSource().equals(button_5)||e.getSource().equals(button_6)||e.getSource().equals(button_7)||e.getSource().equals(button_8)||e.getSource().equals(button_9)||e.getSource().equals(button_0)||e.getSource().equals(button_point)||e.getSource().equals(but ton_plusm inus)||e.getSource().equals(button_cancel)||e.getSource().equals(b utton_CE)) { //非运算符的处理方法String input=e.getActionCommand();if (start){displayField.setText("");start=false;if(input.equals("+/-"))displayField.setText(displayField.getT ext()+"-");}if(!input.equals("+/-")){String str=displayField.getText();if(input.equals("退格")) //退格键的实现方法{if(str.length()>0)displayField.setText(str.substring(0,str.length()-1));}else if(input.equals("C")) //清零键的实现方法{displayField.setText("0");start=true;}elsedisplayField.setText(displayField.getT ext()+input);}}else if (e.getActionCommand()=="二进制") //二进制的转换{int n=Integer.parseInt(displayField.getText()); displayField.setText(Integer.toBinaryString(n));}else if (e.getActionCommand()=="八进制") //八进制的转换{int n=Integer.parseInt(displayField.getText()); displayField.setText(Integer.toOctalString(n));}else if (e.getActionCommand()=="退出") //选项中退出的处理方法{System.exit(0);}else if(e.getActionCommand()=="用法") //按下'帮助'菜单栏中用法的处理方法{label_dialog.setT ext("sqrt,exp等键是先输运算符再输数字\");dialog.setLocation(400,250);dialog.setVisible(true);}else//各运算符的识别{String command=e.getActionCommand();if(start){lastCommand=command;}else{calculate(Double.parseDouble(displayField.getText()));lastCommand=command;start=true;}}}public void calculate(double x) //各运算符的具体运算方法{double d=0;if (lastCommand.equals("+")) result+= x;else if (lastCommand.equals("-")) result-=x;else if (lastCommand.equals("*")) result*=x;else if (lastCommand.equals("/")) result/=x;else if (lastCommand.equals("=")) result=x;else if (lastCommand.equals("sqrt")) {d=Math.sqrt(x);result=d;}else if (lastCommand.equals("exp")) {d=Math.exp(x);result=d;}else if (lastCommand.equals("log")) {d=Math.log(x);result=d;}else if (lastCommand.equals("tan")) {d=Math.tan(x);result=d;}else if (lastCommand.equals("cos")){d=Math.cos(x);result=d;}else if (lastCommand.equals("sin")){d=Math.sin(x);result=d;}displayField.setText(""+ result);}public void windowClosing(WindowEvent e){if(e.getSource()==dialog)dialog.setVisible(false); //隐藏对话框elseSystem.exit(0);}public void windowOpened(WindowEvent e) { } public void windowActivated(WindowEvent e) { } public void windowDeactivated(WindowEvent e) { } public void windowClosed(WindowEvent e) { } public void windowIconified(WindowEvent e) { } public void windowDeiconified(WindowEvent e) { } public static void main(String args[]){Calculator calculator=new Calculator();}}class WinClose implements WindowListener{public void windowClosing(WindowEvent e) //单击窗口关闭按钮时触发并执行实现窗口监听器接口中的方法{System.exit(0); //结束程序运行}public void windowOpened(WindowEvent e){}public void windowActivated(WindowEvent e){}public void windowDeactivated(WindowEvent e){}public void windowClosed(WindowEvent e){}public void windowIconified(WindowEvent e){}public void windowDeiconified(WindowEvent e){}}五、程序运行结果1.界面2.基本运算,如54 -12 =42:3.数学函数运算,如9的开平方为3:六、总结与体会总结:(1)通过编写这个相对复杂的程序,让我认识解决实际问题前应现建立模型,再通过建立的模型使问题简单化,从而解决问题。
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具有跨平台的特性,可以在不同的操作系统上运行。
我们还选择了Eclipse作为开发工具,因为它提供了强大的代码编辑和调试功能。
在项目的第一阶段,我们着重于实现基本的数学运算功能。
我们创建了一个Calculator类,其中包含了加法、减法、乘法和除法等方法。
我们使用了面向对象的编程思想,将每个运算符都封装成一个独立的方法,以便于代码的维护和扩展。
在实现基本功能之后,我们开始着手实现一些高级功能。
我们添加了一个开方方法,可以计算一个数的平方根。
我们还添加了一个求幂方法,可以计算一个数的任意次幂。
这些高级功能的实现相对复杂一些,需要使用一些数学库函数和算法。
在开发过程中,我们遇到了一些挑战和困难。
例如,我们在处理除法运算时,需要考虑到除数为零的情况,以避免程序崩溃。
我们还需要处理用户输入错误的情况,例如输入非法字符或表达式格式错误等。
为了解决这些问题,我们使用了异常处理机制和正则表达式等技术。
在项目的最后阶段,我们进行了一系列的测试和调试工作,以确保程序的正确性和稳定性。
我们编写了一些测试用例,对各种情况进行了全面的测试。
我们还进行了性能优化,以提高程序的运行效率和响应速度。
最终,我们成功地完成了这个Java计算器项目。
我们的计算器应用程序具有良好的用户界面和友好的交互体验。
它可以进行各种数学运算,并且在处理异常和错误输入时表现出色。
我们小组成员之间的合作也更加紧密,相互学习和帮助。
通过这个项目的经历,我学到了很多关于Java编程和软件开发的知识和技巧。
我深入了解了面向对象的编程思想和设计模式,学会了使用Java的异常处理机制和正则表达式等技术。
JAVA计算器的与实现Java计算器的实现可以分为以下几个部分:1.用户界面设计- 使用Swing或JavaFX等GUI库实现用户界面,包括数字按钮、操作符按钮和文本框等组件。
-设计布局和样式,使用户界面更加直观和美观。
2.数字按钮和操作符按钮的事件处理-为数字按钮和操作符按钮添加事件监听器。
-当数字按钮被点击时,将对应数字添加到文本框中。
-当操作符按钮被点击时,将对应操作符添加到文本框中。
3.计算逻辑的实现-当用户点击等号按钮时,获取文本框中的表达式。
-解析表达式,判断其中的数字和操作符,并按照优先级计算。
-使用栈数据结构来存储数字和操作符,并按照优先级进行计算。
4.异常处理-对于无效的表达式,如括号不匹配、除数为0等情况,需要进行异常处理。
- 合理地使用try-catch语句块来捕获异常,并向用户显示错误信息。
下面是一个简单的Java计算器的实现示例:```javaimport javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Stack;public class Calculator extends JFrame implements ActionListenerprivate JTextField textField;public CalculatosetTitle("Calculator");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setLayout(new BorderLayout();textField = new JTextField(;textField.setEditable(false);add(textField, BorderLayout.NORTH);JPanel buttonPanel = new JPanel(new GridLayout(4, 4));String[] buttonLabels = {"7", "8", "9", "/","4","5","6","*","1","2","3","-", "0",".","=","+"};for (String label : buttonLabels)JButton button = new JButton(label);button.addActionListener(this);buttonPanel.add(button);}add(buttonPanel, BorderLayout.CENTER);pack(;setLocationRelativeTo(null);setVisible(true);}public void actionPerformed(ActionEvent e)tryString expression = textField.getText(;double result = evaluateExpression(expression); textField.setText(String.valueOf(result));} catch (Exception ex)textField.setText("Error");}} else}}private double evaluateExpression(String expression) Stack<Double> numbers = new Stack<>(;Stack<Character> operators = new Stack<>(;for (int i = 0; i < expression.length(; i++)if (Character.isDigit(expression.charAt(i)))StringBuilder sb = new StringBuilder(;while (i < expression.length( &&Character.isDigit(expression.charAt(i)))sb.append(expression.charAt(i));i++;}i--;numbers.push(Double.parseDouble(sb.toString());} else if (expression.charAt(i) == '(')operators.push(expression.charAt(i));} else if (expression.charAt(i) == ')')while (operators.peek( != '(')evaluate(numbers, operators);}operators.pop(;} else if (expression.charAt(i) == '+' ,expression.charAt(i) == '-'expression.charAt(i) == '*' , expression.charAt(i) == '/') while (!operators.isEmpty( && precedence(operators.peek() >= precedence(expression.charAt(i)))evaluate(numbers, operators);}operators.push(expression.charAt(i));}}while (!operators.isEmpty()evaluate(numbers, operators);}return numbers.pop(;}private void evaluate(Stack<Double> numbers, Stack<Character> operators)double num2 = numbers.pop(;double num1 = numbers.pop(;char operator = operators.pop(;double result = 0;switch (operator)case '+':result = num1 + num2;break;case '-':result = num1 - num2;break;case '*':result = num1 * num2;break;case '/':result = num1 / num2;break;}numbers.push(result);}private int precedence(char operator)if (operator == '+' , operator == '-')return 1;}if (operator == '*' , operator == '/')return 2;}return 0;}public static void main(String[] args)SwingUtilities.invokeLater(( -> new Calculator();}```这个示例中使用了Swing来实现用户界面,通过创建按钮和文本框等组件,以及设置按钮的事件监听器来实现计算器的功能。
java实验报告计算器Java实验报告:计算器引言:计算器是我们日常生活中常用的工具之一,它能够帮助我们进行各种数学运算,提高计算的效率。
本实验旨在使用Java编程语言设计和实现一个简单的计算器,通过实践来加深对Java语言和面向对象编程的理解。
一、需求分析在设计计算器之前,我们首先需要明确计算器的功能需求。
一个基本的计算器应该包括加、减、乘、除四种基本运算,同时还应该具备清零、取反、百分比等附加功能。
在本实验中,我们将实现这些基本功能,并尝试添加一些额外的功能,如开根号、求平方等。
二、设计思路1. 用户界面设计我们可以使用Java的图形用户界面(GUI)库来设计计算器的界面。
可以使用按钮来表示数字和运算符,使用文本框来显示计算结果。
2. 数据结构设计为了实现计算器的功能,我们需要设计一个合适的数据结构来存储用户输入的数字和运算符。
可以使用栈(Stack)数据结构来实现这个功能。
当用户按下数字按钮时,将数字入栈;当用户按下运算符按钮时,将运算符入栈。
当用户按下等号按钮时,从栈中取出数字和运算符进行计算,并将结果显示在文本框中。
3. 运算逻辑设计计算器的运算逻辑可以使用逆波兰表达式来实现。
逆波兰表达式是一种不需要括号的数学表达式表示方法,通过后缀表达式的形式来表示运算符的优先级。
在计算器中,我们可以使用栈来实现逆波兰表达式的计算。
三、实验步骤1. 创建一个Java项目,并导入GUI库。
2. 设计计算器的用户界面,包括按钮和文本框。
3. 实现按钮的点击事件,根据用户输入的数字和运算符来更新栈的状态。
4. 实现等号按钮的点击事件,从栈中取出数字和运算符进行计算,并将结果显示在文本框中。
5. 实现清零、取反、百分比等附加功能的按钮点击事件。
6. 运行程序,测试计算器的各项功能是否正常。
四、实验结果与分析经过测试,我们的计算器能够正常地进行加、减、乘、除等基本运算,并且附加功能也能正常使用。
通过这个实验,我们不仅学习了Java语言的基本语法和面向对象编程的思想,还加深了对数据结构和逆波兰表达式的理解。
Java科学计算器程序代码————————————————————————————————作者:————————————————————————————————日期:计算器布局显示:功能举例:①13+20=33②—7*14=—98:先输入7,再单击—/+将其变成负数,然后依次单击×号、14与=③7!=5040④sin30°=0。
5:先输入30,然后按下′″按钮转换成角度值,再按下sin即可显示结果⑤sqrt(4)=2:利用鼠标点击4后再点击sqrt按键即可显示结果⑥2*π=6.2832……源程序如下:import java.awt。
BorderLayout;import java.awt。
Color;import java.awt.Dimension;import java.awt。
Font;import java.awt。
GridLayout;import java。
awt.event。
ActionEvent;import java.awt。
event.ActionListener;import java.text。
DecimalFormat;import javax。
swing。
BorderFactory;import javax.swing。
ButtonGroup;import javax.swing。
JButton;import javax。
swing.JCheckBoxMenuItem;import javax。
swing。
JFrame;import javax.swing。
JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing。
JPanel;import javax。
swing。
JRadioButtonMenuItem;import javax.swing。
一、实验内容题目:1、设计一个计算器要求:1、使用layout进行布局,使界面更加友好2、实现整数的加减乘除运算(不考虑优先级)二、实验过程(这是实验报告极其重要的内容。
要抓住重点,可以从理论和实践两个方面考虑。
这部分要写明依据什么知识点以及使用方法进行实验以及实验步骤。
不要简单照抄实习指导,更不可写一大堆源代码)二、实验过程1、进行计算器界面的布局:a 、Panel的嵌套布局:主要设置了七个Panel来将界面分成几个部分。
且Panel都是用borderLayout来进行的布局。
如图所示,其中4、5、6、7分别表示Panel4、Panel5、Panel6、Panel7Panel2由Panel4、Panel5组成;Panel3由Panel6、Panel7组成;Panel1由Panel2、Panel3组成;b、(1)、在Panel6添加一个按钮并将border设置成LoweredBevel,设置按钮大小,并给按钮命名(2)、将Panel7的layout 设置成FlowLayout,并添加三个按钮,设置按钮大小,并给按钮命名(3)、将Panel5的layout 设置成gridLayout,并添加四个按钮,设置按钮大小,并给按钮命名(4)、将Panel4的layout 设置成gridLayout,并添加二十个按钮,设置按钮大小,并给按钮命名2、给对应按钮添加方法,实现起相应的功能三、实验结果1、计算器界面2、实现功能能进行整数基本的加减乘除运算、及其连续运算、清零。
四、讨论与分析1、此实验主要是进行计算器界面的布局,根据电脑上的计算器设计布局主要设置了七个Panel来将界面分成几个部分。
且Panel都是用borderLayout来进行的布局。
2、刚刚开始不能实现连续运算,本程序的设计思路是,读取两次文本框的内容赋值给a,b。
后来在原来的基础上增加了一个标志位,判断符号是不是第一次输入,如果不是则调用等于按钮功能,实现与等于相同的功能。
用Java实现的计算器计算器是一个广泛应用的工具,用于进行数学运算。
如今,随着计算机技术的不断发展,计算器也逐渐被软件程序所替代。
本文将介绍如何使用Java语言实现一个简单的计算器程序。
一、程序概述计算器程序主要包括用户界面和计算逻辑两部分。
用户界面负责显示计算器的按钮和输入输出框,计算逻辑负责根据用户输入进行运算并返回结果。
二、用户界面设计在Java中,我们可以使用Swing或JavaFX等图形库来设计用户界面。
本文选用JavaFX来实现计算器的界面。
界面需要包括数字按钮、运算符按钮、输入输出框等组件。
在程序启动时,我们需要初始化界面并设置各个组件的位置、大小和样式。
为了方便布局,我们可以使用GridPane等布局管理器来管理组件。
三、计算逻辑实现1. 表达式解析计算器需要将用户输入的表达式解析为计算机可以识别的格式。
Java中可以使用正则表达式或者逆波兰表达式来解析表达式。
本文选用简单的正则表达式方法进行解析。
2. 运算逻辑解析表达式后,我们需要根据运算符的优先级进行运算。
Java中可以使用栈来实现运算符的优先级判断和运算。
我们可以定义一个操作数栈和一个运算符栈,按照规则将表达式中的数字和运算符依次入栈,并根据运算符的优先级进行运算并将结果入栈。
四、完整代码示例import javafx.application.Application;import javafx.geometry.Insets;import javafx.scene.Scene;import javafx.scene.control.Button;import javafx.scene.control.TextField;import yout.GridPane;import javafx.stage.Stage;public class Calculator extends Application {private TextField inputField; // 输入框private Button[] numberButtons; // 数字按钮private Button[] operatorButtons; // 运算符按钮@Overridepublic void start(Stage primaryStage) {primaryStage.setTitle("计算器");primaryStage.setResizable(false);// 初始化界面GridPane gridPane = new GridPane();gridPane.setHgap(10);gridPane.setVgap(10);gridPane.setPadding(new Insets(10));// 初始化输入框inputField = new TextField();inputField.setEditable(false);inputField.setPrefHeight(40);inputField.setMaxWidth(Double.MAX_VALUE);gridPane.add(inputField, 0, 0, 4, 1);// 初始化数字按钮numberButtons = new Button[10];for (int i = 0; i < 10; i++) {numberButtons[i] = createNumberButton(String.valueOf(i), i); }gridPane.add(numberButtons[7], 0, 1);gridPane.add(numberButtons[9], 2, 1);gridPane.add(numberButtons[4], 0, 2);gridPane.add(numberButtons[5], 1, 2);gridPane.add(numberButtons[6], 2, 2);gridPane.add(numberButtons[1], 0, 3);gridPane.add(numberButtons[2], 1, 3);gridPane.add(numberButtons[3], 2, 3);gridPane.add(numberButtons[0], 0, 4);gridPane.add(createDotButton(), 1, 4);gridPane.add(createEqualButton(), 2, 4);// 初始化运算符按钮operatorButtons = new Button[4];operatorButtons[0] = createOperatorButton("+"); operatorButtons[1] = createOperatorButton("-"); operatorButtons[2] = createOperatorButton("*"); operatorButtons[3] = createOperatorButton("/"); gridPane.add(operatorButtons[0], 3, 1);gridPane.add(operatorButtons[1], 3, 2);gridPane.add(operatorButtons[3], 3, 4);Scene scene = new Scene(gridPane);primaryStage.setScene(scene);primaryStage.show();}private Button createNumberButton(String text, int number) { Button button = new Button(text);button.setPrefSize(60, 40);button.setOnAction(e -> {String oldText = inputField.getText();inputField.setText(oldText + number);});return button;}private Button createDotButton() {Button button = new Button(".");button.setPrefSize(60, 40);button.setOnAction(e -> {String oldText = inputField.getText();inputField.setText(oldText + ".");});return button;}private Button createEqualButton() {Button button = new Button("=");button.setPrefSize(60, 40);button.setOnAction(e -> {String expression = inputField.getText();// 调用计算逻辑进行计算if (expression != null && !expression.isEmpty()) { double result = calculate(expression);inputField.setText(String.valueOf(result));}});return button;}private Button createOperatorButton(String text) {Button button = new Button(text);button.setPrefSize(60, 40);button.setOnAction(e -> {String oldText = inputField.getText();inputField.setText(oldText + text);});return button;}private double calculate(String expression) {// 进行计算逻辑的实现// ...}public static void main(String[] args) {launch(args);}}五、总结通过本文的介绍,我们可以了解到使用Java语言实现一个简单计算器的基本框架和思路。
淮北师范大学科学型计算器的开发与实现学院计算机科学与技术专业计算机科学与技术(师范)学生姓名学号指导教师姓名年月日科学型计算器的开发与实现作者:指导教师:摘要:目前,科学计算器的应用非常广泛,从科研、生产、国防、文化、卫生、直到家庭生活,都离不开科学计算器的服务。
通过使用科学计算器,避免了人工运算的繁琐,以及人工运算可能带来的较大误差和运算错误,给人们的运算带来了极大的方便。
这篇文章主要介绍用软件的方法实现科学计算器系统,包括:科学计算器系统的概述,科学计算器系统的开发原理和主要实现的功能,子模块的设计和实现技术。
其中,重点介绍了对话框、控件的使用,不调用库函数,通过计算方法的原理来实现函数计算。
本系统需要实现以下功能:加、减、乘、除、余运算、倒数、乘方运算、开方运算、幂运算、对数运算、指数运算、正弦函数运算、余弦函数运算、正切函数运算、余切函数运算、反正弦函数运算、反余弦函数运算、反正切函数运算、反余切函数运算、排列组合运算和弧度与角度之间的转换,能输入正负数、小数,具有清零、退格功能,具有连续运算的能力。
关键词:对话框;控件;计算方法Development and implementation of scientificcalculatorCandidate:Supervisor: Associate ProfessorAbstract:Currently, the application of scientific calculator is very extensive. It can not be get away from the service of scientific calculator in the field of research, production, national defense, culture, hygiene, even family life. By using scientific calculator, the tedious artificial operation, the larger errors and operational mistakes, which are caused by artificial operation, can be avoided. It brings much convenience to people's operation.This article mainly introduces a scientific calculator system implementing from the perspective of software. It includes the overview and developmental principle of scientific calculator system. It also contains the primary functions, which have been implemented, the design and implemental technology of sub-modules. Among them, it forces on introducing the usage of dialog box and controls as well as the implementation of mathematic function without using library function, but computing method.The system needs to achieve the following functions : adds, subtracts, multiplies, divides, the remainder operation, the countdown operation,radicand, power calculation, the log and index calculation, the operation of sine function, cosine function, tangent function, cotangent function, arc sine function, arc cosine function , arc tangent function and arc cotangent function, permutations and combinations operation, the conversion between radian and angle, the capability of inputting decimal, positive and negative numbers, the reset and backspace function, continuous operational capacity.Key words: Dialog box; Controls; Computing method目录引言............................................................1 科学型计算器系统概述 (1)1.1设计科学型计算器系统的背景 (1)1.2科学型计算器的发展史 (1)2系统需要 (2)2.1设计分析 (2)2.1.1可行性分析 (2)2.1.2需求分析 (2)2.2开发环境 (2)2.2.1运行环境 (2)2.2.2开发工具 (2)2.2.3关于visual c++ 6.0 (2)3系统设计 (3)3.1功能说明 (3)3.1.1系统总体功能分析 (3)3.1.2系统功能 (3)3.2系统大概 (3)3.2.1设计思路 (3)3.2.2计算器运算流程图 (3)4系统的实现.................................. .. (4)4.1窗口的设计 (4)4.1.1设计步骤 (4)4.1.2控件的意义 (4)4.1.3部分操作截图 (4)4.2程序核心代码 (4)4.2.1数字键核心代码 (4)4.2.2计算类型函数的核心代码 (4)4.2.2.1二进制转换代码 (4)4.2.2.2backspace函数代码 (4)4.2.2.3arcsin函数代码 (4)4.2.2.4log10函数代码 (4)4.2.2.5π函数代码 (4)5系统运行与测试 (5)5.1运行界面 (5)5.2测试 (5)5.2.1测试研究与选择 (5)5.2.2测试环境 (5)5.3程序代码 (5)总结............................................................ 参考文献........................................................ 致谢............................................................引言本设计设计主要在运算过程中,如果通过计算器来完成,就会减少计算量,该程序即可以在简单计算器键面下进行简单运算,也可以在科学计算器键面下进行高级的科学计算。
并且可以分别计算弧度、角度的三角函数的计算等较为复杂的运算。
1 科学型计算器系统概念1.1设计科学型计算器系统的背景人们在日常学习、工作和生活过程中,都少不了与“计算”打交道,从简单的加、减、乘、除法运算,乘方、开方运算,到复杂正弦、余弦、正切、余切运算,组合运算等,总会遇到许多关于计算方面的有问题,如:人工运算的繁琐,人工运算带来的较大误差以及人工运算造成的运算错误等。
为了解决以上问题,便用软件方法设计了科学计算器系统。
通过使用本系统,只需要进行简单的输入,即可得到相应的结果,给人们的运算带来了极大的方便。
常用的计算器有简易版和科学计算器两种模式。
简易版的计算器不支持表达式运算,每次只能输入一个数据或者运算符来计算,而科学计算器除了容纳简易版计算器的功能外,还支持表达式运算,用户可以输入一个合法的算术表达式来得到所需的结果。
1.2科学型计算器的发展史1666年,在英国Samuel Morland发明了一部可以计算加数及减数的机械计数机。
1673年, Gottfried Leibniz制造了一部踏式(stepped)圆柱形转轮的计数机,叫“Stepped Reckoner”,这部计算器可以把重复的数字相乘,并自动地加入加数器里。
1694年,德国数学家,Gottfried Leibniz,把巴斯卡的Pascalene 改良,制造了一部可以计算乘数的机器,它仍然是用齿轮及刻度盘操作。
1775年,The third Earl of Stanhope发明了一部与Leibniz相似的乘法计算器。
1893年,第一部四功能计算器被发明。
1931年,Vannever Bush发明了一部可以解决差分程序的计数机,这机器可以解决一些令数学家,科学家头痛的复杂差分程序。
1935年,IBM (International Business Machine Corporation)引入 "IBM 601”,它是一部有算术部件及可在1秒钟内计算乘数的穿孔计算机器。
它对科学及商业的计算起很大的作用。
总共制造了1500 部。
1937年,Alan Turing 想出了一个“通用机器(Universal Machine)”的概念,可以执行任何的算法,形成了一个“可计算(computability)”的基本概念。
Turing 的概念比其它同类型的发明为好,因为他用了符号处理(symbol processing) 的概念。
1939年11月,John Vincent Atannsoff与John Berry制造了一部16位加数器。
它是第一部用真空管计算的机器。
1939-40年,Schreyer完成了用真空管的10位加数器,以及用氖气灯(霓虹灯)的存贮器。
1940年1月,在Bell Labs, Samuel Williams 及Stibitz完成了一部可以计算复杂数字的机器,叫“复杂数字计数机(Complex Number Calculator)”,后来改称为“断电器计数机型号I (ModelI Relay Calculator)”。
它用电话开关部分做逻辑部件:145个断电器,10个横杠开关。
数字用“Plus 3BCD”代表。
1941年夏季,Atanasoff及Berry完成了一部专为解决联立线性方程系统(system of simultaneous linear equations) 的计算器,后来叫做“ABC (Atanasoff-Berry Computer)”,它有60个50位的存贮器,以电容器(capacitories)的形式安装在2个旋转的鼓上,时钟速度是60Hz。