JAVA模拟科学计算器课程设计指导书
- 格式:doc
- 大小:245.50 KB
- 文档页数:44
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中实现。
《高级语言程序设计(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”进行监听,实现删除功能。
湖南工业大学课程设计资料袋学院(系、部)2012 ~ 2013 学年第 2 学期课程名称Java程序设计指导教师职称学生姓名专业班级学号题目Java计算器成绩起止日期2013年06月24日~2013年06月30日目录清单序号材料名称资料数量备注1 课程设计任务书 12 课程设计说明书 13 源程序(电子文档) 1456湖南工业大学课程设计任务书2012 —2013学年第 2 学期学院(系、部)专业班级课程名称:Java程序设计设计题目:Java计算器完成期限:自2013 年06月24日至2013 年06月30日共 1 周内容及任务一、设计的任务及主要技术参数1).设计的计算器可以完成加法、减法、乘法、除法的简单运算。
2).实现一些简单的扩展运算,如:将数据取正负号、倒数、退格、清零,开根号、、清空等功能。
3).添加小数点功能,用以实现浮点型数据的计算。
4).使用布局管理器设计一个计算器的界面,使用事件监听器处理数据的输入,并完成相关的计算。
二、设计任务1) 系统分析(包括可行性分析、用户需求分析等)及功能分析;2) 系统总体功能设计;3)系统详细功能设计,采用了数据库的同学,给出数据库设计;4) 程序设计及调试;5) 设计说明书的书写。
三、设计工作量可以完成一个采用java技术的简单计算器,每人至少要投入1周的时间来完成该系统的分析与设计,撰写出项目开发各个阶段需要的文档,每人独立完成自己的系统。
进度安起止日期工作内容选题,完成项目计划文档完成可行性分析文档、需求分析文档和完成设计文档排~ 编码系统测试、客户提交文档完成课程设计说明书答辩,确定等级,交文档材料(含电子文档)、源程序主要参考资料[1] Y.Daniel Liang著.万波译.Java语言程序设计(基础篇)(第6版)[M],北京:机械工业出版社,2009[2] 韩万江,姜立新.软件项目管理案例教程(第2版) [M]. 北京: 机械工业出版社, 2010.[3]丁振凡. Java语言实用教程(第2版)[M]. 北京邮电大学出版社. 2008.1[4]丁振凡. Java语言实用教程实验指导(第2版)[M]. 北京邮电大学出版社. 2008.1[5]杨树林等. Java语言最新实用案例教程(第2版)[M]. 清华大学出版社. 2010.7[6]朱福喜.《Java语言程序设计》(第二版).科学出版社[7]陈国君等.《Java程序设计基础》(第二版).清华大学出版社[8]Deitel.《Java大学基础教程》(第六版).电子工业出版社[9]MaryCampione.《Java语言导学》(第四版).机械工业出版社[10]Y.Daniel Liang.《Java语言程序设计基础篇》(第六版). 机械工业出版社[11]Kathy Sierra.《Head First Java》(第二版).东南大学出版社指导教师(签字):年月日系(教研室)主任(签字):年月日Java程序设计课程设计设计说明书Java计算器起止日期:2013 年06月24日至2013 年06月30日学生姓名班级学号成绩指导教师(签字)计算机与通信学院2013年6月30日目录一.设计目的 --- 2二.设计任务 --- 3三.设计内容--- 3一)引言 --- 3二)可行性研究 3三)需求分析 4四)概要模型 5五)详细设计 5四、测试与评价 - 9五、结论 ------ 12六、致谢 ------ 12附录 13Java计算器的设计与实现摘要本计算器是由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控制台输入输出,实现计算器用户交互第四课时:了解简单异常处理,优化计算器程序第五课时:计算器程序设计实践,调试与改进教学内容注重理论与实践相结合,通过逐步引导,使学生能够将所学知识应用于计算器程序设计,提高编程实践能力。
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简单计算器课程设计1.功能描述本计算器可以进行简单的四则运算(加、减、乘、除)但仅限于十进制下,还可以进行(八进制,十进制,十六进制)之间的相互转换,八进制最多可以输入19位数,十进制最多可以输入18位数,十六进制最多可以输入14位数,backspace表示退格,clear 表示初始化,在window下直接运行(Jsp2003.bat)即可,界面为灰白对称。
2.方案论证2.1概要设计2.1.1自定义类说明**********************************************************类名: This_number_too_big作用: 自定义的异常类,用来处理计算结果溢出继承的父类: Exception类实现的接口: 没有**********************************************************class This_number_too_big extends Exception{}//自定义的一个结果溢出异常类**********************************************************类名: Jsp2003作用: 主类继承的父类: Frame类实现的接口: ItemListener类,ActionListener类**********************************************************class Jsp2003 extends Frame implements ItemListener,ActionListener{public int number=0,length=18;沈阳大学沈阳大学课程设计说明书N O.3沈阳大学课程设计说明书N O.4沈阳大学课程设计说明书N O.5沈阳大学课程设计说明书N O.6沈阳大学课程设计说明书N O.7沈阳大学课程设计说明书N O.8沈阳大学课程设计说明书N O.9沈阳大学课程设计说明书N O.10图3 加法运算效果图沈阳大学课程设计说明书N O.11沈阳大学课程设计说明书N O.12沈阳大学课程设计说明书N O.13沈阳大学课程设计说明书N O.14沈阳大学课程设计说明书N O.15沈阳大学课程设计说明书N O.16沈阳大学课程设计说明书N O.17沈阳大学课程设计说明书N O.18沈阳大学课程设计说明书N O.19沈阳大学课程设计说明书N O.20沈阳大学课程设计说明书N O.21沈阳大学课程设计说明书N O.22沈阳大学课程设计说明书N O.23jg_TextField.setText("请输入运算符");}else{System.out.println("str1:"+str1);//调试时使用System.out.println("str2:"+str2);//调试时使用System.out.println("运算符:"+fh);//调试时使用if (str1.equals(".")) //字符串"." 转换成double型数据时会出错所以手工转str1="0.0";if (str2.equals("."))str2="0.0";a2=Double.valueOf(str1).doubleValue();b2=Double.valueOf(str2).doubleValue();System.out.println("double型的a2:"+a2); //调试时使用System.out.println(“double型的b2:”+b2);调试时使用if (c.equals("+")){jg2=a2+b2;}if (c.equals("-")){jg2=a2-b2;}if (c.equals("*")){jg2=a2*b2;}if (c.equals("/")){if(b2==0){jg2=0;//0000000000000 by 0 cu!沈阳大学课程设计说明书N O.24沈阳大学。
java课程设计编写计算器一、教学目标本节课的教学目标是使学生掌握Java编程的基本语法和结构,能够使用Java编写一个简单的计算器程序。
具体来说,知识目标包括了解Java的基本数据类型、运算符、控制结构等;技能目标包括能够使用Java编写简单的程序,并进行调试和优化;情感态度价值观目标包括培养学生的编程兴趣,提高学生的解决问题的能力。
二、教学内容本节课的教学内容主要包括Java的基本语法和结构,以及计算器程序的设计和实现。
具体来说,将讲解Java的基本数据类型、运算符、控制结构等知识,并通过实例来说明如何使用这些知识来编写计算器程序。
此外,还将介绍如何进行程序的调试和优化,以提高程序的性能和可靠性。
三、教学方法为了达到本节课的教学目标,将采用多种教学方法来进行教学。
首先,将采用讲授法来讲解Java的基本语法和结构,使学生能够了解和掌握这些知识。
其次,将采用案例分析法来分析计算器程序的设计和实现,使学生能够通过实际案例来加深对知识的理解和应用。
此外,还将采用实验法让学生亲自动手编写和调试计算器程序,以提高学生的实际操作能力。
四、教学资源为了支持本节课的教学内容和教学方法的实施,将选择和准备一些教学资源。
教材方面,将使用《Java编程语言》作为主教材,辅以《Java编程实践》等参考书进行深入学习。
多媒体资料方面,将制作一些PPT和视频教程,以帮助学生更好地理解和掌握知识。
实验设备方面,将准备一些计算机和编程环境,以便学生进行实际操作和调试。
五、教学评估本节课的教学评估将采用多元化的方式来进行,以全面、客观、公正地评估学生的学习成果。
评估方式包括平时表现、作业和考试等。
平时表现主要考察学生的出勤、课堂参与度和团队合作能力;作业主要包括课后练习和编程任务,以巩固和应用所学知识;考试则是对学生综合运用Java编程知识的考察,包括理论知识和编程实践。
通过这些评估方式,希望能够全面反映学生的学习成果,激发学生的学习兴趣和主动性。
《面向对象程序设计》课程设计报告题目:科学计算器软件设计与实现院(系):信息科学与工程学院专业班级:计算机科学与技术1201班学生姓名:**学号: ***********指导教师:**20 14 年 12 月 29 日至20 15 年 1 月 9 日华中科技大学武昌分校制面向对象程序设计课程设计任务书目录1需求与总体设计 (1)1.1需求分析 (1)1.2总体设计思路 (1)1.3功能图 (2)1.4类图 (2)2详细设计 (3)2.1详细设计思路 (3)2.2类图设计说明和细化 (10)3编码实现................................................ 错误!未定义书签。
3.1java编码实现.......................................... 错误!未定义书签。
4系统测试 (59)总结.................................................... 错误!未定义书签。
1需求与总体设计1.1需求分析1.刚启动计算器时的状态:开始计算按键开始键"ON"清零:计算刚启动时,或者任何时候键入了清零键,计算器所处的状态。
2.一个操作数:输入了一个操作数时计算器所处的状态,如键入“2”后的状态,此时操作数为“2”,或者依次键入“3”、“8”后的状态,此时操作数为“38”。
3.运算结果:键入了“=”键后计算器所处的状态,如依次键入“3+5=”之后计算器的状态。
在此状态如果输入数字,输入的数字将作为第一个操作数,开始一次新的计算。
4.一个操作数和一个两元符号:输入了一个操作数和加减乘除中的一个键后计算器的状态,如依次输入“2+”或“31×5=÷”之后计算器的状态。
5.操作数两元符操作数:输入了一个操作数、一个加减乘除符号和另一个操作数后计算器所处的状态,如依次键入“30÷4”或“3+5=÷5”后计算器的状态。
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语言的基本语法和数据结构,掌握计算器的数学原理和算法;技能目标包括能够使用Java语言编写简单的计算器程序,能够进行调试和优化;情感态度价值观目标包括培养学生对编程的兴趣和热情,提高学生解决问题的自信心和耐心。
二、教学内容本节课的教学内容主要包括Java语言的基本语法和数据结构,计算器的数学原理和算法,以及计算器程序的设计和调试。
具体来说,首先介绍Java语言的基本语法和数据结构,如变量、运算符、控制语句、数组等;然后讲解计算器的数学原理和算法,如加减乘除、括号处理等;最后通过实例演示和练习,让学生掌握计算器程序的设计和调试方法。
三、教学方法本节课采用讲授法、案例分析法和实验法相结合的教学方法。
首先通过讲授法,向学生讲解Java语言的基本语法和数据结构,计算器的数学原理和算法;然后通过案例分析法,分析计算器程序的设计和调试方法,让学生加深对计算器原理的理解;最后通过实验法,让学生动手编写和调试计算器程序,培养学生的编程能力和实验技能。
四、教学资源本节课的教学资源包括教材、参考书、多媒体资料和实验设备。
教材和参考书用于为学生提供Java语言和计算器原理的基础知识,多媒体资料用于辅助讲解和演示,实验设备用于让学生进行编程实践。
教学资源的选择和准备应该符合教学内容和教学方法的要求,以支持学生的学习和教师的授课。
五、教学评估本节课的教学评估主要包括平时表现、作业和考试三个部分。
平时表现主要评估学生在课堂上的参与程度、提问回答和小组讨论的表现;作业主要评估学生的编程能力和算法理解,包括课堂练习和课后作业;考试则是对学生整体掌握情况的评估,包括Java语言基础知识、计算器原理和编程实践。
评估方式应客观、公正,能够全面反映学生的学习成果。
《JAVA程序设计》课程设计模拟Win7科学计算器*名:***班级:12级物联网(二)班学号:指导教师:***成绩:完成时间:2014.06.05一、设计目的通过此次课程设计将课堂上学到的内容与应用结合在一起,掌握图形用户界面设计方法和事件响应机制,并极大地促进自己对java程序设计的认识和掌握,更加系统的学习和了解如何从整体上设计和实现一个程序。
二、功能介绍模拟Win7标准型计算器(1)实现加、减、乘、除的双目单类别的基础运算。
(2)实现加、减、乘、除的多目多类别的混合运算。
(3)实现退格、清零、开根号、百分比、倒数、正负数运算。
(4)实现MC、MR、MS、M+、M-的记忆功能运算。
(5)实现复制(Ctr +c)、粘贴(Ctr+v)的功能。
(6)实现不同类型计算器的切换(WindowsXp计算器)功能。
模拟WindowsXp计算器(1)实现正弦、余弦、正切、反三角函数arcsin、arccos、arctan以及对数log、log10的功能运算;(2)实现退格、清零、开根号、百分比、倒数、正负数运算。
(3)实现加、减、乘、除的多目多类别的混合运算。
(4)实现加、减、乘、除的双目单类别的基础运算。
(5)实现不同类型计算器的切换(Win7标准计算器)功能。
三、概要设计3.1 自定义类说明该程序设置了1个主类Class CounterProject、1个子类sonJFrame。
主要由Java-swing组件窗体容器JFrame、面板Panel、菜单JMenu、按钮JButton、JTextField、BorderFactory、JMenuItem、JMenuBar以及按钮事件ActionEvent、键盘事件KeyEvent所组成。
(1)JFrame:构造JFrame对象name,设置窗体大小(不可变)、标题栏内容、位置、窗体可见、窗体可关闭。
构造第二窗体容器test2、设置窗体大小(不可变)、标题栏内容、位置、窗体可见、窗体可关闭。
目录1 课设任务及要求 (1)1.1课设任务: (1)1.2创新要求: (1)1.3设计要求 (1)2 需求分析 (2)2.1 设计背景 (2)2.2 开发的技术及功能 (2)3 设计思路 (3)4 详细设计 (4)4.1功能实现: (4)4.4 程序设计过程 (6)5 系统调试 (6)5.1 运行调试 (6)6 参考文献 (7)附录 (8)1 课设任务及要求1.1课设任务:⑴、设计的计算器应用程序可以完成加法、减法、乘法、除法以及取余运算(可以进行浮点数和负数的运算);⑵、有求倒数、退格和清零功能。
1.2创新要求:能进行正切、余弦,以及求平方根、指数(包括对e)、自然对数运算。
1.3设计要求①设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。
且有小数点、正负号、求倒数、退格和清零功能。
②课程设计可选用Eclipse、JBuilder、NetBeans等作为开发平台以提高开发效率,通过资料查阅和学习尽可能熟练掌握其中一种集成开发环境。
③认真按时完成课程设计报告,课程设计报告内容包括:设计任务与要求、需求分析、设计思路、详细设计、运行调试与分析讨论和设计体会与小结六个部分。
2 需求分析2.1 设计背景设计这个计算器主要是参考Windows操作系统中自带的计算器,由于编者水平和时间的限制,不能将计算器设计到科学型及其他更复杂的类型,在设计过程中还参考了一些其他的优秀设计。
但本计算器除了常用的加减乘除(可以进行浮点和负数运算)这些基本运算外,还有求余、求倒、退格、清零,甚至还能进行一些复杂科学的运算,比如余弦(cos)、正切(tan)、指数运算(pow)、自然对数运算(log)、求平方根(sqrt)以及对e的指数运算(exp),并且还能进行连续运算。
总体上说来,本计算器设计简单,代码很少,程序很小,但功能却很强大,这是同类计算器所不具备的。
2.2 开发的技术及功能本课程设计是要做一个图形界面的计算器,其界面主要是由swing组件中的控件构成。
面向对象程序设计课程设计报告题目:计算器模拟程序组成员信息任课教师:成绩:2010年12月30 日目录1.课程设计目的 (3)1.1 (3)1.2 (3)2.设计题目分析 (3)2.1 (3)2.2 (3)3.课程设计容 (3)3.1 (3)3.2 (4)4.设计心得与总结 (7)5、附录 (8)6、小组成员分工说明 (16)1、课程设计目的(1)复习稳固java语言的根底知识,进一步加深对java语言的理解和掌控〔2〕课程设计为大家提供了一个既动手又动脑,独立实践的时机,将课本上的理论知识和实际有机结合起来,锻炼我们的分析解决实际问题的能力。
提高我们适应实际,实践编程的能力。
〔3〕培养我们在工程开发中创新意识及能力,通过亲身实践,利用所学编写简单的面向对象程序,提高对面向对象及JAVA语言的理解。
2、设计题目分析2.1 题目简介利用JAVA语言设计一个简单的科学计算器,实现加减乘除及开根号、对数、平方、三角正/余弦、求倒数、进制转换的简单功能。
2.2 设计要求及需求分析设计要求:由于现代用户更倾向于由鼠标方便操作的图形用户界面,所以我们采用GUI 来实现计算器,并采用Swing组件,AWT事件处理等实现具体功能。
需求分析:在我们日常生活中,计算开支、收入时,大额数字或是多倍小数的计算都需要计算器的帮助,而在学习一些科目时,也常常要处理数字。
虽然现在的计算器价格比拟低廉,但是功能过于简单的不能满足个人需求,功能多的价格较贵,不仅操作不便,很多功能也根本用不到。
所以我们想用自己所学设计开发一个属于自己的简单计算器来完成日常学习生活的需求。
3、课程设计容3.1 总体设计:系统总体设计框架Panel :5*6的数字及运算键Panel2:进制转换的单项选择按钮及倒退清空键Panel0:输入及运行结果系统功能模块图:Container//定义容器 方法参数说明:布尔型的border frame.setVisible ,设置窗口的可见性frame.setDefaultCloseOperation(JFrame.E*IT_ON_CLOSE);设置关闭窗口的默认执行动作〔布尔型数据〕frame.setIconImage ;设置窗口最小化图标frame.setSize(int,int);设置窗口尺寸方法调用:主函数中的new Calculator()调用了前面的public Calculator()流程图:3.3 调试与测试:包括程序调试过程、数据测试结果分析,测试过程中遇到的主要问题及采取的解决措施;〔列出主要问题的出错现象、出错原因、解决方法及效果等〕。
课程设计任务书
课程名称:计算机技术综合课程设计
题目:Java 计算器
学院:信息工程系:计算机科学与技术
专业班级:计算机科学与技术卓越111班
学号:
学生姓名:
起讫日期:2014年6月10日至2014年6月25日
指导教师:管春职称:副教授
学院审核(签名):
审核日期:2014年6月25日
说明
1.课程设计任务书由指导教师填写,并经专业学科组审定,下达到
学生。
2.学生根据指导教师下达的任务书独立完成课程设计。
3.本任务书在课程设计完成后,与论文一起交指导教师,作为论文
评阅和课程设计答辩的主要档案资料。
软件学院课程设计报告书课程名称 Java 6程序设计设计题目模拟科学计算器专业班级学号姓名指导教师2013 年6 月目录1设计时间 .......................................................................... 错误!未定义书签。
2设计目的 .......................................................................... 错误!未定义书签。
3设计任务 .......................................................................... 错误!未定义书签。
4设计内容 .......................................................................... 错误!未定义书签。
4.1需求分析 ...................................................................... 错误!未定义书签。
4.1.1问题描述................................................................... 错误!未定义书签。
4.1.2基本要求................................................................... 错误!未定义书签。
4.2总体设计 ...................................................................... 错误!未定义书签。
4.2.1 包的描述.................................................................. 错误!未定义书签。
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小程序界面,根据其功能对自己设计的计算器小程序进行了功能的适当增加与修改。
课程设计报告课程:模拟科学计算器学号:姓名:班级:教师:时间:10.12.10~11.01.12 计算机科学与技术系课程设计指导书姓名学号班级课程名称JAVA课程性质专业必修课设计时间2010年12 月10日——2011年01月12日设计名称模拟科学计算器设计目的巩固所学理论知识,提高程序设计能力的重要实践环节。
综合应用Java基础知识和基本方法。
设计要求界面模拟Windows中的计算器程序。
实现基本数学运算、函数等功能:加、减、乘、除、阶乘、正弦、余弦和指数运算。
实现要点:添加相关组件并进行按钮事件处理。
要求提交Application和Applet两个版本的程序。
设计思路与设计过程设计Application和Applet两个版本的程序,对Application运用继承JFrame设计,类的设计构造方法利用等。
而Applet则继承Applet,在浏览器上运行。
Application过程:1.菜单栏设计.2.文本域,即为计算器的屏幕显示区域3.初始化操作4.统一设置按钮的的使用方式5.计算器的基础操作(+ - ×÷)6.运算符号的事件监听7.清除按钮的事件监听8.数字输入的事件监听9.小数点的事件监听10.main方法Applet过程:1.init()方法:完成初始化操作;2.事件统一监听;3.科学计算;4.建立Calucator.html;5.浏览器运行;计划与进度12.10-12.13 复习Java程序开发的相关操作,了解“计算器相关知识”;12.14-12.17 熟悉题目并理解,及找寻相关资料;12.18-12.20 根据题目要求进行需求分析设计;12.21-12.25 对Application进行总体程序设计;12.26-12.30 对Applet进行相关各功能的程序设计;12.31-01.05 对程序进行细节完善;01.06-01.10 进行调试运行并完成资料归档。
任课教师意见备注设计名称:模拟科学计算器日期:2010年01月05日设计内容:Application和Applet两个版本的程序,实现基本数学运算、函数等功能:加、减、乘、除、阶乘、正弦、余弦和指数运算。
对Application运用继承JFrame设计,类的设计构造方法利用等。
而Applet则继承Applet,在浏览器上运行。
设计目的与要求:界面模拟Windows中的计算器程序。
实现基本数学运算、函数等功能:加、减、乘、除、阶乘、正弦、余弦和指数运算。
实现要点:添加相关组件并进行按钮事件处理。
要求提交Application和Applet两个版本的程序。
设计环境或器材、原理与说明:设计环境或器材:硬件:计算机软件:MyEclipse 集成开发环境Java JCreator Pro;设计原理说明:运用Application和Applet两个版本的程序。
设计过程(步骤)或程序代码(可以加页):Application程序代码:import java.awt.*;import java.awt.event.*;import java.text.DecimalFormat;import javax.swing.*;public class Calucator extends JFrame {private JTextField tf;private JPanel panel1, panel2, panel3, panel4;private JMenuBar myBar;private JMenu menu1, menu2, menu3;private JMenuItem editItem1, editItem2, help1, help2, help3;private JRadioButtonMenuItem seeItem1, seeItem2;//单选框private JCheckBoxMenuItem seeItem3;//复选框private ButtonGroup bgb;private String back;private boolean IfResult = true, flag = false;private String oper = "=";private double result = 0;private Num numActionListener;private DecimalFormat df;public Calucator(){super("科学计算器");//设置标题栏df = new DecimalFormat("#.####");//保留四位小数this.setLayout(new BorderLayout(10, 5));panel1 = new JPanel(new GridLayout(1, 3, 10, 10));panel2 = new JPanel(new GridLayout(5, 6, 5, 5));//5行6列panel3 = new JPanel(new GridLayout(5, 1, 5, 5));panel4 = new JPanel(new BorderLayout(5, 5));/*** 菜单栏*/myBar = new JMenuBar();menu1 = new JMenu("编辑(E)");menu2 = new JMenu("查看(V)");menu3 = new JMenu("帮助(H)");menu1.setFont(new Font("宋体", Font.PLAIN, 12)); menu2.setFont(new Font("宋体", Font.PLAIN, 12)); menu3.setFont(new Font("宋体", Font.PLAIN, 12));/*** 编辑栏*/editItem1 = new JMenuItem("复制(C) Ctrl+C"); editItem2 = new JMenuItem("粘贴(P) Ctrl+V");editItem1.setFont(new Font("宋体",Font.PLAIN,12)); editItem2.setFont(new Font("宋体",Font.PLAIN,12));/*** 查看栏*/seeItem1 = new JRadioButtonMenuItem("科学型(T)"); seeItem2 = new JRadioButtonMenuItem("标准型(S)"); seeItem3 = new JCheckBoxMenuItem("数字分组(I)");seeItem1.setFont(new Font("宋体",Font.PLAIN,12)); seeItem2.setFont(new Font("宋体",Font.PLAIN,12)); seeItem3.setFont(new Font("宋体",Font.PLAIN,12));/*** 帮助栏*/help1 = new JMenuItem("帮助主题(H)");help2 = new JMenuItem("关于计算器(A)");help1.setFont(new Font("宋体",Font.PLAIN,12));help2.setFont(new Font("宋体",Font.PLAIN,12));bgb = new ButtonGroup();//选项组menu1.add(editItem1);menu1.add(editItem2);menu2.add(seeItem1);menu2.add(seeItem2);menu2.addSeparator();//添加一条分割线menu2.add(seeItem3);menu3.add(help1);menu3.addSeparator();//添加一条分割线menu3.add(help2);myBar.add(menu1);myBar.add(menu2);myBar.add(menu3);this.setJMenuBar(myBar); numActionListener = new Num();//实现数字监听/*** 文本域,即为计算器的屏幕显示区域*/tf = new JTextField();tf.setEditable(false);//文本区域不可编辑tf.setBackground(Color.white);//文本区域的背景色tf.setHorizontalAlignment(JTextField.RIGHT);//文字右对齐tf.setText("0");tf.setBorder(BorderFactory.createLoweredBevelBorder());init();//对计算器进行初始化}/*** 初始化操作* 添加按钮*/private void init(){addButton(panel1, "Backspace", new Clear(), Color.red);addButton(panel1, "CE", new Clear(), Color.red);addButton(panel1, "C", new Clear(), Color.red);addButton(panel2, "1/x", new Signs(), Color.magenta);addButton(panel2, "log", new Signs(), Color.magenta);addButton(panel2, "7", numActionListener, Color.blue);addButton(panel2, "8", numActionListener, Color.blue);addButton(panel2, "9", numActionListener, Color.blue);addButton(panel2, "÷", new Signs(), Color.red);addButton(panel2, "n!", new Signs(), Color.magenta); addButton(panel2, "sqrt", new Signs(), Color.magenta); addButton(panel2, "4", numActionListener, Color.blue); addButton(panel2, "5", numActionListener, Color.blue); addButton(panel2, "6", numActionListener, Color.blue); addButton(panel2, "×", new Signs(), Color.red);addButton(panel2, "sin", new Signs(), Color.magenta); addButton(panel2, "x^2", new Signs(), Color.magenta); addButton(panel2, "1", numActionListener, Color.blue); addButton(panel2, "2", numActionListener, Color.blue); addButton(panel2, "3", numActionListener, Color.blue); addButton(panel2, "-", new Signs(), Color.red);addButton(panel2, "cos", new Signs(), Color.magenta); addButton(panel2, "x^3", new Signs(), Color.magenta); addButton(panel2, "0", numActionListener, Color.blue); addButton(panel2, "-/+", new Clear(), Color.blue); addButton(panel2, ".", new Dot(), Color.blue); addButton(panel2, "+", new Signs(), Color.red);addButton(panel2, "tan", new Signs(), Color.magenta); addButton(panel2, "%", new Signs(), Color.magenta); addButton(panel2, "π", numActionListener, Color.orange); addButton(panel2, "e", numActionListener, Color.orange); addButton(panel2, "′″", new Signs(), Color.orange); addButton(panel2, "=", new Signs(), Color.red);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.red);addButton(panel3, "MR", null, Color.red);addButton(panel3, "MS", null, Color.red);addButton(panel3, "M+", null, Color.red);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);}/*** 统一设置按钮的的使用方式* @param panel* @param name* @param action* @param color*/private void addButton(JPanel panel, String name, ActionListener action, Color color){JButton bt = new JButton(name);panel.add(bt);//在面板上增加按钮bt.setForeground(color);//设置前景(字体)颜色bt.addActionListener(action);//增加监听事件}/*** 计算器的基础操作(+ - ×÷)* @param x*/private void getResult (double x){if(oper == "+"){result += x;}else if(oper == "-"){result -= x;}else if(oper == "×"){result *= x;}else if(oper == "÷"){result /= x;}else if(oper == "="){result = x;}tf.setText(df.format(result));}/*** 运算符号的事件监听*/class Signs implements ActionListener{public void actionPerformed(ActionEvent e) {/** 用ActionEvent对象的getActionCommand()方法* 取得与引发事件对象相关的字符串*/String str = e.getActionCommand();/* sqrt求平方根*/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("负数不能开平方根");}}/* log求常用对数*/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()) / 100));}/* 1/x求倒数*/else if(str.equals("1/x")){if(Double.parseDouble(tf.getText()) == 0){tf.setText("除数不能为零");}else{tf.setText(df.format(1 / Double.parseDouble(tf.getText())));}}/* sin求正弦函数*/else if(str.equals("sin")){double i = Double.parseDouble(tf.getText());tf.setText(String.valueOf(df.format(Math.sin(i)))); }/* cos求余弦函数*/else if(str.equals("cos")){double i = Double.parseDouble(tf.getText());tf.setText(String.valueOf(df.format(Math.cos(i)))); }/* tan求正切函数*/else if(str.equals("tan")){double i = Double.parseDouble(tf.getText());tf.setText(String.valueOf(df.format(Math.tan(i)))); }/* n!求阶乘*/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("无法进行阶乘");}}/* x^2求平方*/else if(str.equals("x^2")){double i = Double.parseDouble(tf.getText());tf.setText(String.valueOf(df.format(i*i)));}/* x^3求立方*/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(i/180*Math.PI));}else{if(flag){IfResult = false;}if(IfResult){oper = str;}else{getResult(Double.parseDouble(tf.getText()));oper = str;IfResult = true;}}}}/*** 清除按钮的事件监听*/class Clear implements ActionListener{public void actionPerformed(ActionEvent e) {/** 用ActionEvent对象的getActionCommand()方法* 取得与引发事件对象相关的字符串*/String str = e.getActionCommand();if(str == "C"){tf.setText("0");IfResult = true;result = 0;}else if(str == "-/+"){double i = 0 - Double.parseDouble(tf.getText().trim());tf.setText(df.format(i));}else if(str == "Backspace"){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");IfResult = true;}}else{if(tf.getText().length() > 2){tf.setText(tf.getText().substring(0, tf.getText().length() - 1));}else{tf.setText("0");IfResult = true;}}}else if(str == "CE"){tf.setText("0");IfResult = true;}}}/*** 数字输入的事件监听*/class Num implements ActionListener{public void actionPerformed(ActionEvent e) { String str = e.getActionCommand();if(IfResult){tf.setText("");IfResult = 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");IfResult = true;flag = true;}}}}/*** 小数点的事件监听*/class Dot implements ActionListener{public void actionPerformed(ActionEvent e) { IfResult = false;if(tf.getText().trim().indexOf(".") == -1){tf.setText(tf.getText() + ".");}}}/*** main方法*/public static void main(String[] args) {new Calucator().setVisible(true);}}Applet程序代码:import java.util.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.applet.*;public class Calucator extends JApplet implements ActionListener {boolean i=true;private JButton num0=new JButton("0");private JButton num1=new JButton("1");private JButton num2=new JButton("2");private JButton num3=new JButton("3");private JButton num4=new JButton("4");private JButton num5=new JButton("5");private JButton num6=new JButton("6");private JButton num7=new JButton("7");private JButton num8=new JButton("8");private JButton num9=new JButton("9"); private JButton zuok=new JButton("("); private JButton youk=new JButton(")"); private JButton dian=new JButton("."); private JButton NULL=new JButton("N"); private JButton plu=new JButton("+"); private JButton min=new JButton("-"); private JButton mul=new JButton("x"); private JButton div=new JButton("/");private JButton equ=new JButton("="); private JButton cle=new JButton("C");//清除private JTextField space=new JTextField(30); public void init(){JPanel text=new JPanel();text.setLayout(new FlowLayout());text.add(space);JPanel buttons=new JPanel();buttons.setLayout(new GridLayout(5,4)); buttons.add(num9);buttons.add(num8);buttons.add(num7);buttons.add(plu);buttons.add(num6);buttons.add(num5);buttons.add(num4);buttons.add(min);buttons.add(num3);buttons.add(num2);buttons.add(num1);buttons.add(mul);buttons.add(num0);buttons.add(cle);buttons.add(equ);buttons.add(div);buttons.add(zuok);buttons.add(youk);buttons.add(dian);buttons.add(NULL);(num9).addActionListener(this); (num8).addActionListener(this); (num7).addActionListener(this); (num6).addActionListener(this); (num5).addActionListener(this);(num4).addActionListener(this);(num3).addActionListener(this);(num2).addActionListener(this);(num1).addActionListener(this);(num0).addActionListener(this);(plu).addActionListener(this);(min).addActionListener(this);(mul).addActionListener(this);(div).addActionListener(this);(equ).addActionListener(this);(cle).addActionListener(this);(zuok).addActionListener(this); (youk).addActionListener(this);(dian).addActionListener(this);setLayout(new BorderLayout());add("North",text);add("South",buttons);space.setText("0");}public void actionPerformed(ActionEvent e) {if(e.getSource()==num9){if(i==true){space.setText("9");i=false;}else space.setText(space.getText()+'9'); }if(e.getSource()==num8){if(i==true){space.setText("8");i=false;}else space.setText(space.getText()+'8'); }if(e.getSource()==num7){if(i==true){space.setText("7");i=false;}else space.setText(space.getText()+'7'); }if(e.getSource()==num6){if(i==true){space.setText("6");i=false;}else space.setText(space.getText()+'6'); }if(e.getSource()==num5){if(i==true){space.setText("5");i=false;}else space.setText(space.getText()+'5'); }if(e.getSource()==num4){if(i==true){space.setText("4");i=false;}else space.setText(space.getText()+'4'); }if(e.getSource()==num3){if(i==true){space.setText("3");i=false;}else space.setText(space.getText()+'3'); }if(e.getSource()==num2){if(i==true){space.setText("2");i=false;}else space.setText(space.getText()+'2'); }if(e.getSource()==num1){if(i==true){space.setText("1");i=false;}else space.setText(space.getText()+'1'); }if(e.getSource()==num0){if(i==true){space.setText("0");i=false;}else space.setText(space.getText()+'0');if(e.getSource()==zuok){if(i==true){space.setText("(");i=false;}else space.setText(space.getText()+'('); }if(e.getSource()==youk){if(i==false)space.setText(space.getText()+')');}if(e.getSource()==dian){if(i==false)space.setText(space.getText()+'.');}if(e.getSource()==plu)space.setText(space.getText()+'+');i=false;}if(e.getSource()==min){space.setText(space.getText()+'-');i=false;}if(e.getSource()==mul){space.setText(space.getText()+'*');i=false;}if(e.getSource()==div){space.setText(space.getText()+'/');i=false;}if(e.getSource()==equ){space.setText(String.valueOf(Calculator(space.getText())));}if(e.getSource()==cle){space.setText("0");i=true;}}public double Calculator(String f)//科学计算{int i=0,j=0,k;char c;StringBuffer s=new StringBuffer();s.append(f);s.append('=');String formula=s.toString();char[] anArray;anArray=new char[50];Stack<Character> mystack=new Stack<Character>(); while(formula.charAt(i)!='='){c=formula.charAt(i);{case '(': mystack.push(new Character(c));i++;break;case ')':while(mystack.peek().charValue()!='('){anArray[j++]=mystack.pop().charValue();}mystack.pop();i++;break;case '+':case '-':while(!mystack.empty()&&mystack.peek().charValue()!='(') {anArray[j++]=mystack.pop().charValue();}mystack.push(new Character(c));i++;break;case '/':while(!mystack.empty()&&(mystack.peek().charValue()=='*'||mystack.peek().c harValue()=='/')){anArray[j++]=mystack.pop().charValue();}mystack.push(new Character(c));i++;break;case' ': i++;break;default: while((c>='0'&&c<='9')||c=='.'){anArray[j++]=c;i++;c=formula.charAt(i);}anArray[j++]='#';break;}}while(!(mystack.empty()))anArray[j++]=mystack.pop().charValue();i=0;int count;double a,b,d;Stack<Double> mystack1 =new Stack<Double>(); while(i<j){c=anArray[i];switch(c){case '+':a=mystack1.pop().doubleValue();b=mystack1.pop().doubleValue();d=b+a;mystack1.push(new Double(d));i++;break;case '-':a=mystack1.pop().doubleValue();b=mystack1.pop().doubleValue();d=b-a;mystack1.push(new Double(d)); i++;break;case '*':a=mystack1.pop().doubleValue(); b=mystack1.pop().doubleValue(); d=b*a;mystack1.push(new Double(d)); i++;break;case '/':a=mystack1.pop().doubleValue(); b=mystack1.pop().doubleValue(); if(a!=0){d=b/a;mystack1.push(new Double(d)); i++;}else{System.out.println("Error!");}break;default:d=0;count=0;while((c>='0'&&c<='9')){d=10*d+c-'0';i++;c=anArray[i];}if(c=='.'){i++;c=anArray[i];while((c>='0'&&c<='9')){count++;d=d+(c-'0')/Math.pow(10,count); i++;c=anArray[i];}}if(c=='#')mystack1.push(new Double(d));i++;break;}}return(mystack1.peek().doubleValue());}}建立Calucator.html<html><applet code=Calucator.class width=400 height=180> </applet></html>设计结果与分析(可以加页):本实验是对巩固与复习,运用了AWT和Swing组件,利用容器和事件接听器对按钮的接听,并将程序运行于浏览器以便更方便被用户运用。