欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    刁竞雄计算器报告.docx

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

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

    刁竞雄计算器报告.docx

    1、刁竞雄计算器报告课 程 设 计 课程名称 Visual C+ 可视化编程 题目名称 一个简单计算器的设计 学生学院 计算机学院 专业班级 2006级软件工程2班 学 号 3106006946 学生姓名 刁竞雄 指导教师 谭台哲 2008 年 12月 31日Visual C+ 可视化编程简单计算器的设计一、实验目的与要求1.实验目的:目标是使学生了解可视化程序设计语言的基础知识,掌握面向对象编程的分析设计方法,以及与面向对象技术相关的一些软件开发技术,掌握在 VisualC+6环境下进行可视化程序设计技术。通过实践具体的项目,为他们进一步开展相关领域的学习和科研打下良好的基础。2.实验要求:本实

    2、验要求学生通过学习MFC应用程序的创建;MFC类库;VisualC+6程序结构;VisualC+6工程管理;MFC自定义类;VisualC+6程序的编译等,运用面向对象编程思想的整体知识,借助于VisualC+6编程工具,设计并实现一个简单计算器的程序设计工作。 3.实验内容本实验要求计算器能够实现以下功能:1) 二进制、八进制、十进制及十六进制数的加、减、乘、除、乘方、取模等简单计算2) 科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、指数等函数运行3) 以角度、弧度两种方式实现上述部分函数4) 具备历史计算的记忆功能5) 对不正确的表达式能指出其错误原因6) 具有可

    3、操作性、开放性,容易增加各种附加功能。7) 整理上机步骤、完成实验报告、提交可运行的程序,给出实验数据和实验结果。二、实验完成情况1) 完成了实验要求的所有内容2) 可以处理含括号的表达式3) 增加了科学计算器的一些设施,如退格键BackSpace,清空与归零键,求阶乘,求Ln等三、实验(设计)仪器设备和材料软件环境:Windows XP操作系统,Visual C+6.0四、实验方案1.设计方案: 实验要求在Windows XP操作系统的基础上借助于VisualC+6编程工具,设计并实现一个简单计算器的程序设计工作!根据实验的要求,本次实验把计算器分为几个模块,模块之间是相互独立但有相互联系的

    4、!他们为实现计算器的功能体现着自己的价值:1) 计算器外观的设计用MFC AppWizard创建一个Dialog Based的对话框。在Dialog上添加和布局控件。2)基本按键的控制及关联实现基本按纽与字符及字符串的关联和实现与控件的数据交换3)运用对话框窗口实现各种数制的简单计算分别实现计算器二进制、八进制、十进制、十六进制的简单计算,并能进行数学表达式的计算。4)实现科学计算功能调用科学计算函数,为计算器添加科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、指数等5)为部分科学计算函数添加角度与弧度两种数值表示形式6)实现历史计算功能7) 程序容错处理8)添加其它小

    5、功能,优化交互性功能并调整界面。2.详细的设计方案1)计算器外观的设计建立一个对话框,将控件摆在合理的位置上。各个控件的名称和功能如下所示: Edit BoxIDC_EDIT_INPUT, OnChangeEditInput 演算显示框IDC_EDIT_RESULT 结果显示框IDC_EDIT_History 历史显示框IDC_EDIT_M 数据存储显示框Radio ButtonIDC_RADIO_Bin, OnRADIOBin 二进制IDC_RADIO_Oct, OnRADIOOct 八进制IDC_RADIO_DEC 十进制IDC_RADIO_Hex, OnRADIOHex 十六进制IDC_

    6、RADIO_DEGREE 角度选择IDC_RADIO_RADIAN 弧度选择 Button标准键: IDC_Btn1, OnBtn1 1 IDC_Btn2, OnBtn2 2 IDC_Btn3, OnBtn3 3 IDC_Btn4, OnBtn4 4 IDC_Btn5, OnBtn5 5 IDC_Btn6, OnBtn6 6 IDC_Btn7, OnBtn7 7 IDC_Btn8, OnBtn8 8 IDC_Btn9, OnBtn9 9 IDC_BtnDot, OnBtnDot . IDC_BtnNgt, OnBtnNgt +/- IDC_BtnF, OnBtnF 十六进制F IDC_BtnA

    7、, OnBtnA 十六进制A IDC_BtnB, OnBtnB 十六进制B IDC_BtnC, OnBtnC 十六进制C IDC_BtnD, OnBtnD 十六进制D IDC_BtnE, OnBtnE 十六进制E IDC_BtnAdd, OnBtnAdd + IDC_BtnMin, OnBtnMin - IDC_BtnMul, OnBtnMul * IDC_BtnDiv, OnBtnDiv / IDC_BtnLbar, OnBtnLbar ( IDC_BtnRbar, OnBtnRbar ) IDC_BtnBack, OnBtnBack BACK IDC_BtnPow, OnBtnPow 乘方

    8、 IDC_BtnMod, OnBtnMod 求模 IDC_BtnPi, OnBtnPi IDC_BtnEe, OnBtnEe e科学计算器按键 IDC_BtnSin, OnBtnSin sin IDC_BtnCos, OnBtnCos cos IDC_BtnTan, OnBtnTan tan IDC_BtnArccos, OnBtnArccos acos IDC_BtnCot, OnBtnCot cot IDC_Arcsin, OnArcsin asin IDC_BtnArctan, OnBtnArctan atan IDC_BtnLog, OnBtnLog log IDC_BtnSh, On

    9、BtnSh sh IDC_BtnCh, OnBtnCh ch IDC_BtnTh, OnBtnTh th IDC_BtnLn, OnBtnLn ln IDC_BtnExp, OnBtnExp 求e的x次方 IDC_BtnSqr, OnBtnSqr 除方IDC_Btn10exp, OnBtn10Exp 求x的10次方其它按键 IDC_BtnClean, OnBtnClean 清空演算框 IDC_BtnMS, OnBtnMS 存储一个数据 IDC_BtnMR, OnBtnMR 将数据输出到对话框 IDC_BtnMC, OnBtnMC 取出一个数 IDC_BtnMadd, OnBtnMadd 将这个

    10、数对演算框里的数相加IDC_BtnAbout 调用ABOUT对话框,版权说明2)计算功能 这一部分是整个程序的重点及核心部分,也是整个课程设计中遇到最难的问题,将采用一个简单的示意图表明计算时各个函数的调用关系。 以上函数各部分的功能如下:MainPro() 主函数IsDigital() 对函数数位进行检查StoN() 字符串转为数字NtoS() 数字转化为字符串Oct2Dec() 将八进制转换成十进制Hex2Dec() 将十六进制转换成十进制Bin2Dec() 将 二进制转换成十进制BraCheck() 对函数中的括号进行检查DelBracket() 对各个括号内的数据进行运算LocateL

    11、Bra () 对括号进行定位SingleE() 一个数据时,进行的科学计算TwoE() 两个数据时,进行的普通运算MultiE() 处理各种形式的运算Calcu() 对二元式进行计算MinusMinus () 处理“”的情况SynRes() 返回错误结果ModiResult() 返回计算结果程序的普通计算功能、科学计算功能、容错处理都包含在以上的主函数及调用函数里面。普通计算功能主要包含于函数TwoE(),科学计算功能主要包含于函数于SingleE(),容错功能主要包含于函数MultiE()。 (1)实现各种数制的简单计算功能可以描述为:将每个过程拆分为二元计算过程进行运算。CString C

    12、Calculation:TwoE(CString strEdit) double x2,y,x1=StoN(strEdit); strEdit=m_strTmp; char op=strEdit.GetAt(0); strEdit.Delete(0); x2=StoN(strEdit); if(m_strTmp!=) return ERROR_+m_strTmp+未知符号_; if(op=+) y=x1+x2; else if(op=*) y=x1*x2; else if(op=-) y=x1-x2; else if(op=) y=pow(x1,x2); else if(op=/) y=x1/

    13、x2; else if(op=%) y=fmod(x1,x2); else return ERROR_+m_strTmp+未知运算符_; return NtoS(y); (2)实现计算器科学计算功能这个功能可以简单描述为:将字符串读进程序中,并和相关字符进行匹配,接着调用各个数学函数进行运算。CString CCalculation:SingleE(CString op,double dx) if(op=ln) return NtoS(log(dx); else if(op=log) return NtoS(log10(dx); else if(op=sqr) return NtoS(sqrt

    14、(dx); else if(op=e) return NtoS(exp(dx); else if(op=abs) return NtoS(fabs(dx); else if(op=ac) return NtoS(acos(dx); else if(op=as) return NtoS(asin(dx); else if(op=at) return NtoS(atan(dx); if(m_bDegree) dx=dx*PI/180; if(op=tan) return NtoS(tan(dx); else if(op=sin) return NtoS(sin(dx); else if(op=co

    15、s) return NtoS(cos(dx); else if(op=cot) return NtoS(1/tan(dx); else if(op=sh) return NtoS(sinh(dx); else if(op=ch) return NtoS(cosh(dx); else if(op=th) return NtoS(sinh(dx)/cosh(dx); else if(op=exp) return NtoS(pow(10,dx); return ERROR+op+_未知函数_;(3)程序的具体运算过程及程序容错处理程序容错处理包含在程序计算里面,程序运算的主体函数为:void CCa

    16、lculation:MultiE(CString *strEdit) if(strEdit-IsEmpty() *strEdit=ERROR_函数表达式为空_; if(IsDigital(*strEdit) return; while(1)/*处理所有的一元运算*/ for(int i=0;iFind(opti); if(pos!=-1) CString str=strEdit-Right(strEdit-GetLength()-pos-opti.GetLength(); double dx=StoN(str); if(m_strTmp=str) *strEdit=ERROR+str+_无法识

    17、别的函数_;return; strEdit-Delete(pos,strEdit-GetLength()-pos); *strEdit+=SingleE(opti,dx)+m_strTmp; MinusMinus(strEdit); if(pos=1) char ch=strEdit-GetAt(pos-1); if(ch=48 & chFind(); if(pos=-1) break; else Calcu(strEdit,pos); while(1) pos=strEdit-Find(/); if(pos=-1) break; else Calcu(strEdit,pos); while(

    18、1) pos=strEdit-Find(*); if(pos=-1) break; else Calcu(strEdit,pos); while(1) pos=strEdit-Find(%); if(pos=-1) break; else Calcu(strEdit,pos); pos=0; if(strEdit-GetAt(0)=- |strEdit-GetAt(0)=+) strEdit-Insert(0,0); while(1) int tmpos=strEdit-Right(strEdit-GetLength()-pos).Find(-); if(tmpos=-1) break; el

    19、se pos+=tmpos; if(pos=0 & strEdit-GetAt(pos+1)=- | pos0) if(strEdit-GetAt(pos+1)=+) strEdit-Delete(pos+1); pos=0; continue; /*处理连减(如:-1)的情况*/ int nCount=0; while(1) if(+pos0) if(strEdit-GetAt(pos)!=-) break; else nCount+; else break; if(nCount0) strEdit-Delete(pos-nCount-1,nCount+1); if(nCount%2=0)

    20、strEdit-Insert(pos-nCount-1,-); else if(pos-nCount-10) strEdit-Insert(pos-nCount-1,+); pos=0; continue; else pos-; /*/ if(pos0 & strEdit-GetAt(pos-1)=+) pos+; continue; Calcu(strEdit,pos); else pos+; pos=0; while(1) pos=strEdit-Find(+);/ int tmpos=strEdit-Right(strEdit-GetLength()-pos).Find(+); if(p

    21、os=-1) break;/ else pos+=tmpos; if(pos=0 & strEdit-GetAt(pos+1)=+ | pos0) /*处理连加(如:+1)的情况*/ int nCount=0; while(1) if(+pos0) if(strEdit-GetAt(pos)!=+) break; else nCount+; else break; if(nCount0) strEdit-Delete(pos-nCount-1,nCount+1); strEdit-Insert(pos-nCount-1,+); pos=0; continue; else pos-; /*/ C

    22、alcu(strEdit,pos); else pos+; (4)程序的其它各个主要调用函数主体程序如下:CString CCalculation:MainPro(CString strEdit) if(strEdit.IsEmpty() return 表达式不能为空; Macro(&strEdit); strEdit.MakeLower(); /表达式全部小写 /*给表达式加上保护括号*/ strEdit.Insert(0,(); strEdit+=); /*/ int pos=strEdit.Find( ); int n=BraCheck(strEdit); CString str; st

    23、r.Format(%d,abs(n); if(n=1) strEdit+=); else if(n=-1) strEdit.Insert(0,(); else if(n0) return 缺少+str+个右括号; else if(n=0 & decimal16) for(int i=str.GetLength();idecimal;i+) str+=0; str+=.0; else for(int i=0;i-decimal;i+) str.Insert(0,0); str.Insert(0,.); if(sign=1) str.Insert(0,-); return str;double CCalculation:StoN(CString str) char *stopstring; double x; x = strtod( str.GetBuffer(0), &stopstring ); m_strTmp=stopstring; return x;int CCalculation:LocateLBra(CString strEdit


    注意事项

    本文(刁竞雄计算器报告.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开