VB计算器项目算法结构分析
2015-05-01 13:07
344 查看
还是做得不太好,多多指教啊,关注这方面的
初始化:显示屏数字【dataout.Caption】为0
1.第一个因数的提取
当是第一次点击数字时(程序初始化时,结果已经计算出准备下一次时,清零键按下时)
--【dataout.Caption】=””
--【dataout.Caption】=dataout.Caption& Index
解释:此处的目的是:点击后初始的显示屏数字变为点击的数字,之后点击的进行拼接
当不是第一次点击时
--【dataout.Caption】=dataout.Caption& Index
需要考虑的问题是:此处计算机工作标准resflag是未完成的
此出预先解释下,数字0-9,符号+-*/是两个数字数组按钮控制的,关于如何做出来,以数字0-9按钮为例:
这 10 个按钮使用的名称都是num,
只是 Index 属性不同,就好象一个数组,创立一组按钮的方法是,先在窗体上建
立一个按钮(num),然后在 num上击鼠标右键,选择复制(Copy),
然后在窗体上任意部位击右键,选择粘贴(Paste),系统会提示是否创建控件组,
选择“是”,重复上面步骤,直至创立 10个按钮为止。
![](http://img.blog.csdn.net/20150501131019716?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzQ1NzE2Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2关于符号的提取
符号数组sign对应的每一个元素都有唯一的Index
当触发时,完成两件事:
1.情况:需考虑【dataout.Caption】的非法性,
行为:将【dataout.Caption】赋值给全局变量Num1,需要字符串到数值的转换,有
value,clng,cint各种。考虑到小数的计算,使用了value
办法:【dataout.Caption】!=“”
2.情况:需考虑当+-*/点击多次时
行为:将每个符号对应的index赋值给全局变量signope(rate)
办法:当点击多次时,直接不管他,使用exit sub
![](http://img.blog.csdn.net/20150501130936069?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzQ1NzE2Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
3.关于结果的结算
利用”=”按钮的点击操作
3.1对第二个因数的取值
首先解释为什么上图中为什么在将第一个因数提取后将【dataout.Caption】清空?
因为这个版本的计算器是利用显示屏的字符串来转换为浮点型数字来确定的,如果为了 效果将+-*/(其他符号如(),sin,con,tan等)显示在屏上的话,第二个因数很难提取, 迄今还未想好,(大神看到的话,提示下,谢啦)不得不用这种方法来提取
Eg: Num2=val(dataout.Caption);
3.2要考虑该操作是在计算状态下的操作,否则结果已经计算完成,当你不停点击”=” 按钮,内存中的因数:num1和Num2仍不停操作
解决办法:利用resflag标志位:
If not resflag then
计算
Else
显示屏显示上一个计算结果
3.2根据全局变量符号标志来确定+-*/操作
在符号按钮数组中,利用Index(是不是和上2类似)确定,使用VB中的select语句。
问题1:考虑分母为0的情况
办法:在是除法且分母为零时,特别输出为“无穷”
问题2:当只用一个因数,却按下一个符号时,令显示屏显示第一个因数
当直接按下=按钮,令显示屏显示上一个结果
![](http://img.blog.csdn.net/20150501131012168?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzQ1NzE2Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
注意的地方:结果计算完成后、清零按钮后,就要像程序刚启动时思考了:
计算完成后的状态改变标志位:计算完成标志resflag清0,小数点标志清0,第一个数标志清0
额外按钮,直接贴代码吧,晕了
Backspace按钮:
![](http://img.blog.csdn.net/20150501131031465?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzQ1NzE2Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
清零C按钮
![](http://img.blog.csdn.net/20150501131039639?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzQ1NzE2Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
小数点按钮.
避免多次出现小数点
初始化:显示屏数字【dataout.Caption】为0
1.第一个因数的提取
当是第一次点击数字时(程序初始化时,结果已经计算出准备下一次时,清零键按下时)
--【dataout.Caption】=””
--【dataout.Caption】=dataout.Caption& Index
解释:此处的目的是:点击后初始的显示屏数字变为点击的数字,之后点击的进行拼接
当不是第一次点击时
--【dataout.Caption】=dataout.Caption& Index
需要考虑的问题是:此处计算机工作标准resflag是未完成的
此出预先解释下,数字0-9,符号+-*/是两个数字数组按钮控制的,关于如何做出来,以数字0-9按钮为例:
这 10 个按钮使用的名称都是num,
只是 Index 属性不同,就好象一个数组,创立一组按钮的方法是,先在窗体上建
立一个按钮(num),然后在 num上击鼠标右键,选择复制(Copy),
然后在窗体上任意部位击右键,选择粘贴(Paste),系统会提示是否创建控件组,
选择“是”,重复上面步骤,直至创立 10个按钮为止。
2关于符号的提取
符号数组sign对应的每一个元素都有唯一的Index
当触发时,完成两件事:
1.情况:需考虑【dataout.Caption】的非法性,
行为:将【dataout.Caption】赋值给全局变量Num1,需要字符串到数值的转换,有
value,clng,cint各种。考虑到小数的计算,使用了value
办法:【dataout.Caption】!=“”
2.情况:需考虑当+-*/点击多次时
行为:将每个符号对应的index赋值给全局变量signope(rate)
办法:当点击多次时,直接不管他,使用exit sub
3.关于结果的结算
利用”=”按钮的点击操作
3.1对第二个因数的取值
首先解释为什么上图中为什么在将第一个因数提取后将【dataout.Caption】清空?
因为这个版本的计算器是利用显示屏的字符串来转换为浮点型数字来确定的,如果为了 效果将+-*/(其他符号如(),sin,con,tan等)显示在屏上的话,第二个因数很难提取, 迄今还未想好,(大神看到的话,提示下,谢啦)不得不用这种方法来提取
Eg: Num2=val(dataout.Caption);
3.2要考虑该操作是在计算状态下的操作,否则结果已经计算完成,当你不停点击”=” 按钮,内存中的因数:num1和Num2仍不停操作
解决办法:利用resflag标志位:
If not resflag then
计算
Else
显示屏显示上一个计算结果
3.2根据全局变量符号标志来确定+-*/操作
在符号按钮数组中,利用Index(是不是和上2类似)确定,使用VB中的select语句。
问题1:考虑分母为0的情况
办法:在是除法且分母为零时,特别输出为“无穷”
问题2:当只用一个因数,却按下一个符号时,令显示屏显示第一个因数
当直接按下=按钮,令显示屏显示上一个结果
注意的地方:结果计算完成后、清零按钮后,就要像程序刚启动时思考了:
计算完成后的状态改变标志位:计算完成标志resflag清0,小数点标志清0,第一个数标志清0
额外按钮,直接贴代码吧,晕了
Backspace按钮:
清零C按钮
小数点按钮.
避免多次出现小数点
相关文章推荐
- 路由表的结构与算法分析--trie查找
- 第四周【4项目-数据结构之自建算法库——双链表 】
- 第八十七节,html5+css3pc端固定布局,大纲算法,section和div,结构分析
- 从零开始Rtklib解读篇-简单的编程理论和算法及结构分析(一)
- 【人脸检测】“人脸训练代码”项目笔记(3)——代码结构分析
- 1.[数据结构和算法分析笔记]数组
- [Java算法分析与设计]线性结构与顺序表(List)的实现应用
- Android基础之项目结构分析
- Android学习笔记05---项目的目录结构与安装及启动过程分析
- Android学习笔记2-项目目录结构分析
- 数据结构笔记-算法时间复杂度分析
- (八)实际项目中涉及到的缓存数据结构及算法
- 深入分析MFC文档视图结构(项目实践)
- 【应用调试:logger-master】之二:logger-master项目结构分析
- 数据结构第十周项目——验证算法(二)
- 路由表的结构与算法分析--trie插入
- 深入分析MFC文档视图结构(项目实践)
- Cocos2d-TestCpp之项目结构分析
- 百度无人驾驶apollo项目路径规划a*算法分析