【个人项目互评】 —中小学自动生成试卷程序(Java版)

发布时间 2023-09-22 10:39:50作者: 新年前一天

本次代码互评我选择的邱文静同学的代码进行互评;下面是我对她的代码的分析:

一、题目要求

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

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

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

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

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

二、运行界面

 登陆界面:

用户界面:

保存题目的路径:

三、代码分析

1、总体分析:该同学的代码分的很细,每个类的代码简洁明了,便于阅读和修改,使用了大量的抽象类便于继承完成所需功能,但是美中不足的是最后的代码在我的电脑上运行生成的题目不是用“.txt”格式保存。

2、UML类图

 3、部分代码详细分析

查重部分:

 

接受五个参数:

  • min:生成随机整数的最小范围。
  • max:生成随机整数的最大范围。
  • n:要生成的随机整数数量。
  • recent:包含先前出现的整数的数组。
  • now:已经出现的整数数量。

目标是生成一个包含 n 个不包含在 recent 数组中的随机整数的数组。

 

 这段代码初始化了一个名为 allnum 的整数数组,其中包含了从 minmax 的所有整数。如果传入的参数不满足生成条件(如 max 小于 minn 大于可用整数范围),则返回 null

 这段代码使用随机数生成器 Random 来生成随机整数,并将它们存储在 result 数组中。在每次迭代中,它首先生成一个随机索引 index,然后检查是否 recent 数组包含了 allnum[index] 中的整数。如果不包含,就将这个整数存储在 result 数组中,并在 allnum 数组中替换掉原来的位置。这确保了生成的随机整数不会重复。以此实现查重功能。

四、总结

通过这次互评我能够学习到不同同学对于相同项目不同的处理方式,打破了我解题的固有思维,让我能更全面的去考虑问题,同时也简化了我对问题的思考,总的来说是一次很好的体验,这会对我未来的学习有极大帮助。