THE LAST ONE!! 2017《面向对象程序设计》课程作业八
031602230 卢恺翔
GitHub传送门
题目描述
1.时间匆匆,本学期的博客作业就要结束了,是否有点不舍,是否还想继续迭代优化你们计算器项目的作业呢?本学期最后一次博客作业,请大家描述:
- 从寒假到这次结束,经历的博客及编码作业的过程;
- 通过博客作业学到的知识、理论或技能;
- 博客作业结束时的感受;
- 暑假要如何规划,请立下你们的flag。
2.请将第六次博客作业中学习到的界面编程运用到本学期的面向对象计算器项目中。
作业要求
- 发表一篇博客,博客内容为:提供本次作业的github链接,界面截图、题目描述的第一点内容。
- 第六次已经做过简单界面的同学请思考如果优化界面,让界面更加优雅美观。还未实现界面的同学请完成本次界面编程的作业
从寒假到这次结束,经历的博客及编码作业的过程
编程作业总共经历了4个过程:
- 实现四则运算计算器的核心算法和初步的界面设计
- 实现多种语言的转换
- 通过文件的传输来进行赋值和写入文件
- 初步学习MFC的界面设计
其中博客作业出了每次编程的报告之外,还有关于类图的设计和MFC的自主学习。
通过博客作业学到的知识、理论或技能
学会使用vs2015,这种强大的编译器和Github这种好用的开源平台。
学习了类的结构,栈的结构,中缀转后缀的算法,文件的读入和写入,相对路径和绝对路径,类图的设计(迷),和MFC的初步设计等知识。也了解到了团队合作的有趣和重要性。
博客作业结束时的感受
感觉,终于解放了。。。主要是一开始没有理会老师的意思,当时以为要自己设计一套算法(不用栈的那种,写了好几个if),所以觉得这个非常难。。。但结束的时候也有点寂寞和不舍吧。如果没有这次编程作业,恐怕在这大学四年都无法体验到这种编这种(比较)大项目的感受了。而且也学习了不少课外的知识,对自己的帮助挺大的。很感谢老师能给我们提供这样的教学方式。
暑假要如何规划,请立下你们的flag
emmmmmm,最喜欢立flag了。这次的编程对括号的处理还不是特别到位,暑假打算对数据结构进行学习,完善算法。(其实寒假就想学了,结果被四则运算打乱了。。。)
请将第六次博客作业中学习到的界面编程运用到本学期的面向对象计算器项目中
因为是初学,还不懂如何将之前做的程序的所有功能转移到MFC中,比如语言界面的转化啊什么的。但是大体框架还是做好了。
左上角那个edit control 和右下角那个 设置为只读,分别用来生成随机算式和显示结果。
右上角那个edit control和左下角那个设置为可以写入,左下角那个设置为可写入是因为我觉得背景是白色的颜色对比度会大一点,比较好看。
显示题目按钮
void CMFCApplication3Dlg::OnBnClickedButton3()
{
UpdateData();
static int i = 1; //用于记录题号
string str;
Data dat;
str = dat.generateExpression(i); //生成随机算式
rightanswer = dat.expressionCalculate(str); //计算正确值(int 型)
i++;
EQUATION = str.c_str();
aa = aa+EQUATION; //用于在程序的左下角文本框中记录每道题的题目
string ans;
CString answ;
ans = dat.int_str(ANSWER);
answ = ans.c_str();
aa = aa + answ;
aa = aa +'
' +'
'; //左下角文本框中的换行
UpdateData(FALSE);
// TODO: 在此添加控件通知处理程序代码
}
判断正误按钮
void CMFCApplication3Dlg::OnBnClickedButton1()
{
UpdateData(TRUE);
Data dat;
CString s1,s2; //用于在程序的左下角文本框中记录每道题的正确答案
s1 = "正确"; //如果答案正确,输出“正确”
string s3;
s3 = "错误,正确答案为"; //如果答案错误,输出“错误,正确答案为...”
s3 = s3 + dat.int_str(rightanswer);
s2 = s3.c_str();
if (ANSWER == rightanswer)
JUGG = s1;
else
JUGG = s2;
aa = aa + JUGG + '
' + '
'; //左下角文本框中的换行
AA = aa;
UpdateData(FALSE);
// TODO: 在此添加控件通知处理程序代码
}
详见GitHub链接