VC++计算器设计
设计一个简单的计算器,能够实现浮点型数的加、减、乘、除、开方、倒数运算。运行界面如图所示。
步骤如下:
1、创建一个对话框应用程序MyCalculator;
2、在“Project Workspace”窗口,选择“Resource View”标签,双击Dialog下的“IDD_MYCALCULATOR_DIALOG”,从“IDD_MYCALCULATOR_DIALOG”对话框删除“OK” 和“ Cancel”及“TODO文本” ,将对话框标题设置为“计算器”。
3、编辑对话框资源。向对话框添加按钮(Button)控件,并设置属性见表。
计算器对话框对象属性
对象 | 控件ID | Caption | 对象 | 控件ID | Caption |
Button | IDC_BUTTON0 | 0 | Button | IDC_BUTTON_MUTIPLY | * |
Button | IDC_BUTTON1 | 1 | Button | IDC_BUTTON_DIV | / |
…… | …… | …… | 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 | IDC_BUTTON_EQUAL | = |
Button | IDC_BUTTON_ADD | + | Edit Box | IDC_DISPLAY(只读) | Edit |
Button | IDC_BUTTON_MINUS | - | |||
4、为对话框类添加成员变量
1.double m_first;//存储一次运算的第一个操作数及一次运算的结果
2.double m_second;//存储一次运算的第二个操作数
3.CString m_operator;//存储运算符
4.double m_coff;//存储小数点的系数权值
5.CString m_display;//编辑框IDC_DISPLAY的关联变量,显示计算结果
5、在对话框类的构造函数中,初始化成员变量
CMyCalculatorDlg::CMyCalculatorDlg(CWnd* pParent /*=NULL*/): Dialog(CMyCalculatorDlg::IDD, pParent)
{ ……
m_display = _T("0.0");
vb计算器代码大全
m_first = 0.0;
m_second= 0.0;
m_operator=_T("+");
m_coff = 1.0;
……
}
6、为对话框添加2个成员函数:
void UpdateDisplay(double lVal)—用于在编辑框中显示数据
void Calculate()---用于计算
void CMyCalculatorDlg::UpdateDisplay(double lVal)
{ //在编辑框中显示数据
m_display.Format(_T("%f"),lVal);
int i=m_display.GetLength();
while(m_display.GetAt(i-1)=='0') //格式化输出,将输出结果后的零截去
{ m_display.Delete(i-1,1); i--; }
UpdateData(false);//更新编辑框变量m_display
}
void CMyCalculator::Calculate()
{ //将前一次数据与当前数据进行运算,作为下次的第一操作数,并在编辑框显示。
switch(m_operator.GetAt(0))
{ 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";
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事件添加响应函数,并编写代码
(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_coff *= 0.1; }
UpdateDisplay(m_second);//更新编辑框的数字显示
}
(2)运算符按钮的消息响应函数:
“+”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonAdd() //加、减、乘类似
{ Calculate();
m_operator="+"; //减为“-”、乘为“*”
}
“/”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonDiv()
{ Calculate();
m_operator.Format("%s","/");
}
(3)”1/x“按钮的消息响应函数
void CMyCalculatorDlg::OnButtonReciprocal() //1/x按钮的消息处理函数
{
if(fabs(m_second)<0.000001 && fabs(m_first)<0.000001)
{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;
UpdateDisplay(m_second); }
}
(4)“Sqrt”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonSqrt()
{
if( m_second==0)
{ m_first=sqrt(m_first); UpdateDisplay(m_first); }
else
{ m_second=sqrt(m_second); UpdateDisplay(m_second); }
}
(5) “.”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonPoint()
{
m_coff = 0.1 ;
}
(6)“+/-”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonSign()
{
m_second = -m_second;
UpdateDisplay(m_second);
}
(7)“=”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonEqual()
{
Calculate();
}
(8)“C”按钮的消息处理函数
void CMyCalculatorDlg::OnButtonClear()
{ m_first=0.0;
m_second=0.0;
m_operator = "+";
m_coff = 1.0;
UpdateDisplay(0.0);
}
最后在MyCalculatorDlg.cpp文件首加入语句 #include <math.h> ,编译并运行。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论