湖南大学结对编程个人项目互评

2021/9/27 20:11:56

本文主要是介绍湖南大学结对编程个人项目互评,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、简介

本博客为对谢英褀同学(以下简称谢Sir)的个人项目代码的互评

二、代码结构分析

  • 代码目录:

个人项目是利用Java开发一个中小学数学卷子自动生成程序,整体设计到了登录,切换登录,出题,题目查重以及文件的读写。谢sir的代码目录结构如上所示,分为了三个模块User,Login,以及Paper。

  • 代码分模块介绍:

User模块:

User类是对用户的抽象,有三个属性:

type:该教师所属的学校类型(小学/初中/高中) username:用户名 password:密码

Login模块:

Login类用于实现用户的登录和模式切换操作

其中包含了:

Login无参构造函数:将9个默认账户添加至defaultAccounts数组

accountMatch函数:用于用户名、密码的正确性判断并返回登陆匹配的User实例对象

loginByAccount函数:用于实现用户的登录操作并返回成功登录的User实例对象

Menu函数:向用户提供操作的菜单,方便用户进行输入的操作

 

 

Paper模块:

Paper类实现生成题目到指定文件的操作,其中包含了所有的出题逻辑模块和查重模块,以及对文件的输出写入

由于代码量过长,这里简单描述一下模块包含的函数及其功能:

checkDuplicate函数:通过HashSet,用于判断某个题目是否已出现过

bracketsAdder函数:在生成好的式子里面随即加入一对括号的操作

...(后续源码请上谢Sir个人博客)

juniorOperatorsAdder函数:随即添加平方、平方根

...

highOperatorsAdder函数:为传入的题目在随机位置添加sin、cos、tan

...

paperGenerator函数:生成试卷并打包文件的主要操作

...

三、代码优缺点分析

  • 代码优点分析

  1. 简洁高效,在出题部分,采用了 小学题目生成——在小学题目上随即加括号——在前提上随即加高级运算符^2和√——在前提上随即加sin,cos,tan。这样每个模块不用重复代码也不用刻意抽象处无用的模块函数,十分高效很明了,总代码量在出题部分也只有200行左右,是我的一半(可恶,被他装到了);

  2. 整体的设计很聪明,通过Menu生成整个命令行的操作界面供用户阅读和使用,在需要进行交互的时候调用函数完成功能实现,整体代码阅读观感很符合逻辑,易读性高;

  3. 模块化的设计方便维护和检索bug,十分适合双人任务结对开发时逻辑复用;

  • 代码缺点分析:

  1. 括号只能插入一对,没有做到真正的数量随机化,虽然简化了代码开发,但如果操作数要求高于5个并且随机化时,只插入一对括号会让式子变得比较简单(我指的小学的,初高中那种没人算得出来的);

  2. 操作界面提示不明显:

    这一步之后用户是既可以输入“切换为小学/初中/高中”,也可以直接输入题目数量如“26”的,这里不给提示会让老师不知道在什么时候可以切换模式(虽然切换模式这个功能需求本来就有些奇怪)。



这篇关于湖南大学结对编程个人项目互评的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程