数据结构计算器(包括中缀转换后缀)课程设计概念.doc

数据结构计算器(包括中缀转换后缀)课程设计概念.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课程设计报告 题目:计算表达式的值 1.问题描述 对于给定的一个表达式,表达式中可以包括常数、算术运行符(“+”、“-”、“*”、“/”)和括号,编写程序计算表达式的值。 基本要求:从键盘输入一个正确的中缀表达式,将中缀表达式转换为对应的后缀表达式,并计算后缀表达式的值。对于表达式中的简单错误,能够给出提示,并给出错误信息;表达式中可以包括单个字母表示的变量。 测试数据:任意选取一个符合题目要求的表达式。 提高要求:(1)能够处理多种操作符。 (2)实现包含简单运算的计算器。 (3)实现一个包含简单运算和函数运算的计算器。 2.需求分析 (1)软件的基本功能 本软件实在win32工程下实现的带有界面和图标的功能较为齐全的计算器。 此计算器分三个方面进行计算,分别为数值表达式的计算,字母表达式的计算和函数计算。可由键盘或用鼠标点击按键输入带有数字或字母的中缀表达式,程序可以将输入的带有数字或字母的中缀表达式转换成对应的后缀表达式,并计算只含有数字的后缀表达式的值。本软件支持含小数、多位数等多种操作数的处理,可以计算含加、减、乘、除、百分号、求余、求幂,求阶乘,求三角函数的值等多种运算符和函数的表达式 输入/输出形式 用户可通过打开图标弹出来的计算器界面任意点击操作。对于在输入时发生的简单错误,软件通过弹出对话框给出提示并且在提示错误的同时自动将用户的出错输入略去转化成正确的表达式进行计算,用户也可选择清楚操作然后重新输入 a.对于数值和函数表达式软件会输出其表达式的后缀表达式和计算结果并保留六位小数; b.对于字母表达式因字母无法进行数值运算,软件仅输出其后缀表达式的值; 清楚按钮可以清楚有已经输入或输出的数据从头计算; 软件窗口可实现最小化。并且输入编辑框可进行修改,复制,粘贴等操作,但后缀表达式和求值结果的编辑框中的内容不可修改,只能执行复制操作。 测试数据要求 用户可以输入一个符合要求的中缀表达式,也可以输入一个包含简单错误的表达式。表达式中可以包括各种类型的常数以及字母等,操作符包括(+、-、*、/、%、^、!、sin、cos、tan、mod,pi) 模块调用关系 本软件的函数包括: WinMain函数:软件的主函数,用于调用对话框 DialogProc函数:计算器对话框的消息回调函数,用于接收和处理按键操作 Power函数:求某个数值任意幂的函数 Factorial函数:求阶乘函数 数据类型: CStack字符栈;DStack浮点型数据栈;Expression对表达式进行处理的类。 其中Power函数和Factorial函数还有所有的数据类型和算法都包含在定义的hanshu.h的头文件中,在WinMain函数中的DialogProc函数中调用。 资源文件: Dialog资源:对话框资源文件 Icon资源:图标资源文件 结构关系如下: 详细设计 界面设计 如图所示界面,创建按钮并为每个控件创建ID号 控件ID: 实现概要设计的数据类型 CStack字符栈; class CStack { private: char datasta[100]; int top; public: CStack(){top=-1;} char Pop(){return datasta[top--];} char Get(){return datasta[top];} void Push(char x){datasta[++top]=x;} int IsEmpty(){if(top==-1)return 1;else return 0;} }; DStack浮点型数据栈; class DStack { private: double datasta[100]; int top; public: DStack(){top=-1;} double Pop(){return datasta[top--];} double Get(){return datasta[top];} void Push(double x){datasta[++top]=x;} int IsEmpty(){if(top==-1)return 1;else return 0;} }; Expression对表达式进行处理的类 class Expression { private: char InArr[1024]; DStack dsta; CStack csta; char arr[20];

您可能关注的文档

文档评论(0)

502992 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档