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小时内删除。