一、 需求分析
用户:
小学、初中和高中学生;
功能:
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自带的弹窗完成,在该方面用户不具有良好的舒适性;
做题页面设置只有下一题,没有返回上一题,给学生容易带来不好的做题体验。
特别感谢队友!