HNU创新课程结对编程个人项目互评

一、简介

  本篇博客为对结对编程搭档陈春蕾同学的个人项目(中小学数学卷子自动生成程序)的评价。该代码使用语言为c++,与我的个人项目语言一致,因此评价过程中也将与本人的代码进行比较,旨在总结反省,共同进步。

二、项目结构

1、Teacher类

 

 

1.1 优点

(1)将程序的主体功能都封装到Teacher类中,总体布局比较严密完整;

(2)各项数据成员与功能函数命名都语义清晰,可读性好,辅以注释理解更方便;

1.2 缺点(可优化之处):无

 

2、登录功能

 

 

 

 

2.1 优点

(1)if-else语句实现对登录用户用户名和密码的匹配确认,逻辑简单,便于理解。经检验,功能正常;

2.2 缺点(可改进之处)

(1)可复用性不高,当且仅当账户信息不变时使用正常,如需修改账户信息,则代码结构也必须随之发生变化;

 

3、输入题数,并检查合法性功能

 

 

 

 

3.1 优点

(1)文字提示内容明确,便于用户使用;

(2)if-else语句判断合法性,可读性强,方法合理;

3.2 缺点(可改进之处):与我的该部分代码实现逻辑相同,未发现可改进之处;

 

4、依据传入的题数参数生成试卷(由于代码量大,图略)

 4.1 实现方法

(1)生成用户文件夹、试卷文件、查重文件;

(2)随机产生操作数数量,根据操作数数量相应出题(操作数数量<=2或>2);

(3)对生成题目查重,不重复则加入试卷文件和查重文件,否则重新出题;

(4)生成试卷后的再选择(切换类型、退出系统、重复当前类型出题);

 4.2 优点

(1)结构逻辑性强,注释清晰,可读性好;

(2)生成试卷后的再选择文字提示内容较清楚,且增加了退出系统的选择,人性化;

(3)出题的逻辑根据实际情况划分为两种解决方案(无括号/考虑括号存在),避免了大段代码重复;

 4.3 缺点(可改进之处)

(1)没有考虑登录时即需要改变类型的处理情况;

 

5、根据操作数的不同生成题目(由于代码量大,图略)

 5.1 实现方法

(1)根据操作数数量相应出题(操作数数量<=2或>2);

(2)随机数生成操作数和操作符,依次加入;

(3)stringstream输出到目标字符串中;

 5.2 优点

(1)实现逻辑较我的代码更加简洁,尤其是括号生成算法,在我的代码中为了追求随机性,且解决思路较为死板,就出现了代码大段冗余的问题;

(2)括号生成实现了我未能完成的括号嵌套情况;

 5.3 缺点(可改进之处)

(1)具体生成部分代码缺少注释,可读性较差;

(2)随机生成括号时,有一个括号包裹整个式子的无意义情况,可以加以排除;

(3)不能保证高中题目至少有一个sin、cos或tan,只能保证至少有一个平方、根号、sin、cos或tan,即高中题目可能会有未含三角函数的情况,功能实现不完善;

 

6、主函数

 6.1 优点

(1)主函数简洁,代码量小;

(2)功能清晰;

 6.2缺点(可改进之处):与我的代码逻辑相同,未发现可改进之处

 

三、整体评价

1、优点

(1)总代码量373行,是我代码量的一半,在功能基本实现的基础上,有代码简洁,可重用性高,功能模块划分的优点;

(2)代码结构清晰,注释合理,整体来看可读性好;

(3)括号生成算法除前文提到的一点小缺陷,表现优异。由于我的代码大段篇幅耗费在括号随机生成,且只是简单的穷举法,未考虑括号嵌套情况,陈春蕾同学的算法是非常值得我学习的;

(4)程序中文字提示清晰,对用户友好;

 

2、缺点(可改进之处)

(1)全部代码都放在一个cpp中,修改编译成本高,模块性差(我的代码也存在该问题,且尚未习得解决的写法);

(2)高中题目生成不能保证至少有一个sin、cos或tan,只能保证至少有一个平方、根号、sin、cos或tan,即高中题目有时会缺少必要元素(三角函数),不满足项目需求,需在操作符生成算法处加以改进;

(3)查重算法采用直接循环遍历,在题目大量出现的情况下,查重效率低,可以思考改进之法(我的代码也存在该问题);

 

四、总结

  第一次尝试结对编程搭档互评代码,体验新奇,同时在过程中发现了陈春蕾同学代码中很多值得我学习的地方,收获颇丰。本次任务的顺利完成让我对接下来的结对编程项目充满信心,倍感期待。

posted @ 2021-09-28 09:34  贝尔娜提塔地球分塔  阅读(75)  评论(0)    收藏  举报