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课设 模拟科学计算器

Java课程设计设计题目模拟科学计算器班级计本1120班姓名王XX 学号 1162042000一、设计目的《Java课程设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。

其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高自身的应用能力。

二、设计任务模拟科学计算器要求:界面模拟Windows中的计算器程序。

实现基本数学运算、函数等功能:加、减、乘、除、阶乘、正弦、余弦和指数运算。

实现要点:添加相关组件并进行按钮事件处理。

三、课题设计思想对于此计算器程序,首先要设计其GUI界面,总体界面有一个文本框,22个按钮,总体界面用BorderLayout布局。

文本框放置在最north,然后0到9以及+,-,×,÷,.,!的按钮放置到一个面板Panel中,添加到整体布局的center,最后sin,cos,^,=的按钮放在最south,界面设计完成。

本项目用到了Java中的GUI界面和swing组件以及awt布局,所以简单易用,它能完成如下的几个小功能:点击按钮中的数字键和运算符键就能进行加、减、乘、除阶乘、正弦、余弦和指数运算。

还能通过用户自己在文本框中输入数字,进行简单运算;如果输入有误时可以按Clear撤销后重新输入新数据。

四、设计内容1.需求分析本项目需要实现一个具有四则运算的计算器,能够实现基本的加、减、乘、除运算,以及其他的辅助功能(阶乘、正弦、余弦、指数运算);界面简洁实用,模拟Windows中的计算器程序,要提供主要的设计思路、类的设计。

2.总体设计(1)包的描述本程序导入了java.awt.BorderLayout包,java.awt.Color包,java.awt.GridLayout包,java.awt.event.ActionEvent包,java.awt.event.ActionListener包,java.text.DecimalFormat包,javax.swing.JButton包,javax.swing.JFrame包,javax.swing.JPanel包,javax.swing.JTextField包(2)类的描述本程序共有五个类。

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课程设计说明书题目:模拟科学计算器姓名:学号:班级:网络工程11-2山东科技大学2013年11月7日目录1 课设任务及要求 (1)1.1课设任务 (1)1.2设计要求 (1)2 需求分析 (2)2.1 设计背景 (2)2.2 需求获取 (3)2.3 程序功能图 (4)3 设计思路 (4)3.1 界面布局 (4)3.2 类的定义 (5)3.3变量的定义 (5)4 详细设计 (6)4.1整体概述 (6)4.2 误操作处理 (7)4.3流程图和结构图 (8)5 系统调试 (11)5.1 程序界面 (11)5.2 运行界面 (11)6 心得与体会 (15)7 参考文献 (16)8 附录 (16)1 课设任务及要求1.1课设任务:要求:界面模拟Windows中的计算器程序。

实现基本数学运算、函数等功能:加、减、乘、除、阶乘、正弦、余弦和指数运算。

实现要点:添加相关组件并进行按钮事件处理。

要求提交Application和Applet两个版本的程序。

1.2设计要求①设计的java计算器应用程序可以完成加法、减法、乘法、除法和取余运算,和cos,sin,tan等三角函数功能以及阶乘和指数等运算,且有小数点、正负号、求倒数、退格和清零功能。

具体可参考windows附件下的计算器②课程设计使用Eclipse4.2等作为程序编译和运行测试的开发平台,采用JDK-7u25作为java开发环境,使用Microsoft Office Visio 2007作为绘图工具。

③认真按时完成课程设计报告,制作演讲PPT,积极报名上讲台向大家演示和讲解自己的程序。

提交打印版的报告以及电子版的原稿和Application和Applet两个版本的程序代码。

2 需求分析2.1 设计背景本程序是老师提供的几个课程设计题目中比较中等的题目。

要求实现模拟的科学计算器功能,主要包括加减乘除四则运算和阶乘,三角函数以及指数的运算。

具体的功能我参考了Windows7下的计算机小程序,并根据其界面设计了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第三次作业科学计算器(附源代码)JAVA第三次作业选题:科学计算器一、设计思路(1)布局1.数字键盘有0~9和小数点2.符号键盘有+某÷,幂,开方,lg,ln3.功能按键有清屏(AC)和删除(Del)(2)计算器流程状态转移图设定的标志位和变量有:booleannumflag=fale;//标志:是否输入数字booleanopflag=fale;//标志:是否输入运算操作符Stringt某t=null;//显示到文本框里的字符串Stringnum_t某t=\;//当前操作数的字符串形式Stringop=\;//存放输入的运算操作符num1=0;//第一个操作数num2=0;//第二个操作数privateBigDecimalbig_num1=newBigDecimal(Double.toString(0)); //解决浮点数的精度丢失问题privateBigDecimalbig_num2=newBigDecimal(Double.toString(0));1.关于操作数操作数为输入数字时会改变的数,有num1和num2。

按下运算符和控制字符,会设定当前下在键入的操作数,由opflag控制,fale表示正在操作num1,true表示正在操作num2。

初始状态下的操作数为num1。

按下AC会恢复操作数为初始状态num1。

按Delete、开方、lg、ln不会改变当前的操作数。

其中后三者只对num1有效。

其他的运算符和控制符都会使操作数为num2。

2.计算器的状态框图输入第一个数,比如53numflag=true(num1)opflag=falenum_t某t=”53”op=””t某t=”53”初始状态numflag=faleopflag=falenum_t某t=””op=””t某t=nullnum1,num2=0按下一个运算符,比如+numflag=faleopflag=truenum_t某t=””op=”+”t某t=”num1+”其中按下按=显示结果,恢复初始状态numflag=true(num1)opflag=falenum_t某t=””op=””t某t=”reult”“=”后,结果存输入第二个数,比如66入numflag=true(num2)opflag=truenum_t某t=”66”op=””t某t=”num1+66”num1,继续输入数字会在num1的结果上处理。

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

《高级语言程序设计(2)》课程设计报告专业:班级:学号:姓名:完成日期: 指导教师:1、程序设计说明书【设计题目】科学计算器【问题描述】本程序为设计一个科学计算器,用于进行数值计算。

可以进行数据的加减乘除,对数等计算。

【软件功能】1 图形界面:应用AWT和Swing设计工作界面,按下数字时显示数字,按下“=”时显示结果。

2 计算器基本功能:加减乘除四则运算,倒数,开平方等。

3 附加运算功能:三角函数,对数,阶乘,度转化为弧度等。

4 计算器的存储功能:清除中间结果,使用中间结果,存储中间结果及累加中间结果5 用不同颜色进行分区【算法思想】本程序设计一个主类和四个内部类。

通过在主类中调用四个类来实现程序的各个功能。

【类的设计】1主类SmartCalculator类,继承了JFrame类○1成员变量tf是JTextField对象,单行文本框,用来显示数据。

panel1,panel2,panel3,panel4是JPanel对象,用来盛放按钮。

Panel1盛放“←”,“CE”,“C”按钮,Panel2盛放功能区按钮,Panel3盛放记忆区按钮,Panel4盛放面板Panel1和Panel2isResult,flag是布尔型变量result是double型变量,存储结果SpecialNumActionListener是SpecialNum类的对象,监听特殊数字按钮df是DecimalFormat类的对象,控制输出格式○2方法SmartCauculator是构造方法,完成面板的布局并调用init方法init方法调用addButton方法向面板中增加按钮addButtion方法统一设置按钮的使用方式,参数包括panel,name,action,color,每次完成向面板添加按钮,设置名字,添加键盘监听器和设置按钮颜色getResult方法实现四则运算,并输出main方法,程序入口2内部类FunctionSigns,继承接口ActionListener,实现接口的actionProform抽象方法,完成开平方,求对数等操作3内部类ClearArea,继承接口ActionListener,实现接口的actionProform抽象方法,对清除区三个按钮“←”,“CE”,“C”进行监听,实现删除功能。

4内部类SpecialNum,继承接口ActionListener,实现接口的actionProform抽象方法,对π,e,及数字键监听5 Dot对小数点进行监听【用户界面】【模块划分及调用关系】程序分为五个模块,在主类中对剩余四个模块进行调用【模块流程图】ClearArea 流程图【运行说明】程序运行后会弹出计算器界面,用户使用鼠标点击按钮就可以进行数据计算。

2、 程序上机调试报告【语法错误及其排除】在使用if ()else if ()嵌套语句时经常出现语法错误,在查阅书籍后排除【算法错误及其排除】在对抽象方法actionPerformed 进行现实时总出现错误,最后排除。

3、 程序测试结果【测试数据】计算36+47,99÷3,输出π,e 的值,将180度转换成弧度,【输出结果】【收获及体会】从本次课程设计的完成中,首先我发现了我有很多不足的地方,最突出的是所学的东西太少了,根本满足不了平时编写程序的需要。

此外,了解了课程设计的要求与方法,学会了程序设计基本步骤。

同时,使我感觉到,一个优秀的程序,不仅仅是可以运行的,更应该具较高的效率,合理的结构,良好的可读性和一定的容错性。

除此之外,一个程序的成功完成需要严谨的务实态度。

认真的态度是课程设计取得成功的一项非常重要的保证。

在以后的学习中,我将虚心向学力争编写出更有意义的程序。

4、 源程序代码(Java 语言,要求有尽可能多的注释语句)package 课程设计之计算器;import java.awt.*;import java.awt.event.*;import java.text.DecimalFormat;import javax.swing.*;public class SmartCalculator extends JFrame{ /****/private static final long serialVersionUID = 1L;private JTextField tf;private JPanel panel1,panel2,panel3,panel4;private String back;private boolean isResult=true,flag=false;private String operator="=";private double result=0;private SpecialNum SpecialNumActionListener;private DecimalFormat df;public SmartCalculator(){super("科学计算器");//设置标题栏df=new DecimalFormat("#.####");//保留四位小数this.setLayout(new BorderLayout(10,5));//边界布局panel1=new JPanel(new GridLayout(1,3,10,10));//1行3列panel2=new JPanel(new GridLayout(5,6,5,5));//5行6列,水平间隔和竖直间隔都设为5panel3=new JPanel(new GridLayout(5,1,5,5));//5行1列,水平间隔和竖直间隔都设为5panel4=new JPanel(new BorderLayout());//边界布局SpecialNumActionListener=new SpecialNum();//实现对特殊数字的监听tf= new JTextField(); //文本区域,即计算器的显示区域tf.setEditable(true); //文本区域可编辑,^C复制结果tf.setBackground(Color.WHITE); //文本区域背景色为白tf.setHorizontalAlignment(JTextField.RIGHT);//文字右对齐tf.setText("0");tf.setBorder(BorderFactory.createLineBorder(Color.RED) );tf.setEditable(false); //设为不可编辑init(); //调用init方法初始化计算器}/***初始化界面*/private void init(){addButton(panel1,"←",new ClearArea(),Color.BLACK);//黑色addButton(panel1,"CE",new ClearArea(),Color.BLACK);addButton(panel1,"C",new ClearArea(),Color.BLACK);addButton(panel2,"1/x",newFunctionSigns(),Color.magenta);//洋红色addButton(panel2,"log",newFunctionSigns(),Color.magenta);addButton(panel2,"7",SpecialNumActionListener,Color.b lue);//蓝色addButton(panel2,"8",SpecialNumActionListener,Color.b lue);addButton(panel2,"9",SpecialNumActionListener,Color.b lue);addButton(panel2,"÷",newFunctionSigns(),Color.BLACK);addButton(panel2,"n!",newFunctionSigns(),Color.magenta);addButton(panel2,"sqrt",newFunctionSigns(),Color.magenta);addButton(panel2,"4",SpecialNumActionListener,Color.b lue);addButton(panel2,"5",SpecialNumActionListener,Color.b lue);addButton(panel2,"6",SpecialNumActionListener,Color.b lue);addButton(panel2,"×",newFunctionSigns(),Color.BLACK);addButton(panel2,"sin",newFunctionSigns(),Color.magenta);addButton(panel2,"x^2",newFunctionSigns(),Color.magenta);addButton(panel2,"1",SpecialNumActionListener,Color.b lue);addButton(panel2,"2",SpecialNumActionListener,Color.b lue);addButton(panel2,"3",SpecialNumActionListener,Color.b lue);addButton(panel2,"-",newFunctionSigns(),Color.BLACK);addButton(panel2,"cos",newFunctionSigns(),Color.magenta);addButton(panel2,"x^3",newFunctionSigns(),Color.magenta);addButton(panel2,"0",SpecialNumActionListener,Color.b lue);addButton(panel2,"-/+",new ClearArea(),Color.blue);addButton(panel2,".",new Dot(),Color.blue);addButton(panel2,"+",newFunctionSigns(),Color.BLACK);addButton(panel2,"tan",newFunctionSigns(),Color.magenta);addButton(panel2,"%",newFunctionSigns(),Color.magenta);addButton(panel2,"π",SpecialNumActionListener,Color.g ray);//灰色addButton(panel2,"e",SpecialNumActionListener,Color.g ray);addButton(panel2,"度变弧度",newFunctionSigns(),Color.gray);addButton(panel2,"=",newFunctionSigns(),Color.BLACK);JButton btns=new JButton("记忆区");btns.setBorder(BorderFactory.createLoweredBevelBorder ());//凹入斜面效果btns.setEnabled(false); //按钮不可操作btns.setPreferredSize(new Dimension(20,20));panel3.add(btns); //加入按钮addButton(panel3,"MC",null,Color.BLACK);addButton(panel3,"MR",null,Color.BLACK);addButton(panel3,"MS",null,Color.BLACK);addButton(panel3,"M+",null,Color.BLACK);panel4.add(panel1,BorderLayout.NORTH);panel4.add(panel2,BorderLayout.CENTER);this.add(tf,BorderLayout.NORTH);this.add(panel3,BorderLayout.WEST);this.add(panel4);pack();this.setResizable(false); //窗口不可改变大小this.setLocation(300,200); //窗口定位this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/ /关闭按钮}/*** 统一设置按钮的使用方式,参数包括panel,name,action,color*/private void addButton(JPanel panel,Stringname,ActionListener action,Color color){JButton bt=new JButton(name);panel.add(bt); //向面板添加按钮bt.addActionListener(action); //增加监听事件bt.setForeground(color); //设置文字颜色}/*** 四则运算,参数X表示用户输入数字*/private void getResult(double x){if(operator=="+"){result+=x;}else if(operator=="-"){result-=x;}else if(operator=="×"){result*=x;}else if(operator=="÷"){result/=x;}else if(operator=="="){result=x;}tf.setText(df.format(result));}/*** 函数区运算符号事件监听*/class FunctionSigns implements ActionListener{ public void actionPerformed(ActionEvent e){ /*用ActionEvent对象的getActionCommand()方法* 取得与引发事件对象相关的字符串*/String str=e.getActionCommand(); //求平方根if(str.equals("sqrt")){double i=Double.parseDouble(tf.getText());if(i>=0){/** String.valueof() 转换为字符串* df.format()按要求保留四位小数* Math.sqrt()求算数术平方根*/tf.setText(String.valueOf(df.format(Math.sqrt(i))));}else{tf.setText("负数不能开平方根");}}else if(str.equals("log")){ // 求常用对数double i=Double.parseDouble(tf.getText());if(i>0){tf.setText(String.valueOf(df.format(Math.log(i))));}else{tf.setText("负数不能求对数");}}else if(str.equals("%")){ //求百分比tf.setText(df.format(Double.parseDouble(tf.getText())/1 00));}else if(str.equals("1/x")){ //求倒数if(Double.parseDouble(tf.getText())==0){tf.setText("除数不能为零");}else{tf.setText(df.format(1/Double.parseDouble(tf.getText()) ));}}else if(str.equals("sin")){ //求正弦函数double i=Double.parseDouble(tf.getText());tf.setText(String.valueOf(df.format(Math.sin(i))));}else if(str.equals("cos")){ //求余弦函数double i=Double.parseDouble(tf.getText());tf.setText(String.valueOf(df.format(Math.cos(i))));}else if(str.equals("tan")){ //求正切函数double i=Double.parseDouble(tf.getText());tf.setText(String.valueOf(df.format(Math.tan(i))));}else if(str.equals("n!")){ //求阶乘double i=Double.parseDouble(tf.getText());if((i%2==0)||(i%2==1)) //判断为整数放进行阶乘操作{int j=(int)i; //强制类型转换int result=1;for(int k=1;k<=j;k++)result*=k;tf.setText(String.valueOf(result));}else{tf.setText("无法进行阶乘");}}else if(str.equals("x^2")){ //求平方double i=Double.parseDouble(tf.getText());tf.setText(String.valueOf(df.format(i*i)));}else if(str.equals("x^3")){ //求立方double i=Double.parseDouble(tf.getText());tf.setText(String.valueOf(df.format(i*i*i)));}/**度变弧度---将角度转换成弧度*/else if(str.equals("度变弧度")){double i=Double.parseDouble(tf.getText());tf.setText(String.valueOf(df.format(i/180*Math.PI)));}else{if(flag){isResult=false;}if(isResult){operator=str;}else{getResult(Double.parseDouble(tf.getText()));operator=str;isResult=true;}}}}/*** 清除区三个按钮的事件监听*/class ClearArea implements ActionListener{public void actionPerformed(ActionEvent e){String str=e.getActionCommand();if(str=="C"){tf.setText("0");isResult=true;result=0;}else if(str=="-/+"){doublei=(-1)*Double.parseDouble(tf.getText().trim());tf.setText(df.format(i));}else if(str=="←"){if(Double.parseDouble(tf.getText())>0){if(tf.getText().length()>1){tf.setText(tf.getText().substring(0,tf.getText().length ()-1));}else{tf.setText("0");isResult=true;}}}else if(str=="CE"){tf.setText("0");isResult=true;}}}/** 特殊数字去两个按钮的事件监听*/class SpecialNum implements ActionListener{ public void actionPerformed(ActionEvent e){String str=e.getActionCommand();if(isResult){tf.setText("");isResult=false;}if(str=="π"){tf.setText(String.valueOf(Math.PI));}else if(str=="e"){tf.setText(String.valueOf(Math.E));}else{tf.setText(tf.getText().trim()+str);if(tf.getText().equals("0")){tf.setText("0");isResult=true;flag=true;}}}}/** 小数点的事件监听*/class Dot implements ActionListener{public void actionPerformed(ActionEvent e) { isResult=false;if(tf.getText().trim().indexOf(".")==-1){ tf.setText(tf.getText()+".");}}}/** main方法*/public static void main(String args[]){ new SmartCalculator().setVisible(true);}public String getBack() {return back;}public void setBack(String back) {this.back = back;}}。

相关文档
最新文档