受益匪浅啊受益匪浅,出去阿里云短信的JAR,总共约1600行,目前为止没有完成这么长的项目过。首先我上学期并没有学JAVA课,暑假到开学自学的JAVA,经过这次结对编程,可以说对JAVA编程了解的七七八八了。第一个登录UI编写时对JAVA的编程习惯不太适应,在类中建新类,方法又在新类外,带来了一系列麻烦,在后来又重构了第一个UI,给我心态也带来了一些影响,还好最终是完成了,比较顺利也很快乐。
首先说一下UI。UI的学习是有很强的反馈的,编写完一个UI就能立刻获得一个图形界面的反馈,给人的成就感是很大的,因此UI编写是让我感觉很快乐的部分。尽管我是在类中新建JFrame而不是extend JFrame,但是我认为这样将类与窗口分开更便于编写和维护。困扰我时间最长的问题是在按下按钮时获得文本框返回值的问题,这个问题在一个类使用一个Frame的情况下就很顺利的解决了。另一个问题就是出题界面,点击下一题后就要出现下一题的内容,如果创建新窗口就太麻烦了,因此我把RadioButton和label分开,使用setText改变已有label的值,并且把所有题目提前生成并以数组储存,设置当前量来确定目前是第几题,以此完成了下一题刷新页面的效果。另外一提,在写感想的同时修了一个下一题按钮与完成按钮只能单向变化的BUG...
然后是复用之前的代码,由于结对对象使用了C++编写题目生成,因此就使用了我的JAVA代码。首先我的JAVA代码是分段输出题目的,因此将每一段保存就可以得到一道题的字符串,使用javax.script.ScriptEngine的eval就可以得到string算式的值,而eval不支持平方、开根号、三角函数等,我就用另一个字符串,分段将平方、开根号、三角函数计算完后。加入到字符串中,以此字符串进行计算,就可以得到正确答案。同时分段算式也保存下来,随机将每段的结果无效或者反向操作,就可以随机生成三个错误答案了。同时文本读取也可以直接使用。可以说我的JAVA代码很适合这次的需求。
其他零碎的东西有很多,查重是利用字符串哈希;用户名和密码的检查都是利用getText和getPassword,设置了很多条件;题目的选项清空一开始使用setSelected(false),然而还是有小黑点,因此使用了group.clearSelection();短信验证码使用阿里云的jar和类,只需要更改KEY、签名等等即可……等等很多东西不再赘述,一个项目的开发不只是功能的实现,还有构思、增加需求和DEBUG。
最后附上效果图和需求分析图。
原文地址:https://www.cnblogs.com/WinnoLY108/p/9750788.html