【数据结构】【A】十进制整数四则运算计算器

上传人:hs****ma 文档编号:512989981 上传时间:2023-10-14 格式:DOC 页数:34 大小:431KB
返回 下载 相关 举报
【数据结构】【A】十进制整数四则运算计算器_第1页
第1页 / 共34页
【数据结构】【A】十进制整数四则运算计算器_第2页
第2页 / 共34页
【数据结构】【A】十进制整数四则运算计算器_第3页
第3页 / 共34页
【数据结构】【A】十进制整数四则运算计算器_第4页
第4页 / 共34页
【数据结构】【A】十进制整数四则运算计算器_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《【数据结构】【A】十进制整数四则运算计算器》由会员分享,可在线阅读,更多相关《【数据结构】【A】十进制整数四则运算计算器(34页珍藏版)》请在金锄头文库上搜索。

1、东北大学信息科学与工程学院数据结构课程设计报告题目 十进制整数四则运算计算器课题组长 余灏然课题组成员 魏嘉 张越专业名称 计算机科学与技术班级 计算机1307指导教师 杨雷2015 年 1月 课程设计任务书题目:十进制整数四则运算计算器问题描述:由输入的四则运算表达式字符串,动态生成算术表达式所对应的二叉树,通过表达式二叉树自动求值并输出。设计要求:设计十进制整数四则运算计算器。(1)采用二叉树、栈等数据结构。(2)给定表达式字符串,生成二叉链表的表达式二叉树。(3)对表达式二叉树采用后序遍历求值并输出。(4)可以考虑加入复数四则运算功能。(5)其它完善性功能。指导教师签字:2014年12月

2、28日 目录1 课题概述11.1 课题任务11.2 课题原理11.3 相关知识42 需求分析42.1 课题调研52.2 用户需求分析53 方案设计53.1 总体功能设计53.2 数据结构设计53.3 函数原型设计53.4 主算法设计53.5 用户界面设计54 方案实现64.1 开发环境与工具64.2 程序设计关键技术64.3 个人设计实现(按组员分工)4.3.1余灏然设计实现64.3.2 魏嘉设计实现94.3.3 张越设计实现115 测试与调试135.1 个人测试(按组员分工)135.1.1 余灏然测试135.1.2 魏嘉测试165.1.3 张越测试205.2 组装与系统测试255.3 系统运

3、行256 课题总结266.1 课题评价266.2 团队协作266.3 个人设计小结(按组员分工)266.3.1 余灏然设计小结266.3.2 魏嘉设计小结276.3.3 张越设计小结277 附录A 课题任务分工28A-1 课题程序设计分工28A-2 课题报告分工29附录C 用户操作手册(可选)30C.1 运行环境说明30C.2 操作说明30 1 课题背景1.1 课题任务【问题描述】由输入的四则运算表达式字符串,动态生成算术表达式所对应的二叉树,通过表达式二叉树自动求值并输出。【设计要求】设计十进制整数四则运算计算器。(1)采用二叉树、栈等数据结构。(2)给定表达式字符串,生成二叉链表的表达式二

4、叉树。(3)对表达式二叉树采用后序遍历求值并输出。(4)可以考虑加入复数四则运算功能。(5)其它完善性功能。1.2 课题原理用二叉链表处理表达式字符串,用栈处理括号在表达式计算时的优先级问题,并且使用MFC编程语言实现可视化。1.2.1二叉链表1.2.2栈处理符号表达式1.2.3MFC编程语言实现可视化用MFC语言中对按钮Button功能的添加,将外界输入的由数字09,符号“+”、“-”、“*”、“/”、“(”、“)”构成的表达式传入编辑框中的变量CString中。与此同时,可以使用退格键“”执行退格功能和清屏键执行清屏功能。并且使用“=”按钮时,对输入的表达式进行计算。最终,由编辑框输出计算

5、结果。流程图如下流程图1流程图21.3相关知识生成二叉链表,树的后序遍历,MFC编程语言实现可视化2需求分析2.1 课题调研整数十进制四则运算计算器,用户输入算式程序程序运行并输出运算结果。2.2 用户需求分析(1) 用户可以通过MFC按钮输入多项式;(2) 可输入带括号的运算;(3) 该程序应该有对用户错误输入的辨别纠错功能;(4) 程序应具有演示功能和调试功能。 (5) 程序应具有良好的人机接口。(6) 程序应能友好的展现结果。3方案设计3.1 总体功能设计十进制整数四则运算3.2 数据结构设计栈结构,用来储存多项式及生成树;树结构,用来后序遍历以求多项式的值。3.3 函数原型设计函数原型

6、参数说明功能描述void turn(Stack &T,char dmax)void change(Stack T,Stack &S)栈T,字符数组d栈T,栈S将输入的多项式压栈并转化为前缀表达式int CreatTree(Tree &T,Stack &S) Void PostOrder(Tree T,Stack &S)树T,栈S建立二叉链表并且后序遍历求值3.4主算法设计将输入的表达式压栈,并将其转换为前缀表达式;由前缀表达式生成二叉链表;后序遍历二叉树求值。3.5 用户界面设计使用MFC编程语言设计界面如下:4 方案实现4.1 开发环境与工具主要编程环境:Blend for Visual S

7、tudio 2013编程工具:C+。4.2 程序设计关键技术将输入的表达式压栈,并将其转换为前缀表达式;由前缀表达式生成二叉链表;后序遍历二叉树求值。4.3 个人设计实现(按组员分工)4.3.1 余灏然设计实现数据结构定义和描述:反转表达式及转换前缀表达式:#includehead.h#includefuhao.cpp#includeiostreamusing namespace std;void turn(Stack &T,char dmax);void change(Stack T,Stack &S);void turn(Stack &T,char dmax) /字符串输入表达式且压栈in

8、t h,r=0; /h用于重置数字,r用于计位置data b;while(1)if(dr=0) break;if( In(dr) ) b.k=2;b.s=dr+;Push(T,b);elseh=0; while(dr!=0)if(dr=+|dr=-|dr=*|dr=/|dr=(|dr=) break;h*=10;switch(dr)case 1: h+=1;break; case 2: h+=2;break; case 3: h+=3;break; case 4: h+=4;break; case 5: h+=5;break; case 6: h+=6;break; case 7: h+=7;

9、break; case 8: h+=8;break; case 9: h+=9;break; case 0: h+=0;break; default: cout|Compare(b.s,c.s)=) Push(P,b);break;else Pop(P,c); Push(S,c);if( b.s=( )while(1)Pop(P,c); if(c.k=2 & c.s=) break; Push(S,c);while(1)GetTop(P,c);if(c.k=2 & c.s=) break;Pop(P,c);Push(S,c);4.3.2 魏嘉设计实现符号相关操作:#includeiostrea

10、musing namespace std;char Compare(char a,char b);int In(char c);int Operate(int b,char x,int a);/*判断运算的优先顺序*/char Compare(char a,char b) char c; switch(a) case+:if(b=*|b=/|b=() c=; break; case-:if(b=*|b=/|b=() c=; break; case*:if(b=() c=; break; case/:if(b=() c=; break; case(:if(b=)c=; else c=; break; case=:if(b=) c=; else c=; break; return c;int In(char c)if(c=+ | c=- | c=*| c=/|c=(|c=)|c=)return 1;e

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号