好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

基于mfc的计算器实践报告(vs2022).docx

10页
  • 卖家[上传人]:1980****057
  • 文档编号:273876227
  • 上传时间:2022-04-07
  • 文档格式:DOCX
  • 文档大小:14.87KB
  • / 10 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 基于mfc的计算器实践报告(vs2022) 目录 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 Studio2022,在文件中点击新建,在弹出框内选择MFC 应用程序工程,输入工程名Calculate及其所在位置,点击确定,如图3所示 图3 新建MFC应用程序工程 这样在MFC应用程序下建立了一个基于对话窗口的程序框架,如图4所示 图4 新建的对话框 1、创建控件 在图4所示的在资源视图选项卡中打开Calculate资源组,双击IDD_Calculate_DIALOG,在右边的窗口中显示出待编辑的对话框开始摆放控件,包括编辑框和按钮的创建。

      表1 各按钮和编辑框等对象的属性 完成后界面如图5所示 图5 计算器界面 2、连接变量和代码 1) 给编辑框连接变量在编辑框上单击鼠标右键,在弹出菜单中选择ClassWizard菜单项,弹出MFC ClassWizard对话框,选择成员变量选项卡,如图6所示 图6 MFC类向导对话框中的成员变量选项卡在选择ID列表框中选择IDC_EDIT1,单击添加变量按钮,在弹出的对话框中连接变量m_num变量类型设定为doubel型 3.3 关键功能的实现 1)操作数的输入 编辑框所关联的变量为m_num,程序开始时为零每按下一个数字键按钮,就把它累加到m_num里并刷新显示整型变量xsd来判断是否有小数点和一个double型xsw来表示小数点后的数据的位数当xsd=0时,表示无小数点,否则则表示有小数点按下小数点按钮后执行xsd=1当按下一个数字键时,首先判断m_numd的正负,再根据xsd判断是否按下小数点,若有则把小数点后数的位数xsw*0.1,将键入的数除以xsw然后正数累加,负数累减到编辑框所关联的变量m_num上,若没有则把m_num乘以10,然后累加或累减到编辑框所关联的变量m_num上。

      2)单目运算符功能的实现 由于单目运算符中必须有执行运算的函数,因而头文件中要加入math.h,如m_num=sqrt(m_num).按下按钮即可实现其功能 3)双目运算符功能的实现 双目运算符需要两个操作数才能运算,所以在执行双目运算符按钮的函数代码中,要把m_num中的值保存到变量num1中,然后把m_num清零这样即可保存第一个操作数另外先定义了一个整形变量cal,在不同的双目运算符中给cal赋不同的值,然后在等号中用switch语句来匹配cal值来判断需要执行何种双目运算 4)退格键功能的实现 当按下一次退格按钮时,若m_num为整数,只需对其中数据除以10再取整(floor()和ceil()函数)即可,若按下一次退格按钮为小数,则根据小数点后数据的位数xsw进行操作,先对xsw乘以10,然后被m_num除取整,接着与xsw 相乘即可 4 结论与心得体会 经过多番测试,得出结论为设计的计算器能够完成功能描述内容中的全部功能 正所谓“纸上谈兵终觉浅,觉知此事要躬行所以在本学期课程设计是很及时、很必要的这样不仅能加深我们对MFC程序设计的掌握,而且还及时、真正的做到了学以致用。

      主要是以下几点 基本功要过硬不能马虎经常犯犯小错误提高自己找错纠错能力,通常错误总是那几种,多练习就熟练了 要善于查找资料提高自己的资料查询能力,要善于利用网络来获得知识,获 得帮助开始着手程序设计时,有些功能感觉无从下手,都不知道要干什么这 些问题只要找到相关的资料就会得到提示从而理解所要解决问题的大致方向有 了明确的目的,就可以发挥自己的头脑来完成它了 要善于思考程序中有些实现难点和最初完成程序时免不了的许多不足就需 要自己根据代码认真思考来解决只有这样才能纠正程序的不足并使其更加人性 化 5编程中的困难及解决方法 描述等号对应的消息处理函数中需要处理的问题及相应的实现代码? 答:在双目运算符按钮函数代码中将整形变量cal赋值,然后在等号中用 switch语句来匹配cal值来判断需要执行何种双目运算,保存结果便于下次计算和一些变量的清零实现代码见6.3 怎样在编辑框中实现中文字提示? 经网上查找,使用SetWindowText("XXXXXXX");可以实现该功能,但是经过多次尝试,却总是出现如下的错误: 经过多次查找资料和尝试最终发现需要一个转换的操作就是在用_T()进行 转换。

      如上GetDlgItem(IDC_EDIT1)->SetWindowText(_T("结果过大,无法显示")); 就可以了! 6 附录 6.1 调试报告 6.2 测试结果 1.输入“90.5”,“-”,“60.7”,“=”,“+”,“ 2.36”,“ =”,,得到结果 如图7 图7结果图1 2.输入“0”,“ln”,结果如图2 图7结果图2 证明错误提示功能实现正常 6.3 关键源代码 1、数字键0的程序: void CCalculateDlg::OnClickedButton10() { {if (m_num>=0) { if(xsd==0) m_num=m_num*10+0; else { m_num=m_num+xsw*0; xsw*=0.1; } UpdateData(false); } else { if(xsd==0) m_num=m_num*10-0; else { m_num=m_num-xsw*0; xsw*=0.1; } UpdateData(false); } } } 2、加法键+的程序:(-,*,/,x,x^y的代码类似) void CCalculateDlg::OnBnClickedplus() { cal=1; num1=m_num; m_num=0; xsd=0; xsw=1.0; } 3、= 键的程序: void CCalculateDlg::OnBnClickedequal() { switch (cal) { case 1: m_num=m_num+num1; UpdateData(false); //数oy据Y刷?é新? break; case 2: m_num=num1-m_num; //两¢?数oy相¨¤减? UpdateData(false); //数oy据Y刷?é新? break; case 3: m_num=num1*m_num; //两¢?数oy相¨¤乘? if(m_num>=1.7e308||m_numSetWindowText(_T("结果太大,无法显示!")); UpdateData(false); //数oy据Y刷?é新? break; 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.