- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
郑州师范学院
信息科学与技术学院
《》课程设计报告
设计题目:
班 级: B15二班
组 长:
组 员:
指导教师:
完成日期: 2016 年 12 月 23 日
成绩:
摘 要
本次选做的课程设计是计算器的问题。是一个运算工具,本次课题要求用程序语言的方式解决问题。此问题仅使用操作就可以解决此问题。而方便使用,添加了easyx库了UI设计。
接近平常使用的计算器,特地死循环而且添加了CE”清空输入和-”删除键来控制输入错误或者循环使用的问题在方面主要是实现按键和点击等交互,方便输入和修改,在程序上面有输入和结果的。在,以栈进站的特性形式的算数转化为计算机方便计算的后缀表达式,计算出结果以文本方式显示在结果输出框内。
目 录
I
目 录 II
1需求分析 3
1.1功能简介及分析 3
1.2设计平台 3
2概要设计 3
2.1 Trans函数 3
2.2 Compvalue 函数 4
2.3 GetKey函数 4
3详细设计和实现 4
3.1转化为逆波兰式 4
3.2计算逆波兰式 6
3.3实现流程图 7
3.3部分具体程序 8
4调试与操作说明 13
4.1调试情况 13
4.2操作说明 14
5设计总结 15
参考文献 16
1需求分析
1.1功能及分析
本次选做的课程设计是计算器并且添加UI的。是以形式实现的计算器,windows系统。在功能上分为三类,分别是:计算器又分为四种:
简单计算器只实现基本的加减乘除和括号运算。
② 计算器可以进行
③ 程序员计算器:专门为程序员设计的计算器, 主要特点是支持And, Or, Not, Xor: 最基本的与或非和异或操作, 移位操作 Lsh, Rsh:全称是Left Shift和Right Shift,也就是左移和右移操作,你需要输入你要移动的位数(不能大于最大位数) RoL, RoR:全称是Rotate Left和Rotate Right,对于RoL来讲,就是向左移动一位,并将移出的那位补到最右边那位上,RoR类似。
④ 统计型计算器:为有统计要求的人员设计的设计的计算器。
本课程设计只是实现了常见的计算器
在界面上:计算器需要有简单的按键和按键响应有输入结果的显示
在功能上:能进行加减乘除混合运算,可以使用括号,有“M”可以存储结果,以便下次计算使用,可以对输入的删除和。并且继续使用。1.2设计平台
Windows7操作系统;Visual Studio 2015
2概要设计2.1 Trans函数
主要功能转化成后缀表达式,然后存到栈里,以便计算时使用,转化时包括对小括号的匹配。2.2 Compvalue 函数
主要功能是中的后缀表达式进行计算,然后返回float类型的结果。
2.3 GetKey
GetKey主要是在UI界面中获取按键然后保存成字符对字符数组的增减操作的函数。为内置死循环,可以重复使用3详细设计和实现
形式的主要用到栈的特点,把平常使用的表达式,转化为能够让计算机计算的逆波兰表达式
中缀表达式(或中缀记法)是一个通用的算术或逻辑公式表示方法, 操作符是以中缀形式处于操作数的中间(例:3 + 4),中缀表达式是人们常用的算术表示方法。
与前缀表达式(例:+ 3 4)或后缀表达式(例:3 4 +)相比,中缀表达式不容易被计算机解析,但仍被许多程序语言使用,因为它符合人们的普遍用法。
与前缀或后缀记法不同的是,中缀记法中括号是必需的。计算过程中必须用括号将操作符和对应的操作数括起来,用于指示运算的次序。
例:(1)8+4-6*2用后缀表达式表示为:62*84+-
(2)2*(3+5)-4+7/1用后缀表达式表示为:35+2*71/4-+
3.1转化为逆波兰式
首先需要分配2个栈,一个作为临时存储运算符的栈S1(含一个结束符号),一个作为输入逆波兰式的栈S2(空栈),S1栈可先放入优先级最低的运算符#,注意,中缀式应以此最低优先级的运算符结束。可指定其他字符,不一定非#不可。从中缀式的左端开始取字符,逐序进行如下步骤:
(1)若取出的字符是操作数,则分析出完整的运算数,该操作数直接送入S2栈
(2)若取出的字符是运算符,则将该运算符与S1栈栈顶元素比较,如果该运算符优先级大于S1栈栈顶运算符优先级,则将该运算符进S1栈,否则,将S1栈的栈顶运算符弹出,送入S2栈中,直至S1栈栈顶运算符低于(不包括等于)该运算符优先级,则将该运算符送入S1栈。
(3)若取出
文档评论(0)