欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    MFC简单计算器设计正文.docx

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

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

    MFC简单计算器设计正文.docx

    1、MFC简单计算器设计正文实用计算器程序1.基本功能描述计算器是人们日常生活中非常实用的计算工具。预期设计目标与实际计算器为标准,Windows 10系统提供的计算器为范例进行设计。实用计算器 要实现单目运算和双目运算。单目运算主要包括阶乘、正弦、余弦;双目运算主要包括加、减、乘、除、乘幂等。计算器要能够对输入的各种数据进行处理,包括小数、整数、负数等数据进行操作。实际过程中要能够对不同的数据灵活判断执行。同时要能够对不满足运算符的操作数,提示出错信息以方便用户进行处理。用户的修改包括清屏和退格。程序设计的重点和难点在于:第一,能够对于不同的操作数和操作符进行连续运算,运算过程中要有优先级的判断

    2、,根据优先级执行不同的运算顺序;第二,能够用一个编辑框实现运算表达式的显示和结果的输出。编程环境采用Visual Studio 2017提供的MFC建立对话框应用程序,设计界面要简单大方,并提供程序所有功能的接口。2.设计思路表1 操作符优先级设计优先级操作符1阶乘、正弦、余弦2乘幂3乘、除4加、减对对话框编辑框关联一个变量从中读取数据,按下数字键时对数据数组num进行更新,其中num0表示的是当前已经存储变量的个数。由于算法设计为四层优先级,且单目运算的优先级最高。当按下相应单目运算符,首先将当前数据数组的最后一个存储(防止按下Backspace退格发生错误),并将此位数据执行运算后重新赋值

    3、。但按下双目运算符相应按键后,将计数num0+,同时将运算符的类型和位置记录。当按下等于之前,这样就将一个单目双目混合的运算表达式转化为双目运算。如果没有按下等号键,则继续执行循环。在按下等号按钮之后,按照先乘幂、再乘除、后加减的运算顺序执行运算,将最后结果保存并显示。(在实际的计算器中,执行完运算之后,按下运算符的操作键,最终结果将按照左操作数的形式出现,故需要保存变量。)如果用户没有结束程序,在运行初始化程序,进行下一次运算,否则直接退出。图1 程序流程图3.软件设计 设计步骤 1)创建基于对话框的程序利用AppWizard建立应用程序框架,创建一个基于对话框的MFC工程,命名为“feng

    4、wanjincalculator”,如图2所示。在图3显示的应用程序类型中选择基于对话框。创建成功后,系统自动生成相应程序文件。图2 创建MFC工程图图3 应用程序类型选择图2)定义成员变量添加相应变量和标志位,以方便程序的编写,主要变量如表2所示:表2 成员变量表变量名变量类型变量作用mystrCString编辑框关联变量m_editFontCFont设置编辑框字体numfloat存储操作数flagdianbool点号标志位flagdengyubool等号标志位flagerrorbool错误标志位Jiajianint存储加减运算符的位置4)添加事件处理程序MFC应用程序是通过消息响应来进行各

    5、项操作的,必须在对话类中加入消息处理函数来处理这些事件。当点击相应控件,在进入WinMain函数之前,每个可以响应消息的MFC类都生成了一个消息映射表,程序运行时通过查询该表判断是否需要响应某条消息。在相应控件单击右键,弹出图4,选择添加事件处理程序,在图5的事件处理程序向导中选择fengwanjincalculatorDlg类,消息类型选择为BN_CLICKED,即左键单击。图4 添加事件处理程序图5 选择添加事件处理程序类型在完成上述操作后 MFC使用ClassWizard帮助实现消息映射,它在源码中添加一些消息映射的内容,并声明和实现消息处理函数。首先,在类的定义(头文件)里,它增加了消

    6、息处理函数声明,并添加一行声明消息映射的宏DECLARE_MESSAGE_MAP。在类的实现(实现文件)里,实现消息处理函数,并使用IMPLEMENT_MESSAGE_MAP宏实现消息映射。BEGIN_MESSAGE_MAP*END_MESSAGE_MAP 界面设计图5 向对话框添加控件在项目的资源视图中找到位于Dialog下的对话框,如图4所示。添加相应控件,完成用户界面设计。图6 用户界面设计 其中编辑框行为下Multiline属性设置为True,作为多行编辑框。第一行显示算式,第二行结果。整体上将控件分为四组,数值控件区NUM,加减乘除一般运算控件区NORMAL,阶乘、乘幂、正余弦科学运

    7、算控件区SCIENCE以及清零退格控件。设计完成后的界面如图7所示。图7 用户界面 设计的界面中只有编辑框关联Cstring类型变量mystr。其余控件关联相应的消息处理函数。 关键功能的实现 程序主要分为数值、单目运算、双目运算、清除等。1) 数值控件消息处理函数void CfengwanjincalculatorDlg:OnBnClickedButton1() shuzihanshu(L1, 1);考虑到09数字的处理函数有很大的相似处,所以都采用调用shuzhihanshu函数的方法执行。shuzhihanshu包含两个参数,分别是数值对应字符和相应数值。其具体实现如下:void Cfe

    8、ngwanjincalculatorDlg:shuzihanshu(char shuzi, int shuzhi)结论与心得体会1、Windows编程中可能会遇到可能会遇到各种编译问题,例如编译环境的设置,具体函数的调用。同时Windows为程序员提供了大量的库函数,在具体实践的过程中,要充分利用书籍和网络查阅相关函数和环境设置,减轻编程负担。2、考虑到编程的难度,首先编写了未设置优先级的表达式运算,后又通过在原先程序的基础上,编写了设置优先级的程序。由于两种方式在算法设计上有很大不同,导致了程序改进的困难。3、由于在编程思想方面并没有参照网上的先例,也没有采取堆栈的方式进行优先级的运算,在具

    9、体编程的过程中遇到了很多细节问题。所以在日后的编程中要注意,算法与数据结构的结合。4、相较于传统的C+编程,MFC的编程不仅要考虑算法和数据结构的问题,还需要考虑环境、用户界面的美观便捷等问题,编程的难度更大,出现的问题也更多,在编程的过程中渐渐提高了自己的耐性和对于新事物的应用能力。5、从本次编程的结果来看,此次编程需要提高的方面还很多,人机交互界面的设计、程序算法的统一性、可读性都有待提高。在程序的设计过程中主要参考了Windows 10参做系统自带的计算器,交互界面如图8所示:图8 Windows 10计算器 仅从界面看,差距还很大。但是任何一个程序都不可能是完美的,这款计算器在调试的过

    10、程中也发现了一些bug,所以在日后更加重要的学习和工作中的编程过程中,要注意程序的调试和检查,完善任何一个优秀程序都是需要细致耐心的打磨。5. 思考题1、程序如何实现小数的显示和运算? 首先,数值数组采用float类型,可以实现整形和浮点型的统一运算。在读取数值的过程中要加入小数点的判断,如果出现了小数点,则在之后读取的每一个数值需要将相应的倍数每次除以10乘以读出的数值与原数值相加得到。例如changevalue函数: void CfengwanjincalculatorDlg:changevalue() if (!flagdian) num(int)num0 = data + num(in

    11、t)num0 * 10; else beishu /= 10; num(int)num0 = num(int)num0 + data * beishu; 对于例如阶乘等只能对于整形进行运算的运算符或函数,首先对数值取证判断其是否与原数据相等,如果相等则可以进行相应运算。如果不同,则通过AfxMessageBox函数弹出错误提示,错误窗口如图9所示:图9 错误提示窗口2、描述等号对应的消息处理函数中需要问题及相应实现代码? 点击等号控件,则首先要进行表达式是否正确的判断(本次程序编写过程中,运算符操作的合法性检查放在了每个运算符的函数中,故在等号的消息处理函数中不需要再添加),将结果计算得出并显

    12、示在窗口上,同时设置相应的标志。具体代码如下:void CfengwanjincalculatorDlg:OnBnClickedButtonDeng()pp文件中忘记相应函数实现的编写,编译运行过程中仅提示找不到相应的.exe文件。通过pause函数等暂停函数到某一点,找到错误的区间解决问题。2、结果错误问题此类问题在本次编程过程中遇到的情况较多,采用的自己模拟程序执行流程发现问题,如果不能通过这种方式发现,则通过设置断点,单步执行观察变量在每一步中的变化,并于自己的设想相比较发现问题。 测试结果1、键入表达式125+6*5-8!+73点击等号得到表达式的结果,与实际相一致,如图10所示。图1

    13、0 键入数值并执行运算2、点击加号后可以继续执行运算。图11 点击加号继续运算3、按下数值9,清屏屏显示数值9图12 按下数值94、清屏图13 清屏5、错误提示图14 错误提示关键源代码1、文件中自定义变量和函数的相应声明:public: int jiajian10; flagdian = 0; mystr = () - 1); else num0-; switch (temp) case 43: case 45: jiajianjiajian0 = 0; jiajian0-; mystr = () - 1); break; case 42: case 47: chengchuchengchu

    14、0 = 0; chengchu0-; mystr = () - 1); break; case 33: num0+; num(int)num0 = nextdata2 * (int)nextdata0; nextdata2 * (int)nextdata0 - 1 = 0; nextdata0-; mystr = () - 1); break; case 94: mizhimizhi0 = 0; mizhi0-; mystr = () - 1); break; case 110: num0+; num(int)num0 = nextdata2 * (int)nextdata0; nextdat

    15、a2 * (int)nextdata0 - 1 = 0; nextdata0-; mystr = () - 3); break; case 115: num0+; num(int)num0 = nextdata2 * (int)nextdata0; nextdata2 * (int)nextdata0 - 1 = 0; nextdata0-; mystr = () - 3); break; default: break; flaglast = 0; UpdateData(FALSE);6、改变数值数组void CfengwanjincalculatorDlg:changevalue() if

    16、(!flagdian) num(int)num0 = data + num(int)num0 * 10; else beishu /= 10; num(int)num0 = num(int)num0 + data * beishu; 7、表达式求值函数void CfengwanjincalculatorDlg:calculator(); flagdian = 1; flaglast = 0; UpdateData(FALSE);void CfengwanjincalculatorDlg:sincos() if (nextdata2 * (int)nextdata0 - 1 = Sin) nex

    17、tdata2 * (int)nextdata0 = num(int)num0; num(int)num0 = sin(num(int)num0); nextdata2 * (int)nextdata0 - 1 = -Sin; if (nextdata2 * (int)nextdata0 - 1 = Cos) nextdata2 * (int)nextdata0 = num(int)num0; num(int)num0 = cos(num(int)num0); nextdata2 * (int)nextdata0 - 1 = -Cos; void CfengwanjincalculatorDlg:OnBnClickedButtonJia()本功能描述 12.设计思路 13.软件设计 3 设计步骤 3 界面设计 5 关键功能的实现 74. 结论与心得体会 95. 思考题 106、附录 12 调试报告 12 测试结果 13关键源代码 15


    注意事项

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

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开