结对编程代码分析
运行结果分析:
1、登录

如图可见,登陆时对用户名和密码空一格的格式检查不算严格,1、 对输入格式的检查不太严格,用户名和密码中间空几格或者换行都会通过。如果输入一行不带空格的错误字符串,不给提示。
2、切换类型

3、退出

4、生成题目

生成的部分题目如下:
小学:

高中:

功能实现完整、正确
对方代码分析:
1、整体结构
整个项目包含包含一个包:testpaper,包里有两个java文件。
Exercises.java:
有一个public类Exercises。其中有8个函数:
changeType:完成切换小学/初中/高中的功能。
initializeSet:初始化存放曾经题目的hashSet
addEx:实时更新hashset
writeTest:题目的生成与写入,根据出题类型的不同选择调用生成题目的函数。
priTest:生成小学题目
midTest:生成初中题目
highTest:生成高中题目
Main:主函数,初始化用户,实现登录功能,并调用writeTest函数生成和写入题目
User.java:
有一个public类User。其中有8个函数:
getName:获取用户名
getPassword:获取密码
getType:获取出题类型
setName:设置用户名
setPassword:设置密码
setType:设置出题类型
signIn:登录
newPaper:创建用户文件夹并且生成试卷文档
2、优点
1)代码逻辑清晰,函数的划分有条有理,每个具体的功能都有对应的函数,方便易读。比如实时更新功能使用了addEx函数,分离出这个功能,减少了writeTest函数的代码量,结构更加清晰。
2)注释的内容清楚具体,每个函数的功能和每个变量的意思都有清晰的解释,如下。

3)对括号的位置考虑很周全。各种情况比较平均,也可以生成括号数量比较复杂的算式,比如下面这个。
![]()
4)用户类User的封装性很好,name,password和type都是private。通过getName()等函数获取用户属性。并且有单独的setName等函数。

3、缺点
1) 存试卷时使用了绝对路径,代码的可移植性不好。比如在我的电脑上执行结果如下,执行时需要修改路径。

2)代码有很多大量重复的地方,比如priTest,midTest,highTest三个函数中加入括号的代码段,几乎是一样的,但是重复了三次。
3)对于初高中的题目,没用考虑操作数只有一个的情况。

浙公网安备 33010602011771号