【摘 要】本文通過對話框的應用程序以及對話框常用控件的高級編程,基于優(yōu)化功能的思想設計一款微型的計算器,能夠實現(xiàn)簡單的四則運算功能。
【關鍵詞】計算器 功能實現(xiàn)
一、計算程序設計的思想
微型計算器以優(yōu)化資源為主要設計思想,占有空間資源較少,對電腦其他程序的應用影響較小。遵循軟件工程的設計規(guī)則,系統(tǒng)具有友好交互的界面,操作快捷簡單,即時準確地獲得需要的計算的結果,充分降低數(shù)字計算的難度和節(jié)約時間與空間。
二、計算程序設計的步驟
(一)建立一個基于對話框的MFC應用程序CalcTest。
在資源編輯器中添加控件:一個編輯框、17個按鈕,分別修改其ID和標題的屬性,10個按鈕的ID修改為IDC_BTN0-IDC_BTN9,Caption修改為0-9的數(shù)字。其他7個按鈕的ID分別改為IDC_BTNCLEAR、IDC_BTNADD、IDC_BTNMINUS、IDC_BTNMULTIPLY、IDC_BTNDIVID、IDC_BTNEQUAL、IDC_BTNDOT,Caption修改為C、+、-、*、/、=、.。
(二)為編輯框添加一個Value的CString類型的關聯(lián)變量m_strData用于表示編輯框中的值。為對話框自定義成員變量m_fOprand表示操作數(shù),m_fResult表示結果,m_operator表示運算符。
(三)編寫代碼實現(xiàn)加減乘除的運算,應用函數(shù)調用處理運算,在函數(shù)調用中,除法運算時,除數(shù)不能為0。
(四)為按鈕添加單擊事件,實現(xiàn)其功能。
三、計算器程序功能實現(xiàn)
(一)在CalcTestDlg.h頭文件中加入函數(shù)頭的定義void calc();
(二)在CalcTestDlg.cpp實現(xiàn)文件中初始化運算符號的值,m_operator = ‘+’。
(三)在CalcTestDlg.cpp實現(xiàn)文件中加入函數(shù)的實現(xiàn)代碼void CCalcTestDlg::calc()
{UpdateData(TRUE);
const TCHAR* a = m_strData;
m_fOprand = _tstof(a);
switch(m_operator)
{case ‘+’:m_fResult += m_fOprand;break;
case ‘-’:m_fResult -= m_fOprand;break;
case ‘*’:m_fResult *= m_fOprand;break;
case ‘/’:if(m_fOprand != 0)
m_fResult /= m_fOprand;
else AfxMessageBox(_T(“除數(shù)不能為0”), MB_OK); break;
case ‘=’:break;
default:AfxMessageBox(_T(“輸入非法運算符”)); } }
(四)為數(shù)字0按鈕添加單擊事件,通過消息映射到OnBnClickedBtn0()函數(shù),并添加代碼用于獲取按鈕的值傳遞給相應的變量。同理,OnBnClickedBtn0~ OnBnClickedBtn09,其變量的賦值同樣更改為與按鈕相應的數(shù)字值,如m_strData +=0~m_strData +=9;
void CCalcTestDlg::OnBnClickedBtn0()
{m_strData += \"0\";UpdateData(FALSE);}
(五)為等于號按鈕添加單擊事件,通過消息映射到OnBnClickedBtnequal()函數(shù),并添加代
碼用于獲取按鈕的“=”號值傳遞給變量。
void CCalcTestDlg::OnBnClickedBtnequal()
{calc();m_strData.Format(_T(\"%.2f\"), m_fResult);
UpdateData(FALSE);m_operator = '=';}
(六)為點號按鈕添加單擊事件,通過消息映射到OnBnClickedBtndot()函數(shù),并添加代
碼用于獲取按鈕的“.”號值傳遞給變量。
void CCalcTestDlg::OnBnClickedBtndot()
{m_strData += \".\";UpdateData(FALSE);}
(七)為除法號按鈕添加單擊事件,通過消息映射到OnBnClickedBtndot()函數(shù),并添加代
碼用于獲取按鈕的“/”號值傳遞給變量。
void CCalcTestDlg::OnBnClickedBtndivid()
{calc(); m_strData = \"\"; UpdateData(FALSE);m_operator = '/';}
同理,為其他符號按鈕添加單擊事件,通過消息映射到OnBnClickedBtnmultiply()函數(shù)、OnBnClickedBtnminus()函數(shù)、OnBnClickedBtnadd()函數(shù),用于獲取按鈕的“*”、“-”、“+”號值傳遞給變量。
為清除號按鈕添加單擊事件,通過消息映射到OnBnClickedBtnclear()函數(shù),并添加代
碼用于獲取按鈕的“C”號值傳遞給變量。
void CCalcTestDlg::OnBnClickedBtnclear()
{ m_strData = \"\";m_fOprand = 0;m_fResult = 0;m_operator = '+';
UpdateData(FALSE); }
四、研究展望
本文主要通過vc++設計微型計算器,具有普通計算器的共性,在優(yōu)化功能上使用較簡便,無需安裝計算器應用程序就可以使用。此外,研究還可以在此基礎進行擴展,實現(xiàn)更多功能,如科學型計算器的研究等等。
參考文獻:
[1]Bo Zhi Chen. Visual C++ program design[M].北京:中國鐵道出版社,2008
[2]孫鑫.VC++深入詳解[M].北京:電子工業(yè)出版社,2012
[3](美)霍爾頓(Horton, I.) 著,蘇正泉譯. Visual C++2012入門經典[M].北京:清華大學出版社,2012
[4](美)佩措爾德 著,方敏等譯. Windows程序設計[M].北京: 清華大學出版社,2010
作者簡介:陳惠娥(1984-),性別:女,廣東技術師范學院天河學院、碩士,研究方向:軟件工程與信息系統(tǒng)。