4.总体设计
4.1 设计思路与流程图
创建3个字符串显示控件。分别命名为num1,num2,num3,它们的作用主要是:
1、当第一个输入数据时,存储在num1中 2、第二个输入数据时,存入num2中
3、将其赋给 num3,并使num2为空,以便输入的数据存入num2 4、所有的运算是在num1和 num3间进行
5、运算结果都赋给result,同时赋给num1,用于下一次的运算 创建布尔开关按钮change,change1,change2,change3,其中: 1、Change的真假用来判断是第一个数据还是第二个数据
2、change1的功能是在输入=,运算完后,不需要初始化即可进行下一次运算
3、change2用来去掉数据小数末尾的0
4、change3用来保证backspace键仅对输入的数据有效,对运算结果无效 创建2个数值显示控件type1,type2,并分别在其后面板的属性——数据类型——表示法中选择U8其中:
1、type1用来存储运算符号
2、type2用来保证连续“+、-、*、/”的正确性 3、所有的运算结果都赋给result
4、result经过去零处理后得到result1,将数据显示在前面板上。 根据要求作出程序流程图如图4-1:
14
开始 输入第一个数 输入运算类型 输入第二个数 按“+、-、*、/” 按“=” 按“C” 按“C” 显示结果 显示按“EXIT“ 结束
图4-1 程序流程图
4.2键入感应
1.在前面板中建立一个簇2.在簇中建立一个布尔量;
;
3.对布尔量进行复制,分别用来表示0-9十个数字键、小数点键、等号键、加减乘除四个键、反号键、开方键、倒数键、清零键、退出键;一共21个键;
4. 然后通过
将簇中各元素按产生的顺序组成一个一维数组;
这样使得每个键对应着各个数字;
15
每当按下一个键时,都会通过查找出对应的键并把结果连接
到一个case结构,然后执行对应case结构中的程序,一个键的感应过程就这样被完成,如图4-2:
图4-2 键的感应
4.3 数字的读入
4.3.1 数字1~9的键入
图4-3 数字读入程序图
具体赋给哪个操作数通过布尔量change的状态决定,该布尔量状态在输入运算类型键后改变。这里要注意的是:在第二个数键入时,要把结果赋给num3,
16
最终是在num1和 num3之间进行运算运算,这样做是为了在一种运算结束后能实现连续的运算。 4.3.2数字0的键入
当第一次输入0时,与上述真的情况相同,现在就零输入时的多零问题进行设计。虽然以多个零开头不影响输出的结果,但考虑到显示形式的正确性,只在小数点前显示一个零。当数据输入后,通过连接字符与00比较,若不等,数据直接输出(图4-4)。若相等,则直接输出0(图4-5)。
图4-4
图4-5 17
4.4操作类型
当按下运算类型键时,存储对应的数字序号到type;以按下“=”号时进行运算类型的确定。操作类型默认为“空”。在此操作类型case中同时执行对change状态转换。在其中再用一个case结构用于实现“+、-、*、/”的连续运算,(图4-6):
图4-6 操作类型程序图
这里要特别注意的是:在第二个数据被键入时,结果要赋给num3,最终的运算是在num1和 num3之间进行。这样做的目的是在一次运算结束后能实现下次运算的持续。
4.5 常用键的设置
4.5.1小数点(.)
小数点键的输入与数据的输入类似,要看change3的状态
18
。另外需考虑