ONO7

导航

结对编程队友代码互评——中小学数学卷子自动生成程序

本博客为对结对编程队友黄芷若同学的个人项目代码进行分析,黄芷若同学采用c++语言进行编写。


【题目要求】


【代码测试】

小学题目

初中题目

高中题目

查重文件

所有功能基本实现


【代码分析】

创建用户类,包含了所需的用户所需的信息,以及之后需要用到的函数

各个函数思路清晰

Login(),登录函数,如果账户密码均正确则开始出题,如果不正确,则重新输入,利用while进行循环。

CreatFolder(),创建文件夹及文件函数,创建以账户命名的文件夹,在此文件夹下创建文件,调用strftime函数获取系统时间,文件以系统时间命名。

CreatPaper(),生成试卷函数,首先输入题目数量,题目数量在10-30之间,while循坏产生题目,每成功生成一题,题目数量减一,对于每一道题,随机生成操作数个数,while循坏判断当前的题目是否符合规范,是否生成完毕。左括号只有当操作数个数还剩两个及以上时才能生成,右括号要与左括号间隔两个及以上操作数,或者操作数已生成完毕但括号还没全部匹配时生成,在操作数前随机产生sin、cos、tan及根号,在操作数之后随机产生平方,在最后一个操作数时判断是否产生了必须的符号,若没有,在此生成。

CheckRepeate(),检查出题是否有重复函数,同一个账户产生的题目都存入check文件中,遍历check文件,比较是否有与当前题目相等的字符串,若有,则出题重复,当前题目不能用。

SwitchType(),切换类型函数,询问用户是否需要切换类型,若要切换类型,类型应变为新类型,用户输入需符合要求。

注释详细且不冗杂

main函数清晰明了,方便后续维护


【优点】

1、代码实现功能基本与题目要求相符合,并且在main函数中对初始界面进行了美化。
2、代码简洁明了,没有重复的代码,设计思路与实现非常简洁。
3、代码注释很详细,函数的用法,类的成员、成员函数以及函数的参数等,都用注释详细标出。
4、各个函数之间分工明确,方便后续更改维护。
5、代码编码采用utf-8的标准,命名严格按照Google编码规范执行。
6、对各种边界情况与不合法输入有较好的预防,程序较为健壮,能够有效防止不合法的输入。
7、算法简洁且功能强大。


【缺点】

1、出题时没有做到每题之间空一行,出题完毕后没有提示出好题了,而是直接询问切换类型,这一点可以优化。
2、生成试卷部分代码较长,逻辑复杂,如果没有详细注释看起来有点费劲。
3、头文件没有排序,没有按照Google规范来。
4、将所有功能方法写到一个类中,虽然这样写起来方便,但会导致写出来的代码难以维护,没有拓展性。(我本人也是这个问题
5、存试卷时使用了绝对路径,代码的可移植性不好。
6、采用using name space std,污染名字空间。


【总结】

黄芷若同学的代码总体来说是很不错的,在一些思路上,我们有着相同的见解。例如在对题目进行查重时,我们都是利用对文件夹的的文件进行遍历对比,有一点费时,这一点希望在结对编程时,使用一些数据结构或者数据库储存的方式能将其简化。在一些算法上,她想法有时要比我精简、清晰,这是很值得学习的一点。希望我们能在结对编程中能将程序进一步完善并升级。

posted on 2022-09-13 22:47  SoLoveLee  阅读(259)  评论(0)    收藏  举报