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; }
相关文章推荐
- MFC一个简单的计算器程序
- 采用文法思想用MFC实现简单的计算器程序
- 『Visual C++ MFC 简明教程』----第二部分:一个简单的MFC程序
- 一个简单的计算器模拟程序-2011腾讯笔试填空题
- 一个简单的计算器程序(C++)
- MFC入门(一)-- 第一个简单的windows图形化界面小程序(打开计算器,记事本,查IP)
- 一个简单的mfc单页界面文件读写程序(MFC 程序入口和执行流程)
- MFC实现一个简单的计算器
- 一个最简单的MFC程序
- 用c++写一个简单的计算器程序
- VS2010 C++ MFC框架学习笔记2 - 创建一个简单的加法计算器(2)
- 在MFC下使用OpenGL的一个简单的例子(基于单文档程序)
- 一个简单的mfc单页界面文件读写程序(MFC 程序入口和执行流程)
- MFC 一个简单的绘图程序
- 一个最简单的MFC程序框架剖析
- 用C# WinForm写的一个简单的计算器程序(可以输入复杂的表达式),欢迎大家指出Bug
- 一个简单的计算器程序
- 一个仿系统自带计算器程序MFC实现
- 一个简单的MFC柱状图显示程序
- VS2010配置opencv2.4.8,用MFC创建显示一个图片的简单程序