基本功能:1.一个带有用户界面的四则运算程序2.用户可以自己输入数据3.支持负数运算4.中间结果同样符合用户参数要求
界面效果:1.主界面
2.参数设置界面
原理分析:程序的大致流程为:用户进入主界面,点集“生成题目”,跳转到参数设置界面,用户设置完成后点击确定,主窗口从子窗口对象中提取各个参数生成算式,用户点击“打印题目”后将算式在listbox控件中输出。
为了方便起见,将生成算式的功能独自封装为一个类,在读取参数后直接调用这个类所实例化的对象的不同方法来生成算式。
生成算式的类主要包括三个方面的功能,即:算式求解、算式判重、生成算式。
(1)算式求解,参数为一个字符串表示具体算式,利用栈对其求解得出结果。
(2)算式判重,直接比较两个字符串是否相等。
(3)算式生成,为了保证中间结果满足整除或不为负数的要求,先用字母表示操作数, 随机生成运算符,此时得到一个抽象算式,对此算式计算其后缀表达式,以确定其 运算顺序,之后一次生成操作数即可,此处依然借助了栈进行实现。
代码:“生成题目”按钮的Click时间核心代码下:
当form窗体关闭后提取参数。之后调用算式类Equation类的对象,生成算式。
Equation类的类图如下
其中前8个方法为生成不同情况算式所对应的方法,build_suf为构造后缀表达式的方法,其调用如下所示:
e_cmp为比较两个算式是否重复,参数为两个字符串。Solve方法为表达式求解方法。属性的定义及含义如下所示:
MyStack为自己定义的栈类,对象sop存储操作符,snum存储操作数。构造抽象算式的代码以其中一个方法为例,如下所示:
这次的作业大部分都是靳嘉豪做的 ,因为是一个组的原因,我的作业得到他许多的帮助,在他积极的帮助下我们完成了这次的作业。虽然我并没有给与他太多的帮助,但是跟他在一个组我学习了很多。十分感谢
同组人:靳嘉豪