毕业设计(论文)-基于JAVA的交通规则模拟考试系统.doc

上传人:来看看 文档编号:3283070 上传时间:2019-08-07 格式:DOC 页数:39 大小:1.37MB
返回 下载 相关 举报
毕业设计(论文)-基于JAVA的交通规则模拟考试系统.doc_第1页
第1页 / 共39页
毕业设计(论文)-基于JAVA的交通规则模拟考试系统.doc_第2页
第2页 / 共39页
毕业设计(论文)-基于JAVA的交通规则模拟考试系统.doc_第3页
第3页 / 共39页
毕业设计(论文)-基于JAVA的交通规则模拟考试系统.doc_第4页
第4页 / 共39页
毕业设计(论文)-基于JAVA的交通规则模拟考试系统.doc_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《毕业设计(论文)-基于JAVA的交通规则模拟考试系统.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-基于JAVA的交通规则模拟考试系统.doc(39页珍藏版)》请在三一文库上搜索。

1、中北大学2009届毕业设计说明书1 引言随着科技的发展,汽车成为人们生活中不可缺少的组成部分。随着人们生活水平的提高汽车进入千家万户。家庭汽车数量的增加,就会有一部分人去学习汽车驾驶。每年由于不遵守交通规则造成的交通事故的数字相当巨大,因此学习交通规则是其中必要部分,学好交通规则是一个驾驶员的必备条件 1。面对众多参加考试的考生,就须要相应的考试训练软件,因此要制作一个驾驶员模拟考试考软件。让参加考试的考生在考前都能用上与考试软件相似的平台,提前熟悉考试过程与内容,提高考试的通过率。编写这个软件就是为了汽车考试的考生有一个好的练习平台。现如今的交通规则考试是在计算机上用交通考试软件来考试的。当

2、前国内的考试系统还是没有国外发达国家的人性化,现有的人性化交规软件和驾照的其他科目的考试做成了一个3D游戏。这样让考生在复习考试时,在游戏中就能记住相应的法律法规。让考生在复习中得到快乐。我国现有的交规模拟考试系统有一个通病,就是考试的错题文件不能带走,只能在软件上看。这样就很不方便,每次都要使用电脑打开软件时才能复习考试资料。而现这个交规模拟考试系统,就要加上这个功能,每次考生考试提交试卷时都会统计考生的错题,给考生建立错题库。考生可以将错题集拷贝,随时复习。这个交规系统尽量避免国内交规模拟考试系统的死板,能够灵活应用,根据需要更改参数进行模拟,促使考生在真实考试中得到好的成绩。2 开发语言

3、及工具简介2.1 开发语言简介Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。另一方面,Java技术也不断更新23。Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简

4、称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。Java应用编程接口已经从1.1x版发展到1.2版。目前常用的Java平台基于Java1.4,最近版本为Java1.74。Java分为三个体系JavaSE(Java2 Platform Standard Edition,java平台标准版),JavaEE(Java 2 Platform,Enterprise

5、Edition,java平台企业版),JavaME(Java 2 Platform Micro Edition,java平台微型版)。Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(Java Enterpri

6、se APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。2.2 用到的java技术简介2.2.1 swing技术简介Swing具有控制外观(Pluggable look and feel)的能力,即允许用户自行定制桌面的显示风格,比如,更换配色方案,让窗口系统更加适应用户的习惯和需要,而AWT 组件完全依赖于本地平台。增加了裁剪板、鼠标提示和打印等功能。所有Swing组件类都存在于javax.swing包中。为了避免混淆,Swing包中的所有类名均在AWT类名的前面冠于“J”字符,例如,JPanel、JFrame、JButton等。2.2.2 java文件操作的简介Java对文

7、件的操作是对流的操作过程,流是通过缓冲机制将数据从生产者(如键盘、磁盘文件、内存或其他设备)传送到接受该数据的消费者(如屏幕、文件或者内存等)的这一过程的抽象。处理文件流有一些文件的处理方法。输入输出抽象基类InputStream/OutputStream,实现文件内容操作的基本功能函数read()、write()、close()、skip()等;一般都是创建出其派生类对象(完成指定的特殊功能)来实现文件读写。在文件读写的编程过程中主要应该注意异常处理的技术。FileInputStream/FileOutputStream5:用于本地文件读写(二进制格式读写并且是顺序读写,读和写要分别创建出不

8、同的文件流对象);本地文件读写编程的基本过程为:(1)生成文件流对象(对文件读操作时应该为FileInputStream类,而文件写应该为FileOutputStream类);(2)调用FileInputStream或FileOutputStream类中的功能函数如read()、write(intb)等)读写文件内容;(3)关闭文件(close())。PipedInputStream/PipedOutputStream,用于管道输入输出(将一个程序或一个线程的输出结果直接连接到另一个程序或一个线程的输入端口,实现两者数据直接传送。操作时需要连结);RandomAccessFi类(它直接继承于O

9、bject类而非InputStream/OutputStream类),从而可以实现读写文件中任何位置中的数据(只需要改变文件的读写位置的指针)6。随机文件读写编程的基本过程为:(1)生成流对象并且指明读写类型;(2)移动读写位置;(3)读写文件内容;(4)关闭文件7。2.3 开发环境简介2.3.1 开发环境Windows XP/Jdk 1.6/Netbeans 6.1。2.3.2 JDK简介JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK(Software develo

10、pment kit)89。JDK 是整个Java的核心,包括了Java运行环境(Java Runtime Environment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握 JDK是学好Java的第一步。最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率要比Sun JDK包含的JVM高出许多。而专门运行

11、在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。但不管怎么说,我们还是需要先把Sun JDK掌握好10。从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本信息也不再延续以前的1.2,1.3,1.4,而是变成了5.0,6.0了。从6.0开始,其运行效率得到了非常大的提高,尤其是在桌面应用方面。JDK本身使用了Java语言编写,在我们下载的安装包里,有一个src.zip,里面就是JDK的源代码。(1)JDK的版本:SE(J2SE),standard edition,标准版,是我们通常用的一个版本,从JDK 5.0开始,改名为Java SE。EE(J2EE),en

12、terpsise edtion,企业版,使用这种JDK开发J2EE应用程序,从JDK 5.0开始,改名为Java EE。ME(J2ME),micro edtion,主要用于移动设备、嵌入式设备上的java应用程序,从JDK 5.0开始,改名为Java ME11。(2)JDK的组成:JDK包含的基本组件包括:javac 编译器,将源程序转成字节码。jar 打包工具,将相关的类文件打包成一个文件。javadoc 文档生成器,从源码注释中提取文档。jdb debugger,查错工具。java 运行编译后的java程序(.class后缀的) 。appletviewer:小程序浏览器,一种执行HTML文

13、件上的Java小程序的Java浏览器。Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。 Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。 Jconsole: Java进行系统调试和监控的工具。(3)常用的package12:java.lang: 这个是系统的基础类,比如String等都是这里面的,这个package是唯一一个可以不用import就可以使用的Package。java.io: 这里面是所有输入输出有关的类,比如文件操作等。: 这里面是与网络有关的类,比如URL,URLConnection等。java.

14、util : 这个是系统辅助类,特别是集合类Collection,List,Map等。java.sql: 这个是数据库操作的类,Connection, Statememt,ResultSet等。javax.servlet: 这个是JSP,Servlet等使用到的类。(4)JDK的环境配置如果JDK安装在C盘里,如:C:Program FilesJavajdk1.6.0_10,那么就在系统变量里新建: 变量名:JAVA_HOME 变量值:C:Program FilesJavajdk1.6.0_10变量名:classpath 变量值:.;%JAVA_HOME%lib;%JAVA_HOME%libt

15、ools.jar并在path里加入;C:Program FilesJavajdk1.6.0_10bin132.3.3 Netbeans 6.1简介Netbeans 由Sun公司在2000年创立,它是开放源运动以及开发人员和客户社区的家园,旨在构建世界级的Java IDE。Netbeans当前可以在Solaris、Windows、Linux和Macintosh OS X平台上进行开发,并在SPL(Sun公用许可)范围内使用。已经获得业界广泛认可,并支持Netbeans扩展IDE模块目录中大约100多个模块。Netbeans是一个全功能的开放源码Java IDE,可以帮助开发人员编写、编译、调试和

16、部署Java应用,并将版本控制和XML编辑融入其众多功能之中。Netbeans 可支持Java 2平台标准版(J2SE)应用的创建、采用JSP和Servlet的2层Web应用的创建,以及用于2层Web应用的API及软件的核心组的创建。此外,Netbeans 最新牒还预装了两个Web服务器,即Tomcat和GlassFish,从而免除了繁琐的配置和安装过程。所有这些都为Java开发人员创造了一个可扩展的开放源多平台的Java IDE,以支持他们在各自所选择的环境中从事开发工作,如Solaris、Linux、Windows或Macintosh。Netbeans是一个为软件开发者而设计的自由、开放的

17、IDE(集成开发环境),你可以在这里获得许多需要的工具,包括建立桌面应用、企业级应用、WEB开发和JAVA移动应用程序开发、C/C+,甚至Ruby。Netbeans可以非常方便的安装于多种操作系统平台,包括Windows,Linux,Mac OS和Solaris等操作系统Netbeans IDE6.1版本提供了几种新功能和一些功能的增强。提供了强大的JavaScript编辑功能,支持使用Sping的WEB框架,并加强了与MySQL的整合,便Netbeans比较方便的使用MySQL数据库,Netbeans 6.1增强了性能,启动速度提升40%。在建立一个大工程时,有较低的内存消耗和更快的响应速度

18、!2.4 文件存储现在有好多的软件的存储都是存到文件里的,比如说一些游戏的关卡,玩游戏人员将游戏进度都是存在一些文件里的,这些文件都是按照规定的格式进行写入存储的。当运行软件系统或者调用的时候进行读取数据14。把文件内的存储信息读到软件中去进行处理恢复到当初存储文件信息时的状态。现在做的软件也是基于文件的存储预处理的基础上的。这种设计最大特点就是:方便、简单、容易操作,不需要复杂的数据库知识也能轻而易举的进行系统的维护与更新15。2.4.1 用户信息文件用户信息文件用来存储用户的登录信息,既用户名、身份证号和考试车型的信息,如表2.1所示。表2.1 用户文件存储格式行 号功 能符号及意义1用户

19、名2身份证号3考试车型0微小型车,1为货车,2为客车 ,3为轮式车2.4.2 考试题存储文件试题存储文件用来存储试题信息,将试题信息按照一定的格式存储到文件中,如表2.2所示存储结构。表2.2 试题存储格式行 号功 能符号及意义 1题号2考题类型(判断或选择)panduan(判断)xuanze(选择)3题目4选项A5选项B6选项C7选项D8图片名称9正确答案选择(A、B、C、D)判断(T、F)10所在章节见下面各章标志所示表2.3 各章节及其标志章 节标 志东安路交通安全法律、法规和章程falvfagui道路交通信号及其含义xinhao安全行车、文明驾驶知识wenmingxingche高速公路

20、、山区道路等复杂到录下的安全驾驶知识gaosushandaodeng出现爆胎、转向失控、制动失灵等紧急情况时临危处置知识jinjiqingkuang机动车总体结构和主要安全装置常识、日常检查和维护基本知识changjianguzhang发生交通事故后的自救、急救等基础知识等化学品的知识jijiu地方性法规difangfagui货车专用知识huochezhuanyong客车专用知识kechezhuanyong轮式车专用知识lunshichezhuanyong2.4.3 用户错误信息存储文件用户错误信息存储文件的作用是将用户答错的题目进行记录以便以后复习使用,存储文件的存储格式就是将错题题号存储,

21、每行存储一个错题题号。2.4.4 软件运行环境系统具体的硬件配置如下:操作系统:WINDOWS98/2000/XP/2003/Linux 等CPU:INTEL PENTIUM266或更高硬盘:100M或更高显示器:VGA 800*600分辨率内存:32M或更高3 需求分析3.1 需求调查根据调查,目前市场上所存在的交通规则模拟软件,都有一些缺点,有的软件灵活性不是很好,有的软件功能不是很强大。最大的缺点就是收费,在这种前提下,要开发一个包含市场上软件的优点,而且是免费的。能够让广大的驾照考生有一个免费的学习模拟环境。3.2 功能设置(1)考试题库要包含考试的所有知识点和考核点,在考试时,试题要

22、覆盖所有考核点;按照国家机动车驾驶证工作规范规定得比例进行抽取组合。(2)试题均以选择题和判断题的形式给出,以文字叙述和图形的形式显示。(3)考试成绩的等级和考试时间可以由用户修改和设定。(4)考试过程中考生可以自己交卷,也可以时间到自动交卷。(5)交卷后自动给出考生所得分数和及格与否,并将考生答错的试题以及正确答案以及考生的答案显示在屏幕上,供考生参考。(6)可自由练习、按章节、顺序出题、随机出题等。(7)可生成错题集,供强化练习与导出。3.3 可行性分析交通规则考试系统的,题目的生成、试卷的提交、成绩的批阅等都可以交给计算机处理,只要将考试题库放到计算机里就能自动完成。这样一来出题人员只需

23、管理好计算机系统及考试软件就行了,从而大大减轻了出题人员的负担,也减少了财政支出,并且java开发的软件可跨平台,安全性好,维护方便,所以可以看出交规考试系统的开发是可行的15。4 总体设计图4.1 的总体设计图如图4.1所示将整个软件分成三个大部分,每个大部分又分成不同的子模块。4.1 登陆模块登陆模块可分为用户登陆和用户创建子模块。4.1.1 用户登录模块登录时要匹配用户名和密码是否正确,在用户的存储文件中进行搜索查看是否存在相应的用户名,如果存在该用户名则进行身份证号和考试类型的匹配,没有该用户或者匹配不上均会弹出提示。4.1.2 添加用户模块先检测用户名是否存在,如果存在则提示出错;如

24、果不存在就将所输入的用户名、身份证号以及考试类型记录到用户存储文件中。4.2 考试模块此模块分成:模拟考试、顺序考试、错题模式、统计成绩、错题处理等子模块。4.2.1 模拟模式考试模块该模块的功能就是用户在通过了身份验证以后,选择模拟考试模式,该考试模式是按章节出题比例选出一定数量的将选择题和判断题,将选择题和判断题题目分别打乱排序,然后以先选择后判断的模式重新组卷。4.2.2 顺序考试模式模块该模块的功能就是用户在通过了身份验证以后,选择顺序考试模式,该考试模式是按章节出题比例选出一定数量的将选择题和判断题,按照章节抽题的顺序进行组卷。4.2.3 错题模式模块该模块是在用户答完题后,选择该考

25、试模式是按照用户错题文件里的错题题目进行顺序出题进行组卷。4.2.4 统计成绩模块该模块的作用是在用户将题目答完后,自动比对答案,将答对的题目进行记录最后给出所得分数,并判断是否及格,给出成绩。4.2.5 错题存储模块这个模块是在统计成绩的同时保存错误题目的题号,将题号保存在用户错题文件中,并生成HTML文件同时打开该文件,供用户浏览和保存。4.3 管理维护模块该模块是供用户对题目的管理。该模块是进行题目的添加,在题库进行增加时添加新题目。5 详细设计各个模块的作用前面已经介绍完了,下面对我的设计部分模块进行详细设计。5.1 用户模块 5.1.1 用户名确定的过程由下图可以看出这个过程是先设置

26、一个返回变量其值为false,然后创建一个文件输入流,进行文件的打开;然后再建立一个缓冲流用来处理读进来的数据,这样可以把一串数据读进来处理;然后把读进来的数据与输入进来的用户名进行比对,如果成功,那么见返回一个等于0的整数;然后判断这个整数是否等于0,如果等于0则将返回值设为true,否则将进行循环;如到了文件末尾都没找到该记录,则说明该用户名不存在。这个过程如图5.1所示。图5.1 用户名判断流程图下面进行介绍一下核心代码;FileReader in = new FileReader(lujing);/建立文件输入流BufferedReader bin = new BufferedRead

27、er(in);/建立缓冲输入流while (str = bin.readLine() != null) /将缓冲区内容通过循环方式逐行赋值给字符串tr aa = pareTo(user); f (aa = 0) fanhui = true;/有该用户为true break;/结束循环 else bin.readLine(); bin.readLine(); continue;/结束本次循环 in.close();/关闭文件5.1.2 用户登录模块这个过程是用户判断的过程,查看用户是否为合法用户,并且能够设置在考试时的参数。大体过程是这样的:先判断选择题在全部题目中所占的比例是否大于1,大于1是

28、非法的,就会进行错误提示;(1)审查所填入的参数:然后检查个章节的出题比例,计算各章节的比例之和,如果各章节的比例之和是大于1的,这种情况是非法的,不符合实际,软件将进行错误提示,进行重新配置各章的比例知道各章比例之和等于1;(2)审查用户:首先,判断用户名和密码是否填入,如果没填入,将进行提示;其次,判断身份证号是否为数字如果为数字则进行下一步审查,如果不是将进行错误提示;再次,把填入的用户名与用户名文件中的用户名进行比对,查看着个用户名是否存在,如果不存在将提示进行更正或进行注册,如果这个用户名存在,再比对这个用户名下的密码是否与输入的一致,如果一致进行下一步;该步骤是进行考试车型的审查,

29、查看该用户所报的车型是否与要考试的车型一致,如果不一致软件将进行错误提示,如果上面的步骤全部通过将打开考试页面进行考试。流程如图5.2所示。图5.2 用户登录流程图用户登录界面如图5.3所示:图5.3 用户登录界面下面介绍这一部分的详细主要代码:String user = 用户名.getText().trim();String idno = 身份证号.getText().trim();用户名确定 yhqd = new 用户名确定();boolean userpd = yhqd.quedinguser(user, yhlj);/判断用户名是否正确身份证号确定 idqd = new 身份证号确定(

30、);boolean idnoqd = idqd.quedingidno(idno, yhlj);/判断身份证号是否正确身份证号判断 pdno = new 身份证号判断();boolean pda = pdno.pd(idno);/判断身份证号是否为数字判断考试类型 pdkslx = new 判断考试类型();String kslx = pdkslx.quleixing(user);String lxjg = String.valueOf(kl);int u = user.length();int io = idno.length();if (u = 0 | io = 0) JOptionPan

31、e.showMessageDialog(rootPane, 请输入用户名或者身份证号!,错误!, 出错了!, this.HIDE_ON_CLOSE); else if (pda = false) JOptionPane.showMessageDialog(rootPane, 身份证号必须为数字,请核对后再试!, 出错了!, this.HIDE_ON_CLOSE); else int bijiao = pareTo(kslx); if (userpd = false | idnoqd = false) JOptionPane.showMessageDialog(rootPane, 用户不存在,请

32、核对后再试!, 出错了!, this.HIDE_ON_CLOSE); else if (bijiao != 0) JOptionPane.showMessageDialog(rootPane, 考试车型不对,请核对后再试!, 出错了!, this.HIDE_ON_CLOSE); else if (dlxz = 0) /考试了类行为0时,其他情况类似 提示时间到 tssjd = new 提示时间到(); tssjd.tikugeshu = qcsj.tikugeshu; xxcts.tikugeshu = qcsj.tikugeshu; qcsj.kaoshileixing = kl; qcsj

33、.yonghu = user; qcsj.setVisible(true); this.setVisible(false); 5.1.3 用户添加模块这个模块是用户进行添加用户的,该模块首先进行添加部分的审查;然后进行添加。先从界面获取用户名和身份证号,然后在用户文件中进行检查查看所输入的用户名是否存在;如果存在则弹出提示框提示,如果不存在就说明可以添加到文件;下一步是进行检查两次身份证号是否一致,如果不一致将进行错误提示,一致进行下一步审查身份证是否为18位,如果为18位,查看表示生日月份的两位是否超出12;以上的步骤都审查合格后将会将用户名、密码、即考试车型添加到文件中。详细流程如图5.4

34、所示。图5.4 用户创建流程图用户注册的界面如图5.5所示图5.5 用户注册界面下面对该部分的代码进行详细介绍:用户名确定 yhmqd = new 用户名确定();身份证号判断 pdid = new 身份证号判断();创建用户 cjyh = new 创建用户();String users = user.getText().trim();String idnol = idno.getText().trim();boolean jj = yhmqd.quedinguser(users,yhlj);int idlenth = idnol.length();char idpd = new char2;

35、/用来保存身份证号表示年的两位idnol.getChars(10, 12, idpd, 0);String mm = String.valueOf(idpd);int idbijiao = pareTo(12);if (jj = true) /判断是否已有该用户名 JOptionPane.showMessageDialog(rootPane, 已经有该用户了,请换一个用户名再试!, 出错了!, this.HIDE_ON_CLOSE);user.setText(); else String id = idno.getText().trim(); String csid = chongshuidn

36、o.getText().trim(); int bj = pareTo(csid); if (bj != 0) /判断两次的身份证号是否相同 JOptionPane.showMessageDialog(rootPane, 两次的身份证号不同,请确认后再试!, 出错了!, this.HIDE_ON_CLOSE); else if (idlenth != 18) /判断身份证号是否为18位 OptionPane.showMessageDialog(rootPane, 身份证号必须为18位,请核对后再试!, 出错了!, this.HIDE_ON_CLOSE); else boolean zz = p

37、did.pd(id);/判断身份证号是否为数字 if (zz = false) JOptionPane.showMessageDialog(rootPane, 身份证号必须为数字,请核对后再试!, 出错了!, this.HIDE_ON_CLOSE); else if (idbijiao 0) JOptionPane.showMessageDialog(rootPane, 该身份证号不存在,请核对后再试!, 出错了!, this.HIDE_ON_CLOSE); else cjyh.cunchu(users, id, leixing,yhlj); JOptionPane.showMessageDi

38、alog(rootPane, 用户已添加成功!, 恭喜了!, this.HIDE_ON_CLOSE); 5.2 考试模块考试模块是本软件的核心,本软件核心的内容就是考试,该软件设置了随机考试、顺序考试及错题考试,现在着重介绍随机考试模块。5.2.1 随机考试模块这个模块的主要工作过程是这样的,先进行模式判断是“先选择后判断”还是“随机考试”模式,这两个过程基本相似,我就介绍其中的一个过程,重点介绍一下“先选择后判断”模式,情况是这样的:先看一下是否为默认,如果为默认将全部题目按照“先选择后判断”的顺序从题目文件中抽取题题号加载到软件中;如果不为默认就按照所设置的参数进行抽取题目,将1-7章的内

39、容按照“先选择后判断”的顺序添加到题库,然后在进行判断考试类型;如果考试类型为1的话将货车专用题目按照“先选择后判断”的顺序加载到软件中;如果考试类型为2的话将客车专用题目按照“先选择后判断”的顺序加载到软件中;如果考试类型为3的话将轮式车专用题目按照“先选择后判断”的顺序加载到软件中。将题目添加到软件后,进行显示,如果为选择题则将题目选项图片等显示出来,如果为判断题则将题目和图片显示出来,流程如图5.6所示。图5.6 随机出题考试流程图如图5.7考试模式的界面:图5.7 考试模式界面下面对考试出题部分的主要代码进行详细介绍:if (zhangjiexuanze = 0) /章节为0时全部随机

40、考试顺序 qbsj = new 全部随机考试顺序();if (moren) /为默认情况时if (kaoshileixing = 1) /车型为1时设置参数 zhang1bili = 0.25; zhang2bili = 0.15; zhang3bili = 0.20; zhang4bili = 0.10; zhang5bili = 0.10; zhang6bili = 0.05; zhang7bili = 0.05; zhang8bili = 0.05; zhangqitabili = 0.05; if (kaoshileixing = 2) /车型为2时设置参数 zhang1bili =

41、0.25; zhang2bili = 0.15; zhang3bili = 0.20; zhang4bili = 0.10; zhang5bili = 0.10; zhang6bili = 0.05; zhang7bili = 0.05; zhang8bili = 0.05; zhangqitabili = 0.05; if (kaoshileixing = 3) /车型为3时设置参数 zhang1bili = 0.25; zhang2bili = 0.15; zhang3bili = 0.20; zhang4bili = 0.10; zhang5bili = 0.10; zhang6bili

42、 = 0.05; zhang7bili = 0.05; zhang8bili = 0.05; zhangqitabili = 0.05; tk = qbsj.全部随试顺序(tklj, kaoshileixing, zhang1bili, zhang2bili, zhang3bili, zhang4bili, zhang5bili, zhang6bili, zhang7bili, zhang8bili, zhangqitabili, xuanzebili); 5.2.2 随机模块随机考试一定要用到随机算法,下面介绍一下我随即抽题的随机算法,这个算法我用到了random()这个产生随机数的方法,这

43、个方法能产生一个0.0-1.0之间的一个随机数字。先建一个int型的数组,这个数组保存传进来的题号,然后用random()方法产生两个随机小数,为了将小数的分布范围分布在0-int型数组的最大长度值之间,我将产生的两个随机小数与数组的长度相乘,这样就会得到小于数组长度值的小数,然后将该小数进行强制转换成int型,最后将两给被处理好的随机数字作为在int型数组的脚标,把数组里的数字进行互换,多次以后这个数组的内容将会被打乱。过程如图5.8所示。图5.8 随机算法流程图下面介绍一下该算法的详细程序代码:int a = new inttimugeshu;int l = a.length; /数组长度

44、a = shunxudezhangjietimu;/交换次数得多少有实际情况而定for (int i = 0; i 3000; i+) int temp = 0; int x = (int) (Math.random() * l); int y = (int) (Math.random() * l); temp = ax;/将1500个数据随即调换 ax = ay; ay = temp;return a;5.2.3 分数统计模块这个模块相对比较简单,作用是对答题结果进行分析,与标准答案进行比对。过程是这样的:先从答案数组中取出答案,并进行从题目文件中读取该题目的正确答案。如果正确将分数加一,否则将答案记录在用户错题文件中,该过程如图5.9所示。图5.9 分数统计流程图现在介绍一下详细的代码:for (int i = 0; i j; i+) if (daanshuzui = 1 | daanshuzui = 2 | daanshuzui = 3 | daanshuzui = 4) dqda = dqxcda.xiaoxingchexuanxiangdaan(tikui, tklj);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1