小组成员:
王森 13070018
李经纬 13070019
完成内容:
我们在这个阶段主要完成了UI界面的学习开发以及与原来的核心模块的组合。
我们学习了MFC,并使用它作为我们项目的UI。它的好处是与我们之前开发的vc++程序都属于微软的软件系列,移植性好。缺点是MFC的结构复杂,不好学习。
我们将核心计算模块加入到了MFC中的控件处理函数中,使用上没有问题,因为只需要传入算式字符串及参数即可,但这里我们遇到了字符集的问题,MFC使用的是CString类型的字符,而我们之前使用的是string的标准c++类型。所以这里需要进行转换。
我们还将之前获得的异常码翻译成错误类型,并以弹出对话框的方式提醒用户。
主要控件处理代码:
1 void CMy21ArithmeticOperationDlg::OnBnClickedButton1() 2 { 3 UpdateData(true); 4 5 Calc c; // 核心计算模块 6 stringstream ss; 7 Fraction r; 8 int e; 9 string s; // 临时变量10 11 // 将 CString 转换为 string12 ss << exp;13 ss >> s;14 s.append("=");15 16 // 给核心模块赋值和参数17 c.setExp(s);18 c.Setting(max_op, min_val, max_val);19 20 // 获得结果和异常码21 e = c.getResult(r);22 if (e == 0)23 {24 result = r.toString();25 }26 else27 {28 switch (e)29 {30 case -1:31 MessageBox("异常:\n除数为0");32 break;33 case -2:34 MessageBox("异常:\n算式格式错误");35 break;36 case -3:37 MessageBox("异常:\n运算符数量超限");38 break;39 case -4:40 MessageBox("异常:\n数值范围超限");41 break;42 case -5:43 MessageBox("异常:\n未知字符");44 break;45 default:46 break;47 }48 }49 50 UpdateData(false);51 }
正确算式:
错误算式: