HNU软件工程导论个人项目互评
湖南大学结对编程之个人项目互评
本次博客主要内容是分析结对编程队友的个人项目
分析代码作者:谢昶皓
分析人:杨虎强
一、分析项目需求中的“坑”
1、出题之“坑”
1)每个用户出的题目是否符合用户类型
-
例:
![]()
![]()
2)每个用户出的题目是否保存在绝对路径
-
例:
![]()
3)每个用户出的题目是否存储在正确文件夹目录下的文件中
-
例:
![]()
4)每个用户出的初中和高中题目是否考虑了至少要包含一个对应难度的运算符
-
例:
![]()
![]()
5)每个用户只能出题一次
-
例:
![]()
6)每个用户出题是否添加题目并保证每题换行
7)每个用户出的题目中括号的使用是否合理
8)每个用户出的题目是否完全随机
9)每个用户出的题目是否有查重检查
-
例:
![]()
2、代码之“坑”
1)方法代码行数是否<=40行
2)代码是否符合相应语言的代码规范
3、输入之“坑”
1)测试代码是否能通过用户五花八门的各种输入
二、分析队友代码中的“坑”
1.队友代码在切换功能实现中未考虑输入字符数量小于3的情况,导致如果输入字符小于3,系统输出“请输入有效的题目数量”,如:
-
例:
![]()
![]()
2.队友代码在实现出初中和高中题目时为了实现至少有一个特殊运算符将一个特殊运算符固定加在题目中的第一个操作数上,虽然题目达到需求的要求,但是无法将题目完全随机,如:
-
例:
![]()
![]()
![]()
![]()
3.队友代码在实现出题目时为了实现添加括号,会将括号添加在固定位置,如果操作数>=4,则会将括号固定添加在第二个操作数前和第四个操作数后,例:操作数1+(操作数2+操作数3+操作数4),虽然题目达到需求的要求,但是无法将题目完全随机,如:
-
例:
![]()
![]()
三、总结
1.优点:
- 面向对象编程: 代码采用了面向对象的编程风格,使用了Java类和对象,有助于代码的组织和维护。
- 用户登录和认证: 代码实现了用户登录和认证功能,用户必须提供正确的用户名和密码才能登录。这有助于确保只有授权用户可以生成题目。
- 多用户支持: 代码使用一个包含多个
User对象的数组,每个User对象表示一个用户。这允许多个用户使用应用程序并分别保存其生成的题目。- 动态生成题目: 代码根据用户的帐户类型(小学、初中、高中)选择不同的数学题目生成器,并生成用户指定数量的题目。这允许用户按其需要自定义生成的题目。
- 避免重复题目: 代码确保生成的题目不重复,通过使用
HashMap来跟踪每个用户生成的题目,以及在生成新题目时检查是否已经存在。- 时间戳和文件保存: 每个用户生成的题目被保存在以其用户名为名称的文件夹中,文件名包含时间戳,以确保文件的唯一性。
- 异常处理: 代码包含异常处理,如文件写入时的IO异常。这有助于应对潜在的错误情况,并提供更好的用户体验。
- 命令行交互: 代码提供了命令行交互,用户可以输入命令来执行不同的操作,如生成题目、切换题目类型、退出登录等。
- 代码注释: 代码包含一些注释,有助于理解代码的功能和逻辑,可读性高。
- 代码结构清晰: 代码的结构相对清晰,不同的功能被封装在不同的方法中,这有助于提高可维护性和可读性。
- 代码书写规范: 完全符合代码规范,堪称模板。
- 定义接口: 体现了面向对象中的多态。
2.缺点:
- 用户体验感可进一步加强: 在处理不同输入情况时并没有分情况做回应处理,例如可以添加更多的错误处理,提供更详细的用户反馈,以及改进用户界面等。
- 题目随机性可进一步加强: 操作符的添加并未做到完全随机。


















浙公网安备 33010602011771号