自學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);
}
制作完成:

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