1、计算器实验报告内 蒙 古 师 范 大 学(计算机与信息工程学院)可视化编程实验报告实验题目:计算器班 级:指导教师:学 号:姓 名:2013年6月6日(一)实验内容:用VC+的知识编写程序来实现计算功能。(二)实验目的:在程序设计中,通过设计、编制、调试一个模拟计算器的程序,加深对我们对编程语句及语义分析和理解,并实现对命令语句的灵活应用。这次实验目的就是实现简单计算器的功能。要程序能实现:加、减、乘、除、开方、倒数等运算功能;还要实现数据的输入、输出、计算、显示及程序退出等功能,另外还可以实现多种科学计算的功能。(三)实验步骤:1、首先利用MFC AppWinzard生成计算器应用程序框架具
2、体步骤如下:(1)执行VC程序,选择File|New命令,弹出New对话框.单击Projects标签,转到Projects选项卡,选择MFC AppWizard(exe)选项,然后在Project name文本框中输入cyyJSQ 。Lacation文本框是指项目的本地路径。(2)单击OK按钮,弹出MFC AppWinzard_Step1(应用程序向导步骤1)对话框。选中单选按钮,如图所示。(3)单击Next按钮,弹出MFC AppWinzard_Step2 of4对话框,如图所示。(4)单击Next按钮,弹出MFC AppWinzard_Step3 of4对话框,如图所示。(5)单击Next
3、按钮,弹出MFC AppWinzard_Step4 of4对话框,如图所示。单击Finish按钮,创建框架。 2、其次编辑资源(1)编辑对话框及控件资源 首先利用Visual C+提供的资源编辑器对对话框资源进行编辑。删除对话框中默认的OK和Cancel按钮。添加两个Edit控件,其控件ID为IDC_EDIT1和IDC_EDIT2。添加若干按钮控件,其ID如表所示。 按钮控件资源清单按钮名称按钮ID用途0IDC_ZERO按键01IDC_1按键12IDC_2按键23IDC_3按键34IDC_4按键45IDC_5按键56IDC_6按键67IDC_7按键78IDC_8按键89IDC_9按键9.IDC
4、 _DOT小数点=IDC _Equal等于+IDC _ADD加号-IDC _SUB减号*IDC _MUL乘号/IDC _DIV除号CEIDC _CE清屏SqrtIDC _Sqrt开方1/xIDC _Daoshu倒数-/+IDC _ ZHengfu正负MCIDC _Mc清除内存记录数据MRIDC _Mr内存中保存的数据MSIDC _Ms数据存入存储器中,将原有的数据冲走M+IDC _Madd当前记录数据与内存数据相加%IDC _Per百分号CIDC _C清零(清除全部)CEIDC _CE清除上一步数据BackspaceIDC _Backspace从后向前删除(2)由以上按钮控件组成简单的计算机如
5、下图所示:(3)编辑菜单资源1、在Visual C+中左侧的工具栏中,选中CAboutDLG选项右键添加成员变量m_flag、temp、temp1。步骤如图所示:点击“确定”按钮则会有如下图所示:2、同样再用上面的方法选中CCyyJSQDlg右键添加成员变量m_momery、m_s、m_hlcon等。如下图所示:(四)实验代码:响应按钮0void CCyyJSQDlg:OnZero() UpdateData(true); m_s=m_s+0; UpdateData(false); 响应按钮1void CCyyJSQDlg:On1() UpdateData(true); m_s=m_s+1; U
6、pdateData(false);响应按钮2void CCyyJSQDlg:On2() UpdateData(true); m_s=m_s+2; UpdateData(false); 响应按钮3void CCyyJSQDlg:On3() UpdateData(true); m_s=m_s+3; UpdateData(false); 响应按钮4void CCyyJSQDlg:On4() UpdateData(true); m_s=m_s+4; UpdateData(false); 响应按钮5void CCyyJSQDlg:On5() UpdateData(true); m_s=m_s+5; Up
7、dateData(false); 响应按钮6void CCyyJSQDlg:On6() UpdateData(true); m_s=m_s+6; UpdateData(false); 响应按钮7void CCyyJSQDlg:On7() UpdateData(true); m_s=m_s+7; UpdateData(false); 响应按钮8void CCyyJSQDlg:On8() UpdateData(true); m_s=m_s+8; UpdateData(false); 响应按钮9void CCyyJSQDlg:On9() UpdateData(true); m_s=m_s+9; Up
8、dateData(false); 响应按钮加+void CCyyJSQDlg:OnAdd() m_flag=1; UpdateData(true); temp=atof(m_s); m_s= ; UpdateData(false);响应退格按钮Backspacevoid CCyyJSQDlg:OnBackspace() int l; UpdateData(true); l=m_s.GetLength(); m_s.Delete(l-1,1); UpdateData(false); 响应百分号按钮%void CCyyJSQDlg:OnPer() UpdateData(true); temp=at
9、of(m_s); m_s.Format(%lf,temp*atof(m_s)/100); UpdateData(false);响应按钮清零Cvoid CCyyJSQDlg:OnC() m_s= ; temp=0; m_flag=0; flag=0; UpdateData(false); 响应等号按钮=void CCyyJSQDlg:OnEqual() if(m_flag=1) temp=temp+atof(m_s); m_s.Format(%lf,temp); Check(); UpdateData(false); if(m_flag=2) temp=temp-atof(m_s); m_s.F
10、ormat(%lf,temp); Check(); UpdateData(false); UpdateData(false); if(m_flag=3) temp=temp*atof(m_s); m_s.Format(%lf,temp); Check(); UpdateData(false); if(m_flag=4) temp=temp/atof(m_s); m_s.Format(%lf,temp); Check(); UpdateData(false); 响应按钮清零CEvoid CCyyJSQDlg:OnCe() m_s= ; UpdateData(false);响应按钮乘*void C
11、CyyJSQDlg: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/xvoid CCyyJSQDlg:OnDaoshu() UpdateData(true); temp=atof(m_s); temp=1/temp; m_s.Format(%f,temp); UpdateData
12、(false); 响应按钮小数点.void CCyyJSQDlg:OnDot() UpdateData(true); if(m_s.Find(.,0)=-1) m_s=m_s+.; UpdateData(false);响应按钮减号void CCyyJSQDlg:OnSub() m_flag=2; UpdateData(true); temp=atof(m_s); m_s= ; UpdateData(false);响应清除内存记录数据void CCyyJSQDlg:OnMc() UpdateData(true); temp1=0; m_memory= ; UpdateData(false);响应
13、当前记录数据与内存数据相加void CCyyJSQDlg:OnMadd() UpdateData(true); temp1=temp1+atof(m_s); m_s.Format(%lf,temp1); UpdateData(false);响应显示内存中保存的数据void CCyyJSQDlg:OnMr() UpdateData(true); m_s.Format(%lf,temp1); m_memory=M; UpdateData(false);响应将所显示的数据存入存储器中,将原有的数据取走 void CCyyJSQDlg:OnMs() UpdateData(true); temp1=at
14、of(m_s); m_s.Format(%lf,temp1); Check(); m_memory=M; UpdateData(false);响应按钮算术平方根void CCyyJSQDlg:OnSqrt() double temp; UpdateData(true); temp=atof(m_s); temp=sqrt(temp); m_s.Format(%lf,temp); Check(); UpdateData(false); 响应按钮取相反数void CCyyJSQDlg:OnZHengfu() UpdateData(true); temp=-atof(m_s); m_s.Format
15、(%lf,temp); Check(); UpdateData(false);void CCyyJSQDlg:Check() while(m_s.Right(1)=0) m_s.Delete(m_s.GetLength()-1,1);5.3 测试结果:在运行界面测试简单运算是否能正常运算(1)输入“34+87”观察结果,如图(1):图(1)(2)输入“36”单击“Sqrt”观察结果,见图5.2所示:图(2)“36开平方”结果(3)输入“4”单击“1/x”观察结果,见图(3)所示:图(3)“1/4”的运行结果六、实验心得通过实验这次,更加了解计算器基本使用工程。同时也清楚的自己在编程方面存在的一些不足,虽然实验完成的质量并不是特别的还,但是自己在这次实验中还是学到了很多的知识。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1