《计算器设计思路.doc》由会员分享,可在线阅读,更多相关《计算器设计思路.doc(9页珍藏版)》请在金锄头文库上搜索。
1、“语言课程设计”报告 姓 名程 序优 良 中 及格 不及格 学 号文 档优 良 中 及格 不及格 专 业计算机平 时优 良 中 及格 不及格 起始日期2010 年 7月总 评终止日期2010 年 9月设 计 文 档设计任务计算器任务分析1实现具有加,减,乘,除基本四则运算功能2设计基于MFC框架的,具有友好界面的Windows应用程序3科学计算器要求具有运算优先级别,包括运算符号的优先级判断,实现基于括号的优先级控制设计思路与流程首先设计出一个计算器的对话框,通过在对话框中输入计算式,然后使用相关的类对计算器进行解析计算,再将计算结果输出在对话框中。具体步骤:1 弹出对话框,提示输入算式2 用
2、户单击按钮后调用相应的函数进行计算3 函数首先判断计算式是否合法4 如果合法的话则去除算式中全部的空白5 函数将依次递归判断,根据第一个字符来确定下一步的动作6 如果是一个左括号,则表示括号内是一个表达式,递归调用自身7 如果是一个数字,则读取后面的全部字符直到不是数字8 如果是一个运算符,如果是乘或者除则直接对运算符两边的数字进行运算,然后返回结果,因为乘除的优先级最高9 如果是一个运算符,且为加、减、取模,则先递归调用自身进行下一步运算,然后对返回的结果进行运算,最后返回结果,这样可以保证比加减运算高的操作能率先执行10. 如果是一个字母,则可能是一次函数调用,或者一个变量,继续读取余下的
3、字母,如果剩余一个括号,表明是一个函数,则进行函数运算11如果剩余字符是一个运算符,则表明读取的是一个变量,则从符号表中读取该变量并转化为数字12如果读到了一个右括号,表明表达式结束,直接返回运算结果13如果算式为“ 字母串 = 表达式 ”的形式,说明这是一个给变量赋值的表达式,先读取变量名,然后给其赋予表达式的结果14全部表达式运算完毕后,如果还剩余字符,说明要么该字符不合法,要么表达式有语法错误,抛出异常15最后将运算结果返回给对话框,然后将其转换为字符串显示出来其中,为了实现错误检测,采用了C+的异常机制,一旦发现语法错误或者语义错误便抛出异常,然后由对话框捕捉异常并提示错误。另外保存变
4、量的符号表直接由std:map 实现,进行函数调用时同样使用 map 将函数名和函数指针关联起来。功能介绍该计算器可以进行基础的加减乘除运算,能够判断运算符的优先级和判断括号,并且能够判断所有的语法错误和语义错误。除此以外,计算器还能使用变量,能在表达式中直接使用变量名,并且能够使用表达式对变量进行复制。同时,计算器还能进行函数运算,目前支持一元函数和二元函数。一元函数包括acos,sin, atan, ceil. cos, cosh, exp, abs, floor, log, log10, sin, sinh, sqrt, tan, pow, atan, rand, round, acos
5、h, atanh, cbrt, asinh。二元函数包括dim, max, min, mod。同时计算器能够生成随机数进行运算,该计算器可以使用C函数库中全部的数学函数。文件与对象描述cal.h: 包括计算器全部函数的声明cal.cpp: 计算器全部函数的实现cal_exception.h: 用于表示计算错误的异常类的声明于实现cal_private.h: 一些计算器自身使用的内部函数cal_number_type.h: 用于定义数字的类型,此处直接为 doublecal_functions.h: 表达式中使用的函数的声明cal_functions.cpp: 表达式中使用的函数的实现Calcu
6、lator.cpp: 计算器的对话框使用的类Calculator.h: 计算器对话框类的定义CalculatorDlg.cpp: 计算器的主程序,包括消息循环的响应菜单CalculatorDlg.h: 对话框的定义DialogAbout.cpp: 关于对话框的声明DialogAbout.h: 关于对话框的定义 测试报告1.计算器的界面 1 进行运算并保存历史记录2 进行变量的赋值,并更新变量列表总结虽然计算器这个项目比较简单,但仍能考验出实际编程的能力,在简单的计算器上进行拓展并保证日后二次开发的拓展性仍然是一个不简单的任务。设 计 文 档设计任务1.要求能够随机产生矩阵。2.要求实现两矩阵相
7、加,相减,相乘,以及数乘基本运算功能3.设计基于MFC框架的,具有友好界面的Windows应用程序4.能够使用单选按钮,选择矩阵,并将其转置。任务分析由于矩阵的输入本身就是一个繁杂的过程,如果使用鼠标点击的方式来输入矩阵,操作将异常繁杂,所以矩阵的输入决定依旧采用手工输入的方式,考虑到矩阵运算本身和计算器就有共通之处,所以决定将矩阵运算加入计算器的功能当中,这样可以直接实现矩阵的表达式运算。设计思路与流程首先计算器中表示数字的类型需要进行包装,将原有的 double 置换成矩阵类,同时在计算器读取数字的本分进行拓展,使其能够分析并读取矩阵。另外矩阵本身的类也依旧需要进行大量的实现,加减乘除等运
8、算需要进行重载,使其既能够实现矩阵之间的运算,还要能实现矩阵与数字之间的运算。具体步骤:1 用户输入表达式2 程序分析出用户输入的矩阵3 程序利用计算器使用的语法分析函数对矩阵进行运算4 将矩阵转化为字符串输出功能介绍本程序除了可以计算矩阵与矩阵之间的+、-、*、/ 运算,还能计算矩阵与数字之间的运算,同时能够计算包含矩阵的复杂表达式。同时还能够对矩阵进行函数运算,可以进行转置,左除,右除等操作。文件与对象描述cal_number_type.h: 矩阵类的定义cal_number_type.cpp: 矩阵类的实现DialogViewMatrix.cpp: 查看矩阵的窗口类DialogViewM
9、atrix.h: 查看矩阵窗口类的定义NewMatrixDlg.cpp: 新建矩阵的窗口NewMatrixDlg.h: 新建矩阵窗口类的定义矩阵对象描述: number_t (double = 0.0); 使用数字初始化 number_t (number_t *, int, int, const char*); / initial matrix number_t (const number_t &); number_t (); /析构函数 number_t & operator= (const number_t &); / 赋值构造器 number_t operator+ (const num
10、ber_t &) const / 重载加法运算符; number_t operator- (const number_t &) const / 重载减法运算符; number_t operator* (const number_t &) const / 重载乘法运算符; number_t operator/ (const number_t &) const / 重载除法运算符; number_t operator% (const number_t &) const / 重载取模运算符; number_t operator (const number_t &) const / 重载异或运算符;
11、number_t operator- () const / 重载一元取负运算符; number_t operator (int index) / 取得某一项元素; number_t & operator (int index) / 取得并修改某一项元素; bool operator= (const number_t &rhs) const; bool operator!= (const number_t &rhs) const; number_t & operator+= (const number_t & rhs); number_t & operator-= (const number_t
12、 & rhs); number_t & operator*= (const number_t & rhs); number_t & operator/= (const number_t & rhs);测试报告新建矩阵的窗口:输入矩阵:矩阵进行转置运算:矩阵进行表达式运算:总结矩阵运算的实现采取了在计算器上进行扩展的方式,一方面说明了原有计算器代码的健壮性和拓展性,另一方面也将C+强大的运算重载发挥到了机制,在计算器代码不变动的情况下就能加入强大的矩阵运算功能。office, branch offices (jurisdiction), risk management, marketing ma
13、nagement sector through supervision and inspection found problems, should be assigned the investigators are corrected in a timely manner. 27th the fifth chapter penalty under any of the following acts, then the relevant provisions to punish the investigators, according to the Bank. To constitute a c
14、rime shall be investigated for criminal responsibility: (A) on the business that are not involved in the investigation, issued a survey. (B) customer credit information are not thorough verification. (Iii) to participate in credit customer survey is not in place, customers and data is incomplete, un
15、true; he knows bear a counterfeited clients issuing credit. (D) does not provide for due diligence of credit business, pre-loan investigation form, concealing facts or providing false information or should be found in a normal investigation failed to discover the risk factors, lead to the review and approval policy e