JAVA课程设计报告简单计算器

合集下载

计算器java课程设计--简单计算器

计算器java课程设计--简单计算器

计算器java课程设计一简单计算器学号: 姓名: 班级: 101210109好茨4巒戊《JAVA程序设计》课程设计报告简单计算器卫口Tfp10级计科一班吕海莲___________2012-12-25一、设计内容和要求1、简单计算器模拟程序的基本要求模拟Windows中附件里面的计算器软件,能实现整数的加、减、乘、除四则运算。

2、需要实现的主要功能该计算器模拟程序使用Java的awt包和Swing包的类库设计图形界面的计算器显示用户界面并且使用图形界面中的事件event委托机制来处理事件响应,以及用Java语言设计实现整数的加、减、乘、除四则运算。

(附加功能:淸零和异常处理机制)二、系统分析与概要设计1、面板JPanel txtpanel:用于放置文本框Panel btnpanel:用于放置按钮(0・9 和+,-,*/,=)2、显示部分(1)第一个面板:txtpanel位置以及排列方式BorderLayout.NORTHtxtpanel.add(txtinput):添加文本框到txtpanel 面板中(2)第二个面板:btnpanel排列方式:setLayout(gl)3、基本按钮btnpanel.add(b5);btnpanel.add(bl); btnpanel.add( multiply) btnpanel.add(b4) btnpanel.add(b6) btnpanel.add(divide)btnpaneLadd(bO) .add(bdes) btnpaneLadd(equal); btnpaneLadd(subtract)以上是在第二个面板btnpanelH中添加的0到9和+,-,*/,=的按钮。

4、附加功能(1)“清零”:用于清空文本框和下一次的运算(2)“异常处理”除数为零:当除数为零时,弹出“除数不能为零”窗体错误输入:当只单击运算符时,弹出“错误输入”窗体三、详细设计和编码1、总体功能图1、类的定义及关系Jsq类继承JFrame类创建主界面,在主界面上由文本框JTextField和JButton 组件构成,JTextField和JButton组件分别放置在两个不同的面板JPanel 上,同时利用按钮注册监听器,获取事件源。

java课程设计科学计算器

java课程设计科学计算器

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计算器设计实验报告《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课程设计计算器

java课程设计计算器

java课程设计 计算器一、课程目标知识目标:1. 理解Java基本语法和程序结构,掌握算术表达式的编写;2. 掌握使用Java进行数值运算的方法,理解数据类型转换规则;3. 了解简单的异常处理机制,理解其与计算器程序的关系。

技能目标:1. 能够运用所学知识,独立编写一个具备基本功能的计算器程序;2. 学会使用Java控制台输入输出,实现用户与程序的交互;3. 能够通过调试和修改代码,解决计算器程序中的常见错误。

情感态度价值观目标:1. 培养学生对编程的兴趣,激发其主动探索和解决问题的热情;2. 培养学生的团队协作意识,使其学会在编程过程中互相帮助和分享经验;3. 培养学生的逻辑思维能力,提高其分析问题和解决问题的能力。

本课程针对具有一定Java基础的学生设计,结合计算器项目实践,旨在巩固和拓展所学知识,提高学生的编程能力和实际应用能力。

课程注重培养学生的动手实践能力,强调理论与实践相结合,使学生能够在实践中掌握Java编程技巧,培养良好的编程习惯。

通过本课程的学习,学生将能够独立完成一个简单的计算器程序,提高其在实际编程中的问题解决能力。

二、教学内容1. Java基本语法与程序结构复习(教材第3章)- 简单的变量声明与赋值- 基本算术运算符的使用- 程序的控制流程:顺序、分支(if-else)、循环(for、while)2. Java数据类型与运算(教材第4章)- 数据类型转换规则- 运算符优先级- 算术表达式编写3. Java控制台输入输出(教材第5章)- 使用Scanner类进行输入- 使用System.out.print和System.out.println进行输出4. 简单异常处理(教材第7章)- 异常的概念与分类- try-catch语句的使用- 异常处理在计算器程序中的应用5. 计算器程序设计实践- 设计计算器功能需求- 编写计算器程序代码- 调试与优化计算器程序教学内容安排与进度:第一课时:复习Java基本语法与程序结构,明确计算器项目需求第二课时:学习Java数据类型与运算,编写计算器核心算法第三课时:掌握Java控制台输入输出,实现计算器用户交互第四课时:了解简单异常处理,优化计算器程序第五课时:计算器程序设计实践,调试与改进教学内容注重理论与实践相结合,通过逐步引导,使学生能够将所学知识应用于计算器程序设计,提高编程实践能力。

简单计算器java课程设计

简单计算器java课程设计

简单计算器java课程设计一、课程目标知识目标:1. 学生能理解简单计算器的功能需求,掌握Java语言的基本语法和编程结构。

2. 学生能运用Java编程实现加、减、乘、除等基本运算,并掌握相关运算符的使用方法。

3. 学生了解面向对象编程的基本概念,能够使用类和对象构建简单计算器程序。

技能目标:1. 学生能运用所学知识,独立完成简单计算器程序的编写和调试。

2. 学生掌握使用条件语句和循环语句进行程序流程控制,实现计算器的逻辑功能。

3. 学生能够运用调试工具,分析并解决简单计算器程序中可能出现的错误。

情感态度价值观目标:1. 培养学生编程的兴趣,激发他们探究计算思维和解决问题的热情。

2. 培养学生团队协作意识,让他们在合作开发过程中学会沟通与分享。

3. 培养学生面对困难勇于挑战的精神,提高他们独立解决问题的能力。

课程性质:本课程为实践性较强的学科课程,结合学生年级特点和教学要求,注重培养学生动手操作能力和编程思维。

学生特点:学生具备一定的Java基础,了解基本语法和编程结构,但对面向对象编程和实际项目开发尚处于初级阶段。

教学要求:结合学生特点,通过本节课的学习,使学生能够将所学知识应用于实际项目开发中,提高编程实践能力。

同时,关注学生情感态度价值观的培养,激发学习兴趣,增强合作意识。

将课程目标分解为具体学习成果,便于后续教学设计和评估。

二、教学内容1. 简单计算器功能需求分析:介绍计算器的基本功能,引导学生明确项目目标。

- 加、减、乘、除四则运算- 清除、退出等辅助功能2. Java基本语法回顾:复习Java基本语法,为编写计算器程序打下基础。

- 数据类型- 运算符- 控制语句(条件语句、循环语句)3. 面向对象编程基础:引入面向对象概念,指导学生构建简单的计算器类。

- 类的定义- 对象的创建- 方法的编写4. 简单计算器程序设计:详细讲解计算器各功能模块的实现。

- 界面设计- 事件处理- 运算逻辑5. 编程实践:指导学生动手编写简单计算器程序,并进行调试。

java实验报告计算器

java实验报告计算器

java实验报告计算器Java实验报告:计算器引言:计算器是我们日常生活中常用的工具之一,它能够帮助我们进行各种数学运算,提高计算的效率。

本实验旨在使用Java编程语言设计和实现一个简单的计算器,通过实践来加深对Java语言和面向对象编程的理解。

一、需求分析在设计计算器之前,我们首先需要明确计算器的功能需求。

一个基本的计算器应该包括加、减、乘、除四种基本运算,同时还应该具备清零、取反、百分比等附加功能。

在本实验中,我们将实现这些基本功能,并尝试添加一些额外的功能,如开根号、求平方等。

二、设计思路1. 用户界面设计我们可以使用Java的图形用户界面(GUI)库来设计计算器的界面。

可以使用按钮来表示数字和运算符,使用文本框来显示计算结果。

2. 数据结构设计为了实现计算器的功能,我们需要设计一个合适的数据结构来存储用户输入的数字和运算符。

可以使用栈(Stack)数据结构来实现这个功能。

当用户按下数字按钮时,将数字入栈;当用户按下运算符按钮时,将运算符入栈。

当用户按下等号按钮时,从栈中取出数字和运算符进行计算,并将结果显示在文本框中。

3. 运算逻辑设计计算器的运算逻辑可以使用逆波兰表达式来实现。

逆波兰表达式是一种不需要括号的数学表达式表示方法,通过后缀表达式的形式来表示运算符的优先级。

在计算器中,我们可以使用栈来实现逆波兰表达式的计算。

三、实验步骤1. 创建一个Java项目,并导入GUI库。

2. 设计计算器的用户界面,包括按钮和文本框。

3. 实现按钮的点击事件,根据用户输入的数字和运算符来更新栈的状态。

4. 实现等号按钮的点击事件,从栈中取出数字和运算符进行计算,并将结果显示在文本框中。

5. 实现清零、取反、百分比等附加功能的按钮点击事件。

6. 运行程序,测试计算器的各项功能是否正常。

四、实验结果与分析经过测试,我们的计算器能够正常地进行加、减、乘、除等基本运算,并且附加功能也能正常使用。

通过这个实验,我们不仅学习了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结果正确,程序无误。

JAVA课程设计-----简单的计算器

JAVA课程设计-----简单的计算器

Java课程设计说明书---Java程序简单的计算器XXXXXXX目录正文1. 概述 (3)1)项目背景 (3)2)编写目的 ............................................ 错误!未定义书签。

3)软件定义 (1)4)开发环境 (1)5)所用的知识 ........................................ 错误!未定义书签。

2功能说明 (4)1) 问题陈述 (3)2) 需要完成的功能 (3)3程序的类的说明 (4)4软件系统测试说明 (6)5用户使用说明 (6)结束语 (7)参考文献 (4)1. 概述1)项目背景《JA V A程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。

实践教学环节是必不可少的一个重要环节。

通过一学期的学习和了解我能够通过自己所学的知识进行一次全面的综合训练。

2)编写目的JA V A程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。

更重要的是明白开发软件的意义与模块的分析与制作的过程。

3)软件定义简单的计算器,可以进行+、-、*、/、辅助功能有清屏、开方可以进行整数的运算同样也可以进行浮点型小数的运算。

功能很简单数据处理有一定范围。

4)开发环境IDE:NetBeans IDE 7.0 (Build 201104080000)JDK:Java:1.6.0_20; Java HotSpot(TM) Client VM 16.3-b01OS:Windows 7 版本6.1 运行于x86 上; GBK; zh_CN5)所用知识1.Swing 的UI技术2.Java的内部类、匿名类技术3.Java的继承技术4.Java的事件处理机制beans的GUI设计工具的用法2功能说明该程序是一个图形界面的简单的java计算器,具有良好的界面,使用人员能快捷简单地进行操作。

java计算器设计实验报告

java计算器设计实验报告

java计算器设计实验报告Java计算器设计实验报告引言:计算器是人们日常生活中常见的工具之一,它能够进行基本的数学运算,方便人们进行快速计算。

本实验旨在通过使用Java编程语言设计一个简单的计算器,探索计算器的基本原理和实现方法。

一、实验目的本实验的主要目的是通过设计和实现一个基本的计算器,加深对Java编程语言的理解和应用。

通过这个实验,我们可以学习到如何设计一个简单的界面,实现基本的计算功能,并对用户输入进行处理和错误处理。

二、实验步骤1. 界面设计首先,我们需要设计一个简单的计算器界面。

可以使用Swing或JavaFX等工具包来实现界面设计。

界面应该包括数字按钮、运算符按钮以及一个显示屏幕等组件。

2. 事件处理接下来,我们需要为每个按钮添加事件处理程序。

当用户点击按钮时,程序应该能够根据按钮的类型执行相应的操作。

例如,当用户点击数字按钮时,程序应该能够将数字显示在屏幕上;当用户点击运算符按钮时,程序应该能够执行相应的运算。

3. 运算逻辑在实现运算逻辑时,我们需要考虑用户的输入和错误处理。

例如,当用户输入非法字符或进行非法操作时,程序应该能够给出相应的提示或错误信息。

同时,我们还需要考虑运算的优先级和顺序,确保计算结果的准确性。

4. 测试和调试完成代码编写后,我们需要进行测试和调试。

通过输入一系列数字和运算符,检查计算器是否能够正确计算并显示结果。

如果发现错误或异常,需要对代码进行调试,找出并解决问题。

三、实验结果经过测试和调试,我们成功实现了一个简单的计算器。

用户可以通过界面上的按钮输入数字和运算符,并在屏幕上显示计算结果。

计算器能够处理用户的输入并进行相应的运算,同时还能够对错误输入进行处理和提示。

四、实验总结通过本实验,我们深入了解了Java编程语言的应用和实践。

通过设计和实现一个简单的计算器,我们掌握了界面设计、事件处理和运算逻辑的基本原理和方法。

同时,我们也学会了如何进行测试和调试,提高了代码的可靠性和稳定性。

java课程设计简易计算器

java课程设计简易计算器

前端:使用JavaFX进行界面设计 后端:使用Java进行逻辑处理和数据存储 数据库:使用MySQL进行数据存储 功能模块:包括加法、减法、乘法、除法、平方根等计算功能 测试:使用JUnit进行单元测试和集成测试 打包:使用Maven进行项目打包和部署
功能按钮:包括数字、运算 符、清除、等于等
易于阅读
输入框:用于输入数字和运算符号 输出框:用于显示计算结果 格式化规则:数字和运算符号之间用空格分隔 错误提示:当输入错误时,给出提示信息 计算结果:显示计算结果,并保留小数点后两位 清空按钮:用于清空输入框和输出框中的内容
输入两个数字 调用加法函数 返回结果 打印结果
输入两个数字
判断两个数字的大小关系
使用代码覆盖率工具:检查 代码覆盖率,确保所有代码 都被测试到
使用调试工具:如Eclipse、 IntelliJ IDEA等,提供丰富的 调试功能
阅读错误信息:仔细阅读错 误信息,找出问题所在,并 尝试解决
测试目的:验证程序的正确性和稳 定性
测试结果:记录测试过程中的错误 和异常
添加标题
添加标题
添加标题
编写单元测试:编写针对每个 方法的单元测试,确保每个方 法都能独立运行
调试单元测试:在测试过程中 发现错误时,使用调试工具定
位问题并修复
优化单元测试:根据测试结果 对单元测试进行优化,提高测
试覆盖率和效率
集成测试的概念:将多个模块组合起来进行测试,验证模块间的交互和协作是否正确
编写集成测试的步骤:确定测试目标、设计测试用例、编写测试代码、执行测试
添加标题
测试方法:单元测试、集成测试、 系统测试等
测试结论:对测试结果的分析和总 结,提出改进建议
收获:掌握了Java编程基础,了解了计算器的设计原理和实现方法 不足之处:项目规模较小,功能较为简单,需要进一步学习和实践 展望:未来可以尝试设计更复杂的计算器,或者将Java编程应用到其他领域

java课程设计编写计算器

java课程设计编写计算器

java课程设计编写计算器一、教学目标本节课的教学目标是使学生掌握Java编程的基本语法和结构,能够使用Java编写一个简单的计算器程序。

具体来说,知识目标包括了解Java的基本数据类型、运算符、控制结构等;技能目标包括能够使用Java编写简单的程序,并进行调试和优化;情感态度价值观目标包括培养学生的编程兴趣,提高学生的解决问题的能力。

二、教学内容本节课的教学内容主要包括Java的基本语法和结构,以及计算器程序的设计和实现。

具体来说,将讲解Java的基本数据类型、运算符、控制结构等知识,并通过实例来说明如何使用这些知识来编写计算器程序。

此外,还将介绍如何进行程序的调试和优化,以提高程序的性能和可靠性。

三、教学方法为了达到本节课的教学目标,将采用多种教学方法来进行教学。

首先,将采用讲授法来讲解Java的基本语法和结构,使学生能够了解和掌握这些知识。

其次,将采用案例分析法来分析计算器程序的设计和实现,使学生能够通过实际案例来加深对知识的理解和应用。

此外,还将采用实验法让学生亲自动手编写和调试计算器程序,以提高学生的实际操作能力。

四、教学资源为了支持本节课的教学内容和教学方法的实施,将选择和准备一些教学资源。

教材方面,将使用《Java编程语言》作为主教材,辅以《Java编程实践》等参考书进行深入学习。

多媒体资料方面,将制作一些PPT和视频教程,以帮助学生更好地理解和掌握知识。

实验设备方面,将准备一些计算机和编程环境,以便学生进行实际操作和调试。

五、教学评估本节课的教学评估将采用多元化的方式来进行,以全面、客观、公正地评估学生的学习成果。

评估方式包括平时表现、作业和考试等。

平时表现主要考察学生的出勤、课堂参与度和团队合作能力;作业主要包括课后练习和编程任务,以巩固和应用所学知识;考试则是对学生综合运用Java编程知识的考察,包括理论知识和编程实践。

通过这些评估方式,希望能够全面反映学生的学习成果,激发学生的学习兴趣和主动性。

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程序设计报告---设计一个计算器

课程设计课程设计目的设计一个基于Swing的计算器应用程序,完成普通的算术运算。

课程设计要求1.设计的计算器是基于Swing的,可以完成加减乘除和取余运算。

2.增加计算器的日期计算功能,能够计算两个日期之间相距的天数。

(要判断键入的日期格式是否正确,并能正确处理按钮动作事件,同时能够得到正确的计算结果)设计要点主要练习使用布局管理器设计一个计算器的界面,并使用事件监听器处理数据的输入,完成相关的计算。

在面板上可以增加一个算术/日期的转换按钮来选择是普通计算还是日期计算。

以及增加一个清零的按钮CE,用以将显示结果的单行文本域清空,同时将各个参数设置为默认值。

二、总体方案设计日常生活中经常需要用到计算器,比如科学计算,数值计算,会计业务等等,在Applet 中实现一个精巧的计算器,可以让用户的操作也更方便和快捷。

本项目需要实现一个具有四则运算的计算器,能够实现基本的加、减、乘、除运算,以及其它的辅助功能;界面简洁适用;要提供主要的设计思路、类的设计,本次设计添加转进制等功能。

本应用程序继承自框架(frame),此程序使用frame布局管理器bordelayout,将单行文本加入相应区域,包含各种按纽的面板buttonpanel加入相应区域还可以将进制转换的面板与单行文本框放一块包含各种按纽的面板buttonpanel采用N行N列的网格布局,然后将数字按钮和运算符按钮以及控制按钮添加到面板中,同时注册按钮事件监听器。

布局设计好后再添加按钮事件。

对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。

四、程序的调试与运行结果说明程序功能实现:使用swing组件和awt图形用户界面以及BroadLayout布局管理器。

通过在按钮的单击事件处理方法中调用类的成员方法calculator()来进行简易计算器的各种运算,并正确实现运算功能。

Java简单计算器(程序设计报告)

Java简单计算器(程序设计报告)

JA V A课程设计报告哈尔滨哈商业大学JAVA课程设计课程名称:Java程序设计课题名称:简单计算器*名:***学号:************班级:08级软件工程教育2011年10月20日一、实验目的:使用Eclipse软件制作简单计算器,实现加减乘除等基本功能。

二、实验源码:import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Calculator {public static void main(String[] args) {EventQueue.invokeLater(new Runnable(){public void run(){CalculatorFrame frame = new CalculatorFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}});}}class CalculatorFrame extends JFrame{public CalculatorFrame(){setTitle("Calculator");CalculatorPanal panel = new CalculatorPanal();add(panel);pack();}}class CalculatorPanal extends JPanel{public CalculatorPanal(){setLayout(new BorderLayout());result =0;lastCommand = "=";start = true;display = new JButton("0");display.setEnabled(false);add(display,BorderLayout.NORTH);ActionListener insert= new InsertAction();ActionListener command=new CommantAction();panel = new JPanel();panel.setLayout(new GridLayout(4,4));addButton("7",insert);addButton("8",insert);addButton("9",insert);addButton("/",command);addButton("4",insert);addButton("5",insert);addButton("6",insert);addButton("*",command);addButton("1",insert);addButton("2",insert);addButton("3",insert);addButton("-",command);addButton("0",insert);addButton(".",insert);addButton("=",command);addButton("+",command);add(panel,BorderLayout.CENTER);}private void addButton(String label,ActionListener listener) {JButton button = new JButton(label);button.addActionListener(listener);panel.add(button);}private class InsertAction implements ActionListener{public void actionPerformed(ActionEvent event){String input = event.getActionCommand();if(start){display.setText("");start= false;}display.setText(display.getText()+input);}}private class CommantAction implements ActionListener{public void actionPerformed(ActionEvent event){String command = event.getActionCommand();if(start){if(command.equals("-")){display.setText(command);start= false;}else lastCommand = command;}else{calculate(Double.parseDouble(display.getText()));lastCommand =command;start =true;}}}public void calculate(double x){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;display.setText(""+result);}private JButton display;private JPanel panel;private double result;private String lastCommand;private boolean start;}三、实验结果:。

java课程设计---计算器

java课程设计---计算器

10信计2011-2012(二)《Java程序设计》课程设计设计题目模拟科学计算器设计时间学生姓名学生学号所在班级指导教师徐州工程学院数学与物理科学学院摘要计算器在我们的生活中常常会使用到,本次课程设计,通过界面以及其中的逻辑处理,完成了四则运算的处理。

通过awt包或者swing包中的界面设计部分对界面设计的细节可以有更多的了解。

利用面向对象的思想,将各个组件的事件响应分别用不同的类表达出来。

面向对象的思想从很大程度上可以让程序的思路更加清晰,而且可重用性很高。

对于具有相同事件响;应的组件则可以调用相同的类来处理事件。

除此之外,利用栈的知识来解决运算符优先的问题也让我们对java中的栈有了更多的了解。

关键词java;计算器;四则运算;面向对象;栈目录1需求分析 (1)1.1该计算器完成的功能 (1)1.2出错处理 (1)1.3数据处理 (1)2设计方案 (1)2.1设计方法 (1)2.2界面布局 (1)3系统设计 (2)3.1界面设计 (2)3.2功能模块 (2)3.2.1功能模块的设计方案 (2)3.2.2功能模块的实现方法 (3)4系统的开发和运行环境及安装配置说明 (3)5系统测试截图 (4)5.1系统初始运行界面 (4)5.2计算器按键测试 (4)5.3运算符重复输入测试 (4)5.4被除数为0的测试 (5)5.5小数点重复性检查 (5)5.6 backspace按键越界操作 (6)5.7优先级程序计算 (6)5.8计算结果 (7)6总结与心得体会 (7)附录 (9)1需求分析1.1该计算器完成的功能用户能够完成四则混合运算+、-、*、/,并且计算器能够自动的识别运算符的优先级,根据输入的运算公式,自动计算出相应的结果。

同时完成计算器中的backspace、ce按钮,能够完成消除或者删除的功能。

1.2出错处理当用户如果按下的是除零的操作,显示框将显示“被除数不能为0”。

当用户如果连续多次按下运算符,计算器自动记忆第一次运算符,并且做防连续输入相同的运算符或者是不同的运算符。

Java课程设计----简易计算器

Java课程设计----简易计算器

面向对象课程设计(Java)题目:简易计算器专业:电子商务目录一、设计内容 (1)二、设计要求 (1)三、总体设计 (1)四、具体设计 (1)五、程序设计 (6)设计体会与小结 (15)简易计算器设计一、设计内容设计一个图形界面(GUI)的应用程序,完成简单的运算。

通过计算器的编辑来检测和提升自己的java能力,并最终完成课程设计报告。

二、设计要求1、应用自己所学课程知识完成对计算器的基本任务。

2、查阅相关资料,学习和掌握项目中涉及的新知识,提高自学能力。

3、通过应用java程序编写计算器来提升对简单的图形界面的了解和掌握。

三、总体设计该计算器基本运算没有问题,清零、正负号、求倒数、退格功能都能很好的实现,总体能完成一个计算器的基本功能,但仍有许多地方需要改进,比如小数点的实现所存在的一些问题,虽然在基本的运算过程当中不会造成太大影响,但这依然不能认为是一个很好的计算器,同时,在另一方面,该计算器还没能很好的实现连续计算的功能,必须每次按下等号按钮计算出结果后才能用产生的结果接着进行下一次的计算,改进的方法是在运算符上同时注册Result类,让运算符同时拥有计算结果的功能。

四、具体设计1、程序流程图:2、主要代码展示及说明:总体代码的设计:程序主窗体继承JFrame类,使用24个JBotton按钮实现数字和基本功能,并且分别注册监听,采用6行4列网格布局,完成计算器界面的基本设置,最后对按钮进行计算分析,计算并显示结果。

这段代码主要是对程序的主框架进行相应的设置super("简易计算器");setSize(300,260);this.setLayout(new BorderLayout());jPanel1=new JPanel();jPanel1.setLayout(new GridLayout(1,1)); //一行一列的布局jPanel2=new JPanel();jPanel2.setLayout(new GridLayout(6,4)); //六行四列的布局resultField=new JTextField("0");jPanel1.add(resultField);this.add(jPanel1,BorderLayout.NORTH);this.add(jPanel2,BorderLayout.CENTER);设置数字按钮1到9并添加监控以及符号等的添加监控s1=new JButton(" 1 "); s1.addActionListener(this);s2=new JButton(" 2 "); s2.addActionListener(this);s3=new JButton(" 3 "); s3.addActionListener(this);s4=new JButton(" 4 "); s4.addActionListener(this);s5=new JButton(" 5 "); s5.addActionListener(this); s6=new JButton(" 6 "); s6.addActionListener(this); s7=new JButton(" 7 "); s7.addActionListener(this); s8=new JButton(" 8 "); s8.addActionListener(this); s9=new JButton(" 9 "); s9.addActionListener(this); s0=new JButton(" 0 "); s0.addActionListener(this); b1=new JButton(" + "); b1.addActionListener(this); b2=new JButton(" - "); b2.addActionListener(this); b3=new JButton(" * "); b3.addActionListener(this); b4=new JButton(" / "); b4.addActionListener(this);b5=new JButton(" ^ "); b5.addActionListener(this); b6=new JButton(" 开方 "); b6.addActionListener(this); b7=new JButton(" % "); b7.addActionListener(this);b8=new JButton(" x! "); b8.addActionListener(this);b9=new JButton(" 1/x "); b9.addActionListener(this);f1=new JButton(" . "); f1.addActionListener(this); f2=new JButton(" = "); f2.addActionListener(this);f3=new JButton(" C "); f3.addActionListener(this);f4=new JButton(" 负 "); f4.addActionListener(this); f5=new JButton(" 退格 "); f5.addActionListener(this); jPanel2.add(f3);jPanel2.add(b4);jPanel2.add(b3);jPanel2.add(f5);jPanel2.add(s7);jPanel2.add(s8);jPanel2.add(s9);jPanel2.add(b1);jPanel2.add(s4);jPanel2.add(s5);jPanel2.add(s6);jPanel2.add(b2);jPanel2.add(s1);jPanel2.add(s2);jPanel2.add(s3);jPanel2.add(b5);jPanel2.add(s0);jPanel2.add(f1);jPanel2.add(f4);jPanel2.add(b6);jPanel2.add(b7);jPanel2.add(b8);jPanel2.add(b9);jPanel2.add(f2);(3)数据输入用方法num(int i)设计如下:public void num(int i){String s = null;s=String.valueOf(i); //返回整数i的字符串表示形式if(end){ //如果数字输入结束,则将文本框置零,重新输入resultField.setText("0");end=false;}if((resultField.getText()).equals("0")){//如果文本框的内容为零,则覆盖文本框的内容resultField.setText(s);}else{ //如果文本框的内容不为零,则在内容后面添加数字str = resultField.getText() + s;resultField.setText(str);}以及用JFrame的方法actionPerformed(ActionEvent e)来获取数据(4)符号运算及清零、退格的设计如下:if(add){ // 加法num1=num1 +num2;}else if(sub){ //减法num1=num1 - num2;}else if(mul){ //乘法num1=num1 * num2;}else if(div){ //除法if(num2==0) throw new ArithmeticException("除数不能为零");elsenum1=num1 / num2;}else if(chf){ //乘方if(num2==0) num1=1;elsenum1=Math.pow(num1, num2);}else if(evo){ //开方if(num2<0) throw new ArithmeticException("被开方数不能小于零");else num1=Math.sqrt(num2);}else if(rec){ //倒数if(num2<0) throw new ArithmeticException("分母不能小于零");else num1=1/num2;}else if(per){ //百分num1=num1/100.0;}else if(pur){ //阶乘if(num2<0) throw new ArithmeticException("负数不能求阶乘");else for(int i=1;i<num2;i++){num1=i*num1;}}resultField.setText(String.valueOf(num1));end=true;}else if(e.getSource()==f3){ //实现清零resultField.setText("0");}else if(e.getSource()==f4){ //实现负号if(resultField.getText()!="0"){resultField.setText("-"+resultField.getText());}}else if(e.getSource()==f5){ //实现退格int i;i=(resultField.getText()).length();if(i==1){resultField.setText("0");}else { str=resultField.getText();resultField.setText(str.substring(0,i-1));}}}五、程序设计import java.awt.*;import java.awt.event.*;import javax.swing.*;public class test1 extends JFrame implements ActionListener{ // JFrame jframe1;JPanel jPanel1,jPanel2;JTextField resultField;JButtons1,s2,s3,s4,s5,s6,s7,s8,s9,s0,b1,b2,b3,b4,b5,b6,b7,b8,b9,f1,f 2,f3,f4,f5; private boolean end,add,sub,mul,div,evo,chf,per,rec,pur;private String str;private double num1,num2;public test1(){super("简易计算器");setSize(300,260);this.setLayout(new BorderLayout());jPanel1=new JPanel();jPanel1.setLayout(new GridLayout(1,1)); //一行一列的布局jPanel2=new JPanel();jPanel2.setLayout(new GridLayout(6,4)); //四行五列的布局resultField=new JTextField("0");jPanel1.add(resultField);this.add(jPanel1,BorderLayout.NORTH);s1=new JButton(" 1 "); s1.addActionListener(this);s2=new JButton(" 2 "); s2.addActionListener(this); s3=new JButton(" 3 "); s3.addActionListener(this); s4=new JButton(" 4 "); s4.addActionListener(this); s5=new JButton(" 5 "); s5.addActionListener(this); s6=new JButton(" 6 "); s6.addActionListener(this); s7=new JButton(" 7 "); s7.addActionListener(this); s8=new JButton(" 8 "); s8.addActionListener(this); s9=new JButton(" 9 "); s9.addActionListener(this); s0=new JButton(" 0 "); s0.addActionListener(this); b1=new JButton(" + "); b1.addActionListener(this); b2=new JButton(" - "); b2.addActionListener(this); b3=new JButton(" * "); b3.addActionListener(this); b4=new JButton(" / "); b4.addActionListener(this);b5=new JButton(" ^ "); b5.addActionListener(this); b6=new JButton(" 开方 "); b6.addActionListener(this); b7=new JButton(" % "); b7.addActionListener(this);b8=new JButton(" x! "); b8.addActionListener(this);b9=new JButton(" 1/x "); b9.addActionListener(this);f1=new JButton(" . "); f1.addActionListener(this); f2=new JButton(" = "); f2.addActionListener(this);f3=new JButton(" C "); f3.addActionListener(this);f4=new JButton(" 负 "); f4.addActionListener(this); f5=new JButton(" 退格 "); f5.addActionListener(this); jPanel2.add(f3);jPanel2.add(b4);jPanel2.add(b3);jPanel2.add(f5);jPanel2.add(s7);jPanel2.add(s8);jPanel2.add(s9);jPanel2.add(b1);jPanel2.add(s4);jPanel2.add(s5);jPanel2.add(s6);jPanel2.add(b2);jPanel2.add(s1);jPanel2.add(s2);jPanel2.add(s3);jPanel2.add(b5);jPanel2.add(s0);jPanel2.add(f1);jPanel2.add(f4);jPanel2.add(b6);jPanel2.add(b7);jPanel2.add(b8);jPanel2.add(b9);jPanel2.add(f2);this.add(jPanel2,BorderLayout.CENTER);}public void num(int i){String s = null;s=String.valueOf(i); //返回整数i的字符串表示形式if(end){ //如果数字输入结束,则将文本框置零,重新输入resultField.setText("0");end=false;}if((resultField.getText()).equals("0")){//如果文本框的内容为零,则覆盖文本框的内容resultField.setText(s);}else{ //如果文本框的内容不为零,则在内容后面添加数字str = resultField.getText() + s;resultField.setText(str);}}public void actionPerformed(ActionEvent e)throws ArithmeticException {//数字事件if(e.getSource()==s1)num(1);else if(e.getSource()==s2)num(2);else if(e.getSource()==s3)num(3);else if(e.getSource()==s4)num(4);else if(e.getSource()==s5)num(5);else if(e.getSource()==s6)num(6);else if(e.getSource()==s7)num(7);else if(e.getSource()==s8)num(8);else if(e.getSource()==s9)num(9);else if(e.getSource()==s0)num(0);//符号事件else if(e.getSource()==b1)sign(1);else if(e.getSource()==b2)sign(2);else if(e.getSource()==b3)sign(3);else if(e.getSource()==b4)sign(4);else if(e.getSource()==b5)sign(5);else if(e.getSource()==b6)sign(6);else if(e.getSource()==b7)sign(7);else if(e.getSource()==b8)sign(8);else if(e.getSource()==b9)sign(9);else if(e.getSource()==f1){ //实现"."str=resultField.getText();if(str.indexOf(".")<=1){str+=".";resultField.setText(str);}}else if(e.getSource()==f2){ //实现"=" num2=Double.parseDouble(resultField.getText());if(add){ // 加法num1=num1 +num2;}else if(sub){ //减法num1=num1 - num2;}else if(mul){ //乘法num1=num1 * num2;}else if(div){ //除法if (num2==0) throw new ArithmeticException("除数不能为零");elsenum1=num1 / num2;}else if(chf){ //乘方if(num2==0) num1=1;elsenum1=Math.pow(num1, num2);}else if(evo){ //开方if(num2<0) throw new ArithmeticException("被开方数不能小于零");else num1=Math.sqrt(num2);}else if(rec){ //倒数if(num2<0) throw new ArithmeticException("分母不能小于零");else num1=1/num2;}else if(per){ //百分num1=num1/100.0;}else if(pur){ //阶乘if(num2<0) throw new ArithmeticException("负数不能求阶乘");else for(int i=1;i<num2;i++){num1=i*num1;}}resultField.setText(String.valueOf(num1));end=true;}else if(e.getSource()==f3){ //实现清零resultField.setText("0");}else if(e.getSource()==f4){ //实现负号if(resultField.getText()!="0"){resultField.setText("-"+resultField.getText());}}else if(e.getSource()==f5){ //实现退格int i;i=(resultField.getText()).length();if(i==1){resultField.setText("0");}else { str=resultField.getText();resultField.setText(str.substring(0,i-1));}}}public void sign(int s){if(s==1){add=true;sub=false;mul=false;div=false;evo=false;chf=false;per=false;pur=false;rec=false;}else if(s==2){add=false;sub=true;mul=false;evo=false;chf=false;per=false;pur=false;rec=false;}else if(s==3){add=false;sub=false;mul=true;div=false;evo=false;chf=false;per=false;pur=false;rec=false;}else if(s==4){add=false;sub=false;mul=false;div=true;evo=false;chf=false;per=false;pur=false;rec=false;}else if(s==5){add=false;sub=false;mul=false;div=false;evo=false;chf=true;per=false;pur=false;}else if(s==6){ add=false;sub=false;mul=false;div=false;evo=true;chf=false;per=false;pur=false;rec=false;}else if(s==7){ add=false;sub=false;mul=false;div=false;evo=false;chf=false;per=true;pur=false;rec=false;}else if(s==8){ add=false;sub=false;mul=false;div=false;evo=false;chf=false;per=false;pur=true;rec=false;}else if(s==9){ add=false;sub=false;mul=false;evo=false;chf=false;per=false;pur=false;rec=true;}num1=Double.parseDouble(resultField.getText());end=true;}}public class mainclass {public static void main(String[] args){try{test1 th1=new test1();th1.show();}catch (Exception e){System.out.println(e);}}}设计体会与小结经过一周的实习,本学期的java课程设计到此也算告一段落了,经过这次的学习,我学到了很多东西,在此基础上更加巩固了自己对java基本知识及软件开发的了解。

java课程设计 设计一个图形界面的计算器,完成简单的算术运算

java课程设计 设计一个图形界面的计算器,完成简单的算术运算

java课程设计设计一个图形界面的计算器,完成简单的算术运算2.课设要求要求使用Java语言编写程序,实现基本的加、减、乘、除四种运算,并且要求在图形界面中显示运算过程和结果。

此外,还要求程序具有良好的用户交互性,能够处理用户的输入错误,并给出友好的提示信息。

二、需求分析通过对计算器的功能和用户需求进行分析,我们确定了以下需求:1.支持基本的加、减、乘、除四种运算;2.支持小数和负数的运算;3.支持多次连续运算;4.支持括号运算;5.支持清空、删除和撤销功能;6.支持错误输入的提示和纠正。

三、设计思路我们采用MVC架构设计模式,将程序分为三个模块:模型、视图和控制器。

1.模型:负责进行数学运算,计算结果并返回给控制器;2.视图:负责显示运算过程和结果,以及处理用户的输入;3.控制器:负责将用户输入传递给模型进行计算,并将计算结果传递给视图进行显示。

四、详细设计1.界面设计我们采用Java Swing框架设计图形界面,主要包括以下组件:1)文本框:用于显示运算过程和结果;2)按钮:用于输入数字、运算符和其他功能键;3)菜单栏:用于提供设置和帮助等功能。

2.模型设计我们设计了一个Calculator类,包括以下方法:1)n:加法运算;2)n:减法运算;3)n:乘法运算;4)n:除法运算;5)calculate:根据用户输入的表达式进行计算。

3.控制器设计我们设计了一个Controller类,负责将用户输入传递给模型进行计算,并将计算结果传递给视图进行显示。

Controller 类包括以下方法:1)handleInput:处理用户输入;2)updateView:更新视图。

五、运行调试与分析讨论在开发过程中,我们遇到了一些问题,如括号匹配、小数运算精度等,通过调试和讨论,最终解决了这些问题。

在测试过程中,我们发现程序运行稳定,界面友好,能够满足用户的需求。

六、设计体会与小结通过这次课程设计,我们深入了解了Java语言和GUI编程,掌握了MVC架构设计模式的应用,提高了团队合作和问题解决能力。

Java课程设计(计算器)

Java课程设计(计算器)
面设计
界面布局:简洁明了,易于操作 输入框:用于输入数字和运算符号 计算按钮:用于执行计算操作
结果显示框:用于显示计算结果 历史记录框:用于查看历史计算记录 帮助按钮:用于查看帮助信息或联系客服
功能需求优先级
基本运算功能:加、 减、乘、除
科学计算功能:平方、 开方、三角函数等
错误处理:处 理用户输入错 误,如输入非
数字字符等
功能扩展:支 持更多运算符 号和功能,如 平方、开方等
代码优化:提 高代码可读性 和可维护性, 减少代码冗余
和错误
测试与调试
单元测试:对每个功能模块进行独立测试,确保其正确性 集成测试:将各个功能模块组合起来进行测试,确保整体功能的正确性 边界值测试:对输入和输出边界值进行测试,确保程序在边界条件下的稳定性
Part Five
总结与展望
项目总结
项目目标:设计并实现一个计算器 项目成果:实现了加减乘除、平方根、正弦余弦等计算功能 项目难点:处理用户输入和错误处理 项目改进:优化界面设计,增加更多计算功能,提高用户体验
项目亮点与不足
● 项目亮点: - 界面设计简洁明了,易于操作 - 代码结构清晰,易于维护和扩展 - 功能齐全,满足日常 计算需求 - 性能稳定,响应速度快
实际应用价值
提高编程能力: 通过设计计算 器,可以提升 Java编程技能
理解算法原理: 通过设计计算 器,可以深入 理解算法原理
和实现方法
提高问题解决 能力:通过设 计计算器,可 以提升解决实 际问题的能力
提升团队协作 能力:通过设 计计算器,可 以提升团队协 作和沟通能力
THANKS
汇报人:
Java课程设计(计算器)
,a click to unlimited possibilities

JAVA程序设计课程作业——标准计算器的实现报告

JAVA程序设计课程作业——标准计算器的实现报告

JA V A程序设计课程作业——关于计算器的设计说明电信06XX班王XX 012006012XXX郭XX 012006012XXX陈X 012006012XXX 一实验目的1、通过编写计算器程序,以达到熟悉和掌握JA V A的目的。

2、在编程的过程中,提升自己的能力。

3、能够有效的增强团队合作的能力。

二实验内容1、编写一个计算器,应该有如图类似的图形用户界面。

2、能够实现普通的加减乘除运算。

3、可以适当的增加一些科学计算器的功能。

三.程序设计及源码实现:程序设计结构:copyItemeditItempasteItemtItemmainMenu viewMenu sItem(NORTH)numberGrouptopHelphelpMenuaboutHelpPanel textAnswer(CENTER)textMemorylabelMenSpacePanel2 buttonN(NORTH) buttonBkbutton Cebutton CPanel1(SOUTH)button MC 7 8 9 Div Sqrtbutton MR 4 5 6 * %Panel3 button MS 1 2 3 - Dao(CENTER)button M+ 0 +/- Dot + +源码如下:import java.awt.*;import ng.*;import javax.swing.*;import javax.swing.event.*;import java.awt.event.*;import java.text.DecimalFormat;public class Calculator implements ActionListener //导入动作监听接口{//设计面板中的组件JFrame frame;JTextField textAnswer;JPanel panel, panel1, panel2, panel3;JMenuBar mainMenu;JTextField textMemory;JLabel labelMemSpace; //labelMemSpace单纯做摆设,控制面板的形状JButton buttonBk, buttonCe, buttonC;JButton button[];JButton buttonMC, buttonMR, buttonMS, buttonMAdd;JButton buttonDot, buttonAddAndSub, buttonAdd, buttonSub, buttonMul,buttonDiv, buttonMod ,buttonN;JButton buttonSqrt, buttonDao, buttonEqual;JMenu editMenu, viewMenu, helpMenu;JMenuItem copyItem, pasteItem, tItem, sItem, numberGroup, topHelp, aboutCal;DecimalFormat df; //设置数据输出精度boolean clickable; //控制当前能否按键double memoryd; //使用内存中存储的数字int memoryi;double vard, answerd; //用来保存double型数据的中间值(vard)和最后结果(answerd)short key = -1, prekey = -1; //key用来保存当前进行何种运算,prekey用来保存前次进行何种运算String copy; //做复制用JTextArea help; //帮助JScrollPane scrollHelp;//构造函数public Calculator(){clickable = true;answerd = 0;frame = new JFrame("计算器");df = new DecimalFormat("0.##############"); //设置数据输出精度(对于double型值) textAnswer = new JTextField(15);textAnswer.setText(" ");textAnswer.setHorizontalAlignment(JTextField.RIGHT); //文本右对齐textAnswer.setEditable(false); //设置为不可编辑textAnswer.setBackground(new Color(255, 255,255));//白底色panel = new JPanel();frame.setContentPane(panel); //panel1 = new JPanel();panel2 = new JPanel();panel.setLayout(new BorderLayout());//设计整个面板mainMenu = new JMenuBar();editMenu = new JMenu("编辑(E)");viewMenu = new JMenu("查看(V)");helpMenu = new JMenu("帮助(H)");copyItem = new JMenuItem(" 复制(C) Ctrl+C");copyItem.addActionListener(this); //增加动作事件监听pasteItem = new JMenuItem(" 粘贴(V) Ctrl+V");pasteItem.addActionListener(this); //增加动作事件监听editMenu.add(copyItem);editMenu.add(pasteItem);tItem = new JMenuItem("●标准型(T)");tItem.addActionListener(this); //增加动作事件监听sItem = new JMenuItem(" 科学型(S)");sItem.addActionListener(this); //增加动作事件监听numberGroup = new JMenuItem(" 数字分组(I)");numberGroup.addActionListener(this); //增加动作事件监听viewMenu.add(tItem);viewMenu.add(sItem);viewMenu.add(numberGroup);topHelp = new JMenuItem(" 帮助主题(H)");topHelp.addActionListener(this); //增加动作事件监听help = new JTextArea(5, 20);scrollHelp = new JScrollPane(help);help.setEditable(false);help.append("执行简单计算\n");help.append("1. 键入计算的第一个数字。

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

Java课程设计报告题目简单计算器
所在院系软件学院
学生姓名李菘专业市场营销
班级08-1 学号03
2009年7 月19日
1.1本系统的主要功能
本系统可进行加,减,乘,除,取倒数,开方的运算和编辑及帮助功能。

1.2系统包含的类及类之间的关系
本系统共包括一个java源文件。

如图1-1所示。

图1-1 类之间的关系
2.2 java源文件及其功能
1.JButton.java
该文件创建了计算器的运算功能按钮 +,-,*,/,1/x,sqrt
2.JMenuBar.java
添加了计算器功能按钮编辑和帮助
2.1主类calculator
(1)成员变量见表2-1
(2)源代码见文件calculator.java
2.2类JButton
(1)成员变量见表2-2
(2)方法见表2-3
2.3JMenuBar
(1)成员变量见表2-4
(2)方法见表2-5
第三章运行效果
3.1 系统主界面
图3-1 系统主窗口
3.2 计算器录入界面
图3-2 计算器录入2674界面。

相关文档
最新文档