@TOC# 声明:本次实验的完成,得益于网络资源。特别感谢几位博主的分享,在接下来的分享中,我将会把他们的链接放上,供大家参考。前言:本程序可以实现简单的加减乘除,并能够实时显示输入的数字和输出结果。同时肯定也会有各种没想到的BUG,望采用者自行完善。## 一、实验目的基于visualStudio2017平台,实现简单的加减乘除,并且能实时显示输入的数字和输出结果。## 二、实验步骤1、新建工程 ,具体的实现步骤可以参考链接: link.;该文章有详细的建MFC工程的步骤。
2、进入对话框的控件界面 我们选择了17个BOTTON控件,3个EDIT Control,其中2个EDIT Control是作为中间储存变量,在最终界面被隐藏,其计算器工作界面如图1。
3、具体代码分析
(1)、1~9数字button的处理,以数字1的button为例。其中flag是设置的标志位,为了把±/的button前后输入的数字分开,便于下面计算;editv 是EDIT Control1的控件的值,用于显示输入的数字,resultv是EDIT Control2的控件的值,用于存储±/的button前输入的数字。
(2)、关于“±/button”的处理,以add的button为例。其中m_sign是字符型变量,用于存储±/字符。
3)、关于“删除、清空”botton的处理。Editv=editv.Left(editv.GetLength()-1),Left(n)取左边n个字符,editv.GetLength()取editv的长度,长度-1就是删除最后一个;实现清空用editv=””;resultv = “”;resultv2 = “”。
(4)、关于“=”botton的处理。其中m_fNumber1 = _tstof(resultv)语句,是将CString 型的resultv数转换成double型的m_fNumber1,便于计算;函数中,用了switch语句来判断是什么运算;strsum.Format(_T("%.5lf"), f);strsum是一个定义的CString 型的变量,用于存储double型的变量f转换成CString 型的值。
void CMFCCalculatorDlg::OnBnClickedButtonsum()
{
CString strsum;
editv += '=';
m_fNumber1 = _tstof(resultv);
m_fNumber2 = _tstof(resultv2);
double f = 0.0f;
switch (m_sign)
{
//加
case '+':
f = m_fNumber1 + m_fNumber2;
break;
//减
case '-':
f = m_fNumber1 - m_fNumber2;
break;
//乘
case '*':
f = m_fNumber1 * m_fNumber2;
break;
//除
case '/':
if (m_fNumber2 == 0.0f)
{
f = m_fNumber1;
}
else
{
f = m_fNumber1 / m_fNumber2;
}
break;
default:
break;
}
m_fNumber1 = 0.0f;
m_fNumber2 = 0.0f;
strsum.Format(_T("%.5lf"), f);
editv += strsum;
resultv3 = strsum;
UpdateData(false);
}