个人项目:中小学数学卷子自动生成程序——结对编程队友代码分析
1.用户体验:
总体来说用户体验很友好,每一步都有详细的提示,比如当前是否登录成功、用户的身份、当前处于什么出题类型,用户看到之后一目了然。生成的题目不仅会出现在对应的文档里,而且在操作界面里也有显示,相当于一个预览功能。每次出题前都有三个选择,输入出题数量、退出登录和切换类型。与我自己的设计进行对比的话,我的设计在第一次登录成功之后只能生成默认类型的题目,无法进行类型切换,但这个设计就可以随时切换类型,用户操作起来更加方便、灵活。当用户输入错误之后,也有及时的提示。而且容错性很好,当用户在输入命令之前不小心输入了若干空格,命令依然可以正常执行。
2.设计思路:
出题模块的设计思路很巧妙,开发者把单个操作数放在容器vector中视为一个单元,利用循环对单元进行处理,根据不同的类型添加括号、^2、^0.5、sin、cos、tan,一轮循环结束之后,从vector中随机选择两个单元用+、-、*、/进行组合,合并为一个单元,再循环处理每个单元,再合并,直到最后只剩一个单元,题目就生成完毕。这样设计的好处是可以出现多层括号,而且像平方、开方这样的运算符里可以有多个操作数。相比之下我的设计只能对单一操作数添加操作符,而且括号的添加要考虑位置,这样多个括号的情况就很难处理,整体上就会导致题目出得不够灵活。这个设计思路值得我好好学习。
有一个不足的地方就是开发者在代码中想要把生成的题目放一份到历史文档中,但是我在运行程序后发现历史文档是空的,里面没有任何内容。进一步思考,因为历史文档与题目查重有关,该功能是否真正实现我个人认为还是存疑的。
3.具体代码:
不同模块之间划分清晰且注释详尽,让阅读代码的读者能迅速了解开发者的设计思路和每个模块的具体功能。格式上严格缩进让代码从整体上看很美观。很擅长运用vector、map等数据结构,让某些功能的实现变得简单。
不足的是变量的命名还不够统一,有的变量是英文单词的直接组合,而有的变量中间又包含下划线。

浙公网安备 33010602011771号