1、基于 JAVA 的动态考试系统的设计与实现摘 要:随着计算机技术的飞速发展,能否利用现代化的技术使得繁重的工作由复杂变简单,是衡量工作效率的一个重要方面。一个完备的考试系统可以使学生及时检测自己的学习效果,从而发现自己的不足之处从而查漏补缺,更好的提高自己的学习效率。动态考题系统中的题目的抽取,试卷提交,成绩的批改均是自动完成的。只要有比较成熟的试题库便可以实现考试的全自动化。动态考题系统的开发适应了新形势的发展要求,是学校考试,辅助教学管理、管理考试以及学生的上机实践等一系列活动的最佳选择。 关键词:动态;考题;窗体 1.系统功能简介 动态考试系统由多个窗体组成,在系统的登录界面可以选择不同
2、类型的用户进行登录,考生身份登录后可进行考试、查分、修改密码等操作。系统管理员登录后有进行添加、编辑、删除用户信息和相关考题等权限。 2.技术简介 2.1 Swing 是 Java 中用户界面开发工具包,主要用于开发 Java 应用程序的用户界面。其工具包里面有很多以 swing 来命名的,如:javax.swing;就 avax.swing.event.等等。在程序设计时首先导入swing 工具包组件,选择相应的界面风格,同时设置顶层容器,在容器中添加相应组件,如:文本框,按钮等等。Swing 主要应用于各种界面中的时间处理,如:动作事件监听,键盘和鼠标事件监听等等。 2.2 mySQL 是
3、目前最流行的关系型数据库管理系统,可搭配 Apache和 PHP 组成良好的开发环境,一般的网站开发均选择这种数据库,因为其关联数据保存在不同的表中,并没有将所有的数据放置在同一个表中,大大提高了速度和灵活性。 系统工程简介 3.预设问题及处理方法 3.1 窗体背景处理 设置背景的方法可实现将指定的图片绘制到窗体面板的容器中,从而设置整个窗体的背景。其主要使用了 Graphic 类将所需图片放至JPanel 面板中,通过设置相应布局调整各组件的位置。 3.2 字符处理类 字符处理类的编写主要是防止对数据库进行读写或查询操作是出现的乱码现象,该类可对乱码字符进行转码。 3.3 时间处理 考试系统
4、需要在主窗口显示倒计时来提醒考生剩余的时间,系统在设计这个方法时采用的是单独线程处理,当倒计时为 0 是强制交卷。该方法的实现主要是获取系统时间与管理员设置的考试时间之间的差,将其作为标签的显示值添加到窗体中。 4.登录窗体 主要有两种身份登录考试系统,一种是学生身份,登录之后直接考试。另一种是管理员身份登录之后进行用户,试题,管理等操作。 4.1 登录身份验证 登录窗体需要编写按照用户名和密码检索的方法,同时为了保护用户信息安全,在数据库中存放的用户密码均采用了 MD5 加密技术。当用户输入时将其密码加密之后再与数据库中的密码相验证。匹配正确则通过登录,否则提示错误。同时设置字段值 0 代表
5、未登录过的用户,1 代表已登录过的用户,以此来判断考生考试与否。若用户名已经使用过,意味着该考生已完成考试,不允许再次考试。 5.考试主窗体 5.1 显示考生姓名 系统将已经完成登录的用户的 ID 号保存在文本文件中。在窗体中通过考生的 ID 号检索出考生姓名并且显示在考试窗体中。 5.2 显示考题 动态考题系统中的每套试题都是随机抽取的,然后将抽取到的试题显示在考试的主窗体中。首先数据表中保存所有的考试题目,编写好检索某一类型试题集合的方法之后,从指定的试题集合中随机抽取一定数目的试题即可。考试窗体中使用了多个选项卡面板功能,实现同一个窗体中有不同的考试题目类型,如考生选择“多选题”选项卡则
6、显示“多选题”的相关试题。 5.3 自动阅卷 当考生考试结束单击“提交试卷”按钮后将实现自动阅卷,并及时将考试成绩显示给考生。在考生解答试题时,系统会将考生的答案保存到相应的集合中,考试结束后程序将通过随即抽取试题数组中的元素匹配考生选择的答案,看是否与答案一致,并通过考试参数表中设置的各题分数来决定考生的分数。 5.4 题目切换 考生解答完成当前题目时,可点击“下一题”按钮来解答下一题。若要完成显示“下一题”的考试题目,需要从保存随即抽取试题编号的数组中获取下一个元素,获取信息将作为窗口组件内容显示出来。当考生单击“上一题”将会显示上一题内容,要想实现上一题功能,需要从书籍抽取试题的数组中获
7、取当前显示试题的前一个元素的值,并用它来查询问题表中的信息,最终将其显示在窗体的组件中。 6.管理员查分功能 6.1 按考生号查询成绩 当用户选择按考生号查询时,需要查询值文本框中输入正确的查询条件,程序此时将调用相应查询分数的方法,并将查询结果显示在窗体中。该方法是通过 SQL 语句循环遍历查询结果集来实现的。 6.2 按考生姓名查询成绩 按姓名查询成绩和按考生号查询方法类似,遍历时对应字段不同,一个是对考生 ID,另一个是对考生姓名来进行遍历。用户将需要查询的姓名输入相应的文本框中,程序调用不同的查询方法将结果显示在窗体中。 7.添加考题 7.1 存储考题 主要采用 List 集合来存储所
8、有考题,在添加考题窗口中不允许用户更改考题编号。所以采用了只读形式显示。 7.2 自动计算考题号 该方法实现主要调用检索数据表中全部数据的方法,获取数据表中最后一条记录的 ID 编号,将次 ID 加 1 即可实现自动计算考题号。 8.修改和删除考题 8.1 修改考题 当用户想修改考题时,单击修改按钮后程序会自动将用户选择的试题 ID 写入相应的文本文件中,再从数据库中提取相应的数据条即检索出相应数据,再将其设置为窗体显示,用户可在窗体界面中修改试题内容,也可以修改答案和备注。 8.2 删除试题 若有需要删除的试题,用户可直接单击删除按钮,产生相应事件,程序会提示用户是否删除试题。确认之后便可删
9、除。 9 总结 绝大多数学校组织一次考试至少要经过五步:出题,考试,人工阅卷,成绩评估和试卷分析,这些工作非常繁琐和极容易出错,同时教师的工作量非常大。因此传统的考试模式注定被新型的计算机技术动态考试程序来替代。动态考题系统的出现正是修正了传统考试的弊端,提高了考试工作效率。 动态考题系统中设计了题目的生成、试卷提交、成绩评估等功能。只要有比较成熟的试题库便可实现考试的全自动化,这样教师只需要精心设计题目并维护好题库,大大减少了教师的工作量。 参考文献 1 埃克尔.Java 编程思想.第 4 版 机械工业出版社.2007 2 赵满来. 可视化 JavaGUI 程序设计第 1 版. 清华大学出版社.2010 3 贺智明,Java EE 企业应用开发技术.第 1 版.北京:清华大学出版社.2012 作者简介 于童(1982) ,女,河南永城,本科,助教,计算机软件方向。