基于vc++mfc的科学计算器程序实验报告
mfc计算器实验报告
mfc计算器实验报告MFC计算器实验报告引言:MFC(Microsoft Foundation Class)是微软公司开发的一套用于Windows应用程序开发的类库,它提供了一系列的类和函数,方便开发者进行图形界面的设计和开发。
在本次实验中,我们将使用MFC来设计一个简单的计算器应用程序,并通过实验报告来总结我们的设计过程和结果。
1. 实验目的本次实验的主要目的是熟悉MFC框架的使用,了解MFC的基本原理和设计思路,并通过实际操作来掌握MFC应用程序的开发流程。
2. 实验环境本次实验使用的开发环境是Visual Studio 2019,该版本已经集成了MFC开发环境,方便我们进行MFC应用程序的设计和开发。
3. 实验步骤3.1 创建MFC项目首先,我们打开Visual Studio 2019,并选择创建一个新的MFC应用程序项目。
在创建项目的过程中,我们需要选择MFC应用程序向导,并设置一些基本的项目属性,如应用程序名称、目标平台等。
3.2 设计计算器界面在项目创建完成后,我们将进入MFC应用程序的设计界面。
在这个界面中,我们可以通过拖拽和调整控件的方式来设计应用程序的界面。
为了实现一个简单的计算器功能,我们需要添加一些按钮、文本框和标签等控件,并设置它们的属性和事件响应函数。
3.3 实现计算器功能在设计界面完成后,我们需要在代码中实现计算器的功能。
具体来说,我们需要编写一些函数来处理按钮的点击事件,并根据用户的输入来进行相应的计算操作。
在这个过程中,我们可以使用MFC提供的一些数学函数和操作符重载来简化计算的过程。
4. 实验结果经过我们的设计和开发,一个简单的计算器应用程序已经完成了。
在实验过程中,我们测试了该应用程序的基本功能,包括加法、减法、乘法和除法等运算操作,并对一些特殊情况进行了处理,如除数为零等。
实验结果表明,该计算器应用程序在功能和稳定性方面都达到了预期的效果。
5. 实验总结通过本次实验,我们对MFC框架的使用和应用程序的开发流程有了更深入的了解。
C++-MFC计算器编程课程设计实践报告
中南大学本科生课程设计(实践)设计报告(程序设计基础)题MFC编程科学计算器目学生1104120502学号学生郭斌繁姓名指导蔡旭晖教师学院交通运输工程学院专业交通运输类1205班班级计算机基础教学实验中心2013年7月1日程序设计(C++)实践报告1.引言C++语言的主要特点表现在两个方面,一是全面兼容C语言,二是支持面向对象的程序:(1) C++是一个更好的C,它保持了C S言的优点,大多数的C程序代码略作修改或不作修改就可在C++的集成环境下调试和运行。
这对于继承和开发当前已在广泛的软件是非常重要的,可以节省大量的人力和物力。
(2) C++是一种面向对象的程序设计语言它使得程序的各个模块的独立性更强,程序的可读性和可移植性更强,程序代码的结构更加合理,程序的扩充性更强。
这对于设计、编制和调试一些大型的软件尤为重要。
⑶C++集成环境不仅支持C++程序的编译和调试,而且也支持C程序的编译和调试。
通常,C++ 程序环境约定:当源程序文件的扩展名为c.时,则为C程序;而当源程序文件的扩展名为cpp.时,则为C++?序。
(4)C++语句非常简练,对语法限制比较宽松,因此C++语法非常灵活。
其优点是给用户编程带来书写上的方便。
其缺点是由于编译时对语法限制比较宽松,许多逻辑上的错误。
次课程设计主要在运算过程中,如果通过计算器来完成,就会减少计算量,该程序即可以在简单计算器键面下进行简单运算,也可以在科学计算器键面下进行高级的科学计算。
并且可以分别计算弧度、角度的三角函数的计算等较为复杂的运算。
(1).设计目标利用MFC程序开发工具设计一款可以进行简单计算及部分科学计算的计算器。
在设计当中将综合“面向对象程序设计与结构化程序设计”的思想方法和知识点,编制一个小型的应用程序系统。
通过此设计进一步提高自己的动手能力,并能使自己清楚的知道开发一个应用程序的思想、方法和流程。
(2).选题分析此次实践所选题目中除了简单的加减乘除运算程序之外还包括了余弦函数、双曲余弦函数、度分秒的转换和X的y次方及y次根号下x的运算程序。
计算器实验报告
题目:界面计算器学生姓名:专业:学号:指导老师:1.实验目的:设计一个简单的计算器程序,实现简单的计算功能。
2.实验内容:(1)体系设计:程序是一个简单的计算器,能正确输入数据,能实现加、减、乘、除等算术运算,运算结果能正确显示。
(2)设计思路:1)先在Visual C++ 6.0中建立一个MFC工程文件,名为calculator;2)在对话框中添加适当的编辑框、按钮、静态文件、复选框和单选框;3)设计按钮,并修改其相应的ID与Caption;4)选择和设置各控件的单击鼠标事件;5)为编辑框添加double类型的关联变量m_edit1;6)在calculatorDlg.h中添加math.h头文件,然后添加public成员;7)打开calculatorDlg.cpp文件,在构造函数中,进行成员初始化和完善各控件的响应函数代码.3.程序调试4.附录添加的public成员:double tempvalue; //存储中间变量double result; //存储显示结果的值int sort; //判断后面是何种运算:1.加法2.减法 3.乘法 4.除法int append; //判断后面是否添加数字成员初始化:CCalculatorDlg::CCalculatorDlg(CWnd* pParent/*=NULL*/): CDialog(CCalculatorDlg::IDD, pParent){//{{AFX_DATA_INIT(CCalculatorDlg)m_edit1 = 0.0;//}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);tempvalue=0;result=0;sort=0;append=0;}各控件响应函数代码:void CCalculatorDlg::OnButton1() //按钮“1”{// TODO: Add your control notification handler code hereif(append==1)result=0;result=result*10+1;m_edit1=result;append=0;UpdateData(FALSE);void CCalculatorDlg::OnButton2() //按钮“2”{// TODO: Add your control notification handler code hereif(append==1)result=0;result=result*10+2;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnButton3() //按钮“3”{// TODO: Add your control notification handler code hereif(append==1)result=0;result=result*10+3;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnButton4() //按钮“4”// TODO: Add your control notification handler code hereif(append==1)result=0;result=result*10+4;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnButton5() //按钮“5”{// TODO: Add your control notification handler code hereif(append==1)result=0;result=result*10+5;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnButton6() //按钮“6”{// TODO: Add your control notification handler codehereif(append==1)result=0;result=result*10+6;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnButton7() //按钮“7”{// TODO: Add your control notification handler code hereif(append==1)result=0;result=result*10+7;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnButton8() //按钮“8”{// TODO: Add your control notification handler code hereif(append==1)result=0;result=result*10+8;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnButton9() //按钮“9”{// TODO: Add your control notification handler code hereif(append==1)result=0;result=result*10+9;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnBUTTONzero() //按钮“0”{// TODO: Add your control notification handler code hereif(append==1)result=0;result=result*10+0;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnBUTTONequal() //按钮“=”{// TODO: Add your control notification handler code hereswitch(sort){case 1:result=result+tempvalue;break;case 2:result=tempvalue-result;break;case 3:result=result*tempvalue;break;case 4:result=tempvalue/result;break;}m_edit1=result;sort=0;append=1;UpdateData(FALSE);}void CCalculatorDlg::OnBUTTONclean() //按钮“C”{// TODO: Add your control notification handler code heretempvalue=0;result=0;m_edit1=0.0;UpdateData(FALSE);}void CCalculatorDlg::OnBUTTONplus() //按钮“+”{// TODO: Add your control notification handler code heresort=1;tempvalue=result;m_edit1=0;append=1;}void CCalculatorDlg::OnBUTTONminus() //按钮“-”{// TODO: Add your control notification handler code heresort=2;tempvalue=result;m_edit1=0;append=1;}void CCalculatorDlg::OnBUTTONmulti() //按钮“*”{// TODO: Add your control notification handler code heresort=3;tempvalue=result;m_edit1=0;append=1;}void CCalculatorDlg::OnBUTTONdiv() //按钮“/”{// TODO: Add your control notification handler code heresort=4;tempvalue=result;m_edit1=0;append=1;}10。
VC++科学计算器实验报告 2
西安科技大学计算机学院VC++程序设计实验报告题目科学计算器学号专业及班级计科0804姓名日期 2010-11-03一、实验内容1.实验目的:(1)通过对科学计算器的实现掌握MFC的CDialog类和其他运行机制,掌握各种控件的使用。
(2)学习使用对话框实现人机交互功能。
2.实验步骤:(1)打开Microsoft Visual C++ 6.0,在文件中点击新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名ex5及其所在位置,点击确定,如图1-1所示。
图1-1 新建MFC AppWizard[exe]工程(2)将弹出MFC AppWizard-step 1对话框,选择基本对话框,点击完成,如图1-2所示。
图1-2基本对话框(3)这样,MFC AppWizard就建立了一个基于对话窗口的程序框架,如图1-3所示。
图1-3新建的对话框(4)界面设计界面设计主要是创建控件,在图1-3所示的Resoure View选项卡中打开Dialog资源组,双击IDD_ex5_DIALOG,在右边的窗口中显示出待编辑的对话框。
开始摆放控件,包括编辑框和按钮的创建。
按钮的创建以“1”为例进行介绍,其他按钮的创建可参照此进行操作。
1)在图1-4中Controls的“编辑框”按钮上单击鼠标左键,在对话框编辑窗口上合适的位置按下鼠标左键并拖动鼠标画出一个大小合适的编辑框。
在编辑框上单击鼠标右键,在弹出的快捷莱单中选择属性选项,此时弹出Edit属性对话框,如图4-4所示,在该对话框中输入ID属性。
图1-4 Edit属性对话框2)在图1-4中Controls的“Button”按钮上单击鼠标左键,在对话框上的合适的位置上按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。
在按钮上单击鼠标右键,在弹出的快捷菜单中选择属性选项,此时也弹出Push Button属性对话框,如图1-5所示,在该对话框中输入控件的ID值和标题属性。
VC之基于MFC的简易计算器
程序设计报告课程名称:面向对象技术与Visual C++ 设计题目:基于MFC的简易计算器专业:信息与计算科学班级:信122 姓名:学号:2012314233任课教师:二○一五年五月注:本设计报告中各个部分如果页数不够,请大家自行扩页,原则是一定要把报告写详细,能说明设计的成果和特色。
报告中应该叙述设计中的每个模块。
三、系统分析与设计1系统功能1.1系统功能图1.2系统功能划分1.2系统功能划分对象ID 标题或说明编辑框IDC_EDIT2 显示按钮IDC_BUTTON10 0按钮IDC_BUTTON1 1按钮IDC_BUTTON2 2按钮IDC_BUTTON3 3按钮IDC_BUTTON4 4按钮IDC_BUTTON5 5按钮IDC_BUTTON6 6按钮IDC_BUTTON7 7按钮IDC_BUTTON8 8按钮IDC_BUTTON9 9按钮IDC_point .按钮IDC_BUTTON13 +按钮IDC_BUTTON14 -按钮IDC_BUTTON15 *按钮IDC_BUTTON16 /按钮IDC_Btn_sqrt sqrt按钮IDC_Btn_lg lg按钮IDC_Btn_jiecheng n!按钮IDC_Btn_sin sin按钮IDC_Btn_cos cos按钮IDC_Btn_tan tan按钮IDC_Btn_erjinzhi 二进制按钮 IDC_BUTTON12 = 按钮IDC_BUTTON18CE2系统流程图1.3 计算器界面1.4总体代码(1)数字键代码(仅以1为例) void CJisuanqiDlg::OnButton1() { num[i]=num[i]+"1";开始输入数据加法减法乘法除法求开方求对数求阶乘求正弦求余弦求正切输入第二个数据 结果进制转换结束五、系统运行报告(测试的结果)(1)加法(2)减法(3)乘法(4)除法(5)二进制(6)正弦(7)余弦(8)正切(9)对数(10)阶乘(11)开方。
基于mfc的计算器实践报告(vs2010)
目录1 基本功能描述 (2)2 设计思路 (2)3 软件设计 (5)3.1 设计步骤 (5)3.2 界面设计 (6)3.3 关键功能的实现 (8)4 结论与心得体会 (8)5 附录 (9)5.1 调试报告 (9)5.2 测试结果 (9)5.3 关键源代码 (10)1 基本功能描述简单计算器包括双目运算和单目运算功能。
双目运算符包含基本的四则运算及乘幂功能,单目运算符包含正余弦,阶乘,对数,开方,倒数等运算。
可对输入任意操作数,包括小数和整数及正数和负数进行以上的所有运算并能连续运算。
出现错误会给出相应提示,同时包含清除,退格,退出功能以及有与所有按钮相对应的菜单项。
2 设计思路如图是整个计算器的流程图,打开计算器程序,输入数据,调用输入数据子程序。
子程序开始时m_num为零。
按下数字按钮后,判断m_num的正负号,对其进行相关处理,然后在判断是否有小数点,处理后输出结果。
回到总流程图中,输完第一个操作数后,若按下双目运算符,则把m_num 存入num1,按下输入第二个操作数并算出结果。
若按下的是单目运算符,则直接对其处理得出结果。
若按下清零,则m_num等于0.在运算中还要判断运算是否合法,以及结果是否超出显示范围,以做出相关提示,按下清零。
算出后把结果保存至num1。
若需用算出的结果继续运算则回到输入完第一个操作数后,若不需要则判断试否需要开始新一轮的运算,不需要则结束。
输入数据子函数N图1 输入数据子函数流程图突起图2 简单计算器总流程图3.1 设计步骤打开Microsoft Visual Studio2010,在文件中点击新建,在弹出框内选择MFC 应用程序工程,输入工程名Calculate及其所在位置,点击确定,如图3所示。
图3 新建MFC应用程序工程这样在MFC应用程序下建立了一个基于对话窗口的程序框架,如图4所示。
图4 新建的对话框1、创建控件在图4所示的在资源视图选项卡中打开Calculate资源组,双击IDD_Calculate_DIALOG,在右边的窗口中显示出待编辑的对话框。
C++-MFC计算器编程课程设计实践报告
中南大学本科生课程设计(实践)设计报告(程序设计基础)题MFC编程科学计算器目学生1104120502学号学生郭斌繁姓名指导蔡旭晖教师学院交通运输工程学院专业交通运输类1205班班级计算机基础教学实验中心2013 年 7 月1日程序设计(C++)实践报告1.引言C++语言的主要特点表现在两个方面,一是全面兼容C语言,二是支持面向对象的程序:(1)C++是一个更好的C,它保持了C语言的优点,大多数的C程序代码略作修改或不作修改就可在C++的集成环境下调试和运行。
这对于继承和开发当前已在广泛的软件是非常重要的,可以节省大量的人力和物力。
(2)C++是一种面向对象的程序设计语言它使得程序的各个模块的独立性更强,程序的可读性和可移植性更强,程序代码的结构更加合理,程序的扩充性更强。
这对于设计、编制和调试一些大型的软件尤为重要。
(3)C++集成环境不仅支持C++程序的编译和调试,而且也支持C程序的编译和调试。
通常,C++程序环境约定:当源程序文件的扩展名为c.时,则为C程序;而当源程序文件的扩展名为cpp.时,则为C++程序。
(4)C++语句非常简练,对语法限制比较宽松,因此C++语法非常灵活。
其优点是给用户编程带来书写上的方便。
其缺点是由于编译时对语法限制比较宽松,许多逻辑上的错误。
次课程设计主要在运算过程中,如果通过计算器来完成,就会减少计算量,该程序即可以在简单计算器键面下进行简单运算,也可以在科学计算器键面下进行高级的科学计算。
并且可以分别计算弧度、角度的三角函数的计算等较为复杂的运算。
(1).设计目标利用MFC程序开发工具设计一款可以进行简单计算及部分科学计算的计算器。
在设计当中将综合“面向对象程序设计与结构化程序设计”的思想方法和知识点,编制一个小型的应用程序系统。
通过此设计进一步提高自己的动手能力,并能使自己清楚的知道开发一个应用程序的思想、方法和流程。
(2).选题分析此次实践所选题目中除了简单的加减乘除运算程序之外还包括了余弦函数、双曲余弦函数、度分秒的转换和X的y次方及y次根号下x的运算程序。
VC版科学计算器程序实验报告
西安科技大学《程序设计方法与优化》实验报告题目科学计算器院、系(部)计算机科学与技术学院专业及班级软件工程1101班姓名张XX 日期 2013/04/24一.功能需求:1.能进行加、减、乘、除运算:这时最基本的计算器功能。
2.还能进行以下的数值计算:函数名:ln在数学中ln(x)是以e为底的x的对数。
e是一个常数函数名: exp功能: 指数函数exp就是以e为底的指数,exp(0)=1, exp(1)=e, exp(2)=en!代表一个数的阶乘,例如:5!就是5*4*3*2*1;sta代表统计算法;x^3代表x的3次方;x^y代表x的y次方。
sin正弦,cos余弦,tan正切,dms度分秒切换Lsh左移ln自然对数,F-E科学计数法开关,Xor异或,Int整数部分,Exp允许输入用科学计数法表示的数字1/x倒数,log常用倒数mod余数Pi是圆周率,Exp是科学计数法exp代表以e为幂指数函数例如:exp10就是e的10次方;ln是以e为底的对数函数例如:ln10就是以e为底10的对数;M+是计算结果并加上已经储存的数;M-是计算结果并用已储存的数字减去目前的结果;MR是读取储存的数据;MC是清除储存数据;AC,CE归零是有一个是清除现有数据重新输入,另一个是清除全部数据结果和运算符.数学计算度量衡换算百度计算器为用户提供常用的数学计算功能。
您可在任何地方的网页搜索栏内,输入需要计算的数学表达式(例如:3+2),点击搜索,即可获得结果。
百度计算器支持实数范围内的计算,支持的运算包括:加法(+或+),减法(-或-),乘法(*或×),除法(/),幂运算(^),阶乘(!或!)。
支持的函数包括:正弦,余弦,正切,对数。
支持上述运算的混合运算。
例:加法:3+2减法:3-2乘法:3*2除法:3/2阶乘:4! 4的阶乘电脑自带计算器开根号:1,调到科学型。
2,开方:(1)选一下INV这个。
(2)按一个数字。
计算器实验报告
Check(); UpdateData(false); } if(m_flag==4) { temp=temp/atof(m_s); m_s.Format("%lf",temp); Check(); UpdateData(false); } } 响应按钮清零‘CE’ void CCyyJSQDlg::OnCe() { m_s=" "; UpdateData(false); } 响应按钮乘‘*’ void CCyyJSQDlg::OnMul() { m_flag=3; UpdateData(true); temp=atof(m_s); m_s=" "; UpdateData(false); } 响应按钮除‘/’ void CCyyJSQDlg::OnDiv() { m_flag=4; UpdateData(true); temp=atof(m_s); m_s=" "; UpdateData(false); } 响应按钮倒数‘1/x’ void CCyyJSQDlg::OnDaoshu()
图所示。 (3)单击Next按钮,弹出MFC AppWinzard_Step2 of4对话框,如图所示。 (4)单击Next按钮,弹出MFC AppWinzard_Step3 of4对话框,如图所示。 (5)单击Next按钮,弹出MFC AppWinzard_Step4 of4
对话框,如图所示。单击Finish按钮,创建框 架。
{ UpdateData(true); temp=atof(m_s); m_s.Format("%lf",temp*atof(m_s)/100);
UpdateData(false); } 响应按钮清零‘C’ void CCyyJSQDlg::OnC() {
VC++实验报告模板
VC++ 课程实验报告专业班级:地图学与地理信息系统研09级10班学号:200910492报告人:吴少华VC++课程实验报告一、实验题目:科学计算器程序应用VC++语言的实现。
二、功能描述:科学计算器可以使用对话框(dialog box)实现,对话框是Windows应用程序中的一种常用的输入、输出界面,是用户与应用程序进行交互的窗口。
为了方便实现对话框功能,MFC提供了一系列对话框类,其中最重要的对话框类是Cdialog类。
本次实验的目的就是掌握 MFC 的CDialog 类和其运行机制,并同时掌握几种常用控件的使用。
三、算法设计与实验步骤本实验的任务是实现一个科学计算器,该计算器具有加减乘除平方以及一些三角运算功能。
该计算器具体实现步骤如下:(1)启动 AppWizard,建立一个基于对话框的 MFC 应用程序 Calculator。
(2)修改对话框资源,按图1的方式添加控件对象。
Edit 的ID是IDC_EDIT_PUTOUT,风格属性是 Number 和 Read-Only,在“Extended Styles”属性中选择“RightAligned Text”。
表1是按钮控件的 ID 标识和标题。
图1 编辑对话框资源界面(3)在对话框类的头文件(CalculatorDlg.h)中添加用于数学计算的头文件:#include "math.h"(4)添加按钮消息映射,在对话框类的定义中添加如下函数声明:afx_msg void OnNumberKey(UINT nID);//处理数字键单击事件的消息响应函数afx_msg void OnOperationKey(UINT nID);//处理操作键单击事件的消息响应函数(5)在对话框的实现文件消息映射中添加如下代码:BEGIN_MESSAGE_MAP(CCalculatorDlg, CDialog)//{{AFX_MSG_MAP(CCalculatorDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()//}}AFX_MSG_MAP//添加代码ON_COMMAND_RANGE(IDC_NUMBER1,IDC_NUMBER_Dot,OnNumberKey)ON_COMMAND_RANGE(IDC_NUMBER_BackSpace,IDC_NUMBER_PI,OnOperationKe y)END_MESSAGE_MAP()(6)在对话框的实现文件中添加 OnNumberKey(UINT nID)和 OnOperationKey(UINT nID)的实现代码。
mfc计算器实验报告
C++程序设计设计性实验报告实验项目名称:高级计算器设计与开发专业班级:;姓名:;学号:实验起止日期:起于年月日止于年月日实验目的:学会用C++语言和数据结构知识实现表达式的解析与计算;学会使用动态链接库技术进行编程;学会编辑、编译、运行MFC应用程序的基本过程.学会MFC可视化编程技术。
实验要求:1.能完成双精度型数值的加、减、乘、除计算;编程中使用了动态连接库技术.2.能完成双精度型数值的加、减、乘、除计算;编程中使用了动态连接库技术;能实现表达式的输入,解析与计算实验内容:1.C++语言的顺序结构,分支结构,循环结构,函数,结构体,指针,MFC可视化编程技术。
2.数据结构中的二叉树数据组织、存贮、后序遍历及其操作。
3. 使用动态链接库进行函数模块的设计,实现计算功能。
实验具体方案:按照系统设计要求,用Visual C++设计和开发一个MFC应用程序---高级计算器。
计算器的界面设计、计算功能实现、算式计算和动态链接库的使用等。
提交由需求分析:系统设计说明、系统技术文档、系统使用说明书和源程序代码为附录构成的实验报告。
需求分析:系统设计说明1.计算器界面计算器界面包括主题“高级计算器”和背景图片以及电子日历。
在计算区上有显示文本框和数字按钮以及运算符按钮。
在计算区上部分有运算模式选择模块和小提示语句。
2.模块功能简介系统分为多个模块,分别为计算模块、错误分析模块、界面显示模块和模式选择模块。
其中计算模块用来进行各种基本的加、减、乘、除的运算并且显示运算结果;错误分析模块用来进行错误处理;界面显示模块用来美化计算器界面;模式选择模块用来进行运算模式的选择和切换,以实现不同的运算要求。
3.系统结构图系统技术文档1.系统各模块主要流程图(1) 单步运算流程图(2) 算式运算流程图2.软件总体测试方案与测试记录运行程序,然后查看计算器界面和设计是否相同,进行运算模式的切换,看是否能正确的进行模式切换,查看日历显示是否正确。
基于MFC的科学计算器课程设计实验报告
课程设计实验报告题目学院专业班级课程名称学号学生姓名指导教师成绩二○一三年一月目录1 概述1.1 课程设计目的1.2 课程设计内容1.3 课程设计思想2 系统需求分析2.1 系统目标2.2 主体功能2.3 开发环境3 系统概要分析3.1 设计步骤3.2 界面设计3.3 主要代码4 结论与心得体会4.1 遇到的问题与解决方法4.2 心得5 附录5.1 测试5.2 程序源代码1 概述1.1课程设计目的《面向对象程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。
其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用C++语言进行面向对象设计的基本方法,提高运用面向对象方法分析实际问题、解决实际问题的能力。
1、巩固并加深学生对C++语言程序设计知识的理解;2、培养学生面向对象的程序设计思想,使学生认识面向过程和面向对象两种设计方法的区别;3、进一步掌握和应用VS 2010集成开发环境;4、提高运用C++语言解决实际问题的能力;5、掌握书写程序设计开发文档的能力(书写课程设计实验报告)。
1.2课程设计内容课题名称:功能齐全的计算器说明:利用MFC实现一个功能齐全的计算器要求:1、实现的基本功能有:加、减、乘、除、计算带括号的运算式;2、扩展功能有开平方、求三角函数、阶乘、自然底数e的幂、10的幂和普通数的幂、进制的转化等;3、输入的原始数据、运算中间数据和结果都显示在窗口顶部的同一个编辑框中;4、计算功能基本上是用系统内部函数;5、“归零”按钮可以清除所有已输入的数据从头计算;6、“←”按钮可以退位。
1.3课程设计思想如流程图1所示,先在编辑框中输入运算式,通过IsChar()函数判断表达式中是否有复杂的运算符。
若无,则进行简单的双目运算;若有,则通过String_Replace()函数将IsChar()函数无法识别的运算符或字符用一定方式或浮点数替换,再进行简单的双目运算。
MFC实训_计算器
面向对象程序设计实训报告——简易计算器专业:电子信息工程学生姓名:唐伯虎学号: 9527指导教师:小行星2016年1月7 日1 总体设计1.1 设计任务使用Visual C++6.0 MFC编写一个计算器。
1.2 基本要求(1)按照题目要求独立设计计算器所需的所有按钮,并完成程序源码编写、调试及关键代码注释。
(40分)(2)能够实现+、-、*、/计算。
(10分)(3)能够实现对数及幂函数计算。
(15分)(4)能够实现三角函数及反三角函数计算。
(15分)1.3 发挥部分能够实现8,16,10,2进制之间相互转换。
(20分)2 方案设计2.1 需求性分析所谓计算器,就是要进行数值运算,提供1-9数字按键,让用户按下不同的数字键,可以是组合输入,然后再按下运算符按键实现两个或者多个数值的计算,因此在计算器中除了需要定义数字按键之外运算符按键也是必不可少的,但是运算符按键类型众多,实现的功能也是五花八门,有双目运算符,比如+ - * /这些,也有单目运算符,比如x^2,ln,sqrt,所针对的数字个数也不一样,因此在设计计算器之前需要明确好该计算器大致要实现怎样的功能,需要定义多少个按键,而不是什么按键都要添加,企图复杂化,这样一来,就会造成很多麻烦。
应该先从四则运算开始,然后逐一增加功能,循序渐进的进行,根据题目的要求,划分好制作的步骤先后顺序。
我在基本的要求基础上希望添加几个功能,分别是清除按键,这是少不了的,作用是初始化数据,清屏,然后是退格按键,在输入错误的情况下能够实现退格再输入;再次是Ans按键,用以保留上一次的运算结果,以备下次运算时需要;最后是圆周率PI,在需要用到圆周运算时不用输入3.1415……这么长的一段数值……但是这都是在完成基本功能的基础上添加的功能。
2.2 可行性分析本设计是简单计算器。
日常计算机使用中,常常涉及到一些有关计算的问题,一个小型的计算器软件变得非常有用,该校型计算器需要空间资源较少,对电脑其他程序的应用影响较小。
VC++MFC计算器课程设计
Windows程序设计作业报告设计题目:MFC计算器系别:信息与自动化工程专业:电子与通信工程姓名:高小雨学号:2013704011一、设计目的及要求1.1设计目的能够熟练掌握MFC中的各个控件,消息的处理与添加,能够独立完成一些简单的算法,并且能够具体实现一些功能,真正可以利用功能比较强大的MFC 编译出较好的程序代码。
本设计完成的是一个具有比较齐全运算功能的计算器。
1.2设计要求利用Microsoft Visual C++的MFC制作一个多功能计算器,要求:(1)能够实现最基本的加、减、乘、除四则基本运算;(2)添加了计算类型,分别是弧度制、度数制;(3)界面有正负、清空、等于方便用户计算使用;(4)重点是此计算器具有倒数、多次方、开方、三角函数、反三角函数、指数、阶乘等高级运算。
1.3软件、硬件环境本程序采用Microsoft Visual C++6.0的英文版本进行编译。
VisualC++6.0是Microsoft公司推出的基于Windows操作系统的可视化C++编程工具,尽管Microsoft公司推出了.NET平台的集成开发环境,但由于其良好的界面和可操作性,加上支持标准C/C++规范,但仍有相当多的编程人员使用VisualC++6.0进行应用系统的开发。
二、课程设计步骤2.1 Windows消息处理机制的理解首先编写程序需要对Windows程序的消息处理机制有个比较清晰的了解。
Windows的程序都是通过消息来传送数据,有不需要用户参与的系统消息,比如异常处理等。
2.2界面的设计仿照Windows附件里面的计算器,在Dialog视图中画好界面,主要使用的菜单中的相关控件,并合理布置各个按钮的位置,使界面更加整洁。
在各个控件的属性里依次定义好名称,之后屏幕显示的就是如图一样的可视计算器界面:三、课程设计内容3.1 概要设计依次将各个功能按钮设置相关的ID和控件类,一下为各类按键的一个举例,以下为数字0的属性设置,及其ID和标题名称,其余数字键属性设置与其相似。
计算器的实验报告
计算器的实验报告邮电与信息工程学院课程设计说明书课题名称:mfc制作简单计算器系统软件综合设计学生学号:1002030218专业班级:计算机科学与技术02班学生姓名:孙志宏指导教师:杨玉蓓一.题目:利用MFC框架编写简易计算器要求使用MFC框架在Visual Studio 6.0环境下编写一个简易的计算器,支持任意位数的加减乘数,正负转换,并且实现BackSpace CE C功能。
二.设计过程1.Windows消息处理机制的理解首先编写程序需要对Windows程序的消息处理机制(Message Handle)有个比较清晰的了解。
Windows 的程序都是通过消息来传送数据,有不需要用户参与的系统消息,比如异常处理等。
还有用户消息,比如鼠标的单击,双击,键盘的键入等。
界面的设计仿照Windows附件里面的计算器,在资源视图中画好界面,如图:主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。
拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。
2.建立的变量,控件的命名,对应的消息处理函数对应表3变量定义,以及初始化long int iFirst,a; 定义两个长整型变量ifirst,aint iType; 定义整形变量iTypelong int iRet=0; 定义一个长整型变量iRet并初始化4设计思路1我制作的是简单的计算器,可以加减乘除,以及清零。
所以我们先应把计算器的界面设计出来。
分数字键和功能键2数字键0,1,2,3,4,5,6,7,8,9这10个命令按钮控制的数字键,在编写数字键代码时,我考虑了比如111的输出,我们可以用m_edit=m_edit*10+n(n代表你下一步所需按的键),这样你当前的文本框会显示出你想得到的数,还有我们输入的都是数字,所以我采用的是长整型输入数据3功能键+-*/以及清零键CE,其中这里我们这些功能键并不是直接来运行的而是把他们当作一种标志分别标志为1234,真正执行运算功能的是等于键=4等于键= 这里我们采用swich cash语句来执行运算的功能的,当读到标志为1时,即为加法,执行加法功能。
基于mfc的计算器实践报告(vs2010)
基于mfc的计算器实践报告(vs2010)⽬录1 基本功能描述 (2)2 设计思路 (2)3 软件设计 (5)3.1 设计步骤 (5)3.2 界⾯设计 (6)3.3 关键功能的实现 (8)4 结论与⼼得体会 (8)5 附录 (9)5.1 调试报告 (9)5.2 测试结果 (9)5.3 关键源代码 (10)1 基本功能描述简单计算器包括双⽬运算和单⽬运算功能。
双⽬运算符包含基本的四则运算及乘幂功能,单⽬运算符包含正余弦,阶乘,对数,开⽅,倒数等运算。
可对输⼊任意操作数,包括⼩数和整数及正数和负数进⾏以上的所有运算并能连续运算。
出现错误会给出相应提⽰,同时包含清除,退格,退出功能以及有与所有按钮相对应的菜单项。
2 设计思路如图是整个计算器的流程图,打开计算器程序,输⼊数据,调⽤输⼊数据⼦程序。
⼦程序开始时m_num为零。
按下数字按钮后,判断m_num的正负号,对其进⾏相关处理,然后在判断是否有⼩数点,处理后输出结果。
回到总流程图中,输完第⼀个操作数后,若按下双⽬运算符,则把m_num 存⼊num1,按下输⼊第⼆个操作数并算出结果。
若按下的是单⽬运算符,则直接对其处理得出结果。
若按下清零,则m_num等于0.在运算中还要判断运算是否合法,以及结果是否超出显⽰范围,以做出相关提⽰,按下清零。
算出后把结果保存⾄num1。
若需⽤算出的结果继续运算则回到输⼊完第⼀个操作数后,若不需要则判断试否需要开始新⼀轮的运算,不需要则结束。
输⼊数据⼦函数N图1 输⼊数据⼦函数流程图突起图2 简单计算器总流程图3.1 设计步骤打开Microsoft Visual Studio2010,在⽂件中点击新建,在弹出框内选择MFC 应⽤程序⼯程,输⼊⼯程名Calculate及其所在位置,点击确定,如图3所⽰。
图3 新建MFC应⽤程序⼯程这样在MFC应⽤程序下建⽴了⼀个基于对话窗⼝的程序框架,如图4所⽰。
图4 新建的对话框1、创建控件在图4所⽰的在资源视图选项卡中打开Calculate资源组,双击IDD_Calculate_DIALOG,在右边的窗⼝中显⽰出待编辑的对话框。
基于vc++mfc的科学计算器程序实验报告
实验报告课程名称:windows软件开发实习实验项目:科学计算器沈阳工业大学实验报告(适用计算机程序设计类)专业班级:软件1006 学号:101201622 姓名:张鑫可实验名称:A沈阳工业大学实验报告(适用计算机程序设计类)专业班级:软件1006学号:101201622姓名:张鑫可实验步骤或程序:一、关于Visual C++:Visual C++6.0由Microsoft开发, 它不仅是一个C++ 编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。
Visual C++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。
这些组件通过过一个名为Developer Studio的组件集成为和谐的开发环境。
Microsoft的主力软件产品。
Visual C++是一个功能强大的可视化软件开发工具。
自1993年Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具。
虽然微软公司推出了Visual C++.NET(Visual C++7.0),但它的应用的很大的局限性,只适用于Windows 2000,Windows XP和Windows NT4.0。
所以实际中,更多的是以Visual C++6.0为6平台。
Visual C++6.0以拥有“语法高亮”,自动编译功能以及高级除错功能而著称。
比如,它允许用户进行远程调试,单步执行等。
还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。
其编译及创建预编译头文件(stdafx.h)、最小重建功能及累加连结(link)著称。
这些特征明显缩短程序编辑、编译及连结的时间花费,在大型软件计划上尤其显著。
二、设计要点1、基本要求:设计的系统界面要美观大方,操作合理,有必要的提示。
MFC计算器设计实验报告.
计算机学院课程设计报告课程名称:面向对象程序设计课程设计课程设计题目:基于Winform的多功能计算器的设计与实现姓名:专业:软件工程年级:08软件学号:指导教师:2010年12 月20 日目录1.设计目的 (3)2.设计要求 (3)3.设计方案 (3)(1)计算器的用例图: (3)(2)计算器的类图: (6)(3)计算器的顺序图: (6)(4)计算器协作图 (7)(5)计算器的状态图: (7)(6)计算器的活动图: (8)(7)计算器系统框图: (8)4设计内容: (9)(1)创建工程: (9)(2) 设计用户界面 (9)(3)添加代码 (11)5 测试结果: (15)6 总结: (17)7.参考文献: (17)1.设计目的利用C++语言,编写一个类似windows XP系统的计算器,实现计算器的基本功能,从而利用这次的设计,达到更加了解C++语言,了解面向对象的设计方法,加深对面向对象设计过程的了解等目的。
2.设计要求(1)利用面向对象的知识并参照Windows XP系统附件下的“科学型计算器”设计开发一个多功能的计算器;(2)不限制采用的开发平台和编程语言;(3)要求用UML描述设计过程;(4)要求用系统/程序运行时的截图描述实现的测试过程,系统的功能说明;(5)用原代码(加注释)描述主要的功能实现过程及算法;(6)提交纸质打印课程设计报告及项目工程原代码(所有人刻录在一张光碟中,两份,一份用以存档)。
3.设计方案(1)计算器的用例图:用例名称:四则运算。
参与执行者:用户。
前置条件:计算器已开启。
主事件流:用户输入操作数一。
用户选择加、减、乘、除四则运算中的一种算法。
用户输入操作数二,计算出结果,作为下一次计算的操作数一。
后置条件:显示计算结果。
用例名称:三角函数。
参与执行者:用户。
前置条件:计算器已开启。
主事件流:用户输入操作数一。
选择所要操作的三角函数,计算出结果。
所得的结果作为下一次计算的操作数一。
MFC下的科学计算器
《VC++程序设计》实验报告题目科学计算器院、系(部)计算机科学与技术学院专业及班级学号姓名日期2012年11月11日1 题目要求仿照Windows系统自带计算器做的一个小型科学计算器。
2 功能需求整个系统具有的功能:响应各个数字键,实现加、减、乘、除、x^y、lnx、x!、sinx、cosx、tanx、二进制、二进制转换八进制、清空、求倒数等基本功能;3 总体设计3.1 系统模块3.2 系统业务处理流程整体流程图4 详细设计1)在对话框类的头文件“CalculatorDlg.h”头部添加:#include "math.h“2)在对话框类的定义中添加下列函数声明:afx_msg void OnNumberKey(UINT nID);//处理数字键单击事件的消息响应函数afx_msg void OnOperationKey(UINT nID);//处理操作键单击事件的消息响应函数3)在对话框的可执行文件的消息映射中添加如下代码:ON_COMMAND_RANGE(IDC_NUMBER1,IDC_NUMBER10,OnNumberKey)ON_COMMAND_RANGE(IDC_NUMBER_PlusMinus,IDC_NUMBER_Equal ,OnOperationKey)4)在对话框的可执行文件中添加OnNumberKey(UINT nID)和OnOperationKey(UINT nID)的实现代码5)在对话框类中定义如下变量:double number1,number2;//number1和number1用于存储将要进行运算的数字int NumberState,OperationState;//NumberState用于标示是将数值赋给number1或是number1//OperationState用于表示计算器所要执行的操作6)为IDC_EDIT_PUTOUT添加映射变量m_Cnumber7)在对话框的构造函数中初始化变量m_number = 0.0;NumberState=1;8)为对话框添加计算函数void cal(),用于计算void CCalculatorDlg::cal() //计算函数{m_number=atof(m_Cnumber);switch(OperationState){case 1:m_number=(double)number1/number2; NumberState=1;m_Cnumber.Format("%g",m_number); UpdateData(FALSE);break;case 2:m_number=number1*number2;NumberState=1;m_Cnumber.Format("%g",m_number); UpdateData(FALSE);break;case 3:m_number=number1+number2;NumberState=1;m_Cnumber.Format("%g",m_number); UpdateData(FALSE);break;case 4:m_number=number1-number2;NumberState=1;m_Cnumber.Format("%g",m_number); UpdateData(FALSE);break;case 5:m_number=pow(number1,number2);NumberState=1;m_Cnumber.Format("%g",m_number); UpdateData(FALSE);break;}number1=m_number;OperationState=0;}9)OnNumberKey(UINT nID)函数void CCalculatorDlg::OnNumberKey(UINT nID) {CString n;switch (nID){case IDC_BUTTON1:n="1";break;case IDC_BUTTON2:n="2";break;case IDC_BUTTON3:n="3";break;case IDC_BUTTON4:n="4";break;case IDC_BUTTON5:n="5";break;case IDC_BUTTON6:n="6";break;case IDC_BUTTON7:n="7";break;case IDC_BUTTON8:n="8";break;case IDC_BUTTON9:n="9";break;case IDC_BUTTON0:n="0";break;}if (NumberState==1){m_Cnumber=m_Cnumber+n;number1=atof(m_Cnumber);UpdateData(FALSE);}else{m_Cnumber=m_Cnumber+n;number2=atof(m_Cnumber);UpdateData(FALSE);}//处理除数为零的情况,如果显示除,则零按钮不显示,否则显示if (Zero=FALSE){Zero=TRUE;m_Zero.ShowWindow(SW_SHOW);}else{m_Zero.ShowWindow(SW_SHOW);}}10)OnOperationKey(UINT nID)函数void CCalculatorDlg::OnOperationKey(UINT nID){m_number=atof(m_Cnumber);switch(nID){case IDC_BUTTON_PlusMinus:m_number=-m_number;if (NumberState==1){number1=m_number;}else{number2=m_number;}m_Cnumber.Format("%g",m_number);UpdateData(FALSE);case IDC_BUTTON_BackSpace:int n;n=m_Cnumber.GetAllocLength();m_Cnumber=m_Cnumber.Left(n-1);UpdateData(FALSE);break;case IDC_BUTTON_Divide:cal();if (Zero=TRUE){m_Zero.ShowWindow(SW_HIDE);Zero=FALSE;}OperationState=1;m_number=0;m_Cnumber="";NumberState=2;break;case IDC_BUTTON_Multiply:cal();OperationState=2;m_number=0;m_Cnumber="";NumberState=2;break;case IDC_BUTTON_Add:cal();OperationState=3;m_number=0;m_Cnumber="";NumberState=2;case IDC_BUTTON_Subtract:cal();OperationState=4;m_number=0;m_Cnumber="";NumberState=2;break;case IDC_CIFANG:cal();OperationState=5;m_number=0;m_Cnumber="";NumberState=2;break;case IDC_BUTTON_Clear:number1=number2=m_number=0;m_Cnumber.Format("%g",m_number);UpdateData(FALSE);m_Cnumber="";NumberState=1;break;case IDC_BUTTON_Sqrt:number1=m_number=sqrt(number1);m_Cnumber.Format("%g",m_number);UpdateData(FALSE);break;case IDC_BUTTON_Derivative:number1=m_number=(double)1/number1;m_Cnumber.Format("%g",m_number);UpdateData(FALSE);break;case IDC_BUTTON_Equal:cal();break;}}11)添加剩余的操作按键,(此处只写一个,如tan(),cos(),n!,x^y等详细函数看源代码void CCalculatorDlg::OnSin(){// TODO: Add your control notification handler code herem_number=atof(m_Cnumber);m_number=sin(m_number*3.1415926/180);m_Cnumber.Format("%g",m_number);UpdateData(FALSE);}12)二进制转换核心代码void CCalculatorDlg::OnBinary(){// TODO: Add your control notification handler code hereconst int size=sizeof(int)*8; //转换成4*8=32位二进制char str[size+1]; //来存储二进制转换结果m_number=atof(m_Cnumber);bit(m_number,str,size);m_Cnumber.Format("%s",str);UpdateData(FALSE);}char *CCalculatorDlg::bit(int m_number,char*array,int size){for(int i=size-1;i>=0;i--,m_number>>=1) //m_number>>=1向右移一位array[i]='0'+(1&m_number); //判断每一位是0还是1 array[size]='\0';return array;}13)二进制转换八进制核心代码void CCalculatorDlg::OnOctal(){// TODO: Add your control notification handler code hereUpdateData(TRUE);int i,j,m;int sum;sum=0;m = m_Cnumber.GetLength();for(i=m-1; i>=0; i-- )sum+= ((m_Cnumber[i]-'0')<<(m-i-1));//<<是位操作符,表示二进制数向左移位,如001变为010,等效于sum+=((s[i]-'0')*2^(m-i-1));这样应该清楚了,如0101==0*2^3+1*2^2+0*2^1+1*2^0;即转为十进制if(sum==0){m_Cnumber = "0";}int a[10];i=0;while(sum){a[i]=sum%8;//这部分是十进制转八进制的,原理同上。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告课程名称:windows软件开发实习实验项目:科学计算器工业大学实验报告(适用计算机程序设计类)专业班级:软件1006 学号:101201622 姓名:鑫可实验名称:附件A 工业大学实验报告(适用计算机程序设计类)专业班级:软件1006 学号:101201622 姓名:鑫可实验步骤或程序:一、关于Visual C++:Visual C++6.0由Microsoft开发, 它不仅是一个C++ 编译器,而且是一个基于Windows 操作系统的可视化集成开发环境(integrated development environment,IDE)。
Visual C++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。
这些组件通过过一个名为Developer Studio的组件集成为和谐的开发环境。
Microsoft的主力软件产品。
Visual C++是一个功能强大的可视化软件开发工具。
自1993年Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具。
虽然微软公司推出了Visual C++.NET(Visual C++7.0),但它的应用的很大的局限性,只适用于Windows 2000,Windows XP和Windows NT4.0。
所以实际中,更多的是以Visual C++6.0为6平台。
Visual C++6.0以拥有“语法高亮”,自动编译功能以及高级除错功能而著称。
比如,它允许用户进行远程调试,单步执行等。
还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。
其编译及创建预编译头文件(stdafx.h)、最小重建功能及累加连结(link)著称。
这些特征明显缩短程序编辑、编译及连结的时间花费,在大型软件计划上尤其显著。
二、设计要点1、基本要求:设计的系统界面要美观大方,操作合理,有必要的提示。
2、创新要求:在基本要求达到后,进行创新设计。
3、对系统进行功能模块分析、控制流程分析正确。
4、系统设计要实用,编程简练,可用,功能全面,并有一定的容错能力。
5、说明书、流程图要清楚6、要求程序设计合理,用户界面良好,如采用菜单工作方式。
三、实验步骤:1、首先利用MFC AppWinzard生成计算器应用程序框架具体步骤如下:执行VC程序,选择File|New命令,弹出New对话框.单击Projects标签,转到Projects选项卡,选择MFC AppWizard(exe)选项,然后在Project name 文本框中输入cyyJSQ 。
Lacation文本框是指项目的本地路径。
2、界面设计在界面中添加按钮,编辑框等相应控件,并合理摆放,使用户能更加方便的使用。
具体设计如下图所示:3、绑定控件通过如下方式绑定控件。
具体绑定如下表所示:按钮控件资源清单按钮名称按钮ID 用途0 IDC_ZERO 按键01 IDC_1 按键12 IDC_2 按键23 IDC_3 按键34 IDC_4 按键45 IDC_5 按键54、逐步实现代码①按钮1-9的实现文本编辑框的类型为string型,所以若按下数字1按钮时只需在数组尾部添加“1”即可其他代码如此类推,具体代码如下:void CMyDlg::OnButton0(){// 数字0this->check() ;CString tmp = num_buffer ;// 当为小数点后或其前面有不为零的数时允许输入零if ( tmp.ReverseFind('.') != -1 || tmp.FindOneOf( "123456789" ) != -1 ){num_buffer += "0" ;}else{num_buffer = "0" ;}GetDlgItem( IDC_EDIT_SHOW )->SetWindowText( num_buffer ) ;}void CMyDlg::OnButton1(){// 数字1this->check() ;num_buffer += "1" ;GetDlgItem( IDC_EDIT_SHOW )->SetWindowText( num_buffer ) ;}void CMyDlg::OnButton2(){// 数字2this->check() ;num_buffer += "2" ;GetDlgItem( IDC_EDIT_SHOW )->SetWindowText( num_buffer ) ;}void CMyDlg::OnButton3(){// 数字3this->check() ;num_buffer += "3" ;GetDlgItem( IDC_EDIT_SHOW )->SetWindowText( num_buffer ) ; }void CMyDlg::OnButton4(){// 数字4this->check() ;num_buffer += "4" ;GetDlgItem( IDC_EDIT_SHOW )->SetWindowText( num_buffer ) ; }void CMyDlg::OnButton5(){// 数字5this->check() ;num_buffer += "5" ;GetDlgItem( IDC_EDIT_SHOW )->SetWindowText( num_buffer ) ; }void CMyDlg::OnButton6(){// 数字6this->check() ;num_buffer += "6" ;GetDlgItem( IDC_EDIT_SHOW )->SetWindowText( num_buffer ) ; }void CMyDlg::OnButton7(){// 数字7this->check() ;num_buffer += "7" ;GetDlgItem( IDC_EDIT_SHOW )->SetWindowText( num_buffer ) ; }void CMyDlg::OnButton8(){// 数字8this->check() ;num_buffer += "8" ;GetDlgItem( IDC_EDIT_SHOW )->SetWindowText( num_buffer ) ; }void CMyDlg::OnButton9(){// 数字9this->check() ;num_buffer += "9" ;GetDlgItem( IDC_EDIT_SHOW )->SetWindowText( num_buffer ) ;void CMyDlg::OnButtonDot(){// 小数点if ( num_buffer.IsEmpty() ){num_buffer = "0." ;}else if ( num_buffer.ReverseFind('.') == -1 ){num_buffer += "." ;}GetDlgItem( IDC_EDIT_SHOW )->SetWindowText( num_buffer ) ; }// 求相反数void CMyDlg::OnButtonNI(){// 正负处理m_num = - atof( num_buffer ) ;// 转化为字符串num_buffer.Format( _T("%lf"), m_num );GetDlgItem( IDC_EDIT_SHOW )->SetWindowText( num_buffer ) ; }运行结果如下:②加减乘除代码的实现:通过控件的绑定以及传值函数,以指针调用的方式进行赋值,并将结果保存在num_buffer 中,与下一次输入的num2进行新的一元运算并给result赋值,通过Updatedata()函数反应到文本编辑框中,具体代码如下://加void CMyDlg::OnButtonAdd(){this->num1 = atof( num_buffer ) ;this->num_buffer.Empty() ;this->operation_type = ADD ;}// 减void CMyDlg::OnButtonSub() {this->num1 = atof( num_buffer ) ;this->num_buffer.Empty() ;this->operation_type = SUB ;}// 乘void CMyDlg::OnButtonMul() {this->num1 = atof( num_buffer ) ;this->num_buffer.Empty() ;this->operation_type = MUL ;}// 除void CMyDlg::OnButtonDiv(){this->num1 = atof( num_buffer ) ;this->num_buffer.Empty() ;this->operation_type = DIV ;}void CMyDlg::OnButtonRes() {const double EPSINON = 0.00001 ;bool error = false ;this->num2 = atof( num_buffer ) ;this->num_buffer.Empty() ;switch( this->operation_type ){case ADD :this->m_num = num1 + num2 ;break;case SUB :this->m_num = num1 - num2 ;break;case MUL :this->m_num = num1 * num2 ;break;case DIV :if ( (num2 > -EPSINON ) && (num2 <= EPSINON) ){num_buffer = "除数不能为零" ;error = true ;}else{this->m_num = num1 / num2 ;}break;default:this->m_num = this->num2 ;break;}结果如下图所示③科学性运算按钮的处理:只需根据数值分析等为按钮进行算法的合理设计,正确赋值即可,具体代码如下:// 自然底数evoid CScience::OnButtonEConst(){this->check() ;num_buffer.Format(_T("%lf") , M_E) ;fresh() ;}// 圆周率∏void CScience::OnButtonPai(){this->check() ;num_buffer.Format(_T("%lf") , M_PI) ;fresh() ;}void CScience::OnButtonNi(){// 正负处理m_result = - atof( num_buffer ) ;// 转化为字符串num_buffer.Format( _T("%lf"), m_result );fresh() ;}void CScience::OnButtonMutInv(){this->unary_operation = true ;const double EPSINON = 0.00001 ;this->m_result = atof( num_buffer ) ;if ( (this->m_result >= - EPSINON) && (this->m_result <= EPSINON) ){GetDlgItem(IDC_EDIT_SHOW)->SetWindowText("0 的倒数没有定义\n") ;}else{this->m_result = 1.0 / m_result ;num_buffer.Format( _T("%lf"), m_result );fresh() ;this->unary_operation = false ;}}void CScience::OnButtonPercent(){this->unary_operation = true ;CString tmp = num_buffer ;this->m_result = atof(num_buffer) ;tmp.Format(_T("%lf") , this->m_result * 100 ) ;tmp += "%" ;this->unary_operation = false ;}void CScience::OnButtonSqr(){this->unary_operation = true ;this->m_result = atof(num_buffer) ;this->m_result = sqrt(m_result) ;num_buffer.Format(_T("%lf") , this->m_result) ;fresh() ;this->unary_operation = false ;}void CScience::OnButtonSin(){CString tmp ;this->unary_operation = true ;this->m_result = atof(num_buffer) ;num_buffer.Format(_T("%lf") , this->m_result) ;tmp = "Sin(" + num_buffer + ") =" ;this->m_result = sin(m_result) ;num_buffer.Format(_T("%lf") , this->m_result) ;tmp += num_buffer ;fresh(tmp) ;this->unary_operation = false ;}void CScience::OnButtonCos(){CString tmp ;this->unary_operation = true ;this->m_result = atof(num_buffer) ;num_buffer.Format(_T("%lf") , this->m_result) ;tmp = "Cos(" + num_buffer + ") =" ;this->m_result = cos(m_result) ;num_buffer.Format(_T("%lf") , this->m_result) ;tmp += num_buffer ;fresh(tmp) ;this->unary_operation = false ;}void CScience::OnButtonTan(){const double EPSINON = 0.00001 ;this->unary_operation = true ;this->m_result = atof(num_buffer) ;num_buffer.Format(_T("%lf") , this->m_result) ;tmp = "tan(" + num_buffer + ") =" ;if ( (cos(m_result) >= -EPSINON) && (cos(m_result) <= EPSINON) ) {error() ;}else{this->m_result = tan(m_result) ;num_buffer.Format(_T("%lf") , this->m_result) ;tmp += num_buffer ;fresh(tmp) ;this->unary_operation = false ;}}void CScience::OnButtonCot(){CString tmp ;const double EPSINON = 0.00001 ;this->unary_operation = true ;this->m_result = atof(num_buffer) ;num_buffer.Format(_T("%lf") , this->m_result) ;tmp = "cot(" + num_buffer + ") =" ;if ( (sin(m_result) >= -EPSINON) && (sin(m_result) <= EPSINON) ) {error() ;}else{this->m_result = cos(m_result)/sin(m_result) ;num_buffer.Format(_T("%lf") , this->m_result) ;tmp += num_buffer ;fresh(tmp) ;this->unary_operation = false ;}}void CScience::OnButtonLn(){CString tmp ;const double EPSINON = 0.00001 ;this->unary_operation = true ;this->m_result = atof(num_buffer) ;num_buffer.Format(_T("%lf") , this->m_result) ;tmp = "ln(" + num_buffer + ") =" ;if ( m_result <= EPSINON ){error("参数必须大于0") ;}else{this->m_result = log(m_result) ;num_buffer.Format(_T("%lf") , this->m_result) ;tmp += num_buffer ;fresh(tmp) ;this->unary_operation = false ;}}运行结果如下:④进制间的转换:1.按钮A-F的实现与,进制运算时,按钮条件的设置。