C++实现简单计算器(VS2022版)

本文详细介绍了如何使用VisualStudio2022中的MFC模块开发一个简易计算器,包括创建项目、界面设计、代码编写(包括数字输入、运算符处理和清零功能)以及功能展示。源代码和步骤详细,适合初学者学习MFC应用开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

总体说明

****文章基于VS2022的MFC应用模块完成简易的计算器的的实现****
****源代码就是文章里面所有代码块的代码****

什么是MFC应用模块?

  • MFC(Microsoft Foundation Classes)微软基础类库,是微软公司Microsoft Visual
    C++开发工具中的一个框架,它旨在简化Windows应用程序的开发。MFC提供了许多类和函数来处理Windows的各种操作,如用户界面、窗口管理、消息处理、文件操作等。
  • 在Visual Studio中,MFC模块是指一组MFC类和函数的集合,用于开发Windows桌面应用程序。MFC模块提供了一种基于类的编程模型,让开发者可以使用面向对象的方式来管理和处理Windows的各种功能和操作。
  • 对于计算器实现来说,MFC可以给我们提供一个模板,含有:“画布”(计算器的图形界面)、“按钮”(计算器的组件单元)、“显示”(结果显示),和实现他们的函数、变量(VS项目里面的.cpp、.h文件)

MFC应用模块安装

参见此博文即可:

*//此为转载,非本人原创*
https://blog.youkuaiyun.com/kaszxc/article/details/125788196

基于MFC应用模块程序设计

1. 创建项目

  • 通过文件->新建->项目建立MFC应用程序,在应用程序类型选择基于对话框,点击右下角的“完成”即可创建项目。
    - 如果找不到MFC就先安装MFC模块组件
    在这里插入图片描述

2. 界面设计

  • 如果创建成功,会出现下面的界面,箭头指向的矩形框就是计算器的图形界面
  • 下面我们要通过界面设计在图形界面添加单元
    在这里插入图片描述
  • 图形界面窗口打开方式:在资源视图的Dialog文件夹中可以看到,如果找不到资源视图可以到视图->其他窗口->资源视图中打开,点击红箭头显示的地方也可以
    在这里插入图片描述
  • 下图是Windows自带的计算器,这篇文章只讲怎么做可以做加减乘除四则运算的简单计算器 所以我们要在界面设计上只需要参考windows的按钮(Button)如数字1、2、3…和运算符(Operator·)+、-、*、、÷…以及结果显示…

在这里插入图片描述

  • 数字和运算符分别对应于(Button),结果显示对应于(Edit Control)
  • List item Edit Control是数据交互的控件,可以进行数据的输入与输出,Button是一个事件发生器,可以设置单击或双击等情况下需要处理的函数。
        接下来需要给各个Button添加事件,一般情况下双击按键就能完成创建,或者右键属性栏上方的闪电符号(控件事件)进行添加。
        如果添加错了控件事件需要删除,需要同时将“项目名Dlg.cpp”中对应的事件函数,BEGIN_MESSAGE_MAP中相应的事件以及“项目名Dlg.h”中对应的事件函数三个字段均删除。1
    在这里插入图片描述
  • 最终界面设计如下图所示
    在这里插入图片描述

3.代码改写

3.1 等式建立
  • 上图的第一行的四个(Edit Control)前三个表示数字、运算符、数字第四个表示计算结果
    因此写一个方法:一个四则运算的函数,实现前面三个(Edit Control)的编写,并将结果显示在第四个(Edit Control)里面
  • 这里就体现MFC模块的作用了,它已经为我们搭建了一个模板。首先双击等号按键或右键属性栏上方的闪电符号(控件事件)创建事件函数,在函数中放入如下代码:
	// TODO: 在此添加控件通知处理程序代码
	
	GetDlgItemText(IDC_EDIT1, str1);        //将第一编辑框的内容读取到str1(IDC与设计界面的ID匹配)
	GetDlgItemText(IDC_EDIT2, str2);
	GetDlgItemText(IDC_EDIT3, str3);
	number1 = _ttof(str1);                  //将Cstring格式转化为浮点型数字(unicode编码格式) 
	number2 = _ttof(str3);
	if (str2 != _T(""))                     //判断第二读取框的内容是否为空
	{
		if (str2 == _T("+"))               //如果非空做出相应的数据处理
		{
			result = number1 + number2;
		}
		else if (str2 == _T("-"))
		{
			result = number1 - number2;
		}
		else if (str2 == _T("*"))
		{
			result = number1 * number2;
		}
		else if (str2 == _T("/"))
		{
			result = number1 / number2;
		}
		else
		{
			MessageBox(_T("运算符输入有误!"));  //如果不是+-*/则显示输出错误
		}
	}

	str.Format(_T("%g"), result);     //实现数字等到CString的转换
	SetDlgItemText(IDC_EDIT4, str);   //将结果显示到第四编辑框中

  • 相应的在头文件的class 项目名Dlg中添加以下字段
    在这里插入图片描述
  • 结果验证: 如果想看自己的操作,到此为止是否正确,单击F5运行程序,在前三个编辑框依次输入数字(如“1.2”),运算符(+ - * /),数字(如“2.3”),单击等号在最后一个编辑框就可以得到答案。
3.2 按键输入
  • 现在是倒数第二步,就是怎么将按键的结果变成数值,并且赋值给对应的(Eidtor Control)
  • 首先完成数字按键输入工作
        因为数字及小数点应该在第一个编辑框以及第三个编辑框都能生效,这里我们通过运算符(第二编辑框)是否输入进行判断,未输入则按键输入对第一对话框生效,已输入对第三对话框生效。
        因为多个数字都要进行这样的输入,为简化代码,我们设置一个输入函数用于统一的数字输入,在“项目名Dlg.cpp”代码中添加代码如下:
/*定义数字输入函数*/
void CMFCApplication1Dlg::input(char *a)    //这里的CMFCApplication1Dlg需改为“你的项目名Dlg”
{
	GetDlgItemText(IDC_EDIT2, str2);         //判断第二编辑框是否为空
	if (str2 == _T(""))                      //是的话对第一编辑框进行操作
	{
		str1 += LPCTSTR(a);                  //对字符串进行扩展
		number1 = _ttof(str1);               //将字符串转为数字
		SetDlgItemText(IDC_EDIT1, str1);     //更新第一编辑框
	}
	else                                     //否则对第三编辑框进行操作
	{
		str3 += LPCTSTR(a);
		number2 = _ttof(str3);
		SetDlgItemText(IDC_EDIT3, str3);
	}
}

  • 头文件字段添加
    在这里插入图片描述
  • 双击数字及小数点按键或右键属性栏上方的闪电符号(控件事件)创建事件函数,在函数中放入如下代码(以数字0为例,其他类似):
	// TODO: 在此添加控件通知处理程序代码
	input("0");                     //输入数字0

  • 接下来完成运算符按键输入工作
        双击运算符按键或右键属性栏上方的闪电符号(控件事件)创建事件函数,在函数中放入如下代码(以运算符+为例,其他类似)
	// TODO: 在此添加控件通知处理程序代码
	str2 = _T("+");                  //将第二编辑框的内容设置为+并显示
	SetDlgItemText(IDC_EDIT2, str2);

3.3 清零功能
  • ***实现计算器的清零功能,为了用于下一次的计算,同时也是最后一步 ***
  • 双击清零(C)按键或右键属性栏上方的闪电符号(控件事件)创建事件函数,在函数中放入如下代码:
// TODO: 在此添加控件通知处理程序代码
	str1 = _T("");                  //将四个编辑框的内容都设置为空并显示
	str2 = _T("");
	str3 = _T("");
	str = _T("");
	SetDlgItemText(IDC_EDIT1, str1);
	SetDlgItemText(IDC_EDIT2, str2);
	SetDlgItemText(IDC_EDIT3, str3);
	SetDlgItemText(IDC_EDIT4, str);
3.4 功能展示
  • Ctrl+F5执行后,可以在项目文件夹内找到.exe文件
    -可以通过下载我上传的.exe文件看具体的功能

【声明】:文章大部分搬运自下面的博文在这里插入图片描述


  1. https://blog.youkuaiyun.com/qq_37381642/article/details/104066347 ↩︎

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值