软件实习实验一计算器开发(第三天)

这篇实验日志记录了在MFC平台上开发计算器的过程,包括按键输入输出、等号结果展示、Delete键删除、清屏及菜单设置等功能。在实现过程中,作者遇到如CString与string转换的挑战,并通过学习克服,体验到了编程的乐趣。
摘要由CSDN通过智能技术生成

(三)实验日志12.3

物联网一班-李林青-182210713120
源代码在Github:https://github.com/llq-007/-MFC-


目录

  • 目标

  • 功能实现

  • 作品展示

  • 总结


一、目标

(1) 将第一天写的计算器功能实现代码运用到MFC上;
(2)能够在MFC上实现计算器的相关功能。


二、功能实现

(1)按下按键能在文本框中输出

代码实现 例:按下一键输出一
其中要新建一个文本框变量m_Edit1和全局CString变量g_str。

void CCalculatorDlg::OnBnClickedButton14()//输出1
{
	g_str += "1";
	m_Edit1.SetWindowText(g_str);
	// TODO: 在此添加控件通知处理程序代码
}
(2)按下“=”键的结果输出
void CCalculatorDlg::OnBnClickedButton21()//按下=的结果输出
{
	CString cs;
	GetDlgItemText(IDC_EDIT1, cs);
	g_str = "";
	m_Edit1.SetWindowText(g_str);
	m_Edit2.SetWindowText(cs); 
	std::string sz2 = CT2A(cs.GetBuffer());
	double res = stackC(sz2);
	if (res == -1.123)
	{
		CString a ;
		a = "格式错误!!!";
		m_Edit1.SetWindowText(a);
	}
	else 
	{
		CString str;
		str.Format(TEXT("%0.1f"), res,res);
		g_str = str;
		m_Edit1.SetWindowText(g_str);
	}
}
(3)Delete删除键的设置

首先判断文本框中是否有字符,当有字符时令文本框中字符的最右边减一位。

void CCalculatorDlg::OnBnClickedButton4()//Delete键
{
	int nLength = g_str.GetLength();
	if (nLength > 0)
		g_str = g_str.Left(nLength - 1);
	else g_str = "0";
	m_Edit1.SetWindowText(g_str);
}
(4)Clear清屏键的设置

直接令全局变量g_str为空,在将其输出到文本框中。

void CCalculatorDlg::OnBnClickedButton1()//Clear清屏键
{
	g_str = "";
	m_Edit1.SetWindowText(g_str);
}
(4)菜单的设置

在文件夹中右键点击添加资源。
在这里插入图片描述
选择Menu添加菜单。
在这里插入图片描述
然后对菜单进行编辑即可。
在这里插入图片描述

(5)返回上一步功能设置

在菜单的返回上一步上点击右键,选择添加事件处理程序。


具体代码如下:

void CCalculatorDlg::On32771()//返回上一步
{
	CString cs;
	GetDlgItemText(IDC_EDIT2, cs);
	if(cs=="")
		MessageBox(_T("没有上一步"));
	g_str = "";
	m_Edit1.SetWindowText(cs);
}
这里我又建立了一个文本框用来存放上一次的数据,当点击返回时就将上一次的数据读取出来显示在用户看的文本框中,当然第二个文本框要隐藏。

三、作品展示

(1)计算并返回上一步

在这里插入图片描述

(2)Delete删除上一步

在这里插入图片描述

(3)在菜单中点击快捷键运算

在这里插入图片描述


四、总结

虽然在实验的过程中遇到了很多困难,例如CString和string的转换之类的,但在实验的过程中我还是学到了很多知识,也明白了学习的快乐之处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值