结对编程项目:带UI的小初高数学学习软件

结对编程

摘要

​ 本次结对编程,由我和方浩楠同学共同完成。我们采用了JAVA GUI来实现“带UI的小初高数学学习软件”,其中的UI设计、登入系统、注册账号等功能由方浩楠同学实现,出题、解题、设置选项等功能由我实现。后期,我们共同完成了前后端的合并,以及软件的改进和测试。


实现结对编程项目的过程

1.复用个人项目中的代码

​ 本次结对编程,复用了我们个人项目中的出题的部分。包含了SimpleOperationCreateSingleQuestion两个类。

SimpleOperation主要实现了在出题之前的预备工作:

1.生成一定范围内的随机数
2.生成题目指定范围内的操作数
3.加入括号
4.加入平方,开方
5.加入三角函数
6.加入运算符"+,-,*,/"

CreateSingleQuestion通过调用并且组合SimpleOperation中的方法,实现:

1.为小学生成一道题
2.为初中生成一道题
3.为高中生成一道题

​ 通过复用这两个类,轻松的实现了生成题目的要求。


2.计算题目并生成四个选项

​ 本次项目还要求“界面显示第一题的题干和四个选项,用户选择四个选项中的一个后提交,界面显示第二题,...,直至最后一题“。

​ 因此,接下来还需要进行一下操作。先根据题目得出正确答案;根据一个正确答案,生成其他三个选项。包含了ExpressionCalculate,SolveQuestion,CreateOptions三个类。

ExpressionCalculate主要实现操作符的计算

  1. 计算2,已确定表达式含有2,才调用
  2. 计算√,已确定表达式含有√才调用
  3. 计算sin,确认表达式含有sin时才调用
  4. 计算cos,确认表达式含有sin时才调用
  5. 计算tan,确认表达式含有sin时才调用

SolveQuestion主要通过调用并组合ExpressionCalculate中的方法来实现表达式的计算

CreateOptions以一个正确答案(String)作为参数,生成三个选其他选项,并且返回一个长度为五的String类数组,数组前四个放四个选项,最后一个存放正确答案对应的选项。


3.加入选择题目类型、做题、反馈得分这三个部分的UI

​ 选择题目类型UI,创建了一个SelectTypeUI类。加入了三个JButton,分别对应着小学类型,初中类型,高中类型的选择。

​ 做题UI,创建了QuestionUI类。先选择题目数量,再进行选择题。其中,QuestionUI类的调用,使用了它的传参构造方法(参数为题目的类型:小学,初中,高中)。


​ 反馈分数UI,创建了ScoreUI,通过累计之前的做题结果,显示分数。并且可以在这个界面选择继续做题,或是退出程序。

4.其他部分,详见方浩楠同学的博客。


总结

经验教训

​ 本次试验中有几个方面让我印象深刻。第一个是在实现UI界面时,我独自通过JAVA写页面,不仅花费大量时间,并且实现的UI十分不美观。好在方浩楠同学,懂得使用Eclipse插件来简化UI设计。这个名叫“windowbuilder”的插件,可以使用图形化的操作界面,来增加Button,Label等组件,并且可以拖动并修改它们的大小,并且生成对应的代码。这大大缩短了我们完成项目的时间。

​ 第二个是在通过方法计算表达式时,我仍然是独立的编写代码,希望实现小学,初中,高中题目的计算,但是实现起来依然很复杂,而且代码的bug很多。然后得知了逆波兰表达式,所以上网查找了代码。最后只通过简单的几行代码,就能实现“+,-,*,/,()”的运算。

收获

​ 通过上面两个教训,我明白了写代码很忌讳闭门造车,应该和队友多多讨论。对于已经有前人实现的功能,没必要自己再写一遍,应该多利用库文件,和开源的一些资源,把重点放在其他功能的实现上。

原文地址:https://www.cnblogs.com/baoweijie99/p/13789237.html