java课程设计—计算器

合集下载

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计算器课程设计一、课程目标知识目标:1. 让学生掌握Java编程语言的基本语法,特别是运算符、表达式和流程控制的相关知识。

2. 使学生能够理解面向对象编程的基本概念,如类的定义、对象创建和使用。

3. 让学生学会运用Java编写简单的计算器程序,实现对基本数学运算(加、减、乘、除)的支持。

技能目标:1. 培养学生运用Java编写程序解决问题的能力,特别是针对计算器功能的实现。

2. 培养学生分析问题、设计算法、编写代码、调试程序的能力。

3. 提高学生团队协作和沟通能力,通过小组合作完成复杂的计算器功能设计。

情感态度价值观目标:1. 激发学生对计算机编程的兴趣和热情,培养其探究精神。

2. 培养学生严谨、细致、负责任的科学态度,养成良好的编程习惯。

3. 培养学生面对挑战不畏难,勇于尝试,持续改进的良好品质。

课程性质:本课程为信息技术学科的计算器编程实践课程,结合了理论知识和实际操作,注重培养学生的动手能力和实际应用能力。

学生特点:学生处于初中或高中年级,已具备一定的计算机操作能力,对编程有一定了解,但实际编程经验较少。

教学要求:结合学生特点和课程性质,课程目标应具体、可衡量,注重实践操作,使学生在完成课程学习后能够独立编写简单的计算器程序。

在教学过程中,将目标分解为具体的学习成果,便于教学设计和评估。

二、教学内容1. Java基本语法:变量、数据类型、运算符、表达式。

- 课本章节:第2章 Java基本语法2. 面向对象基础:类的定义、构造方法、对象创建、成员变量和成员方法。

- 课本章节:第4章 面向对象编程基础3. 流程控制:顺序结构、选择结构、循环结构。

- 课本章节:第3章 流程控制4. 计算器功能实现:加、减、乘、除运算方法编写,异常处理。

- 课本章节:第6章 方法与递归、第7章 异常处理5. 图形用户界面设计:Swing图形界面编程,按钮、文本框组件应用。

- 课本章节:第9章 Java图形用户界面编程教学大纲:第1周:Java基本语法学习,完成相关练习题。

java计算器课程设计

java计算器课程设计
2.探索并实现用户自定义函数的功能,拓展计算器的灵活性;
3.通过线程控制,实现计算器的异步计算功能,如后台计算与进度显示;
4.介绍网络编程的基础,探讨如何实现网络分布式计算器;
5.结合数据库知识,设计并实现计算器的历史记录管理功能;
6.分析并讨论计算器在性能优化方面的策略,如减少重复计算、缓存结果等;
7.鼓励学生进行创新设计,如结合人工智能技术,实现智能计算器功能。
5、教学内容
《Java计算器课程设计》在课程的最后阶段,将重点攻克以下教学内容:
1.代码重构,优化已有计算器项目的结构,提高代码可读性和可维护性;
2.实施单元测试,确保各个模块功能的正确性和稳定性;
3.介绍软件发布流程,包括版本控制、构建和打包等;
5.使用switch-case语句实现基本的运算操作(加、减、乘、除);
6.异常处理,避免除数为0等运行错误;
7.使用循环结构,实现计算器的重复使用功能。
2、教学内容
《Java计算器课程设计》紧接着上一部分,进一步深化以下教学内容:
1.引入函数的概念,将计算功能模块化;
2.设计并实现自定义函数,如加法、减法、乘法、除法运算;
5.探讨设计模式在计算器中的应用,如工厂模式创建运算对象;
6.整合所学知识,实现一个具有图形用户界面的计算器应用程序;
7.强调代码规范和注释的编写,培养学生的良好编程习惯。
4、教学内容
《Java计算器课ຫໍສະໝຸດ 设计》在高阶层次上,将以下教学内容融入课程:
1.引导学生运用事件处理机制,增强图形用户界面的交互性;
3.理解并应用变量的作用域,区分局部变量与全局变量;
4.掌握并能运用Java中的数据类型转换;
5.实现用户界面优化,包括但不限于菜单显示、错误提示、运算结果展示;

计算器java课程设计(完整版)

计算器java课程设计(完整版)

目录一、课设任务及要求 (1)二、需求分析 (2)三、设计思路 (3)四、详细设计 (4)五、运行调试与分析讨论 (14)六、设计体会与小结 (18)七、参考文献 (19)一、课设任务及要求1)课设任务:⑴、设计的计算器应用程序可以完成加法、减法、乘法、除法以及取余运算(可以进行浮点数和负数的运算);⑵、有求倒数、退格和清零功能。

2)创新要求:能进行正切、余弦,以及求平方根、指数(包括对e)、自然对数运算。

3)设计要求①设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。

且有小数点、正负号、求倒数、退格和清零功能。

②课程设计可选用Eclipse、JBuilder、NetBeans等作为开发平台以提高开发效率,通过资料查阅和学习尽可能熟练掌握其中一种集成开发环境。

③认真按时完成课程设计报告,课程设计报告内容包括:设计任务与要求、需求分析、设计思路、详细设计、运行调试与分析讨论和设计体会与小结六个部分。

二、需求分析⑴、开发的技术及功能本课程设计是要做一个图形界面的计算器,其界面主要是由swing组件中的控件构成。

程序实现了计算器的基本功能有:加、减、乘、除基本算术运算(可以进行浮点和负数运算)和sin、cos、tan等三角函数求值运算,同时能进行指数运算和自然对数运算,还有求倒数、退格和清零功能。

⑵设计思路设计这个计算器主要是参考Windows操作系统中自带的计算器,由于编者水平和时间的限制,不能将计算器设计到科学型及其他更复杂的类型,在设计过程中还参考了一些其他的优秀设计。

但本计算器除了常用的加减乘除(可以进行浮点和负数运算)这些基本运算外,还有求余、求倒、退格、清零,甚至还能进行一些复杂科学的运算,比如余弦(cos)、正切(tan)、指数运算(pow)、自然对数运算(log)、求平方根(sqrt)以及对e的指数运算(exp),并且还能进行连续运算。

总体上说来,本计算器设计简单,代码很少,程序很小,但功能却很强大,这是同类计算器所不具备的。

Java课程设计报告计算器

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

java程序计算器课程设计

java程序计算器课程设计一、课程目标知识目标:1. 让学生掌握Java基本语法和程序结构,特别是运算符、控制流程等与计算器相关的知识;2. 帮助学生理解计算器程序的功能需求,设计合理的类和方法;3. 引导学生运用所学知识实现一个具备加、减、乘、除基本运算功能的计算器程序。

技能目标:1. 培养学生运用Java语言编写、调试程序的能力;2. 提高学生分析问题、解决问题的能力,能够根据实际需求设计合适的程序结构;3. 培养学生团队协作能力,通过小组讨论和分工,共同完成计算器程序的设计与实现。

情感态度价值观目标:1. 激发学生对编程的兴趣,培养其主动探究、积极实践的精神;2. 引导学生认识到编程在解决问题中的实际应用,增强其学习责任感;3. 培养学生良好的编程习惯,注重代码规范和可读性,提高其职业素养。

本课程针对高年级学生,考虑到他们已具备一定的编程基础,课程性质为实践性、综合性。

在教学过程中,注重引导学生主动参与、动手实践,将目标分解为具体的学习成果,以便在教学设计和评估中明确方向。

通过本课程的学习,期望学生能够独立完成一个简单的计算器程序,并在实践中提高自身编程能力和团队协作能力。

二、教学内容1. Java基本语法:变量声明与赋值、数据类型、运算符、表达式;2. 控制流程:分支结构(if-else、switch)、循环结构(for、while、do-while);3. 方法定义与调用:无参方法、有参方法、返回值方法;4. 类与对象:类的定义、对象的创建与使用、构造方法;5. 计算器功能需求分析:加、减、乘、除运算,界面设计(可选);6. 编程实现:编写计算器类,实现加、减、乘、除方法,搭建主程序框架;7. 测试与调试:单元测试,集成测试,异常处理;8. 代码优化与重构:提高代码可读性,遵循编程规范,增强程序健壮性。

教学内容依据课程目标,结合教材相关章节进行组织。

具体安排如下:第一课时:Java基本语法与运算符复习;第二课时:控制流程和方法定义;第三课时:类与对象基础;第四课时:计算器功能需求分析与设计;第五课时:编写计算器类,实现基本运算方法;第六课时:搭建主程序框架,进行单元测试;第七课时:集成测试,优化代码,进行调试;第八课时:总结与反馈。

java课程设计简易计算器


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

javs课程设计计算器

javs课程设计计算器一、课程目标知识目标:1. 学生能理解计算器程序的基本结构,掌握Java中实现计算器功能的相关语法知识。

2. 学生能运用所学知识,自主编写简单的计算器程序,实现加、减、乘、除四则运算。

3. 学生了解并掌握异常处理的基本方法,提高程序健壮性。

技能目标:1. 学生掌握使用Java编写控制台应用程序的基本步骤,培养编程实践能力。

2. 学生能够运用条件语句和循环语句实现计算器的逻辑运算。

3. 学生学会使用调试工具,分析并解决程序中出现的错误。

情感态度价值观目标:1. 学生通过编写计算器程序,体验编程解决问题的乐趣,提高学习Java的兴趣。

2. 学生在合作学习中,培养团队协作能力和沟通能力,形成良好的编程习惯。

3. 学生认识到编程在实际生活中的应用价值,增强对信息技术的认同感。

课程性质:本课程为Java语言程序设计的基础实践课程,旨在帮助学生掌握Java编程的基本知识,培养编程思维和实际操作能力。

学生特点:学生为初中生,具备一定的逻辑思维能力,对计算机编程有一定兴趣,但实践经验不足。

教学要求:注重理论与实践相结合,通过实际操作和案例分析,使学生掌握计算器程序的编写方法,提高编程实践能力。

同时,关注学生个体差异,提供个性化指导,确保每位学生都能达到课程目标。

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

二、教学内容1. 程序设计基础:回顾Java基本语法,重点掌握变量声明、数据类型、运算符、表达式等概念。

相关教材章节:第一章 Java语言概述,第二章 基本数据类型与运算符。

2. 控制台输入输出:学习使用Scanner类实现控制台输入,掌握打印输出语句的使用。

相关教材章节:第三章 输入输出流。

3. 控制结构:学习条件语句(if-else,switch)和循环语句(for,while),理解其执行逻辑。

相关教材章节:第四章 选择结构,第五章 循环结构。

4. 方法:掌握方法的定义、调用和返回值,理解方法的重载概念。

java课程设计--计算器(带源码)

p2.add(b6);
b6.addActionListener(this);
p2.add(b14);
b14.addActionListener(this);
p2.add(b7);
b7.addActionListener(this);
p2.add(b8);
b8.addActionListener(this);
5.实验方法与步骤:
程序源码
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.util.*;
publicclassCalculatorimplementsActionListener {
JButtonb1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,
sum=sum* d;
tf.setText(String.valueOf(sum));
}elseif(("/").equals((String)stElement())) {
sum=sum/ d;
tf.setText(String.valueOf(sum));
}elseif(("=").equals((String)stElement())) {
}
if(e.getActionCommand() =="x")//乘号的实现;
{
if(("+").equals((String)stElement())
|| ("-").equals((String)stElement())
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java课程设计报告题目:计算器专业:网络工程学号:082055106姓名:付振华日期:2011-11-26目录一、课程设计任务及要求 (3)二、需求分析 (3)三、设计思路 (3)四、详细设计 (4)五、运行调试与分析讨论 (14)六、设计体会与小结 (14)七、参考文献 (15)一、课程设计任务及要求1.课程设计任务:模仿windows自带的计算器,设计一个图形界面(GUI)的计算器应用程序,完成简单的算术运算。

通过对计算器的编辑来检测和提升自己的java编程能力,并最终完成课程设计报告!2.课程设计要求:(1)应用自己所学课程知识完成对计算器的基本任务。

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

(3)通过应用java程序编写计算器来提升自己对简单的图形界面有一定的掌握和了解。

二、需求分析1.设计的计算器可以完成加法、减法、乘法、除法的简单运算。

2.实现一些简单的扩展运算,如:正负号、倒数、退格、清零等功能。

3.添加小数点功能,用以实现浮点型数据的计算。

4.使用布局管理器设计一个计算器的界面,使用事件监听器处理数据的输入,并完成相关的计算。

三、设计思路1.界面设计:(如图1)图12.设计思路:(1)根据所设计出来的界面,首先要设计其GUI界面,总体界面有一个文本框,20个按钮,总体界面用BorderLayout布局,文本框放置在最NORTH,然后0到9以及+,-,*,/等按钮放置到一个面板Panel中,完成界面设计。

(2)设计计算流程,首先点击数字按钮时,将按钮数值添加到文本框当中,并将该数值保存到一个字符串中,再次点击数字按钮时,将之前保存的字符串与新的数值拼接起来,再添加到文本框当中,直到点击运算符按钮时,将文本框当中的字符串保存在一个字符串变量中,然后重置文本框内容,将运算符号显示到文本框中,随后输入第二个计算数据时,用同样的办法保存数据,最后通过控制“=”运算符先将字符串数据转化成双精度类型,然后计算出结果并显示到文本框当中。

(3)基本运算设计完成以后则开始考虑其他个别功能的实现,例如倒数、清零、退格等功能的实现,清零直接重置文本框内容,退格功能则采用substring函数截取字符串长度。

四、详细设计1.程序流程图:2.主要代码展示及说明:import java.awt.*;import java.awt.event.*;public class Calculation extends WindowAdapter implements ActionListener {double dResult=0;double dNowInput=0;double dMemory;int n=0; //记载小数位数int nOperation=1; // 记录运算符类型int nBitsNum=0; //记录总共输入的位数boolean alreadyHaveDot=false; //已经有小数点?boolean keyAvailable=true;boolean alreadyClickedEqueal=false; //是否按下过"="?boolean isTempNowInput=false; //是否在计算出结果后直接按运算符将结果赋给了当前输入值?Frame f;Panel p1,p2,p3,p4,p5,p6;TextField tf1,tf2;Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b0;Button bDiv,bSqrt,bMulti,bMinus,bPercent,bPlus,bReciprocal,bEqual,bDot,bNeg ative;Button bBackspace,bCE,bC,bMR,bMS,bMC,bM;public void display(){f=new Frame("计算器");f.setSize(280,213);f.setLocation(200,200);f.setBackground(Color.LIGHT_GRAY);f.setResizable(false);f.setLayout(new BorderLayout(3,3));p1=new Panel(new GridLayout(1,3,5,5)); //用于存放backspace,ce,c三键p2=new Panel(new GridLayout(4,5,5,5)); //用于存放数字区及附近共20键, 此处间隙设置可能不合理,以后调整p3=new Panel(new GridLayout(5,1,5,5)); //用于存放MC,MR,MS,M+键及显示M状态文本框,此处间隙设置可能不合理,以后调整p4=new Panel(new FlowLayout()); //用于存放p1,p2p5=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);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.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);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.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);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.addActionListener(this); bCE.addActionListener(this);bC.addActionListener(this);p1.add(bBackspace);p1.add(bCE);p1.add(bC);tf2=new TextField(2);tf2.setEnabled(false);tf2.setBackground(Color.LIGHT_GRAY); bMC=new Button("MC");bMR=new Button("MR");bMS=new Button("MS");bM=new Button("M+");bMC.addActionListener(this);bMR.addActionListener(this);bMS.addActionListener(this);bM.addActionListener(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.getActionCo mmand().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.getActionComman d());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.");}// 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 static void main(String args[]){Calculation cal=new Calculation();cal.display();}public void windowClosing(WindowEvent e){System.exit(0);}}五、运行调试与分析讨论1.简单的运算:(以除法为例:569/56)分析:计算的结果为10.160714285714286,为双精度型,计算的结果被设置在文本框的最右端,该计算器的一个特点是可直接在文本框中输入数据以及进行更改。

相关文档
最新文档