- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
课程设计数字计算器_1
课 程 设 计 报 告课程名称:面向对象程序设计C++设计题目:数字计算器 专 业:计算机科学与技术 姓 名: 学 号: 指导教师:李 晓 虹 2015 年 12 月 20 日 系统需求分析1.1 计算器需求分析 能写出一个好的计算器对自己在计算方面的速度会提高很大的水平,现在世面上的一些计算器大部分都是功能比较单一的,应对复杂的数据还是没有办法处理,例如:有些不能处理8位以上的数据,有些不能处理三角函数,有些不能处理复杂数学函数。所以我们需要写出一个比较功能齐全的计算器。当然这个只能局限于电脑运行的程序,没有办法在手机端运行。1.2 相关环境 这里我系统主要用的windows7.这是因为自己在虚拟机上面运行的,然后c++的编译环境为vc++ 6.0。第二章 总体设计2.1把字符串转化为数字和运算符的算法1.如果字符串中只有数字。这个情况用来实现一些简单函数的运算。在进行简单函数的运算时,都是先输入一个数字,再单击要进行运算的按钮,然后编辑框显示运算的结果。程序用了一个函数double GetaStr(CString str)来实现这个功能,该函数以编辑框变量m_strResult为实参,再得到m_strResult的值后,调用GetAt函数,一个字符一个字符的读取,如果碰到整数,执行“itemp=itemp*rate+(str.GetAt(i)-0);”,其中变量itemp初始值为0,变量rate初始值为10,如果碰到了小数点,改变rate的值,使其等于0.1,再向后继续读取,再碰到整数时执行“itemp=itemp+rate*(str.GetAt(i)-0);rate=rate/10;”,函数的最后确定返回值为itemp。函数的代码见附录2.1.1 2. 如果字符串中有运算符和数字,但是没有括号。程序调用函数void GetStr(CString str),这个函数的前半部分和函数void GetaStr(CString str)一样,都是获取数字的算法,但是因为表达式中可能有多个数字和运算符,所以我们需要定义2个数组,分别用来存放数字和运算符,当读取字符遇到运算符时,把变量itemp的值保存在数组a中,并把0赋给itemp,把10赋给rate,把运算符保存在数组b中。当不在碰到运算符号时,把最后一个整数itemp的值数组a中,把z的值赋给s。(z的值表示运算符加数字一个有多少个,把这个值赋给s,可以在以后的计算中,控制循环的条件,避免造成不必要的误差。)这个函数的代码见附录2.1.2:3. 如果字符串中有括号。程序用函数void Bracket(CString str0)来解决括号问题,同样,函数以编辑框变量m_strResult为实参,主要思想是把m_strResult先分成3个字符串,比如一个表达式2*(2+3)-6,这个函数的目的是先把表达式2*(2+3)-6分成2*、2+3、-6三个字符串,再计算2+3后,把结果覆盖掉2+3所在的字符串,最后把3个字符串相加,这样就处理掉了括号的问题。具体实现的算法:定义3个字符串变量str1、str2、str3,这三个变量都初始化为空变量,现在开始一个循环,当没有遇到字符“(”时,把每次得到的字符都加在字符串str1上,当遇到字符“(”时,把“(”后的字符都加在字符串str2上,直到遇到字符“)”。当遇到字符“)”时,把“)”后的字符都加在字符串str3上,str2再调用函数计算出它的表达式的值,最后把3个字符串相加,这就解决了括号问题。该函数代码见附录2.1.3:2.2 计算出结果的算法在把表达式中的数字和运算符分别保存在数组后,接下来我们就要进行表达式的计算了,表达式的计算首先要考虑优先级的问题,这里先把所有的除法转化为乘法,再把除法后的数字取它的倒数,接下来就是进行乘法计算,每次乘法计算后都把计算的结果保存在计算的2个数中的前面的那个数上,并把乘号和后面的数字删除。进行完乘法运算后,进行一次循环,重新整理下数组,最后进行加法和减法运算。函数代码见附录2.2.1:第三章 详细设计3.1 转化为十六进制和二进制的算法 1.转化为二进制的算法。将数值除以2并记录余数,只要商不为0,继续将最新的商除以2并记录余数,当商为0以后,此数的二进制便可以由记录下来的余数得到[3]。函数的代码见附录3.1.1:转化为十六进制的算法。如果要转化的数字大于16,则把这个数字除以16并记录余数,继续将最新的商除以16并记录余数,当商为0以后,把大于9的数字转化为字母记录,这样得到的字符串就是十六进制数了。函数代码见附录3.1.2;系统调试4.1计算机的基础介绍 1. 在运行程序后,系统会弹
文档评论(0)