标签:发送 调用 java实现 简单 变换 做自己 详细 打印 文件存储
结对编程是我第一次尝试与界面有关的内容,由于老师提供的短信验证码api似乎很难与c++结合起来,所以我放弃了使用c++的想法。好在是结对编程,自然还有队友覃浩芹,他的个人项目恰好用的是java,所以就决定用java实现这个小项目了。首先是决定分工合作,因为队友对自己的代码比较熟悉,所以他负责后端,而我负责前端。
一、后端:题目和答案生成
如何实现算式的运算是我的队友遇到的较大困难,由于他的算式是一个字符一个字符打印出来组合成的一个字符串算式,所以在算式实现部分添加运算的话会使代码十分繁杂且容易出现大量bug,所以就想到了调用JavaScript来计算字符串算式。但是JavaScript只能运算诸如“Math.sin(60)+90*100-Math.pow(2,3)”之类的算式,而之前个人项目生成的算式格式与之有着较大的不同。刚开始的思路是将原算式通过替换变换成JavaScript可运算的算式,但是替换过程中遇到了极大困难,无论如何替换运用正则式都无法将32 这样的字符串替换成Math.pow(3,2),不过后面改变了思路,先输出JavaScript可运算的字符串表达式,然后再将其变成日常生活中的正常算式,这样就简单了很多并且很快实现了算式的运算。
二、前端:java图形界面
我自己在一开始单独写界面时遇到的问题不多,网上的java swing的图形界面的开发教程也比较详细,成功实现一个界面不难。接着便是设计界面之间的切换,我选择用JButton事件监听来实现切换操作,监听到事件后先用JPanel的removeall()和repaint()方法把图形界面清空,转跳到下一个界面的方法后再设置界面的各种元素,如此把各个界面嵌套起来。为了方便测试界面,我还顺便写了用户登陆注册部分,并成功调用短信api发送验证码。短信验证码api的申请确实很难,我和队友分别申请了十几次都没有通过,最后还是通过同学介绍的假装做微信公众号的方法才申请通过。
三、前后端对接
一开始我们讨论决定采用读取txt文件的方法获取题目和答案,这样有可以充分利用个人项目里的内容。那时他的题目生成部分还没有全部完成,我便向他要了小学数学题部分的txt文件用于写答题界面,以便提前实现对接。我们在尝试把各自的代码组合起来时主要处理了文件存储的路径问题、生成随机选项等问题。
四、总结
虽然最后只是基本实现了项目的要求,还有改进的空间,但是我们也收获了一些经验和教训。最经典的经验是众人拾柴火焰高,两个人一起编程可以是极限编程,也可以分别做自己的部分,遇到问题时一起讨论,一起搜索和分析资料,这样效率很高。然后教训是不要乱动自己不清楚的代码,这次结对编程里最不清楚的的自然是短信api的代码,早期测试时可以正常发送验证码,后来为了方便尝试自己加入方法、调用它提供的方法获取短信验证码等,然后就报错,最后还是没怎么改动它,短信验证码也是通过赋值给全局变量取得的。在修改队友的代码以实现对接时,我不清楚的部分都有他来解释,合作起来就方便得多。
标签:发送 调用 java实现 简单 变换 做自己 详细 打印 文件存储
原文地址:https://www.cnblogs.com/huangfeilong/p/9757096.html