目录
1 问题描述 5
2 需求分析 5
2.1 数据需求 5
2.2 功能需求 5
2.3 非功能需求 5
3 概要设计 5
3.1抽象数据类型 5
3.2 总体设计 5
3.3 功能模块设计 5
3.4 用户界面设计 5
4 详细设计及系统实现 5
4.1 存储结构 5
4.2 核心算法 5
4.3 各功能实现 5
5 系统调试分析 5
6 课程设计总结 5
参考文献 5
附录:源码以及其它相关材料 5
2 需求分析
本演示程序是用Visual Studio软件中的MFC应用在C++环境下编写,完成计算器的各项功能。
2.1 数据需求
1、 输入的形式以及输入值的范围:通过在MFC 设计的计算器界面中可通过点击按钮输操作数0-9、(双目)运算符+、-、*、/、,(单目)运算符ln、sin、cos、tan。由以上输入的操作数和运算符组成输入数据表达式。在一元多项式计算器中通过键盘依次输入系数、变量以及指数组成输入数据的一元多项表达式,在一元多项式的计算两个一元多项式的和、差、积并分别正序、逆序输出的功能的时候需要输入两个一元多项式的式子,例如2x3+1x0-3x7。
2、 输出的形式:在多功能计算器中输出输入表达式的值,输出的形式为浮点型数据,如果输入表达式正确,最后会返回这个数学表达式的结果,如果输入的数学表达式不正确,则会输出表达式不正确的提示性文字。在求两个一元多项式的和、差、积的操作的时候,程序正确运行时最后会输出两个一元多项式的和、差、积分别按照指数递增和指数递减的对应字符串,而在一元多项式计算器中的输出形式依然是一元多项式或者常数。
3、 功能需求(程序所能达到的功能):计算表达式的值以及一元多项式的运算、完成按钮和输入数据的联系以及对话框之间的联系、保存输入表达式的历史记录、清空输入对话框数据、撤回、清空所有数据。
本代码运用了栈的顺序存储结构以及单链表的链式存储结构
栈的顺序存储结构,定义运算符栈以及操作数栈,顺序栈便于接下来括号匹配以及表达式计算
class YusuanfuStack
{
public:
char Stack[100];
int top;
int MAXsize;
YusuanfuStack()//相当于是一个自定义函数,一旦开始定义的时候变会自动调用这个对应的程序//
{
this->top = -1;
this->MAXsize = MAX;
}
class CaozuoshuStack
{
public:
double Stack[100];
int top;
int MAXsize;
CaozuoshuStack()
{
this->top = -1;
this->MAXsize = MAX;
}
单链表的链式存储结构,定义链表节点,链式存储便于一元多项式指数比较以及相应系数相加。
typedef struct Exp
{
float xishu;
int zhishu;
}Exp;
typedef struct Node
{
Exp data;
struct Node* next;
}Node;
typedef struct Node* Linklist;