基于VC++微型计算器程序的实现

【摘 要】本文通过对话框的应用程序以及对话框常用控件的高级编程,基于优化功能的思想设计一款微型的计算器,能够实现简单的四则运算功能。

【关键词】计算器 功能实现

一、计算程序设计的思想

微型计算器以优化资源为主要设计思想,占有空间资源较少,对电脑其他程序的应用影响较小。遵循软件工程的设计规则,系统具有友好交互的界面,操作快捷简单,即时准确地获得需要的计算的结果,充分降低数字计算的难度和节约时间与空间。

二、计算程序设计的步骤

(一)建立一个基于对话框的MFC应用程序CalcTest。

在资源编辑器中添加控件:一个编辑框、17个按钮,分别修改其ID和标题的属性,10个按钮的ID修改为IDC_BTN0-IDC_BTN9,Caption修改为0-9的数字。其他7个按钮的ID分别改为IDC_BTNCLEAR、IDC_BTNADD、IDC_BTNMINUS、IDC_BTNMULTIPLY、IDC_BTNDIVID、IDC_BTNEQUAL、IDC_BTNDOT,Caption修改为C、+、-、*、/、=、.。

(二)为编辑框添加一个Value的CString类型的关联变量m_strData用于表示编辑框中的值。为对话框自定义成员变量m_fOprand表示操作数,m_fResult表示结果,m_operator表示运算符。

(三)编写代码实现加减乘除的运算,应用函数调用处理运算,在函数调用中,除法运算时,除数不能为0。

(四)为按钮添加单击事件,实现其功能。

三、计算器程序功能实现

(一)在CalcTestDlg.h头文件中加入函数头的定义void calc();

(二)在CalcTestDlg.cpp实现文件中初始化运算符号的值,m_operator = ‘+’。

(三)在CalcTestDlg.cpp实现文件中加入函数的实现代码void CCalcTestDlg::calc()

{UpdateData(TRUE);

const TCHAR* a = m_strData;

m_fOprand = _tstof(a);

switch(m_operator)

{case ‘+’:m_fResult += m_fOprand;break;

case ‘-’:m_fResult -= m_fOprand;break;

case ‘*’:m_fResult *= m_fOprand;break;

case ‘/’:if(m_fOprand != 0)

m_fResult /= m_fOprand;

else AfxMessageBox(_T(“除数不能为0”), MB_OK); break;

case ‘=’:break;

default:AfxMessageBox(_T(“输入非法运算符”)); } }

(四)为数字0按钮添加单击事件,通过消息映射到OnBnClickedBtn0()函数,并添加代码用于获取按钮的值传递给相应的变量。同理,OnBnClickedBtn0~ OnBnClickedBtn09,其变量的赋值同样更改为与按钮相应的数字值,如m_strData +=0~m_strData +=9;

void CCalcTestDlg::OnBnClickedBtn0()

{m_strData += "0";UpdateData(FALSE);}

(五)为等于号按钮添加单击事件,通过消息映射到OnBnClickedBtnequal()函数,并添加代

码用于获取按钮的“=”号值传递给变量。

void CCalcTestDlg::OnBnClickedBtnequal()

{calc();m_strData.Format(_T("%.2f"), m_fResult);

UpdateData(FALSE);m_operator = "=";}

(六)为点号按钮添加单击事件,通过消息映射到OnBnClickedBtndot()函数,并添加代

码用于获取按钮的“.”号值传递给变量。

void CCalcTestDlg::OnBnClickedBtndot()

{m_strData += ".";UpdateData(FALSE);}

(七)为除法号按钮添加单击事件,通过消息映射到OnBnClickedBtndot()函数,并添加代

码用于获取按钮的“/”号值传递给变量。

void CCalcTestDlg::OnBnClickedBtndivid()

{calc(); m_strData = ""; UpdateData(FALSE);m_operator = "/";}

同理,为其他符号按钮添加单击事件,通过消息映射到OnBnClickedBtnmultiply()函数、OnBnClickedBtnminus()函数、OnBnClickedBtnadd()函数,用于获取按钮的“*”、“-”、“+”号值传递给变量。

为清除号按钮添加单击事件,通过消息映射到OnBnClickedBtnclear()函数,并添加代

码用于获取按钮的“C”号值传递给变量。

void CCalcTestDlg::OnBnClickedBtnclear()

{ m_strData = "";m_fOprand = 0;m_fResult = 0;m_operator = "+";

UpdateData(FALSE); }

四、研究展望

本文主要通过vc++设计微型计算器,具有普通计算器的共性,在优化功能上使用较简便,无需安装计算器应用程序就可以使用。此外,研究还可以在此基础进行扩展,实现更多功能,如科学型计算器的研究等等。

参考文献:

[1]Bo Zhi Chen. Visual C++ program design[M].北京:中国铁道出版社,2008

[2]孙鑫.VC++深入详解[M].北京:电子工业出版社,2012

[3](美)霍尔顿(Horton, I.) 著,苏正泉译. Visual C++2012入门经典[M].北京:清华大学出版社,2012

[4](美)佩措尔德 著,方敏等译. Windows程序设计[M].北京: 清华大学出版社,2010

作者简介:陈惠娥(1984-),性别:女,广东技术师范学院天河学院、硕士,研究方向:软件工程与信息系统。

推荐访问:计算器 程序 VC