标签:方法 不能 使用权 div 运行 输入 就是 调用 -name
1. 题目模块
首先由于个人项目我和队友都是用c++写的,获知阿里云并没有c++的短信API,思量过后,悲惨决定重新将c++改写成Java。
生成题目的算法不用多想,直接用原来的就好了但写这个函数还是用了大把的时间,而原因居然是俩个人都不太记得怎么写Java!!!不过两个人磕磕绊绊磨了半天终于还是写出来,写的过程中也把java的基本语法复习了一遍。
最难的还是解题,关键就在这个括号的问题上(记得做个人项目时也是被这个括号折磨的要死)。
最先我想到的是用递归地方式,将括号一层层的分解,每次遇到一个前括号就递归一次,遇到后括号就返回一次,遇到三角函数及平方、开方就直接调用math库里的方法。
然而,就当我测试了一遍居然没问题时,结果bug还是出现了——tan90、负数开根号、减负数去完括号后变成“--”等各种各样的问题!
然而,,,当我解决完这些bug后,我突然从百度上了解到一件事——Java的javax.script库里居然有直接计算字符串类型的算式的函数eval()!!!而且这玩意居然连括号什么的都可以直接解决!!!于是,最终,写了半天的递归全删了,eval() + math库 直接解决了问题。
2. 登陆模块
??
将题目模块设计好之后就要面对生成界面这个难题了,因为之前从没有接触过Java界面,所以对于怎么做界面是毫无头绪的,我们先是百度了做界面的案例,里面有生成登录框的代码,我们就依葫芦画瓢改写成我们所需要的样子,首先需要有一个手机号标签和一个手机号输入框,然后是密码标签和密码输入框,并且密码输入框要用到它特点的文本框,还要让它输入时显示的是‘*’,这都还好处理。
一开始不好理解的是监听按钮,因为做第一个界面的时候还不太了解监听事件是怎么运行的,并且不知道怎么实现界面之间的跳转,思考良久之后发现用按钮实现界面的跳转正合适,在登陆模块中添加一个注册按钮,事件就可以写为new一个注册界面,这样就可以实现从登陆模块到注册模块的跳转,添加一个登陆按钮,事件写为new一个选择界面,就可以实现登陆模块到选择模块的跳转。
最后一步就是登陆时要检验账号的正确性,我们是准备把注册的手机号+“ ”+密码放入文件中,登陆的时候只需要读取文件里的手机号密码判断是否相等就可以了。
3. 注册模块
由登陆界面跳转过来后打开,此界面需要有获取验证码的按钮,点击之后要发送随机四位验证码给输入的手机号中,这个过程最艰难的就是注册阿里云的短信API使用权限了,不断的和审核者斗智斗勇,最终还是自己新建了一个微信公众号截图发过去才通过,整个过程十分艰难。。。
审核通过后按要求改写它给的sms类然后调用send()函数就可以用了,验证码问题解决之后只需要检验密码是否符合必须含有大小写字母和数字的要求以及密码再次输入确认就可以将手机号密码写入文件保存了。注册成功之后会有一个成功界面,里面只有一个确定按钮,没有其他东西可以点,所以将确定按钮事件写为new一个登陆模块就可以实现到登陆界面的跳转了。
4. 选择模块
在登陆界面登陆成功之后会跳转到选择界面,界面中有一个三单选按钮可以选择题目难度是小学、初中、高中,还可以输入生成题目数量,有检测不能为空,也不能为0,范围1-99,输错了会有提示,选择完毕点击确认按钮会跳转到做题界面。
5. 做题模块
此界面需要将题目模块生成的题目和答案传进来,并将题目显示,记录题号,并随生成其他三个错误答案,四个答案一起随机放入一个四单选按钮中进行选择,选择后点击下一题按钮会判断该题是否正确,选择正确做对题目数加1,然后跳转到下一个题目界面,继续做题,直到在最后一题时点击下一题按钮会跳出最终得分界面。
6. 分数模块
最先我们写的分数计算公式是:(作对题数/总题数*100),然而当我们做了几次题后却发现,最终得分始终为0,刚开始以为是做题模块里面的答案问题,检查之后却无论如何也找不到问题,很是纠结,蓦然回首,发现原来是分数的表达式有问题,忽略了整型除法中小数除以大数会直接得0,汗颜。。。于是将计算公式改成:(作对题数*100/总题数 )就OK了!!!
大功告成!!!
结对编程感想
标签:方法 不能 使用权 div 运行 输入 就是 调用 -name
原文地址:https://www.cnblogs.com/luozichao/p/9753475.html