- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算器的设计思路
“语言课程设计”报告
姓 名 程 序 优 良 中 及格 不及格 学 号 文 档 优 良 中 及格 不及格 专 业 计算机 平 时 优 良 中 及格 不及格 起始日期 2010 年 7月 总 评 终止日期 2010 年 9月 设 计 文 档 设计任务 计算器 任务分析 1.实现具有加,减,乘,除基本四则运算功能
2.设计基于MFC框架的,具有友好界面的Windows应用程序
3.科学计算器要求具有运算优先级别,包括运算符号的优先级判断,实现基于括号的优先级控制 设计思路与流程 首先设计出一个计算器的对话框,通过在对话框中输入计算式,然后使用相关的类对计算器进行解析计算,再将计算结果输出在对话框中。
具体步骤:
弹出对话框,提示输入算式
用户单击按钮后调用相应的函数进行计算
函数首先判断计算式是否合法
如果合法的话则去除算式中全部的空白
函数将依次递归判断,根据第一个字符来确定下一步的动作
如果是一个左括号,则表示括号内是一个表达式,递归调用自身
如果是一个数字,则读取后面的全部字符直到不是数字
如果是一个运算符,如果是乘或者除则直接对运算符两边的数字进行运算,然后返回结果,因为乘除的优先级最高
如果是一个运算符,且为加、减、取模,则先递归调用自身进行下一步运算,然后对返回的结果进行运算,最后返回结果,这样可以保证比加减运算高的操作能率先执行
10. 如果是一个字母,则可能是一次函数调用,或者一个变量,继续读取余下的字母,如果剩余一个括号,表明是一个函数,则进行函数运算
11.如果剩余字符是一个运算符,则表明读取的是一个变量,则从符号表中读取该变量并转化为数字
12.如果读到了一个右括号,表明表达式结束,直接返回运算结果
13.如果算式为“ 字母串 = 表达式 ”的形式,说明这是一个给变量赋值的表达式,先读取变量名,然后给其赋予表达式的结果
14.全部表达式运算完毕后,如果还剩余字符,说明要么该字符不合法,要么表达式有语法错误,抛出异常
15.最后将运算结果返回给对话框,然后将其转换为字符串显示出来
其中,为了实现错误检测,采用了C++的异常机制,一旦发现语法错误或者语义错误便抛出异常,然后由对话框捕捉异常并提示错误。
另外保存变量的符号表直接由std:map 实现,进行函数调用时同样使用 map 将函数名和函数指针关联起来。 功能介绍 该计算器可以进行基础的加减乘除运算,能够判断运算符的优先级和判断括号,并且能够判断所有的语法错误和语义错误。
除此以外,计算器还能使用变量,能在表达式中直接使用变量名,并且能够使用表达式对变量进行复制。
同时,计算器还能进行函数运算,目前支持一元函数和二元函数。
一元函数包括acos,sin, atan, ceil. cos, cosh, exp, abs, floor, log, log10, sin, sinh, sqrt, tan, pow, atan, rand, round, acosh, atanh, cbrt, asinh。
二元函数包括dim, max, min, mod。
同时计算器能够生成随机数进行运算,该计算器可以使用C函数库中全部的数学函数。 文件与对象描述 cal.h: 包括计算器全部函数的声明
cal.cpp: 计算器全部函数的实现
cal_exception.h: 用于表示计算错误的异常类的声明于实现
cal_private.h: 一些计算器自身使用的内部函数
cal_number_type.h: 用于定义数字的类型,此处直接为 double
cal_functions.h: 表达式中使用的函数的声明
cal_functions.cpp: 表达式中使用的函数的实现
Calculator.cpp: 计算器的对话框使用的类
Calculator.h: 计算器对话框类的定义
CalculatorDlg.cpp: 计算器的主程序,包括消息循环的响应菜单
CalculatorDlg.h: 对话框的定义
DialogAbout.cpp: 关于对话框的声明
DialogAbout.h: 关于对话框的定义 测试报告
1.计算器的界面
进行运算并保存历史记录
进行变量的赋值,并更新变量列表
总结 虽然计算器这个项目比较简单,但仍能考验出实际编程的能力,在简单的计算器上进行拓展并保证日后二次开发的拓展性仍然是一个不简单的任务。
设 计 文 档 设计任务 1.要求能够随机产生矩阵。
2.要求实现两矩阵相加,相减,相乘,以及数乘基本运算功能
3.设计基于MFC框架的,具有友好界面的Windows应用程序
4.能够使用单选按钮,选择矩阵,
文档评论(0)