還是做得不太好,多多指教啊,關注這方面的
初始化:顯示屏數字【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按鈕
小數點按鈕.
避免屢次出現小數點