欢迎来到天天文库
浏览记录
ID:19777055
大小:317.00 KB
页数:37页
时间:2018-10-06
《简易计算器设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、附件二【学生用】简易计算器设计实习报告题目:简易计算器设计学号姓名专业班级指导教师实践日期目录一、综合训练目的与要求1二、综合训练任务1三、总体设计1四、详细设计说明1五、调试与测试1六、实习日志1七、实习总结1八、附录:核心代码清单1一、综合训练目的与要求《面向对象程序设计》课程设计是实践性教学环节之一,是《面向对象程序设计》课程的辅助教学课程。该课程设计要求学生综合运用在《面向对象程序设计》课程中学到的面向对象技术与实际编程相结合,独立完成一项较为完整、并具有一定实际功能的课程设计任务,同时加深学生对面向对象和C++编程技术的理解和掌握,培养实际的应用程序开发能力。在课
2、程设计过程中,使学生养成良好的程序设计风格,并掌握C++应用程序的设计开发过程和编程方法、测试方法。二、综合训练任务(1)综合任务设计计算器类,实现带括号的复杂表达式的计算。(2)个人任务我的主要是在qt中学习和使用信号和槽的机制,此外,就是设计数字键。三、总体设计(1)功能模块图图1功能模块图35(2)最终的UML图图2stack类图3CalculatorWindow类35(3)个人设计stack的示图图4StackL类四、详细设计说明(1)工程文件视图图5工程文件试图(2)类的介绍constintmax_len=20;//栈的最大容量栈类stack()constintm
3、ax_len=20:栈的最大容量35函数:stack():构造函数,实现栈的初始化~stack():析构函数intgetTop():得到栈顶指针的值voidclear():清空栈voidpush(charc):符号入栈voidpush(floatf):数字入栈charpop(charc):返回符号栈栈顶的符号。floatpop(intf):返回数字栈栈顶的数字。charremove(charc):栈顶元素出栈。floatremove(intf):栈顶元素出栈。boolempty():判断栈是否为空。boolfull():判断栈是否满了分析:开始的时候只有chars[max_
4、len],没有floatn[max_len]这个属性,后来由于字符和float型转换存在精度的问题,所以在stack类中加入了floatn[max_len]这个属性。使用的时候如果建立符号栈,那么只使用chars[max_len],如果建立数字栈那么只使用floatn[max_len]。栈顶指针inttop,和其他函数是chars[max_len]和floatn[max_len]公用。其中有push()、pop()、remove(),函数的参数没有具体意义只是为了实现函数重载来实现不同栈的操作。运算类classcalculator()功能:实现功能选择和实现进制转换与表达式
5、计算属性:stacknumStack:数字栈stackoperatorStack:符号栈stringstr:字符串(输入的表达式)函数:calculator():构造函数virtual~calculator():析构函数voidsetStr():设置输入的数字或是表达式的字符串stringgetStr():得到输入的数字或表达式的字符串booloperatorCompare(charstackOut,charstackIn):运算符比较函数,voidpartCalculate(charoper):局部计算函数,35voidcalculate():选择表达式运算boolope
6、ratorCompare(charstackOut,charstackIn):运算符比较函数longintchangeHexadecimal(intnum):进制转换函数实现进制的选择floatn[max_len];//数字栈chars[max_len];//符号栈inttop;//栈顶指针实现表达式的计算,计算中可以有加减乘除、括号。利用栈的思想来实现,先取得表达式,然后按序入栈,符号栈和数字栈。边入栈边进行运算最后的数字栈顶元素为结果。这里面除了需要出入栈的操作,还需要进行符号优先级的设定和比较,用函数booloperatorCompare(charstackOut,c
7、harstackIn)实现。实现局部计算(栈内符号优先级高于栈外符号优先级),用函数voidpartCalculate(charoper)实现。五、调试与测试1这是在调试运行后的截图2这是我设计的栈代码3这是calculatorwindow.h中的类35说明:(1)可以进行常规四则运算,以及带括号的运算。(2)在输入非法时会出现“####”,表示输入错误。例1:2*(3+1)-6/3的运算按下等号后显示结果如下:例2:2+(3-(6+9/3)+5)35按下等号后显示结果如下:3在非法输入时会自动报错(以除数是0为例
此文档下载收益归作者所有