基于MFC(vs2017)简单计算器实现的详细讲解及代码分析

@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);
}

三、实验结果

在这里插入图片描述

  • 5
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值