计算器设计思路计算器设计思路.docVIP

  • 566
  • 0
  • 约3.8千字
  • 约 9页
  • 2017-04-23 发布于贵州
  • 举报
“语言课程设计”报告 姓 名程 序优 良 中 及格 不及格 学 号文 档优 良 中 及格 不及格 专 业计算机平 时优 良 中 及格 不及格 起始日期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)

1亿VIP精品文档

相关文档