已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于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”左边的“+”-双击“IDD_DCKCALCULATOR_DIALOG”-去除“确定”“取消”“TODO:在此放置对话框控件。”几个组件(全选。然后右击选择“删除”即可):3.按照我们想要的效果给对话框添加组件-编辑各个组件的显示名字-改变其属性4.将编辑框的属性中的AlignText设置为right,如图:5.设置相关属性(每次改变ID都要保存一下):控件Caption(名称)ID控件captionID按钮0IDC_BUTTON0按钮expIDC_EXP按钮1IDC_BUTTON1按钮10xIDC_10X按钮2IDC_BUTTON2按钮cosIDC_COS按钮3IDC_BUTTON3按钮sinIDC_SIN按钮4IDC_BUTTON4按钮lnIDC_LN按钮5IDC_BUTTON5按钮logIDC_LOG按钮6IDC_BUTTON6按钮arccosIDC_ARCCOS按钮7IDC_BUTTON7按钮arcsinIDC_ARCSIN按钮8IDC_BUTTON8按钮tanIDC_TAN按钮9IDC_BUTTON9按钮arctanIDC_ARCTAN按钮+/-IDC_BUTTON_SIGN按钮coshIDC_COSH按钮.IDC_BUTTON_POINT按钮sinhIDC_SINH按钮+IDC_BUTTON_ADD按钮tanhIDC_TANH按钮-IDC_BUTTON_MINUS按钮XyIDC_XDEY按钮*IDC_BUTTON_MUTIPLY按钮2xIDC_2DEX按钮/IDC_BUTTON_DIV按钮N!IDC_NJIECHENG按钮CIDC_BUTTON_CLEAR单选弧度IDC_HUDU按钮sqrtIDC_BUTTON_SQRT单选角度IDC_JIAODU按钮1/xIDC_BUTTON_RECI编辑框编辑框IDC_DISPLAY(只读)按钮=IDC_BUTTON_EQUAL6.将编辑框中属性的“readonly”设置为ture!7.在类视图中给CdckCalculatorDlg类添加成员变量:intm_duType;初始值为0,用来作为判定弧度还是角度的变准;doublem_first;/存储一次运算的第一个操作数及一次运算的结果doublem_second;/存储一次运算的第二个操作数CStringm_operator;/存储运算符doublem_coff;/存储小数点的系数权值8.给编辑框添加关联变量:(右击编辑框-添加变量)CStringm_display;/编辑框IDC_DISPLAY的关联变量,显示计算结果(注意最右边选择“value”)9.双击“弧度”给其添加事件响应(等价于右击然后添加事件处理器);同理双击“角度”添加代码:/弧度处理函数voidCdckCalculatorDlg:OnBnClickedHudu()m_duType=0;/系统默认m_duType为,这里为刚好可以为计算器默认为弧度计算/角度处理函数voidCdckCalculatorDlg:OnBnClickedJiaodu()m_duType=1;/当选择角度处理函数的时候,m_duType为;这哥主要是作为以后函数算法的判断标准10.在对话框类的构造函数中,初始化成员变量:/CdckCalculatorDlg对话框的构造函数CdckCalculatorDlg:CdckCalculatorDlg(CWnd*pParent/*=NULL*/):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个函数:voidUpdateDisplay(doubledck)用于编辑框显示数据VoidCalculate(void)用于计算结果代码如下(由于在代码中要用到fabs,要在CdckCalculatorDlg.cpp里添加一个库:#includemath.h):/在编辑框中显示数据voidCdckCalculatorDlg:UpdateDisplay(doubledck)m_display.Format(_T(%f),dck);inti=m_display.GetLength();while(m_display.GetAt(i-1)=0)/格式化输出,将输出结果后的零截去m_display.Delete(i-1,1);i-;UpdateData(false);/更新编辑框变量m_display/计算结果voidCdckCalculatorDlg: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=除数不能为;UpdateData(false);return;m_first/=m_second;break;m_second=0.0;m_coff=1.0;m_operator=_T(+);UpdateDisplay(m_first);/更新编辑框显示内容12.如上添加函数voidonButtonN(intn);以便数字按钮调用响应/用于数字按钮调用voidCdckCalculatorDlg:onButtonN(intn)if(m_coff=1.0)m_second=m_second*10+n;/作为整数输入数字时elsem_second=m_second+n*m_coff;/作为小数输入数字m_coff*=0.1;UpdateDisplay(m_second);/更新编辑框的数字显示13.双击各个数字按钮,添加响应,调用函数:如:voidCdckCalculatorDlg:OnBnClickedButton0()onButtonN(0);voidCdckCalculatorDlg:OnBnClickedButton1()onButtonN(1);14.为各个运算符号添加事件处理器:/+/-voidCdckCalculatorDlg:OnBnClickedButtonSign()m_second=-m_second;UpdateDisplay(m_second);/.voidCdckCalculatorDlg:OnBnClickedButtonPoint()m_coff=0.1;/+voidCdckCalculatorDlg:OnBnClickedButtonAdd()Calculate();m_operator=+;/-*方法类似/voidCdckCalculatorDlg:OnBnClickedButtonDiv()Calculate();m_operator.Format(_T(%s),/);/CvoidCdckCalculatorDlg:OnBnClickedButtonClear()m_first=0.0;m_second=0.0;m_operator=+;m_coff=1.0;UpdateDisplay(0.0);/sqrtvoidCdckCalculatorDlg:OnBnClickedButtonSqrt()if(m_second=0)m_first=sqrt(m_first);UpdateDisplay(m_first);elsem_second=sqrt(m_second);UpdateDisplay(m_second);/1/xvoidCdckCalculatorDlg:OnBnClickedButtonReci()if(fabs(m_second)0.000001&fabs(m_first)0.000001)m_display=除数不能为零;UpdateData(false);return;if(fabs(m_second)1)returnn*fun(n-1);在n!的按钮消息处理里,如果输入的不是整数则不能进行阶乘运算:/n!voidCdckCalculatorDlg:OnBnClick
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年建筑节能 retrofit项目可行性研究报告
- 2025年数字内容产业发展规划可行性研究报告
- 物业快递托管合同范本
- 集体土地置换合同范本
- 驾校车辆合作合同范本
- 电商技术入股合同范本
- 电梯工程易合同范本
- 门店投资协议合同范本
- 街头快递转让合同范本
- 2025年智能垃圾分类系统建设可行性研究报告
- 老龄家居改造设计与适老化标准分析报告
- 2026年中考语文一轮复习作文指导:《横线式结构》课件
- 青少年体质报告模板
- 《急性呼吸窘迫综合征精准分型诊治专家共识》解读课件
- DB15T 1895-2020 建筑消防设施维护保养技术规程
- 高中英语2026届高考读后续写高分句型和例句(共八类)
- 2025低空经济场景白皮书
- 城乡文化服务差距研究-洞察及研究
- 自行车赛期间应急救援与医疗保障方案
- 开学季水彩童趣模板
- 老年公寓消毒管理制度
评论
0/150
提交评论