结对编程——"带UI的小初高数学学习软件"项目总结

一、项目背景

​ 以下是对结对编程项目——带UI的小初高数学学习软件的经验总结,与个人项目所使用的编程语言C++不同,此次项目运用的编程语言为Python。这次项目的参与者为冯若轩同学(GUI设计),我本人(出卷逻辑)。

二、项目需求(八项)

1、所有功能通过图形化界面操作,可以是桌面应用,可以是网站(编程语言和技术不限);
2、用户注册功能。用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册;
3、用户完成注册后,界面提示设置密码,用户输入两次密码匹配后设置密码成功。密码6-10位,必须含大小写字母和数字。用户在登录状态下可修改密码,输入正确的原密码,再输入两次相同的新密码后修改密码成功;
4、密码设置成功后,跳转到选择界面,界面显示小学、初中和高中三个选项,用户点击其中之一后,提示用户输入需要生成的题目数量;
5、用户输入题目数量后,生成一张试卷(同一张卷子不能有相同题目,题目全部为选择题),界面显示第一题的题干和四个选项,用户选择四个选项中的一个后提交,界面显示第二题,...,直至最后一题;
6、最后一题提交后,界面显示分数,分数根据答对的百分比计算;
7、用户在分数界面可选择退出或继续做题;

8、小初高数学题目要求见个人项目。

​ 相对于个人项目而言,结对项目的要求更多的是对GUI设计者的要求,我没有亲身经历,但从他口中得知发展并不轻松,以至于在开始项目的两三天后我们便及时更换了编程语言(从C++更换为Python),也就是说,所有的出题逻辑都需要重构,虽然花费的时间会增加,但我也正好对出题逻辑进行优化。而针对生成题目这一需求产生的函数的构建不再重提,这里主要讲讲题目结果和选项生成的逻辑——

​ 试卷整体的产生采取的是用不同列表将不同难度的操作符和操作数储存起来,再根据运算的要求和产生题目的要求对其进行结合并放置在不同的字符串或列表中。在这个过程中运用了三角函数的运算,结果小数保留一定位数的操作,以及通过中缀表达式转前缀表达式再进行运算得到计算结果,最后再通过一定的逻辑生成其他三个备选项。

三、代码复用

​ 在经过语言更换和需求调整后,原先的代码并不能直接使用了,但有很多的小模块,以及整体的思想是可以继续沿用的,这里主要是我的伙伴进行编程的模块,我就简单谈谈。
他的个人项目结构:
image

最后的结对项目结构:(我修改了paper以及新建了个Stack类)
image
可以看到整体的结构都是相似的,相比个人项目新增的需求作为额外的模块添加,比较方便。在我设计出题的部分逻辑中,很多都可以保留,也无需再出成整套卷子后再写入txt文件中,需要调整的部分不是很多。

四、项目效果展示

image

image

image

image

五、项目经验总结

  1. 此次项目我们的工作分配对我而言较为轻松,我的伙伴的工作量明显的远高于我。此次实验我们没有(也不需要有)实际上的前后端的区分,也导致这样的分工在代码量上我就比我的伙伴少了几百行,这还是没有将前期QT的学习以及Python自带的UI的学习的功夫计算入内的情况。我在此非常感谢我的伙伴,也要向其说声“辛苦了”。
  2. 我对python并不了解,尤其是在电脑重装后我就再也没有碰过python这门语言,再次触碰可以说是相当陌生。在逻辑编写的时候是照着菜鸟教程一步一步写的,还好python入门比较简单,也没有用到特别复杂的函数使用,没有太大的麻烦,但是在时间的花销上远超于正常的情况。这是由于我个人能力不足导致的,我应该自行加强自己在自学方面上的用心程度。
  3. 结对编程与个人编程确实有很大的不同,其重要的是伙伴之间的交流和互补,两个人意见统一、技术互补,而且留有接口,一个人写的函数另一个人能够直接使用(留着供接口),这样才能让项目的进行更加快速,效果更好,这是我们在经验和能力上还远远没有达到的,需要不断学习进步。
posted @ 2021-10-10 17:05  之首  阅读(73)  评论(0)    收藏  举报