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

一.项目的需求分析:

1、命令行输入用户名和密码,两者之间用空格隔开(程序预设小学、初中和高中各三个账号,具体见附表),如果用户名和密码都正确,将根据账户类型显示“当前选择为XX出题”,XX为小学、初中和高中三个选项中的一个。否则提示“请输入正确的用户名、密码”,重新输入用户名、密码;

2、登录后,系统提示“准备生成XX数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):”,XX为小学、初中和高中三个选项中的一个,用户输入所需出的卷子的题目数量,系统默认将根据账号类型进行出题。每道题目的操作数在1-5个之间,操作数取值范围为1-100;

3、题目数量的有效输入范围是“10-30”(含10,30,或-1退出登录),程序根据输入的题目数量生成符合小学、初中和高中难度的题目的卷子(具体要求见附表)。同一个老师的卷子中的题目不能与以前的已生成的卷子中的题目重复(以指定文件夹下存在的文件为准,见5);

4、在登录状态下,如果用户需要切换类型选项,命令行输入“切换为XX”,XX为小学、初中和高中三个选项中的一个,输入项不符合要求时,程序控制台提示“请输入小学、初中和高中三个选项中的一个”;输入正确后,显示“”系统提示“准备生成XX数学题目,请输入生成题目数量”,用户输入所需出的卷子的题目数量,系统新设置的类型进行出题;

5、生成的题目将以“年-月-日-时-分-秒.txt”的形式保存,每个账号一个文件夹。每道题目有题号,每题之间空一行;

二.优点分析:

1.熟悉java API,用较少的代码实现了删除不合法算式的功能。

Pattern pattern1=Pattern.compile("\\(\\d+\\)") ;  Pattern pattern2=Pattern.compile("^\\([^()]+\\)=$") ;
        Matcher matcher1=pattern1.matcher(question) ; Matcher matcher2=pattern2.matcher(question) ;
        if(matcher1.find()==false && matcher2.find()==false)
        {
            if(result==(int)result && result<1000 && result>=0)
            {
                answerList.add((int)result) ; return true ;
            }
            else return false ;
        }
        else return false ;

使用正则表达式,将不合法算式删除。

2.有效地将功能优化。考虑到实际情况,将小学试卷中算式结果超过1000或小于0的算式删除。

if(result==(int)result && result<1000 && result>=0)
{
    answerList.add((int)result) ; return true ;
}
else return false ;

3.撰写了实验文档,让阅读者更快地理解代码设计思路。

4.能够学以致用。计算机系统所学到的代码优化方法,运用到了代码中。

protected void CreateQuestion()
    {
        for(int r=0 ; r<questionAmount ; r++)
        {
            String question="" ; int length ; int left=0 ; int right=0 ;
            do
            {
                length=(int)(1+Math.random()*(5-1+1)) ;//代码优化,减少计算次数
            }while(length==1) ;
            for(int i=0 ; i<length ; i++)
            {
                if(i==length-1)
                {
                    question+=Integer.toString((int)(1+Math.random()*(100-1+1))) ;
                    if(left!=right)
                    {
                        for( ; ; )
                        {
                            question+=")" ; right++ ;
                            if(right==left) break ;
                        }
                    }
                    question+="=" ;
                }
                else
                {
                    if(Math.random()*(100-1+1)<20)
                    {
                        question+="(" ; left++ ;
                    }
                    question+=Integer.toString((int)(1+Math.random()*(100-1+1))) ;
                    if(Math.random()*(100-1+1)<20 && right<left)
                    {
                        question+=")" ; right++ ;
                    }
                    question+=operatorChar[(int)(1+Math.random()*(7-1+1))] ;
                }
            }
            AddOperator(question) ;
            question=Temp ;
            if(TestQuestion(question))
                questionList.add(question) ;
            else r-- ;
        }
    }

5.变量名简单易懂,代码思路清楚。

缺点:

我觉得唯一的缺点就是将所有的类写在了同一个文件里,虽然容易查看,但是破坏了java的面向对象特性。

看到了别人的代码后,我才发现自己好菜。原来一直以来不是我们菜,而是我自己菜。虽然住在同一间宿舍下,但是代码差距也太大了。我的代码就是java包装下的C++代码,我对于java API完全不了解,也忽视了java的面向对象特性。差距很大,还剩半年,要好好加油了。

原文地址:https://www.cnblogs.com/jimmy-xue/p/11553171.html

时间: 2024-08-30 15:26:28

中小学自动试卷生成程序优缺点分析的相关文章

试卷生成程序优缺点分析

·程序说明 队友的个人项目完成了项目的所有功能要求. 他使用了如下函数来实现需求: void kuohao(int B[] ,int numA);         //预定公式在括号中的位置 string Pschooltext(int A[],int numA);     //生成一条小学的试题 string Jschooltext(int A[],int numA);     //生成一条初中的试题 string Sschool(int A[],int numA);        //生成一

android 原生应用、Web应用、混合应用优缺点分析

最近开发几个项目,牵涉到android的几种开发模式.对于原生态开发.web 应用开发以及混合模式开发,本人认为并不是哪一种就是最好的,哪一种就是最差的,这个完全是根据自己的需求,选择一种合适的开发模式.他们同时具备自己的有点,同时也有自身的缺点,我们根据实际情况,取其中的优点,尽量避免掉缺点,才是最好的开发模式.下面,我们就一同看看,这三种开发模式,到底有什么区别. 一.原生应用 (也称本地开发 Native App) 你使用过微软PowerPoint 或者 Word吧?这些可直接在你电脑上运

三种Tomcat集群方式的优缺点分析

三种Tomcat集群方式的优缺点分析 2009-09-01 10:00 kit_lo kit_lo的博客 字号:T | T 本文对三种Tomcat集群方式的优缺点进行了分析.三种集群方式分别是:使用DNS轮询,使用Apache R-proxy方式,以及使用Apache mod_jk方式. AD:WOT2014课程推荐:实战MSA:用开源软件搭建微服务系统 Tomcat集群方式有三种,分别是: 1.使用DNS轮询. 2.使用Apache R-proxy方式. 3.使用Apache mod_jk方式

PHPWAMP自启异常,服务器重启后Apache等服务不会自动重启的原因分析

在使用"PHPWAMP自动任务"时,不少学生遇到如下问题: "phpwamp绿色集成环境重启动电脑(服务器)后,不会自动启动网站服务" (如果是其他环境或是自己搭建时遇到此问题,也是可以用此法解决) 此文章内容符合: 为什么网站服务由手动变成自动后还是无法重启? 为什么我把服务设置成自动后,开机又变回手动了? 为什么服务器(电脑)重启后服务不会自动跟着重启? windows服务器重启后网站服务不会自动重启的原因分析. 为什么服务设置成自动后,重启动服务器(电脑)服务

数据库索引的优缺点分析

优点:创建索引可以大大提高系统的性能:第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性. 第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因. 第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义. 第四,在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间. 第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能. 缺点:增加索引也有许多不利的方面:第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增

ASP.NET常用数据绑定控件优缺点分析总结

ASP.NET常用数据绑定控件优缺点分析总结 本文的初衷在于对Asp.net常用数据绑定控件进行一个概览性的总结,主要分析各种数据绑定控件各自的优缺点,以便在实际的开发中选用合适的控件进行数据绑定,以提高开发效率. 因为这些数据绑定控件大部分都已经封装的很好了,稍微有一些基础的朋友都可以很容易的上手使用,所以本文不涉及具体控件的使用,只在于分析各自的优劣点,但是在下一篇文章里,我会主要讲一下ListBox.GridView.Repeater这三个数据绑定控件的“高效分页”,ListBox和Gri

结对编程——队友代码的优缺点分析

一·项目的需求分析 需求文档中给出5个需求,第一个是用户的登录要求用户名和密码相匹配,并且有着初始的出题类型:需求二则限制题目的操作数和取值范围: 需求三要求我们输入题目数量,这里给出限定条件10-30个题目并且要求同一位老师的题目不能一样:需求四则要我们满足切换出题类型:需求五则 是对题目保存路径和文件的要求. 二·代码优缺点分析 main函数大体框架为:一个循环加一个if的判断语句来确定登陆对象,并且每一个登录对象都有一个唯一的标识,eg:张三1的标识为(0,1),再将其标 识传递给user

分布式缓存中间件优缺点分析(redis、memcache、ehcache)

分布式缓存中间件优缺点分析(redis.memcache.ehcache) 1. redis 优点: 1. 丰富的数据结构,支持字符串(strings).散列(hashes).列表(lists).集合 (sets).有序集合(sorted sets) 2. 主从同步,故障转移 集群 3. 持久化 缺点: 1. 单核,单线程,所以在存储海量数据的时候会极大的影响系统性能 2. memcache     优点: 1. 简单的key-value存储,memcache的key-value只支持Strin

中小学自动生成试卷优缺点分析

和个人项目相比,结对编程带给我们的是一个互相进步的过程. 通过对双方代码的解读,我们发现到了双方存在的优点和不足,这有助于我们加强对个人项目更加深入的理解,从而在优化和完善个人项目的基础上,能够更加全面便捷地实现结对编程项目. 个人需求主要是要求形成一个中小学数学卷子自动生成程序. 优点分析 1.在处理题目的时候用到了比较巧妙的思路,使得过程和函数的语言内容清晰简洁,容易理解,对于有些问题的理解有创新的想法. 2.写的代码结构清楚明了,在代码中关键的部分有关键的步骤,方便了读者的理解与认识. 3