结对编程代码分析

运行结果分析:

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)对于初高中的题目,没用考虑操作数只有一个的情况。

posted @ 2022-09-13 21:50  lyj_sylg  阅读(104)  评论(0)    收藏  举报