项目计算器子项目一整数四则运算计算器设计

合集下载

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

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

四则运算计算器设计说明书一、设计目标本次计算器的程序设计,通过使用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;}}}。

Python编程基础与应用 简单四则运算计算器[3页]

Python编程基础与应用 简单四则运算计算器[3页]

简单四则运算计算器【案例描述】使用面向对象编程思想,编写一个简单的四则运算器。

可以通过数值的输入,进行整数四则运算,并且能够反复运算,直至输入退出信息为止。

【案例分析】1)按要求设计一个计算器类,包含四个运算方法。

2)为了使程序可以反复运算,直到选择退出为止,可以使用while循环语句实现。

3)开始运行时,需要用户输入两个需要计算的数,和输入需要运算的法则。

4)创建一个计算器对象,根据运算的法则调用对象中相应的方法,完成计算任务。

它用到的技术点有以下几方面:定义计算器类,定义类的方法和属性。

通过选择判断结构选择对象对应的方法执行运算。

【实施步骤】新建Python文件“computer.py”,输入以下代码。

class Computer:one=0two=0op=''result=0#构造函数def __init__(self,sone,stwo):self.one=soneself.two=stwo#定义加法def addone(self):result=one+tworeturn result#定义减法def minus(self):result = one - tworeturn result#定义乘法def multiply(self):result = one * tworeturn result#定义除法def division(self):result = one / tworeturn result#实例化类,调用它进行计算print("本程序是一个简易的四则运算计数器.")flag = Truewhile flag:one = int(input("请输入第一个数:"))two = int(input("请输入第二个数:"))operation = input("请输入要执行的四则运算(+-*/):")cp=Computer(one,two)if operation == '+':print(cp.addone())elif operation == '-':print(cp.minus())elif operation == '*' or operation == 'x':print(cp.multiply())elif operation == '/' or operation == '÷':print(cp.division())else:print("输入有误!")while True:Continue = input("是否继续?y/n:")if Continue == 'y':breakelif Continue == 'n':while_condition = Falsebreakelse:print("输入有误,请重新输入!")【调试结果】可以直接在文件夹路径中双击“computer.py”文件,即可调用,输入需要运算的两个数以及运算符号后,程序会自动进行计算,效果如图1所示。

四则运算计算器程序设计(java-GUI)

四则运算计算器程序设计(java-GUI)
四则运算计算器程序设计(java-GUI)
北京林业大学信息学院 闫煜鸿
一、 实例描述
用户通过按钮输入一个四则混合运算表达式,当按下‘=’时能够计算并显示计算结果, 如果用户输入的表达式有错误则要给出 ERROR 提示。
二、 实例分析
本实例需要用户通过按钮输入四则混合运算表达式,那么程序界面需要提供数字和符号 的按钮,同时还需要能够显示输入和输出结果的控件。为了便于布局和管理,使用三个 JButton 数组存放所有的按钮对象,分别为数字键(0 到 9 以及小数点)、运算符键(加、 减、乘、除、括号、等号等)和功能键(包括重置、后退、说明等)。用于显示信息的控件 使用 JLable 类型的对象 lable。
当事件源为‘=’按钮时,除了在 label 后添加字符‘=’,还要调用自定义的方法 EvaluateExpression()得到表达式的值并将此值添加在 lable 之后,同时将 p 的值设为 false。 此时数字键和运算符按钮以及‘后退’键都不可使用。
当事件源为‘重置’按钮时,将 lable 中的字符清空,同时恢复 p 的值为 true。 当事件源为‘说明’按钮时,在 lable 中显示说明文字,同时设置 p 的值为 false,以防 止用户输入的表达式错误。
五、 数据结构与算法设计
如何根据用户输入的字符串表达式计算表达式的值呢?这里介绍使用堆栈来计算表达 式的值的方法。
首先是关于堆栈的描述。使用 java.util 包中的 Stack<E>泛型类可以创建一个堆栈对象。 堆栈对象可以调用 public E push(E item)方法实现入栈操作,及在栈顶插入元素 item;调用 public E pop()方法实现出栈操作,及删除并返回栈顶元素;调用 public boolean empty()方法 判断堆栈是否为空,如果为空则返回 true;调用 public E peek()方法可以获取栈顶元素,但 不删除该元素。在这个程序中需要有两个堆栈对象,分别是用来存放运算数的 OPND 栈(E 为 Float 类型)和存放运算符的 OPTR 栈(E 为 Character 类型)。

设计计算器涉及知识点

设计计算器涉及知识点

设计计算器涉及知识点设计计算器是一个常见的编程项目,涉及到多个知识点,包括界面设计、用户输入与输出处理、算术运算、异常处理等。

本文将从这些知识点出发,探讨设计计算器的相关内容。

一、界面设计计算器的界面设计是用户与计算器进行交互的入口,需要直观、简洁、易用。

主要的界面设计知识点包括:1. 按钮布局与样式:如何合理布局计算器上的数字、运算符和其他功能按钮,使其易于按压,并反映出计算器的功能特点。

2. 颜色与美观:选择适合的颜色搭配,并考虑到用户的审美需求,使计算器看起来美观大方。

二、用户输入与输出处理用户输入的处理是计算器的核心功能之一,用户输入的数字和符号需要被准确地解析和处理。

相关知识点包括:1. 获取用户输入:借助于按钮或Keyboard事件,获取用户按下的数字和运算符。

2. 输入解析与合法性检查:对用户输入进行解析,确保输入的有效性,避免由于错误输入导致计算错误。

3. 输出结果显示:在计算器界面上正确显示计算结果,并考虑到长数字的显示问题。

三、算术运算计算器的核心职责是进行算术运算,涉及到数字的计算和运算符的处理。

相关知识点包括:1. 四则运算:实现基本的加减乘除运算,确保运算的精度和准确性。

2. 存储与清零:提供存储和清零按钮,方便用户在多次运算中保留或清除中间结果。

3. 高级运算:根据计算器的需求,可能需要实现更复杂的数学运算功能,如开方、求幂、取余等。

四、异常处理计算器在运行过程中可能会遇到各种异常情况,如除零错误、越界错误等,需要进行适当的异常处理。

相关知识点包括:1. 异常类型定义:定义各种异常类型,如除零异常、输入错误异常等。

2. 异常捕获与处理:通过异常捕获机制,对可能出现的异常进行捕获和处理,以确保计算器的稳定运行。

通过以上的论述,我们可以看到设计计算器涉及到多个知识点,包括界面设计、用户输入与输出处理、算术运算、异常处理等。

只有综合运用这些知识点,才能设计出一个功能完备、界面美观、操作便捷的计算器。

第6章 四则运算计算器

第6章 四则运算计算器

第6章四则运算计算器本章介绍的项目是大家十分熟悉的计算器,通过该项目的实践,我们将学习状态图的一些基本知识、C# 中方法的概念和应用以及键盘事件的运用,同时,训练编写一个略微复杂的Windows应用程序的设计思路。

为了使读者能够循序渐进地学习此类项目的设计,我们根据难度的不同,分为三个项目分别实现,首先完成项目一:整数的四则运算计算器,然后在此基础上完善,实现项目二:实数四则运算计算器,最后添加记忆功能,完成项目三:带记功能的实数四则运算计算器。

6.1 项目一:整数四则运算计算器设计6.1.1 工作目标终极目标:完成一个整数四则运算的计算器,界面如图6.1所示:图6.1 整数四则运算计算器促成目标:1.完成整数四则运算计算器整体设计——状态机分析;2.完成整数四则运算模块设计——流程分析;3.完成整数四则运算计算器的程序界面设计及属性设置;4.完成整数四则运算器的程序编码;5.对整数四则运算计算器进行必要的运行测试,如有错误进行调试修改。

6.1.2 工作任务工作任务一:构建计算器的状态图;工作任务二:设计程序模块的流程图;工作任务三:设计界面完成窗体及控件的属性设置;工作任务四:编写程序代码;工作任务五:测试软件,对错误进行调试修改。

6.1.3 工作任务一:构建计算器的状态图1、知识准备——状态图状态图(Statechart Diagram)是描述一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的事件做出反应的。

状态图用于显示状态机(它指定对象所在的状态序列)、使对象达到这些状态的事件和条件、以及达到这些状态时所发生的操作。

状态机由状态组成,各状态由转移链接在一起。

状态是对象执行某项活动或等待某个事件时的条件。

转移是两个状态之间的关系,它由某个事件触发,然后执行特定的操作或评估并导致特定的结束状态。

图6.2描绘了状态机的各种元素。

图6.2 状态机的各种元素一个简单的编辑器可被视为有限的状态机,其状态为Empty(空)、Waiting for a command(等待命令)和Waiting for text(等待文本)。

(完整word版)计算器的设计

(完整word版)计算器的设计

目录1。

设计要求 (2)2.设计方案与论证 (2)2.1总体设计思路 (2)2。

2总体方案 (2)3.设计原理及电路图 (4)3.1硬件设计 (4)3。

2软件设计 (11)3。

3 算术运算程序设计 (12)3。

4 显示程序设计 (13)4。

器件清单 (14)5.器件识别与检测 (15)6。

控制系统实现(软件编程与调试) (16)6。

1 硬件调试 (17)6.2 软件调试 (17)6。

3软件编程 (18)7。

设计心得 (28)8。

参考文献 (29)1。

设计要求要求计算器能实现加减乘除四种运算,具体如下:1.加法:四位整数加法,计算结果若超过四位则显示计算错误2.减法:四位整数减法,计算结果若小于零则显示计算错误3.乘法:多位整数乘法,计算结果若超过四位则显示计算错误4.除法:整数除法5.有清除功能设计要求:分别对键盘输入检测模块;LCD显示模块;算术运算模块;错误处理及提示模块进行设计,keil与protues仿真分析其设计结果。

2。

设计方案与论证2。

1总体设计思路:本计算器是以MCS-51系列8051单片机为核心构成的简易计算器系统。

该系统通过单片机控制,实现对4*4键盘扫描进行实时的按键检测,并把检测数据存储下来。

整个计算器系统的工作过程为:首先存储单元初始化,显示初始值和键盘扫描,判断按键位置,查表得出按键值,单片机则对数据进行储存与相应处理转换,之后送入数码管动态显示。

整个系统可分为三个主要功能模块:功能模块一,实时键盘扫描;功能模块二,数据转换为了数码管显示;功能模块三,数码管动态显示。

2.2总体方案:根据功能和指示要求,本系统选用以MCS—51单片机为主控机.通过扩展必要的外围接口电路,实现对计算器的设计。

具体设计如下:1、由于要设计的是简单的计算器,可以进行四则运算,为了得到教好的显示效果,采用LCD 显示数据和结果。

2、另外键盘包括数字键(0—9)、符号键(+、—、*、/)、清除键和等号键,故只需要16个按键即可,设计中采用集成的计算机键盘.3、执行程序:开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、—、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果.4、错误提示:当单片机执行程序中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算器得到的结果大于计算器的显示范围时,计算器会在LCD上提示溢出;当除数为0时,计算器会在LCD上提示错误.①由于要设计的是简单的计算器,可以进行四则运算,对数字的大小范围要求不高故我们采用可以进行四位数字的运算,选用8 个LED 数码管显示数据和结果。

汇编语言课程设计_四则运算计算器设计

汇编语言课程设计_四则运算计算器设计

目录1 设计目的 (1)2 概要设计 (1)2.1 系统总体分析 (1)2.2 主模块框图及说明 (2)3 详细设计 (3)3.1 主模块及子模块说明 (3)3.2 各模块详细设计 (3)3.2.1 判定运算符模块设计 (3)3.2.2取运算数模块 (3)3.2.3计算模块 (4)3.2.4结果处理模块 (5)3.2.5输出模块 (5)3.2.6错误处理模块 (6)4 程序调试 (7)4.1 运行界面分析 (7)4.2 调试过程及分析 (7)5 心得体会 (8)5.1 设计体会 (8)5.2 系统改进 (8)参考文献 (10)附录 (11)实现加减乘除四则运算的计算器1 设计目的汇编语言是继机器语言后出现的计算机程序设计语言,是计算机所能提供给用户使用的最快而又最有效的语言,也是能够利用计算机所有硬件特征并能够直接控制硬件的惟一语言。

因而了解之一语言的特性,并熟练掌握这一语言并应用于开发中便是计算机专业学生所必需掌握的技能之一。

本课程设计通过加减乘除四则运算计算器的设计,增强对于汇编语言寄存器、指令、伪指令、中断等的理解。

可通过编写的汇编程序完成基本的加减乘除四则运算。

主要功能:能实现加减乘除的计算;该程序接受的是16进制数;执行时,需在文件名后直接跟上计算表达式,如在命令提示符下执行结果如下:C:\tasm>js 3+252 概要设计2.1 系统总体分析四则运算计算器应当实现对用户输入表达式的处理。

根据用户输入的表达式,完成加减乘除四则运算。

程序自动判定表达式输入,并完成对于输入的16进制数的转换,同时计算结果并以10进制数输出。

对于异常情况程序应当进行处理,保证程序的正确运行。

设计一个计算器,在DOS界面下输入<程序名> <表达式>可直接输出运算结果。

例如在DOS界面中输入JS 3+6,可直接输出9。

程序接受16进制数输入,以十进制数输出运算结果。

对于输出错误情况,程序自动给出错误提示,若输入的格式有误,程序给出“JS <Expression> [10]”(即输入样例)提示,若输入的表达式有误,程序给出“Error in expression !”(即表达式错误)提示。

汇编语言课程设计四则运算计算器..【范本模板】

汇编语言课程设计四则运算计算器..【范本模板】

微机原理实验报告汇编语言课程设计报告( 2012 —- 2013 年度第1 学期)实验名称:实现加减乘除四则运算的计算器专业生物医学工程学生姓名周炳威班级B100904学号B10090406指导教师乐洋实现加减乘除四则运算的计算器1 实验目的深化学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。

通过使用汇编语言设计实现简单计算器,以此进一步了解和掌握对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识的有效运用2 实验内容课题名称:实现加减乘除四则运算的计算器主要功能:实现一个简单的计算器,要求:编写一个程序,每运行一次可执行程序,可以实现加减乘除四则运算。

计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。

3 实现方法本次汇编语言课程设计的最终目的是要实现一个简单计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。

由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。

此外,运算过程中的进位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问题。

第一步,用INT 21H的1号功能调用来进行输入.利用1号功能调用来输入,即把单个字符一个个的输入并存储到一个数据区里。

我们要做的是两个数的运算,先认定输入的格式为1234+5678=或者1111*2222=,当然如果输入不是这样的格式计算出来的结果就不一定是我们想要的结果了.在存储的时候也是有选择的存储,当输入的并非格式里所要求的字符时则报错.第二步,设计程序进行判断所输入的算式是做加法运算、减法运算、乘法运算还是除法运算,即判断输入的运算符是‘+'号、‘—'号、‘*’号、‘/’号中的哪一个,因为输入的格式固定了,所以只需要把存进数据区的第三个字符拿来与加减乘除四个运算符号进行比较,和哪一个运算符号一样就调用相对应的运算模块进行计算。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
方法是类的成员。 定义的格式
修饰符 返回类型 方《C法#程序名设计(》 形参列表)
{
工作任务二:设计程序模块的流
❖ 说明:
程图
1、“返回类型”指定该方法返回的值的类型。
如果方法无返回值,则返回类型为void;
2、“方法名”是一个有效的标识符;“形参列
表”中的“形参”是“形式参数”的简称,
“形参列表”是一个可选项,指定方法的参数,
状态是对象执行《某C#程项序设计活》 动或等待某个事件时
工作任务一:构建计算器的状态 图
状态机的各种元素
《C#程序设计》
工作任务一:构建计算器的状态 图 ❖ 一个简单的编辑器可被视为有限的状态机
状态: Emptying for text(等待文本)。
有错误进行调试修改《C#。程序设计》
工作任务
❖ 工作任务一:构建计算器的状态图; ❖ 工作任务二:设计程序模块的流程图; ❖ 工作任务三:设计界面完成窗体及控件的属
性设置; ❖ 工作任务四:编写程序代码; ❖ 工作任务五:测试软件,对错误进行调试修
改。
《C#程序设计》
工作任务一:构建计算器的状态图
如果返回类型为 void,则可使用没有值的 return 语句来停止方法的执行。
如果没有 return 关键字,方法执行到代码块 末尾时即会停止。
具有非 void 返回《类C#程型序设计的》 方法才能使用 return 关键字返回值。
工作任务二:设计程序模块的流 程图
❖ 小组讨论三个方法的实现流程,画出流程图
《C#程序设计》
工作任务一:构建计算器的状态 ❖ 编写计算器程序的图思路:
InitMembers()方法:对计算器的状态进行初始化 Numbers_Click(int)方法:处理接受到数字,参
数是单击的数字 Operators_Click(char)方法:处理接收到运算符,
参数是单击的运算符
《C#程序设计》
工作任务二:设计程序模块的流
程图 当第1个操作数输入完毕后,用户将输入一个运
算符,一般来说是+、-、×、/中的一个,这 时程序应用保存第1个操作数和当前的运算符, 接下去输入第2个数,第2个数也输入完毕后,一 般用户会输入“=”号求出结果,然后用户可以 进行下一轮的计算,可见初始化时,运算符的初 值为“=”号是比较合理的。
《C#程序设计》
工作任务二:设计程序模块的流 程图
❖ 1、知识准备——方法
方法(method)又常称为函数(function),是 实现可以由对象或类执行的计算或操作
可以把一个程序中多次用到的某个任务,如常用 的计算定义为方法,以便反复调用
如:MessageBox类的Show、Math的Pow都是 方法
工作任务一:构建计算器的状态 2、整数四则运算计算器图的状态图设计
状态:
接受第1个操作数
• 接收数字 • 接收+、-、×、/、=
接受第2个操作数
• 接收数字 • 接收+、-、×、/、=
输出计算机结果
出错
《C#程序设计》
工作任务一:构建计算器的状态 图
初始/接受第一个操作数的分解子状态图
接受第二个操作数的分解子状态图
如果有多个参数,可以用逗号分隔,每个参数
与声明变量的方法一样,都是指定数据类型和 参数名。即使没有参数,括号也不能省略。
《C#程序设计》
工作任务二:设计程序模块的流
3、 return语句 程图
❖格式:
return 表达式
方法可以使用 return 关键字来返回值,如果 语句中 return 关键字的后面是与返回类型匹 配的值,则该语句将该值返回给方法调用方。 return 关键字还会停止方法的执行。
❖ 可能具有状态机的对象包括:类、子系统、 用例、接口和协议。
❖ 并非所有对象都需要有状态机。如果对象 的行为很简单,只是存储或检索数据,那 么该对象的行为就与状态无关,它的状态 机也没有多少用处《C。#程序设计》
工作任务一:构建计算器的状态 图
❖ 下面请同小组讨论整数四则运算计算器的状 态图
《C#程序设计》
事件: Load file(装载文件) Insert text(插入文本) Insert character (插入字符) Save and quit (保存并退出)
《C#程序设计》
工作任务一:构建计算器的状态 ❖ 状态机最多地用于建图立对象在其生命期内
的行为模型。
❖ 当对象具有依赖于状态的行为时,尤其需 要使用状态机。
工作任务一:构建计算器的状态
❖ 问题:

必须判断一下输入的是第一个数字还是 第一个以后的数字
请问:如何处理?
《C#程序设计》
工作任务一:构建计算器的状态 图
❖ 定义一个bool类型的变量bNumBegins,其 初值为 true,当输入第一个数字之后就将它置为 false,直到此数输入完成后再置为true, 准备进行下一轮的计算。
用户依次键入第1个数、+、-、×、/运算符、 第2个数后,又按下+、-、×、/运算符而不 是等号时,程序也要先计算出前一次的结果,并 将该结果作为下一《轮C#程计序设算计》的第1个操作数处理。
《C#程序设计》
工作任务二:设计程序模块的流 ❖ 2、程序流程图 程图
Numbers_Click ( )方法流程图
《C#程序设计》
Operators_Click() 方法的流程图
《C#程序设计》
工作任务二:设计程序模块的流
❖ 细节问题
程图
1)在初始化的时候,应用给运算符赋什么初值 呢?
《C#程序设计》
❖ 1、知识准备——状态图
状态图(Statechart Diagram)是描述一个实 体基于事件反应的动态行为,显示了该实体 如何根据当前所处的状态对不同的事件做出 反应的。
状态图用于显示状态机(它指定对象所在的 状态序列)、使对象达到这些状态的事件和 条件、以及达到这些状态时所发生的操作。
状态机由状态组成,各状态由转移链接在一 起。
工作目标
❖ 终极目标:
完成一个整数四则运算的计算器
《C#程序设计》
工作目标
❖ 促成目标:
完成整数四则运算计算器整体设计——状态机分 析;
完成整数四则运算模块设计——流程分析; 完成整数四则运算计算器的程序界面设计及属性
设置; 完成整数四则运算器的程序编码; 对整数四则运算计算器进行必要的运行测试,如
相关文档
最新文档