功能要求:
1、用户注册功能。用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册;
2、用户完成注册后,界面提示设置密码,用户输入两次密码匹配后设置密码成功。密码6-10位,必须含大小写字母和数字。用户在登录状态下可修改密码,输入正确的 原密码,再输入两次相同的新密码后修改密码成功;
3、密码设置成功后,跳转到选择界面,界面显示小学、初中和高中三个选项,用户点击其中之一后,提示用户输入需要生成的题目数量;
4、用户输入题目数量后,生成一张试卷(同一张卷子不能有相同题目,题目全部为选择题),界面显示第一题的题干和四个选项,用户选择四个选项中的一个后提交,界面显示第二题,...,直至最后一题;
5、最后一题提交后,界面显示分数,分数根据答对的百分比计算;
6、用户在分数界面可选择退出或继续做题;
7、小初高数学题目要求见个人项目。
我和队友实现的界面大概如下:
登陆和注册:
生成题目数量、答题和结果:
结对编程过程:
工程代码每个功能都会有一个相应的java文件:
用户的用户名、密码和手机号会存在txt文件中,生成的题目会保存的用户名文件夹下的文件中;
我实现的主要是短信验证码功能、注册、修改密码、出题和计算结果部分,队友实现的是登陆、选择难度、生成题目界面和结果界面部分。虽然个人项目我俩都是用c++写的,但是结对编程我们均换成了java,我们在编程的过程中分工明确,合作非常愉快。
在实现短信验证码功能时,我选择了阿里云,申请过程非常简单,但在引入maven项目和添加相关依赖的时候花了不少时间(主要是由于对maven和pom.xml太过陌生),后来经过不断百度,知道了要先把java项目转成maven项目,导入两个相关的jar包,pom文件引入所需依赖包即可,这样写java时就可以导入阿里云的相关接口,实现验证码功能啦!结果如下:
注册和修改密码的界面其实实现起来差不多,用到了java swing,在面板上添加自己想要的JLabel、JTextField、JPasswordField和JButton,放置的位子是自己慢慢试出来的,然后对相关按钮添加相关监听即可。
出题部分沿用了个人项目里的出题,直接把c++改成了java,计算结果的思路是若为初中出题,先把平方和根号部分算出来,然后把根号和平方换成小数带入,直接用eval()函数计算即可(eval()函数可以计算加减乘除和括号,不过类型为double型);高中部分题目是先转换平方和根号,后转换三角函数,最后直接计算,小学部分直接计算;
在写计算结果部分时,出现了很多bug,比如显示部分不能显示题目或有些题目报错,我把这部分代码重新创建了一个工程去运行找错,通过在输出查看每一个函数变量发现了我的判断跳出循环的语句写错了位置,修改后以为自己解决了bug,后来又经过不断生成题目,又发现了一个bug,我通过同样的方式(就是不断输出每个变量),发现没有处理三角函数结果为负但前一个操作符也为负的情况,就相当于有两个负号在一起,最后加个括号就好啦!
用System.out.println()找bug真的超级方便,又快又准确!
后来知道也可以用逆波兰解决计算结果问题,需要用到栈,而代码量也会比我的这种少很多,是个非常不错的办法!
结对编程总结:
最大的感受就是只有自己亲身动手去做了才能学到很多东西,通过这次结对编程,我知道了如何去实现短信验证码服务、如何用java写界面增添背景并实现自己想要的功能、如何界面与界面交互以及如何去debug,收获非常大。虽然在写的过程中总会遇到这样那样的bug(中间甚至因为我们互相传了太多文件弄混了,导致最后差点找不到最后正确的那个项目),但在我和队友的不断努力相互帮助下,最后都一一解决了,也是非常有成就感了。结果是美好的,解决问题的过程更加美好,很开心能遇到一个好的队友,一起监督,一起解决问题,共同进步!
原文地址:https://www.cnblogs.com/lly810/p/11604156.html