基于VC6.0用MFC编写简易计算器

功能介绍:

1> 标准型:能进行加、减、乘、除四则运算,具有清空、回退功能,还附加了添加小数点、化为百分数的功能。

2> 科学型:新增了求三角函数(sin、cos、tan)、反三角函数(arcsin、arccos、arctan),取对数(ln、log10),π,求平方,求任意次方,求e的任意次方、10的任意次方,开平方,开任意次方,取模,求阶乘,取倒数的功能。

3> 界面:添加了位图资源设置成对话框的背景图;添加CButtonST类实现按钮对鼠标的响应(悬停、按下、普通状态)。


界面预览:



按钮设计:

(1)添加全局变量:

bool flag=false;  //标记一次运算是否结束

在类MyCalculatorDlg中添加变量:

CString m_edit; //编辑框映射的变量
CString s1;//存放按下操作符前的m_edit值
CString s2;//存放按下操作符后的m_edit值
int i; //用以标志双目运算符,在等号的switch中作用

(2)数字按钮0~9、小数点 .、圆周率π按钮的设计

以数字“1”为例:

先在classwizard中对单击鼠标消息add function,函数名为OnButton1,然后在CMyCalculatorDlg.cpp中编码,具体如下:

void CMyCalculatorDlg::OnButton1() 
{
	           // TODO: Add your control notification handler code here
	           if(flag==true) //如果上次运算已结束
	           {
		           m_edit=""; //清空编辑框
		           flag=false; //flag重置为false
	           }
	           m_edit+="1"; //在编辑框的字符串上添加1
	           UpdateData(false); //刷新编辑框
}

其他的数字2~9、0、小数点、π以此类推。


(3)单目运算符按钮的设计

单目运算符包括:化为百分数%,三角函数sin、cos、tan,反三角函数arcsin、arccos、arctan,取对数ln、log,平方数x²,e的x次方,10的x次方,开平方√,阶乘n!,取倒数1/x。

1>  化为百分数%

void CMyCalculatorDlg::OnPercent() //化为百分数函数
{
	// TODO: Add your control notification handler code here
	double num1;
	UpdateData(true); //获取编辑框内容
	s1=m_edit; //将编辑框的字符串保存到s1
	num1=atof(s1); //将s1转化为double型数据并保存到num1
	num1=num1*0.01; //num1化为百分数
	m_edit.Format("%f",num1); //num1转化为字符串
	UpdateData(false); //刷新编辑框
}

2>  三角函数sin、cos、tan

以sin为例:

void CMyCalculatorDlg::OnSin() //sin函数
{
	// TODO: Add your control notification handler code here
	double num1,num2,tmp;
	UpdateData(true);
	s1=m_edit;
	num1=atof(s1);	
	tmp=num1*PI/180.0; //将num1转化为弧度制
	num2=sin(tmp);
	m_edit.Format("%f",num2);
	flag=true; //标记一次运算结束
	UpdateData(false);
}

注意在math.h中三角函数是以弧度制计算的,所以要先把角度制的数值转化为弧度制。cos、tan以此类推。


3>  反三角函数arcsin、arccos、arcta

  • 24
    点赞
  • 184
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值