ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:464.59KB ,
资源ID:18075496      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18075496.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(简单计算器课程设计Word文档下载推荐.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

简单计算器课程设计Word文档下载推荐.docx

1、图6 Edit属性对话框2)在图3中Controls的“Button”按钮上单击鼠标左键,在对话框上的合适的位置上按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。在按钮上单击鼠标右键,在弹出的快捷菜单中选择属性选项,此时也弹出Push Button属性对话框,如图7所示,在该对话框中输入控件的ID值和标题属性。图7 Push Button属性按照上面的操作过程编辑其他按钮和编辑框等对象的属性。表1 各按钮和编辑框等对象的属性对象ID标题或说明编辑框IDC_xianshi结果显示按钮IDC_BUTTON0IDC_BUTTON11IDC_BUTTON22IDC_BUTTON33IDC_BUTT

2、ON44IDC_BUTTON55IDC_BUTTON66IDC_BUTTON77IDC_BUTTON88IDC_BUTTON99IDC_change+/-IDC_point.IDC_add+IDC_difference-IDC_multiply*IDC_devide/IDC_sqrtsqrtIDC_daoshu1/xIDC_jiechengn!IDC_lnlnIDC_sinsinIDC_coscosIDC_powxyIDC_Onequal=IDC_backspaceBackspaceIDC_OnclearClear完成后界面如图8所示。图8 计算器界面2、连接变量和代码1) 给编辑框连接变量。

3、在编辑框上单击鼠标右键,在弹出菜单中选择ClassWizard菜单项,弹出MFC ClassWizard对话框,选择Member Variables选项卡,如图9所示。图9 MFC ClassWizard对话框中的Menber Variable选项卡在Control IDs列表框中选择IDC_xianshi,单击Add Variables按钮,在弹出的对话框中连接变量m_num。变量类型设定为doubel型。如图10所示。图10 m_num属性设置2) 给“1”按钮连接代码。在“1”按钮上单击鼠标右键,选择ClassWizard菜单项,在弹出的对话框中选择Messages Maps选项卡,然后

4、在Object IDs列表框中选择IDC_ADD_BUTTON,在Messages列表框中选择BN_CLICKED项,即选择单击按钮事件,如图11所示。图11 “1”按钮链接代码对话框3、菜单的设计选择 插入/资源命令,将显示插入资源对话框。如图12所示。选择Menu,点击新建即可。图12 插入资源对话框Resoure View选项卡中打开Menu资源组,双击IDR_MENU1, 然后给菜单添加相应的标题,并把每个菜单对应的ID值与相应的按钮的一致。如图13所示。图13 菜单属性对话框在对话框的任何一个空白域单击鼠标右键,然后在弹出的快捷菜单中选择Properties命令,弹出Dialog P

5、roperties对话框,如图14。在对话框中的菜单组合框中选择IDR_MENU1。图14 对话属性对话框最终的得到的界面如图15。图15 计算器完整界面3.3 关键功能的实现1)操作数的输入编辑框所关联的变量为m_num,程序开始时为零。每按下一个数字键按钮,就把它累加到m_num里并刷新显示。BOOL型变量ele来判断是否有小数点和一个整型数dint来表示小数点后的数据的位数。当ele=TRUE时,表示有小数点,否则则表示无小数点。按下小数点按钮后执行ele=TRUE。当按下一个数字键时,首先根据ele判断是否按下小数点,若有则把小数点后数的位数加1,dint则为此次键入的数所处的位数,将

6、键入的数除以dint个10然后累加到编辑框所关联的变量m_num上,若没有则把m_num乘以10,然后累加到编辑框所关联的变量m_num上。2)单目运算符功能的实现由于单目运算符中必须有执行运算的函数,因而头文件中要加入math.h,如m_num=sqrt(m_num).按下按钮即可实现其功能。为实现连续运算,程序有所改动,参见(6)。3)双目运算符功能的实现双目运算符需要两个操作数才能运算,所以在执行双目运算符按钮的函数代码中,要把m_num中的值保存到变量num2中,然后把m_num清零。这样即可保存第一个操作数。另外先定义了一个整形变量addt,在不同的双目运算符中给addt赋不同的值,

7、然后在等号中用switch语句来匹配addt值来判断需要执行何种双目运算。4)退格键功能的实现当按下一次退格按钮时,若m_num为整数,只需对其中数据除以10再取整即可,若按下一次退格按钮为小数,则根据小数点后数据的位数dint进行操作,先对m_num执行(dint-1)次乘以10运算,然后取整,接着执行(dint-1)次除以10的运算即可。完成后需要把dint将减小1。5) 正负号功能的实现在头文件中定义一个BOOL型变量ele2来判断m_num的正负。ele2=TRUE时表示为正。在键入操作数时需要用到ele2。在正负号按钮的消息响应函数内容为m_num=-m_num;ele2=!ele2

8、。6)连续运算功能的实现要连续运算必须将每次运算的结果保存下来。对于双目运算符:首先在等号按钮的消息处理函数中在m_num清零之前将m_num的值赋给num2.不过这样的话如果再按双目运算符则num2的值将会被覆盖,于是在双目运算符按钮的消息处理函数中将“num2=m_num;”改为“if(m_num!=0)num2=m_num;”.这样若已经保存了结果则不进行覆盖。然后在每个数字按钮前加上“if(addt=0)num2=0;”,这样如果进行完一次运算之后按下任一数字键表示不需要连续运算,则将保存的结果删除,若按下的是双目运算符按钮则可以继续运算。对于单目运算符:每次运算完之后都会对m_num

9、清零,因此其结果也要赋给num2,下次运算是则会用到num2,于是第一次运算时直接将m_num 的值赋给num2,对其进行运算。以开根号为例,在消息处理函数代码中将“m_num=sqrt(m_num);”改为“num2=m_num;m_num=sqrt(num2); num2=m_num;”。但是第一次运算执行完成之后m_num被清零,所以之后将m_num 的值不能赋给num2,代码改为 “if(m_num=0)m_num=sqrt(num2);其他单目运算符同理。为实现连续运算是不需要按下等号即可实现,又在所有的运算符按钮的消息处理函数代码前加上了“if(addt!=0)Onequal();

10、既若之前有按下双目运算符和两个操作数则连续运算再按下任一运算符时会自动调用等号的处理函数将上次的运算完成并保存结果方便下一次的运算。4 结论与心得体会经过多番测试,得出结论为设计的计算器能够完成功能描述内容中的全部功能。经过2个星期的VC+课程设计,我在老师和同学的共同帮助下,顺利完成该课程设计,收获很大。本学期我们开设了面向对象程序设计与VC+实践课MFC部分皆为需要实践内容,正所谓“纸上谈兵终觉浅,觉知此事要躬行。”所以在本学期课程设计是很及时、很必要的。这样不仅能加深我们对MFC程序设计的掌握,而且还及时、真正的做到了学以致用。主要是以下几点。基本功要过硬。不能马虎经常犯犯小错误。提高自

11、己找错纠错能力,通常错误总是那几种,多练习就熟练了。要善于查找资料提高自己的资料查询能力,要善于利用网络来获得知识,获得帮助。开始着手程序设计时,有些功能感觉无从下手,都不知道要干什么。这些问题只要找到相关的资料就会得到提示从而理解所要解决问题的大致方向。有了明确的目的,就可以发挥自己的头脑来完成它了。要善于思考。程序中有些实现难点和最初完成程序时免不了的许多不足就需要自己根据代码认真思考来解决。只有这样才能纠正程序的不足并使其更加人性化。这次课程设计让我学到了很多,不仅是巩固了先前学的MFC程序设计知识,而且也培养了我的动手能力,更令我的创造性思维得到拓展。希望今后类似这样课程设计、类似这样

12、的锻炼机会能更多些!5 参考文献1 揣锦华.面向对象程序设计与VC+实践.西安电子科技大学出版社,20052 张建宏,汤练兵,马德骏.计算机程序设计基础-C语言程序设计.科学出版社,20063 陈清华.Visual C+课程设计案例精选与编程指导.东南大学出版社,20046 思考题1、程序中如何实现小数的显示与运算?答:在09107xuzhujieDlg.h头文件中定义一个BOOL型变量ele来判断是否有小数点和一个整型数dint来表示小数点后的数据的位数。首先根据ele判断是否按下小数点,若有则把小数点后数的位数加1,dint则为此次键入的数所处的位数,将键入的数除以dint个10然后累加到

13、编辑框所关联的变量m_num上。2、描述等号对应的消息处理函数中需要处理的问题及相应的实现代码?在双目运算符按钮函数代码中将整形变量addt赋值,然后在等号中用switch语句来匹配addt值来判断需要执行何种双目运算。并将结果保存以进行下次运算时使用 ,玩策划那个一些变量的清零。实现代码如下:switch (addt) /数据判断case 0: /为实现连续按下两次等号后能清零UpdateData(FALSE); /数据刷新break;case 1:m_num=num2+m_num; /两数相加case 2:m_num=num2-m_num; /两数相减case 3:m_num=num2*m

14、_num; /两数相乘case 4:if (m_num=0) /在除法中,判断除数是否为0GetDlgItem(IDC_xianshi)-SetWindowText(错误,0不能作除数);else m_num=num2/m_num;case 5:m_num=pow(num2,m_num); /取模if(m_num=1.7E308|m_num 来提示操作错误时,总是没有任何效果,经老师帮助得以解决。因为UpdateData(FALSE)是将变量传到前台显示,SetWindowText就是设置前台显示的新内容。所以在SetWindowText后如果还有UpdateData(FALSE)则其效果会被

15、后者覆盖,因此程序中SetWindowText之后不用UpdateData(FALSE)即可。4、当操作数超过10位数时,用backspace会出现错误结果,一番研究研究发现用int(m_num)取整有问题,int只有4个字节,当超过其范围时就会出错。因此将取整的方法改为先用fmod取其除以1的余数得到其小数位,然后用m_num减去其小数位即可。7.2 测试结果1.输入“90.5”,“-”,“60.7”,“+”,“2.36”,“ =”,并在菜单中同样输入这组操作,均得到结果如图16。图16 结果图1结果正确,证明可以实现双目运算符的连续运算,菜单功能正常。2.输入“901”,“+/-”,“ba

16、ckspace”,“+”,“120”,“sin”,结果如图17.图17 结果图2因为取的是3.1415926,因此与0.5有小小偏差,认为结果正确。证明可以实现单目运算符的连续运算与backspace回格功能。3.输入“0”,“ln”,结果如图18.结果图18证明错误提示功能实现正常。7.3 关键源代码1、09107xuzhujieDlg.h里变量的定义:BOOL ele2; / ele定义为布尔值,判断当前值是否是正数还是负数int addt;int i;int dint;/dent判断小数后的位数BOOL ele; /ele2定义为布尔值,判断是否有小数点double num2;doubl

17、e num1;2、程序运行时初始化和头文件: m_num=0; /输出框清0 /变量1为0num2=0; /变量2为0 /小数点位数 /整数位数无 /当前无小数09107xuzhujieDlg.cpp里加上头文件#include math.h3、 数字键1的程序:(数字键2到9类似)if(addt=0)num2=0;if(ele2=TRUE)m_num=m_num*10+1; /单击数字键1后把数据传送到输出框中else m_num=m_num*10-1;if (ele=TRUE) /当前是否有小数点,如果有num1=1;dint=dint+;for (i=0;i错误,负数不能开根号7、n!键的程序:if(fmod(num2,1)=0)m_num=1;for(i=1;=num2;i+)m_num*=i; /对数进行求阶乘不是整数无法进行阶乘运算8、1/x键的程序:if(num2!m_num=1.0/num2; /对数进行求倒数/数据刷新 错误,0不能求倒数9、sin键的程序:(cos的代码类似)m_num=sin(num2*3.1415926/180); /对数进行正弦10、ln键的程序:0)m_num=log(num2); /对数进行求ln错误,操作数需大于011、=键的程序:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1