欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    MFC计算器课程设计报告.docx

    • 资源ID:26482657       资源大小:14.29KB        全文页数:10页
    • 资源格式: DOCX        下载积分:30金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要30金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    MFC计算器课程设计报告.docx

    MFC计算器课程设计报告 MFC计算器课程设计报告计算机应用3班黄锦湫,罗洁,饶益 指导老师:蒋鹏 2022.3.15 一题目:利用MFC框架编写简易计算器 要求使用MFC框架在Visual Studio 6.0环境下编写一个简易的计算器,支持任意位数的 加减乘数,正负转换,并且实现BackSpace CE C功能。 二设计过程 1.Windows消息处理机制的理解 首先编写程序需要对Windows程序的消息处理机制(Message Handle)有个比较清晰的了解。 Windows的程序都是通过消息来传送数据,有不需要用户参与的系统消息,比如异常处理等。还有用户消息,比如鼠标的单击,双击,键盘的键入等。 2.界面的设计 仿照Windows附件里面的计算器,在资源视图中画好界面,如图: 主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。拖出 的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。 3. 变量定义: double poz; /保存小数点的位置,初始化为1,表示poz-1个小数点。 double m_Dis; /Edit控件上需要显示的数字 BOOL point_flag; /小数点表示位,判定是否是小数,是小数为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和numsecond来进行存储。符号需要一个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也要计算出之前的结果,通过判断op,来计算,把两个数字合并为一个数字, 方便下一次运算,功能近似于点=,所以把=也划分到符号类。 d)因为数字全部使用的是double,键入的数字必须通过一定的处理达到累加的效果, 加上小数和整数的处理差异性大,所以分别用point_flag来判断,分别出来小数和 整数。 5.成员函数及其释义 因为对OnNum0()到OnNum9()的处理函数差异仅在一个数字上,可以通过调用一个共同的函数OnCal(double num)来简化源代码长度,增加模块性。 void CCalcDlg:OnCal(double num) /分三种状态来处理 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(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(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); 以OnAdd()为例子讲解符号的处理函数,函数的功能是先判定之前按下字符时op的值,更具op的值来进行相应的运算。 void CCalcDlg:OnAdd() /根据numfirst和numsecond和op的值分为5种状态。 if(numfirst!=0 && numsecond=0&&op='+') numsecond=m_Dis; numfirst=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='*') numsecond=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; /屏幕的值赋值到numfirst UpdateData(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:OnBackspace() /主要通过_gcvt()和strtod()函数进行字符串和浮点数之间的转换 char buffer30; /定义个装字符的数组 _gcvt(m_Dis,sizeof(m_Dis),buffer); /把m_Dis存的数字转换为string for(int i=0;imessage,pMsg->wParam,pMsg->lParam); return CDialog:PreTranslateMessage(pMsg); 总结: 本次MFC计算器的制作,学习到了MFC基本的编程方法,增加了小组开发的团结协作能力。对OOP编程的理解进一步加深。但是程序仍然没存在一定的问题,比如除数不能为0的Exception handle,符号键多次点击结果混乱。由于时间仓促,如果有更多的时间,必定这些问题会迎刃而解。通过这次课程设计,以后Windows 应用程序势必会轻车熟路。

    注意事项

    本文(MFC计算器课程设计报告.docx)为本站会员(h****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开