计算器VC源代码
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{ case '+': m_first+=m_second;break;
case '-': m_first-=m_second;break;
case '*': m_first*=m_second;break;
case '/':
if(fabs(m_second)<=0.000001)
{m_display="除数不能为0";
IDC_BUTTON_EQUAL
=
Button
IDC_BUTTON_ADD
+
Edit Box
IDC_DISPLAY(只读)
Edit
Button
IDC_BUTTON_MINUS
-
Button
IDC_BUTTON_JIECHENG
n!
Button
IDC_BUTTON_FABS
fabs
Button
IDC_BUTTON_TAN
UpdateData(false);
return; }
m_first/=m_second;break;
}
m_second=0.0;
m_coff=1.0;
m_operator=_T("+");
UpdateDisplay(m_first);//更新编辑框显示内容
}
7、为Button按钮的BN_CLICKED事件添加响应函数,并编写代码
}
(10)“ln”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonLn()
{
if( m_second==0)
{ m_first=log(m_first); UpdateDisplay(m_first); }
else
{ m_second=log(m_second); UpdateDisplay(m_second);}
cos
Button
IDC_BUTTON_SIN
sin
Button
IDC_BUTTON_TAN
tan
Button
IDC_BUTTON_LN
Ln
Button
IDC_BUTTON_PI
Pi
4、为对话框类添加成员变量
1.double m_first;//存储一次运算的第一个操作数及一次运算的结果
2.double m_second;//存储一次运算的第二个操作数
}
“tan”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonTan()
{
if( m_second==0)
{ m_first=tan(m_first); UpdateDisplay(m_first); }
else
{ m_second=tan(m_second); UpdateDisplay(m_second);}
UpdateDisplay(m_second);}
}
(4)“Sqrt”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonSqrt()
{
if( m_second==0)
{ m_first=sqrt(m_first); UpdateDisplay(m_first); }
else
m_opewk.baidu.comator="-"; //减为“-”、乘为“*”
}
void CMyCalculatorDlg::OnButtonMutiply() //加、减、乘类似
{ Calculate();
m_operator="*"; //减为“-”、乘为“*”
}
“/”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonDiv()
(1)数字”N”的消息响应函数(N=0,1,…9)
void CMyCalculatorDlg::OnButtonN()
{if( m_coff == 1.0)
m_second = m_second*10 + N;//作为整数输入数字时
else
{ m_second = m_second + N*m_coff; //作为小数输入数字
{
m_second = -m_second;
UpdateDisplay(m_second);
}
(7)“=”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonEqual()
{
Calculate();
}
(8)“C”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonClear()
m_coff *= 0.1;}
UpdateDisplay(m_second);//更新编辑框的数字显示
}
void CMyCalculatorDlg::OnButtonPi()
{
m_first=3.14159265;
UpdateDisplay(m_first);
}
(2)运算符按钮的消息响应函数:
“+”按钮的消息处理函数
3、编辑对话框资源。向对话框添加按钮(Button)控件,并设置属性见表。
计算器对话框对象属性
对象
控件ID
Caption
对象
控件ID
Caption
Button
IDC_BUTTON0
0
Button
IDC_BUTTON_MUTIPLY
*
Button
IDC_BUTTON1
1
Button
IDC_BUTTON_DIV
{m_display = "除数不能为零";
UpdateData(false);
return;}
if( fabs(m_second)<0.000001)
{ m_first=1.0/m_first;
UpdateDisplay(m_first);
}
else
{ m_second=1.0/m_second;
void CMyCalculatorDlg::OnButtonAdd() //加、减、乘类似
{ Calculate();
m_operator="+"; //减为“-”、乘为“*”
}
void CMyCalculatorDlg::OnButtonMinus() //加、减、乘类似
{ Calculate();
{……
m_display = _T("0.0");
m_first = 0.0;
m_second= 0.0;
m_operator=_T("+");
m_coff = 1.0;
……
}
6、为对话框添加2个成员函数:
voidUpdateDisplay(double lVal)—用于在编辑框中显示数据
voidCMyCalculator::Calculate()---用于计算
{ m_display.Delete(i-1,1); i--; }
UpdateData(false);//更新编辑框变量m_display
}
void CMyCalculator::Calculate()
{ //将前一次数据与当前数据进行运算,作为下次的第一操作数,并在编辑框显示。
switch(m_operator.GetAt(0))
VC++计算器设计
设计一个简单的计算器,能够实现浮点型数的加、减、乘、除、开方、倒数运算。运行界面如图所示。
步骤如下:
1、创建一个对话框应用程序MyCalculator;
2、在“Project Workspace”窗口,选择“Resource View”标签,双击Dialog下的“IDD_MYCALCULATOR_DIALOG”,从“IDD_MYCALCULATOR_DIALOG”对话框删除“OK”和“ Cancel”及“TODO文本”,将对话框标题设置为“计算器”。
{ Calculate();
m_operator.Format("%s","/");
}
(3)”1/x“按钮的消息响应函数
void CMyCalculatorDlg::OnButtonReciprocal() //1/x按钮的消息处理函数
{
if(fabs(m_second)<0.000001 && fabs(m_first)<0.000001)
}
(11)“sin”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonSin()
{
if( m_second==0)
{ m_first=sin(m_first); UpdateDisplay(m_first); }
else
{ m_second=sin(m_second); UpdateDisplay(m_second);}
{ m_first=0.0;
m_second=0.0;
m_operator = "+";
m_coff = 1.0;
UpdateDisplay(0.0);
}
(9)“n!”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonJiecheng()
{
if( m_second==0)
}
(10)“fabs”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonFabs()
{
if( m_second==0)
{ m_first=fabs(m_first); UpdateDisplay(m_first); }
else
{ m_second=fabs(m_second); UpdateDisplay(m_second);}
{
int i;
for(i=m_first-1;i!=0;i--)
m_first=m_first*i;
UpdateDisplay(m_first); }
else
{
int i;
for(i=m_second-1;i!=0;i--)
m_second=m_second*i;
UpdateDisplay(m_second);}
void CMyCalculatorDlg::UpdateDisplay(double lVal)
{ //在编辑框中显示数据
m_display.Format(_T("%f"),lVal);
int i=m_display.GetLength();
while(m_display.GetAt(i-1)=='0') //格式化输出,将输出结果后的零截去
3.CString m_operator;//存储运算符
4.double m_coff;//存储小数点的系数权值
5.CString m_display;//编辑框IDC_DISPLAY的关联变量,显示计算结果
5、在对话框类的构造函数中,初始化成员变量
CMyCalculatorDlg::CMyCalculatorDlg(CWnd* pParent /*=NULL*/): Dialog(CMyCalculatorDlg::IDD, pParent)
}
“cos”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonCos()
{
if( m_second==0)
{ m_first=cos(m_first); UpdateDisplay(m_first); }
else
{ m_second=cos(m_second); UpdateDisplay(m_second);}
/
……
……
……
Button
IDC_BUTTON_CLEAR
C
Button
IDC_BUTTON9
9
Button
IDC_BUTTON_SQRT
sqrt
Button
IDC_BUTTON_POINT
.
Button
IDC_BUTTON_RECI
1/x
Button
IDC_BUTTON_SIGN
+/-
Button
{ m_second=sqrt(m_second); UpdateDisplay(m_second);}
}
(5)“.”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonPoint()
{
m_coff= 0.1 ;
}
(6)“+/-”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonSign()
}
最后在MyCalculatorDlg.cpp文件首加入语句#include <math.h>,编译并运行。
case '-': m_first-=m_second;break;
case '*': m_first*=m_second;break;
case '/':
if(fabs(m_second)<=0.000001)
{m_display="除数不能为0";
IDC_BUTTON_EQUAL
=
Button
IDC_BUTTON_ADD
+
Edit Box
IDC_DISPLAY(只读)
Edit
Button
IDC_BUTTON_MINUS
-
Button
IDC_BUTTON_JIECHENG
n!
Button
IDC_BUTTON_FABS
fabs
Button
IDC_BUTTON_TAN
UpdateData(false);
return; }
m_first/=m_second;break;
}
m_second=0.0;
m_coff=1.0;
m_operator=_T("+");
UpdateDisplay(m_first);//更新编辑框显示内容
}
7、为Button按钮的BN_CLICKED事件添加响应函数,并编写代码
}
(10)“ln”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonLn()
{
if( m_second==0)
{ m_first=log(m_first); UpdateDisplay(m_first); }
else
{ m_second=log(m_second); UpdateDisplay(m_second);}
cos
Button
IDC_BUTTON_SIN
sin
Button
IDC_BUTTON_TAN
tan
Button
IDC_BUTTON_LN
Ln
Button
IDC_BUTTON_PI
Pi
4、为对话框类添加成员变量
1.double m_first;//存储一次运算的第一个操作数及一次运算的结果
2.double m_second;//存储一次运算的第二个操作数
}
“tan”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonTan()
{
if( m_second==0)
{ m_first=tan(m_first); UpdateDisplay(m_first); }
else
{ m_second=tan(m_second); UpdateDisplay(m_second);}
UpdateDisplay(m_second);}
}
(4)“Sqrt”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonSqrt()
{
if( m_second==0)
{ m_first=sqrt(m_first); UpdateDisplay(m_first); }
else
m_opewk.baidu.comator="-"; //减为“-”、乘为“*”
}
void CMyCalculatorDlg::OnButtonMutiply() //加、减、乘类似
{ Calculate();
m_operator="*"; //减为“-”、乘为“*”
}
“/”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonDiv()
(1)数字”N”的消息响应函数(N=0,1,…9)
void CMyCalculatorDlg::OnButtonN()
{if( m_coff == 1.0)
m_second = m_second*10 + N;//作为整数输入数字时
else
{ m_second = m_second + N*m_coff; //作为小数输入数字
{
m_second = -m_second;
UpdateDisplay(m_second);
}
(7)“=”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonEqual()
{
Calculate();
}
(8)“C”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonClear()
m_coff *= 0.1;}
UpdateDisplay(m_second);//更新编辑框的数字显示
}
void CMyCalculatorDlg::OnButtonPi()
{
m_first=3.14159265;
UpdateDisplay(m_first);
}
(2)运算符按钮的消息响应函数:
“+”按钮的消息处理函数
3、编辑对话框资源。向对话框添加按钮(Button)控件,并设置属性见表。
计算器对话框对象属性
对象
控件ID
Caption
对象
控件ID
Caption
Button
IDC_BUTTON0
0
Button
IDC_BUTTON_MUTIPLY
*
Button
IDC_BUTTON1
1
Button
IDC_BUTTON_DIV
{m_display = "除数不能为零";
UpdateData(false);
return;}
if( fabs(m_second)<0.000001)
{ m_first=1.0/m_first;
UpdateDisplay(m_first);
}
else
{ m_second=1.0/m_second;
void CMyCalculatorDlg::OnButtonAdd() //加、减、乘类似
{ Calculate();
m_operator="+"; //减为“-”、乘为“*”
}
void CMyCalculatorDlg::OnButtonMinus() //加、减、乘类似
{ Calculate();
{……
m_display = _T("0.0");
m_first = 0.0;
m_second= 0.0;
m_operator=_T("+");
m_coff = 1.0;
……
}
6、为对话框添加2个成员函数:
voidUpdateDisplay(double lVal)—用于在编辑框中显示数据
voidCMyCalculator::Calculate()---用于计算
{ m_display.Delete(i-1,1); i--; }
UpdateData(false);//更新编辑框变量m_display
}
void CMyCalculator::Calculate()
{ //将前一次数据与当前数据进行运算,作为下次的第一操作数,并在编辑框显示。
switch(m_operator.GetAt(0))
VC++计算器设计
设计一个简单的计算器,能够实现浮点型数的加、减、乘、除、开方、倒数运算。运行界面如图所示。
步骤如下:
1、创建一个对话框应用程序MyCalculator;
2、在“Project Workspace”窗口,选择“Resource View”标签,双击Dialog下的“IDD_MYCALCULATOR_DIALOG”,从“IDD_MYCALCULATOR_DIALOG”对话框删除“OK”和“ Cancel”及“TODO文本”,将对话框标题设置为“计算器”。
{ Calculate();
m_operator.Format("%s","/");
}
(3)”1/x“按钮的消息响应函数
void CMyCalculatorDlg::OnButtonReciprocal() //1/x按钮的消息处理函数
{
if(fabs(m_second)<0.000001 && fabs(m_first)<0.000001)
}
(11)“sin”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonSin()
{
if( m_second==0)
{ m_first=sin(m_first); UpdateDisplay(m_first); }
else
{ m_second=sin(m_second); UpdateDisplay(m_second);}
{ m_first=0.0;
m_second=0.0;
m_operator = "+";
m_coff = 1.0;
UpdateDisplay(0.0);
}
(9)“n!”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonJiecheng()
{
if( m_second==0)
}
(10)“fabs”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonFabs()
{
if( m_second==0)
{ m_first=fabs(m_first); UpdateDisplay(m_first); }
else
{ m_second=fabs(m_second); UpdateDisplay(m_second);}
{
int i;
for(i=m_first-1;i!=0;i--)
m_first=m_first*i;
UpdateDisplay(m_first); }
else
{
int i;
for(i=m_second-1;i!=0;i--)
m_second=m_second*i;
UpdateDisplay(m_second);}
void CMyCalculatorDlg::UpdateDisplay(double lVal)
{ //在编辑框中显示数据
m_display.Format(_T("%f"),lVal);
int i=m_display.GetLength();
while(m_display.GetAt(i-1)=='0') //格式化输出,将输出结果后的零截去
3.CString m_operator;//存储运算符
4.double m_coff;//存储小数点的系数权值
5.CString m_display;//编辑框IDC_DISPLAY的关联变量,显示计算结果
5、在对话框类的构造函数中,初始化成员变量
CMyCalculatorDlg::CMyCalculatorDlg(CWnd* pParent /*=NULL*/): Dialog(CMyCalculatorDlg::IDD, pParent)
}
“cos”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonCos()
{
if( m_second==0)
{ m_first=cos(m_first); UpdateDisplay(m_first); }
else
{ m_second=cos(m_second); UpdateDisplay(m_second);}
/
……
……
……
Button
IDC_BUTTON_CLEAR
C
Button
IDC_BUTTON9
9
Button
IDC_BUTTON_SQRT
sqrt
Button
IDC_BUTTON_POINT
.
Button
IDC_BUTTON_RECI
1/x
Button
IDC_BUTTON_SIGN
+/-
Button
{ m_second=sqrt(m_second); UpdateDisplay(m_second);}
}
(5)“.”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonPoint()
{
m_coff= 0.1 ;
}
(6)“+/-”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonSign()
}
最后在MyCalculatorDlg.cpp文件首加入语句#include <math.h>,编译并运行。