中小学自动卷子生成程序优缺分析

优点分析

 1. 在处理题目时,用到了专门生成题目的函数,并将其转换成字符串写入文件中,使得过程更加简洁和简单。

 2. 对于重点的函数有必要的解释,如下: 我们可以明显看到,代码注释十分详实,方便读者查看。

 FileReader reader = new FileReader(file);//定义一个fileReader对象,用来初始化BufferedReader
                BufferedReader bReader = new BufferedReader(reader);//new一个BufferedReader对象,将文件内容读取到缓存
                StringBuilder sb = new StringBuilder();//定义一个字符串缓存,将字符串存放缓存中
                String s = "";
                while ((s =bReader.readLine()) != null) {//逐行读取文件内容,不读取换行符和末尾的空格
                    sb.append(s + "\n");//将读取的字符串添加换行符后累加存放在缓存中

 

 

 3. 主函数只有两行,很简洁,不影响代码本身的可读性。

 public static void main(String[]args)throws Exception{
        produce();
        System.out.println("出题完成。");
    }


 

 4. 对变量的命名比较形象,能看出每个变量对应的含义,可读性较强,对结对编程形式较为友好,我们随便选取一个代码片段:

static int clas=0;//1:primary school 2:junior high school 3:high school
    static int sum=0;//the number of the questions [10,30]
    static int operand;//[1,5]
    static int datarange;//[1,100]
    static int i=0;
    static int j=0;
    static String username;
    static String password;

 

 

我们可以很直观地理解这几个变量的意义。

 

缺点分析

 1. 在代码规范方面,首先在函数命名时,没有遵从用首字母大写的英文单词组合表示,且其中至少有一个动词的规则;其次,函数的自我描述性较差,没有达到见其名而知其意的层次:如名为checkmake等的函数,有一些改进空间。

 2. 语句书写规则并不提倡,尤其表现在大括号的左半部分紧跟函数名,而不是另起一行,以后需要注意。注释写得相对较少,初读时很难理解每一个函数的作用。

 3. 在生成括号,平方,开方与三角函数时,采用的方法是每道题目中只生成一个括号或其他表达式,削弱了题目难度,后续可以对算法加以改进,得到更符合实际需求的算术表达式。

 4. 在三角函数与开方还有求平方的计算题中,生成的随机试题与实际需求其实会有出入,在所有三角函数运算中,只出现数字其实很难计算,必须依靠科学计算器,并且如果因此需要保留原式,又会使题目失去原本的意义。同样的,开方和求 平方问题中也有类似脱离实际的地方,我们随机举例来看一下生成的试题结果:

1. 30²/sin96=

2. 7-(√48/4)6-cos89-97=

3. (√33-30)*tan39=

4. 82²+sin89=

5. 25²/(25/82*72-cos99)=

6. 60+(95-sin77²)=

7. 29+88*(√79*cos75)=

8. (√18/31)-tan21=

9. 53*(57/38*sin√8)=

10. (11/sin50*3-)89²-85=

11. 97/(22²*cos60/1-)79=

12. (62-30²-cos65)=

13. (√21*76/cos31)=

14. 7/cos√81=

15. 26²/sin58=

 

 我们可以看到,其实基本这里所有随机生成的式子都面临了上述提到的问题,后续有很大的改进空间,我们可以用数字组合上周期生成可以直接计算的三角函数,开方计算时,可以加入判定被开根数是否能够进一步化简,而计算平方时,生成随机数不宜过大,这些都是可以考虑改进的范畴。

转载于:https://www.cnblogs.com/zhangyibin/p/11552930.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值