个人项目互评
1 前言
本文是应要求对结对编程队友韩成玉同学的个人项目评价的分析与评价。个人看法可能不全面,理解有偏差,还望理解
2 个人项目需求
本次个人项目的需求如下:
用户:
小学、初中和高中数学老师。
功能:
1、命令行输入用户名和密码,两者之间用空格隔开(程序预设小学、初中和高中各三个账号,具体见附表),如果用户名和密码都正确,将根据账户类型显示“当前选择为XX出题”,XX为小学、初中和高中三个选项中的一个。否则提示“请输入正确的用户名、密码”,重新输入用户名、密码;
2、登录后,系统提示“准备生成XX数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):”,XX为小学、初中和高中三个选项中的一个,用户输入所需出的卷子的题目数量,系统默认将根据账号类型进行出题。每道题目的操作数在1-5个之间,操作数取值范围为1-100;
3、题目数量的有效输入范围是“10-30”(含10,30,或-1退出登录),程序根据输入的题目数量生成符合小学、初中和高中难度的题目的卷子(具体要求见附表)。同一个老师的卷子中的题目不能与以前的已生成的卷子中的题目重复(以指定文件夹下存在的文件为准,见5);
4、在登录状态下,如果用户需要切换类型选项,命令行输入“切换为XX”,XX为小学、初中和高中三个选项中的一个,输入项不符合要求时,程序控制台提示“请输入小学、初中和高中三个选项中的一个”;输入正确后,显示“”系统提示“准备生成XX数学题目,请输入生成题目数量”,用户输入所需出的卷子的题目数量,系统新设置的类型进行出题;
5、生成的题目将以“年-月-日-时-分-秒.txt”的形式保存,每个账号一个文件夹。每道题目有题号,每题之间空一行;
3 队友代码分析
1、User类 :用户基本属性,生成用户文件夹和相应题目文件方法,生成试卷方法。(个人不喜欢把这两方法放进用户类,更倾向放进系统类。)
2、Operations类 :在构造函数使用HashMap存放所有用户,存放用户登录和根据用户操作方法
3、ElementMaker 类 根据类型随机生成符号(个人感觉有点麻烦)
4、TitleMaker类 :调用ElementMaker函数生成题目(个人认为生成题目用两个类有点奢侈了,代码量有点多,降低了一点可读性)
5、Writer类 :这真的在我意料之外这居然写成一个类,想必是受到代码40行限制不得已而为之
public class Writer {
// 写入文件
public void writeIn(File file, Integer n, String title) {
try {
// 传入文件 确定类型为续写
FileWriter fileWriter = new FileWriter(file, true);
// 序号
String num = n.toString() + ".";
fileWriter.append(num + " " + title);
// 空一行
fileWriter.append("\r\n");
fileWriter.append("\r\n");
// 刷新文件,关闭writer
fileWriter.flush();
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
主函数
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Operations operations = new Operations();
while (true) {
// 识别用户名和密码
System.out.println("请输入用户名、密码");
if (operations.selectOperation(in.next().trim(), in.nextLine().trim())) {
break;
}
}
}
}
4代码运行结果测试
5优缺点分析
4.1 优点:基本实现功能,每个方法看起来短小精悍;
4.2 缺点:没有抽象类,代码量有点过多
标签:题目,个人,项目,用户,生成,互评,XX,fileWriter,输入 From: https://www.cnblogs.com/52guyuefangyuan/p/17720966.html