一、  需求分析

用户:

小学、初中和高中学生;

功能:

1、所有功能通过图形化界面操作,可以是桌面应用,可以是网站(编程语言和技术不限);

2、用户注册功能。用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册;

3、用户完成注册后,界面提示设置密码,用户输入两次密码匹配后设置密码成功。密码6-10位,必须含大小写字母和数字。用户在登录状态下可修改密码,输入正确的原密码,再输入两次相同的新密码后修改密码成功;

4、密码设置成功后,跳转到选择界面,界面显示小学、初中和高中三个选项,用户点击其中之一后,提示用户输入需要生成的题目数量;

5、用户输入题目数量后,生成一张试卷(同一张卷子不能有相同题目,题目全部为选择题),界面显示第一题的题干和四个选项,用户选择四个选项中的一个后提交,界面显示第二题,...,直至最后一题;

6、最后一题提交后,界面显示分数,分数根据答对的百分比计算;

7、用户在分数界面可选择退出或继续做题;

8、小初高数学题目要求见个人项目。

二、  项目流程图

 

 

 

 

三、  代码分析和项目总结

代码分为前端和后端,一共十四个类:

Account总类

Frame 初始界面类

Register 注册页面类

SendMs 阿里云验证码接口

Sendlistener 监听获取验证码按钮

Signlistener 从初始页面跳转到注册页面

Backlistener 返回主界面

TestUI 生成题目界面

TestSystem 监听难度等级和选项类

ScoreUI 得分页面类

GenerateQuestion 生成题目

Choosepro 选择生成题目页面

Changef 切换账号页面

AnalysisQuestion 计算答案

 

1.选择java

我们之前两个人的个人项目都用的是C++,但是C++做页面的话就需要qt,但是由于没有用过qt,并且选修过java课程,于是就用java的Swing程序设计来制作UI界面。

2.分工合作                                                          

我负责账户的相关操作以及UI界面,我的队友负责出题和计算得分,由于之前的C++代码中队友的随机出题更具有逻辑性,更有利于利用逆波兰式得到结果,于是后端逻辑复用他的代码。

3.产生问题

由于对java类的理解不够深刻,所以导致验证码的值一直传不过来,于是最后迫于无奈,只好用文件流挽救,将验证码写在secret.txt中,然后再在注册页面进行读取,特别麻烦。还有就是修改密码类中,由于账号没有传过来,所以就导致我需要将整个用户信息.txt读取后重新实现覆盖。

 

4.总结经验

一定要先规划好框架,方向,定位,在开工,有规划,有阶段性的进行开发,才会更加有效率;对于技术而言,同样如此,要先了解JavaGUI可以干什么,有哪些好用的类与函数,然后再结合设计方案,进行开发,这样会使项目体验感,可操作性得到极大的提高。编程中想要快速实现功能,解决问题,需要结对的我们在同一方向上进行努力,解决问题,定期交流阶段性交流可以有效的提高团队的同步性。GUI的实现需要很多函数来实现很多功能,面对想要添加但没有接触过的功能,可以用window builder来简化添加的操作。我们自己需要在不寻求他人帮助的情况下,能够独立解决问题的能力,上网搜索,看博客,查参考书,等等很多方式,都是解决问题的方法,这也是我们提高自己的有效途径之一。

优点:

基本完成了所有的项目需求;

所出的题目在逻辑要求还是挺高的,能够算出正确答案;

为每个界面和每个按键添加了背景图片以及图标,增加了用户使用的舒适度;

在注册时能够判断注册所用的账号是否已经存在;

在注册界面添加了返回按钮,避免产生失手按错以后只能退出重新登录的尴尬情况。

 

缺点:

没有在登录界面添加了一个“眼睛”按钮,在按下以后能够隐藏密码,再次按下能够显示密码;

所出的题目在逻辑要求上仍然不是非常高,虽然能够算出正确答案,但是经常会出现不规则小数;

没有在修改密码界面添加了返回按钮,可能产生失手按错以后只能退出重新登录的尴尬情况;

只是完成了对用户名的查重功能,却没有添加找回密码功能;

UI界面中的许多提示都采用Java自带的弹窗完成,在该方面用户不具有良好的舒适性;

做题页面设置只有下一题,没有返回上一题,给学生容易带来不好的做题体验。

 特别感谢队友!