首页 > 其他 > 详细

MFC一个简单的计算器程序

时间:2014-02-11 01:28:26      阅读:385      评论:0      收藏:0      [点我收藏+]

1,简介


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

效果:


bubuko.com,布布扣


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



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;
}


MFC一个简单的计算器程序

原文:http://blog.csdn.net/dpsying/article/details/19047645

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!