MFC计算器实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告一——计算器

一实验名称

简易计算器

二实验目的

在Visual C++.EXE开发环境中,通过编写计算器程序,掌握创建对话框的方法,并向其中添加控件,并设置属性,使之满足程序的要求。

三编程思路

计算器要实现各种运算,在编写中主要分为两大块的编写,一是对1、2、3等数字按钮的响应函数编写,二是对加减乘除等运算符按钮的响应函数的编写。

给Dlg添加变量int m_operator; //运算符

double m_result; //结果(含中间变量)

另外添加编辑框的变量m_res

1.对数字按钮的响应函数的编写

1)由于每个按钮的响应函数相差不大,故用一个函数将其封装

在每次输入时要先判断数据开头是否为0

void CMy0710210202CalculateDlg::button(CString c)

{

UpdateData(TRUE);

m_res+=c;

if(m_res.GetAt(0)=='0'&&m_res.Find(".")==-1){

m_res.Empty();

m_res+=c;

}

UpdateData(FALSE);

}

2)小数点按钮的响应函数。

首先要判断输入数据中是否已有小数点,数据是否为0,以及是否还没输入数据。

void CMy0710210202CalculateDlg::OnDian()

{

// TODO: Add your control notification handler code here

UpdateData(TRUE);

int n=m_res.Find(".");

if(n==-1&&m_res.GetLength()!=0) m_res+=".";

else if(m_res.GetLength()==0)m_res+="0.";

UpdateData(FALSE);

}

2.运算符按钮的响应函数的编写

用m_operator指代要进行的运算,由于每次的运算结果m_result 都传入了编辑框的变量m_res里,故此程序可以实现连续运算。

代码为

void CMy0710210202CalculateDlg::Result()

{

UpdateData(TRUE);

double input=0.0;

input=atof( m_res);

switch(m_operator)

{

case 0:

m_result=input;

break;

case 1: //加

m_result+=input;

break;

case 2: //减

m_result-=input;

break;

case 3: //乘

m_result*=input;

break;

case 4: //除

if(fabs(input)<0.0000000000000)m_result=0;

else m_result/=input;

break;

case 5: //平方

m_result=input*input;

break;

case 6: //开方

m_result=sqrt(input);

break;

case 7: //求倒

m_result=1/input;

break;

case 8: //sin

m_result=sin(input);

break;

case 9: //cos

m_result=cos(input);

break;

case 10: //tan

m_result=tan(input);

break;

case 11:

m_result=exp(input);

break;

case 12:

if(fabs(input)<0.0000000000000)m_result=0;

else m_result=log(input);

break;

}

m_res.Format("%f",m_result); UpdateData(FALSE);

相关文档
最新文档