【C++自学之旅】MFC计算器设计

来源:互联网 发布:js修改字体颜色 编辑:程序博客网 时间:2024/06/07 05:35

自学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 0
原创粉丝点击