简易计算器设计
- 格式:doc
- 大小:317.00 KB
- 文档页数:37
附件二【学生用】简易计算器设计实习报告
题目:简易计算器设计
学号
姓名
专业班级
指导教师
实践日期
目录
一、综合训练目的与要求 (1)
二、综合训练任务.................................................................................................. 错误!未定义书签。
三、总体设计 (1)
四、详细设计说明.................................................................................................. 错误!未定义书签。
五、调试与测试 (5)
六、实习日志.......................................................................................................... 错误!未定义书签。
七、实习总结.......................................................................................................... 错误!未定义书签。
八、附录:核心代码清单 (8)
一、综合训练目的与要求
《面向对象程序设计》课程设计是实践性教学环节之一,是《面向对象程序设计》课程的辅助教学课程。
该课程设计要求学生综合运用在《面向对象程序设计》课程中学到的面向对象技术与实际编程相结合,独立完成一项较为完整、并具有一定实际功能的课程设计任务,同时加深学生对面向对象和C++编程技术的理解和掌握,培养实际的应用程序开发能力。在课程设计过程中,使学生养成良好的程序设计风格,并掌握C++应用程序的设计开发过程和编程方法、测试方法。
二、综合训练任务
(1)综合任务
设计计算器类,实现带括号的复杂表达式的计算。
(2)个人任务
我的主要是在qt中学习和使用信号和槽的机制,此外,就是设计数字键。
三、总体设计
(1) 功能模块图
图1 功能模块图
(2)最终的UML图
图2 stack类
图3 CalculatorWindow类
(3)个人设计stack的示图
图4 StackL类
四、详细设计说明
(1)工程文件视图
图5 工程文件试图(2)类的介绍
const int max_len = 20;//栈的最大容量
栈类stack()
const int max_len = 20:栈的最大容量
函数:
stack():构造函数,实现栈的初始化
~stack():析构函数
int getTop():得到栈顶指针的值
void clear():清空栈
void push(char c):符号入栈
void push(float f):数字入栈
char pop(char c):返回符号栈栈顶的符号。
float pop(int f):返回数字栈栈顶的数字。
char remove(char c) :栈顶元素出栈。
float remove(int f) :栈顶元素出栈。
bool empty():判断栈是否为空。
bool full():判断栈是否满了
分析:
开始的时候只有char s[max_len],没有float n[max_len]这个属性,后来由于字符和float型转换存在精度的问题,所以在stack类中加入了float n[max_len]这个属性。使用的时候如果建立符号栈,那么只使用char s[max_len],如果建立数字栈那么只使用float n[max_len]。栈顶指针int top,和其他函数是char s[max_len]和float n[max_len]公用。其中有push()、pop()、remove(),函数的参数没有具体意义只是为了实现函数重载来实现不同栈的操作。
运算类class calculator()
功能:实现功能选择和实现进制转换与表达式计算
属性:
stack numStack:数字栈
stack operatorStack:符号栈
string str :字符串(输入的表达式)
函数:
calculator():构造函数
virtual ~calculator():析构函数
void setStr():设置输入的数字或是表达式的字符串
string getStr():得到输入的数字或表达式的字符串
bool operatorCompare(char stackOut,char stackIn):运算符比较函数,
void partCalculate(char oper):局部计算函数,
void calculate():选择表达式运算
bool operatorCompare(char stackOut,char stackIn):运算符比较函数
long int changeHexadecimal(int num):进制转换函数实现进制的选择
float n[max_len];//数字栈
char s[max_len];//符号栈
int top;// 栈顶指针
实现表达式的计算,计算中可以有加减乘除、括号。利用栈的思想来实现,先取得表达式,然后按序入栈,符号栈和数字栈。边入栈边进行运算最后的数字栈顶元素为结果。这里面除了需要出入栈的操作,还需要进行符号优先级的设定和比较,用函数bool operatorCompare(char stackOut,char stackIn)实现。实现局部计算(栈内符号优先级高于栈外符号优先级),用函数void partCalculate(char oper)实现。
五、调试与测试
1 这是在调试运行后的截图
2这是我设计的栈代码
3这是calculatorwindow.h中的类