Java大作业--计算器

合集下载

JAVA-复数计算器

JAVA-复数计算器

JAVA-复数计算器使⽤java组件做⼀个复数计算器⾸先,建三个类:⼀个组件类,⼀个类(将⽂本框与字符封装起来),⼀个复数类。

下⾯是组件类的代码:package b;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;public class JComplex extends JFrame implements ActionListener{//设置组件public JComboBox<String> combox_add,combox_minus;private static String[] add={"+","-"};private static String[] minus={"+","-"};private JButton button_equal;//建⾯板类的对象ComJPanel x1=new ComJPanel();ComJPanel x2=new ComJPanel();ComJPanel x3=new ComJPanel();ComJPanel result=new ComJPanel();public JComplex(){super("复数运算器");this.setLayout(null);this.setSize(400,220);this.setLocationRelativeTo(null);//添加组件this.add(box_add=new JComboBox<String>(JComplex.add));this.add(box_minus=new JComboBox<String>(JComplex.minus));this.add(this.button_equal=new JButton("="));this.add(x1);this.add(x2);this.add(x3);this.add(result);//设置组件的距离和⼤⼩combox_add.setBounds(20, 70, 60, 30);combox_minus.setBounds(20, 110, 60, 30);button_equal.setBounds(20, 150, 60, 30);x1.setBounds(100, 5, 300, 50);x2.setBounds(100, 50, 300, 50);x3.setBounds(100, 100, 300, 50);result.setBounds(100, 150, 300, 50);//设置动作监听combox_add.addActionListener(this);combox_minus.addActionListener(this);button_equal.addActionListener(this);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);}public void actionPerformed(ActionEvent e){//获取⽂本框的内容String s1=x1.text_real.getText();String s2=x1.text_i.getText();String s3=x2.text_real.getText();String s4=x2.text_i.getText();String s5=x3.text_real.getText();String s6=x3.text_i.getText();//建复数类的对象Complex c1=new Complex(s1,s2);Complex c2=new Complex(s3,s4);Complex c3=new Complex(s5,s6);//动作响应if(e.getSource().equals(combox_add)){if(combox_add.getSelectedItem().equals("+")) combox_add.setSelectedItem("+");else if(combox_add.getSelectedItem().equals("-")) combox_add.getSelectedItem().equals("-");}if(e.getSource().equals(combox_minus)){if(combox_minus.getSelectedItem().equals("+")) combox_minus.setSelectedItem("+");else if(combox_minus.getSelectedItem().equals("-")) combox_minus.setSelectedItem("-");}if(e.getSource().equals(button_equal)){if(combox_add.getSelectedItem().equals("+")){c1.add(c2);}else if(combox_add.getSelectedItem().equals("-")) {c1.minus(c2);}if(combox_minus.getSelectedItem().equals("+")){c1.add(c3);}else if(combox_minus.getSelectedItem().equals("-")) {c1.minus(c3);}}result.text_real.setText(Double.toString(c1.x)); result.text_i.setText(Double.toString(c1.y));}public static void main(String []args){new JComplex();}}class ComJPanel extends JPanel {private JLabel label_add,label_i;JTextField text_real,text_i;String s1,s2;public ComJPanel(){//⾯板类this.setLayout(null);this.add(this.text_real=new JTextField());this.add(bel_add=new JLabel("+"));this.add(this.text_i=new JTextField());this.add(bel_i=new JLabel("i"));text_real.setBounds(20,0,100,30);text_i.setBounds(150,0,100, 30);label_add.setBounds(130,0,20, 25); label_i.setBounds(260,0,20, 25);}}复数类就是简单的复数类,就不贴代码啦。

用java代码写的简易计算器(可以实现基本的加减乘除功能)

用java代码写的简易计算器(可以实现基本的加减乘除功能)

⽤java代码写的简易计算器(可以实现基本的加减乘除功能)package A;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import javax.swing.*;public class Calcular3 extends JFrame implements ActionListener,MouseListener{private int m1=0,n=0;//private double m2=0;//运算的数private int flag=0;JFrame f;JPanel p1,p2,p3;JTextField t;JButton b1[]=new JButton[18];String b[]= {"1","2","3","4","5","6","7","8","9","0","清空","退格",".","=","+","-","*","/"};public Calcular3(){f=new JFrame("计算器");t=new JTextField(35);p1=new JPanel();p2=new JPanel();p3=new JPanel();f.setBounds(100, 100, 400, 200);f.add(p1,BorderLayout.NORTH);f.add(p2,BorderLayout.CENTER);f.add(p3,BorderLayout.EAST);p2.setLayout(new GridLayout(5,3));p3.setLayout(new GridLayout(4,1));p1.add(t);for(int i=0;i<14;i++) {b1[i]=new JButton(b[i]);p2.add(b1[i]);b1[i].addActionListener(this);}for(int i=14;i<18;i++) {b1[i]=new JButton(b[i]);p3.add(b1[i]);b1[i].addActionListener(this);}/*for(int i=0;i<18;i++) {b1[i].addActionListener(this);}*/f.setVisible(true);}//实现接⼝的⽅法public void mouseClicked(MouseEvent e) {}public void mousePressed(MouseEvent e) {}public void mouseReleased(MouseEvent e) {}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}public void actionPerformed(ActionEvent e) {String str="";int i;for(i=0;i<=9;i++) {if(e.getSource()==b1[i]) {if(i==9) {n=n*10;}else {n=n*10+i+1;}str=String.valueOf(n);//整形n转换成字符串strt.setText(str);//显⽰到⽂本框上}}for(i=14;i<18;i++) {//+、-、*、/if(e.getSource()==b1[i]) {//匹配运算符m1=Integer.parseInt(t.getText());if(flag==15) {m2=m1+m2;}else if(flag==16) {m2=m1-m2;}else if(flag==17) {m2=m1*m2;}else if(flag==18) {m2=m1/m2;}else m2=m1;//若⽆连续的运算符运算,保存当前数据到m2 if(i==14) flag=15;else if(i==15) flag=16;else if(i==16) flag=17;else flag=18;str=String.valueOf(b[i]);t.setText(str);//显⽰到⽂本框上n=0;//还原,记录下次数据break;//找到匹配数据退出循环}}if(e.getSource()==b1[13]) {//=m1=Integer.parseInt(t.getText());if(flag==15) {m2=m2+m1;}else if(flag==16) {m2=m2-m1;}else if(flag==17) {m2=m2*m1;}else if(flag==18) {m2=m2/m1;}else m2=m1;str=String.valueOf(m2);t.setText(str);//显⽰到⽂本框上n=0;//还原,记录下次数据flag=0;//flag还原0,表明没有未处理的运算符}if(e.getSource()==b1[10]) {//各变量变为0 清空m1=0;m2=0;flag=0;n=0;t.setText("0");//显⽰到⽂本框上}if(e.getSource()==b1[11]) {//退格m1=(int)(Double.parseDouble(t.getText())/10);n=m1;str=String.valueOf(m1);t.setText(str);}if(e.getSource()==b1[12]) {//⼩数点m1=Integer.parseInt(t.getText());str=String.valueOf(m1+b[12]);t.setText(str);//显⽰到⽂本框上int j=0;for(i=0;i<=9;i++) {if(e.getSource()==b1[i]) {j++;m2=Math.pow(0.1, j)*Integer.parseInt(b[i]);str=String.valueOf(m1+m2);t.setText(str);//显⽰到⽂本框上}}}}//主函数public static void main(String[] args) {new Calcular3();}}。

java swing实现简易计算器

java swing实现简易计算器

简易计算器【案例介绍】1.案例描述本案例要求利用Java Swing 图形组件开发一个可以进行简单的四则运算的图形化计算器。

2.运行结果运行结果【案例目标】●学会分析“简易计算器”程序实现的逻辑思路。

●能够独立完成“简易计算器”程序的源代码编写、编译及运行。

●掌握Java Swing界面编程的应用。

●了解计算器逻辑运算实现。

【案例分析】要制作一个计算器,首先要知道它由哪些部分组成,如下图所示:一个简单的图形化界面计算器,需要由界面组件、组件的时间监听器和具体的事件处理逻辑组成。

实现一个简易图形化界面计算器可分以下几个步骤:1.UI组件创建和初始化:包括窗体的创建,显示计算结果文本框、清除按钮、数字按钮、运算符等按钮的初始化。

2.在窗体中添加UI组件:包括放置数字键及运算符面板、放置清除框面板。

3.布局结束之后,就是计算器的难点:编写事件处理程序。

4.按键的响应实现。

5.计算逻辑的实现。

6.注册监听器【案例实现】Calculator.java1 package chapter1102;2 import java.awt.*;3 import java.awt.event.*;4 import javax.swing.*;5 import java.util.Vector;6 import java.math.BigDecimal;7 public class Calculator {8 // 操作数1,为了程序的安全,初值一定设置,这里我们设置为0。

9 String str1 = "0";10 // 操作数211 String str2 = "0";12 // 运算符13 String signal = "+";14 // 运算结果15 String result = "";16 // 以下k1至k5为状态开关17 // 开关1用于选择输入方向,将要写入str1或str218 // 为 1 时写入 str1,为 2 时写入 str219 int k1 = 1;20 // 开关 2 用于记录符号键的次数21 // 如果 k2>1 说明进行的是 2+3-9+8 这样的多符号运算22 int k2 = 1;23 // 开关3用于标识 str1 是否可以被清 024 // 等于 1 时可以,不等于1时不能被清025 int k3 = 1;26 // 开关4用于标识 str2 是否可以被清 027 // 等于 1 时可以,不等于1时不能被清028 int k4 = 1;29 // 开关5用于控制小数点可否被录入30 // 等于1时可以,不为1时,输入的小数点被丢掉31 int k5 = 1;32 // store的作用类似于寄存器,用于记录是否连续按下符号键33 JButton store;34 //vt 存储之前输入的运算符。

java程序设计大作业

java程序设计大作业

Java程序设计大作业可能涉及多个方面,具体取决于你的课程要求和教师的要求。

以下是一个可能的Java程序设计大作业的示例:题目:设计并实现一个简单的计算器应用程序。

要求:1. 使用Java编写一个命令行应用程序,能够执行基本的数学运算(加、减、乘、除)。

2. 用户应该能够输入两个数字和一个运算符,程序将根据运算符执行相应的运算并输出结果。

3. 程序应该能够处理不同类型的数字(整数和浮点数)和运算符。

4. 程序应该能够处理输入错误,例如用户输入了无效的运算符或非数字字符。

示例代码:```javaimport java.util.Scanner;public class Calculator {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("请输入第一个数字:");double num1 = scanner.nextDouble();System.out.print("请输入运算符(+、-、*、/):"); String operator = scanner.next();System.out.print("请输入第二个数字:");double num2 = scanner.nextDouble();double result = 0;switch (operator) {case "+":result = num1 + num2;break;case "-":result = num1 - num2;break;case "*":result = num1 * num2;break;case "/":if (num2 == 0) {System.out.println("除数不能为0!");return;} else {result = num1 / num2;}break;default:System.out.println("无效的运算符!");return;}System.out.println(num1 + " " + operator + " " + num2 + " = " + result);}}```在这个示例代码中,我们使用了`Scanner`类从用户那里获取输入。

Java实现简易计算器

Java实现简易计算器

Java实训作业题目:Java实现简易计算器学院:姓名:学号:班级:20 年月一、实验目的通过课程设计,主要要达到两个目的,一是检验和巩固专业知识、二是提高综合素质和能力。

此次课程设计实训主要是Java语言程序设计的实现。

通过该课程设计,可以将课堂上掌握的理论知识与处理数据的业务相结合,以检验自己掌握知识的宽度、深度及对知识的综合运用能力。

二、实验要求用Java编写一个简单的计算器,使其能够实现最基本的功能,如简单的加、减、乘、除;平方根,倒数,平方等功能。

三、详细内容1.界面设计界面设计使用GUI,其中有用到swing组件的TextField和Button,用到awt中的BorderLayout和GridLayout布局管理方式,其图形界面如图1-1所示:图1-1其中主要代码为:public mainWindow(){this.setTitle("计算器");//用户图形界面标题this.setVisible(true);//用户图形界面可缩小this.setResizable(false);//用户图形界面不可放大this.setSize(350,300);//设置用户图形界面的大小this.setLocation(400,150);//用户图形界面在屏幕中的显示位置JPanel panel1 = new JPanel();//新建一个画板JPanel panel2 = new JPanel();button1 = new JButton("1");...reset = new JButton("CE");Container container = this.getContentPane();container.add(panel2,BorderLayout.NORTH);container.add(panel1);panel1.setLayout(new GridLayout(5,4));//将画板1分为4行5列result.setEnabled(false);result.setFont(new Font("Dialog",Font.BOLD,25));//运算结果的字体大小result.setEditable(false);result.setHorizontalAlignment(SwingConstants.RIGHT);panel1.add(reciprocal);//分别将20个按钮依次添加到画板panel1中,并设置各自的大小reciprocal.setFont(new Font("Dialog",Font.PLAIN,20));...panel1.add(divide);divide.setFont(new Font("Dialog",Font.PLAIN,20));panel2.setLayout(new GridLayout());panel2.add(result);//画板panel2添加运算结果2.四则运算较为简单的实现了简单的加、减、乘、除运算,主要代码如下:ActionListener equal1 = new ActionListener(){ //实现四则运算public void actionPerformed(ActionEvent e){String str = result.getText();b = DatatypeConverter.parseDouble(str);{if(flag == "+")c = a + b;else if(flag == "-")c = a - b;else if(flag == "*")c = a * b;else if(flag == "/" || b != 0)c = a / b;}if(flag != "=")result.setText("" + c);elseresult.setText("零不能做除数!");a = 0;b = 0;c = 0;flag = "";}};3.其他功能另外添加了平方根,倒数,平方等功能,主要代码如下:平方根运算的实现:ActionListener sqrt1= new ActionListener(){public void actionPerformed(ActionEvent e){String str = result.getText();double i = DatatypeConverter.parseDouble(str);i = Math.sqrt(i);result.setText("" + i);}};倒数运算的实现:ActionListener reciprocal1 = new ActionListener(){ public void actionPerformed(ActionEvent e){String str = result.getText();double i = DatatypeConverter.parseDouble(str);i = 1/i;result.setText("" + i);}};平方运算的实现:ActionListener square1 = new ActionListener(){public void actionPerformed(ActionEvent e){String str = result.getText();double i = DatatypeConverter.parseDouble(str);i = i*i;result.setText("" + i);}};4.程序测试经测试发现本计算器基本功能均能实现,可正常运行计算,针对功能实现的代码部分过于简单,可以对其进行改善提高,方便用户使用!5.实训小结通过对计算器窗体的编写,熟悉了java图形用户界面的设计原理和程序结构,熟悉了java中awt和swing的组合。

java计算器实验报告

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课程设计-计算器Word版

java课程设计-计算器Word版

Java 程序设计课程设计报告( 2011 -- 2012 年度第 1 学期)计算器专业 计算机科学与技术(网络工程)学生姓名赵宝文班级 B 计算机102 学号1010704227 指导教师 徐 森 完成日期2012年1月8日目录目录 (2)1 概述 (1)1.1 课程设计目的 (1)1.2 课程设计内容 (1)2 系统需求分析 (1)2.1 系统目标 (1)2.2 主体功能 (1)2.3 开发环境 (1)3 系统概要设计 (1)3.1 系统的功能模块划分 (1)3.2 系统流程图 (2)4系统详细设计 (2)4.1 COMPUTERPAD(主类) (2)4.2 NUMBERBUTTON (2)4.3 OPERATIONBUTTON (3)5 测试 (3)5.1 测试方案 (3)5.2 测试结果 (4)6 小结 (4)参考文献 (5)附录 (6)附录Ⅰ源程序清单 (6)附录Ⅱ源程序清单 (14)附录Ⅲ源程序清单 (14)题目1 概述1.1 课程设计目的1.熟悉Java的运行环境及其使用;2.掌握Java图形界面的使用;3.加强Java程序的分析能力;4.加强使用Java知识解决实际问题的能力。

1.2 课程设计内容设计GUI界面的计算器程序,用户可以通过鼠标依次输入参加计算的数值,进行加、减、乘、除等混合运算。

2 系统需求分析2.1 系统目标要求所设计的GUI界面计算器是一个使用很方便的程序,能进行加、减、乘、除等混合运算。

2.2 主体功能用户可以通过鼠标依次输入参加计算的数值,进行加、减、乘、除等混合运算。

2.3 开发环境Eclipse集成开发环境3 系统概要设计3.1 系统的功能模块划分本计算机文件共有3个java源文件。

类之间的主要关系如下图所示ComputerPad.java该java源文件生成的类负责创建计算器的“主窗口”。

该类含有main方法,整个程序从该类开始执行。

NumberButton.java该文件生成的类负责为主类创建数字按钮对象,使用鼠标单击数字按钮可依次输入参加运算的数值的各位数字。

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结果正确,程序无误。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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");}}}}/*不让一个数值中出现两个小数点。

相关文档
最新文档