1、MFC简单计算器设计MFC计算器摘 要 本课程设计将实现一个简单计算器。其类似于Windows附件中自带的计算器。这个计算器不仅实现了简单的四则运算功能,还实现了高级的科学计算功能,而且具有简洁大方的图文外观。它的设计按软件工程的方法进行,系统具有良好的界面、必要的交互信息和较好的健壮性使用人员能快捷简单地进行操作。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。在课程设计中,系统开发平台为Windows7,程序设计设计语言采用Visual C+。关键词 程序设计;计算器;MFC;按钮控件1 引 言本课程设计主要在运算过程中,如果通过计算器来完成
2、,就会减少计算量,该程序即可以在简单计算器键面下进行简单运算,也可以在科学计算器键面下进行高级的科学计算。并且可以分别计算弧度、角度的三角函数的计算等较为复杂的运算。1.1 课题背景计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具。要实现计算功能,可以用VC+的知识编写程序来解决此问题。该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用。1.2设计目的能够熟练掌握MFC中的各个控件,消息的处理与添加,能够独立完成一些简单的算法,并且能够具体实现一些
3、功能,真正可以利用功能比较强大的MFC编译出较好的程序代码。本设计完成的是一个具有比较齐全运算功能的计算器。1.3设计要求利用Microsoft Visual C+的MFC制作一个多功能计算器,要求:(1)能够实现最基本的加、减、乘、除四则基本运算;(2)添加了计算类型,分别是弧度制、度数制;(3)界面有正负、清空、等于方便用户计算使用;(4)重点是此计算器具有倒数、多次方、开方、三角函数、反三角函数、指数、阶乘等高级运算。2 开发工具的介绍2.1 关于Visual C+Visual C+6.0 是Microsoft公司在1998年推出的基于Windows 9X和Windows NT的优秀集成
4、开发环境。该环境为用户提供了良好的可视化编程环境,程序员可以里利用该开发环境轻松地访问C+源代码编辑器,资源编辑器和使用内部调试器,并且可以创建项目文件。Visual C+6.0不仅包括编译器,而且它还包括许多有用组件,通过这些组件的协同工作,可以在Visual C+6.0集成环境中轻松地完成创建源文件,编辑资源,以及对程序的编译,连接和调试等各项工作。VC+6.0是Windows 95/98、XP或Windows NT下的一个应用程序,本身对软硬件没有特殊要求。就是说它对环境的要求与Windows 95/98、Windows NT要求是一致的。硬件要求:一般在586以上的处理器、16MB以上
5、内存、100MB以上的硬盘。软件要求:Windows 95/98或Windows NT3.51以上版本。VC+ 6.0系统可以在一张CD盘上,也可以在“Visual Studio( Visual C+、Visual Foxpro)”等产品的第一张CD盘上。一般都有一个VC的自动安装程序,也可以执行VC6目录下的setup.exe,在安装包的提示下进行,对初学者可采用“典型安装”方式。在安装好VC 6.0系统后,有时根据需要添加或删除某些部件,可插入CD盘重新执行setup.exe安装程序,安装程序会检测当前系统安装VC6的足件,用户单击“添加删除”按钮后,在“安装维护”对话框中选定要添加的部件
6、或撤消选定要删除的部件。与一般的应用软件一样,有以下两种启动方式:(1)通过“开始”按钮,选择“程序”菜单,然后打开“Microsoft Visual studio 6.0中文版”子菜单中的“Microsoft Visual C+ 6.0 中文版”程序。(2)用户也可以使用命令行启动VC。单击“开始”按钮后选择“运行”命令,在“运行”对话框中输入c:Program FilesMicrosoft Visual StudioVC98VC6.exe(按默认盘符和路径安装)即可。2.2软件、硬件环境 本程序采用Microsoft Visual C+6.0的英文版本进行编译。VisualC+6.0是Mi
7、crosoft公司推出的基于Windows操作系统的可视化C+编程工具,尽管Microsoft公司推出了.NET平台的集成开发环境,但由于其良好的界面和可操作性,加上支持标准C/C+规范,但仍有相当多的编程人员使用VisualC+6.0进行应用系统的开发。3课程设计步骤3.1 Windows消息处理机制的理解首先编写程序需要对Windows程序的消息处理机制有个比较清晰的了解。Windows的程序都是通过消息来传送数据,有不需要用户参与的系统消息,比如异常处理等。3.2界面的设计仿照Windows附件里面的计算器,在Dialog视图中画好界面,主要使用的菜单中的相关控件,并合理布置各个按钮的位
8、置,使界面更加整洁。在各个控件的属性里依次定义好名称,之后屏幕显示的就是如图一样的可视计算器界面:四、课程设计内容 4.1 概要设计 依次将各个功能按钮设置相关的ID和控件类,一下为各类按键的一个举例,以下为数字0的属性设置,及其ID和标题名称,其余数字键属性设置与其相似。下图是清零键C的属性,及其ID和标题名称下图为四则运算加、减、乘、除中“+”的ID和标题名称下图是弧度按键的属性设置下图为计算器中三角函数和反三角函数的属性设置下图是做的一个简单的运算,结果如图中的显示4.2 程序总体框架描述 4.3程序常用类声明按键09的ID设置IDC_BUT0 IDC_BUT1 IDC_BUT2 IDC
9、_BUT3 IDC_BUT4 IDC_BUT5 IDC_BUT6 IDC_BUT7 IDC_BUT8 IDC_BUT9计算类型的ID设置弧度:IDC_HUDU角度:IDC_JIAODU次方的ID设置10x:IDC_BUTTON_10X xy:IDC_XDEY 2x:IDC_2DEX x2:IDC_BUTTON_SQRT三角函数的ID设置sin:IDC_SIN cos:IDC_COS tan:IDC_TAN tanh:IDC_TANH arctan:IDC_ARCTAN arcos:IDC_ARCCOS cosh:IDC_COSH arcsin:IDC_ARCSIN sinh:IDC_SINH四
10、则运算的ID设置+:IDC_BUTTON_ADD : IDC_BUTTON_MINUS *: IDC_BUTTON_MUTIPLY /: IDC_BUTTON_DIV清空、等于、正负号、exp、ln、Log、1/x的ID设置C: IDC_BUTTON_CLEAR =:IDC_BUTTON_EQUAL/: IDC_BUTTON_SIGN exp: IDC_BUTTON_EXP ln: IDC_LN log: IDC_LOG 1/x: IDC_BUTTON_RECI4.4下图是基于基本对话框中的所有函数 4.5 主要代码计算器主要功能的实现:/添加各个按钮的消息响应函数void CCounterD
11、lg:OnBut0() / TODO: Add your control notification handler code here onButtonN(0);/void CCounterDlg:OnBut9() / TODO: Add your control notification handler code here onButtonN(9);/用于显示数据void CCounterDlg:UpdateDisplay(double n)m_display.Format(_T(%f),n); /将double型转换成字符型int i=m_display.GetLength();while
12、(m_display.GetAt(i-1)=0) /格式化输出,将输出结果后的零截去 m_display.Delete(i-1,1); i-; UpdateData(false);/更新编辑框变量m_display/用于数字按钮的调用void CCounterDlg:onButtonN(int n) if( m_coff = 1.0) m_second = m_second*10 + n;/作为整数输入数字时else m_second = m_second + n*m_coff; /作为小数输入数字 UpdateDisplay(m_second);/更新编辑框的数字显示/用于计算结果void
13、CCounterDlg:Calculate(void)/将前一次数据与当前数据进行运算,作为下一次的第一操作数,并在编辑框显示 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)1)return n*jiecheng(n-1);/递归函数求阶乘f(n)=n*f(n-1)/在n!的按钮消息处理里,如果输入的不是整数则不能进行阶乘运算void CCoun
14、terDlg:OnNjiecheng() / TODO: Add your control notification handler code here if(m_second-(int)m_second)0) m_display=(你输入的不是整数,请输入整数!); UpdateData(false);/如果是非整数,则结束运算,重新开始 return; else m_second=(int)jiecheng(m_second); UpdateDisplay(m_second); /次方代码void CCounterDlg:OnButton10x() / TODO: Add your control notification handler code here m_second=pow(10,m_second); UpdateDisplay(m_second); /刷新显示结果 /其余的求次方与之类似5 总结
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1