还是做得不太好,多多指教啊,关注这方面的
初始化:显示屏数字【dataout.Caption】为0
1.第1个因数的提取
当是第1次点击数字时(程序初始化时,结果已计算出准备下1次时,清零键按下时)
--【dataout.Caption】=””
--【dataout.Caption】=dataout.Caption& Index
解释:此处的目的是:点击后初始的显示屏数字变成点击的数字,以后点击的进行拼接
当不是第1次点击时
--【dataout.Caption】=dataout.Caption& Index
需要斟酌的问题是:此处计算机工作标准resflag是未完成的
此出预先解释下,数字0⑼,符号+-*/是两个数字数组按钮控制的,关于如何做出来,以数字0⑼按钮为例:
这 10 个按钮使用的名称都是num,
只是 Index 属性不同,就好象1个数组,创建1组按钮的方法是,先在窗体上建
立1个按钮(num),然后在 num上击鼠标右键,选择复制(Copy),
然后在窗体上任意部位击右键,选择粘贴(Paste),系统会提示是不是创建控件组,
选择“是”,重复上面步骤,直至创建 10个按钮为止。
2关于符号的提取
符号数组sign对应的每个元素都有唯1的Index
当触发时,完成两件事:
1.情况:需斟酌【dataout.Caption】的非法性,
行动:将【dataout.Caption】赋值给全局变量Num1,需要字符串到数值的转换,有 value,clng,cint各种。斟酌到小数的计算,使用了value
办法:【dataout.Caption】!=“”
2.情况:需斟酌当+-*/点击屡次时
行动:将每一个符号对应的index赋值给全局变量signope(rate)
办法:当点击屡次时,直接不管他,使用exit sub
3.关于结果的结算
利用”=”按钮的点击操作
3.1对第2个因数的取值
首先解释为何上图中为何在将第1个因数提取后将【dataout.Caption】清空?
由于这个版本的计算器是利用显示屏的字符串来转换为浮点型数字来肯定的,如果为了 效果将+-*/(其他符号如(),sin,con,tan等)显示在屏上的话,第2个因数很难提取, 迄今还未想好,(大神看到的话,提示下,谢啦)不能不用这类方法来提取
Eg: Num2=val(dataout.Caption);
3.2要斟酌该操作是在计算状态下的操作,否则结果已计算完成,当你不停点击”=” 按钮,内存中的因数:num1和Num2仍不停操作
解决办法:利用resflag标志位:
If not resflag then
计算
Else
显示屏显示上1个计算结果
3.2根据全局变量符号标志来肯定+-*/操作
在符号按钮数组中,利用Index(是否是和上2类似)肯定,使用VB中的select语句。
问题1:斟酌分母为0的情况
办法:在是除法且分母为零时,特别输出为“无穷”
问题2:当只用1个因数,却按下1个符号时,令显示屏显示第1个因数
当直接按下=按钮,令显示屏显示上1个结果
注意的地方:结果计算完成后、清零按钮后,就要像程序刚启动时思考了:
计算完成后的状态改变标志位:计算完成标志resflag清0,小数点标志清0,第1个数标志清0
额外按钮,直接贴代码吧,晕了
Backspace按钮:
清零C按钮
小数点按钮.
避免屡次出现小数点