VB計算器專案演算法結構分析

wsqyouth發表於2015-05-01

還是做得不太好,多多指教啊,關注這方面的

 

初始化:螢幕數字【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=valdataout.Caption);

3.2要考慮該操作是在計算狀態下的操作,否則結果已經計算完成,當你不停點選”=”    按鈕,記憶體中的因數:num1Num2仍不停操作

    解決辦法:利用resflag標誌位:

          If  not resflag  then

              計算

          Else 

螢幕顯示上一個計算結果

3.2根據全域性變數符號標誌來確定+-*/操作

   在符號按鈕陣列中,利用Index(是不是和上2類似)確定,使用VB中的select語句。

   問題1:考慮分母為0的情況

      辦法:在是除法且分母為零時,特別輸出為“無窮”

   問題2:當只用一個因數,卻按下一個符號時,令螢幕顯示第一個因數

           當直接按下=按鈕,令螢幕顯示上一個結果

 

注意的地方:結果計算完成後、清零按鈕後,就要像程式剛啟動時思考了:

 

計算完成後的狀態改變標誌位:計算完成標誌resflag0,小數點標誌清0,第一個數標誌清0

 

額外按鈕,直接貼程式碼吧,暈了

Backspace按鈕:

 

清零C按鈕

 

小數點按鈕.

避免多次出現小數點

 

   

 

          

 

 

 

 

相關文章