double poz; //儲存小數點的位置,初始化為1,表示poz-1個小數點。
double m_dis; //edit控制項上需要顯示的數字
bool point_flag; //小數點表示位,判定是否是小數,是小數為1,不是小數為0。
double numfirst; //儲存計算過程中的前乙個數字,
double numsecond;//儲存計算過程中的第二個數字
char op;//記錄當前的計算符號,可以為c』,』n』
變數初始化:
poz=1;
m_dis = 0.0;
numfirst=0;
numsecond=0;
op=0;
4. 設計思路
a) 首先考慮對所有按鍵分為兩類,數字類和符號類,0,1,2,3,4,5,6,7,8,9為數字類為符號類。數字在計算的過程中最多需要儲存兩個,所以定義了兩個double型變數numfirst和numsecond來進行儲存。符號需要乙個char op來儲存。
b) 然後考慮在計算的過程中,numfirst和numsecond的儲存狀態有三種,一種是numfirst==0 && numsecond==0 也就是程式剛開始執行還沒有開始錄入數字的狀態。二種是numfirst!=0 && numsecond==0 也就是第乙個數字已經錄入,符號也已經錄入時候把m_dis的值直接賦值給numfirst,第三種是numfirst!
=0 &&numsecond!=0,表示可以通過op來把兩數合併為乙個數。
c) 考慮到該計算器支援連續的計算,比如3.33+1.33*88/96= ?。
所以必須在點符號button也要計算出之前的結果,通過判斷op,來計算,把兩個數字合併為乙個數字,方便下一次運算,功能近似於點=,所以把=也劃分到符號類。
d) 因為數字全部使用的是double,鍵入的數字必須通過一定的處理達到累加的效果,加上小數和整數的處理差異性大,所以分別用point_flag來判斷,分別出來小數和整數。
5. 成員函式及其釋義
因為對onnum0()到onnum9()的處理函式差異僅在乙個數字上,可以通過呼叫乙個共同的函式oncal(double num)來簡化源**長度,增加模組性。
void ccalcdlg::oncal(double num)
else
}if(numfirst!=0 && numsecond==0)
if(point_flag==true)
else//判定為整數
}if(numfirst==0 && numsecond==0)
else
} }以onadd()為例子講解符號的處理函式,函式的功能是先判定之前按下字元時op的值,更具op的值來進行相應的運算。
void ccalcdlg::onadd()
if(numfirst!=0 && numsecond==0&&op=='-')
if(numfirst!=0 && numsecond==0&&op=='*')
if(numfirst!=0 && numsecond==0&&op=='/')
if(numfirst==0 && numsecond==0)
op='+'; //最後記錄最後乙個操作是+
poz=1;//小數點位置歸位
point_flag=false;//預設小數點標誌為整數,也就是0,也就是false
}「+/-「按鈕的處理函式
void ccalcdlg::onneg()
『.』按鈕的處理函式
void ccalcdlg::onpt()
「backspace」按鈕的處理
void ccalcdlg::onbackspace()
}if(point_flag==true) //如果是小數
}else //如果是整數
m_dis=strtod(buffer,null);//再用strtod弄成浮點數
updatedata(false);
poz=1;
} 『ce』按鈕處理函式
void ccalcdlg::once()
}『c』按鈕處理函式
void ccalcdlg::onclear()
鍵盤響應:
void ccalcdlg::onkeydown(uint nchar, uint nrep**t, uint nflags)
cdialog::onkeydown(nchar, nrep**t, nflags);
}bool ccalcdlg::pretranslatemessage(msg* pmsg)
課程設計報告 計算器
計算器程式的設計與實現 資料結構課程設計 班級 計科1001 北京化工大學 資訊科學與技術學院電腦科學與技術專業 2011 12.一 功能描述 2 1.1 系統實現的目的和意義 3 1.2 系統實現的功能 3 1.3 系統開發的環境 3 二 總體結構 2 2.1 檔案清單 按檔案系統樹型方式排列 3...
資料結構課程設計 計算器
山東大學軟體學院 資料結構課程設計報告 設計題目 計算器 學號姓名年級 專業軟體工程 班級學期09 10學年第二學期 日期 2010 年 3 月 26 日 設計報告內容 1.需求描述 設計乙個簡單的計算器,能夠在有限位數內實現加 減 乘 除運算,並支援括號和小數。2.2.實現思想 在程式的運算部分建...
設計簡單計算器的C語言課程設計報告
c語言課程設計報告 題目 設計乙個簡單計算器 目錄1.設計目的 2.內容 3.總體設計 有流程圖 4.源程式編寫 附上了執行圖 5.執行結果 6.心得體會 一 設計目的 設計乙個簡單計算器,在功能上功能盡量模擬windows作業系統中的計算器,系統介面不做強制要求。全面熟悉 掌握c語言基本知識,掌握...