MFC计算器实验报告

合集下载

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框架的使用和应用程序的开发流程有了更深入的了解。

MFC下的科学计算器

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;//这部分是十进制转八进制的,原理同上。

MFC实践报告

MFC实践报告

c++课程设计实验报告——科学计算器学号:03109613 姓名:徐洁月院系专业:建筑环境与设备工程目录一、课题名称······················································二、问题陈述三、设计目标和设计任务四、解题算法思想五、数据结构描述六、测试数据七、运行情况分析八、设计小结九、心得体会参考资料提交日期一.课题名称科学计算器的设计二.问题陈述三.设计目标和设计任务 3.1初期对自我的要求通过实践加强对程序设计语言课程知识点的理解和掌握,培养对课程知识综合运用能力、实际分析问题能力及编程能力,养成良好的编程习惯。

通过实践进一步领会程序设计的特点和应用,提高运用c++ 语言以及面向对象知识解决实际问题的能力。

通过实践掌握用c++ 语言编写面向对象的实用程序的设计方法,对面向对象方法和思想增加感性的认识;学会利用c++程序设计语言编写出一些短小、可靠的windows实用程序,切实提高面向对象的程序设计能力。

为后续的相关课程的学习打下基础。

3.2设计目标和任务要求实现具有加,减,乘,除基本四则运算功能要求能够实现二进制,八进制,十进制,十六进制转换设计基于mfc框架的,具有友好界面的windows应用程序科学计算器要求具有运算优先级别,包括运算符号的优先级判断,实现基于括号的优先级控制科学计算器要求具有科学函数计算功能,主要包括三角函数(具有角度与弧度的切换),指数函数,对数函数等四.解题算法思想4.1 算法基本流程1)用户通过键盘或者计算机上的按钮输入计算表达式2)这时所输入的表达式在用户看来是数学运算符号,我们要做的就是将数学表达式转换成字符串3)查看整个算式中的括号是否都左右匹配,如果不匹配则推出并提示用户并退出。

MFC计算器程序报告

MFC计算器程序报告

C++课程设计实验报告学号姓名院系专业一、课题名称简易的计算器设计。

二、问题陈述编写一个计算器程序,能够进行四则运算、取模等运算要求:1、个人完成;2、运用对话框编写,界面上只能有一个输出框,数据通过按钮输入到程序,并显示在输出框中;当按下运算符后再输入数据,输出框中应显示新数据;运算结果也显示在输出框中。

3、四则运算、取模运算是最低要求,程序能正确执行;4、界面设计美观、合理;5、独立完成;三、设计目标和设计任务编写一个计算器程序,能够进行四则运算、取模、乘方、立方,并且给计算器程序添加背景。

四、解题算法思想1.创建一个基于对话框的项目2. 给对话框加入相应的操作按钮3. 给按钮加上代码,设置属性4. 为实现四则运算、取模等操作添加必要函数五、程序算法过程①选择File→New菜单命令,选择Project选项卡,并选择MFC AppWizard(exe), name 命名为calculator;选择应用程序基于对话框,即Dialog based。

多次单击next,最后单击Finish后,系统弹出一对话框,如下图:②使用按钮控件、文本编辑框控件和组控件,将他们加入到对话框中,并通过更改按钮控件的属性中的标题部分。

选中所有按钮,在属性中的Extended Style中选中Modal frame,使其达到下图效果:(注意,在布局按钮时,为了使按钮总体整齐美观,可以先创建一行或一列按钮,使他们保持整齐后,按住Ctrl键,选中这一行或一列按钮,再移动鼠标,即可生成另一行或一列按钮;也可以通过Layout菜单中的指令对其进行布局)③鼠标右击按钮控件,选择属性,即可对其ID进行更改,各ID与标题内容对应如下:ID 标题ID 标题IDC_BUTTON0 0 IDC_BUTTONCLS 清零IDC_BUTTON1 1 IDC_ADD +IDC_BUTTON2 2 IDC_PLUS -IDC_BUTTON3 3 IDC_MULTIPL Y *IDC_BUTTON4 4 IDC_DEVIDE /IDC_BUTTON5 5 IDC_EQUALL =IDC_BUTTON6 6 IDC_QUM 取模|IDC_BUTTON7 7 IDC_SQU 平方IDC_BUTTON8 8 IDC_CUB 立方IDC_BUTTON9 9④在对话框非控件部分单击鼠标右键,打开类向导ClassWizard,将数字按钮0~9关联到函数OnEnternum(),方法为单击数字按钮ID,然后单击Message中的BN_CLICKED,最后单击右侧的Add Function,在其中输入函数名即可。

c面向对象程序设计MFC简单计算器实验报告

c面向对象程序设计MFC简单计算器实验报告

c面向对象程序设计M F C简单计算器实验报告Standardization of sany group #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#计算机与信息工程学院《程序设计基础》课程设计报告题目名称:60.编写一个能实现简单功能的计算器学生姓名:刘沛东学生学号:专业班级:电子信息工程(1)班指导教师:高攀1 课程设计的题目编写一个能实现简单功能的计算器2 题目要求1. 有一个计算器图形。

2. 能实现加、减、乘、除及乘方的运算。

3. 当输入题目时,屏幕上要在指定位置上显示出相应的题目内容,且相应的数字键要改变颜色例如:输入数字1 时,在计算器图形上的1键变为红色。

4. 屏幕、图形颜色、形状自定3 总体设计总体框架图1 系统框架系统功能说明在VC++中绘制计算器界面,各控件的设置对0~9控件设定相应的ID和其他属性:图2 “1”控件设置对“+、-、*、\”控件设定相应的ID和其他属性:图2 “+”控件设置对其它控件设定相应的ID和其他属性:图3 其它控件设置主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。

拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。

4 程序详细设计系统主调模块图5 程序流程图各模块详细设计建立的变量,控件的命名,对应的消息处理函数对应表double poz; 按钮的处理函数void CCalcDlg::OnPt(){point_flag=TRUE; && buffer[i+1]==0)之前那位}m_Dis=strtod(buffer,NULL);整个大的程序的实现分8个功能,每个功能都通过一个相应的函数来实现.在调试时分别进行调试,使得调试更方便些.在编写各个函数只是按着题目要求的去完成,后来经指导老师指导后,发现了很多自己欠缺的地方,又一次将程序整体进行调试.最后把程序完善了许多。

MFC实训_计算器

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 可行性分析本设计是简单计算器。

日常计算机使用中,常常涉及到一些有关计算的问题,一个小型的计算器软件变得非常有用,该校型计算器需要空间资源较少,对电脑其他程序的应用影响较小。

计算器实验报告

计算器实验报告

题目:界面计算器学生姓名:专业:学号:指导老师: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。

计算器-MFC程序实验报告

计算器-MFC程序实验报告

题目:计算器编程实验一、目的:编写一个程序实现+、-、*、/、sqrt、x^n基本运算,同时有清除和归零的功能。

二、程序说明:(1)符号说明:SR[20]:是用来存储输入字符串的变量;SR1[20]:为第一个字符为’0’,其余都为’’的字符串变量,当按清零健时赋给SR[20]变量,实现SR[20]“清零”;NUM1:是存储输入的数值变量;NUM2:是用来存储第一个输入的数值变量,因为每一步计算都是两个数,在第一个输入结束后NUM1的只赋给NUM2,而NUM1继续储存新输入的数值;STNUM:是没有小数点的数值变量,于是实际进行计算的值只需将这个数除以10的小数点位数次方即可;FUHAO:是表示符号的数值变量,1、2、3、4、5、6分别表示+、—、*、/、x^n、sqrt;WEICOUNT:是表示输入的字符串的位数;DIANCOUNT:表示输入的“.”次数;FUCOUNT:表示输入符号(即+、-、*等)的次数;AFDIAN:表示输入的数字在小数点后的第几位,即相当于计算小树位数;m_S:表示计算结果的变量,勇于输出结果;(2)程序运行过程:①点击数字时,SR[WEICOUNT++]=”输入数字的字符”并输出;STNUM=10*STNUM+所输数字的大小;如果DIANCOUNT=1,则NUM1=STNUM/pow(10,AFDIAN++);否则就NUM1=STNUM;这样就能将有无小数点的情况进行判断而且计算出来;②点击符号(+、-、*、/、x^n、sqrt),SR[WEICOUNT++]=”输入符号的字符”并输出;NUM2=NUM1,NUM1=0,这样就相当于将第一个值付给了NUM2,同时STNUM=0,所以在输入数的时候又可以重新给NUM1赋值,减少了变量的数量。

同时将符号所对应的数赋给FUHAO以并在“=”时用;并且DIANCOUNT=0;这样新输入的书又可以继续输入小数点了;③点击“.”时,SR[WEICOUNT++]=”.”并输出;DIANCOUNT=1;这样后面如果再输入数就可以检测出是小数所以通过①就可以得到正确的结果;④点击“=”时,根据FUHAO的值来判定符号并进行运算赋给m_S并输出,其中NUM2是第一个输入的数的值,NUM1是第二个输入的数的值;之后并STNUM=0,NUM1=1;这样就相当于把上一步计算的结果当做了下一步计算的第一个值,实现了多步连续计算;于此同时将DIANCOUNT=0,AFDIAN=1,以致在后面的计算中仍能继续正常输出;⑤点击“清零”时,m_S=0;使输出结果的编辑框显示0;strcpy(SR,SR1),并输出SR,实现了输入编辑框显示0;WEICOUNT=0,DIANCOUNT=0;用于后面的继续输出;⑥点击“清除”时,SR[--WEICOUNT]=' ';输出字符串SR;STNUM=(int) STNUM/10;这样就实现了将之前的数去掉最后一个数字的作用,再用 DIANCOUNT=1?来判断,如果是就NUM1=STNUM/pow(10,AFDIAN),否则NUM1=STNUML来实现对小数点的清除。

基于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,在右边的窗口中显示出待编辑的对话框。

MFC计算器设计实验报告.

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计算器实验报告

mfc计算器实验报告

C++程序设计设计性实验报告实验项目名称:高级计算器设计与开发专业班级:;姓名:;学号:实验起止日期:起于年月日止于年月日实验目的:学会用C++语言和数据结构知识实现表达式的解析与计算;学会使用动态链接库技术进行编程;学会编辑、编译、运行MFC应用程序的基本过程.学会MFC可视化编程技术。

实验要求:1.能完成双精度型数值的加、减、乘、除计算;编程中使用了动态连接库技术.2.能完成双精度型数值的加、减、乘、除计算;编程中使用了动态连接库技术;能实现表达式的输入,解析与计算实验内容:1.C++语言的顺序结构,分支结构,循环结构,函数,结构体,指针,MFC可视化编程技术。

2.数据结构中的二叉树数据组织、存贮、后序遍历及其操作。

3. 使用动态链接库进行函数模块的设计,实现计算功能。

实验具体方案:按照系统设计要求,用Visual C++设计和开发一个MFC应用程序---高级计算器。

计算器的界面设计、计算功能实现、算式计算和动态链接库的使用等。

提交由需求分析:系统设计说明、系统技术文档、系统使用说明书和源程序代码为附录构成的实验报告。

需求分析:系统设计说明1.计算器界面计算器界面包括主题“高级计算器”和背景图片以及电子日历。

在计算区上有显示文本框和数字按钮以及运算符按钮。

在计算区上部分有运算模式选择模块和小提示语句。

2.模块功能简介系统分为多个模块,分别为计算模块、错误分析模块、界面显示模块和模式选择模块。

其中计算模块用来进行各种基本的加、减、乘、除的运算并且显示运算结果;错误分析模块用来进行错误处理;界面显示模块用来美化计算器界面;模式选择模块用来进行运算模式的选择和切换,以实现不同的运算要求。

3.系统结构图系统技术文档1.系统各模块主要流程图(1) 单步运算流程图(2) 算式运算流程图2.软件总体测试方案与测试记录运行程序,然后查看计算器界面和设计是否相同,进行运算模式的切换,看是否能正确的进行模式切换,查看日历显示是否正确。

基于vc++mfc的科学计算器程序实验报告

基于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的科学计算器课程设计实验报告

基于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实训_计算器

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 可行性分析本设计是简单计算器。

日常计算机使用中,常常涉及到一些有关计算的问题,一个小型的计算器软件变得非常有用,该校型计算器需要空间资源较少,对电脑其他程序的应用影响较小。

实验报告5:MFC计算器

实验报告5:MFC计算器
贵州大学计算机科学与技术学院
计算机科学与技术系上机实验报告
课程名称:C++语言程序设计
班级:计科102
实验日期060075
指导教师:张永军
实验序号:05
实验成绩:
一、实验名称
MFC程序设计——计算器
二、实验目的及要求
本次上机实践所涉及并要求掌握的知识点
1.熟悉基于对话框形式的MFC程序设计
3.给按钮加上代码,设置属性
4.为实现操作添加必要函数
六、调试过程及实验结果
详细记录程序在调试过程中出现的问题及解决方法。
记录程序执行的结果。
对题目要求理解不好,导致开始没找到代码应添加的位置,没能加上计算结果功能,经重新审查得以解决。
七、总结
对上机实践结果进行分析,问题回答,上机的心得体会及改进意见。
2.熟悉对界面操作的基本属性
3.编写用户界面的计算器程序
三、实验环境
本次上机实践所使用的平台和相关软件
Vs2010
四、实验内容
上机实践内容等
创建一个简单的计算器,实现简单的运算操作。
五、算法描述及实验步骤
用算法表示方法,流程图等形式表达算法设计思想与算法实现步骤
1.创建一个基于对话框的项目
2.给对话框加入相应的操作按钮
还是不熟悉相应属性的设置,导致程序运行出错,还有就是希望能改进材料的详细过程。
八、附录
源程序(核心代码)清单或使用说明书,可另附纸
BOOL CDlgDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_Sav="0.00";
m_S1=m_S2=m_S3;
UpdateData(FALSE);

计算器的实验报告

计算器的实验报告

计算器的实验报告邮电与信息工程学院课程设计说明书课题名称: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)

基于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,在右边的窗⼝中显⽰出待编辑的对话框。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告一——计算器
一实验名称
简易计算器
二实验目的
在Visual C++.EXE开发环境中,通过编写计算器程序,掌握创建对话框的方法,并向其中添加控件,并设置属性,使之满足程序的要求。

三编程思路
计算器要实现各种运算,在编写中主要分为两大块的编写,一是对1、2、3等数字按钮的响应函数编写,二是对加减乘除等运算符按钮的响应函数的编写。

给Dlg添加变量int m_operator; //运算符
double m_result; //结果(含中间变量)
另外添加编辑框的变量m_res
1.对数字按钮的响应函数的编写
1)由于每个按钮的响应函数相差不大,故用一个函数将其封装
在每次输入时要先判断数据开头是否为0
void CMy0710210202CalculateDlg::button(CString c)
{
UpdateData(TRUE);
m_res+=c;
if(m_res.GetAt(0)=='0'&&m_res.Find(".")==-1){
m_res.Empty();
m_res+=c;
}
UpdateData(FALSE);
}
2)小数点按钮的响应函数。

首先要判断输入数据中是否已有小数点,数据是否为0,以及是否还没输入数据。

void CMy0710210202CalculateDlg::OnDian()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
int n=m_res.Find(".");
if(n==-1&&m_res.GetLength()!=0) m_res+=".";
else if(m_res.GetLength()==0)m_res+="0.";
UpdateData(FALSE);
}
2.运算符按钮的响应函数的编写
用m_operator指代要进行的运算,由于每次的运算结果m_result 都传入了编辑框的变量m_res里,故此程序可以实现连续运算。

代码为
void CMy0710210202CalculateDlg::Result()
{
UpdateData(TRUE);
double input=0.0;
input=atof( m_res);
switch(m_operator)
{
case 0:
m_result=input;
break;
case 1: //加
m_result+=input;
break;
case 2: //减
m_result-=input;
break;
case 3: //乘
m_result*=input;
break;
case 4: //除
if(fabs(input)<0.0000000000000)m_result=0;
else m_result/=input;
break;
case 5: //平方
m_result=input*input;
break;
case 6: //开方
m_result=sqrt(input);
break;
case 7: //求倒
m_result=1/input;
break;
case 8: //sin
m_result=sin(input);
break;
case 9: //cos
m_result=cos(input);
break;
case 10: //tan
m_result=tan(input);
break;
case 11:
m_result=exp(input);
break;
case 12:
if(fabs(input)<0.0000000000000)m_result=0;
else m_result=log(input);
break;
}
m_res.Format("%f",m_result); UpdateData(FALSE);。

相关文档
最新文档