科学计算器--Java课程设计
- 格式:doc
- 大小:2.09 MB
- 文档页数:67
目录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组件中的控件构成。
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计算器课程设计一、课程目标知识目标: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基本语法学习,完成相关练习题。
《高级语言程序设计(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”进行监听,实现删除功能。
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程序计算器课程设计一、课程目标知识目标: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基本语法与运算符复习;第二课时:控制流程和方法定义;第三课时:类与对象基础;第四课时:计算器功能需求分析与设计;第五课时:编写计算器类,实现基本运算方法;第六课时:搭建主程序框架,进行单元测试;第七课时:集成测试,优化代码,进行调试;第八课时:总结与反馈。
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)1.程序需求: (1)2.学习需求: (1)二、概要设计 (1)1.设计理念: (1)2.视图设计: (1)3.模型设计: (1)4.Callback: (1)5.观察者模式: (2)三、详细设计 (2)1.App类: (2)2.View类: (2)3.Model类: (3)4.Callback接口: (5)5.Observer Pattern: (5)6.文档写入: (5)四、编码实现 (5)1.App类 (6)2.View类 (6)3.Model类 (8)4.Callback接口 (12)五、软件测试 (12)计算测试 (12)文件测试 (17)六、总结 (18)1.收获: (18)2.优化建议: (18)七、源程序 (19)一、需求分析1.程序需求:网络上计算器类型与数量数不胜数,功能也是应有尽有,但是因此导致UI界面也相对的繁杂,此项目旨在设计一个交互性强,界面简约,操作人性化且能完成基本运算的计算器。
2.学习需求:通过本次课程设计,可以认知并理解Java语言的基本概念、理论和方法。
初步掌握JDK与常用IDE集成开发环境的调试与应用。
同时领略Java 语言严谨规范之美。
认知其在计算机语言中的开发地位。
二、概要设计1.设计理念:MVVM设计模式。
视图与模型分离,实现低耦合,提高视图的复用性,视图、模型之间可以独立开发,同时也可提高视图和模型的复用性,达到一套视图对应多套模型或一套模型对应多套视图。
本项目只实现一套视图与一套模型的绑定。
2.视图设计:本项目图形化界面基于Java Swing进行构建。
Swing工具包拥有较丰富的GUI组件与屏幕显示元素,且具有可移植性。
程序UI界面由JFrame最为最外层框架,内包含JLabel、JPanel、JButton等组件。
整个视图的设计使用windowBuilder插件,此插件可以进行快速的进行页面的搭建,同时增加可控性与操作性。
模拟科学计算器一.概述1.程序具备的功能:(1)使用图形用户界面:一个文本框;0-9数字按钮;加、减、乘、除运算符;“等于”符号;复位按钮;(2)完成整数、实数的四则运算(加、减、乘、除)以及三角函数的运算等等;(3)通过按钮点击实现数据的复位(清零);(4)实数运算中小数位的精度一致。
实现要点:添加相关组件并进行按钮事件处理。
要求提交源程序。
2.课程设计的主要设计思想对于此计算器程序,首先要设计其GUI界面,总体界面有一个文本,总体界面用布局管理器布局。
布局设计好后再添加按钮事件。
对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。
在进行加、减、乘、除计算时要把点击加、减、乘、除按钮之前的数值保存下来,运算时是这个被保存下来的数值和文本框中的数值加、减、乘、除以及三角函数等一系列的运算。
二.课程设计思路1.界面设计界面设计要求用GUI,界面设计中有用到swing组件的TextField和Button,用到awt中的BorderLayout和GridLayout布局管理方式,其图形界面如下:2.功能介绍这是计算器中的一种:简单计算器,本项目用到了Java中的GUI界面和swing 组件以及awt布局,所以简单易用,它能完成如下的几个小功能:点击按钮中的数字键和运算符键就能进行简单的加、乘、乘、除求模四则运算;还能通过用户自己在文本框中输入数字,进行简单运算;如果输入有误时可以按Clear撤销后重新输入新数据。
三.设计过程以及源代码程序流程图如下:UML图如下:附录源程序: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求余弦函数 */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)));}/* ′″角度转换 *//*** 将角度值转换成弧度值,方便三角函数的计算*/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);}}四.程序的调试与运行结果说明界面展示:实际运算结果展示:55+45当除数为0时,对应的输出:“除数不能为0”的提示:五.课程设计总结在做本项目是时候,会遇到很多小问题,比如说:如何保存输入的数字和下一个数进行加、减、乘、除运算。
java课程设计编写计算器一、教学目标本节课的教学目标是使学生掌握Java编程的基本语法和结构,能够使用Java编写一个简单的计算器程序。
具体来说,知识目标包括了解Java的基本数据类型、运算符、控制结构等;技能目标包括能够使用Java编写简单的程序,并进行调试和优化;情感态度价值观目标包括培养学生的编程兴趣,提高学生的解决问题的能力。
二、教学内容本节课的教学内容主要包括Java的基本语法和结构,以及计算器程序的设计和实现。
具体来说,将讲解Java的基本数据类型、运算符、控制结构等知识,并通过实例来说明如何使用这些知识来编写计算器程序。
此外,还将介绍如何进行程序的调试和优化,以提高程序的性能和可靠性。
三、教学方法为了达到本节课的教学目标,将采用多种教学方法来进行教学。
首先,将采用讲授法来讲解Java的基本语法和结构,使学生能够了解和掌握这些知识。
其次,将采用案例分析法来分析计算器程序的设计和实现,使学生能够通过实际案例来加深对知识的理解和应用。
此外,还将采用实验法让学生亲自动手编写和调试计算器程序,以提高学生的实际操作能力。
四、教学资源为了支持本节课的教学内容和教学方法的实施,将选择和准备一些教学资源。
教材方面,将使用《Java编程语言》作为主教材,辅以《Java编程实践》等参考书进行深入学习。
多媒体资料方面,将制作一些PPT和视频教程,以帮助学生更好地理解和掌握知识。
实验设备方面,将准备一些计算机和编程环境,以便学生进行实际操作和调试。
五、教学评估本节课的教学评估将采用多元化的方式来进行,以全面、客观、公正地评估学生的学习成果。
评估方式包括平时表现、作业和考试等。
平时表现主要考察学生的出勤、课堂参与度和团队合作能力;作业主要包括课后练习和编程任务,以巩固和应用所学知识;考试则是对学生综合运用Java编程知识的考察,包括理论知识和编程实践。
通过这些评估方式,希望能够全面反映学生的学习成果,激发学生的学习兴趣和主动性。
题目:JAVA简易计算器班级: 10计算机学号:姓名:利用JAVA语言设计一个简单的科学计算器,实现加减乘除及开根号、退格、清空,求倒数的简单功能。
由于现代用户更倾向于由鼠标方便操作的图形用户界面,所以我们采用GUI来实现计算器,并采用Swing组件,AWT事件处理等实现具体功能。
在我们日常生活中,计算开支、收入时,大额数字或是多倍小数的计算都需要计算器的帮助,而在学习一些科目时,也常常要处理数字。
虽然现在的计算器价格比较低廉,但是功能过于简单的不能满足个人需求,功能多的价格较贵,不仅操作不便,很多功能也根本用不到。
所以我们想用自己所学设计开发一个属于自己的简单计算器来完成日常学习生活的需求。
一、设计思路利用Java Applet图形界面首先开始设计一个计算器的界面,定义计算器所需要的按钮并赋给其按钮名称,使得使用计算器时简单明了,清晰可见,操作轻松。
给各个按钮进行算法,利用鼠标点击事件,当鼠标点击某个按钮时就开始执行那个按钮所定义的算法,生成数据并显示。
除数字的输入为直接进行输入外,其他运算例如+、-、*、/、开平方等算法要求计算时通过内部较为复杂的运算将结果显示在显示屏上。
二、软件编程。
程序名: JavaJisuanqi.Java程序代码及其分析:import javax.swing.*;import javax.swing.event.*;import java.awt.*;import java.awt.event.*;public class JiSuanQi extends JFrame implements ActionListener{JFrame frame;private JButton jia=new JButton("+");private JButton jian=new JButton("-");private JButton cheng=new JButton("*");private JButton chu=new JButton("/");private JButton qiuyu=new JButton("%");private JButton deng=new JButton("=");private JButton fu=new JButton("+/-");private JButton dian=new JButton(".");private JButton kaigen=new JButton("sqrt");private JButton daoshu=new JButton("1/x");private TextField k1=new TextField();//private ObjConversion convert = new ObjConversion();JMenuItem copy,paste,t,help,about,me;JButton backspace,ce,c,num0,num1,num2,num3,num4,num5,num6,num7,num8,num9; Container cp;JTextField text;String copycontent="";boolean clickable=true,clear=true;int all=0;double qian;String fuhao;int jin=10,first=1;public JiSuanQi(){setTitle("计算器制作by王路 1002020123");setSize(400,300);setLocation(250,200);text=new JTextField(25);// text.setEnabled(false);text.setText("0.");text.setHorizontalAlignment(JTextField.RIGHT);//从右到左//setHorizontalAlignment方法的作用是让标签中的文字内容在标签内按照指定的方式对齐JPanel cp1=new JPanel();JPanel cp2=new JPanel();JPanel cp3=new JPanel();cp=getContentPane();cp.add(cp1,"North");cp.add(cp2,"Center");cp.add(cp3,"South");cp1.setLayout(new GridLayout(1,6));cp2.setLayout(new GridLayout(1,4));cp3.setLayout(new GridLayout(6,4));JTextField t3=new JTextField(25);cp1.add(text);// text.setEnabled(false);text.setEditable(false);text.setBackground(new Color(255, 255, 255));backspace=new JButton("Backspace");backspace.setForeground(new Color(255,0,0));backspace.addActionListener(this);ce=new JButton("CE");ce.setForeground(new Color(255,0,0));ce.addActionListener(this);c=new JButton("C");c.setForeground(new Color(255,0,0));c.addActionListener(this);k1.setVisible(false);cp2.add(k1);cp2.add(backspace);cp2.add(ce);cp2.add(c);num0=new JButton("0");num1=new JButton("1");num2=new JButton("2");num3=new JButton("3");num4=new JButton("4");num5=new JButton("5");num6=new JButton("6");num7=new JButton("7");num8=new JButton("8");num9=new JButton("9");cp3.add(num7);num7.addActionListener(this);cp3.add(num8);num8.addActionListener(this);cp3.add(num9);num9.addActionListener(this);cp3.add(chu);chu.setForeground(new Color(255,0,0)); chu.addActionListener(this);cp3.add(num4);num4.addActionListener(this);cp3.add(num5);num5.addActionListener(this);cp3.add(num6);num6.addActionListener(this);cp3.add(cheng);cheng.setForeground(new Color(255,0,0)); cheng.addActionListener(this);cp3.add(num1);num1.addActionListener(this);cp3.add(num2);cp3.add(num3);num3.addActionListener(this);cp3.add(jian);jian.setForeground(new Color(255,0,0));jian.addActionListener(this);cp3.add(dian);dian.addActionListener(this);cp3.add(num0);num0.addActionListener(this);cp3.add(fu);fu.addActionListener(this);cp3.add(jia);jia.setForeground(new Color(255,0,0));jia.addActionListener(this);cp3.add(daoshu);daoshu.addActionListener(this);cp3.add(qiuyu);qiuyu.addActionListener(this);cp3.add(kaigen);kaigen.addActionListener(this);cp3.add(deng);deng.setForeground(new Color(255,0,0));deng.addActionListener(this);JMenuBar mainMenu = new JMenuBar();setJMenuBar(mainMenu);JMenu editMenu = new JMenu("编辑");JMenu viewMenu = new JMenu("查看");JMenu helpMenu = new JMenu("帮助");mainMenu.add(editMenu);mainMenu.add(viewMenu);mainMenu.add(helpMenu);copy = new JMenuItem(" 复制");paste = new JMenuItem(" 粘贴");KeyStroke copyks=KeyStroke.getKeyStroke(KeyEvent.VK_C,Event.CTRL_MASK);copy.setAccelerator(copyks);//设置退出菜单选项加上快捷键KeyStroke pasteks=KeyStroke.getKeyStroke(KeyEvent.VK_V,Event.CTRL_MASK); paste.setAccelerator(pasteks);//设置退出菜单选项加上快捷键editMenu.add(copy);editMenu.add(paste);copy.addActionListener(this);t = new JMenuItem("标准型");viewMenu.add(t);t.addActionListener(this);help = new JMenuItem(" 使用帮助主题");about = new JMenuItem(" 关于计算器");me = new JMenuItem(" 作者信息");helpMenu.add(help);helpMenu.add(about);helpMenu.add(me);help.addActionListener(this);about.addActionListener(this);me.addActionListener(this);addWindowListener(new WindowDestroyer());//结束窗口}public void actionPerformed(ActionEvent e){//响应动作代码if(first==1)text.setText("");first=0;//第一次把文本框0.清空Object temp = e.getSource();if(temp==copy){copycontent = text.getText(); }if(temp==paste){text.setText(text.getText()+copycontent);}if(temp==help){ //打开系统帮助文件要查资料try{String filePath = "C:/WINDOWS/Help/calc.chm";Runtime.getRuntime().exec("cmd.exe /c "+filePath);}catch(Exception eeee){System.out.println("打开系统的计算器出错");}}if(temp==about){JOptionPane.showMessageDialog(frame," Java计算器王路制作 ","关于计算器",RMATION_MESSAGE); } if(temp==me){JOptionPane.showMessageDialog(frame,"王路 1002020123"); }if(temp==backspace){//退格String s = text.getText();text.setText("");for (int i = 0; i < s.length() - 1; i++){ char a = s.charAt(i);text.setText(text.getText() + a);} }if (temp==ce){ text.setText("0.");clear=true;first=1;}if (temp==c){ text.setText("0.");clear=true;first=1;}if(temp==num0){ if(clear==false)//判断是否点击了符号位text.setText("");text.setText(text.getText()+"0");}if(temp==num1){ if(clear==false)text.setText("");text.setText(text.getText()+"1");clear=true;//第二次不在清空(前二句)}if(temp==num2){ if(clear==false)text.setText("");text.setText(text.getText()+"2");clear=true;}if(temp==num3){ if(clear==false)text.setText("");text.setText(text.getText()+"3");clear=true;}if(temp==num4){ if(clear==false)text.setText("");text.setText(text.getText()+"4");clear=true;}if(temp==num5){if(clear==false)text.setText("");text.setText(text.getText()+"5");clear=true;}if(temp==num6){if(clear==false)text.setText("");text.setText(text.getText()+"6");clear=true;}if(temp==num7){if(clear==false)text.setText("");text.setText(text.getText()+"7");clear=true;}if(temp==num8){if(clear==false)text.setText("");text.setText(text.getText()+"8");clear=true;}if(temp==num9){if(clear==false)text.setText("");text.setText(text.getText()+"9");clear=true;}if(temp==dian){clickable=true;for (int i = 0; i < text.getText().length(); i++) if ('.' == text.getText().charAt(i)){clickable=false;break;} //第一层判断是否里面含有小数点;if(clickable==true)//第二坛判断text.setText(text.getText()+".");}try{if(temp==jia){//加法qian=Double.parseDouble(text.getText());fuhao="+";clear=false;}if(temp==jian){qian=Double.parseDouble(text.getText());fuhao="-";clear=false;}if(temp==cheng){qian=Double.parseDouble(text.getText());fuhao="*";clear=false;}if(temp==chu){qian=Double.parseDouble(text.getText());fuhao="/";clear=false;}if(temp==deng){double ss=Double.parseDouble(text.getText()); text.setText("");if(fuhao=="+")text.setText(qian+ss+"");if(fuhao=="-")text.setText(qian-ss+"");if(fuhao=="*")text.setText(qian*ss+"");if(fuhao=="/")text.setText(qian/ss+"");clear=false;//要清空前一次的数据}if(temp==kaigen){String s = text.getText();if (s.charAt(0) == '-'){text.setText("负数不能开根号");}elsetext.setText(Double.toString(ng.Math.sqrt(Double.parseDouble(text.getTex t()))));clear=false;}if(temp==daoshu){if (text.getText().charAt(0) == '0'&&text.getText().length() == 1){text.setText("除数不能为零");}else{boolean isDec = true;int i, j, k;String s = Double.toString(1 / Double.parseDouble(text.getText()));for (i = 0; i < s.length(); i++)if (s.charAt(i) == '.')break;for (j = i + 1; j < s.length(); j++)if (s.charAt(j) != '0'){isDec = false;break;}if (isDec == true){String stemp = "";for (k = 0; k < i; k++)stemp += s.charAt(k);text.setText(stemp);}elsetext.setText(s);}clear=false;}if(temp==qiuyu){text.setText("0");clear=false;}if (temp == fu){boolean isNumber = true;String s = text.getText();for (int i = 0; i < s.length(); i++)if (! (s.charAt(i) >= '0' && s.charAt(i) <= '9' || s.charAt(i) == '.' || s.charAt(i) == '-')){isNumber = false;break;}if (isNumber == true){//如果当前字符串首字母有'-'号,代表现在是个负数,再按下时,则将首符号去掉if (s.charAt(0) == '-'){text.setText("");for (int i = 1; i < s.length(); i++){char a = s.charAt(i);text.setText(text.getText() + a);}}//如果当前字符串第一个字符不是符号,则添加一个符号在首字母处elsetext.setText('-' + s);}}}catch(Exception eee){System.out.println("运算时,首先输入数字或字符");text.setText("运算出错");clear=false;}}class WindowDestroyer extends WindowAdapter{//退出窗口动作public void windowClosing(WindowEvent e){System.exit(0);}}public static void main(String arg[])//产生窗口{JiSuanQi win = new JiSuanQi();win.setVisible(true);}}运行截图:四、小结通过此次的课程设计实践,我们不但进一步理解掌握了课上老师教授的知识,而且通过查找资料学会了课上没有的东西,进一步理解了面向对象的含义,发现了很多它比面向过程突出的地方,第一次接触了图形界面,初步了解了GUI方面的知识。
java计算器编写课程设计一、课程目标知识目标:1. 理解Java编程基础,掌握计算器的基本功能需求;2. 学会使用Java控制台输入输出,熟练运用算术运算符;3. 掌握基本的异常处理,提高程序的健壮性;4. 了解面向对象编程思想,运用类和对象实现计算器功能。
技能目标:1. 能够编写出具有基本计算功能的Java程序;2. 能够运用控制台接收用户输入,处理用户异常输入;3. 能够运用类和对象对计算器程序进行模块化设计;4. 能够运用调试工具检查并修复程序中的错误。
情感态度价值观目标:1. 培养学生细心、严谨的编程习惯,树立良好的编程态度;2. 培养学生面对编程困难时的耐心和解决问题的能力;3. 培养学生的团队协作能力,学会共同分析问题、解决问题;4. 激发学生对计算机编程的兴趣,提高学习积极性。
课程性质分析:本课程为信息技术课程,旨在通过编写Java计算器程序,使学生掌握编程基础和面向对象编程思想。
学生特点分析:学生为初中年级,具有一定的逻辑思维能力,对计算机编程有一定兴趣,但需培养良好的编程习惯和面对困难的耐心。
教学要求:结合学生特点,注重实践操作,引导学生主动思考,激发学习兴趣,培养团队协作能力。
通过本课程的学习,使学生达到以上所述课程目标,为后续编程学习奠定基础。
二、教学内容1. Java编程基础:- 数据类型与变量- 运算符与表达式- 控制语句(顺序、分支、循环)2. Java控制台输入输出:- 使用Scanner类进行输入- 使用System.out.println进行输出3. 异常处理:- try-catch语句- 常见异常类型4. 面向对象编程:- 类的定义- 对象的创建与使用- 方法的定义与调用5. 计算器功能实现:- 分析计算器需求- 设计类与对象- 编写计算器程序教学大纲安排:第一课时:Java编程基础(数据类型与变量、运算符与表达式)第二课时:Java控制台输入输出(Scanner类、System.out.println)第三课时:控制语句(顺序、分支、循环)第四课时:异常处理(try-catch语句、常见异常类型)第五课时:面向对象编程(类与对象、方法的定义与调用)第六课时:计算器功能实现(分析需求、设计类与对象、编写程序)教学内容关联教材:- 《Java编程基础》第四章:控制流程- 《Java编程基础》第五章:面向对象编程基础- 《Java编程基础》第十章:异常处理三、教学方法1. 讲授法:教师通过生动的语言和实际案例,讲解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语言的基本语法和数据结构,掌握计算器的数学原理和算法;技能目标包括能够使用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、设置窗体大小(不可变)、标题栏内容、位置、窗体可见、窗体可关闭。
Java计算器程序课程设计一、课程目标知识目标:1. 学生能理解Java基本语法,掌握计算器程序的基本结构;2. 学生能运用所学知识,编写具有加、减、乘、除基本功能的计算器程序;3. 学生了解并掌握异常处理机制,提高程序的健壮性。
技能目标:1. 学生能运用面向对象编程思想,设计计算器类和其方法;2. 学生能运用调试工具,对计算器程序进行测试和优化;3. 学生能运用Java文档规范,为计算器类编写合适的注释。
情感态度价值观目标:1. 学生通过编程实践,培养解决问题的能力和团队合作精神;2. 学生在编程过程中,体验程序设计的乐趣,激发对计算机科学的兴趣;3. 学生遵守编程规范,树立良好的编程习惯,培养认真负责的工作态度。
本课程针对高年级学生,结合学科特点和教学要求,将课程目标分解为具体的学习成果。
学生在学习过程中,将逐步掌握Java编程基础知识,培养编程技能,同时注重情感态度价值观的培养,使学生在知识、技能和情感方面得到全面发展。
二、教学内容1. Java基本语法:变量定义、数据类型、运算符、表达式;2. 面向对象编程:类与对象、方法定义、构造方法、访问修饰符;3. 异常处理:try-catch语句、异常类型、自定义异常;4. 计算器类设计:属性、方法、界面交互;5. 程序调试与优化:使用调试工具、代码优化、性能分析;6. Java文档编写:类注释、方法注释、参数注释、返回值注释;7. 编程规范与团队合作:命名规范、代码格式、版本控制、团队协作。
教学内容依据课程目标,结合教材章节进行组织。
教学大纲安排如下:第一课时:Java基本语法与数据类型;第二课时:运算符、表达式与面向对象编程基础;第三课时:类与对象、方法定义;第四课时:异常处理、计算器类设计;第五课时:程序调试与优化;第六课时: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”后计算器的状态。
6.操作数两元符运算结果:输入了一个操作数、一个加减乘除符号和另一个操作数后紧接着键入开方键计算器所处的状态。
7.错误:执行非法计算后所处的状态,如执行÷0计算或者对负数的开方计算后的状态。
比如6/0后计算的结果是“0不能做除数”。
1.2总体设计思路对于此计算器程序,首先要设计其GUI界面,总体界面有一个文本框,18个按钮,总体界面用BorderLayout布局。
文本框放置在最NORTH,然后0到9以及+,-,*,/的按钮放置到一个面板Panel 中,添加到整体布局的CENTER,界面设计完成。
布局设计好后再添加按钮事件。
对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。
这是计算器中的一种:简单计算器,本项目用到了Java中的GUI界面和swing组件以及awt布局,所以简单易用,它能完成如下的几个小功能:点击按钮中的数字键和运算符键就能进行简单的加、乘、乘、除求模四则运算。
1.3功能图1.4类图2详细设计2.1详细设计思路1)流程图,如图6。
图6 流程图2)设置窗体窗体名称biaozhun继承JFrame类和ActionListener接口,并实现public voidactionPerformed(ActionEvent e){}方法。
3)定义菜单、菜单条、菜单项、按钮、文本框、容器,设置为private类型。
4)定义变量double memoryd;//使用内存中存储的数字;DecimalFormatdf;//保留小数位数。
5)使用private JButton getJButton()方法添加按钮并给按钮命名,使用setFont(new Font("楷体", Font.BOLD, 30));setForeground(new Color (250,0,0));方法设置按钮的字体和字体颜色。
6)设置数字按钮1到9并添加监控,使其在发生鼠标事件时改变按钮颜色addMouseListener(new MouseListener(){public void actionPerformed(MouseEvent e) {jButton.setForeground(new Color(0,100,0));}public void mouseClicked(MouseEvent e) {jButton.setForeground(new Color(0,150,100));}public void mouseEntered(MouseEvent e) {jButton.setForeground(new Color(0,0,250));}public void mouseExited(MouseEvent e) {jButton.setForeground(new Color(250,0,0));}public void mousePressed(MouseEvent e) {jButton.setForeground(new Color(0,250,0));}public void mouseReleased(MouseEvent e) {jButton.setForeground(new Color(250,250,0));}});7)开根号运算,定义jButton2 = new JButton("sqrt");对其设置监控,调用Math.sqrt()方法来实现开根号运算,并在文本框中输出结果,jButton2.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {double a=Double.parseDouble(jTextField.getText());double b;if(a<0){jTextField.setText("负数不能开平方");}else{b=Math.sqrt(a);jTextField.setText(Double.toString(b));}}});8)设置百分比按钮,jButton7 = new JButton("%");使用变量i1来存放从文本框中读出的数据并转换成double类型,定义double类型变量z1,z1=i1/100实现求百分比运算,在使用jTextField.setText(Double.toString(z1))使其在文本框中输出结果jButton7.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {double i1=Double.parseDouble(jTextField.getText());double z1=i1/100;jTextField.setText(Double.toString(z1)); }});9)设置求倒数运算,jButton14 = new JButton("1/x");定义double变量c用来存放从文本框中读出的数据,设置if……else语句来判断当c==0时在文本框中输出“除数不能等于0”,否则就输出结果jButton14.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {double c=Double.parseDouble(jTextField.getText());double d;if(c==0){jTextField.setText("除数不能等于0");}else{d=1/c; jTextField.setText(Double.toString(d));}}});10)定义相反数按钮,jButton16 = new JButton("+/-");通过使用0-Double.parseDouble(jTextField.getText().trim());使文本框中的数据变成其相反数jButton16.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {double i2=0-Double.parseDouble(jTextField.getText().trim());jTextField.setText(Double.toString(i2));}});11)等于号按钮,jButton19.setText("=");通过使用switch……case语句来控制,Operator变量在定义+、-、*、/按钮时对其赋值jButton19.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {double datatwo;datatwo=Double.parseDouble(str);switch(Operator){case'+':dataone+=datatwo;break;case'-':dataone-=datatwo;break;case'*':dataone*=datatwo;break;case'/':dataone/=datatwo;break;default:break;}str=Double.toString(dataone);jTextField.setText(str);}});12)定义文本框textMemory,用来显示进行MS、M+操作时显示M用,使用textMemory.setEditable(false);方法使textMemory文本框变成不可编辑。
13)定义文本框jTextField,用来显示运算结果jTextField.addKeyListener(new KeyAdapter() {public void keyTyped(KeyEvent e) {if(e.getKeyChar()>='0'&&e.getKeyChar()<='9'){str+=e.getKeyChar();jTextField.setText(str);}else if(e.getKeyChar()==KeyEvent.VK_BACK_SPACE){str=str.substring(0, str.length()-1);jTextField.setText(str);}else if(e.getKeyChar()==KeyEvent.VK_ESCAPE){str="";jTextField.setText(str);}}});14)定义jButton20、jButton21、jButton22、jButton23分别为MC、MR、MS、M+,并且对按钮添加监听,计算器内部有一个存贮器,假设将其称为“寄数器”。