程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 【C++自學之旅】MFC計算器設計

【C++自學之旅】MFC計算器設計

編輯:關於C++

自學C++,看了一段時間孫鑫C++視頻,想著還是自己實踐一個吧,於是花了半天時間做了一個計算器,基本功能正常,僅供一同學習的初學者參考!

建立一個基本對話框工程,利用Contrl畫出如下界面。

\圖1.

給編輯框添加float變量m_abc。

\圖2.

並且在C**Dlg中添加如下變量

\圖3

在C**Dlg的OnInitDialog()中將上述變量初始化

\圖4

給上述圖1中的控件添加成員函數.

\圖5

\圖6

到目前為止,准備工作已經做好。

下面我對圖3中的變量進行解釋:

我以加法為例:

m_abc=num_a+num_b;

num_contrl:當前錄入的是num_a,還是num_b。(0為num_a 1為num_b)

num_JJCC:此次運算的運算符。(1-4,分別表示加減乘除)

num_point:是否有小數點。(0表示沒有小數點,1表示有小數點)

num_point_times:小數點後面的位數。(用於中間運算)

下面是按鈕0-9的程序:

void CJSQQDlg::OnButton0() //數字0

{

// TODO: Add your control notification handler code here

float num;

char i;

num=1;

if(0==num_contrl)//錄入num_a

{

if(0==num_point)//沒有小數點

{

num_a=num_a*10+0;//當前num_a的數值,如果按下數字5,將0改為5即可。

}

else if(1==num_point)//有小數點

{

num_point_times++;//記錄小數點位數

for(i=1;i<=num_point_times;i++)

{

num=10*num;

}

num=0/num;//此處0表示錄入的數字是0,如果按下數字5,將0改為5即可。

num_a=num_a+num;//得出num_a的值

}

UpdateData();//在編輯框中顯示num_a的值

m_abc=num_a;

UpdateData(false);

}

else if(1==num_contrl)//錄入num_b,與錄入num_a一樣,只需少許修改即可。

{

if(0==num_point)

{

num_b=num_b*10+0;//0改為-

}

else if(1==num_point)

{

num_point_times++;

for(i=1;i<=num_point_times;i++)

{

num=10*num;

}

num=0/num;//0改為--

num_b=num_b+num;

}

UpdateData();

m_abc=num_b;

UpdateData(false);

}

}

小數點:

void CJSQQDlg::OnButton_Point()

{

// TODO: Add your control notification handler code here

num_point=1;

}

 

等於符號:

void CJSQQDlg::OnButton_DengYu()

{

// TODO: Add your control notification handler code here

num_contrl=3;//按下等於符號後,不再錄入其他數據

if(0==num_JJCC)

return;

if(1==num_JJCC)//+

{

UpdateData();

m_abc=num_a+num_b;

UpdateData(false);

}

if(2==num_JJCC)//-

{

UpdateData();

m_abc=num_a-num_b;

UpdateData(false);

}

if(3==num_JJCC)//*

{

UpdateData();

m_abc=num_a*num_b;

UpdateData(false);

}

if(4==num_JJCC)//÷

{

UpdateData();

m_abc=num_a/num_b;

UpdateData(false);

}

}

加減乘除的:

void CJSQQDlg::OnButton_Jia()

{

// TODO: Add your control notification handler code here

num_contrl=1;

num_point=0;

num_point_times=0;

num_JJCC=1;

}

void CJSQQDlg::OnButton_Jian()

{

// TODO: Add your control notification handler code here

num_contrl=1;

num_point=0;

num_point_times=0;

num_JJCC=2;

}

void CJSQQDlg::OnButton_Cheng()

{

// TODO: Add your control notification handler code here

num_contrl=1;

num_point=0;

num_point_times=0;

num_JJCC=3;

}

void CJSQQDlg::OnButton_Chu()

{

// TODO: Add your control notification handler code here

num_contrl=1;

num_point=0;

num_point_times=0;

num_JJCC=4;

}

CE按鈕:

void CJSQQDlg::OnButtonCE()

{

// TODO: Add your control notification handler code here

num_a=0;

num_b=0;

num_contrl=0;

m_abc=0;

num_point=0;

num_point_times=0;

UpdateData();

m_abc=0;

UpdateData(false);

}

制作完成:

\

 

至此一個計算器制作完畢了,希望對大家有所幫助,由於是制作完畢後才一步一步的編寫此文,難免有所疏漏,還望諒解,有不明之處,可以給我留言!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved