计算器——设计说明书

合集下载

四则运算计算器设计说明书

四则运算计算器设计说明书

四则运算计算器设计说明书一、设计目标本次计算器的程序设计,通过使用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、外观设计这款计算器采用了简约时尚的外观设计,尺寸适中,方便携带。

按键布局合理,操作手感舒适,能够有效减少误触。

2、显示屏配备了高清液晶显示屏,数字和符号显示清晰,易于读取。

三、按键功能介绍1、数字键(0 9)用于输入数字。

2、四则运算键(+、、×、÷)进行加、减、乘、除四则运算。

3、等号键(=)得出计算结果。

4、小数点键()输入小数。

5、清除键(AC)清除所有输入和计算结果。

6、退格键(←)删除前一个输入的数字或字符。

7、平方根键(√)计算一个数的平方根。

8、百分数键(%)将数字转换为百分数形式,或进行百分数的计算。

9、倒数键(1/x)计算一个数的倒数。

10、存储键(M+、M、MR)用于存储和调用计算结果。

四、基本运算操作1、加法运算例如:计算 2 + 3,依次按下“2”、“+”、“3”、“=”,显示屏将显示“5”。

2、减法运算比如:计算5 2,依次按下“5”、“”、“2”、“=”,显示屏将显示“3”。

3、乘法运算要计算 2 × 3,按下“2”、“×”、“3”、“=”,结果显示“6”。

4、除法运算若计算 6 ÷ 2,按“6”、“÷”、“2”、“=”,屏幕显示“3”。

五、高级运算功能1、平方根计算要计算 9 的平方根,按下“9”、“√”,显示屏显示“3”。

2、百分数计算比如计算 20 的 50%,输入“20”、“×”、“50”、“%”、“=”,结果为“10”。

3、倒数计算求 2 的倒数,按下“2”、“1/x”,显示屏显示“05”。

六、存储功能的使用1、存储数值先计算出一个结果,例如 5 + 3 = 8,然后按下“M+”,将结果 8 存储起来。

计算器说明书

计算器说明书

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级中断结构,全双工串行口,片内晶振及时钟电路。

计算器说明书

计算器说明书

计算器说明书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级中断结构,全双⼯串⾏⼝,⽚内晶振及时钟电路。

简易计算器设计说明书

简易计算器设计说明书

摘要单片机的出现是计算机制造技术高速发展的产物,它是嵌入式控制系统的核心。

如今,它已广泛的应用到我们生活的各个领域,电子、科技、通信、汽车、工业等。

计算器的出现给我们的生活带来了巨大的便利,计算器在我们的生活中随处可见,也是我们日常生活中不可缺少的工具。

本设计是基于51系列单片机来进行的数字计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除简单的基本四则运算,并在LCD上显示相应的结果。

设计电路采用AT89C51单片机为主要控制电路,利用按键作为计算器的键盘的输入。

显示采用字符LCD 静态显示。

软件方面使用C语言编程,并用PROTUES仿真。

单片微型计算机简称单片机。

它是在一块芯片上集成中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、定时/计数器及I/O接口电路等部件,构成一个完整的微型计算机。

它的特点是:高性能,高速度,体积小,价格低廉,稳定可靠,应用广泛。

单片机比专用处理器最适合应用于嵌入式系统,因此它得到了最多的应用。

本文介绍了单片机的产生发展、功能特点、应用开发等内容。

【关键词】简单计算器单片机 LCD 应用发展背景近年来,单片机以其体积小、价格廉、面向控制等独特优点,在各种工业控制、仪器仪表、设备、产品的自动化、智能化方面获得了广泛的应用。

与此同时,单片机应用系统的可靠性成为人们越来越关注的重要课题。

影响可靠性的因素是多方面的,如构成系统的元器件本身的可靠性、系统本身各部分之间的相互耦合因素等。

其中系统的抗干扰性能是系统可靠性的重要指标。

本设计采用80c51 芯片,实现了利用单片机进行了一个简单计算器设计。

允许对输入数据进行加减乘除运算及LCD 显示.如果设计对象是更为复杂的计算器系统,其实际原理与方法与本设计基本相同。

LCD液晶显示器是 Liquid Crystal Display 的简称,LCD 的构造是在两片平行的玻璃基板当中放置液晶盒,下基板玻璃上设置TFT(薄膜晶体管),上基板玻璃上设置彩色滤光片,通过TFT上的信号与电压改变来控制液晶分子的转动方向,从而达到控制每个像素点偏振光出射与否而达到显示目的。

课设简易计算器设计说明

课设简易计算器设计说明

摘要近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。

在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。

本任务是个简易的两位数的四则运算,程序都是根据教材和网络中的程序参考编写而成,在功能上还并不完善,限制也较多。

本任务重在设计构思,使得我用专业知识、专业技能分析和解决问题全面系统的锻炼。

本系统的设计说明重点介绍了如下几方面的容:1)简易计算器的基本功能,同时对计算器设计的原理也进行了简要的阐述;2)介绍了系统的总体设计、给出了系统的整体结构框图,并对其进行了功能模块划分与所采用的元器件进行了详细说明;3)对系统各功能模块的软、硬件实现进行了详细的设计说明。

关键词:MCS-51 8051单片机计算器围加减乘除目录第一章绪论21.1课题简介21.2设计目的31.3设计任务3第二章简易计算器系统简介32.1 单片机发展现状32.2 计算器的历史42.3 单片机概述5第三章系统总体设计与主要器件简介53.1 MSC-51芯片简介53.2 中断系统63.3 时钟电路73.4 MCS-51系列单片机简介7外部引脚说明:113.5 相关知识12第四章简易计算器的设计134.1 计算器硬件电路设计134.2 计算器程序设计144.3 系统硬件设计15参考文献17第一章绪论1.1课题简介单片机由于其微小的体积和极低的成本,广泛的应用于家用电器、工业控制等领域中。

在工业生产中,电流、电压、温度、压力和流量也都是常用的被控参数。

本设计是采用8051单片机,该单片机具有集成度高,运算快速快,体积小、运行可靠,价值低廉的特点,适宜于温湿度等过程控制。

鉴于这样的重要性,我们打算设计一种基于单片机的多路温度巡检系统,实现对不同场合温度时时变化的控制与监测。

1.2设计目的通过本次工程实践,运用微机原理与接口技术所学知识与查阅相关资料,完成简易计算器的设计,达到理论知识与实践更好结合、提高综合运用所学知识和设计能力的目的。

计算器说明文档

计算器说明文档

计算器说明文档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求余。

计算器详细设计说明书

计算器详细设计说明书

计算器详细设计说明书版本 1.0作者:完成日期:2009-10-31 引言1.1编写目的该软件详细设计说明书主要是为设计“计算器程序” 而编写的详细设计分析,主要给出该软件总体设计架构、包含的模块、设计的思想、每个模块的详细设计原理等信息,从而正确实现软件的编写,并且方便了以后的测试、管理和改进。

1.2背景待开发软件系统的名称是“计算器程序” 。

该软件将完成一般的计算操作:加减乘除四则运算、开方、求倒数、百分数,以及数据的存储操作。

对于更高级的科学运算,如sin、cos 等暂不实现。

由于程序较小,开发将由本人独立完成,暂时没有期望的用户群体。

2程序系统的结构程序结构从整体上可以大致分为3 个部分,如表1所示表1 程序整体模3输入数值设计说明3.1状态图这部分的状态图表示如图1 所示3.2流程图输入数值根据状态图可以得出流程图如图2 所示图2 输入数据流程图3.3说明在这种情况下,可以有三种输入数据格式:①整数:如45,123,1000 等。

② 纯小数:如 0.15,0.33, 0.0001, 0.12000 等。

③ 含有整数部分的小数:如 100.000,10.0002,13.2150 等。

在以上情况下,对于数字 0 要有正确的处理方式, 如果在输入整数的情况下, 00123 这样的整数是不能存在的, 12000这样的整数是正确存在的。

在输入小数 的情况下, 0.12000要能够显示后面的 3个 0。

程序需要能正确处理这三种数据,这也是测试的依据。

4 输入双目操作符设计说明4.1 状态图输入双目运算符的状态图 3 所示。

主要运算是加减乘除、百分号图 3 双目运算符的状4.2说明程序实现完全按照图3所示的状态变迁实现。

双目运算的根本形式是:N1 opt N2 = Result。

N1、N2 是两个操作数,opt 是双目运算符。

其中详细的情况如下。

程序初始状态S0 时,双目运算的两个操作数N1=N2=0。

课程设计说明书-计算器

课程设计说明书-计算器

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.类的设计我自己定义了一个类,里面有静态的变量,考虑用来保存计算器做计算的时候保存的操作符和操作码。

计算器概要设计 - 概要设计说明书

计算器概要设计 - 概要设计说明书

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.基本计算功能:学生用计算器可以进行加减乘除等基本运算,支持整数和小数的计算,满足学生日常的数学计算需求。

2.科学计算功能:学生用计算器还具有科学计算功能,可以进行指数、对数、三角函数等高级数学运算,帮助学生解决复杂的数学问题。

3.统计计算功能:学生用计算器还拥有统计计算功能,可以进行数据的输入、求和、平均值、标准差等统计分析,方便学生进行数据处理和统计学习。

4.方程求解功能:学生用计算器还具备方程求解功能,可以解一元二次方程、一元三次方程等各种类型的方程,帮助学生快速求解数学题目。

5.矩阵运算功能:学生用计算器还支持矩阵运算,可以进行矩阵的加减乘除、行列式计算、逆矩阵求解等操作,方便学生学习线性代数知识。

三、操作方法1.基本计算:通过按下数字键和运算符键进行基本的加减乘除运算,按下等号键得到结果。

2.科学计算:通过选择对应的功能键(如指数、对数、三角函数等),输入相应的参数,按下等号键得到结果。

3.统计计算:通过选择统计功能键,按照提示输入数据,按下等号键得到统计结果。

4.方程求解:通过选择方程求解功能键,按照提示输入方程参数,按下等号键得到方程的解。

5.矩阵运算:通过选择矩阵运算功能键,按照提示输入矩阵参数,按下等号键得到矩阵运算的结果。

四、注意事项1.正确输入:在使用学生用计算器时,要确保输入的数字和运算符正确无误,避免输入错误导致计算结果错误。

2.按键操作:要注意按键的正确操作方法,按下等号键前要确保已经输入完整的计算式或参数,避免误按导致错误结果。

3.电池更换:学生用计算器使用电池供电,当计算器出现电池低电量提示时,应及时更换电池以确保正常使用。

学生用计算器说明书

学生用计算器说明书

学生用计算器说明书一、产品概述欢迎使用本款学生用计算器,它是专门为学生设计的一款功能强大、操作简便的计算工具。

无论是日常的数学作业、考试,还是解决复杂的数学问题,它都能为您提供准确、快速的计算支持。

二、外观及按键介绍1、显示屏清晰显示计算结果和输入的算式。

能够显示多行数据,方便查看历史计算记录。

2、数字键包括 0 9 十个数字键,用于输入数字。

3、运算符号键有加(+)、减()、乘(×)、除(÷)等基本运算符号键。

还有平方(²)、开方(√)、百分号(%)等特殊运算符号键。

4、功能键清除键(AC):清除所有输入和计算结果。

清除当前输入键(CE):仅清除当前输入的数字或运算符。

回退键(←):删除前一个输入的字符。

等于键(=):得出计算结果。

5、存储键存储(M+):将当前计算结果存入存储器。

读取存储(MR):读取存储器中的数值进行计算。

清除存储(MC):清除存储器中的数据。

6、模式切换键可以切换标准计算模式、科学计算模式等。

三、基本操作1、开机与关机按下“ON”键开机,屏幕显示初始界面。

长时间不使用时,按下“OFF”键关机。

2、数字输入直接点击数字键输入相应的数字。

3、运算操作输入数字和运算符号后,按下“=”键得出结果。

4、清除操作若输入有误,可使用“CE”键清除当前输入;使用“AC”键清除所有输入和计算结果。

四、科学计算功能1、平方根与立方根计算输入要计算平方根或立方根的数字,然后按下“√”或“³√”键。

2、三角函数计算例如,计算正弦函数 sin,输入角度值后,按下“sin”键。

3、指数与对数计算输入底数和指数,按下“^”键进行指数运算;输入真数,按下“log”键进行对数运算。

五、存储器功能使用1、存储数值进行计算得到结果后,按下“M+”键将结果存入存储器。

2、读取存储数值按下“MR”键读取存储器中的数值,可用于后续计算。

3、清除存储器按下“MC”键清除存储器中的数据。

计算器说明书

计算器说明书

汇编语言实训任务书题目:计算器学生姓名学号:杜政毅,惠攀龙12730108,郭益婷13730104班级:13软件工程1班题目类型:软件工程(R)指导教师:刘树群一、设计目的用汇编语言编程设计一个简单的计算器,实现四则运算数的交互式输入,并显示运算结果。

通过设计,掌握键盘和鼠标控制、显示输出和基本算术运算指令的应用,进一步提高综合运用知识的能力。

二、设计内容(包括原始数据、技术参数、条件、设计要求等):使用按键式操作,对任意给定的正确四则运算序列,能按照意图分部计算出其计算的有效结果数值并输出。

三、设计要求题目的选择是根据汇编语言的特点主要针对系统内部的一些中断调用、系统功能调用、系统数据处理、文件数据处理、以及相关的API而设计的,是对所学课程知识较为系统的应用。

由于汇编语言编程相对其他语言编程比较复杂,因此,在设计上应把重点放在程序的功能实现上,不要太在意程序的结构和显示界面的设计。

不要局限于题目所规定的要求,可以灵活裁减,设计出功能更完善程序。

另外,也可以自己设计题目,同时,提出详细的功能描述,经指导老师审查同意后也可作为课程设计的题目。

四、提交的成果1. 设计说明书一份,内容包括:包含任务书一份1) 中文摘要100字,关键词3-5个。

2) 实训题目、内容、要求。

3)总体设计(包含几大功能模块)。

4)详细设计(各功能模块的具体实现算法——流程图)5)数据结构设计描述,各模块(函数)的功能介绍,参数说明等。

6)调试分析(包含各模块的测试用例,及测试结果。

)7)总结(实训完成了哪些功能,还有哪些地方需要改进,及通过实训有何收获,调试程序的体会等)8) 参考文献、致谢等。

五、主要参考资料[1]李敬兆等编.《汇编语言程序设计》.合肥:中国科学技术大学出版社,2008.9?[2]李敬兆等编.《汇编语言程序设计实验教程及习题解答》.合肥:中国科学技术大学出版社,2008.9?[3]王爽等编.《汇编语言》.北京:清华大学出版社,2003.5?[4]曹加恒等编.《新一代汇编语言课程设计》.北京:高等教育出版社,2003.6?[5]杨路明等编.《汇编语言程序设计》.长沙:中南大学出版社,2005.8[6]詹仕华等编.《汇编语言程序设计》.北京:中国电力出版社,2008.2[7]詹仕华等编.《汇编语言程序设计习题解答及课程设计、设计辅导》.北京:中国电力出版社,2008.2[8]宋彩莉等编.《汇编语言程序设计学习指导》.西安:西安交通大学出版社,2008.2?六、各阶段时间安排(共1周)摘要本次课程设计的题目是用汇编语言实现一个简单的计算器,要求:编写一个程序,每运行一次可执行程序,可以实现加减乘除四则运算。

计算器说明书

计算器说明书

汇编语言实训任务书题目:计算器学生学号:杜政毅12730102,惠攀龙12730108,郭益婷13730104班级:13软件工程1班题目类型:软件工程(R)指导教师:树群一、设计目的用汇编语言编程设计一个简单的计算器,实现四则运算数的交互式输入,并显示运算结果。

通过设计,掌握键盘和鼠标控制、显示输出和基本算术运算指令的应用,进一步提高综合运用知识的能力。

二、设计容(包括原始数据、技术参数、条件、设计要求等):使用按键式操作,对任意给定的正确四则运算序列,能按照意图分部计算出其计算的有效结果数值并输出。

三、设计要求题目的选择是根据汇编语言的特点主要针对系统部的一些中断调用、系统功能调用、系统数据处理、文件数据处理、以及相关的API而设计的,是对所学课程知识较为系统的应用。

由于汇编语言编程相对其他语言编程比较复杂,因此,在设计上应把重点放在程序的功能实现上,不要太在意程序的结构和显示界面的设计。

不要局限于题目所规定的要求,可以灵活裁减,设计出功能更完善程序。

另外,也可以自己设计题目,同时,提出详细的功能描述,经指导老师审查同意后也可作为课程设计的题目。

四、提交的成果1. 设计说明书一份,容包括:包含任务书一份1) 中文摘要100字,关键词3-5个。

2) 实训题目、容、要求。

3)总体设计(包含几大功能模块)。

4)详细设计(各功能模块的具体实现算法——流程图)5)数据结构设计描述,各模块(函数)的功能介绍,参数说明等。

6)调试分析(包含各模块的测试用例,及测试结果。

)7)总结(实训完成了哪些功能,还有哪些地方需要改进,及通过实训有何收获,调试程序的体会等)8) 参考文献、致等。

五、主要参考资料[1]敬兆等编.《汇编语言程序设计》.:中国科学技术大学,2008.9[2]敬兆等编.《汇编语言程序设计实验教程及习题解答》.:中国科学技术大学,2008.9[3]王爽等编.《汇编语言》.:清华大学,2003.5[4]加恒等编.《新一代汇编语言课程设计》.:高等教育,2003.6[5]路明等编.《汇编语言程序设计》.:中南大学,2005.8[6]詹仕华等编.《汇编语言程序设计》.:中国电力,2008.2[7]詹仕华等编.《汇编语言程序设计习题解答及课程设计、设计辅导》.:中国电力,2008.2[8]宋彩莉等编.《汇编语言程序设计学习指导》.:交通大学,2008.2六、各阶段时间安排(共1周)摘要本次课程设计的题目是用汇编语言实现一个简单的计算器,要求:编写一个程序,每运行一次可执行程序,可以实现加减乘除四则运算。

(3)计算器软件概要设计说明书

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

计算器
概要设计说明书
1、引言
1.1编写目的
在程序设计中,通过设计、编制、调试一个模拟计算器的程序,加深对语法及语义分析原理的理解,并实现对命令语句的灵活应用。

在程序设计中,可以用两种方法解决问题:一是传统的结构化程序设计方法,二是更先进的面向对象程序设计方法。

而在面向对象程序设计中关键是如何将问题域中的实体(即日常所见的概念)抽取出来,作为JAVA程序中的类,而属性与行为作为类的两类要素通常是必不可少的,甚至还应考虑类必须满足的约束。

1.2项目背景
计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具。

要实现计算功能,可以用JAVA 的知识编写程序来解决此问题。

该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。

该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用。

在课程设计中,系统开发平台为Windows 7,程序设计设计语言采用JAVA,在程序设计中,采用了结构化与面向对象两种解决问题的方法。

1.3定义
事务流:数据进入模块后可能有多种路径进行处理。

系统:若未特别指出,统指本系统。

1.4参考资料
[1]钱银中,眭碧霞.Java程序设计案例教程
[2]道客巴巴:
2、运行环境
操作系统:Windows 2000﹑Windows XP Professional、Windows 2000 Server或者window 7.0操作系统.
3、总体设计
3.1 系统设计流程
系统设计主要有五部分组成:需求分析、概要设计、详细设计、编写代码和系统测试。

如下图所示:
⑴需求分析
这次课程设计的题目是实现简单计算器的功能。

实现功能:加,减,乘,除,可加其它运算功能;还要实现数据的输入,输出,计算,显示及清除等功能。

⑵概要设计
计算器包含的功能有:加、减、乘、除、清除。

计算器的屏显为JFrame控件,左侧的数字、操作符按键、右侧的功能为BUTTON控件。

输入的原始数据、运算中间数据和结果在顶部的TEXTBOX 控件显示。

每种计算功能均为独立设计算法。

⑶详细设计
详细设计部分则是在概要设计的基础上对计算器的功能实现作出更为详细
的介绍。

主要对各设计块中的各个类作出说明,包括对每个类如何在以后的程序设计中的定义作出介绍,并作出相应的说明,并对各参数作出介绍。

⑷编写代码
这一部分主要根据前面的详细设计内容用具体语言实现计算器系统,主要采用Java语言实现,这一部分主要是代码实现,将前一阶段的设计思想实现,因为前面已经对该系统的整体设计思路和整体框架作出了说明,并且在详细设计部分对每个设计块中的类如何实现也已给出,所以在这一部分工作量也不是太大。

⑸系统测试
系统测试部分主要对前面已经实现的系统作出测试,看该系统是否符合系统设计要求。

并对一些特殊的数据进行测试,比如一些数的取值,看是否符合要求,在测试的基础上,对发现的错误进行改正,使系统逐步得到完善。

测试不是一朝一夕就能完成的,必须在今后的使用过程中逐渐完善,并得到用户的反馈后对系统作出修改。

计算器系统主要采用了软件工程的设计思路,从需求分析、概要设计、详细设计、编写代码直到系统测试都遵从软件工程的设计要求。

3.2功能设计
(1)计算器包含的功能有:加、减、乘、除、清除。

(2)每种计算功能均为独立设计算法。

4 、主程序的设计
系统选用Java程序设计语言来完成整个系统应用程序的编写。

4.1 按键的设计
(1)本计算器按键均使用BUTTON控件。

例:“1”运算功能按键代码如下
[1]
……
JButton jb0,jb1,jb2,jb3,jb4,jb5,jb6,jb7,jb8,jb9,
jb10,jb11,jb12,jb13,jb14,jb15,jb16,jb17,jb18,jb19;
GridLayoutDemo(){
JPanel jp=new JPanel();
jp.setLayout(new GridLayout(5,4));
……
jp.add(jb1=new JButton("1"));
……
add(jp);
//注释监听器

jb1.addActionListener(this);
……
add(jt1=new JTextField(10),BorderLayout.NORTH); } [2]
bNumber = new JButton("1");
bNumber.setForeground(Color.blue);
bNumber.addActionListener(this);
bNumber.setMargin(new Insets(5, 4,5,3));
pDown.add(bNumber);
(2)计算器操作按键以加法为例,代码如下:
[1]
......
if(e.getSource()==jb12)
{
com=true;
total1=Double.parseDouble(jt1.getText());
jt1.setText(total1+"+");
total=total1;
}
if(e.getSource()==jb11)
{
t1=Double.parseDouble(jt1.getText());
if(total==total1){
Double ad=total1+t1;
jt1.setText(Double.toString(ad));
i=0;
}
if(total==total2){
Double ad=total2-t1;
jt1.setText(Double.toString(ad));
i=0;
}
......
}
[2]
else if (s.equals("+")) {
str.setLength(0);
if (currentOp == 0) {
preOp = currentOp = 1;
op2 = 0;
tResult.setText("" + op1);
} else {
currentOp = preOp;
preOp = 1;
tResult.setText(cal.opAdd(tResult.getText()));
}
4.2界面设计
5. 设计目标
5.1 系统功能简述
本程序主要有加、减、乘、除、清除几个模块。

加、减、乘、除、清除是根据用户需求分别实现两个数的加、减、乘、除、清除并将计算结果显示在显示文本框中。

下图为程序运行时界面
5.2系统设计用例图
5.3控件说明
程序用到的控件有TEXTBOX 表(文本框)、GroupBox 表(容器)、 Button 表(按钮)。

用户
加 乘 减 除 清除
TEXTBOX文本框表
Button 按钮表
6.系统设计思想
一个系统设计的根本目的就是真正满足用户的实际需求,并采用先进、安全、成熟、可靠的技术来实现。

鉴于当今技术发展的趋势,结合本程序的实现难易程度和工作量,我们采用了Java技术开发。

本着既要保证系统的安全性、稳定性、高效性,又要为用户提供实用、方便、高效的操作环境的设计思想,来进行分析设计的。

程序尽可能的方便使用者的使用,操纵简单。

程序的安全性是指程序中所有数据的安全性,它包括数据完整性、可用性、可控性等。

数据完整性就是防止数据的丢失或者精度的损失,对此本程序对数据尽可能的使用精度高的数据包括数据类型之间的转换。

数据可用性就是保证存在数据在不同的操作之间的连续使用。

7. 关键问题及解决
实现该系统的关键是对操作数的取得,相关数学运算的实现,等号的实现。

因为程序是简单的计算器,是对数字进行相关的操作的。

而如何从按键上去的我们想要的操作数就直接制约了程序的实现。

当成功取得了我们想要的数之后,相关的操作的实现(如阶乘、开平方、取对数等)也成为了一个问题。

另外对涉及到两个操作数等号的实现(这里主要是加、减、乘、除、清除),单个操作数相关操作的实现在解决了取数的问题之后就可以迎刃而解,而涉及到两个操作数等号的实现就有成为了一个问题,以及该计算器的功能不全,没有一些简单的菜单。

只有确定了编程语言、编程技术才能具体的实现以上功能,所以采用的编程技术和编程语言对实现本系统非常关键。

对于操作数的取得声明了一个string _number,当点击一个按钮式就让_number等于按钮text的方法并用showbox.text来接收,这样得到的字符串就要取得的数并且在显示文本框中显示出来,只是类型是string,当点击数学操作符时将showbox.Text上字符串强制类型转换为double型并赋值给num1,这样就得到了我们要的double类型的数;相关数学运算的实现采用math类中的方法或者写一个函数并在相对应的运算操作调用这个函数,这样就数学运算就成功实现了;至于等号的实现首先声明了一个int类型的_sign当点击相应的数学运算符时就给_sign赋一个对应的整型的值,当点击等号时根据_sign值的不同选择相对应的计算方法。

相关文档
最新文档