HNU软件工程导论个人项目互评

发布时间 2023-09-20 22:50:15作者: 熊魁

HNU软件工程导论个人项目互评

代码作者:张益洋   评价人:熊魁

一:项目需求

用户:

小学、初中和高中数学老师。

功能:

1、命令行输入用户名和密码,两者之间用空格隔开(程序预设小学、初中和高中各三个账号,具体见附表),如果用户名和密码都正确,将根据账户类型显示“当前选择为XX出题”,XX为小学、初中和高中三个选项中的一个。否则提示“请输入正确的用户名、密码”,重新输入用户名、密码;

2、登录后,系统提示“准备生成XX数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):”,XX为小学、初中和高中三个选项中的一个,用户输入所需出的卷子的题目数量,系统默认将根据账号类型进行出题。每道题目的操作数在1-5个之间,操作数取值范围为1-100;

3、题目数量的有效输入范围是“10-30”(含10,30,或-1退出登录),程序根据输入的题目数量生成符合小学、初中和高中难度的题目的卷子(具体要求见附表)。同一个老师的卷子中的题目不能与以前的已生成的卷子中的题目重复(以指定文件夹下存在的文件为准,见5);

4、在登录状态下,如果用户需要切换类型选项,命令行输入“切换为XX”,XX为小学、初中和高中三个选项中的一个,输入项不符合要求时,程序控制台提示“请输入小学、初中和高中三个选项中的一个”;输入正确后,显示“”系统提示“准备生成XX数学题目,请输入生成题目数量”,用户输入所需出的卷子的题目数量,系统新设置的类型进行出题;

5、生成的题目将以“年-月-日-时-分-秒.txt”的形式保存,每个账号一个文件夹。每道题目有题号,每题之间空一行;

6、个人项目9月17日晚上10点以前提交至创新课程管理系统。提交方式:工程文件打包,压缩包名为“几班+姓名.rar”。迟交2天及以内者扣分,每天扣20%。迟交2天及以上者0分。

附表-1:账户、密码

账户类型

账户

密码

备注

小学

张三1

123

 

张三2

123

 

张三3

123

 

初中

李四1

123

 

李四2

123

 

李四3

123

 

高中

王五1

123

 

王五2

123

 

王五3

123

 

附表-2:小学、初中、高中题目难度要求

 

小学

初中

高中

 

难度要求

+,-,*./

平方,开根号

sin,cos,tan

 

备注

只能有+,-,*./()

题目中至少有一个平方或开根号的运算符

题目中至少有一个sin,costan的运算符

 

二:功能测试

在正确输入用户名和密码时,功能正常

 

在错误的输入用户名和密码时,程序会提示输入正确的用户名和密码

当输入“切换为XX”时报错 扣5

无切换功能   1

 

每次登陆只能出题一次  5

 

 

方法名的命名不符合lowerCamelCase 风格 ,不符合Google JAVA 代码规范 扣五分

paper方法和CreateHignQuestion方法超过40行 扣10

 

 

Import 语句未按照字典序

三: 代码分析

定义了一个抽象类Teacher, 三个Teacher的子类,一个主类。用相同的写法定义三个子类似乎有些多余。

 

在主类中定义了三个带参数的方法,返回对应的用户类型。

main方法中分别定义了不同级别的teacher1teacher2teacher3数组,再通过for循环为数组赋值,如之前,三个teacher子类的写法没有区别,三个create方法之间也没有区别。

 

 

 

 

 

用输入的数据位一个Teacher对象a赋值,然后遍历之前创建的3个数组,比较用户名和密码。用户名和密码正确后进入teacher1[i].Primary,还在其他的else if语句

 

 

进入Primary,调用了teacher类中的login方法

 

 

由于程序在切换的时候有bug,所以关注341行,看到login调用了ExchanChooice方法

 

 

发现62行的.close多余,将其删除后运行程序

 

 

 

可以看到题目符合高中级别,但是在输出提示信息时仍然提示“准备生成小学题目”

 

将上面代码改为下面代码

 

运行程序

 

 

可以看到提示信息正确

 

四:总结

类的设计有一些冗余,这也是我需要注意的。一些小细节需要注意。