计算器软件概要设计说明书
计算器说明书

Java程序设计说明书设计题目:Java计算器学生姓名:指导教师:专业名称:计算机科学与技术所在院系:目录摘要2第1章计算器概述1.1设计目的 4 1.2功能模块设计 4 1.3系统功能图 4设计实现的详细步骤2.2.1 计算器界面72.2.2 界面设计代码7 2.3程序运行效果9 第3章设计中遇到的重点及难点 (13)3.1 设计中的重点 (13)3.2 设计中的难点 (13)3.2.1 设计难点1:布局 (13)3.2.2 设计难点2:代码 (13)3.2.3设计难点3:运行结果 (14)3.3 本章总结 (14)第4章本次设计中存在不足与改良方案 (15)4.1设计不足 (15)4.2改良方案 (15)4.3本章总结 (18)结论 (19)参考文献 (20)JAVA课程设计说明书摘要一、计算器概述1、1设计计算器的目的:该计算器是由Java语言编写的,可以进行十进制下的四则运算(加、减、乘、除)、开平方、百分号、求倒数,还可以实现其他按钮的功能。
添加了一个编辑、查看、帮助的主菜单并能实现其功能。
Backspace 表示逐个删除,CE 表示全部清除,C 表示一次运算完成后,单击“C”按钮即可清除当前的运算结果,再次输入时可开始新的运算,MC 表示清除储存数据,MR 表示读取储存的数据,MS 表示将所显示的数存入存储器中,存储器中原有的数据被冲走,M+ 表示计算结果并加上已经储存的数。
界面类似Windows 自带的计算器。
该计算器围绕Java编程语言在编程方面的具体应用,论述了使用面向对象方法,对计算器程序进行需求分析、概要设计、详细设计,最后使用Java编程实现的全过程。
在编程使用Java语言,是目前比较流行的编程语言。
在当今这个网络的时代,java语言在网络编程方面的优势使得网络编程有了更好的选择。
Java语言最大的特点是具有跨平台性,使其不受平台不同的影响,得到了广泛的应用。
关键词:Java语言、标准、计算器第1章标准计算器概述1.1设计目的1)复习、巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握;2)课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。
四则运算计算器设计说明书

四则运算计算器设计说明书一、设计目标本次计算器的程序设计,通过使用JAVA中的AWT包和Swing包的类库设计图形界面的计算器。
此计算器能够完成加减乘除的四则混合运算。
利用面向对象程序设计的思想,将各个组件的事件响应分别用不同的方式表达出来,并且使用了图形界面中的事件委托机制来处理事件响应。
二、设计流程1.分析该计算器需要完成的功能。
用户能够完成添加负号的四则混合运算,开方,取倒数,并且计算器能够自动识别运算符的优先级,根据用户输入的运算表达式,自动计算出相应的结果。
同时还完成了计算器中C按钮清屏功能和Backspace退格键。
2. 考虑异常处理。
(1)当输入的表达式中出现除零的操作,显示框将显示“Infinity(无穷大)”。
(2)当输入的表达式错误时,将弹出提示框显示“表达式错误请重新输入”(3)当计算器的显示文本框里为没有输入内容时直接点击等号按钮3. 编码实现计算器的功能。
(1)新建相关的文件。
(2)引入JAVA中相关的包。
(3)定义相关的变量,创建相关组件,并对组件的属性进行设置。
(4)对所创建的组件进行布局,完成界面的实现。
(5)为各个组件添加事件监听器。
(6)重写事件接口ActionListener的方法public voidactionPerformed(ActionEvent e)。
(7)为各个组件编写事件代码,完成每个按钮的不同功能。
三、程序截图四、程序代码import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.GridLayout;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTextField;public class Calc extends JFrame implements ActionListener { JPanel topPanel = null;JPanel midPanel = null;JPanel bottomPanel = null;JTextField tResult = null;JButton backspaceButton = null;JButton ceButton = null;JButton cButton = null;JButton button1 = null;JButton button2 = null;JButton button3 = null;JButton button4 = null;JButton button5 = null;JButton button6 = null;JButton button7 = null;JButton button8 = null;JButton button9 = null;JButton button0 = null;JButton buttonDiv = null;JButton buttonPlus = null;JButton buttonMinus = null;JButton buttonMul = null;JButton buttonSqrt = null;JButton buttonMod = null;JButton buttonPM = null;JButton buttonX = null;JButton buttonPoint = null;JButton buttonEquals = null;StringBuffer str = new StringBuffer();boolean isDouble = false;// 是否为实数int opFlag = -1;static double t1 = 0, t2 = 0, t3 = 0, result = 0;static int opflag1 = -1, opflag2 = -1, flag = 0, resflag = 1;int preOp, currentOp = 0;// 标准位double op1 = 0, op2 = 0;// 操作数double n3;// 取得屏幕对象Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); // 取得屏幕的宽度int width = screenSize.width;// 取得屏幕的高度int heigth = screenSize.height;public Calc() {tResult = new JTextField("0.");tResult.setColumns(26);tResult.setHorizontalAlignment(JTextField.RIGHT);topPanel = new JPanel();topPanel.add(tResult);backspaceButton = new JButton("Backspace");backspaceButton.addActionListener(this);ceButton = new JButton("CE");ceButton.addActionListener(this);cButton = new JButton("C");cButton.addActionListener(this);midPanel = new JPanel();midPanel.add(backspaceButton);midPanel.add(ceButton);midPanel.add(cButton);bottomPanel = new JPanel(new GridLayout(4, 5, 3, 3));button7 = new JButton("7");button7.addActionListener(this);bottomPanel.add(button7);button8 = new JButton("8");button8.addActionListener(this);bottomPanel.add(button8);button9 = new JButton("9"); button9.addActionListener(this); bottomPanel.add(button9);buttonDiv = new JButton("/"); buttonDiv.addActionListener(this); bottomPanel.add(buttonDiv);buttonSqrt = new JButton("sqrt"); buttonSqrt.addActionListener(this); bottomPanel.add(buttonSqrt);button4 = new JButton("4"); button4.addActionListener(this); bottomPanel.add(button4);button5 = new JButton("5"); button5.addActionListener(this); bottomPanel.add(button5);button6 = new JButton("6"); button6.addActionListener(this); bottomPanel.add(button6);buttonMul = new JButton("*"); buttonMul.addActionListener(this); bottomPanel.add(buttonMul);buttonMod = new JButton("%"); buttonMod.addActionListener(this); bottomPanel.add(buttonMod);button1 = new JButton("1"); button1.addActionListener(this); bottomPanel.add(button1);button2 = new JButton("2"); button2.addActionListener(this); bottomPanel.add(button2);button3 = new JButton("3"); button3.addActionListener(this); bottomPanel.add(button3);buttonMinus = new JButton("-");buttonMinus.addActionListener(this);bottomPanel.add(buttonMinus);buttonX = new JButton("1/x");buttonX.addActionListener(this);bottomPanel.add(buttonX);button0 = new JButton("0");button0.addActionListener(this);bottomPanel.add(button0);buttonPM = new JButton("+/-");buttonPM.addActionListener(this);bottomPanel.add(buttonPM);buttonPoint = new JButton(".");buttonPoint.addActionListener(this);bottomPanel.add(buttonPoint);buttonPlus = new JButton("+");buttonPlus.addActionListener(this);bottomPanel.add(buttonPlus);buttonEquals = new JButton("=");buttonEquals.addActionListener(this);bottomPanel.add(buttonEquals);this.setLayout(new BorderLayout());this.add(topPanel, "North");this.add(midPanel, "Center");this.add(bottomPanel, "South");this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(310, 225);this.setResizable(false);// 设置窗体出现在屏幕的中央this.setLocation((width - this.getWidth()) / 2,(heigth - this.getHeight()) / 2);this.setVisible(true);}/*** @param args*/public static void main(String[] args) {new Calc();}@Overridepublic void actionPerformed(ActionEvent e) {String s = e.getActionCommand().trim();if (s.equals("CE")) {// 如果是CE则清除文本框tResult.setText("0.");} else if (s.equals("Backspace")) {if (!tResult.getText().trim().equals("0.")) {// 如果文本框中有内容if (str.length() != 1 && str.length() != 0) {tResult.setText(str.delete(str.length() - 1, str.length()).toString());} else {tResult.setText("0.");str.setLength(0);}}op2 = Double.parseDouble(tResult.getText().trim());} else if (s.equals("C")) {// 如果是C删除当前计算tResult.setText("0.");op1 = op2 = 0;str.replace(0, str.length(), " ");preOp = currentOp = 0;} else if (s.equals("1/x")) {// 如果按键为1/x则将文本框中的数据为它的倒数String temp = tResult.getText().trim();double dtemp = Double.parseDouble(temp);tResult.setText("" + 1 / dtemp);} else if (s.equals("sqrt")) {// 如果按键为sqrt则将文本框中的内容求平方根String temp = tResult.getText().trim();double dtemp = Double.parseDouble(temp);tResult.setText("" + Math.sqrt(dtemp));} else if (s.equals("+")) {str.setLength(0);if (currentOp == 0) {preOp = currentOp = 1;op2 = 0;tResult.setText("" + op1);} else {currentOp = preOp;preOp = 1;switch (currentOp) {case 1:op1 += op2;tResult.setText("" + op1);break;case 2:op1 -= op2;tResult.setText("" + op1);break;case 3:op1 *= op2;tResult.setText("" + op1);break;case 4:op1 /= op2;tResult.setText("" + op1);break;}}} else if (s.equals("-")) {str.setLength(0);if (currentOp == 0) {preOp = currentOp = 2;// op1=op2;op2=0;tResult.setText("" + op1);} else {currentOp = preOp;preOp = 2;switch (currentOp) {case 1:op1 = op1 + op2;tResult.setText("" + op1);break;case 2:op1 = op1 - op2;tResult.setText("" + op1);break;case 3:op1 = op1 * op2;tResult.setText("" + op1);break;case 4:op1 = op1 / op2;tResult.setText("" + op1);break;}}} else if (s.equals("*"))// *{str.setLength(0);if (currentOp == 0) {preOp = currentOp = 3;// op1=op2;op2=1;tResult.setText("" + op1);// op1=op2;} else {currentOp = preOp;preOp = 3;switch (currentOp) {case 1:op1 = op1 + op2;tResult.setText("" + op1);break;case 2:op1 = op1 - op2;tResult.setText("" + op1);break;case 3:op1 = op1 * op2;tResult.setText("" + op1);break;case 4:op1 = op1 / op2;tResult.setText("" + op1);break;}}} else if (s.equals("/"))// /{str.setLength(0);if (currentOp == 0) {preOp = currentOp = 4;// op2=1;tResult.setText("" + op1);// op1=op2;} else {currentOp = preOp;preOp = 4;switch (currentOp) {case 1:op1 = op1 + op2;tResult.setText("" + op1);break;case 2:op1 = op1 - op2;tResult.setText("" + op1);break;case 3:op1 = op1 * op2;tResult.setText("" + op1);break;case 4:op1 = op1 / op2;tResult.setText("" + op1);break;}}} else if (s.equals("="))// ={if (currentOp == 0) {str.setLength(0);tResult.setText("" + op2);} else {str.setLength(0);currentOp = preOp;switch (currentOp) {case 1:op1 = op1 + op2;tResult.setText("" + op1);break;case 2:op1 = op1 - op2;tResult.setText("" + op1);break;case 3:op1 = op1 * op2;tResult.setText("" + op1);break;case 4:op1 = op1 / op2;tResult.setText("" + op1);break;}currentOp = 0;op2 = 0;}} else if (s.equals(".")) {isDouble = true;if (tResult.getText().trim().indexOf('.') != -1);else {if (tResult.getText().trim().equals("0")) {str.setLength(0);tResult.setText((str.append("0" + s)).toString());}// else// if(tResult.getText().trim().equals("")){}//如果初时显示为空则不做任何操作else {tResult.setText((str.append(s)).toString());}}} else if (s.equals("0"))// 如果选择的是"0"这个数字键{if (tResult.getText().trim().equals("0.")) {} else {tResult.setText(str.append(s).toString());op2 = Double.parseDouble(tResult.getText().trim());}} else if (s.equals("%"))// 如果选择的是"0"这个数字键{} else {tResult.setText(str.append(s).toString());op2 = Double.parseDouble(tResult.getText().trim());if (currentOp == 0)op1 = op2;}}}。
计算器说明书

计算器说明书1 设计课题任务、功能要求说明及总体⽅案介绍1.1 设计课题任务课题:简易计算器任务:设计⼀个具有特定功能的计算器。
该计算器上电或按键复位后能⾃动显⽰系统提⽰界⾯,进⼊准备⼯作状态。
能实现基本的加、减、乘、除四则运算。
1.2 功能要求说明在本次⼯程实践中,主要完成如下⽅⾯的设计任务:(1)计算器上电或按键复位后能显⽰初始化界⾯(2)2秒后进⼊计算器界⾯(3)按键能进⾏加、减、乘、除运算并显⽰结果(4)按清零键后能进⾏下⼀次计算1.3 设计课题总体⽅案介绍及⼯作原理说明计算器的总体功能原理是以AT89S52单⽚机为主要控制核⼼,通过外接4*4⾏列式键盘作为控制信号输⼊源,⼀块12864液晶作为显⽰器件,通过按键控制,单⽚机实时地去执⾏,在12864液晶上显⽰界⾯。
系统控制原理图如图1所⽰。
液晶显⽰电路AT89S52电源电路复位电路下载电路键盘电路图1系统控制原理图2 设计课题硬件系统的设计2.1 设计课题硬件系统各模块功能简要介绍2.1.1 AT89S52控制模块考虑到设计功能需要,控制器的功能⽤于外部键盘信号的接收和识别、液晶模块的显⽰控制、复位电路等,我们选择了AT89S52系列单⽚机,具有反应速度极快,⼯作效率特⾼的特点。
AT89S52是⼀种低功耗、⾼性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。
使⽤Atmel 公司⾼密度⾮易失性存储器技术制造,与⼯业80C51 产品指令和引脚完全兼容。
⽚上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯⽚上,拥有灵巧的8 位CPU 和在系统可编程Flash,使AT89S52为众多嵌⼊式控制应⽤系统提供⾼灵活、超有效的解决⽅案。
AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O ⼝线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,⼀个6向量2级中断结构,全双⼯串⾏⼝,⽚内晶振及时钟电路。
计算器软件概要设计说明书

软件概要设计说明书拟制: 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 接口函数10 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)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的函数库,实现数学计算。
软件概要设计说明-模板

项目软件概要设计说明书(该文档仅供内部参考)负责单位:研发部门名称协作单位:协作单位名称(如有)作者:研发人员签名批准:研发部门主任签名修改及签收情况记录:**********股份有限公司摘要描述文档的主要内容。
修改历史本模板在格式上有以下的一系列约定:a)用“< >”括起来的内容,是编写指导,在最终的文档中应予以删除。
其它内容应予以保留。
b)如果某章节内容无需填写,而且本模板没有特殊说明的话,则在该章节下写“无”,而不要将该节删除或不填写任何内容。
目录第一篇概述..................................................错误!未定义书签。
1范围...................................................... 错误!未定义书签。
2设计依据.................................................. 错误!未定义书签。
3术语、定义和缩略语 ........................................ 错误!未定义书签。
术语、定义............................................ 错误!未定义书签。
缩略语................................................ 错误!未定义书签。
第二篇系统总体设计..........................................错误!未定义书签。
4系统体系结构.............................................. 错误!未定义书签。
5体系结构概述.............................................. 错误!未定义书签。
6标准化设计................................................ 错误!未定义书签。
计算器软件说明书样本

卡西欧计算器程序传播软件FA-124用法本日记详细简介将G2M文献导入到计算器操作办法。
第一步:准备工作这里说准备工作,是指:1.将相应软件安装到电脑上;2.准备好连接电缆。
先讲FA-124软件安装。
9750和9860计算器均附带了光盘:光盘文献目录如下,其中FA-124软件就在文献夹“FA-124”中:安装过程不细表,安装完毕后,桌面会生成一种该软件快捷方式图标:双击该图标,进入FA-124软件,程序界面如下:界面重要有两个窗口,左边是计算器窗口,右边是电脑本地窗口。
至此,FA-124软件安装完毕。
再来说计算器与电脑连接电缆,这根电缆9860计算器有配备,而9750计算器则没有。
没有也没关于系,由于电缆很普通,就是咱们惯用USB电缆,插入电脑那一端是大口,插入计算器那一端是小口。
第二步:将G2M文献导入FA-124软件环节如下:1.将收到RDWORK.G2M文献复制到本地电脑适当位置(例如桌面上)2.在右侧窗口,选中“FA-124”,按右键,点击“Add New Image”,新建一种新镜像(Image),这里,一种镜像相称于一台计算器内存(含程序、矩阵、串列、变量等各种定义)3.弹出对话框规定输入新镜像名称,这里键入“RDWORK”确认后,右侧窗口如下4.选取“RDWORK”镜像,按鼠标右键,点击“Import”,表达需要导入G1M或G2M文献5.在弹出窗口,选取需要导入G1M或G2M文献,这里选取桌面RDWORK.G2M文献6.弹出窗口,规定顾客确认与否替代原有文献?点击“Yes to all”,所有替代7.导入完毕,右侧窗口RDWORK镜像显示其所有内容展开Program(程序),可以看到RDWORK下所有程序双击某个程序名,可以阅读和编辑程序代码,下图是RDSET程序代码至此,G2M文献导入到FA-124软件就完毕了。
第三步:将FA-124软件中RDWORK程序传播到计算器1.电脑端打开FA-124软件,计算器端开机,运用USB电缆将计算器连接到电脑。
计算器说明文档

计算器说明文档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求余。
单片机数字计算器软硬件设计说明书概要

设计题目:单片机数字计算器硬软件设计摘要本设计是基于51系列的单片机进行的数字计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除3位无符号数字的简单四则运算,并在LED上相应的显示结果。
设计过程在硬件与软件方面进行同步设计。
硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51单片机,输入采用4×4矩阵键盘。
显示采用5位7段共阴极LED静态显示。
软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。
编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,针对计算器四则运算算法特别是乘法和除法运算的实现,最终选用全球编译效率最高的KEIL公司的μVision3软件,采用汇编语言进行编程,并用proteus仿真。
引言简易计算器的原理与设计是单片机课程设计课题中的一个。
在完成理论学习和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。
单片机课程设计既要让学生巩固课本学到的理论,还要让学生学习单片机硬件电路设计和用户程序设计,使所学的知识更深一层的理解,数字计算器原理与硬软件的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试,最后仿真用户程序,来加深对单片机的认识,充分发挥学生的个人创新能力,并提高学生对单片机的兴趣,同时学习查阅资料、参考资料的方法。
关键词:单片机计算器 AT89c51芯片 74LS164目录摘要 (01)引言 (01)第一章设计任务和要求 (03)1.1 设计要求1.2 设计方案的确定第二章单片机简要原理 (03)2.1 AT89c51介绍2.2 芯片74LS164介绍第三章硬件设计 (08)3.1 键盘电路的设计3.2 显示电路的设计3.3 其他电路设计第四章软件设计 (11)4.1 主程序的设计4.2 显示、读键模块的设计4.3 其他内容说明4.4 源程序代码第五章调试与仿真 (23)5.1 Keil C51单片机软件开发系统5.2 proteus的操作第六章总结 (24)心得体会 (25)参考文献 (26)第一章设计任务和要求1.1 设计要求本次课程设计,我选择的课题是单片机数字计算器硬软件设计,设计任务为:1.扩展4*4键盘,其中10个数字,5个功能键,1个清零2.使用五位数码管接口电路3.完成十进制的四则运算(加、减、乘、除);4.实现低于三位小于255数字的连续运算;5.使用keil C软件编写程序;6.最后用ptoteus仿真;7.具有较强的抗干扰能力;8.体积小、功耗低,便于嵌入其他系统。
简易计算器设计说明书概要

摘要单片机的出现是计算机制造技术高速发展的产物,它是嵌入式控制系统的核心。
如今,它已广泛的应用到我们生活的各个领域,电子、科技、通信、汽车、工业等。
计算器的出现给我们的生活带来了巨大的便利,计算器在我们的生活中随处可见,也是我们日常生活中不可缺少的工具。
本设计是基于51系列单片机来进行的数字计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除简单的基本四则运算,并在LCD上显示相应的结果。
设计电路采用AT89C51单片机为主要控制电路,利用按键作为计算器的键盘的输入。
显示采用字符LCD 静态显示。
软件方面使用C语言编程,并用PROTUES仿真。
单片微型计算机简称单片机。
它是在一块芯片上集成中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、定时/计数器及I/O接口电路等部件,构成一个完整的微型计算机。
它的特点是:高性能,高速度,体积小,价格低廉,稳定可靠,应用广泛。
单片机比专用处理器最适合应用于嵌入式系统,因此它得到了最多的应用。
本文介绍了单片机的产生发展、功能特点、应用开发等内容。
【关键词】简单计算器单片机 LCD 应用发展背景近年来,单片机以其体积小、价格廉、面向控制等独特优点,在各种工业控制、仪器仪表、设备、产品的自动化、智能化方面获得了广泛的应用。
与此同时,单片机应用系统的可靠性成为人们越来越关注的重要课题。
影响可靠性的因素是多方面的,如构成系统的元器件本身的可靠性、系统本身各部分之间的相互耦合因素等。
其中系统的抗干扰性能是系统可靠性的重要指标。
本设计采用80c51 芯片,实现了利用单片机进行了一个简单计算器设计。
允许对输入数据进行加减乘除运算及LCD 显示.如果设计对象是更为复杂的计算器系统,其实际原理与方法与本设计基本相同。
LCD液晶显示器是Liquid Crystal Display 的简称,LCD 的构造是在两片平行的玻璃基板当中放置液晶盒,下基板玻璃上设置TFT(薄膜晶体管),上基板玻璃上设置彩色滤光片,通过TFT上的信号与电压改变来控制液晶分子的转动方向,从而达到控制每个像素点偏振光出射与否而达到显示目的。
计算器概要设计说明书

江西工业职业技术学院毕业综合实践课题名称:安卓手机计算器作者:廖杰学号:20112715分院:电子与信息工程分院专业:计算机网络技术指导老师:占华为专业技术职务讲师2013年 10 月 14日目录1 引言...................................... 错误!未定义书签。
1.1 编写目的 ............................. 错误!未定义书签。
1.2 项目背景 ............................. 错误!未定义书签。
1.3 参考资料 ............................. 错误!未定义书签。
2 需求 (2)2.1 功能需求 (2)2.2 接口需求 (3)2.3 性能需求 (4)2.4 资源需求 (4)3 质量保证措施 (4)1引言1.1编写目的方便有计算需求的用户使用。
1.2项目背景这个项目是计算器系统。
本项目方便所有有计算要求的用户使用,能够处理加,减,乘,除,开方,并且能求百分数,求倒数,求相反数。
还具有一定的容错功能,例如:除数不能为0,被开方数不能为负数,不可以连续输入小数点以及多个运算符输入只保留第一个运算符。
交互功能比较好,界面友好,简洁易懂。
1.3参考资料Java语言与面向对象程序设计王行言清华大学出版社2需求包括功能需求以及性能需求。
2.1功能需求功能需求:计算器系统,主要完成的功能就是通过用户的需要,实现加减乘除以及一些简单的运算功能,系统要求具有良好的界面,必要的交互信息,简约美观的效果。
可以通过按钮也可以直接键盘输入,达到人机交互。
按钮信息主要包括0-9的数字,‘ + ’, ’ - ‘, ’ * ’ , ’ / ‘,‘ % ’ ,’ +/-’, ’ 1/x ’, ‘sqrt’。
键盘也可以输入数字。
2.1.1 功能性需求分类2.2接口需求(1)用户界面:设计一个友好的,简洁的图形界面通过使用Button,Label,prompt等组件来实现图形用户界面,同时通过设置布局和背景字体来丰富界面,使得界面美观,简洁。
计算器——概要设计说明书

计算器概要设计说明书1、引言1.1编写目的在程序设计中,通过设计、编制、调试一个模拟计算器的程序,加深对语法及语义分析原理的理解,并实现对命令语句的灵活应用.在程序设计中,可以用两种方法解决问题:一是传统的结构化程序设计方法,二是更先进的面向对象程序设计方法。
而在面向对象程序设计中关键是如何将问题域中的实体(即日常所见的概念)抽取出来,作为JAVA程序中的类,而属性与行为作为类的两类要素通常是必不可少的,甚至还应考虑类必须满足的约束。
1.2项目背景计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具。
要实现计算功能,可以用JAVA 的知识编写程序来解决此问题。
该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。
该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用。
在课程设计中,系统开发平台为Windows 7,程序设计设计语言采用JAVA,在程序设计中,采用了结构化与面向对象两种解决问题的方法.1。
3定义事务流:数据进入模块后可能有多种路径进行处理。
系统:若未特别指出,统指本系统.1。
4参考资料[1]钱银中,眭碧霞。
Java程序设计案例教程[2]道客巴巴:http://www。
/p—642874533756。
html 2、运行环境操作系统:Windows 2000﹑Windows XP Professional、Windows 2000 Server或者window 7.0操作系统.3、总体设计3。
1 系统设计流程系统设计主要有五部分组成:需求分析、概要设计、详细设计、编写代码和系统测试.如下图所示:这次课程设计的题目是实现简单计算器的功能。
实现功能:加,减,乘,除,可加其它运算功能;还要实现数据的输入,输出,计算,显示及清除等功能。
⑵概要设计计算器包含的功能有:加、减、乘、除、清除。
计算器的屏显为JFrame控件,左侧的数字、操作符按键、右侧的功能为BUTTON控件. 输入的原始数据、运算中间数据和结果在顶部的TEXTBOX 控件显示.每种计算功能均为独立设计算法。
课程设计说明书-计算器

C#程序设计及课程设计课程设计说明书设计题目:计算器目录1 引言 (2)1.1课程设计的目的 (2)1.2本选题的内容要求 (2)1.3 软件开发运行环境 (2)2 总体设计 (3)2.1设计思路 (3)2.2软件总体结构图 (3)2.3主要功能模块的设计 (3)3 详细设计与实现 (4)3.1 主界面模块 (4)3.1.1主界面功能设计 (4)3.1.2主界面设计 (4)3.1.3主界面主要代码 (4)3.2 计算过程演示 (10)3.2.1乘法运算过程演示 (10)3.2.2求根以及连续操作的演示 (11)4 小结和展望 (13)参考文献 (13)1引言1.1课程设计的目的本课程设计将实现一个简单计算器。
其类似于Windows附件中自带的计算器。
但这个计算器实现了更复杂的功能,具有简洁大方的图文外观。
即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。
在课程设计中,系统开发平台为Windows 2000XP.程序设计设计语言采用Visual C#。
1.2本选题的内容要求1)可以显示计算数字2)可以进行加减乘除四则运算3)可以实现进制转换,求根4)可以进行清零运算5)可以进行连续计算1.3 软件开发运行环境本软件开发平台:Visual Studio本软件运行环境:Windows 7或以上版本2总体设计2.1设计思路先新建窗体应用程序创建数字与运算符的按钮,再完善相关的代码部分。
点击按钮中的数字键和运算符键就能进行简单的加、减、乘、除四则运算;还能通过用户自己在文本框中输入数字,进行简单运算。
计算流程:首先点击数字按钮时,将按钮数值添加到文本框当中,并将该数值保存到一个字符串中,再次点击数字按钮时,将之前保存的字符串与新的数值拼接起来,再添加到文本框当中,直到点击运算符按钮时,将文本框当中的字符串保存在一个字符串变量中,然后重置文本框内容,随后输入第二个计算数据时,用同样的办法保存数据,最后通过控制运算符先将字符串数据转化成单精度类型,然后计算出结果并显示到文本框当中。
计算器设计说明书

计算器设计说明书1. 界面设计 (2)1.1. MenuStrip (2)1.2. TextBox (2)1.3. Button (2)2. 类的设计 (4)3. 代码编制 (5)3.1. 数字的输入 (5)3.2. 小数点的输入 (6)3.3. 加减乘除的事件 (7)3.4. 开根号倒数 (8)3.5. % (9)3.6. 等号处理 (9)3.7. MC,MR,MS,M+ (10)3.8. C,CE,BackSpace (11)3.9. 数字分组 (12)3.10. 复制粘贴 (13)4. 设计人员 (14)1.界面设计1.1. MenuStrip在visualstudio2010可视化界面中,拖入MenuStrip控件,填入名字等.*(例如在Text填入查看(&V) 加上&可以在字母上出现下划线)然后加入两个Panel 一个叫txtPanel 另一个叫btnPanel ,后者用来放按钮1.2. TextBox*一个属性TextAlign 设置为Right1.3. Button自己拖入相应的按钮,修改名字,显示的Text然后用代码实现数字按钮:private Button[,] _btnnum;//定义一个按钮数组public void Initialize(){if (this._btnnum == null){this._btnnum = new Button[3, 3];//这里只生成了一维数组的引用地址}for (int i = 0; i < 3; i++){for (int j = 0; j < 3; j++){this._btnnum[i, j] = new Button();//所以在这里要实例具体对象this._btnnum[i, j].FlatStyle = FlatStyle.Popup;this._btnnum[i, j].Font = new Font("微软雅黑", 9F, FontStyle.Regular,GraphicsUnit.Point, ((byte)(134)));this._btnnum[i, j].Name = "btn" + ((2 - j) * 3 + (i + 1)).ToString();this._btnnum[i, j].Text = ((2 - j) * 3 + (i + 1)).ToString();this._btnnum[i, j].Size = new System.Drawing.Size(40, 40);this._btnnum[i, j].UseVisualStyleBackColor = false;this._btnnum[i, j].Location = new Point(65 + i * 49, 67 + j * 48);this._btnnum[i, j].Click += new System.EventHandler(this.btn_Click);this.btnPanel.Controls.Add(this._btnnum[i, j]);}}}然后在构造函数中调用,这样子会有个错误,所以写一个this.btn_Click事件private void btn_Click(object sender, EventArgs e){}这样子其余的按钮也出现了呵呵~~~2.类的设计我自己定义了一个类,里面有静态的变量,考虑用来保存计算器做计算的时候保存的操作符和操作码。
【精品】科学计算器软件需求说明书 (2)

科学计算器系统软件需求说明书目录1引言 ............................................... 错误!未指定书签。
1.1编写目的......................................... 错误!未指定书签。
1。
2背景............................................ 错误!未指定书签。
1。
3定义............................................ 错误!未指定书签。
1。
3。
1.................................................... 关键字错误!未指定书签。
1.3.2缩略语清单.................................. 错误!未指定书签。
1。
4参考资料........................................ 错误!未指定书签。
2任务概述 ........................................... 错误!未指定书签。
2。
1目标............................................ 错误!未指定书签。
2。
2用户的特点...................................... 错误!未指定书签。
2。
3假定和约束...................................... 错误!未指定书签。
2。
3.1开发期限: ................................... 错误!未指定书签。
2.3.2技术约束: ................................... 错误!未指定书签。
3需求规定 ........................................... 错误!未指定书签。
计算器概要设计 - 概要设计说明书

1引言 (2)1.1编写目的 (2)1.2背景 (2)1.3定义 (2)1.4参考资料 (2)2总体设计 (2)2.1需求规定 (2)2.2运行环境 (2)2.3基本设计概念和处理流程 (3)2.4结构 (3)2.5功能器求与程序的关系 (4)2.6人工处理过程 (4)2.7尚未问决的问题 (4)3接口设计 (4)3.1用户接口 (4)3.2外部接口 (5)3.3内部接口 (5)4运行设计 (5)4.1运行模块组合 (5)4.2运行控制 (5)4.3运行时间 (6)5系统数据结构设计 (6)5.1逻辑结构设计要点 (6)5.2物理结构设计要点 (6)5.3数据结构与程序的关系 (6)6系统出错处理设计 (6)6.1出错信息 (6)6.2补救措施 (7)6.3系统维护设计 (7)概要设计说明书1引言1.1编写目的实现多功能计算器的相关功能1.2背景说明:a.软件系统的名称:科学计算器。
b.任务提出者: 教师。
c.开发者:孔彦。
1.3定义暂无。
1.4参考资料MFC深入浅出(第二版)。
2总体设计2.1需求规定1.科学计算能对表达式求值。
如输入表达式3 + 5 * 3则输出结果18;如输入表达式3 * (5 +3)则输出结果24;在表达式计算功能中尽量实现针对特殊函数的实现。
如输入cos(0) + 2可输出结果3。
用键盘输入表达式。
2.能进行普通计算,类似Windows自带的计算器。
在普通计算模块中能对sin,cos,tan三角函数进行计算。
用鼠标进行操作。
3.在特殊计算模块中:a.可对乘方进行计算并输出结果操作方式:鼠标和键盘操作。
对用户的非法输入进行提示如在科学计算表达式输入非法表达式,输出Error!2.2运行环境操作系统:Microsoft Windows 2000 Advanced Server支持环境:IIS 5.0数据库:Microsoft SQL Server 20002.3基本设计概念和处理流程科学计算:对用户输入的表达式串进行分析,不断简化,然后按相应规则计算结果。
计算器系统设计说明书

目录1引言(INTRODUCTION) (2)1.1编写目的(P URPOSE) (2)1.2项目背景(P ROJECT B ACK G ROUD) (2)1.3参考资料(R EFERENCES) (2)1.4相关文档(R ELATED D OCUMENT) (2)1.5术语定义(T ERMS G LOSSARY) (2)2总体设计(DESIGN OF COLLECTIVE) (2)2.1总体结构设计(D ESIGN OF C OLLECTIVE S TRUCTURE) (2)2.1.1处理层 (3)2.1.2业务处理层 (3)2.1.3数据存储层模块 (3)2.2运行环境设计(D ESIGN OF R UNNING E NVIRONMENT) (3)2.3子系统清单(S UBSYSTEM L IST) (4)2.4功能模块清单(F UNCTION M ODULE L IST) (4)3模块(组件)功能分配(FUNCTIONAL DISTRIBUTION OF MODULE) (4)3.1.1专用模块功能分配(Functional Distribution of Expert Module) (4)3.1.2公用模块功能分配(Functional Distribution of Public Module) (5)4数据结构设计(DESIGN OF DATA STRUCTURE) (5)5子系统设计(DESIGN OF SUBSYSTEM) (5)5.1计算子系统 (5)5.2查询子系统 ........................................................................................... 错误!未定义书签。
1引言(Introduction)1.1 编写目的(Purpose)为了更好的实施项目的设计和开发,使我们设计的计算器系统符合客户的需要,我们在需求文档的基础上进一步进行细致的设计,以便项目组的管理人员、开发人员、测试人员更加明确自己的开发与测试的任务;从而达到满足需求为目的。
计算器程序说明文档

计算器程序设计文档
1系统概述
这是一个使用TC开发环境开发的计算机程序,能够整数间的加、减、乘、除以及求运算,以及累加求和、计算n!等,本程序有良好的显示菜单,使用方便。
2模块层次图
显示菜单:显示计算器的主界面(功能菜单),提示系统的功能选项
加法:用来完成两个整数的求和运算,返回结果
减法:用来完成两个整数的减法运算,返回结果
乘法:用来完成两个整数的乘积运算,返回结果
除法:用来完成两个整数的除法运算,返回结果;当除数为0时,显示出错信息
求余:用来完成两个整数的求余数的运算,即第一个整数对第二个整数作除法,求余数,返回这个余数
累加求和:用来完成从1一直到输入正数n的累加和,返回结果 阶乘:用来完成从1一直到输入正数n的连续乘积,并返回结果 结束:退出系统
3函数声明表列
4函数N-S图
4.1函数int add(int x,int y)N-S图
4.2函数int sub(int x,int y)N-S图
4.3函数int multi(int x,int y)图
4.4函数int divide(int x,int y)N-S图
4.5函数int arith_compliment(int x,int y)N-S图
4.6函数long int factorial(int n)N-S图
4.7函数int sum_n(int n)N-S图
4.8函数void displayMenu()N-S图
5系统流程图
6使用说明
本系统用来实现简单的计算器功能。
用户运行系统后,按照系统提示完成操作,执行过程参照系统的流程图。
java 计算器设计说明书

计算器设计说明书版本:1.01.引言1.1编写目的在本计算器系统的前一阶段,也就是需求分析阶段中,已经将本系统的基本的功能需求做了详细的阐述,这些功能需求是在Windows XP系统自带的计算器的基础上提出的,并在需求规格说明书中得到详尽的叙述及阐明。
本阶段已在系统的需求分析的基础上,对计算器系统做概要设计。
主要解决了实现该系统需求的程序模块设计问题。
包括如何把该系统划分成若干个模块、决定各个模块之间的接口、模块之间传递的信息等。
在以下的概要设计报告中将对在本阶段中对系统所做的所有概要设计进行详细的说明。
在下一阶段的详细设计中,可参考此概要设计报告,在设计对计算器系统所做的模块结构设计的基础上,对系统进行详细设计。
在以后的软件测试以及软件维护阶段也可参考此说明书,以便于了解在设计过程中所完成的各模块设计结构,或在修改时找出在本阶段设计的不足或错误。
1.2背景本系统(计算器)是由软件测试理论和技术的老师提出来的,由学生负责开发和测试。
1.3参考资料以下列出在设计说明过程中所使用到的有关资料:1. 需求分析说明书郑超2008/102.总体设计2.1运行环境安装有JDK1.5及以上版本的开发工具包的电脑2.2状态图状态图中特殊输入值的处理:计算器输入状态的缺省值为0,也就是firstNum的缺省值为0在输入fisrtNum和输入secondNum的过程中,可以进行CE键的操作,CE是删除当前的字符。
在初始状态,输入浮点位“.”,显示“0.”,在初始状态次下输入符号位“+/-”,显示不变特殊输入浮点数的处理:如输入25.00,应当显示25.00,而不是25连续运算以及混合运算的处理:“firstNum”+“二元运算符”+“=”,结果是两个firstNum进行运算得到的值“firstNum”+“二元运算符”+“secondNum”+“一元运算符”+“=”的运算:比如,120+100√=130每次运算结束后,如还要在前次运算的结果之上进行运算,那么结果值自动作为firstNum连续运算,比如(100+120+360)*12,第二个二元运算符“+”输入之后,100+120的和赋予firstNum,依次类推,进行运算,在这里如果你输入的顺序是100+120*2,其结果是440,而不是340在任何一状态下,输入C功能键,回到初始状态“firstNum”+“=”,输入0.0,即回到初始状态2.3程序设计流程图01.程序设计流程图2.4事件处理流程图:图02.事件处理流程图1图03.事件处理流程图23.功能模块的划分:根据需求分析说明书中的功能需求和程序设计流程及事件处理流程,整个系统在功能上可以划为一下四个模块:1.显示模块,用来显示计算器的操作界面2.按钮事件处理模块,处理按钮事件3.异常处理模块,处理异常事件4.异常处理设计:程序在运行时主要会出现三种种异常:1、在除法运算时,输入的被除数为零;2、求模运算时,第二个运算数为零;3、求倒时,输入的数据为零;4、数据溢出异常相应的对策:1.提示用户被除数不能为零2.提示用户第二个输入数不能为零3.提示用户请输入一个非零的数!4.提示用户请输入一个非零的数!5.显示” Infinity”(无穷大),提示用户数据溢出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件概要设计说明书
拟制: 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 参考资料 1
2 任务概述2 2.1 目标 2 2.2 需求概述 2 2.
3 性能需求 2 2.
4 条件和限制 2
3 总体设计2 3.1 模块结构 2 3.2 功能需求与功能模块关系 3 3.3 设计概念及流程处理 3
4 接口设计8 4.1 数据结构定义8 4.2 接口函数9 4.3 信号、命令和事件列表11
5 出错处理设计11
6 未解决的问题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位。
3 总体设计
3.1 模块结构
可使用结构图来描述各模块之间的控制与被控制关系。
3.2 功能需求与功能模块关系
无
3.3 设计概念及流程处理
说明本系统的基本设计概念和处理流程,尽量使用图表的形式。
3.3.1 技术简介
无
3.3.2 算法描述
执行基本的加减乘除基本运算。
3.3.3 流程分析
使用流程图、顺序图或状态图对此模块和其他模块之间,或者模块中各子模块间的交互关系进行详细说明
1、数据输入处理模块
2、数据显示模块
4 、接口设计
4.1 数据结构定义
【描述】此为计算器输入操作过程中所处状态的枚举类型。
【数据项】CALC_OP1 //输入数据一和运算操作符 CALC_OP2 //输入数据二中的其它数据
CALC_RESULT
【数据项】CALC_NO_ERROR, 运算正确 CALC_DEVIDED_BY_ZERO, 除0操作
CALC_OVERFLOW, 数据溢出
CALC_IMAGINARY 结果为虚数
【描述】此为计算器计算操作所用缓冲器。
【数据项】s_op_buf[0] 运算符
s_op_buf[1] 运算数据一和计算结果
s_op_buf[2] 运算数据二
【描述】键盘按键键值映射。
【数据项】
'1', //MSG_KEYDOWN_1,
'2', //MSG_KEYDOWN_2 ,
'3', //MSG_KEYDOWN_3 ,
'4', //MSG_KEYDOWN_4 ,
'5', //MSG_KEYDOWN_5 ,
'6', //MSG_KEYDOWN_6 ,
'7', //MSG_KEYDOWN_7 ,
'8', //MSG_KEYDOWN_8 ,
'9', //MSG_KEYDOWN_9 ,
'.', //MSG_KEYDOWN_START,
'0', //MSG_KEYDOWN_0,
'#', //MSG_KEYDOWN_HASH
4.2 接口函数
列出其他模块要调用的以及此模块中各个子模块之间有交互的所有接口函数
【功能】在一个给定的字符串中查找一个给定的字符
【参数】i1_text_ptr:给定的一个字符串。
i2_char :给定的一个字符
【返回值】如果找到,返回该字符的地址,否则返回NULL.
【备注】无
【功能】运算出错信息提示处理
【参数】math_error:错误类型。
【返回值】无
【备注】无
【功能】运算结果处理、显示
【参数】t1_dResult:计算结果。
math_error:错误类型
【返回值】返回错误类型
【备注】无
【功能】对输入的数据按照四则运算法则进行运算
【参数】无。
【返回值】运算错误类型
【备注】无
【功能】计算器的按键操作,形成计算器的输入数据一、输入数据二、以及操作符。
【参数】msg_id:消息ID,包含数字键、*、#以及四个方向键和确认键。
【返回值】该键值被处理,则返回TRUE,否则返回FALSE
【备注】无
【功能】计算器界面显示函数
【参数】无。
【返回值】无
【备注】无
【功能】计算器窗口界面主处理函数,主要处理窗口开启、刷新、关闭、以及其它按键操作处理。
【参数】win_id:窗口ID。
msg_id:消息ID。
param:开启窗口附加的参数。
【返回值】无
【备注】无
4.3 信号、命令和事件列表
无。
5 出错处理设计
错误信息提示,主要包含除0操作提示,以及数据溢出的信息提示。
由于数据长度有限,所以对数据操作要进行某些限制操作
6 未解决的问题
列出所有未解决的问题,并给出解决措施。
对多组数据的输入,并进行混合运算(按乘除优先、加减次之)。