结对编程项目:带UI的小初高数学学习软件-个人总结
结对编程项目:带UI的小初高数学学习软件
本次的课题是在上次生成题目的基础上,进一步完成集用户账号登录、注册、管理、生成题目、做题、得到分数等功能于一体的带UI界面的数学学习软件。
讨论:
1、由于需要制作图形化界面,原先课题的C++语言已不再方便,用C++做界面不仅难度稍大、操作不便,并且成果的界面不够美观,考虑到上学期学习了JAVA语言之后,我和队友决定使用JAVA作为编程语言来完成此次课题。
2、初步决定将项目开发分为4个步骤,分别是
1) 设计用户账户的控制界面(包括登录、注册、修改密码)
2) 设计登录后的测试配置界面(包括题目的数量、题目的难度)
以上两个部分由我队友完成
3) 数学测试界面(包括题目生成算法、题目解析算法、题目求解算法、设计测试界面、测试结果界面)
此部分由我完成
4) 两人分工代码的衔接合并
个人部分实现:
1、题目生成算法
此部分可以直接复用个人项目的C++代码,由于JAVA与C++语法差异不大,因此只需要将库函数修改即可,然后根据需求微调结构
2、【难点】题目解析算法
1)从小学至高中,运算符类型一共有+,-,*,/,√,^2,sin,cos,tan 九种,再加上( )符号,识别算法必须设立标准;
使用将全部运算符都转化为2元运算符的方式可以有效地统一识别方法为“A operator B”的格式,如将“sinA”修饰为“1sA”、“√6”修饰为“1V6”,在实现运算的方法中就可以简便的计算;
2)由于题目符号较多且还有括号,题目的运算顺序变得不确定;
采用逆波兰式解析算式方法,对于题目字符串,分别使用栈来储存数字项和符号项,过程中根据设定好的符号优先级压栈弹栈,最终将数字栈和符号栈统合至一起,称为“后缀表达式”;
后缀表达式只需逐个读取符号然后利用数字计算即可;
具体实现请阅下面这篇博客:
https://blog.csdn.net/qq_37969433/article/details/81200872
3、题目求解算法
由于采用后缀表达式的方式,每次进行两项的运算,因此即为二项运算,由于第一步已将表达式修饰,诸如“√”“sin”此类符号已转化为二元运算符,因此直接根据符号类型分类计算即可得到答案;
4、UI界面设计
UI界面分为测试界面和结果界面;
测试界面即显示题目序号、题目文本、题目选项为主要内容;
得分界面即显示最终得分;
这一步没有什么复杂点,只需设计图形界面,然后传入数据显示即可;
体会:
最大的体会就是在项目设计之前一定要做好充足的沟通!
最大的体会就是在项目设计之前一定要做好充足的沟通!
最大的体会就是在项目设计之前一定要做好充足的沟通!(重要的事情说3遍)
为什么这样说呢?因为当我的部分和队友的部分都完成后,我俩的代码始终衔接不上,主要是接口不对、数据的访问方式差异等问题,导致结合代码花费较长的时间;其次,对于项目的设计和实现没有做好足够的讨论认识,导致我们在项目分工上出现任务量不平衡的问题,项目到后期才发现队友的代码量过大,因此我们又花时间重新分配了一下任务。。。

浙公网安备 33010602011771号