计算器的设计和实现
一、前言
本文旨在记录“简单计算器的设计和实现”项目的开发过程。
设计的计算器实现的简单功能:
- 能通过设计的按钮控件输入并实现简单算术运算,表达式在编辑框中显示,能将运算结果,输出在编辑框内显示;
- 能够实现混合运算的求解,算术表达式中包括加、减、乘、除、括号等运算符;
- 能够识别括号,优先级正确。并保存历史的表达式运算记录。
二、基本流程
三、MFC界面设计
1. 基础控件与模块的添加
包括20个Button控件和两个Edit控件。考虑到5行4列Button的美观情况,选取10个数字,加减乘除4个基本运算符,等号、小数点、括号这4个基础按键,删除了CE功能,只保留C清屏和Backspace回退这两个操作。如下图所示
并且为算式框绑定mEdit变量,为历史记录框绑定mOut变量。
2. 各按键添加响应函数
数字0~9(以数字0为例,其余代码只需改动相应数字
void CMFCCalculatorDlg::OnBn0()
{
// 数字“0”
CString str;
mEdit.GetWindowText(str);
str = str + _T("0");
mEdit.SetWindowText(str);
}
基本运算符’+’,’-’,’*’,’/’,’(’,’)’,’.’(以加号为例
void CMFCCalculatorDlg::OnBnAdd()
{
// 加号
CString str;
mEdit.GetWindowText(str);
str = str + _T("+");
mEdit.SetWindowText(str);
mOut.SetWindowText(str);
}
操作符CE,Backsp
void CMFCCalculatorDlg::OnBnCE()
{
// “清屏”
mEdit.SetWindowText(_T(""));
}
void CMFCCalculatorDlg::OnBnBacksp()
{
// “后退”
CString str;
mEdit.GetWindowText(str);
str = str.Left(str.GetLength() - 1