以下是张君逸同学对郭晓哲同学个人项目的代码分析:
- 概述:
郭晓哲同学对于需求的分析非常的清晰。根据题目的要求,设计了一个老师类,对这个类设计了诸多函数以实现功能,主要的功能界面跳转是使用switch结构和函数跳转来实现的。
- 技术分析:
- 查重
查重是使用读取用户文件夹生成过的试卷txt,然后再用一个临时的字符串不断地保存题目进行比对,这一点比我的查重逻辑上更好,但是其实有更好的数据结构可以使用,这样的逐一比较方法造成复杂度很高。
for (String f:files) { try { FileReader fr = new FileReader(".\\" + teacherName + "\\" + f); BufferedReader br = new BufferedReader(fr); String str; String tempString; while ((str = br.readLine()) != null) { if(str.length() > 3) { // 由于题目格式为1、 所以截掉前三个字符进行比较,以免序号不同影响查重 tempString = str.substring(3); } else { tempString = str; } if(tempString.equals(question.substring(3))) { flagFind = false; break; } } br.close(); fr.close(); } catch (IOException e) { e.printStackTrace(); }View Code
-
- 登录
登录的方法郭晓哲实现的比较笨,是直接使用switch结构直接赋值实现的,根据输入直接给变量赋值,造成了程序的局限性很强。
switch(chooseFlag) { case 1: teacherName = "张三1"; break; case 2: teacherName = "张三2"; break; case 3: teacherName = "张三3"; break; case 4: teacherName = "李四1"; break; case 5: teacherName = "李四2"; break; case 6: teacherName = "李四3"; break; case 7: teacherName = "王五1"; break; case 8: teacherName = "王五2"; break; case 9: teacherName = "王五3"; break; default: }View Code
-
- 数学题目的生成
随机生成的大量题目,考虑到了所有的情况,逻辑比较缜密。
- 优点:
简单实用,注释清晰,理解起来很快。逻辑很缜密,考虑到了基本需求的所有可能性,完整地处理了所有的特判情况,这一点很值得我学习,我做的时候就有许多的特判没有处理好。他的代码的规范也做的很好,注释也比较清楚,代码的阅读很舒服。
- 缺点
缺点也比较明显,虽然完成了基本需求,但是完成的很僵硬,程序的数据结构和算法逻辑没有什么技巧性,造成了代码非常的繁琐,并且缺乏拓展性,没有后续的可开发性。