小组成员:
王森 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 转换为 string 12 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 else 27 { 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 }
正确算式:
错误算式: