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

开通VIP
 

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

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

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(计算器设计.docx)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

计算器设计.docx

1、基于VC的MFC计算器案例步骤及源代码 基于VC的MFC计算器案例详细步骤有图有代码,图中右边的各个函数也都能实现:清除,加,减,乘,除,倒数,e的x次方,以e为底x的对数,10的x次方,以10为底x的对数,余弦,反余弦,双曲余弦值,正弦,反正弦,双曲正弦值,正切,反正切,双曲正切值,x的y次方,2的x次方,n(n为整数)的阶乘。如图:  步骤: 1.创建一个基于对话框的应用程序(这一步应该都会吧!),命名为dckCalculator; 2.打开资源视图->点击“dckCalculator”左边的“+”->点击“dckCalculator.rc”左边的“+”->点击“Dialog”

2、左边的“+”->双击“IDD_DCKCALCULATOR_DIALOG”->去除“确定”“取消”“TODO: 在此放置对话框控件。”几个组件(全选。然后右击选择“删除”即可): 3.按照我们想要的效果给对话框添加组件->编辑各个组件的显示名字->改变其ID属性 4.将编辑框的属性中的Align Text设置为right,如图:   5.设置相关属性(每次改变ID都要保存一下): 控件 Caption(名称) ID 控件 caption ID 按钮 0 IDC_BUTTON0 按钮 exp IDC_EXP 按钮 1 IDC_BUTTON1 按钮

3、 10^x IDC_10X 按钮 2 IDC_BUTTON2 按钮 cos IDC_COS 按钮 3 IDC_BUTTON3 按钮 sin IDC_SIN 按钮 4 IDC_BUTTON4 按钮 ln IDC_LN 按钮 5 IDC_BUTTON5 按钮 log IDC_LOG 按钮 6 IDC_BUTTON6 按钮 arccos IDC_ARCCOS 按钮 7 IDC_BUTTON7 按钮 arcsin IDC_ARCSIN 按钮 8 IDC_BUTTON8 按钮 tan IDC_TAN 按钮 9

4、IDC_BUTTON9 按钮 arctan IDC_ARCTAN 按钮 +/- IDC_BUTTON_SIGN 按钮 cosh IDC_COSH 按钮 . IDC_BUTTON_POINT 按钮 sinh IDC_SINH 按钮 + IDC_BUTTON_ADD 按钮 tanh IDC_TANH 按钮 - IDC_BUTTON_MINUS 按钮 X^y IDC_XDEY 按钮 * IDC_BUTTON_MUTIPLY 按钮 2^x IDC_2DEX 按钮 / IDC_BUTTON_DIV 按钮 N! IDC_NJIE

5、CHENG 按钮 C IDC_BUTTON_CLEAR 单选 弧度 IDC_HUDU 按钮 sqrt IDC_BUTTON_SQRT 单选 角度 IDC_JIAODU 按钮 1/x IDC_BUTTON_RECI 编辑框 编辑框 IDC_DISPLAY(只读) 按钮 = IDC_BUTTON_EQUAL       6.将编辑框中属性的“read only”设置为ture! 7.在类视图中给CdckCalculatorDlg类添加成员变量: int m_duType;初始值为0,用来作为判定弧度还是角度的变准; double m_firs

6、t;//存储一次运算的第一个操作数及一次运算的结果 double m_second;//存储一次运算的第二个操作数 CString m_operator;//存储运算符 double m_coff;//存储小数点的系数权值 8.给编辑框添加关联变量:(右击编辑框->添加变量) CString m_display;//编辑框IDC_DISPLAY的关联变量,显示计算结果(注意最右边选择“value”) 9.双击“弧度”给其添加事件响应(等价于右击然后添加事件处理器); 同理双击“角度”添加代码: //弧度处理函数 void CdckCalculatorDlg::OnBnClic

7、kedHudu() { m_duType=0;//系统默认m_duType为,这里为刚好可以为计算器默认为弧度计算 } //角度处理函数 void CdckCalculatorDlg::OnBnClickedJiaodu() { m_duType=1;//当选择角度处理函数的时候,m_duType为;这哥主要是作为以后函数算法的判断标准 } 10.在对话框类的构造函数中,初始化成员变量: // CdckCalculatorDlg 对话框的构造函数 CdckCalculatorDlg::CdckCalculatorDlg(CWnd* pParent /*=NUL

8、L*/) : CDialog(CdckCalculatorDlg::IDD, pParent) , m_duType(0) , m_first(0.0) , m_second(0.0) , m_operator(_T("+")) , m_coff(0) , m_display(_T("0.0"))      ······   11.类视图里手动为对话框添加2个函数: void  UpdateDisplay(double dck)——用于编辑框显示数据 Void Calculate(void)——用于计算结果   代码如下(由于在代码中要用到fabs,要在CdckCal

9、culatorDlg.cpp里添加一个库:#include "math.h"): //在编辑框中显示数据 void CdckCalculatorDlg::UpdateDisplay(double dck) { m_display.Format(_T("%f"),dck); int i=m_display.GetLength(); while(m_display.GetAt(i-1)=='0') //格式化输出,将输出结果后的零截去 {  m_display.Delete(i-1,1);  i--; } UpdateData(false);//更新编辑框变量m_display

10、} //计算结果 void CdckCalculatorDlg::Calculate(void) {//将前一次数据与当前数据进行运算,作为下次的第一操作数,并在编辑框显示。 switch(m_operator.GetAt(0)) {  case '+': m_first+=m_second;break; case '-': m_first-=m_second;break; case '*': m_first*=m_second;break; case '/': if(fabs(m_second)<=0.000001) {m_display="除数不能为"; Update

11、Data(false); return;  } m_first/=m_second;break; } m_second=0.0; m_coff=1.0; m_operator=_T("+"); UpdateDisplay(m_first);//更新编辑框显示内容 } 12.如上添加函数void  onButtonN(int n);以便数字按钮调用响应 //用于数字按钮调用 void CdckCalculatorDlg::onButtonN(int n) {if( m_coff == 1.0) m_second = m_second*10 + n;//作为整数输入数字时

12、 else   { m_second = m_second + n*m_coff; //作为小数输入数字 m_coff *= 0.1;} UpdateDisplay(m_second);//更新编辑框的数字显示 } 13.双击各个数字按钮,添加响应,调用函数:如: void CdckCalculatorDlg::OnBnClickedButton0() { onButtonN(0); } void CdckCalculatorDlg::OnBnClickedButton1() { onButtonN(1); }······ 14.为各个运算符号添加事件处理器:

13、//   "+/-" void CdckCalculatorDlg::OnBnClickedButtonSign() { m_second = -m_second; UpdateDisplay(m_second); } //   "." void CdckCalculatorDlg::OnBnClickedButtonPoint() { m_coff= 0.1 ; } //   "+" void CdckCalculatorDlg::OnBnClickedButtonAdd() { Calculate(); m_operator="+"; // - *方法类似

14、} //   "/" void CdckCalculatorDlg::OnBnClickedButtonDiv() { Calculate(); m_operator.Format(_T("%s"),"/"); } //   "C" void CdckCalculatorDlg::OnBnClickedButtonClear() { m_first=0.0; m_second=0.0; m_operator = "+"; m_coff = 1.0; UpdateDisplay(0.0); } //   "sqrt" void CdckCalculatorDlg

15、OnBnClickedButtonSqrt() { if( m_second==0) {    m_first=sqrt(m_first);       UpdateDisplay(m_first);   } else { m_second=sqrt(m_second);     UpdateDisplay(m_second);} } //   "1/x" void CdckCalculatorDlg::OnBnClickedButtonReci() { if(fabs(m_second)<0.000001 && fabs(m_first)<0.000001) {

16、m_display = "除数不能为零"; UpdateData(false); return;} if( fabs(m_second)<0.000001) {    m_first=1.0/m_first; UpdateDisplay(m_first); } else { m_second=1.0/m_second; UpdateDisplay(m_second); } } //   "=" void CdckCalculatorDlg::OnBnClickedButtonEqual() { Calculate();  } 15.同理添加其他特殊函数按钮事件

17、处理器,其中大部分在API里math类里都有定义好了的 可以直接用的函数,当然有几个是自己写的如(n!和x^y而且第二个比较棘手),然后还有一个问题就是,里面的函数括号里面跟的值是弧度,而不是角度,这就需要我们去判断了,也就是说m_duType终于派上用场了,只要switch,m_duType,case得到0即默认的为弧度,case1 则值为角度,然后转换值赋给我们需要的显示出来:还是如上手动添加一个函数:void  sanjiaoHanshu(); 但是此时我们还需要PI,但是我们不能直接得到所以在这之前我们需要添加成员变量m_PI,并赋予初值m_PI=3.1415926535897932

18、3846;代码如下:/ 用来抉择结果,是弧度还是角度 void CdckCalculatorDlg::sanjiaoHanshu(void) { switch(m_duType) {case 0: m_second=m_second; break; case 1: m_second=m_second*m_PI/180; break; } } 16.编辑其他函数的代码: //   "exp" void CdckCalculatorDlg::OnBnClickedExp() { m_second=exp(m_second); UpdateDisplay(m_sec

19、ond); } //   "10^x" void CdckCalculatorDlg::OnBnClicked10x() { m_second=pow(10,m_second); UpdateDisplay(m_second); } //   "cos" void CdckCalculatorDlg::OnBnClickedCos() { sanjiaoHanshu(); m_second=cos(m_second); UpdateDisplay(m_second); } //   "sin" void CdckCalculatorDlg::OnBnClicke

20、dSin() { sanjiaoHanshu(); m_second=sin(m_second); UpdateDisplay(m_second); } //   "ln" void CdckCalculatorDlg::OnBnClickedLn() { m_second=log(m_second); UpdateDisplay(m_second); } //   "log" void CdckCalculatorDlg::OnBnClickedLog() { m_second=log10(m_second); UpdateDisplay(m_second);

21、 } //   "arccos" void CdckCalculatorDlg::OnBnClickedArccos() { sanjiaoHanshu(); m_second=acos(m_second); UpdateDisplay(m_second);   } //   "arcsin" void CdckCalculatorDlg::OnBnClickedArcsin() { sanjiaoHanshu(); m_second=asin(m_second); UpdateDisplay(m_second); } //   "tan" void Cdc

22、kCalculatorDlg::OnBnClickedTan() { sanjiaoHanshu(); m_second=tan(m_second); UpdateDisplay(m_second); } //   "arctan" void CdckCalculatorDlg::OnBnClickedArctan() { sanjiaoHanshu(); m_second=atan(m_second); UpdateDisplay(m_second); } //   "cosh" void CdckCalculatorDlg::OnBnClickedCosh()

23、 { sanjiaoHanshu(); m_second=cosh(m_second); UpdateDisplay(m_second); } //   "sinh" void CdckCalculatorDlg::OnBnClickedSinh() {m_second=sinh(m_second); UpdateDisplay(m_second); } //   "tanh" void CdckCalculatorDlg::OnBnClickedTanh() { sanjiaoHanshu(); m_second=tanh(m_second); UpdateDi

24、splay(m_second); } //   "2^x" void CdckCalculatorDlg::OnBnClicked2dex() { m_second=pow(2,m_second); UpdateDisplay(m_second); }   17.现在来看x^y 我们需要先得到  然后点击x^y按钮后再得到y,在点击“=”按钮后得到结果:步骤:如上添加变量 bool型 isXY 默认为false,再添加一个中间变量 double temp;当点击按钮的时候我们将编辑框显示的结果赋值给temp,然后将m_second设置为0.0,编辑框显示为0.0,设置isX

25、Y为ture如下代码: //   "x^y" void CdckCalculatorDlg::OnBnClickedXdey() { temp=m_second; m_second=0.0; UpdateDisplay(0.0); isXY=true; }   (再输入新数据,然后再按“=”,所以在=之前我们需要对x^y做出判断 如果按了则isXY为ture,则我们将上面的数字记下然后参与计算,如果为false就不算:) 添加一个函数void  xDEy() //用来判断是否点击了“x^y”按钮,点击了后又作何运算 void CdckCalculatorDlg::xD

26、Ey(void) { if(isXY){ m_second=m_second; m_second=pow(temp,m_second); } } 然后在每次等于之前都调用一下这个函数,如果点击了x^y按钮则执行里面的代码,所以“=”的代码需要修改一下: //   "=" void CdckCalculatorDlg::OnBnClickedButtonEqual() { xDEy(); Calculate();  }   18.n的阶乘:我们需要利用递归,如上添加函数int  jiecheng(int n) 利用递归,返回阶乘值,代码如下: int CdckC

27、alculatorDlg::jiecheng(int n) { if(n==0||n==1){ return 1; }else if(n>1){ return n*fun(n-1); } } 在n!的按钮消息处理里,如果输入的不是整数则不能进行阶乘运算: //   "n!" void CdckCalculatorDlg::OnBnClickedNjiecheng() { if((m_second-(int)m_second)>0){ m_display =_T("你输入的不是整数,请输入整数!"); UpdateData(false);//如果是非整数,则结束运算,重新开始 return; } else { m_second=(double)jiecheng(m_second); UpdateDisplay(m_second); } }   19.所有按钮事件处理已经完成,编译运行:

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服