结对编程项目:带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遍)

       为什么这样说呢?因为当我的部分和队友的部分都完成后,我俩的代码始终衔接不上,主要是接口不对、数据的访问方式差异等问题,导致结合代码花费较长的时间;其次,对于项目的设计和实现没有做好足够的讨论认识,导致我们在项目分工上出现任务量不平衡的问题,项目到后期才发现队友的代码量过大,因此我们又花时间重新分配了一下任务。。。

 

posted @ 2020-10-10 01:11  ALonelyNoah  阅读(110)  评论(1)    收藏  举报