MFC课程设计报告一个简单的计算器应用程序样本
- 格式:doc
- 大小:52.50 KB
- 文档页数:10
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编程及应用》课程设计报告题目: 简易型科学计算器学号: 姓名:****: ***时间: 2012年5月16日1、设计步骤a)工程建立本工程建立的是一个基于对话框的应用程序。
b)类中新增变量的作用m_inputstr : CEdit类型, 用于与程序中编辑框相关联;m_FormerBase :用于记录上一次是出于何种进制之下, 便于进制转换;c)CMathString: 用于对字符串进行逆波兰表达式的转换并计算结果d)需处理的消息的详细代码对按钮0(OnBnClickedButton0)的响应函数:void CMy1106840420Dlg::OnBnClickedButton0(){CString temp;//定义一个CString对象this->UpdateData(true);//从编辑框获得m_inputstr的值m_inputstr.GetWindowText(temp);//获取字符串并存入temp中temp += '0';//在字符串末尾添加字符‘0’this->m_inputstr.SetWindowText(temp);//将字符串设置回m_inputstr中this->UpdateData(false);//更新数据, 编辑框显示}对按钮1(OnBnClickedButton1)、2(OnBnClickedButton2)、3(OnBnClickedButton3)、4(OnBnClickedButton4)、5(OnBnClickedButton5)、6(OnBnClickedButton6)、7(OnBnClickedButton7)、8(OnBnClickedButton8)、9(OnBnClickedButton9)、A(OnBnClickedButtonA)、B(OnBnClickedButtonB)、C(OnBnClickedButtonC)、D(OnBnClickedButtonD)、E(OnBnClickedButtonE)、F(OnBnClickedButtonF)、左括号(OnBnClickedButtonLbracket)、右括号(OnBnClickedButtonRbracket)、+(OnBnClickedButtonAdd)、—(OnBnClickedButtonMinus)、×(OnBnClickedButtonMultiply)、/(OnBnClickedButtonDiv)、小数点(OnBnClickedButtonPoint)、PI (OnBnClickedButtonPi)的响应函数与按钮0类似, 仅末尾添加的字符变为相应的字符。
mfc课程设计报告模板一、教学目标本课程的教学目标是使学生掌握MFC(Microsoft Foundation Class)的基本概念和编程技巧,培养学生使用MFC进行Windows应用程序开发的能力。
具体目标如下:1.知识目标:(1)理解MFC的基本概念,如窗口、消息、事件等。
(2)掌握MFC的编程步骤,如创建项目、添加类、编写代码等。
(3)熟悉MFC常用的类和函数,如CCmdTarget、CWnd、AfxMessageBox等。
2.技能目标:(1)能够使用MFC编写简单的Windows应用程序。
(2)能够使用MFC进行窗口布局和界面设计。
(3)能够使用MFC处理消息和事件,实现用户交互。
3.情感态度价值观目标:(1)培养学生对计算机科学的兴趣和热情。
(2)培养学生解决问题的能力和创新精神。
(3)培养学生团队协作和良好沟通的意识和能力。
二、教学内容本课程的教学内容主要包括MFC的基本概念、编程步骤和常用类及函数。
具体安排如下:1.MFC的基本概念:介绍MFC的起源、发展及其在Windows应用程序开发中的应用。
2.MFC的编程步骤:讲解如何创建MFC项目、添加类、编写代码等。
3.MFC的常用类及函数:介绍MFC的核心类,如CCmdTarget、CWnd等,以及常用的函数,如AfxMessageBox等。
4.窗口布局和界面设计:讲解如何使用MFC进行窗口布局、界面设计以及界面美化。
5.消息和事件处理:讲解MFC如何处理消息和事件,实现用户交互。
6.实战项目:通过实际项目案例,让学生掌握MFC的应用,提高实际编程能力。
三、教学方法本课程采用讲授法、讨论法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:教师讲解MFC的基本概念、编程步骤和常用类及函数。
2.讨论法:教师引导学生进行问题讨论,巩固所学知识。
3.案例分析法:分析实际项目案例,让学生学会运用MFC解决实际问题。
简单计算器设计报告045一、基本功能描述通过文本编辑框实现基本整数的加减乘除运算二、设计思路如下图是整个程序进行的流程图, 基本方法是在ItemText文本编辑框输入字符, 程序对字符进行判断, 若输入不是数字则提示错误。
输入正常时, 通过下拉框ComboBox_InsertString选择相应运算符。
点击等号IDC_OK, 即可得出运算结果。
操作简便, 算法简单。
三、软件设计1、设计步骤打开Microsoft Visual C++ 6.0,在文件中点击新建, 在弹出框内选择MFC AppWizard[exe]工程, 输入工程名zhoutong及其所在位置, 点击确定将弹出MFC AppWizard-step 1对话框, 选择基本对话框, 点击完成MFC AppWizard就建立了一个基于对话窗口的程序框架四、主要程序分析1.字符判定函数BOOL IsInt(TCHAR*str) {int i=atoi(str);TCHAR strtemp[256]; wsprintf(strtemp,"%i",i); if(strcmp(str,strtemp)!=0) {return FALSE;}Else{return TRUE;}}3、该函数通过atoi把文本编辑框读取的字符转换为数字, 再通过wsprintf把转换数字转换为字符, 通过strcmp比较原字符和转换得来的字符。
如相同返回true,不通则返回false.4、运算符选择程序BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam){HWND hwndComboOP=GetDlgItem(hwnd,IDC_COMBOOP);ComboBox_InsertString(hwndComboOP,-1,TEXT("+"));ComboBox_InsertString(hwndComboOP,-1,TEXT("-"));ComboBox_InsertString(hwndComboOP,-1,TEXT("*"));ComboBox_InsertString(hwndComboOP,-1,TEXT("/"));return TRUE;}通过ComboBox_InsertString插入要输入的运算符5、主程序字符获取TCHAR str1[256];TCHAR str2[256];GetDlgItemText(hwnd,IDC_EDIT1,str1,sizeof(str1));GetDlgItemText(hwnd,IDC_EDIT2,str2,sizeof(str2));调用子程序判断输入是否为数字if(IsInt(str1)==FALSE){MessageBox(hwnd,TEXT("第一个数不是合法整数"),TEXT("错误"),MB_OK|MB_ICONERROR); return;}if(IsInt(str2)==FALSE){MessageBox(hwnd,TEXT("第二个数不是合法整数"),TEXT("错误"),MB_OK|MB_ICONERROR); return;}将输入字符转换为数字int i1=atoi(str1);int i2=atoi(str2);int i3=0;获取运算符HWND hwndComboOp=GetDlgItem(hwnd,IDC_COMBOOP);int curIndex=ComboBox_GetCurSel(hwndComboOp);运算switch(curIndex){case 0:{i3=i1+i2;}break;case 1:{i3=i1-i2;}break;case 2:{i3=i1*i2;}break;case 3:{i3=i1/i2;}break;}运算结果转换为字符TCHAR str3[256];itoa(i3,str3,10);输出运算结果SetDlgItemText(hwnd,IDC_EDIT3,str3);}break;退出程序case IDC_EXIT:{exit(0);}break;五、结果分析六、该计算器只能实现简单的整数运算, 不能对小数分数进行运算。
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,在其中输入函数名即可。
基于MFC的简易计算器课程设计一、摘要:这次课程设计的主要目的是运用MFC设计一个简易计算器,此简易计算器的功能:用户可以在输入功能框中输入任何合法、非法的运算四则运算表达式,还可以作x的y次方运算、立方运算、开二次方运算、log运算和倒数运算如果是合法表达式,计算器自动计算并显示结果,如果非法显示出错信息。
二、设计团队:Cary(班级:通信052,学号:200500402088)李子琨(班级:通信052,学号:200500402068)三、设计分工:李子琨:主要任务是使用MFC制作主程序界面,添加按钮控件并关联变量,手动添加按钮消息映射郑特:编写函数的实现代码四、简易计算器实现功能:可以实现:两个数的加、减、乘、除、x的y次方;一个数的立方、开二次方根、倒数、LOG值计算等。
五、设计步骤(函数实现):1、void cal( )函数实现:(1)、cal( )函数说明:此函数按照定义的变量“OperationState”进行计算,流程如下:(2)、代码实现如下:void CCalculatorDlg::cal( ) //按OperationState进行计算{switch(OperationState){case 1:if(number2==0)MessageBox("请注意,除数不能为零!","温馨提示:");elsem_number=(double)number1/number2;NumberState=1;UpdateData(FALSE);number1=m_number; break;case 2:m_number=number1*number2;NumberState=1;UpdateData(FALSE);number1=m_number; break;case 3:m_number=number1+number2;NumberState=1;UpdateData(FALSE);number1=m_number; break;case 4:m_number=number1-number2;NumberState=1;UpdateData(FALSE);number1=m_number; break;case 5:m_number=pow(number1,number2);NumberState=1;UpdateData(FALSE);number1=m_number; break;}OperationState=0;1、数字按钮处理的成员函数实现:代码实现如下:void CCalculatorDlg::OnNumberKey(UINT nID) //监视输入,独立输入变为实际的数据{int n=0;switch(nID){case IDC_NUMBER1:n=1;break;case IDC_NUMBER2:n=2;break;case IDC_NUMBER3:n=3;break;case IDC_NUMBER4:n=4;break;case IDC_NUMBER5:n=5;break;case IDC_NUMBER6:n=6;break;case IDC_NUMBER7:n=7;break;case IDC_NUMBER8:n=8;break;case IDC_NUMBER9:n=9;break;case IDC_NUMBER10:n=0;break;}if (NumberState==1){if(point_1==1){m_number=m_number+n*pow(0.1,point_1);point_1++;number1=m_number;UpdateData(FALSE);}else{m_number=m_number*10+n;number1=m_number;UpdateData(FALSE);}}else{if(point==1){m_number=m_number+pow(0.1,point_1);point_1++;number2=m_number;UpdateData(FALSE);}else{m_number=m_number*10+n;number2=m_number;UpdateData(FALSE);}}}2、操作按钮功能的成员函数实现:void CCalculatorDlg::OnOperationKey(UINT nID) //对于非一般四则运算分别匹配运算规则{switch(nID){case IDC_NUMBER11:m_number=-m_number;if(NumberState==1)number1=m_number;else number2=m_number;UpdateData(FALSE);break;case IDC_NUMBER12:m_number=(int)m_number/10;if(NumberState==1)number1=m_number;else number2=m_number;UpdateData(FALSE);break;case IDC_NUMBER13:OperationState=1;m_number=0;UpdateData(FALSE);NumberState=2;break;case IDC_NUMBER14:OperationState=2;m_number=0;UpdateData(FALSE);NumberState=2;break;case IDC_NUMBER15:OperationState=3;m_number=0;UpdateData(FALSE);NumberState=2;break;case IDC_NUMBER16:OperationState=4;m_number=0;UpdateData(FALSE);NumberState=2;break;case IDC_NUMBER17:number1=number2=m_number=0;UpdateData(FALSE);NumberState=1;break;case IDC_NUMBER18:if(number1<0)MessageBox("请注意,被开方数不能小于零!","温馨提示:");elsenumber1=m_number=sqrt(number1);UpdateData(FALSE);break;case IDC_NUMBER19:number1=m_number=(double)1/number1;UpdateData(FALSE);break;case IDC_NUMBER20:cal(); break;case IDC_NUMBER21:number1=m_number=number1*number1*number1;UpdateData(FALSE);break;case IDC_NUMBER22:OperationState=5;m_number=0;UpdateData(FALSE);NumberState=2;break;case IDC_NUMBER23:if(number1<0)MessageBox("请注意,计算不能为负!","温馨提示:");else{number1=m_number=log10(number1);UpdateData(FALSE);}break;case IDC_NUMBER24://point_1=1;break;}}六、编译、运行运行后程序主界面:七、心得、体会通过这次软件工程课程设计的练习,使我增加了对软件编程的兴趣,对VC++运行机制有了更进一步的了解,在编写代码的过程中遇到了很多的问题,团队成员之间通过相互探讨,共同解决了遇到的问题,使自己解决问题的能力有了进一步的提高,思维变得更加的活跃,而且更加严谨,虽然这次做的只是一个简单的项目,但我收获很多!我要更加努力的学习编程,让自己的技术更进一步提高!。
MFC计算器课程设计题目: MFC计算器设计学院:计算机学院姓名:学号:指导教师:2015年5月20日目录1概述 (3)1.1课程设计目的 (3)1.2课程设计内容 (3)2系统需求分析 (4)2.1系统目标 (4)2.2主体功能 (4)2.3开发环境 (4)3系统概要设计 (4)3.1系统功能划 (4)4系统详细设计 (7)4.1 设计步骤 (7)4.2 界面设计 (9)5测试 (11)5.1 测试方案 (11)5.2 测试结果 (12)6小结 (14)参考文献 (14)附录 (15)附录1源程序清单 (15)计算器的设计1概述1.1 课程设计目的1、巩固并加深学生对C++语言程序设计知识的理解;2、培养学生面向对象的程序设计思想,使学生认识面向过程和面向对象两种设计方法的区别;3、进一步掌握和应用VC++ 6.0集成开发环境;4、提高运用C++语言解决实际问题的能力;5、初步掌握开发小型实用软件的基本方法,能独立设计、实现基本的MIS系统;6、掌握书写程序设计开发文档的能力(书写课程设计实验报告)。
1.2 课程设计内容课题名称:计算器的实现说明:实现一个计算器。
要求:用“计算器”的标准视图执行简单的计算。
32系统需求分析2.1 系统目标我们在学习生活中,常会遇到一些繁杂的数值运算,这时候我们就必须用到科学计算器,所以便着手开发了这个计算器程序,以便用于自己的学习工作。
要计算功能有以下几个方面:加法,减法,乘法,除法,乘方。
2.2 主体功能十进制数的加、减、乘、除、乘方简单计算。
2.3 开发环境W indows操作系统,VC++ 6.0, OFFICE WORD3 系统概要设计3.1 系统功能划表3-1 系统功能表1)假设执行操作“+”,先输入一个数,再输入“+”,再输入另一个数,最后输入“+”。
整个功能“+”就执行完毕。
4四则代码如下void CCALDlg::OnButtonequal(){// TODO: Add your control notification handler code here UpdateData(TRUE);num2 =m_str;if(num2==0&&ope==3){m_str1="除数不能为零";m_str =0;num1 = 0;num2 = 0;UpdateData(FALSE);}else{// int f = 0;switch (ope){//加case 0:m_str = num1 + num2;break;//减case 1:m_str = num1 - num2;break;5case 2:m_str = num1 * num2;break;case 3:m_str = num1 / num2;break;case 4:m_str = num1 * num1;}UpdateData(FALSE);}64系统详细设计4.1 设计步骤打开Microsoft Visual C++ 6.0,在文件中点击新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名yeyahui及其所在位置,点击确定,如图4-1所示。
m f c课程设计(计算器)(共12页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--MFC程序设计计算器(附带日历)一、主要目的:本设计将实现一个简单计算器并附带一个日历。
其功能参照Windows附件中自带的计算器。
这个计算器实现了简单的四则运算功能,还实现了模运算和指数运算,具有简洁的图文外观。
它的设计按软件工程的方法进行,系统具有良好的界面、必要的交互让使用人员能快捷简单地进行操作。
即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间。
另外还附加了一个日历功能让使用者了解当前日期。
本程序对人们的生活有一定的帮助。
在课程设计中,系统开发平台为Windows XP,程序设计设计语言采用Visual C++,在程序设计中,采用了面向对象的解决问题的方法。
在程序设计中,通过设计、编制、调试一个模拟计算器的程序,加深对语法及语义分析原理的理解,并实现对命令语句的灵活应用。
在程序设计中,可以用面向对象程序设计方法解决问题。
由于多个函数均需要访问某些数据,这些数据常被设计为全局变量。
而在面向对象程序设计中关键是如何将问题域中的实体(即日常所见的概念)抽取出来,作为C++程序中的类,而属性与行为作为类的两类要素通常是必不可少的,甚至还应考虑类必须满足的约束。
二、开发工具的介绍1、关于Visual C++Visual C++ 是Microsoft公司在1998年推出的基于Windows 9X和Windows NT的优秀集成开发环境。
该环境为用户提供了良好的可视化编程环境,程序员可以里利用该开发环境轻松地访问C++源代码编辑器,资源编辑器和使用内部调试器,并且可以创建项目文件。
Visual C++不仅包括编译器,而且它还包括许多有用组件,通过这些组件的协同工作,可以在Visual C++集成环境中轻松地完成创建源文件,编辑资源,以及对程序的编译,连接和调试等各项工作。
MFC 课程设计——简易计算器程序设计FCL指导老师:东南大学机械工程学院2009-10-12目录摘要 (3)Abstract (4)第一章绪论 (5)1.1 引言 (5)1.2 MFC主要的界面风格 (6)1.3 基于对话框设计的技术 (6)第二章程序设计 (7)2.1 计算器基本功能的需求 (7)2.2 计算器具体功能介绍 (7)2.3 详细设计的类 (8)第三章程序具体实现代码及步骤 (11)3.1 开始步骤 (11)3.2 对话框设计,变量关联 (11)3.3 加入的代码 (13)第四章运行实例 (31)结论 (34)致谢 (34)参考文献(References) (34)附录 (35)简易计算器程序设计摘要摘要内容(中文):通过MFC Windows 可以设计出许多的应用程序。
计算器是其中一个简单的,也是非常实用的应用程序。
此计算器可以进行+、-、×、÷、、sin、cos、tan、arcsin、arccos、arctan(输入,输出结果以度为单位)、、、、log、ln、。
关键词(中文):MFC,计算器,基本运算The Design of a Simple and Easy CalculatorAbstractAbstract (English):Through MFC, many programs can be designed. Calculator is just a simple and practical program. This calculator can operate +、-、×、÷、、sin、cos、tan、arcsin、arccos、arctan、、、、log、ln、、vector operations and imaginary number operations.Key words:MFC, Calculator, Basic operations, Vector operations, Imaginary number operations第一章绪论1.1 引言MFC,微软基础类(Microsoft Foundation Classes),是一种Application Framework,随微软Visual C++ 开发工具发布。
MFC表达式计算器课程设计报告题目:利用MFC框架编写简易表达式计算器【分析】一.设计过程1.Windows消息处理机制的理解首先编写程序需要对Windows程序的消息处理机制(Message Handle)有个比较清晰的了解。
Windows的程序都是通过消息来传送数据,有不需要用户参与的系统消息,比如异常处理等。
还有用户消息,比如鼠标的单击,双击,键盘的键入等。
2.界面的设计1)界面的初步设计仿照Windows附件里面的计算器,在资源视图中画好界面,如图:2)修改每个static的属性ID CAPTIONIDD_STA TIC4 简易表达式计算器IDC_STATIC1 待求表达式IDC_STATIC2 运算结果IDC_STATIC3 系统当前时间3)修改每个button的属性IDC_BUTTON1 等于(=)IDC_BUTTON2 全清(C)IDC_BUTTON3 清除(A) 结果如下图:4)修改每个button的处理机制在类向导Classwizard窗口中进行,如下图:其他button按钮的修改类似5)修改每个edit的类型和名称在类向导Classwizard窗口中进行:单击Add Variable按钮,在如下窗口中进行修改其他edit的修改类似最终结果如下:注:主要使用到Layout菜单中的Align功能对各个按钮进行对齐,使界面更加整洁。
拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。
6)系统菜单的添加在Menu的IDR_MENU1中添加系统菜单:同理在“帮助”菜单中添加“关于”。
二.设计步骤1. 添加头文件将Calculate.cpp(见附录)改为Calculate.h将其添加到计算器Dlg.cpp : implementation file中,如下:#include "Calculate.h"。
2.成员函数及其释义:void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)//{{AFX_MSG_MAP(CAboutDlg)//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CMyDlg dialogCMyDlg::CMyDlg(CWnd* pParent /*=NULL*/): CDialog(CMyDlg::IDD, pParent){//{{AFX_DATA_INIT(CMyDlg)// NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void CMyDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CMyDlg)DDX_Control(pDX, IDC_EDIT3, m_time);DDX_Control(pDX, IDC_EDIT2, m_result);DDX_Control(pDX, IDC_EDIT1, m_input);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CMyDlg, CDialog)//{{AFX_MSG_MAP(CMyDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON1, OnButton1)ON_BN_CLICKED(IDC_BUTTON2, OnButton2)ON_WM_TIMER()ON_BN_CLICKED(IDC_BUTTON3, OnButton3)ON_COMMAND(ID_ABOUT, OnAbout)ON_COMMAND(ID_QUIT, OnQuit)//}}AFX_MSG_MAPEND_MESSAGE_MAP()////////////////////////////////////////////////////////////////////////////// CMyDlg message handlers3.OnButton1()按钮的处理函数双击“等于(=)”按钮,添加如下代码:void CMyDlg::OnButton1(){// TODO: Add your control notification handler code hereCString str;char *ch;m_input.GetWindowText(str);ch = (LPSTR)(LPCTSTR)str;char ch2[50];strcpy(ch2,ch);Cal a(ch2);if(!a.OK){m_result.SetWindowText("表达式不合法!");// 表达式不合法,判别出来并给出相应的错误提示}else{if(a.Sign){m_result.SetWindowText("除数为零!");// 表达式不合法,可以判别出来并给出相应的错误提示}else{str.Format("%lf",a.GetV());m_result.SetWindowText(str);}}}以OnButton1()作为求值处理函数,函数的功能是单击等于(=)按钮,运算结果显示在IDC_EDIT2中4.OnButton2()按钮的处理函数双击“清除(C)”按钮,添加如下代码:void CMyDlg::OnButton2(){// TODO: Add your control notification handler code herem_result.SetWindowText("0");m_input.SetWindowText("");m_input.SetFocus();}//函数的功能是把上次输入的表达式清空5.OnButton3()按钮的处理函数双击“全清(A)”按钮,添加如下代码:void CMyDlg::OnButton3(){// TODO: Add your control notification handler code herem_input.SetWindowText("");m_input.SetFocus();}//函数的功能是把上次输入的表达式和运算结果都清除6.OnTimer(UINT nIDEvent)处理函数CWnd::SetTimer(1,500,NULL);//设置时间每隔500ms更新一次。
题目基于MFC的多功能计算器设计一、设计目标编写一个计算器。
二、语言环境编程语言: C++开发环境: VS目标软件运行平台: Windows 64位机三、软件功能:1.图形化界面。
2.实现计算器的功能。
3.输入加减乘除表示式, 能够计算其结果。
4.基本功能: 计算表示式, 计算阶乘, 计算组合数, 次幂, 求次幂后取余, 简单的分数加减乘除计算。
5.扩展功能: 在以上功能完成的基础上, 可完成更高精度的计算,实现简单高精度的加减乘除阶乘运算。
基于MFC的多功能计算器设计摘要计算器是人们日常生活中常见的电子产品之一, 在人们的生活中有着非常广泛的应用, 随着科学的进步, 计算器的种类和功能也更加丰富。
本次课程设计旨在基于MFC框架设计一个多功能计算器, 能够实现含括号的表示式计算, 三角函数、开方、阶乘、排列组合等数学计算, 进制转换, 超过long long范围的整数运算以及简单的分数四则运算。
此次设计的多功能计算器是基于MFC的框架, 以C++编程语言完成的, 计算器使用中缀表示式求值的算法计算含括号的表示式, 使用C++标准库函数进行相应的数学计算, 利用Boost库实现高精度的整数运算。
本计算器不但功能丰富, 而且具有美观、功能清晰且操作方便的界面。
经多次测试, 本计算器能即时准确地获得所需的计算结果, 而且能在输入错误时进行相应处理, 充分降低了计算时的难度, 节约了时间。
经过本次课程设计, 掌握了MFC基本框架, 对基本算法有了更加深入的了解。
关键词: 多功能计算器; MFC; C++编程语言; 表示式计算; 高精度目录课题分析 (4)总体设计 (5)详细设计 (6)3.1普通计算与科学计算 (6)3.2高精度计算 (10)3.3其他计算 (11)3.3.1分数计算 (11)3.3.2组合数计算 (11)3.3.3进制转换 (12)程序调试与问题解决 (12)4.1输入表达式错误引发程序异常 (12)4.2输入表达式格式有误 (13)4.3计算排列组合溢出 (14)运行结果 (14)总结 (17)课题分析本次设计为多功能计算器, 需要实现多种功能, 为了使界面更加美观, 功能更加清晰明了, 也为了让使用者便于操作, 因此本计算器使用MFC中的Tab Control控件对计算器进行分页[1], 将计算器分为了四个板块, 分别为: 普通计算、科学计算、高精度计算和其它计算。
MFC计算器编程设计报告地信091指导老师:2010.11.15一(题目:利用MFC框架编写简易计算器要求使用MFC框架在Visual Studio 6.0环境下编写一个简易的计算器,支持任意位数的加减乘数,正负转换,并且实现BackSpace CE C功能。
二(设计过程1. Windows消息处理机制的理解首先编写程序需要对Windows程序的消息处理机制(Message Handle)有个比较清晰的了解。
Windows的程序都是通过消息来传送数据,有不需要用户参与的系统消息,比如异常处理等。
还有用户消息,比如鼠标的单击,双击,键盘的键入等。
2. 界面的设计仿照Windows附件里面的计算器,在资源视图中画好界面,如图:主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。
拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。
3. 建立的变量,控件的命名,对应的消息处理函数对应表ID CAPTION Message Handler简易计算器 1.0 Beta1版 IDD_CALC_DIALOG N/A IDC_NUM0 0 OnNum0IDC_NUM1 1 OnNum1IDC_NUM2 2 OnNum2IDC_NUM3 3 OnNum3IDC_NUM4 4 OnNum4IDC_NUM5 5 OnNum5IDC_NUM6 6 OnNum6IDC_NUM7 7 OnNum7IDC_NUM8 8 OnNum8IDC_NUM9 9 OnNum9IDC_NEG +/- OnNegIDC_PT . OnPtIDC_DIV / OnDivIDC_MUL * OnMulIDC_MIN - OnMinIDC_ADD + OnAddIDC_BACKSPACE BACK OnBackspaceIDC_CE CE OnCeIDC_CLEAR C OnClearIDC_EQU = OnEquIDC_DIS N/A N/AOnCal(double num) 变量定义:double poz; //保存小数点的位置,初始化为1,表示poz-1个小数点。
设计一个简朴的计算器应用程序一、设计目的与内容1.了解Windows编程的基础知识,掌握MFC应用程序的基本知识;2.基本掌握面向对象程序设计的基本思绪和方法;3.掌握用VC++开发应用程序的的一般环节和方法;4.可以运用所学的基本知识,设计一个简朴的计算器应用程序,实现基本的加、减、乘、除、求平方根,求倒数等基本运算(必须实现的功能),实现求角度的正弦、余弦、正切等基本运算、实现求指数、自然对数、常用对数等基本运算(这部分功能选做)。
5.在程序中注意解决数据和运算符的输入,计算结果的显示。
二,设计规定1.用VC++进行编码,实现应用程序的功能。
注重编码质量,代码要有适当的注释;2.提交设计报告一份(课程设计任务书、目录、设计的基本思绪、设计的环节及重要代码、心得体会、参考文献)。
一个简朴的计算器应用程序总体设计可以运用所学的基本知识,设计一个简朴的计算器应用程序,实现基本的加、减、乘、除、求平方根,求倒数等基本运算(必须实现的功能),实现求角度的正弦、余弦、正切等基本运算、实现求指数、自然对数、常用对数等基本运算(这部分功能选做)。
在程序中注意解决数据和运算符的输入,计算结果的显示。
具体设计◆新建工程Counter新建工程,选择对话框应用程序。
◆程序运营主界面图2-1在对话框内添加相应的控件,分别给编辑框添加三个变量m_N1,m_N2和m_Result。
然后添加一个组合框,在里面添加十二个单选按钮设立第一个单选按钮为组,如图图2-2然后给对话框类添加一个int变量Operator用来作相应运算时的标记。
给控件添加相应的函数1、给单选按钮添加相应的函数void CCounterDlg::OnRadio1(){Operator=1;}void CCounterDlg::OnRadio2()Operator=2;}void CCounterDlg::OnRadio3() {Operator=3;}void CCounterDlg::OnRadio4() {Operator=4;}void CCounterDlg::OnRadio5() {Operator=5;}void CCounterDlg::OnRadio6() {Operator=6;void CCounterDlg::OnRadio7() {Operator=7;}void CCounterDlg::OnRadio8() {Operator=8;}void CCounterDlg::OnRadio9() {Operator=9;}void CCounterDlg::OnRadio10() {Operator=10;}void CCounterDlg::OnRadio11(){Operator=11;}void CCounterDlg::OnRadio12(){Operator=12;}用来作相应的操作时标记Operator的值。
MFC简单计算器设计正文实用计算器程序1.基本功能描述计算器是人们日常生活中非常实用的计算工具。
预期设计目标与实际计算器为标准,Windows 10系统提供的计算器为范例进行设计。
实用计算器要实现单目运算和双目运算。
单目运算主要包括阶乘、正弦、余弦;双目运算主要包括加、减、乘、除、乘幂等。
计算器要能够对输入的各种数据进行处理,包括小数、整数、负数等数据进行操作。
实际过程中要能够对不同的数据灵活判断执行。
同时要能够对不满足运算符的操作数,提示出错信息以方便用户进行处理。
用户的修改包括清屏和退格。
程序设计的重点和难点在于:第一,能够对于不同的操作数和操作符进行连续运算,运算过程中要有优先级的判断,根据优先级执行不同的运算顺序;第二,能够用一个编辑框实现运算表达式的显示和结果的输出。
编程环境采用Visual Studio 2017提供的MFC建立对话框应用程序,设计界面要简单大方,并提供程序所有功能的接口。
2.设计思路表1 操作符优先级设计优先级操作符1 阶乘、正弦、余弦2 乘幂3 乘、除4 加、减对对话框编辑框关联一个变量从中读取数据,按下数字键时对数据数组num[]进行更新,其中num[0]表示的是当前已经存储变量的个数。
由于算法设计为四层优先级,且单目运算的优先级最高。
当按下相应单目运算符,首先将当前数据数组的最后一个存储(防止按下Backspace退格发生错误),并将此位数据执行运算后重新赋值。
但按下双目运算符相应按键后,将计数num[0]++,同时将运算符的类型和位置记录。
当按下等于之前,这样就将一个单目双目混合的运算表达式转化为双目运算。
如果没有按下等号键,则继续执行循环。
在按下等号按钮之后,按照先乘幂、再乘除、后加减的运算顺序执行运算,将最后结果保存并显示。
(在实际的计算器中,执行完运算之后,按下运算符的操作键,最终结果将按照左操作数的形式出现,故需要保存变量。
)如果用户没有结束程序,在运行初始化程序,进行下一次运算,否则直接退出。
计算器实验报告2013年6月11日星期二系统设计要求用MFC制作一个计算器,它能在实数范围内进行加、减、乘、除运算。
在运算时要考虑运算符的优先顺序。
要求能显示输入的算式和输出的结果。
设计思路充分利用CString 的功能:1.读入表达式在该过程中,只需要考虑会输入哪些算式,不需要考虑算式的合理性。
2.解析表达式2.1 将CString类的表达式转化为易操作的char类字符数组。
2.2 在运算时,要区分运算符和数字,将它们分别存到两个数组中,由于加减乘除运算符都是二元的,所以数字的个数一定比运算符的个数多一个。
3. 运算3.1 在运算时,第i 个运算符要做的是将第i 个数字与第i+1个数字相运算,运算完后将值赋给第i 个数字,而i 后面的每一个数字都可以往前面挪一个;运算符自运算过的运算符后的每一个都可以往前挪一个。
形象地表示为:在进行一次运算后,若后面补过来的运算符是与它同等级的,则此时的i 依旧没变,所以再对该i 进行运算。
3.2 运算符的优先级。
乘除的优先级大于加减,所以先对乘除进行以上的计算,同样同等级的i 不变,若变化后的b[i]不为乘除,则i++,看下一个运算符。
4.附加功能4.1 括号括号采用递归运算。
运算的函数得到一个CString类型的形参,返回一个float 型的值。
要处理括号,则截取括号里的字符串,递归调用运算的函数,将返回的值存到float 型的数组中去。
4.2 三角函数,指数函数,对数函数采用和括号相类似的方式,在解析时,若读到有三角函数,则递归计算三角函数括号内的式子,将返回的值用<cmath>中的函数计算。
4.3十进制与十六进制的转换将十六进制转化为十进制,只要从左向右,第i个数字乘以16的i-1次幂即可;将十进制转化为十六进制,则要将对16取模,再将得到的char数组倒置一下。
系统功能模块图系统流程图类的层次图关键程序代码1.显示输入UpdateData(true);m_strInput+="0";UpdateData(false);2.将CString转化为字符数组const int len=m_strInput.GetLength();char m[100];memcpy(m,m_strInput,len);3.将存在字符数组的数字转为float型数字存在float型的数组里for(i=0;i<len;){int c=0,j=i;if(m[j]>='0'&&m[j]<='9'){while(m[j]>='0'&&m[j]<='9'){num[countNum]=num[countNum]*10+(m[j]-'0');j++;c++;} //没有小数点的读法if(m[j]=='.'){c++;float t=static_cast<float>(0.1);j++;while((m[j]-'0'>=0)&&(m[j]-'0'<=9)){num[countNum]+=t*static_cast<float>(m[j]-'0');t*=static_cast<float>(0.1);j++;c++;}} //有小数点countNum++;}//取数字4.取运算符if(m[i]=='+'||m[i]=='-'||m[i]=='*'||m[i]=='/'){op[countOperator]=m[i];c++;countOperator++;} //取运算符5.运算(以乘法为例)for(i=0;i<countOperator;) //先计算乘除{if(op[i]=='*'||op[i]=='/'){if(op[i]=='*'){count1++;num[i]*=num[i+1];op[i]=op[i+1];int j;for(j=i+1;j<countNum-1;j++) //每算完一次后该数字后面的数字都往前挪一个,运算符也都往前挪一个{num[j]=num[j+1];}num[j]=0;for(j=i+1;j<countOperator-1;j++){op[j]=op[j+1];}op[j]='0';}}elsei++;6.遇括号和cmath中的函数递归(以括号为例)CString b=a;b = b.Left(b.Find(')'));b = b.Right(b.GetLength()-1-b.ReverseFind('('));num[countNum]=Processing(b);c+=2+b.GetLength();countNum++;7.左右括号不符合报错if(m_strInput.Find('(')*m_strInput.ReverseFind(')')<0)AfxMessageBox("Syntax Error!");总结1.功能:该计算器能在实数范围内进行加减乘除四则混合运算,并通过加括号改变运算次序,能计算三角函数值(弧度制),能计算指数函数和对数函数(以e为底),能将数字在十进制与十六进制间进行转化。
MFC计算器编程设计报告地信091指导老师:2010.11.15一(题目:利用MFC框架编写简易计算器要求使用MFC框架在Visual Studio 6.0环境下编写一个简易的计算器,支持任意位数的加减乘数,正负转换,并且实现BackSpace CE C功能。
二(设计过程1. Windows消息处理机制的理解首先编写程序需要对Windows程序的消息处理机制(Message Handle)有个比较清晰的了解。
Windows的程序都是通过消息来传送数据,有不需要用户参与的系统消息,比如异常处理等。
还有用户消息,比如鼠标的单击,双击,键盘的键入等。
2. 界面的设计仿照Windows附件里面的计算器,在资源视图中画好界面,如图:主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。
拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。
3. 建立的变量,控件的命名,对应的消息处理函数对应表ID CAPTION Message Handler简易计算器 1.0 Beta1版 IDD_CALC_DIALOG N/A IDC_NUM0 0 OnNum0IDC_NUM1 1 OnNum1IDC_NUM2 2 OnNum2IDC_NUM3 3 OnNum3IDC_NUM4 4 OnNum4IDC_NUM5 5 OnNum5IDC_NUM6 6 OnNum6IDC_NUM7 7 OnNum7IDC_NUM8 8 OnNum8IDC_NUM9 9 OnNum9IDC_NEG +/- OnNegIDC_PT . OnPtIDC_DIV / OnDivIDC_MUL * OnMulIDC_MIN - OnMinIDC_ADD + OnAddIDC_BACKSPACE BACK OnBackspaceIDC_CE CE OnCeIDC_CLEAR C OnClearIDC_EQU = OnEquIDC_DIS N/A N/AOnCal(double num) 变量定义:double poz; //保存小数点的位置,初始化为1,表示poz-1个小数点。
题目基于MFC的多功能计算器设计一、设计目标编写一个计算器。
二、语言环境编程语言: C++开发环境: VS目标软件运行平台: Windows 64位机三、软件功能:1.图形化界面。
2.实现计算器的功能。
3.输入加减乘除表示式, 能够计算其结果。
4.基本功能: 计算表示式, 计算阶乘, 计算组合数, 次幂, 求次幂后取余, 简单的分数加减乘除计算。
5.扩展功能: 在以上功能完成的基础上, 可完成更高精度的计算,实现简单高精度的加减乘除阶乘运算。
基于MFC的多功能计算器设计摘要计算器是人们日常生活中常见的电子产品之一, 在人们的生活中有着非常广泛的应用, 随着科学的进步, 计算器的种类和功能也更加丰富。
本次课程设计旨在基于MFC框架设计一个多功能计算器, 能够实现含括号的表示式计算, 三角函数、开方、阶乘、排列组合等数学计算, 进制转换, 超过long long范围的整数运算以及简单的分数四则运算。
此次设计的多功能计算器是基于MFC的框架, 以C++编程语言完成的, 计算器使用中缀表示式求值的算法计算含括号的表示式, 使用C++标准库函数进行相应的数学计算, 利用Boost库实现高精度的整数运算。
本计算器不但功能丰富, 而且具有美观、功能清晰且操作方便的界面。
经多次测试, 本计算器能即时准确地获得所需的计算结果, 而且能在输入错误时进行相应处理, 充分降低了计算时的难度, 节约了时间。
经过本次课程设计, 掌握了MFC基本框架, 对基本算法有了更加深入的了解。
关键词: 多功能计算器; MFC; C++编程语言; 表示式计算; 高精度目录课题分析 (4)总体设计 (5)详细设计 (6)3.1普通计算与科学计算 (6)3.2高精度计算 (10)3.3其他计算 (11)3.3.1分数计算 (11)3.3.2组合数计算 (11)3.3.3进制转换 (12)程序调试与问题解决 (12)4.1输入表达式错误引发程序异常 (12)4.2输入表达式格式有误 (13)4.3计算排列组合溢出 (14)运行结果 (14)总结 (17)课题分析本次设计为多功能计算器, 需要实现多种功能, 为了使界面更加美观, 功能更加清晰明了, 也为了让使用者便于操作, 因此本计算器使用MFC中的Tab Control控件对计算器进行分页[1], 将计算器分为了四个板块, 分别为: 普通计算、科学计算、高精度计算和其它计算。
设计一个简单的计算器应用程序
一、设计目标与内容
1.了解Windows编程的基础知识, 掌握MFC应用程序的基本知识;
2.基本掌握面向对象程序设计的基本思路和方法;
3.掌握用VC++开发应用程序的的一般步骤和方法;
4.能够利用所学的基本知识,设计一个简单的计算器应用程序, 实现基本的加、减、乘、除、求平方根, 求倒数等基本运算( 必须实现的功能) , 实现求角度的正弦、余弦、正切等基本运算、实现求指数、自然对数、常见对数等基本运算( 这部分功能选做) 。
5.在程序中注意处理数据和运算符的输入, 计算结果的显示。
二,设计要求
1.用VC++进行编码, 实现应用程序的功能。
注重编码质量, 代码要有适当的注释;
2.提交设计报告一份( 课程设计任务书、目录、设计的基本思路、设计的步骤及主要代码、心得体会、参考文献) 。
一个简单的计算器应用程序
总体设计
能够利用所学的基本知识,设计一个简单的计算器应用程序, 实现基本的加、减、乘、除、求平方根, 求倒数等基本运算( 必须实现的功能) , 实现求角度的正弦、余弦、正切等基本运算、实现求指数、自然对数、常见对数等基本运算( 这部分功能选做) 。
在程序中注意处理数据和运算符的输入, 计算结果的显示。
详细设计
◆新建工程Counter
新建工程, 选择对话框应用程序。
◆程序运行主界面
图2-1
在对话框内添加相应的控件, 分别给编辑框添加三个变量m_N1,m_N2和m_Result。
然后添加一个组合框, 在里面添加十二个单选按钮设置第一个单选按钮为组, 如图
图2-2
然后给对话框类添加一个int变量Operator用来作相应运算时的标记。
给控件添加相应的函数
1、给单选按钮添加相应的函数
void CCounterDlg::OnRadio1()
{
Operator=1;
}
void CCounterDlg::OnRadio2()
Operator=2;
}
void CCounterDlg::OnRadio3() {
Operator=3;
}
void CCounterDlg::OnRadio4() {
Operator=4;
}
void CCounterDlg::OnRadio5() {
Operator=5;
}
void CCounterDlg::OnRadio6() {
Operator=6;
void CCounterDlg::OnRadio7() {
Operator=7;
}
void CCounterDlg::OnRadio8() {
Operator=8;
}
void CCounterDlg::OnRadio9() {
Operator=9;
}
void CCounterDlg::OnRadio10() {
Operator=10;
}
void CCounterDlg::OnRadio11()
{
Operator=11;
}
void CCounterDlg::OnRadio12()
{
Operator=12;
}
用来作相应的操作时标记Operator的值。
2、给Button1( 计算) 添加相应的函数void CCounterDlg::OnButton1()
{
UpdateData();
double i=0,j=1;
switch(Operator)
{
case 1:
m_Result=m_N1+m_N2;break;
case 2:
m_Result=m_N1-m_N2;break;
case 3:
m_Result=m_N1*m_N2;break; case 4:
if(m_N2==0)
MessageBox("除数不能为零! ");
else
{
m_Result=m_N1/m_N2;break;
}
case 5:
if(m_N1==0)
MessageBox("分母不能为零! ");
else
{
m_Result=1/m_N1;break;
}
case 6:
if(m_N2==0)
m_Result=1;
else
{
for(i=0;i<m_N2;i++)。