自學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); }
制作完成:
至此一個計算器制作完畢了,希望對大家有所幫助,由於是制作完畢後才一步一步的編寫此文,難免有所疏漏,還望諒解,有不明之處,可以給我留言!