结对编程——带UI的小初高数学学习软件

项目基本功能

在正式开始编写项目代码之前,做了一个简单的功能梳理,便于对项目有一个整体的把握,也便于在编写代码时进行模块化处理

 

如何复用个人项目实现结对编程项目

在个人项目中因为主要只有一个大功能要实现所以我只写了一个类,用户数据存储使用了一个简单的HashMap,这样导致了在结对编程中无法直接复用个人项目,但好在其中封装的一些函数还能再次利用。个人项目实现的功能主要生成符合要求的试卷,在类中分别封装了生成三类题目的函数,在编写结对项目之前,我们又对个人项目中生成题目部分的逻辑和细节进行了细化和改善,进行了一些优化;在结对编程项目中题目设置的方式变成了选择题,但仍然可以复用个人项目中的题目生成函数,增加一个生成答案的功能,再应用到结对编程项目中,结对编程项目中的GetTest类就是用于生成试题,类的三个函数分别对应三个组别。

 

结对编程的经验、教训

在此次结对项目中,我们首先对所有功能进行了一个大致的梳理,并对功能模块实现进行了分工。考虑到上次的个人项目中我的搭档实现的功能更全面所以在结对中我的搭档主要负责了出题以及计算分数等较复杂的部分,而我负责了GUI界面以及前面的注册登录等功能。

在上一次个人项目的基础上,带UI的结对编程还增加了很多功能,比如登陆注册、题目答案、计算最终得分等等,这里的每一个功能都需要我们对它进行模块化处理。我们以一个界面一个类的方式进行模块化处理,每个界面都有它对应的功能,这样就对功能进行了封装。

 UI界面

最开始进行GUI的设计时发现使用固定的布局始终无法达到我想要的效果,本身使用java.swings里的插件来进行GUI图形界面的设计也称不上十分美观;后来干脆直接使用坐标添加组件,这样设置布局就完全自由,但缺点是设置坐标只能通过自己的观感来一次一次试位置,比较繁琐,不过不怕麻烦最终还是达到了想要的布局效果;期间还制作了几张背景图片使我们的界面尽可能地美观一点。

 

设计错误提示语的时候,一开始使用的是JLabel组件显示在面板上,但后来发现如果有多种错误提示信息或者多次错误提示会使信息在面板上出现重叠;最后在身边同学的提示下使用了java中的消息提示框JOptionPane,解决了问题,也让我多了解了java中的一个组件。

 用户数据处理

在设计存储用户信息的模块的时候,考虑到这是一个要对一些数据进行读写操作或者判断的过程,于是将这些功能统一封装在StudentInformation这个类当中,这个类中的函数全部用于处理用户信息:读写操作、判断密码、用户名合法性等等;这样能让模块功能更加清晰。

 

心得

这次阶段编程体会到了合作的乐趣,我和搭档都各有分工,在项目进行中也经常汇报各自的进度,这样让我们高效地完成了项目作业。最后,一起站在用户的角度完善每个部分的细节;想法添加一些更人性化的功能,比如生成对应试卷让用户可以回看错题。一开始我们切换界面使用的是每次新建一个窗口,后来发现这样其实很不符合平常我们实际使用过的网页或程序的体验;因为每次新建窗口就会有一定的延迟,特别是在答题中切换题目的时候会让用户的体验感很差;所以我们将除了主窗口的每个继承JFrame的类改为JPanel,这样至始至终就只有一个窗口,每次切换面板,这样的操作体验就舒服多了。在做这个修改的时候还出现了一个小BUG,不过在我和搭档的齐心协力之下及时搞定了。总之,这次结对锻炼了个人能力,这是第一次和别人合作完成一个小项目,积累了经验也有小小的成就感。

posted @ 2020-10-09 23:32  软件1802肖欣  阅读(88)  评论(0)    收藏  举报