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

用户:

小学、初中和高中学生。

本次结对编程的功能要求是:

1、 实现登录和注册,使用手机短信验证

2、 用户在登录状态下可以修改密码

3、 用户通过选择题目类型(小学、初中、高中)和题目的数量来生成试卷。

4、 试题不能重复出现

5、 试卷做完后需要显示最终得分

6、 用户在分数界面可以选择退出或者继续做题

 

我们实现了上述需求,并增加了:

1、 注册时判断账户是否已存在,存在则询问是否忘记密码,通过手机短信重置密码

2、 获取验证码的按钮设置了连续按下间隔180秒…

3、 做题时,每个题目都有一个按钮与之对应,可以通过各个按钮跳转到对应题目。

4、 交卷时,如果题目没做完所有题目直接提交会有提示。

5、 题目做完后,显示分数和做对、做错、没做的题号,可以查看自己哪里做错了。

 

 

UI的设计:

       最初我们模仿百度的登录界面、学校机考的做题界面做。两个人分别做两个界面,发现模块太多,java swing也用的不熟练,然后两个人做的风格不统一。最终选择了一个MAC风格的java swing主题。

 

逻辑

整个项目的设计是基于上次的个人项目做的。很多功能(比如注册登录、修改密码、产生题目、账号信息和题库信息的读取)都是可以直接拿来用的。因为之前的项目是用的JAVA写的,这次也就直接用JAVA来写GUI。

 

一开始的界面是登录界面,登录界面有注册和忘记密码两个按钮,用户可以通过这两个按钮进入 注册\重置密码 界面。

 

注册的短信服务我使用的阿里云的短信服务,直接调用他们的API即可

在注册界面我对获取验证码设置了180s的连按间隔,思路借鉴各大平台的注册系统。

注册时判断账户是否存在

在忘记密码和修改密码时,我复用了RESET_PASS 函数和修改密码的界面,它们除了title几乎是一模一样的功能。

表达式求值

运用了逆波兰表达式的算法,参考了网上大牛的源码,写了一个求表达式的函数。

做题界面

最重要的做题界面,我们先从题库中取出对应数量对应难度的题目,放在一个ArrayList中,对每一个题目都求出它的正确答案。

我们设计了一个Option的数据结构,它保存每个题目的四个选项,用户选择的选项和题目的正确选项。

然后遍历ArrayList,利用rand生成所有题目的三个错误选项,并随机的分配答案对应的选项,记录正确答案的选项是哪一个。

在用户按下ABCD四个按钮进行选择时,我们将属性user_choose设成对应的值,在用户提交试卷(提示试卷未完成)后,生成对应的分数,并将做错的题目和没做的题目标记出来。

经验教训:

我们在之前的项目中,大部分逻辑处理的函数都是可以直接拿过来使用的,这样可以少写很多代码。在GUI的开发中,前人已经给我们留下了模板,我们只用修改这些控件的一些属性,以及完成我们的监听函数即可。在界面实现时,别人的界面是很有参考价值的,我们完成这个结对编程的过程中,参考了百度、腾讯、哔哩哔哩等注册登录的界面,参考了学校高数机考、马原机考、以及科目一科目四的做题界面,最终融合成了我们自己的风格。

在代码的实现中,选择合适的数据结构是很重要的,选择合适的数据结构能让代码逻辑更加清晰、代码不容易出bug、维护也更加容易。

 

版权声明:本文为plllll原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/plllll/p/11600962.html