- 1、本文档共44页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
C++程序设计设计性实验
C++程序设计设计性实验报告
实验项目名称:高级计算器设计与开发
专业班级: 信息072 ;姓名:范高华;学号200712030213
实验起止日期:起于2009 年12 月14 日止于2009 年12 月27 日实验目的:
学会用C++语言和数据结构知识实现表达式的解析与计算;学会使用动态链接库技术进行编程;学会编辑、编译、运行MFC应用程序的基本过程.学会MFC可视化编程技术。
实验要求:
能处理双精度型数值的加、减、乘、除的表达式计算。
编程中使用了动态连接库技术。
技术文档要求:
按照软件工程技术文档编写要求进行。要求流程图绘制规范,模块功能描述清晰,数据字典齐全。
实验内容:
C++语言的顺序结构,分支结构,循环结构,函数,结构体,指针。
数据结构中的堆栈存贮结构及其操作的实现。
实验具体方案:
按照系统设计要求,用VisualC++设计和开发一个MFC应用程序---高级计算器,提交由需求分析;系统设计说明(包括主菜单、子菜单、模块功能简介、数据字典、系统结构图);系统技术文档(包括系统各模块主要流程图,软件总体测试方案与测试记录、局部测试方案与测试记录、软件调试和修改记录、测试结论、运行情况记录),系统使用说明书,源程序代码为附录构成的实验报告。
需求分析:
普通的功能简单的仅能进行四则运算的计算工具已经不能满足需要,需要一种能进行多种计算工具。而windows自带的计算器不能处理表达式这是一个缺陷,为此开发一个能处理表达式运算的高级计算器是十分必要的,这为计算提高了更大的方便,可以大幅度提高计算效率。
系统设计说明:(包括主菜单、子菜单、模块功能简介、数据字典、系统结构图)
1
高级计算器设计与开发
主菜单主要包含: 操作说明、相关主题、退出。
整个程序的模块组成:
Windows基于对话框的资源文件模块。
动态链接库模块,主要提供了表达式的解析与计算。
其他功能模块如开平方,取平方,进制转换等。
数据字典
m_edit1 //编辑框变量,用于显示输入输出CStringstr1,str2,str3; //中间临时字符串变量
chars[70],s2[70],buffer[20]; //用于CString字符串的转换以及将double型数据转
换为CString型字符串。
stack //结构体类型
ElemType*stack; //存栈元素
Inttop //存栈顶元素的下标位置intMaxSiz //存stack数组长度。voidInitiatestack(StackS) //堆栈的初始化
voidPush(StackS,ElemTypeitem)//进入堆栈
ElemTypePop(StackS) //删除栈顶元素并以函数值返回ElemTypePeek(StackS) //返回当前栈顶元素
intPrecedence(charop) //运算符优先级的判别
intchange(char*str1,char*str2) //将str1的中缀表达式转换为str2中的后缀表达doublecompute(char*str) //计算后缀表达式
double*tranfrom(doublenum,intr) //进制转换的子函数MessageBox(CString) //用于弹出对话框,用于警告非法输入
_T() //用于清空CString字符串
Str,Right(intn) //用于从右截取长为n的字符串并赋给strStrtod(char*,char**) //用于将CString型字符串转化为double型数据
2
C++程序设计设计性实验
计算
计
算
器
主
菜
单
主
主
控 面
板
显
示框
加
减
除
乘
数
字键
开
对
法
法
法
法
方
数
三角函数
进制转换
Delete
系统技术文档(包括系统各模块主要流程图,软件总体测试方案与测试记录、局部测试方案与测试
记录、软件调试和修改记录、测试结论):
进制转换流程图:
开
开
始
用要转换的数字x除以基数
r,所得余数yi并压入栈中
商为零
是
依次弹出栈中的元素即为转换好的
r进制数。算法结束
否
把商赋给当前数值x
3
高级计算器设计与开发
中缀表达式转化为后缀表达式算法流程图:
开始
从左到右扫描中缀表达式str1,读取字符
是数或小数点 是 将其写入用于存储后缀表达
式的字符数组str2中
否
是左括号 是
将其压入运算符栈中,待以它开始的括号表达式结束后出栈
否
是
运 否
继续扫描中缀表达式字符串,直
算 到遇见第一个右括号
符
是
该运算
文档评论(0)