- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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];
您可能关注的文档
- 数据中心制冷系统41问答题概念.doc
- 数据中心在线搬迁方案概念.doc
- 数据中心项目建设方案介绍概念.doc
- 数据中心机房管理规范V4概念.doc
- 四川省北川县天然气输配管网工程施工概念.doc
- 数据与建模实验概念.doc
- 数据中心IDC维护管理办法2014年版0925概念.doc
- 数据引擎部署文档概念.doc
- 四川省2012年普通高校职教师资和高职班对口招生统一考试信息技术一类样题概念.doc
- 数据业务高价值客户流失预警及保有运营场景说明书v1.1概念.doc
- 浙江衢州市卫生健康委员会衢州市直公立医院高层次紧缺人才招聘11人笔试模拟试题参考答案详解.docx
- 浙江温州泰顺县退役军人事务局招聘编外工作人员笔试备考题库及参考答案详解一套.docx
- 江苏靖江市数据局公开招聘编外工作人员笔试模拟试题及参考答案详解.docx
- 广东茂名市公安局电白分局招聘警务辅助人员40人笔试模拟试题带答案详解.docx
- 江苏盐城市大丰区住房和城乡建设局招聘劳务派遣工作人员4人笔试模拟试题带答案详解.docx
- 浙江舟山岱山县东沙镇人民政府招聘笔试模拟试题及参考答案详解1套.docx
- 最高人民检察院直属事业单位2025年度公开招聘工作人员笔试模拟试题含答案详解.docx
- 浙江金华市委宣传部、中共金华市委网信办所属事业单位选调工作人员笔试备考题库及答案详解1套.docx
- 广东深圳市党建组织员招聘40人笔试模拟试题及答案详解1套.docx
- 江苏南京水利科学研究院招聘非在编工作人员4人笔试模拟试题及参考答案详解.docx
文档评论(0)