MFC计算器实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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);