欢迎来到天天文库
浏览记录
ID:40000222
大小:362.10 KB
页数:27页
时间:2019-07-16
《大数据结构课程设计简单计算器C语言》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实用文档郑州师范学院信息科学与技术学院《简单计算器》课程设计报告设计题目:简单计算器班级:B15计科二班组长:组员:指导教师:完成日期:2016年12月23日成绩:文案大全实用文档摘要本次选做的课程设计是实现简单计算器的问题。计算器是一个常用的运算工具,本次课题要求用程序语言的方式解决问题。此问题仅使用数据结构中的栈操作就可以解决此问题。而在为了方便使用,添加了easyx图形库实现了UI设计。为了接近平常使用的计算器,特地创建死循环而且添加了“CE”清空输入和“<-”删除键来控制输入错误或者循环使用的问题。在UI方面主要是实现按键和点击响
2、应等交互,方便输入和修改,在程序框上面有输入和显示结果的文本框。在计算过程中,以栈出栈进站的特性把中缀形式的算数表达式转化为计算机方便计算的后缀表达式,最后计算出结果以文本方式显示在结果输出框内。文案大全实用文档目录摘要I目录II1需求分析31.1功能简介及分析31.2设计平台32概要设计32.1Trans函数32.2Compvalue函数42.3GetKey函数43详细设计和实现43.1转化为逆波兰式43.2计算逆波兰式63.3实现流程图73.3部分具体程序84调试与操作说明134.1调试情况134.2操作说明145设计总结15参考文献
3、16文案大全实用文档1需求分析1.1功能简介及分析本次选做的课程设计是实现简单的计算器并且添加UI的交互。此计算器是以软件的形式实现的计算器,运行在windows系统。计算器在功能上分为三类,分别是:常见计算器,专用计算器,综合功能计算器。常见的计算器又分为四种:①简单型计算器:只实现基本的加减乘除和括号运算。②科学型计算器:可以进行乘方、开方、指数、对数、三角函数、统计等方面的运算,又称函数计算器。③程序员计算器:专门为程序员设计的计算器,主要特点是支持And,Or,Not,Xor:最基本的与或非和异或操作,移位操作Lsh,Rsh:全称
4、是LeftShift和RightShift,也就是左移和右移操作,你需要输入你要移动的位数(不能大于最大位数)RoL,RoR:全称是RotateLeft和RotateRight,对于RoL来讲,就是向左移动一位,并将移出的那位补到最右边那位上,RoR类似。④统计型计算器:为有统计要求的人员设计的设计的计算器。本次课程设计只是实现了常见的简单计算器:在界面上:简单的计算器需要有简单的按键和按键响应,有输入和结果的显示。在功能上:能进行加减乘除混合运算,可以使用括号,有“M”键可以存储结果,以便下次计算使用,可以对输入的文本删除和重置。并且可
5、以在重置后继续使用。1.2设计平台Windows7操作系统;VisualStudio20152概要设计2.1Trans函数主要功能中缀算术表达式转化成后缀表达式,然后存到栈里,以便计算时使用,转化时包括对小括号的匹配。文案大全实用文档2.2Compvalue函数主要功能是对栈中的后缀表达式进行计算,然后返回float类型的结果。2.3GetKey函数GetKey主要是在UI界面中获取按键然后保存成字符数组或者对字符数组的增减操作的函数。此函数为内置死循环,可以重复使用。3详细设计和实现实现软件形式的常用简单计算机,主要用到栈的特点,把平常
6、使用的表达式,转化为能够让计算机计算的逆波兰表达式。中缀表达式(或中缀记法)是一个通用的算术或逻辑公式表示方法,操作符是以中缀形式处于操作数的中间(例:3+4),中缀表达式是人们常用的算术表示方法。与前缀表达式(例:+34)或后缀表达式(例:34+)相比,中缀表达式不容易被计算机解析,但仍被许多程序语言使用,因为它符合人们的普遍用法。与前缀或后缀记法不同的是,中缀记法中括号是必需的。计算过程中必须用括号将操作符和对应的操作数括起来,用于指示运算的次序。例:(1)8+4-6*2用后缀表达式表示为:62*84+-(2)2*(3+5)-4+7/
7、1用后缀表达式表示为:35+2*71/4-+3.1转化为逆波兰式首先需要分配2个栈,一个作为临时存储运算符的栈S1(含一个结束符号),一个作为输入逆波兰式的栈S2(空栈),S1栈可先放入优先级最低的运算符#,注意,中缀式应以此最低优先级的运算符结束。可指定其他字符,不一定非#不可。从中缀式的左端开始取字符,逐序进行如下步骤:(1)若取出的字符是操作数,则分析出完整的运算数,该操作数直接送入S2栈(2)若取出的字符是运算符,则将该运算符与S1栈栈顶元素比较,如果该运算符优先级大于S1栈栈顶运算符优先级,则将该运算符进S1栈,否则,将S1栈的
8、栈顶运算符弹出,送入S2栈中,直至S1栈栈顶运算符低于(不包括等于)该运算符优先级,则将该运算符送入S1栈。文案大全实用文档(3)若取出的字符是“(”,则直接送入S1栈底。(4)若取出的字符是
此文档下载收益归作者所有