湖南大学结对编程个人项目互评
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函数:生成试卷并打包文件的主要操作
...
三、代码优缺点分析
-
代码优点分析
-
简洁高效,在出题部分,采用了 小学题目生成——在小学题目上随即加括号——在前提上随即加高级运算符^2和√——在前提上随即加sin,cos,tan。这样每个模块不用重复代码也不用刻意抽象处无用的模块函数,十分高效很明了,总代码量在出题部分也只有200行左右,是我的一半(可恶,被他装到了);
-
整体的设计很聪明,通过Menu生成整个命令行的操作界面供用户阅读和使用,在需要进行交互的时候调用函数完成功能实现,整体代码阅读观感很符合逻辑,易读性高;
-
模块化的设计方便维护和检索bug,十分适合双人任务结对开发时逻辑复用;
-
代码缺点分析:
-
括号只能插入一对,没有做到真正的数量随机化,虽然简化了代码开发,但如果操作数要求高于5个并且随机化时,只插入一对括号会让式子变得比较简单(我指的小学的,初高中那种没人算得出来的);
-
操作界面提示不明显:
这一步之后用户是既可以输入“切换为小学/初中/高中”,也可以直接输入题目数量如“26”的,这里不给提示会让老师不知道在什么时候可以切换模式(虽然切换模式这个功能需求本来就有些奇怪)。
这篇关于湖南大学结对编程个人项目互评的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南