您的位置:首页 > 其它

MFC一个简单的计算器程序

2014-02-10 20:54 369 查看

1,简介

某个晚上帮人做的一个MFC课程设计的作业。大概花了两三个小时。

效果:



就和平常使用的计算器用法差不多。

2,源码下载

MFC一个简单的计算器程序源码

3,部分主要代码

CalculatorDlg.h文件中:

class CCalculatorDlg : public CDialog
{
// Construction
public:
void SaveValue1();
CCalculatorDlg(CWnd* pParent = NULL);	// standard constructor

// Dialog Data
//{{AFX_DATA(CCalculatorDlg)
enum { IDD = IDD_CALCULATOR_DIALOG };
CEdit	m_edit;			//显示使用一个编辑框
CString	m_str;			//编辑框内的字符串

//输入的2个值
double m_fNumber1;
double m_fNumber2;

//保存计算符号类型 0='+',1='-',2='*',3='/'
int m_iSign;

//计算
void Calculator();

//}}AFX_DATA

// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CCalculatorDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support
//}}AFX_VIRTUAL

// Implementation
protected:
HICON m_hIcon;

// Generated message map functions
//{{AFX_MSG(CCalculatorDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnMyAbout();
afx_msg void OnButtonBack();
afx_msg void OnButtonClear();
afx_msg void OnButton1();
afx_msg void OnButton2();
afx_msg void OnButton3();
afx_msg void OnButton4();
afx_msg void OnButton5();
afx_msg void OnButton6();
afx_msg void OnButton7();
afx_msg void OnButton8();
afx_msg void OnButton9();
afx_msg void OnButton0();
afx_msg void OnButtonDian();
afx_msg void OnButtonJia();
afx_msg void OnButtonJian();
afx_msg void OnButtonCheng();
afx_msg void OnButtonChu();
afx_msg void OnButtonDeng();
afx_msg void OnButtonPingFang();
afx_msg void OnButtonKaiFang();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};


CalculatorDlg.cpp文件中:

void CCalculatorDlg::OnButtonBack()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
//移除最右边一个字符
if (!m_str.IsEmpty())
{
m_str = m_str.Left(m_str.GetLength()-1);
}
UpdateData(FALSE);
}

void CCalculatorDlg::OnButtonClear()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
m_str = "";
m_fNumber1 = 0.0f;
m_fNumber2 = 0.0f;
m_iSign = 0;
UpdateData(FALSE);
}

void CCalculatorDlg::OnButton1()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
m_str = m_str + "1";
UpdateData(FALSE);
}

void CCalculatorDlg::OnButton2()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
m_str = m_str + "2";
UpdateData(FALSE);
}

void CCalculatorDlg::OnButton3()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
m_str = m_str + "3";
UpdateData(FALSE);
}

void CCalculatorDlg::OnButton4()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
m_str = m_str + "4";
UpdateData(FALSE);
}

void CCalculatorDlg::OnButton5()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
m_str = m_str + "5";
UpdateData(FALSE);
}

void CCalculatorDlg::OnButton6()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
m_str = m_str + "6";
UpdateData(FALSE);
}

void CCalculatorDlg::OnButton7()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
m_str = m_str + "7";
UpdateData(FALSE);
}

void CCalculatorDlg::OnButton8()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
m_str = m_str + "8";
UpdateData(FALSE);
}

void CCalculatorDlg::OnButton9()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
m_str = m_str + "9";
UpdateData(FALSE);
}

void CCalculatorDlg::OnButton0()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
m_str = m_str + "0";
UpdateData(FALSE);
}

//小数点按钮
void CCalculatorDlg::OnButtonDian()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
//如果没有小数点,则加上一个小数点,如果已有小数点就忽略此次的小数点,保证最多只有1个
if (-1 == m_str.Find('.'))
{
m_str = m_str + ".";
}
UpdateData(FALSE);
}

void CCalculatorDlg::OnButtonJia()
{
// TODO: Add your control notification handler code here

SaveValue1();
m_iSign = 0;

}

void CCalculatorDlg::OnButtonJian()
{
// TODO: Add your control notification handler code here
SaveValue1();
m_iSign = 1;
}

void CCalculatorDlg::OnButtonCheng()
{
// TODO: Add your control notification handler code here
SaveValue1();
m_iSign = 2;
}

void CCalculatorDlg::OnButtonChu()
{
// TODO: Add your control notification handler code here
SaveValue1();
m_iSign = 3;
}

void CCalculatorDlg::OnButtonDeng()
{
// TODO: Add your control notification handler code here

Calculator();

}

void CCalculatorDlg::SaveValue1()
{
UpdateData(TRUE);
m_fNumber1 = atof(m_str);
m_str = "";
UpdateData(FALSE);

}

void CCalculatorDlg::Calculator()
{
UpdateData(TRUE);
m_fNumber2 = atof(m_str);
double f = 0.0f;
switch (m_iSign)
{
//加
case 0:
f = m_fNumber1 + m_fNumber2;
break;
//减
case 1:
f = m_fNumber1 - m_fNumber2;
break;
//乘
case 2:
f = m_fNumber1 * m_fNumber2;
break;
//除
case 3:
if (m_fNumber2 == 0.0f)
{
f = m_fNumber1;
}
else
{
f = m_fNumber1 / m_fNumber2;
}
break;
//平方
case 4:
f = m_fNumber2 * m_fNumber2;
break;
//开方
case 5:
f = sqrt(m_fNumber2);
break;
default:
break;
}
//如果浮点数其实是个整数
if(f - int(f) <= 1e-5)
{
m_str.Format("%d",(int)f);
}
else
{
m_str.Format("%f",f);
}
UpdateData(FALSE);

m_fNumber1 = f;
m_fNumber2 = 0.0f;
}

void CCalculatorDlg::OnButtonPingFang()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
m_fNumber1 = atof(m_str);
double f = m_fNumber1 * m_fNumber1;
//如果浮点数其实是个整数
if(f - int(f) <= 1e-5)
{
m_str.Format("%d",(int)f);
}
else
{
m_str.Format("%f",f);
}
UpdateData(FALSE);

m_fNumber1 = f;
m_fNumber2 = 0.0f;

m_iSign = 4;

}

void CCalculatorDlg::OnButtonKaiFang()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
m_fNumber1 = atof(m_str);
double f = sqrt(m_fNumber1);
//如果浮点数其实是个整数
if(f - int(f) <= 1e-5)
{
m_str.Format("%d",(int)f);
}
else
{
m_str.Format("%f",f);
}
UpdateData(FALSE);

m_fNumber1 = f;
m_fNumber2 = 0.0f;

m_iSign = 5;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: