科学计算器软件需求说明书(参考Word)
科学计算器系统
软
件
需
求
说明书
目录
1引言 (4)
1.1编写目的 (4)
1.2背景 (4)
1.3定义 (4)
1.3.1 关键字 (4)
1.3.2 缩略语清单 (4)
1.4参考资料 (5)
2任务概述 (5)
2.1目标 (5)
2.2用户的特点 (5)
2.3假定和约束 (5)
2.3.1 开发期限: (5)
2.3.2 技术约束: (5)
3需求规定 (5)
3.1对功能的规定 (5)
3.2对性能的规定 (6)
3.2.1精度 (6)
3.2.1.1. 输入精度: (6)
3.2.1.2. 传递精度: (6)
3.2.1.3. 输出精度: (6)
3.2.2时间特性要求 (6)
3.2.2.1 响应时间: (6)
3.2.2.2 更新处理时间: (6)
3.2.2.3 数据的转换和传送时间: (7)
3.2.2.4 解题时间: (7)
3.2.3灵活性 (7)
3.2.3.1 操作方式上的变化: (7)
3.2.3.2 运行环境的变化: (7)
3.2.3.3 同其他软件的接口的变化: (7)
3.2.3.4 精度和有效时限的变化: (7)
3.2.3.5 计划的变化或改进: (7)
3.3输人输出要求 (7)
3.3.1 输入:CString (7)
3.3.2 输出:CString (7)
3.4数据管理能力要求 (7)
3.5故障处理要求 (8)
3.5.1 软件故障 (8)
3.5.1.1 兼容性故障: (8)
3.5.1.2 病毒故障: (8)
3.5.2 硬件故障 (8)
3.6其他专门要求 (8)
4运行环境规定 (8)
4.1设备 (8)
4.1.1 处理器型号及内存容量: (8)
4.1.2 外存容量、联机或脱机、媒体及其存储格式,设备的型号及数量: (8)
4.1.3 输入及输出设备的型号和数量,联机或脱机: (8)
4.1.4 数据通信设备的型号和数量: (8)
4.1.5 功能键及其他专用硬件: (8)
4.2支持软件 (9)
4.2.1 操作系统: (9)
4.2.2 开发环境: (9)
1引言
1.1编写目的
本文主要描述科学计算器系统需求,目的是为了清晰地描述用户使用本软件必须要完成的任务和定义开发人员必须实现的软件功能,使用户利用系统能够完成他们的任务。
1.2背景
说明:
1待开发系统为科学计算器系统;
2该软件系统为首次开发,无历史版本。
1.3定义
1.3.1关键字
科学计算
1.3.2缩略语清单
1.4参考资料
1.《深入浅出MFC》侯俊杰华中科技大学出版社 2001年
2.《C++程序设计》谭浩强清华大学出版社 2004年
3.《VC++深入详解》孙鑫电子工业出版社 2006年
2任务概述
2.1目标
开发该系统是为了实现基本的科学计算器的功能,主要应用于日常工作学习中遇到的科学计算问题,系统应该能够很好地完成基本的科学计算任务,做到准确快速地计算出用户所需数据。
2.2用户的特点
本系统用户面向能够对计算机进行基本操作的全体人员;
2.3假定和约束
2.3.1 开发期限:
本系统开发期限为两周;
2.3.2 技术约束:
本系统采用C++语言开发,利用Visual C++ 6.0 的MFC框架。
3需求规定
3.1对功能的规定
系统IPO表
3.2对性能的规定
3.2.1精度
3.2.1.1. 输入精度:
本系统对于输入精度无具体要求,只要输入在合法范围内,均可接受;
3.2.1.2. 传递精度:
对输入数据进行精度和类型的转换,将所有合法输入都转换为双精度;
3.2.1.3. 输出精度:
输出均为双精度;
3.2.2时间特性要求
3.2.2.1响应时间:
系统对于一般运算的响应应该在0.1second之内完成,对于较大数据的响应至少要在1second之内;
3.2.2.2更新处理时间:
系统的更新处理时间为0.1second;
3.2.2.3数据的转换和传送时间:
数据转换和传递都应在0.1second之内完成;
3.2.2.4解题时间:
解题时间与计算时间相同,至少0.1second;
3.2.3灵活性
3.2.3.1 操作方式上的变化:
可以键盘或鼠标点击输入;
3.2.3.2 运行环境的变化:
支持所有windows NT 及以上的windows系统;
3.2.3.3 同其他软件的接口的变化:
无;
3.2.3.4 精度和有效时限的变化:
无;
3.2.3.5 计划的变化或改进:
无。
3.3输人输出要求
3.3.1 输入:CString
对输入的表达式用CString字符串存储
如:( 13 + 34 * 1.2 – 20 ) / 0.02
3.3.2 输出:CString
对于输出结果,亦用CString存储
如:2590.000000000000
3.4数据管理能力要求
由于该系统无数据库,因此对于数据管理的能力无特殊要求;
3.5故障处理要求
3.5.1软件故障
3.5.1.1兼容性故障:
若与使用的电脑的操作系统不兼容,则不能使用此系统,该系统运行的系统参考运行环境规定;
3.5.1.2病毒故障:
由于电脑感染病毒而导致该系统不能使用的,解决方法为尝试重新安装。
3.5.2硬件故障
无
3.6其他专门要求
无
4运行环境规定
4.1设备
4.1.1处理器型号及内存容量:
Pentium II以上处理器,最低内存256M;
4.1.2外存容量、联机或脱机、媒体及其存储格式,设备的型号及数量:
硬盘容量:100G,无联机要求;
4.1.3输入及输出设备的型号和数量,联机或脱机:
输入设备:键盘,鼠标;
输出设备:液晶或CRT显示器;
联机要求:无联机要求;
4.1.4数据通信设备的型号和数量:
无数据通信设备需求;
4.1.5功能键及其他专用硬件:
无特殊专用硬件需求;
4.2支持软件
4.2.1 操作系统:
Windows NT/2000/xp/vista/7
4.2.2 开发环境:
Microsoft Visual C++ 6.0
(注:素材和资料部分来自网络,供参考。
请预览后才下载,期待你的好评与关注!)。
科学计算器说明书
35.
fx-82SX PLUS/220 PLUS:
(续) n
35.
注意:变量M用于独立存储器。
k 清除所有存储器的内容 即使您按A 、更改计算模式或关闭计算器的电源,独立存储器和 变量内容仍将保留。如果需要清除所有存储器的内容,请执行以 下步骤。 fx-82MS/85MS/300MS/350MS:p!,(CLR)1(Mcl)= fx-82SX PLUS/220 PLUS:pr1(Mcl)=
tanh, sinh -1, cosh -1, tanh -1, (﹣))
7 B类函数隐含乘法:2'3,Alog2等
8 排列 (nPr)、组合 (nCr)
9 乘法,除法 (×,÷)
10 加法,减法 (+,﹣)
k 更正和清除表达式 删除一个字符或者函数: 1234_ → ddD → 124
将字符或函数插入计算中: 123_ → d!D(INS)e → 1243 • 光标从“_”变为“t”。
清除输入的所有计算:按A。
13. 基本计算
k 分数计算
2 3
+
1 2
=
1
1 6
2 $ 3 + 1 $ 2 = 1{1{6.
4
−
3
1 2
=
1 2
4-3$1$2=
1{2.
注意:• 计算中的分数值和小数值会导致计算器以小数值显示计算结 果。• 分数计算结果在显示前都先经过约分。
在假分数和带分数格式之间切换计算结果:按1$(d/c)。
所产生的特殊、附带、意外和间接损害概不负责。此外,CASIO Computer Co., Ltd. 对于任意方因使用本产品和附属品时所发表的 所有声明概不负责。 • 请务必将所有用户文件妥善保管以便日后需要时查阅。
科学计算器软件需求说明书
科学计算器系统软件需求说明书目录1引言 (4)1.1编写目的 (4)1.2背景 (4)1.3定义 (4)1.3.1关键字 (4)1.3.2缩略语清单 (4)1.4参考资料 (5)2任务概述 (5)2.1目标 (5)2.2用户的特点 (5)2.3假定和约束 (5)2.3.1 开发期限: (5)2.3.2 技术约束: (5)3需求规定 (5)3.1对功能的规定 (5)3.2对性能的规定 (6)3.2.1精度 (6)3.2.1.1. 输入精度: (6)3.2.1.2. 传递精度: (6)3.2.1.3. 输出精度: (6)3.2.2时间特性要求 (6)3.2.2.1响应时间: (6)3.2.2.2更新处理时间: (6)3.2.2.3数据的转换和传送时间: (7)3.2.2.4解题时间: (7)3.2.3灵活性 (7)3.2.3.1 操作方式上的变化: (7)3.2.3.2 运行环境的变化: (7)3.2.3.3 同其他软件的接口的变化: (7)3.2.3.4 精度和有效时限的变化: (7)3.2.3.5 计划的变化或改进: (7)3.3输人输出要求 (7)3.3.1 输入:CString (7)3.3.2 输出:CString (7)3.4数据管理能力要求 (7)3.5故障处理要求 (8)3.5.1软件故障 (8)3.5.1.1兼容性故障: (8)3.5.1.2病毒故障: (8)3.5.2硬件故障 (8)3.6其他专门要求 (8)4运行环境规定 (8)4.1设备 (8)4.1.1处理器型号及内存容量: (8)4.1.2外存容量、联机或脱机、媒体及其存储格式,设备的型号及数量: (8)4.1.3输入及输出设备的型号和数量,联机或脱机: (8)4.1.4数据通信设备的型号和数量: (8)4.1.5功能键及其他专用硬件: (8)4.2支持软件 (9)4.2.1 操作系统: (9)4.2.2 开发环境: (9)1引言1.1编写目的本文主要描述科学计算器系统需求,目的是为了清晰地描述用户使用本软件必须要完成的任务和定义开发人员必须实现的软件功能,使用户利用系统能够完成他们的任务。
科学计算器使用说明书
科学计算器使用说明书
科学计算器是一个功能非常强大的计算工具,可以帮助我们进行
各种数学运算、函数计算、单位转换等任务。
下面,让我们来一起了
解它的使用方法。
第一步,打开科学计算器。
在计算器上方找到“科学”选项,点
击即可进入科学计算器界面。
此时,你可以看到计算器的各种功能按钮,包括基本运算(加、减、乘、除)、三角函数、对数函数、幂函数、开方函数等。
第二步,进行数学运算。
在计算器的输入框中输入数学表达式,
然后点击相应的功能按钮进行计算即可。
例如,输入“2+3”,然后点
击“=”按钮,计算器就会显示出运算结果“5”。
在输入复杂的数学
表达式时,可以使用括号来明确运算顺序,以确保计算结果的正确性。
第三步,进行函数计算。
计算器支持各种函数的计算,如正弦函数、余弦函数、双曲正弦函数、指数函数等。
同样,在计算器的输入
框中输入函数表达式,然后点击相应的功能按钮进行计算即可。
例如,输入“sin(30)”,然后点击“=”按钮,计算器就会显示出计算结果“0.5”。
第四步,进行单位转换。
科学计算器还支持各种单位的转换,如
长度单位、质量单位、速度单位、温度单位等。
在计算器界面的下方
找到“单位换算”的选项,选择需要转换的单位类型和数值,然后点
击“=”按钮,即可得到转换后的单位数值。
综上所述,科学计算器是一个非常实用的计算工具,能够方便地进行各种数学运算、函数计算和单位转换。
在使用计算器时,需要注意输入表达式的正确性,同时,也可以根据需要调整计算器的精度和计算模式,以满足不同的计算要求。
(3)计算器软件概要设计说明书
软件概要设计说明书拟制: Prepared by 日期:Date审核: Reviewed by 日期:Date审核: Reviewed by 日期:Date批准: Granted by日期:Date计算机学院程序设计基础实践专用版权所有侵权必究目录1 引言1 1.1 编写目的 1 1.2 背景 1 1.3 术语表 1 1.4 参考资料 12 任务概述2 2.1 目标 2 2.2 需求概述 2 2.3 性能需求 2 2.4 条件和限制 23 总体设计2 3.1 模块结构 2 3.2 功能需求与功能模块关系 3 3.3 设计概念及流程处理 34 接口设计8 4.1 数据结构定义8 4.2 接口函数9 4.3 信号、命令和事件列表115 出错处理设计116 未解决的问题11软件概要设计说明书1 引言1.1 编写目的此概要设计说明书对软件的解决方案、功能分配、模块化分、程序的总体结构、输入输出和接口设计、运行设计及出错设计等方面作了全面的概括性的说明,为该软件的详细设计奠定了基础。
此文档为模块主管、设计人员工作的阶段性总结,并提供软件主设计、设计人员和开发人员参考。
1.2 背景✧该项目基于展讯(Spreadtrum)平台模拟器开发。
✧为派生机型,中低端型号。
✧按键式操作。
✧屏显为128*160。
✧由XXXX设计开发。
1.3 术语表MMI :Man Machine Interface 人机接口ADD :加法。
SUB :减法。
MULTI :乘法。
DIVIDE : 除法。
SUM :求和。
EQUAL : 等于。
1.4 参考资料2 任务概述2.1 目标编写一个程序来实现一个单步运算的算术计算器。
通过数组来存放输入的每一数字或运算符号的记录(包括1、2、3等数字,+、--、*、/ 等运算符号),然后将其信息存入缓冲BUFFER中。
输入一个简单算术计算式,就在屏幕上显示结果。
2.2 需求概述2.3 性能需求无2.4 条件和限制由于该终端为中低端,且屏显大小为128X160,为输入数据全部显示,所以计算器输入数据一、输入数据二的位数均设计成14位。
计算器需求规格说明书
换算器系统1.0版需求规格说明文档作者:2010.10.10目录一. 引言 01.1目标 01.2文档约定 01.3读者对象和阅读建议 (1)1.4项目范围 (1)1.5参考资料 (1)二. 总体描述 (1)2.1产品前景 (1)2.2产品特性 (1)2.3用户类及其特征 (2)2.4运行环境 (3)2.5计和实现上的约束 (3)2.6户文档 (3)2.7假设和依赖 (4)三.外部接口需求 (4)3.1用户界面 (4)3.2硬件接口 (4)3.3软件接口 (4)3.4通信接口 (4)四.其他非功能性需求 (5)4.1性能需求 (5)4.2安全设施需求 (5)4.3安全性需求 (5)4.4软件质量属性 (5)一. 引言1.1目标各行各业在运营的过程中都会碰到各种各样的单位转换问题。
例如:建筑行业,在进行建材的统计时遇到重量统一时,将不同的重量g、kg、t统一成一种单位时就使用到换算器。
金融业,在黄金期货、外汇、美股市场交易时皆会使用到换算器。
在数据量大的今天,各种各样的换算器横空出世,不只是简单的计算能满足,换算器的自由度越来越高,种类越来越丰富,有的多达一百多个单位。
现在我们来设计一个简易的、常用的换算器,它使我们的日常生活更方便快捷。
.长期以来,大量的数据都是依赖人工进行,面对如此大量的复杂的数据信息,其工作量可想而知。
它不仅浪费了大量的人力物力,而且人工计算存在着不可控因素,使得人们对数据的处理具的结果极易存在不可靠和不精确,陷入“事半功倍”的地步。
针对以往对大量数据的高速精确的换算要求的弊端和基本流程,我们组设计了科学换算器系统,实现对大量数据处理的自动化和精确化,减轻转换人员的负担。
换算器系统是典型的信数据处理程序,其主要利用VB开发工具建立一个具有高速性、准确性和可靠性的计算器,采用VB开发工具的开发工具设计应用界面,便于操作。
在设计过程中,首先在短时间内建立系统应用原型,然后对初始原型系统进行需求迭代,不断修正和改进,直到形成满意的可行系统。
卡西欧科学计算器说明书简体中文
卡西欧科学计算器说明书简体中文卡西欧科学计算器作为一种重要的学习和工作工具,已经被广泛应用于各个领域。
无论是工程设计、物理学计算还是日常生活中的数学问题,卡西欧科学计算器都能为我们快速、准确地提供解决方案。
但是,对于一些新手来说,可能会遇到一些使用上的困难。
因此,在这份简体中文的说明书中,我们将详细介绍卡西欧科学计算器的各种功能和使用方法,希望对初学者能有所帮助。
1. 基本操作第一次使用卡西欧科学计算器,我们需要先了解一些基本操作。
首先,我们需要按下ON键,打开计算器。
然后,按下数字键输入我们要计算的数字。
在计算过程中,我们还可以使用加、减、乘、除等运算符。
最后,按下等号键,计算器就会给出我们想要的结果。
如果我们输错了数字或者运算符,可以按下DELR键删除错误的部分。
除了以上的基本操作,卡西欧科学计算器还有许多其他的功能。
下面,我们将逐一进行介绍。
2. 四则运算和括号四则运算是最基本的数学运算之一,卡西欧科学计算器可以通过简单的按键操作进行四则运算的计算。
具体来说,卡西欧科学计算器的四则运算包括加、减、乘、除几种基本运算。
此外,括号也是一个非常常见的运算符,对于复杂的计算式,括号的作用非常重要。
在使用卡西欧科学计算器进行四则运算时,需要注意以下几点:1)优先级问题,括号内的计算先于括号外的计算;2)乘法与除法的优先级高于加法和减法,先完成乘除法运算;3)如果有相同优先级的运算需要进行,先计算左侧的运算;4)除法分母不能为0。
了解这些基础知识后,我们可以举一些例子练习一下,比如:计算︰2+3*4,计算︰(2+3)*4,计算︰1/3-1/3。
这些例子可以让我们更好地掌握卡西欧科学计算器四则运算的使用方法。
3. 科学计数法科学计数法是指将数字表示成一个带小数的数字和一个幂(通常为整数),例如1.23X10^4。
这种表示方法可以有效地表示非常大或非常小的数字,例如太阳的质量、电子的电荷等。
在使用卡西欧科学计算器时,我们需要掌握科学计数法的输入和输出方法。
科学计算器说明书
35.
fx-82SX PLUS/220 PLUS:
(续) n
35.
注意:变量M用于独立存储器。
k 清除所有存储器的内容 即使您按A 、更改计算模式或关闭计算器的电源,独立存储器和 变量内容仍将保留。如果需要清除所有存储器的内容,请执行以 下步骤。 fx-82MS/85MS/300MS/350MS:p!,(CLR)1(Mcl)= fx-82SX PLUS/220 PLUS:pr1(Mcl)=
• 配备的电池在运输和存放期间可能会产生轻微放电。因此,更换时 间可能会比正常电池寿命要早。
• 请勿对本产品使用镍氢*或任何其它使用镍作为材料的电池。电池和 产品规格不兼容可能会导致电池寿命缩短和使产品发生故障。
• 请避免在超出温度极限、湿度过高和灰尘过多的区域使用和存放计 算器。
• 切勿过度撞击、挤压或弯曲计算器。 • 请勿尝试拆卸计算器。 • 请使用柔软的干布清洁计算器的外部。 • 无论何时丢弃计算器或电池,请确保遵循您所在地区的法律和法规
k 重放 (fx-82SX PLUS无) 当计算结果位于显示屏上时,您可以按d或e来编辑先前计算所 使用的表达式。
4 × 3 + 2.5 = 14.5
4 * 3 + 2.5 =
4 × 3 - 7.1 = 4.9 (续) dYYYY- 7.1 =
14.5 4.9
k 答案存储器 (Ans)
计算所得的上一计算结果存储在Ans (答案) 存储器中。在每次显示新 计算结果时都会更新Ans存储器内容。
2625.
如果将300克添加到原称重为500克的测试样品,重量增加了
百分之几?(160%)
300+500!=(%)
160.
数值40增加到46后变化了百分之几?(15%)
科学计算器说明书 (4)
科学计算器说明书1. 简介科学计算器是一款强大的工具,具有多种数学计算和科学功能。
它可以执行各种基本的数学运算,如加法、减法、乘法和除法,同时还具备高级功能,如三角函数、指数和对数运算等。
本文档将详细介绍科学计算器的使用方法和功能。
2. 安装和启动科学计算器可以在各个操作系统上安装和使用,包括Windows、Mac和Linux。
下面是安装和启动步骤:2.1 安装•Windows:双击安装程序,并按照提示完成安装过程。
•Mac:将安装程序拖拽到“应用程序”文件夹中即可完成安装。
•Linux:打开终端,输入安装命令并按照提示完成安装过程。
2.2 启动安装完成后,在操作系统的应用程序列表中找到科学计算器的图标,双击打开即可启动。
3. 基本功能科学计算器具备以下基本功能:•加法:可以对两个数进行加法运算,并返回结果。
示例:2 + 3 = 5•减法:可以对两个数进行减法运算,并返回结果。
示例:5 - 2 = 3•乘法:可以对两个数进行乘法运算,并返回结果。
示例:2 * 3 = 6•除法:可以对两个数进行除法运算,并返回结果。
示例:6 / 2 = 34. 高级功能科学计算器的高级功能包括:•三角函数:支持常见的三角函数运算,如正弦、余弦和正切等。
示例:sin(30) = 0.5, cos(60) = 0.5, tan(45) = 1•指数运算:可以进行指数运算,即计算一个数的指定次方。
示例:2^3 = 8, 10^2 = 100•对数运算:支持计算一个数的对数。
示例:log2(8) = 3, log10(100) = 25. 使用示例下面是一些使用科学计算器的示例:•示例1:计算三角函数sin(45)输入:sin(45)输出:0.7071•示例2:计算2的4次方输入:2^4输出:16•示例3:计算对数log10(1000)输入:log10(1000)输出:36. 注意事项在使用科学计算器时,需要注意以下事项:•确保输入的表达式正确且合法,否则计算结果可能不准确或无效。
高等数学计算器 软件需求说明书
基于插件化软件系统的高等数学计算器软件需求说明书目录目录 (1)1引言 (3)1.1编写目的 (3)1.2背景 (3)1.3定义 (3)1.4参考资料 (3)2任务概述 (4)2.1目标 (4)2.2用户的特点 (4)2.3假定和约束 (5)3需求规定 (5)3.1对功能的规定 (5)3.2对性能的规定 (8)3.2.1精度 (8)3.2.2时间特性要求 (9)3.2.3灵活性 (9)3.3维护保障要求 (9)3.4可移植性要求 (10)3.5故障处理要求 (10)3.6其他专门要求 (10)4运行环境规定 (10)4.1设备 (10)4.2支持软件 (10)4.3接口 (10)4.3.1用户接口 (11)4.4控制 (11)1引言1.1编写目的这份软件需求说明书的目的是:定义软件总体要求,作为用户和软件开发人员之间相互了解的基础;提供性能要求、初步设计和对用户影响的信息,作为软件人员进行软件结构设计和编码的基础;作为软件总体测试的依据。
这份软件需求说明书的预期读者,是系统分析员,用户,软件开发人员等。
1.2背景说明:a.软件系统的名称:基于插件化软件系统的高等数学计算器;b.本项目任务提出者是导师龚俊教授,开发者是刘晓霞和吕胜,用户是学习高等数学的人以及者需要频繁使用高等数学计算的研究人员。
c.该软件系统是基于插件化软件系统开发的,易于维护和功能扩展;该软件也使用了MATLAB的函数库,实现数学计算。
1.3定义列出本文件中用到的专门术语的定义和外文首字母组词的原词组。
表1-1定义列表1.4参考资料2任务概述2.1目标a.开发目的:1、帮助高等数学学习者更好的理解和学习高等数学的相关计算2、方便相关业务人员进行高等数学的计算,提高业务处理能力。
3、帮助相关的数学研究人员通过大量的计算,进行相关的学术研究。
b.应用目标:数学领域c.使用范围:学生,老师,业务人员,研究人员。
d.背景资料:该软件是基于插件化软件系统开发设计的,易于维护和功能扩展;该软件也使用了MATLAB的函数库,实现数学计算。
计算器说明文档
计算器说明文档1、程序设计(1).图形布局(2).函数调用2、功能介绍注意:开始启动时要先按清零键“C”如:按键“C”后:(1).”+、-、*、÷”运算做加法运算(输入1+2):按“=”结果为:(2).进制转换二进制转换十进制:点二进制按钮(此时只有0、1可按):输入二进制数:选中十进制按钮,结果为:(3).三角函数和log运算注意:先输入度数后,直接按三角函数或log按钮出结果,log是以10为底的作sin运算(输入90)结果为:(4).倒数“/”,百分号“%”,根号“√”运算注意:同样先输入数字后,直接按相应的键出结果:作根号运算(输入4)结果为:(5)按关闭按钮退出源代码:1、Calculator类package .qtech;import java.awt.*;import java.awt.event.*;import java.util.Stack;import javax.swing.Box;import javax.swing.ButtonGroup;import javax.swing.JFrame;import javax.swing.JRadioButton;import javax.swing.JTextField;public class Calculator extends WindowAdapter implements ActionListener {//监听接口private Button btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9,btn10,btn11,btn12,btn13,btn14,bt n15,btn16,btn17,btn18,btn19,btn20,btn21,btn22,btn23,btn24,btn_del;JRadioButton rButton1,rButton2,rButton3;TextField tf;Panel p,p2;int M=0,N=0;String number=null;boolean isFirst=true;boolean i= false;//判断是否第一次输入,第一次为truepublic static void main(String args[]){Calculator c = new Calculator();c.jisuan();}public void jisuan(){Frame f = new Frame("Edison的计算器");//构造Frame类对象,并设定窗口标题f.setVisible(true);//设置框架为可见f.setBounds(100,100,250,250);//设置框架大小和位置//f.setDefaultCloseOperation(EXIT_ON_CLOSE);f.setBackground(Color.pink);//设置背景色f.setForeground(Color.red);//设置前景色f.setFont(new Font("Serief",Font.BOLD,18));//字体设置p=new Panel();//创建面板ButtonGroup butgroup=new ButtonGroup();Box box,baseBox;//创建盒式容器及支撑box=Box.createV erticalBox();//创建列式盒式容器baseBox=Box.createHorizontalBox();//创建行式盒式容器p.setLayout(new GridLayout(4,6,2,2));//设置按钮的行数列数,以及水平垂直间距tf=new TextField(20);//实例化按钮//String[]button={"log","7","8","9","+","-","tan","4","5","6","*","/","cos","1","2"," 3",".","=","sin","(","0",")","C","%"};tf.setText("启动请先按清零键:C");btn1= new Button("log");btn2= new Button("7");btn3= new Button("8");btn4= new Button("9");btn5= new Button("+");btn6= new Button("-");btn7= new Button("tan");btn8= new Button("4");btn9= new Button("5");btn10= new Button("6");btn11= new Button("*");btn12= new Button("/");btn13= new Button("cos");btn14= new Button("1");btn15= new Button("2");btn16= new Button("3");btn17= new Button(".");btn18= new Button("=");btn19= new Button("sin");btn20= new Button("(");btn21= new Button("0");btn22= new Button(")");btn23= new Button("√");btn24= new Button("%");btn_del=new Button("C");//单选按钮rButton1=new JRadioButton("二进制");rButton2=new JRadioButton("十进制");rButton3=new JRadioButton("八进制");//设置按钮btn1.setBackground(Color.BLACK);btn1.setForeground(Color.WHITE);btn7.setBackground(Color.BLACK);btn7.setForeground(Color.WHITE);btn6.setBackground(Color.BLACK);btn6.setForeground(Color.WHITE);btn12.setBackground(Color.BLACK);btn12.setForeground(Color.WHITE);btn13.setBackground(Color.BLACK);btn13.setForeground(Color.WHITE);btn18.setBackground(Color.BLACK);btn18.setForeground(Color.WHITE);btn19.setBackground(Color.BLACK);btn19.setForeground(Color.WHITE);btn20.setBackground(Color.BLACK);btn20.setForeground(Color.WHITE);btn24.setBackground(Color.BLACK);btn24.setForeground(Color.WHITE);btn22.setBackground(Color.BLACK);btn22.setForeground(Color.WHITE);btn23.setBackground(Color.BLACK);btn23.setForeground(Color.WHITE);btn5.setBackground(Color.BLACK);btn5.setForeground(Color.white);btn11.setBackground(Color.BLACK);btn11.setForeground(Color.white);btn17.setBackground(Color.BLACK);btn17.setForeground(Color.white);rButton1.setBackground(Color.BLACK); rButton1.setForeground(Color.white);rButton2.setBackground(Color.BLACK); rButton2.setForeground(Color.white);rButton3.setBackground(Color.BLACK); rButton3.setForeground(Color.white);// btn_del.setBounds(70, 10, 10, 10);btn_del.setBackground(Color.yellow);//归组butgroup.add(rButton1);butgroup.add(rButton2);butgroup.add(rButton3);box.add(baseBox);box.add(p);f.add(tf,"North");//把文本区添加到框架的北方f.add(box,"Center");//把面板添加到框架的中间//把按钮添加到面板上p.add(btn1);p.add(btn2);p.add(btn3);p.add(btn4);p.add(btn5);p.add(btn6);p.add(btn7);p.add(btn8);p.add(btn9);p.add(btn10);p.add(btn11);p.add(btn12);p.add(btn13);p.add(btn14);p.add(btn15);p.add(btn16);p.add(btn17);p.add(btn18);p.add(btn19);p.add(btn20);p.add(btn21);p.add(btn22);p.add(btn23);p.add(btn24);baseBox.add(rButton1);baseBox.add(Box.createHorizontalStrut(5)); baseBox.add(rButton2);baseBox.add(Box.createHorizontalStrut(5)); baseBox.add(rButton3);baseBox.add(Box.createHorizontalStrut(5)); baseBox.add(btn_del);f.addWindowListener(this);//为框架添加监听//为按钮添加监听btn1.addActionListener(this);btn2.addActionListener(this);btn3.addActionListener(this);btn4.addActionListener(this);btn5.addActionListener(this);btn6.addActionListener(this);btn7.addActionListener(this);btn8.addActionListener(this);btn9.addActionListener(this);btn10.addActionListener(this);btn11.addActionListener(this);btn12.addActionListener(this);btn13.addActionListener(this);btn14.addActionListener(this);btn15.addActionListener(this);btn16.addActionListener(this);btn17.addActionListener(this);btn18.addActionListener(this);btn19.addActionListener(this);btn20.addActionListener(this);btn21.addActionListener(this);btn22.addActionListener(this);btn23.addActionListener(this);btn24.addActionListener(this);btn_del.addActionListener(this);rButton1.addActionListener(this);rButton2.addActionListener(this);rButton3.addActionListener(this);}//监听程序public void actionPerformed(ActionEvent e){ jinzhiChange M2N=new jinzhiChange();if(e.getSource()==btn4){if(i==true){tf.setText("9");i=false;}else tf.setText(tf.getText()+'9');}if(e.getSource()==btn24){if(i==true){tf.setText("%");i=false;}else tf.setText(tf.getText()+'%');}if(e.getSource()==btn3){if(i==true){tf.setText("8");i=false;}else tf.setText(tf.getText()+'8');}if(e.getSource()==btn2){if(i==true){tf.setText("7");i=false;}else tf.setText(tf.getText()+'7'); }if(e.getSource()==btn10){if(i==true){tf.setText("6");i=false;}else tf.setText(tf.getText()+'6'); }if(e.getSource()==btn9){if(i==true){tf.setText("5");i=false;}else tf.setText(tf.getText()+'5'); }if(e.getSource()==btn8){if(i==true){tf.setText("4");i=false;}else tf.setText(tf.getText()+'4'); }if(e.getSource()==btn16){if(i==true){tf.setText("3");i=false;}else tf.setText(tf.getText()+'3'); }if(e.getSource()==btn15){if(i==true){tf.setText("2");i=false;}else tf.setText(tf.getText()+'2'); }if(e.getSource()==btn14){if(i==true){tf.setText("1");i=false;}else tf.setText(tf.getText()+'1');if(e.getSource()==btn21){if(i==true){tf.setText("0");i=false;}else tf.setText(tf.getText()+'0');}if(e.getSource()==btn20){if(i==true){tf.setText("(");i=false;}else tf.setText(tf.getText()+'(');}if(e.getSource()==btn22){if(i==false){tf.setText(tf.getText()+')');}}if(e.getSource()==btn17){if(i==false){tf.setText(tf.getText()+'.');}}if(e.getSource()==btn5){tf.setText(tf.getText()+'+');i=false;}if(e.getSource()==btn6){tf.setText(tf.getText()+'-');i=false;}if(e.getSource()==btn11){tf.setText(tf.getText()+'*');i=false;}if(e.getSource()==btn12){tf.setText(tf.getText()+'/');i=false;if(e.getSource()== btn18){tf.setText(String.valueOf(Calculator (tf.getText())));i=true;}if(e.getSource()==btn_del){tf.setText("0");i=true;}if(e.getSource()==btn23){if(Double.parseDouble(tf.getText())<=0){tf.setText("无效输入");}else{tf.setText(String.valueOf(Math.sqrt(Double.parseDouble(tf.getText()))));}}if(e.getSource()==btn1){tf.setText(String.valueOf(Math.log10(Double.parseDouble(tf.getText()))));}if(e.getSource()==btn7){if(Double.parseDouble(tf.getText())%90==0){if((Double.parseDouble(tf.getText())/90)%2!=0)tf.setText("无效输入");elsetf.setText("0");}else{tf.setText(String.valueOf(Math.tan(Double.parseDouble(tf.getText())/180.0* Math.PI)));}}if(e.getSource()==btn13){if(Double.parseDouble(tf.getText())%90==0&&(Double.parseDouble(tf.getT ext())/90)%2!=0){tf.setText("0");}else{tf.setText(String.valueOf(Math.cos(Double.parseDouble(tf.getText())/180.0* Math.PI)));}}if(e.getSource()==btn19){if(Double.parseDouble(tf.getText())%90==0&&(Double.parseDouble(tf.getT ext())/90)%2==0){tf.setText("0");}else{tf.setText(String.valueOf(Math.sin(Double.parseDouble(tf.getText())/180.0* Math.PI)));}}if(e.getSource()==rButton1){if(isFirst){if(tf.getText()!=""){N=2;number=tf.getText();tf.setText(putor(M, N, number));isFirst=false;}btn2.setEnabled(false);btn3.setEnabled(false);btn4.setEnabled(false);btn8.setEnabled(false);btn9.setEnabled(false);btn10.setEnabled(false);btn15.setEnabled(false);btn16.setEnabled(false);M=2;isFirst=false;}else{N=2;number=tf.getText();tf.setText(putor(M, N, number));isFirst=true;}}if(e.getSource()==rButton2){btn2.setEnabled(true);btn3.setEnabled(true);btn4.setEnabled(true);btn8.setEnabled(true);btn9.setEnabled(true);btn10.setEnabled(true);btn15.setEnabled(true);btn16.setEnabled(true);if(isFirst){if(tf.getText()!=""){N=10;number=tf.getText();tf.setText(putor(M, N, number));isFirst=false;}M=10;isFirst=false;}else{N=10;number=tf.getText();tf.setText(putor(M, N, number));isFirst=true;}}if(e.getSource()==rButton3){btn8.setEnabled(true);btn9.setEnabled(true);btn10.setEnabled(true);btn15.setEnabled(true);btn16.setEnabled(true);if(isFirst){if(tf.getText()!=""){N=8;number=tf.getText();tf.setText(putor(M, N, number));isFirst=false;}btn3.setEnabled(false);btn4.setEnabled(false);M=8;isFirst=false;}else{N=8;number=tf.getText();tf.setText(putor(M, N, number));isFirst=true;}}}public double Calculator(String f){//科学计算@SuppressW arnings("unused")int i=0,j=0,k;//定义三个整形变量char c;//定义c为字符型变量StringBuffer s= new StringBuffer();//创建一个字符缓冲池实例ss.append(f);//在对象s中显示字符串fs.append('=');String formula=s.toString();char[]anArray;//声明一个数组anArray=new char[50];Stack<Character>mystack=new Stack<Character>();//定义一个mystack 栈while(formula.charAt(i)!='='){c=formula.charAt(i);switch(c){case '(' :mystack.push(new Character(c));//将获得的数据压入栈i++;break;case ')'://若是右括号则进行下面的操作while(mystack.peek().charValue()!='('){anArray[j++]=mystack.pop().charValue();}mystack.pop();//将数据从mystack栈中弹出i++;break;case '%':while(!mystack.empty()&&mystack.peek().charValue()!='('){anArray[j++]=mystack.pop().charValue();}mystack.push(new Character(c));i++;break;case '+':case '-':while(!mystack.empty()&&mystack.peek().charValue()!='('){anArray[j++]=mystack.pop().charValue();}mystack.push(new Character(c));i++;break;case '*':case '/':while(!mystack.empty()&&(mystack.peek().charValue()=='*'||mystack.peek( ).charValue()=='/')){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>();//定义栈mystack1while(i<j){c=anArray[i];//将数组中的值赋值给cswitch(c){case '%':a=mystack1.pop().doubleValue();//从栈中弹出//b=mystack1.pop().doubleValue();//从栈中弹出d=a*0.01;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();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{tf.setText("除数不能为零!");}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());//返回栈顶元素}public void windowClosing(WindowEvent e){//关闭窗口功能System.exit(0);//系统退出}}2、jinzhiChange类package .qtech;/*** 功能:将一个数从M进制转换成N进制* MValue:M进制数的字符串表示方法* Shang:保存中间运算结果* M:M进制* N:N进制*/public class jinzhiChange{public static String Shang = null;public static String computor(int M,int N,String MValue) { String nValue = "";Shang = MValue;while(Shang.length() > 0) {nValue = qiuyu(Shang,M,N) + nValue;}System.out.println(nValue);return nValue;}/*** 功能:对给定的M进制字符串对n求余。
