欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年用VC.编写计算器程序 .pdf

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

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

    2022年用VC.编写计算器程序 .pdf

    微机上机报告01. 121 用 C编写计算器程序一、计算器介绍 1. 计算器主界面1.1 、计算器打开运行后界面如下所示:1.2 主界面的说明主界面主要由三部分组成:文本框:用于数据的输入(可由下面的按钮或键盘输入),以及计算结果的输出;基本计算区:主要可用于数字的输入以及简单的加减乘除的计算,还有可用于清楚文本框的数据;数学函数计算区: 主用可实现基本常用的数学函数的计算,包括常用的三角函数和反三角函数以及e 指数、开平方和以 e 和 10 为名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 16 页 - - - - - - - - - 微机上机报告01. 122 底对数的计算。2. 计算器的操作说明及注意事项2.1 、基本操作:使用计算器进行基本数据计算时通过键盘及基本计算区的按钮输入数据,然后根据计算需要点击“ +、- 、*、/ ” 按钮,然后点击 ” =”按钮得出计算结果。若需使用函数计算时,可先输入数据,然后点击对应使用函数的按钮即可得出结果。特别的,对于三角函数的计算时,可点击单选框“弧度制”、“角度制”以实现弧度制及角度制数据的三角计算。2.2 、注意事项:使用除法计算时应注意不能使被除数为0,否则会出错:出现此错误时只需点击确定即可继续之前的计算。在使用三角函数时应先确定所输入的数据是角度制还是弧度制 的 数 据 , 否 则 计 算 器 会 跳 出 提 醒 框 , 如 下 所 示 :名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 16 页 - - - - - - - - - 微机上机报告01. 123 而计算反三角函数时只能计算弧度制数据得到角度制结果:在使用常用函数进行计算时应特别注意所输入的数应满足函数的定义域,使函数有意义,否则会出错:另注:当所得数据很小时会以科学计数法的形式输出:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 16 页 - - - - - - - - - 微机上机报告01. 124 其中 e-002 即表示 10-2。二、MFC 编程的实现1. 计算器主界面的设计1.1 、建立对话框1. 启动 Visual C+ 6.0集成开发环境2. 创建对话框类型应用程序在【工程】选项卡中选择【MFC AppWizard】应用程序类型,工程文件名为 Calculator。单击确定后选择【基本对话】建立基本对话框应用程序。1.2 、添加控件,设计界面界面设计如下所示:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 16 页 - - - - - - - - - 微机上机报告01. 125 2. 控件 ID 及变量控件:ID: IDC_NUM1 IDC_NUM2 IDC_NUM3 IDC_NUM4 IDC_NUM5 消息函数: OnNum1 OnNum2 OnNum3 OnNum4 OnNum5 控件:ID: IDC_NUM6 IDC_NUM7 IDC_NUM8 IDC_NUM9 IDC_NUM12 消息函数: OnNum6 OnNum7 OnNum8 OnNum9 OnNum12 控件:ID: IDC_NUM10 IDC_ADD IDC_SUBTRACT IDC_MULPTIPLY IDC_DIVISION 消息函数: OnNum10 OnAdd OnSubtract OnMulptiply OnDivision控件:ID: IDC_EQUAL IDC_BACKSPACE IDC_CLEAR1 IDC_Exit 消息函数: OnEqualOnBackspace OnClear1 OnExit 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 16 页 - - - - - - - - - 微机上机报告01. 126 控件:ID:IDC_RADIO1 IDC_RADIO2 IDC_SIN IDC_ARCSIN IDC_COS IDC_TAN 消息函数: OnRadio1 OnRadio2 OnSin OnArcsin OnCos OnTan控件:ID:IDC_ARCCOS IDC_ARCTANV IDC_EXP IDC_SQRT IDC_LN IDC_LOG 消息函数: OnArccos OnArctan OnExp OnSqrt OnLn OnLog编辑框为 IDC_EDIT1,定义类型为 CEdit 的变量 m_Edit1. 3. 程序代码的实现3.1 、定义变量1) 向 CalculatorDlg.h的 CCalculatorDlg类定义中添加 public型变量:2) 在 CalculatorDlg.cpp中定义四个全局变量;3) 控件函数代码的实现数字输入按钮下函数的实现以下是数字键的函数的代码,其余以此类推void CCalculatorDlg:OnNum1() / TODO: Add your control notification handler code here CString t; GetDlgItem(IDC_NUM1)-GetWindowText(t); /获取按钮的数字t=Num+t; /字符串连接m_Edit1.SetWindowText(t);/在编辑框中显示Num=t; double result=0;/存放结果数据 , 赋初值 0,得出结果后清 0 int control=0; /用于判断是何种运算 , 注意得出结果后清0 const double pi=3.14159265358979323846; /圆周率的值int math=0; /用于区分弧度制和角度制CString Num; /用于按钮输入数字的连接的连接名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 16 页 - - - - - - - - - 微机上机报告01. 127 退格键及清屏键函数代码的实现void CCalculatorDlg:OnBackspace() /退格 Num=Num.Left(Num.GetLength()-1); /使 Num 的长度减 1 m_Edit1.SetWindowText(Num); void CCalculatorDlg:OnClear1() /清楚屏幕 / TODO: Add your control notification handler code here m_Edit1.SetSel(0,-1); m_Edit1.ReplaceSel( ); Num= ; result=0; control=0; UpdateData(FALSE); 计算的实现,按钮下程序代码的实现:void CCalculatorDlg:OnAdd() /加法运算 / TODO: Add your control notification handler code here char cs30; double add; m_Edit1.GetWindowText(cs,30); add=atof(LPCTSTR)cs); switch(control) /每次计算之前前进行之前的运算 case 0: result=add;break; /第一个数应存储case 1: result=result+add;break; case 2: result=result-add;break; case 3: result=result*add;break; case 4: if(add=0) MessageBox(除数不能为 0! 请重新输入 .); char ed50; _gcvt(result,50,ed); m_Edit1.SetWindowText(ed); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 16 页 - - - - - - - - - 微机上机报告01. 128 Num= ; control=0; /control赋初值return; else result=result/add;break; control=1; char ed50; _gcvt(result,50,ed); m_Edit1.SetWindowText(ed); Num= ; UpdateData(FALSE); void CCalculatorDlg:OnSubtract() /减法运算 / TODO: Add your control notification handler code here char cs30; double sub; m_Edit1.GetWindowText(cs,30); sub=atof(LPCTSTR)cs); switch(control) /每次计算之前前进行之前的运算 case 0: result=sub;break; /第一个数应存储case 1: result=result+sub;break; case 2: result=result-sub;break; case 3: result=result*sub;break; case 4: if(sub=0) MessageBox(除数不能为 0! 请重新输入 .); char ed50; _gcvt(result,50,ed); m_Edit1.SetWindowText(ed); Num= ; control=0; /control回到初值return; else result=result/sub;break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 16 页 - - - - - - - - - 微机上机报告01. 129 control=2; char ed50; _gcvt(result,50,ed); m_Edit1.SetWindowText(ed); Num= ; void CCalculatorDlg:OnMulptiply() /乘法运算 / TODO: Add your control notification handler code here char cs30; double sub; m_Edit1.GetWindowText(cs,30); sub=atof(LPCTSTR)cs); switch(control) /每次计算之前前进行之前的运算 case 0: result=sub;break; /第一个数应存储case 1: result=result+sub;break; case 2: result=result-sub;break; case 3: result=result*sub;break; case 4: if(sub=0) MessageBox(除数不能为 0! 请重新输入 .); char ed50; _gcvt(result,50,ed); m_Edit1.SetWindowText(ed); Num= ; control=0; /control回到初值return; else result=result/sub;break; control=3; char ed50; _gcvt(result,50,ed); m_Edit1.SetWindowText(ed); Num= ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 16 页 - - - - - - - - - 微机上机报告01. 1210 void CCalculatorDlg:OnDivision() /除法运算 / TODO: Add your control notification handler code here char cs30; double sub; m_Edit1.GetWindowText(cs,30); sub=atof(LPCTSTR)cs); switch(control) /每次计算之前前进行之前的运算 case 0: result=sub;break; /第一个数应存储case 1: result=result+sub;break; case 2: result=result-sub;break; case 3: result=result*sub;break; case 4: if(sub=0) MessageBox(除数不能为 0! 请重新输入 .); char ed50; _gcvt(result,50,ed); m_Edit1.SetWindowText(ed); Num= ; control=0; /control回到初值return; else result=result/sub;break; control=4; char ed50; _gcvt(result,50,ed); m_Edit1.SetWindowText(ed); Num= ; 等于的实现void CCalculatorDlg:OnEqual() /等于的实现名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 16 页 - - - - - - - - - 微机上机报告01. 1211 / TODO: Add your control notification handler code here char cs30,seq50; double equal; switch(control) case 1: m_Edit1.GetWindowText(cs,30); equal=atof(LPCTSTR)cs); result=result+equal; _gcvt(result,50,seq); m_Edit1.SetWindowText(seq); Num= ; result=0; control=0; break; case 2: m_Edit1.GetWindowText(cs,30); equal=atof(LPCTSTR)cs); result=result-equal; _gcvt(result,50,seq); m_Edit1.SetWindowText(seq); Num= ; result=0; control=0; break; case 3: m_Edit1.GetWindowText(cs,30); equal=atof(LPCTSTR)cs); result=result*equal; _gcvt(result,50,seq); m_Edit1.SetWindowText(seq); Num= ; result=0; control=0; break; case 4: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 16 页 - - - - - - - - - 微机上机报告01. 1212 m_Edit1.GetWindowText(cs,30); equal=atof(LPCTSTR)cs); if(equal=0) MessageBox(除数不能为 0! 请重新输入 .); char ed50; _gcvt(result,50,ed); m_Edit1.SetWindowText(ed); Num= ; control=0; /control回到初值return; else result=result/equal; _gcvt(result,50,seq); m_Edit1.SetWindowText(seq); Num= ; result=0; control=0; break; 以下是角度制和弧度制的实现代码void CCalculatorDlg:OnRadio2() /角度制 / TODO: Add your control notification handler code here math=2; void CCalculatorDlg:OnRadio1() /弧度制 / TODO: Add your control notification handler code here math=1; 数学函数的实现,以下给出和的程序代码,其余函数依此类推即可得到:void CCalculatorDlg:OnSin() /正弦函数计算的实现 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 16 页 - - - - - - - - - 微机上机报告01. 1213 / TODO: Add your control notification handler code here char cs30; double sub; m_Edit1.GetWindowText(cs,30); sub=atof(LPCTSTR)cs); switch(control) /先进行判断之前是否有简单运算 case 0: break; case 1: sub=result+sub;break; case 2: sub=result-sub;break; case 3: sub=result*sub;break; case 4: if(sub=0) MessageBox(除数不能为 0! 请重新输入 .); char ed50; _gcvt(result,50,ed); m_Edit1.SetWindowText(ed); Num= ; control=0; /control回到初值return; else sub=result/sub;break; switch(math) case 0: MessageBox( 计算三角函数前请选择单位制!);return; case 1: break; case 2: sub=(sub*pi)/180;break; result=sin(sub); char ed50; _gcvt(result,50,ed); m_Edit1.SetWindowText(ed); Num= ; control=0; UpdateData(FALSE); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 16 页 - - - - - - - - - 微机上机报告01. 1214 void CCalculatorDlg:OnArcsin() /arcsin函数计算的实现 / TODO: Add your control notification handler code here char cs30; double sub; m_Edit1.GetWindowText(cs,30); sub=atof(LPCTSTR)cs); switch(control) /先进行判断之前是否有简单运算 case 0: break; case 1: sub=result+sub;break; case 2: sub=result-sub;break; case 3: sub=result*sub;break; case 4: if(sub=0) MessageBox(除数不能为 0! 请重新输入 .); char ed50; _gcvt(result,50,ed); m_Edit1.SetWindowText(ed); Num= ; control=0; /control回到初值return; else sub=result/sub;break; if(sub1|sub-1) MessageBox(所输入的数超出 arcsin函数的定义域,请重新输入!); char ed50; _gcvt(result,50,ed); m_Edit1.SetWindowText(ed); Num= ; return; switch(math) case 0: break; case 1: break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 16 页 - - - - - - - - - 微机上机报告01. 1215 case 2: MessageBox( 计算反三角函数时请选择弧度制!);return; result=asin(sub); result=(result*180)/pi; char ed50; _gcvt(result,50,ed); m_Edit1.SetWindowText(ed); Num= ; control=0; UpdateData(FALSE); 三、心得体会此次微机上机编程中,我原本打算完成那20 道题目的集合的程序, 并已有了初步的整体规划,且已完成了主程序及前两小题的设计工作。但是由于此工程包含内容太多,每一题的方法都不尽相同,加之时间紧(这是由于11号还有考试, 故在完成前两题的工作后已是11号晚上了),因而放弃原来计划,改为编程制作建议计算器。由于有之前的编程经历,在编程计算器的过程中较为顺利,故而只用一天的时间就编完成。在编程的过程中除少量借鉴网络资源的计算器编程外,绝大部分均是本人通查阅编程书籍和自己思考完成的。在编程过程中最难实现的是加减乘除和等号之间已输入数据的存放和修改,以及各个操作之间的相互影响,故而我在文档中将所有的加减乘除以及等号全部写出。每个函数之间的相互联系以及如何处理好这些联系是这部分代码的核心思想。另外在常用数学函数的实现中, 应特别注意判断各个函数的定义域的问题,以及出现错误后的处理和之前数据的处理问题,这名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 16 页 - - - - - - - - - 微机上机报告01. 1216 是这部分代码的主要问题。这两个问题是变成过程中工作量最大、时间消耗最多的部分, 也是修改完善最多的部分,更是此程序最核心的部分。由于时间紧, 在刚开始设计计算器之时所形成的一些想法在实际编程的过程中没有来得及实现。这让我体会到了编程工作的不易,更让我感受到了编程工作的严谨。每一部分之间都有很强的联系,而且在越深入的思考和编程后会发现这种联系会越来越紧密,因而,正确理顺各部分的关系,以及处理好这些关系是最重要的问题。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 16 页 - - - - - - - - -

    注意事项

    本文(2022年用VC.编写计算器程序 .pdf)为本站会员(Q****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开