个人项目互评
一、前言概述
本次的个人编程过程中,我和刘洋同学进行了充分的交流讨论,互相给出了很多有用的建议与方法。下面我将对刘洋同学的代码进行一个简单的评价,或许评价不够全面和客观,望谅解。
二、代码运行测试
整体运行效果图如下:

从上面图中可以看出需求中的功能都基本实现,并且也能判断出题数量的正确性。同时也有退出系统从而停止运行的功能。
以下是生成试卷的结果:

以时间命名试卷。

试卷中的每个题目以空行隔开,并且无重复。
三、代码评价与分析
1.WriteFile类中的GetTime()方法
public static String GetTime(){ //获取当前时间并转换形式
Calendar cal=Calendar.getInstance();
int y=cal.get(Calendar.YEAR);
int m=cal.get(Calendar.MONTH) + 1;
int d=cal.get(Calendar.DATE);
int h=cal.get(Calendar.HOUR_OF_DAY);
int mi=cal.get(Calendar.MINUTE);
int s=cal.get(Calendar.SECOND);
String time = new String();
String year = String.valueOf(y);
String month = String.valueOf(m);
String day = String.valueOf(d);
String hour = String.valueOf(h);
String minute = String.valueOf(mi);
String second = String.valueOf(s);
time = year + "-" + month + "-" + day + "-" + hour + "-" + minute + "-" + second;
return time;
}
编写时刘洋同学很细心地注意到通过Calendar类获得的时间中,月数字会比实际月数小一,因此进行了加一操作。
然而,利用Calendar类获得时间字符串实在复杂,因为Calendar得到的时间的数据类型是int型,这样又要通过String的转换函数转换为字符串,并且相加得到最终的时间字符串,以这样的一种方式得到时间字符串是在难免会代码偏多,运行时间变长。这里建议使用Date。
2.Question接口
public interface Question {
void Question(int num, String id);
}
设置了Question接口,里面规定了Question(int num, String id)方法,并且JuniorQuestion类中,PrimaryQuestion类中,SeniorQuestion类中都对接口中的Question()方法进行了重写,这样方便了日后代码的改动。
3.CreateTeacherUser类中的CreateUser()
View Code此段代码不是很好,首先大量的new User对于本次项目没有任何用处,完全可以注释掉,其次,下方对信息的写入,使得每次程序运行时都会覆写一次,这就导致了程序开始运行时间偏长。
四、总结
从整体项目上来看,刘洋同学的结构设计很好,有三个类型的题目生成器,一个试卷生成系统,以及一个文件写入器,简单且分工明确。
从运行时人机交互来看,给到了使用者足够的输入提示,并且运行时基本没有出现bug。
从代码编写上来看,基本没有代码规范问题,每个类和方法都有注解标明作用。唯一有问题的是方法的命名,使用的是大驼峰命名法而不是小驼峰命名法。
在数据处理上,问题也比较大,有些数据处理由于函数选择问题,使得处理麻烦且繁琐。另外,User类虽然声明了但实际上并没有使用。
总体看来,刘洋同学仍需要提高,我相信我们一起努力肯定会更上一层楼。