MFC计算器课程设计报告

上传人:wuy****ng 文档编号:125305124 上传时间:2022-07-26 格式:DOC 页数:7 大小:76.50KB
收藏 版权申诉 举报 下载
MFC计算器课程设计报告_第1页
第1页 / 共7页
MFC计算器课程设计报告_第2页
第2页 / 共7页
MFC计算器课程设计报告_第3页
第3页 / 共7页
资源描述:

《MFC计算器课程设计报告》由会员分享,可在线阅读,更多相关《MFC计算器课程设计报告(7页珍藏版)》请在装配图网上搜索。

1、MFC计算器课程设计报告计算机应用3班 黄锦湫,罗洁,饶益指导老师:蒋鹏一题目:利用MFC框架编写简易计算器要求使用MFC框架在Visual Studio 6.0环境下编写一个简易的计算器,支持任意位数的加减乘数,正负转换,并且实现BackSpace CE C功能。二设计过程1. Windows消息处理机制的理解 首先编写程序需要对Windows程序的消息处理机制(Message Handle)有个比较清晰的了解。Windows的程序都是通过消息来传送数据,有不需要用户参与的系统消息,比如异常处理等。还有用户消息,比如鼠标的单击,双击,键盘的键入等。2. 界面的设计仿照Windows附件里面的

2、计算器,在资源视图中画好界面,如图: 主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。3. 建立的变量,控件的命名,对应的消息处理函数对应表IDCAPTIONMessage HandlerIDD_CALC_DIALOG简易计算器 1.0 Beta1版N/AIDC_NUM00OnNum0IDC_NUM11OnNum1IDC_NUM22OnNum2IDC_NUM33OnNum3IDC_NUM44OnNum4IDC_NUM55OnNum5IDC_NUM66OnNum6IDC_NUM77

3、OnNum7IDC_NUM88OnNum8IDC_NUM99OnNum9IDC_NEG+/-OnNegIDC_PT.OnPtIDC_DIV/OnDivIDC_MUL*OnMulIDC_MIN-OnMinIDC_ADD+OnAddIDC_BACKSPACEBACKOnBackspaceIDC_CECEOnCeIDC_CLEARCOnClearIDC_EQU=OnEquIDC_DISN/AN/AOnCal(double num)变量定义:double poz; /保存小数点的位置,初始化为1,表示poz-1个小数点。doublem_Dis; /Edit控件上需要显示的数字BOOL point_fl

4、ag; /小数点表示位,判定是否是小数,是小数为1,不是小数为0。double numfirst; /保存计算过程中的前一个数字,double numsecond;/保存计算过程中的第二个数字 char op;/记录当前的计算符号,可以为+,-,*,/,=,c,n变量初始化:poz=1; m_Dis = 0.0;numfirst=0;numsecond=0;op=0;4. 设计思路a) 首先考虑对所有按键分为两类,数字类和符号类,0,1,2,3,4,5,6,7,8,9为数字类,+,-,*,/,=为符号类。数字在计算的过程中最多需要保存两个,所以定义了两个double型变量numfirst和nu

5、msecond来进行存储。符号需要一个char op来存储。b) 然后考虑在计算的过程中,numfirst和numsecond的存储状态有三种,一种是numfirst=0 & numsecond=0 也就是程序刚开始运行还没有开始录入数字的状态。二种是numfirst!=0 & numsecond=0 也就是第一个数字已经录入,符号也已经录入时候把m_Dis的值直接赋值给numfirst,第三种是numfirst!=0 &numsecond!=0,表示可以通过op来把两数合并为一个数。c) 考虑到该计算器支持连续的计算,比如3.33+1.33*88/96= ?。所以必须在点符号Button也要

6、计算出之前的结果,通过判断op,来计算,把两个数字合并为一个数字,方便下一次运算,功能近似于点=,所以把=也划分到符号类。d) 因为数字全部使用的是double,键入的数字必须通过一定的处理达到累加的效果,加上小数和整数的处理差异性大,所以分别用point_flag来判断,分别出来小数和整数。5. 成员函数及其释义因为对OnNum0()到OnNum9()的处理函数差异仅在一个数字上,可以通过调用一个共同的函数OnCal(double num)来简化源代码长度,增加模块性。void CCalcDlg:OnCal(double num)/分三种状态来处理if(numfirst!=0 & numse

7、cond!=0)if(point_flag=TRUE) /判定为小数poz*=0.1; /小数进位m_Dis=m_Dis+poz*num;/递增UpdateData(false); /把结果从内存传递到屏幕elsem_Dis=m_Dis*10+num;UpdateData(false);if(numfirst!=0 & numsecond=0) if(point_flag=TRUE)poz*=0.1; m_Dis=m_Dis+poz*num;UpdateData(false); else/判定为整数m_Dis=m_Dis*10+num;/递增UpdateData(false);if(numfi

8、rst=0 & numsecond=0)if(point_flag=TRUE)poz*=0.1; m_Dis=m_Dis+poz*num;UpdateData(false); elsem_Dis=m_Dis*10+num;UpdateData(false); 以OnAdd()为例子讲解符号的处理函数,函数的功能是先判定之前按下字符时op的值,更具op的值来进行相应的运算。void CCalcDlg:OnAdd() /根据numfirst和numsecond和op的值分为5种状态。if(numfirst!=0 & numsecond=0&op=+)numsecond=m_Dis; numfirs

9、t=numfirst+numsecond; /之前按的是加把两个数赋值到前一个数m_Dis=numfirst;/赋值给屏幕numsecond=0; /从新赋值为0,清空,不影响下一次判断UpdateData(FALSE);m_Dis=0; /屏幕的值同时清空if(numfirst!=0 & numsecond=0&op=-)numsecond=m_Dis;numfirst=numfirst-numsecond;m_Dis=numfirst;numsecond=0;UpdateData(FALSE);m_Dis=0;if(numfirst!=0 & numsecond=0&op=*)numsec

10、ond=m_Dis;numfirst=numfirst*numsecond;m_Dis=numfirst;numsecond=0;UpdateData(FALSE);m_Dis=0;if(numfirst!=0 & numsecond=0&op=/)numsecond=m_Dis;numfirst=numfirst/numsecond;m_Dis=numfirst;numsecond=0;UpdateData(FALSE);m_Dis=0; if(numfirst=0 & numsecond=0) /该状态为程序启动还没有开始录入输入的状态numfirst=m_Dis; /屏幕的值赋值到num

11、firstUpdateData(FALSE); m_Dis=0;op=+; /最后记录最后一个操作是+poz=1;/小数点位置归位point_flag=FALSE;/默认小数点标志为整数,也就是0,也就是FALSE“+/-“按钮的处理函数void CCalcDlg:OnNeg() m_Dis=-m_Dis;/换个符号,其他都一样UpdateData(FALSE);poz=1;point_flag=FALSE;.按钮的处理函数void CCalcDlg:OnPt() point_flag=TRUE; /把标志位改为“小数点”状态“Backspace”按钮的处理void CCalcDlg:OnBa

12、ckspace() /主要通过_gcvt()和strtod()函数进行字符串和浮点数之间的转换char buffer30; /定义个装字符的数组_gcvt(m_Dis,sizeof(m_Dis),buffer); /把m_Dis存的数字转换为stringfor(int i=0;i30;i+) if(bufferi=.& bufferi+1=0)/判断是否为整数point_flag=FALSE; /标志位设置为“整数位”break;if(point_flag=TRUE) /如果是小数for(int j=0;jmessage,pMsg-wParam,pMsg-lParam); return CDialog:PreTranslateMessage(pMsg);总结:本次MFC计算器的制作,学习到了MFC基本的编程方法,增加了小组开发的团结协作能力。对OOP编程的理解进一步加深。但是程序仍然没存在一定的问题,比如除数不能为0的Exception handle,符号键多次点击结果混乱。由于时间仓促,如果有更多的时间,必定这些问题会迎刃而解。通过这次课程设计,以后Windows 应用程序势必会轻车熟路。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!