结对编程总结+git使用与GitHub代码管理——by林玉俊&唐宇涵

 

一、分析需求

  在拿到结对编程项目需求文档后,我和队友第一件事就是讨论需求,分析项目给出的需求以及实现的一些细节。比如,登录界面的设置(注册、重置、登录按钮),注册界面的输入框设置(手机号、验证码、密码、确认密码),题目难度和数量界面的设置等这些逻辑流程问题。并大致对各个类需要实现的功能和接口进行了商定,这样方便了后期的合拢。

  下图为当时讨论时的笔记——

二、编程实现

  我负责的是用户手机注册并发送验证码到相应手机号部分和随机算式计算结果部分。

1、接收验证码部分

  最初是根据老师给的提示,在阿里云平台中申请短信服务,但短信签名的申请过程非常非常非常不顺利,总是因各种理由未通过,几经修改也无济于事。

  后来便开始寻找其他平台,看是否能够申请到他们的短信签名。

       其中,百度云、腾讯云、凌凯这三家平台成为了我们的第二条路。但是凌凯虽然稳定且老牌,但他不针对个人用户,而是面对高校、企业等有大规模发送短信需求的用户,虽然其有十分成熟的短信验证码功能,但我们因无资质只能放弃;百度云更是直接pass,因为其短信业务的开通需要公司执照,直接将我们扔出了门外。所幸,随后腾讯云给了我们一条生路。在开通了公众号后,成功通过了短信签名和短信正文模板的申请。

 

  至此,我们得到了发送短信验证码的关键参数,并根据腾讯云提供的java API模板在完成参数配置后实现了向用户注册手机号发送短信验证码的功能。

2、随机算式计算部分

  引用队友之前随机算式生成部分,随机算式计算类Calculater传入随机生成的String型算式,输出float型运算结果。运算过程中对“(”、“+”、“-”、“×”、“÷”、“)”、“=”这些操作符进行优先级的定义,并按照优先级分别将操作符和操作符左右的数字压入栈中。

       下图为对操作符的优先级定义——

  为了简化运算过程,我们对算式先进行了一些处理,将三角函数和平方开方部分先算出结果,将结果替换到原来的位置。在这里我最开始运用的是for循环将结果和原字符串位置进行移位,以达到替换的效果。但当平方数为102以上时这里就会出现字符串溢出的问题,所以我的队友提出了使用StringBuilder中的replace方法实现对字符串的替换并帮助我进行了修改,在这里感谢大佬援手。

  下图为对算式的提前处理部分——

Attention:在这里,我要向大家隆重介绍一个函数——eval()

  这是多么神奇的一个函数呢,大概就是让我之前花在处理栈空错误的大把时间变成0。

  在抛出异常处理后,输入包含括号、数字(含小数)、+-×÷操作符的标准四则运算表达式后,一个回车便可计算出double类型的结果,可谓十分方便了……

  实现如下——

三、合拢测试

       在最后的合拢测试部分,随着测试次数的增多,很多bug也接连出现,再次感谢大佬carry,修改了如闪退、输入空、总分错误等bug。

 

四、使用git以及GitHub进行代码管理

  Java IDE中包含了git以及Github的功能整合,以IntelliJ IDEA为例,在“VCS-import into version control”里面可以通过”Create git repository”来创建项目的git:

  然后就可以看到左下方出现了一个”Version control”的标签:

  可以通过commit来记录自己所做的更改。之后便会在“Version control”的“log”里面看到自己的commit了:

  那么git有什么用呢?在本地工程中通过commit可以记录文件的改动,然后决定是否需要回退。可以设置分支来添加新功能,在功能可以实现时再将分支合并。而且,git可以将代码上传到GitHub上面,在“VCS-import into version control”里面通过”Share project on Github”来上传项目到自己的GitHub账户上,那么队友即使不在身边也可以让他/她通过GitHub来时刻获取代码的最新状态了。当你想要上传更改时,可以通过“push”命令来执行:

  如果自己的项目是克隆自别人的GitHub仓库,可以通过“pull”指令获取项目的最新状态。如果上传了项目,那么就可以再GitHub的个人主页上看到了,而且也是会记录自己的项目历史的:

五、以下为运行截图

登录界面——

注册界面——

当密码不符要求时——

题目难度选择界面——

题目数量设定界面——

答题界面——

分数显示界面——