结对编程第二次作业
一.题目要求
1.题目:
我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求:
能够自动生成四则运算练习题
可以定制题目数量
用户可以选择运算符
用户设置最大数(如十以内、百以内等)
用户选择是否有括号、是否有小数
用户选择输出方式(如输出到文件、打印机等)
最好能提供图形用户界面(根据自己能力选做,以完成上述功能为主)
2.成员定位
驾驶员:杨天瑞
领航员:张荣盛
二.开发环境
编程语言:python,swift。
开发环境:jupyter、Xcode
运行环境:windows 10、IOS11.3
三.代码实现
-
用户可以选择是生成普通的算式,还是带括号的复合运算,还是两者都有。
-
也可以选择是否生成小数,默认选择不生成小数。
-
用户可以选择是生成10以内的运算还是百以内的运算。
-
最后再输入需要的题目数量和题目的长度。
-
生成的算式最后会被保存为两个文件,算式文件存为“question.txt”,答案文件存为“answer.txt”。
-
用户也可以选择是否发送邮件,发送邮件的话会将这两个文件发送到用户指定的邮箱中,也可以群发设置群发邮件。
发送邮件代码实现如下:
四.单元测试
由于这次代码采用python编写,我们自己没有写什么函数,都是调用库中的函数(只构建了输出函数),所以无法编写JUnit自动单元测试,因此在这里贴上测试样例运行截图。
(1)测试1
1.文件结果如下:
我们在jupyter notebook运行程序“四则运算自动生成器.ipynb”
在算式生成代码区输入:“2 0 1 10 5”
生成50组长度为5,百以内不带小数的算式
2.邮件结果
(2)测试2
1.编译器类代码运行结果
我们在jupyter notebook运行程序“四则运算自动生成器.ipynb”
在算式生成代码区输入:“2 0 1 50 5”
生成50组长度为5,百以内不带小数的算式
2.邮箱结果
五.UI界面
因为本次作业时间比较紧张,并且我们组全部没有学过前端界面该怎么做,所以以下界面只是我们的一次尝试,并没有完全真正实现题目要求的功能。虽然失败了,但是还是要发一下我们的成果,毕竟还是做了好久~~。
本次前端开发采用Xcode9.3,Swift4.1环境,项目名称为:小巫师四则运算自动生成器(support for iPhone X)
六.结对感想
对于这次合作难度比上次检查代码难度高了很多,即使上传结对作业的检查代码是对队友编程习惯的了解;但在这次合作过程中,编程阶段就存在着思想上的不同。此次作业使我受益颇多,这次采用的是python语言编写,也是以前没有用的,通过小伙伴(talosL)的带领下也会了一些。主要学习了调用随机数与读写调用文件等操作,在此次作业中遇到了很多困难,如函数间的互相调用,如何将字符串转换为数学算式求得结果和如何获得随机小数都困扰了我很久,也知道了怎么调用随机数了。
最后是界面实现部分,虽然我们实现了一部分界面,但是并没有完全实现全部功能,最开始的设想是生成后会进入到做题部分,根据正确率来判断是否进阶,进阶的话会出更复杂和数更混合的算式出来计算。但是因为界面实现是现在才接触,对于按钮的功能定义和传参的部分不是特别了解,中间也是出了很多问题,导致这部分功能完全没有实现,最后也只是进行简单设置和传参,最后我们选择在服务器运算和发邮件来查看结果,因为端口封禁的问题也是在不断的尝试新的办法。
这次在程序编写的过程不像以前一样是一个人独立完成的,感觉上有了一些不同,从中也学习到了很多,在编程的时候通过和小伙伴的沟通交流,也从他身上学习到了 很多东西;在写程序的过程中遇见了问题时,也不是一个人思考了,在查阅相关材料时也时变得更快了。当然在编写的过程中少不了争议,但是最后都完美解决了,毕竟每个人的思想都不一样,所考虑的东西也是不同的,所以只要我们都认真的考虑对方的遇见,不断总结我们自己的想法是否有错,这样可以更块的解决争议。总体来说这次结对编程是一次特别愉快的经历,但是还是愉快的解决了,最后在两个人的合作之下题目顺利地完成了。
最后非常感谢小伙伴(talosL)在此次编程中的合作,以下是我们合作时的照片。