1.队友代码测试
1.1登录
1.2注册(要求外添加的功能)
1.3退出
1.4出题
1.5切换难度
1.6切换账号
2.优点
2.1模块化:
代码通过分包组织成了多个模块,每个模块都有明确定义的功能和职责。这样的组织结构使得代码更易于维护和理解,同时也降低了出现混乱和冲突的可能性。
2.2封装:
代码通过封装各种函数,仅仅只需要运行main函数,在里面调用各种函数,实现了很好的封装,比较好修改bug和扩展
2.3合理的文件部署及运用:
在用户方面巧用文件存储用户信息,已经登录等都用到了文件操作,可以实现即使退出这个系统也还能够将改变后的用户信息等存储下来,而不是系统需要一直运行,我的代码就是运行一次程序里面存储的用户是一个版本,退出重启之后就是一开始的初始版本。
ArrayList<Teacher> teachers = new ArrayList<>();
File file1 = new File("user.txt");
try {
FileInputStream f = new FileInputStream(file1);
BufferedReader br = new BufferedReader(new InputStreamReader(f));
String temp;
//逐行开始读存储教师信息的文件
while ((temp = br.readLine()) != null) {
//按照空格将教师信息按照 姓名 密码 默认年级 的格式获取
String[] s = temp.split("\\s+");
Teacher te = new Teacher();
//设置该教师的姓名,密码,默认年级
te.setTname(s[0]);
te.setTpassword(s[1]);
switch (s[2]) {
case "小学":
te.setType(1);
break;
case "初中":
te.setType(2);
break;
case "高中":
te.setType(3);
break;
default:
System.err.println("Invalid teacher type: " + s[2]);
break;
}
//users列表里面存储的是user类型的数据,将所有用户文档里面的信息存储到users列表中去
teachers.add(te);
}
//存储完毕之后关闭user.txt
br.close();
} catch (Exception e) {
e.printStackTrace();
return null;
}
return teachers;
2.4异常处理:
代码捕获了可能抛出的IOException
异常并进行了处理,通过打印堆栈跟踪信息,有助于诊断问题。虽然没有采取更复杂的异常处理策略,但这是一个良好的起点。
3.缺点
3.1 逻辑处理不当
一旦登录后就不能直接退出系统了,而只能在一开始退出,这很不合理也不方便(只有一开始能输入3退出,其他【均不可以)
3.2查重功能有问题
查重的时候,在从文件中读题目的时候,刘同学的代码并没有将题号去除再对比,而时直接读入一整行,所以查重的时候连着题号一起读进去了,由于题号在改变,在本文件内查重无法实现,而在其他文件中查重成功概率很低,只有题目和题号均相同才能查出来,这是很大的bug
以下是获取文件里的代码
public HashSet<String> getFormula(String name) {
File file = new File(name);
if (!file.exists()) {
file.mkdir();
}
File[] files = file.listFiles();
HashSet<String> allformula = new HashSet<>();
for (File f : files) {
if (!f.isDirectory()) {
try {
FileInputStream ff = new FileInputStream(f);
BufferedReader b = new BufferedReader(new InputStreamReader(ff));
String line;
//逐行读取文件中的内容并且添加到哈希set中
while ((line = b.readLine()) != null) {
allformula.add(line);
}
b.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
return allformula;
}
而在生成卷子时调用的代码如下
//卷子查重
if (!all.contains(formula)) {
every.write(i + 1 + "." + formula + "\n" + "\n");
}
3.3出题不合理
随机出的题目有一部分有一些不太必要的括号,这一个小小的bug在我的项目里也同样出现,例如以下题目
4.总结
刘同学在实现这个系统功能的时候在文件方面确实熟练运用,不仅是用文件流,还善于规划文件部署,最让我欣赏的就是分包以及用文件存用户,以及她多加的注册功能等,很人性化,以及除了查重功能没有实现完全存在bug之外几乎没有其他问题,是一个很好的项目