MFC計算器課程設計報告

2021-03-04 05:20:25 字數 2257 閱讀 7954

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語言基本知識,掌握...