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

上传人:仙*** 文档编号:32642319 上传时间:2021-10-15 格式:DOC 页数:39 大小:1.37MB
返回 下载 相关 举报
毕业设计(论文)基于JAVA的交通规则模拟考试系统_第1页
第1页 / 共39页
毕业设计(论文)基于JAVA的交通规则模拟考试系统_第2页
第2页 / 共39页
毕业设计(论文)基于JAVA的交通规则模拟考试系统_第3页
第3页 / 共39页
点击查看更多>>
资源描述
中北大学2009届毕业设计说明书1 引言随着科技的发展,汽车成为人们生活中不可缺少的组成部分。随着人们生活水平的提高汽车进入千家万户。家庭汽车数量的增加,就会有一部分人去学习汽车驾驶。每年由于不遵守交通规则造成的交通事故的数字相当巨大,因此学习交通规则是其中必要部分,学好交通规则是一个驾驶员的必备条件 1。面对众多参加考试的考生,就须要相应的考试训练软件,因此要制作一个驾驶员模拟考试考软件。让参加考试的考生在考前都能用上与考试软件相似的平台,提前熟悉考试过程与内容,提高考试的通过率。编写这个软件就是为了汽车考试的考生有一个好的练习平台。现如今的交通规则考试是在计算机上用交通考试软件来考试的。当前国内的考试系统还是没有国外发达国家的人性化,现有的人性化交规软件和驾照的其他科目的考试做成了一个3D游戏。这样让考生在复习考试时,在游戏中就能记住相应的法律法规。让考生在复习中得到快乐。我国现有的交规模拟考试系统有一个通病,就是考试的错题文件不能带走,只能在软件上看。这样就很不方便,每次都要使用电脑打开软件时才能复习考试资料。而现这个交规模拟考试系统,就要加上这个功能,每次考生考试提交试卷时都会统计考生的错题,给考生建立错题库。考生可以将错题集拷贝,随时复习。这个交规系统尽量避免国内交规模拟考试系统的死板,能够灵活应用,根据需要更改参数进行模拟,促使考生在真实考试中得到好的成绩。2 开发语言及工具简介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、简称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 Edition,java平台企业版),JavaME(Java 2 Platform Micro Edition,java平台微型版)。Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(Java Enterprise 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对文件的操作是对流的操作过程,流是通过缓冲机制将数据从生产者(如键盘、磁盘文件、内存或其他设备)传送到接受该数据的消费者(如屏幕、文件或者内存等)的这一过程的抽象。处理文件流有一些文件的处理方法。输入输出抽象基类InputStream/OutputStream,实现文件内容操作的基本功能函数read()、write()、close()、skip()等;一般都是创建出其派生类对象(完成指定的特殊功能)来实现文件读写。在文件读写的编程过程中主要应该注意异常处理的技术。FileInputStream/FileOutputStream5:用于本地文件读写(二进制格式读写并且是顺序读写,读和写要分别创建出不同的文件流对象);本地文件读写编程的基本过程为:(1)生成文件流对象(对文件读操作时应该为FileInputStream类,而文件写应该为FileOutputStream类);(2)调用FileInputStream或FileOutputStream类中的功能函数如read()、write(intb)等)读写文件内容;(3)关闭文件(close())。PipedInputStream/PipedOutputStream,用于管道输入输出(将一个程序或一个线程的输出结果直接连接到另一个程序或一个线程的输入端口,实现两者数据直接传送。操作时需要连结);RandomAccessFi类(它直接继承于Object类而非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 development 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高出许多。而专门运行在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),enterpsise 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文件上的Java小程序的Java浏览器。Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。 Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。 Jconsole: Java进行系统调试和监控的工具。(3)常用的package12:java.lang: 这个是系统的基础类,比如String等都是这里面的,这个package是唯一一个可以不用import就可以使用的Package。java.io: 这里面是所有输入输出有关的类,比如文件操作等。: 这里面是与网络有关的类,比如URL,URLConnection等。java.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%libtools.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,可以帮助开发人员编写、编译、调试和部署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是一个为软件开发者而设计的自由、开放的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%。在建立一个大工程时,有较低的内存消耗和更快的响应速度!2.4 文件存储现在有好多的软件的存储都是存到文件里的,比如说一些游戏的关卡,玩游戏人员将游戏进度都是存在一些文件里的,这些文件都是按照规定的格式进行写入存储的。当运行软件系统或者调用的时候进行读取数据14。把文件内的存储信息读到软件中去进行处理恢复到当初存储文件信息时的状态。现在做的软件也是基于文件的存储预处理的基础上的。这种设计最大特点就是:方便、简单、容易操作,不需要复杂的数据库知识也能轻而易举的进行系统的维护与更新15。2.4.1 用户信息文件用户信息文件用来存储用户的登录信息,既用户名、身份证号和考试车型的信息,如表2.1所示。表2.1 用户文件存储格式行 号功 能符号及意义1用户名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高速公路、山区道路等复杂到录下的安全驾驶知识gaosushandaodeng出现爆胎、转向失控、制动失灵等紧急情况时临危处置知识jinjiqingkuang机动车总体结构和主要安全装置常识、日常检查和维护基本知识changjianguzhang发生交通事故后的自救、急救等基础知识等化学品的知识jijiu地方性法规difangfagui货车专用知识huochezhuanyong客车专用知识kechezhuanyong轮式车专用知识lunshichezhuanyong2.4.3 用户错误信息存储文件用户错误信息存储文件的作用是将用户答错的题目进行记录以便以后复习使用,存储文件的存储格式就是将错题题号存储,每行存储一个错题题号。2.4.4 软件运行环境系统具体的硬件配置如下:操作系统:WINDOWS98/2000/XP/2003/Linux 等CPU:INTEL PENTIUM266或更高硬盘:100M或更高显示器:VGA 800*600分辨率内存:32M或更高3 需求分析3.1 需求调查根据调查,目前市场上所存在的交通规则模拟软件,都有一些缺点,有的软件灵活性不是很好,有的软件功能不是很强大。最大的缺点就是收费,在这种前提下,要开发一个包含市场上软件的优点,而且是免费的。能够让广大的驾照考生有一个免费的学习模拟环境。3.2 功能设置(1)考试题库要包含考试的所有知识点和考核点,在考试时,试题要覆盖所有考核点;按照国家机动车驾驶证工作规范规定得比例进行抽取组合。(2)试题均以选择题和判断题的形式给出,以文字叙述和图形的形式显示。(3)考试成绩的等级和考试时间可以由用户修改和设定。(4)考试过程中考生可以自己交卷,也可以时间到自动交卷。(5)交卷后自动给出考生所得分数和及格与否,并将考生答错的试题以及正确答案以及考生的答案显示在屏幕上,供考生参考。(6)可自由练习、按章节、顺序出题、随机出题等。(7)可生成错题集,供强化练习与导出。3.3 可行性分析交通规则考试系统的,题目的生成、试卷的提交、成绩的批阅等都可以交给计算机处理,只要将考试题库放到计算机里就能自动完成。这样一来出题人员只需管理好计算机系统及考试软件就行了,从而大大减轻了出题人员的负担,也减少了财政支出,并且java开发的软件可跨平台,安全性好,维护方便,所以可以看出交规考试系统的开发是可行的15。4 总体设计图4.1 的总体设计图如图4.1所示将整个软件分成三个大部分,每个大部分又分成不同的子模块。4.1 登陆模块登陆模块可分为用户登陆和用户创建子模块。4.1.1 用户登录模块登录时要匹配用户名和密码是否正确,在用户的存储文件中进行搜索查看是否存在相应的用户名,如果存在该用户名则进行身份证号和考试类型的匹配,没有该用户或者匹配不上均会弹出提示。4.1.2 添加用户模块先检测用户名是否存在,如果存在则提示出错;如果不存在就将所输入的用户名、身份证号以及考试类型记录到用户存储文件中。4.2 考试模块此模块分成:模拟考试、顺序考试、错题模式、统计成绩、错题处理等子模块。4.2.1 模拟模式考试模块该模块的功能就是用户在通过了身份验证以后,选择模拟考试模式,该考试模式是按章节出题比例选出一定数量的将选择题和判断题,将选择题和判断题题目分别打乱排序,然后以先选择后判断的模式重新组卷。4.2.2 顺序考试模式模块该模块的功能就是用户在通过了身份验证以后,选择顺序考试模式,该考试模式是按章节出题比例选出一定数量的将选择题和判断题,按照章节抽题的顺序进行组卷。4.2.3 错题模式模块该模块是在用户答完题后,选择该考试模式是按照用户错题文件里的错题题目进行顺序出题进行组卷。4.2.4 统计成绩模块该模块的作用是在用户将题目答完后,自动比对答案,将答对的题目进行记录最后给出所得分数,并判断是否及格,给出成绩。4.2.5 错题存储模块这个模块是在统计成绩的同时保存错误题目的题号,将题号保存在用户错题文件中,并生成HTML文件同时打开该文件,供用户浏览和保存。4.3 管理维护模块该模块是供用户对题目的管理。该模块是进行题目的添加,在题库进行增加时添加新题目。5 详细设计各个模块的作用前面已经介绍完了,下面对我的设计部分模块进行详细设计。5.1 用户模块 5.1.1 用户名确定的过程由下图可以看出这个过程是先设置一个返回变量其值为false,然后创建一个文件输入流,进行文件的打开;然后再建立一个缓冲流用来处理读进来的数据,这样可以把一串数据读进来处理;然后把读进来的数据与输入进来的用户名进行比对,如果成功,那么见返回一个等于0的整数;然后判断这个整数是否等于0,如果等于0则将返回值设为true,否则将进行循环;如到了文件末尾都没找到该记录,则说明该用户名不存在。这个过程如图5.1所示。图5.1 用户名判断流程图下面进行介绍一下核心代码;FileReader in = new FileReader(lujing);/建立文件输入流BufferedReader bin = new BufferedReader(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是非法的,就会进行错误提示;(1)审查所填入的参数:然后检查个章节的出题比例,计算各章节的比例之和,如果各章节的比例之和是大于1的,这种情况是非法的,不符合实际,软件将进行错误提示,进行重新配置各章的比例知道各章比例之和等于1;(2)审查用户:首先,判断用户名和密码是否填入,如果没填入,将进行提示;其次,判断身份证号是否为数字如果为数字则进行下一步审查,如果不是将进行错误提示;再次,把填入的用户名与用户名文件中的用户名进行比对,查看着个用户名是否存在,如果不存在将提示进行更正或进行注册,如果这个用户名存在,再比对这个用户名下的密码是否与输入的一致,如果一致进行下一步;该步骤是进行考试车型的审查,查看该用户所报的车型是否与要考试的车型一致,如果不一致软件将进行错误提示,如果上面的步骤全部通过将打开考试页面进行考试。流程如图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 身份证号确定();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) JOptionPane.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, 用户不存在,请核对后再试!, 出错了!, 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.yonghu = user; qcsj.setVisible(true); this.setVisible(false); 5.1.3 用户添加模块这个模块是用户进行添加用户的,该模块首先进行添加部分的审查;然后进行添加。先从界面获取用户名和身份证号,然后在用户文件中进行检查查看所输入的用户名是否存在;如果存在则弹出提示框提示,如果不存在就说明可以添加到文件;下一步是进行检查两次身份证号是否一致,如果不一致将进行错误提示,一致进行下一步审查身份证是否为18位,如果为18位,查看表示生日月份的两位是否超出12;以上的步骤都审查合格后将会将用户名、密码、即考试车型添加到文件中。详细流程如图5.4所示。图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;/用来保存身份证号表示年的两位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 = chongshuidno.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 = pdid.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.showMessageDialog(rootPane, 用户已添加成功!, 恭喜了!, this.HIDE_ON_CLOSE); 5.2 考试模块考试模块是本软件的核心,本软件核心的内容就是考试,该软件设置了随机考试、顺序考试及错题考试,现在着重介绍随机考试模块。5.2.1 随机考试模块这个模块的主要工作过程是这样的,先进行模式判断是“先选择后判断”还是“随机考试”模式,这两个过程基本相似,我就介绍其中的一个过程,重点介绍一下“先选择后判断”模式,情况是这样的:先看一下是否为默认,如果为默认将全部题目按照“先选择后判断”的顺序从题目文件中抽取题题号加载到软件中;如果不为默认就按照所设置的参数进行抽取题目,将1-7章的内容按照“先选择后判断”的顺序添加到题库,然后在进行判断考试类型;如果考试类型为1的话将货车专用题目按照“先选择后判断”的顺序加载到软件中;如果考试类型为2的话将客车专用题目按照“先选择后判断”的顺序加载到软件中;如果考试类型为3的话将轮式车专用题目按照“先选择后判断”的顺序加载到软件中。将题目添加到软件后,进行显示,如果为选择题则将题目选项图片等显示出来,如果为判断题则将题目和图片显示出来,流程如图5.6所示。图5.6 随机出题考试流程图如图5.7考试模式的界面:图5.7 考试模式界面下面对考试出题部分的主要代码进行详细介绍:if (zhangjiexuanze = 0) /章节为0时全部随机考试顺序 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 = 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 = 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()这个产生随机数的方法,这个方法能产生一个0.0-1.0之间的一个随机数字。先建一个int型的数组,这个数组保存传进来的题号,然后用random()方法产生两个随机小数,为了将小数的分布范围分布在0-int型数组的最大长度值之间,我将产生的两个随机小数与数组的长度相乘,这样就会得到小于数组长度值的小数,然后将该小数进行强制转换成int型,最后将两给被处理好的随机数字作为在int型数组的脚标,把数组里的数字进行互换,多次以后这个数组的内容将会被打乱。过程如图5.8所示。图5.8 随机算法流程图下面介绍一下该算法的详细程序代码:int a = new inttimugeshu;int l = a.length; /数组长度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); else if (daanshuzui = 5 | daanshuzui = 6) dqda = dqpdda.xiaoxingchexuanxiangdaan(tikui, tklj); am = pdzw.defen(daanshuzui, dqda);if (am) defen = defen + 1; zhengcuotijii = 0; else if (daanshuzui != 0) zhengcuotijii = daanshuzui; 5.3 管理模块该模块的功能是为了弥补出现题目缺少的情况,添加题目的过程是这样的,如果选择了图片,先检测图像文件夹是否存所选文件,如果重复的话就会报错提示更改图片名称然后再试,检测通过后,检测是否把文本框都填了如果有没填的就会进行提示填入信息,如果通过了该检测再测是否添加了答案,反之没有添加答案就会弹出提示要求填入答案;然后就会根据选择题型的情况将选择题与判断题分别用两种方法进行添加,以保证添加的正确。如图5.10所示。图5.10 题目添加流程添加界面如图5.11所示:图5.11 添加题目界面下面详细介绍一下实现该界面添加功能的代码:if (filename != null) /判断照片是否重复if (tpml.图片目录判断(ml, filename) JOptionPane.showMessageDialog(rootPane, 图片名称已经存在轻修改后再试!, 错误!, this.HIDE_ON_CLOSE); else if (tmxX != 0 & xxaA != 0 & xxbB != 0 & xxcC != 0 & xxdD != 0) | tnpP != 0) /判断是否填入数据 if (xuanzedaan != null | panduandaan != null) /判断是否选择答案 if (tianjialeixing = 1) /选择题添加 tjxztm.题目(tklj, tianjiadetihao, tmX, xxA, xxB, xxC, xxD, filename, xuanzedaan, zhangjie); if (filename != null) /没有与所填文件重名 tpfz.复制(wzlj, mblj);/复制图片文件 JOptionPane.showMessageDialog(rootPane, 题目添加成功!, 提示!, this.HIDE_ON_CLOSE); if (tianjialeixing = 2) /判断题添加 tjpdtm.题目(tklj, tianjiadetihao, tmP, filename, panduandaan, zhangjie); if (filename != null) tpfz.复制(wzlj, mblj); JOptionPane.showMessageDialog(rootPane, 题目添加成功!, 提示!, this.HIDE_ON_CLOSE); else JOptionPane.showMessageDialog(rootPane, 请选择要添加的答案!, 提示!, this.HIDE_ON_CLOSE); else JOptionPane.showMessageDialog(rootPane, 请添加题目或选项!, 提示!, this.HIDE_ON_CLOSE); 6 测试6.1 测试目标任何开发平台所开发的系统,测试的目标都是确保所开发软件的功能符合用户的要求。具体表现在以下几个方面:(1) 确保系统达到需求功能的说明;(2) 确保系统满足性能的需求;(3) 强度测试确认系统能够处理的负载;(4) 确保系统在要求的硬件和软件平台上工作正常。6.2 测试方法 原则上讲,可以将软件测试方法分成两大类,即静态测试和动态测试。静态测试是对被测试程序进行特性分析的一些方法的总称,这种方法的主要特性是不利用计算机运行被测试的程序,而是采用其他手段达到检测的目的。动态测试是实际运行被测试程序,输入相应的测试用例,判定执行结果是否符合要求,从而检验程序的正确性,可靠性和有效性。动态测试的两种主要方法是黑盒测试和白盒测试。6.3 本软件实际测试下面我进行将软件演示的截图给出来,证明软件能够正常进行。打开软件就会出现如图6.1所示的主界面图6.1 主界面打开主界面后,我们要进行做题点击考试按钮,就会打开用户登录界面这个界面填入相应的参数如图6.2所示。图6.2 用户登录界面可以在用户登录界面填入所需的参数,填入用户名密码,点击确定就会弹出考试界面这个给出的是随机考试的界面,如图6.3所示。图6.3 随机考试界面在考试界面可以进行考试,填入自己所选的答案,可以点击上一题、下一题、第一题、最后一题、进行题目的切换。答题完成点击“交卷”按钮就会进入下图,如图6.4所示。图6.4 确定交卷界面进入确定交卷后点击“交卷”按钮会出现下一个界面,图6.5所示。图6.5 成绩显示界面出现成绩显示界面后点击错题集界面。会出现保存错题集界面,图6.6所示。图6.6 保存错题界面选择好保存路径及名称后点击确定按钮,显示错题集,图6.7所示。图6.7 显示错题集打开存储文件夹可以将错题考走,如图6.8所示。图6.8 错题所在文件夹下面是添加题目的图,添加上所要添加的内容,点击添加按钮,如图6.9所示图6.9 添加题目成功图7 结束语7.1 心得本课题的功能已经基本实现。通过这次毕业设计,自己在java这个软件的应用上又获得了新知。通过这次毕业设计,我的java知识得到了巩固,加深了对java的了解,熟悉掌握了java的使用方法,比较深入的了解了java各个控件的功能和使用方法。通过这次毕业设计,使我认识到光学习书本上的知识是不够的,还要经常进行实践。特别是对应用性很强的计算机专业的学生来说。这次毕业设计是我将理论知识用于实践的一个很好的机会。也通过实践,使我认识到自己对于java很多方面的知识还比较匮乏,还应该努力加强理论的学习,只有理论与实践的结合,才能不断提高自己水平。以后我还要多多参加实践多编一些软件,多参加一些大型项目,加强自己对编程的认识和能力。7.2 存在的不足这个系统是采取文件存储和读取来实现的,没有采用数据库,这可能会给软件的速度造成一些影响。可能会比数据库存取的慢一些。这是软件的不足之处。以后编程时会多考虑这方面的问题。还有Java语言的高深,我还是不是很了解,知识刚刚入门,netbeans这个工具功能相当强大,我也只是肤浅了解,在以后我会加强对java的学习和对netbeans的学习。7.3 总结这个软件是运用java语言作为基础,以netbeans作为开发工具,将界面设计成主页面、登陆页面、考试页面(分为小型车、货车、客车、轮式车)、分数显示界面、关于界面等界面。从功能上分成用户模块、考试模块、管理模块;用户模块用于用户的添加和管理、考试模块用于随机、顺序、错题等考试模式,考试完成后能及时进行评分,保存错题生成错题文件,用户可以将文件拷走,随身携带进行复习。管理模块,是对题目的添加操作,弥补了补充题目的功能。这是本软件的整体功能。参 考 文 献1 陶驷驹. 中华人民共和国机动车驾驶员考试办法. 中华人民共和国公安部令第29号. 1998.62 杨秋翔.计算机文化基础.北京:国防工业出版社,2005.013 瞿中,吴渝等.软件工程.北京:机械工业出版社,2007.034 高文来.计算机应用基础教程.北京:清华大学出版社,2003.02 5 张孝祥. Java就业培训教程. 北京:清华大学出版社,2003.56 BruceEckel 著,陈昊鹏 译.java编程思想. 北京:机器工业出版社,2008.5357 孙卫琴. java面向对象编程. 北京:电子工业出版社,2008.48 刘忠兵. 开发者突击java web. 北京:电子工业出版社,2008.29 张友生.软件体系结构.北京:清华大学出版社,2006.1110 李昌武 . 软件开发技术与应用 . 北京:清华大学出版社,2007.0511 林瑶,胡谷雨,谢希仁.软件工程的新动向.华南金融电脑,1994,06:1512 美Stephen Prata,孙建春,韦强.C+ Primer Plus.北京:人民邮电出版社,2007.0313 耿祥义,张跃平. Java2实用教程.北京:清华大学出版社,2006.1014 王乾坤.软件人性化设计经验谈.电脑知识与技术,2007.14:2215 谭英华.人性化管理.大连:东北财经大学出版社,2006.02致 谢我这次设计,是在梁志剑老师的精心指导下完成的,梁老师给了我很多指导,给我提出了许多设想,来完成并丰富我的软件,没有梁老师的谆谆教导和耐心的指导我是不会把软件弄完善的,在此,我对梁老师表示由衷的感谢!在做毕业设计的过程中,梁老师教给了我很多书本上学习不到的知识,使我开扩了眼界,对软件相关知识更加了解,我非常梁老师的技术指导。我还感谢中北大学给我这次做毕业设计的机会,我在中北大学四年的时光里得到了我在别处得不到的知识。感谢中北大学给了我这么好的学习环境,和四年里对我的教育和培养,是我快速成长。第 39 页 共 39 页
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!