编辑: yn灬不离不弃灬 | 2014-05-25 |
1 设计要求 设计 GUI 界面的标准化试题训练系统.具体要求如下: ① 使用 Microsoft Excel 工作簿存放标准化试题,形成题库. ② 程序每次从题库随机抽取若干道题目形成一张试卷,用户可以依次做试卷上的题目, 允许用户向前、向后翻阅试卷上的题目. ③ 用户每次做完一个题目必须确定该题目的答案,否则无效. ④ 有计时功能,比如指定一张试卷限用时
15 分钟,时间一到用户再无法答题,提示用 户提交试卷. ⑤ 用户一旦提交试卷,程序将给出试卷的分值. ⑥ 为了达到反复训练的目的,用户提交试卷后可以继续让程序再出一套试卷. 程序运行的参考效果图如图 5.1 所示. 图5.1 标准化试题训练系统 注意 我们按照 MVC-Model View Control(模型,视图,控制器)的设计思想展开程 序的设计和代码的编写.数据模型部分相当于 MVC 中的 Model 角色,视图设计部分给出 的界面部分相当于 MVC 中的 View,视图设计部分给出的事件监视器相当于 MVC 中的 Control. 5.2 数据模型 根据系统设计要求在数据模型部分设计了 Excel 表,编写了有关的类. ? 创建 Excel 工作簿. Java 课程设计 第3版104 ? Problem 类:其实例是一道试题. ? TestPaper 类:其实例是一张试卷. ? GiveTestPaper 接口:封装给出试卷方法. ? RamdomInitTestPaper 类:实现 GiveTestPaper 接口,其实例负责随机从题库抽取题目 给出试卷. ? Teacher 接口:封装阅卷方法. ? TeacherOne 类:实现 Teacher 接口,其实例负责阅卷. 数据模型部分涉及的主要类的 UML 图如图 5.2 所示. 图5.2 主要类的 UML 图1Excel 工作簿 Excel 工作簿在存储数据方面有着广泛的应用(它不是数据库) ,其中的 Sheet 表的结构 和数据库中的表类似.JDBC 没有提供操作 Excel 工作簿的 API.为了操作 Excel 工作簿,需 要额外下载操作 Excel 的API. 1)下载 Excel API 用户可以搜索 Excel API 得到一个 Excel API 的下载地址,比如: http://download.csdn.net/download/sparkthink/4168138 然后将下载的 jexcelapi_2_6_6.zip(版本号及名字略有差异,有些下载网址的下载名称是 jxls-2.3.0)解压缩到本地,则根目录下的 jxl.jar 文件就是操作 Excel 所需要的 API 的JAR 文件(不要解压缩该文件) ,根目录下的其他文件主要是 Excel API 的帮助文档.将jxl.jar 复制 到Java 运行环境的扩展中,即将这个 JAR 文件 jxl.jar 存放在 JDK 安装目录的 \jre\lib\ext 中, 比如 E:\jdk1.8\jre\lib\ext . 在安装 JDK 时还额外有一个 JRE, 比如默认安装在 C:\Program Files (x86)\Java\ jre1.8.0_45 . 将jxl.jar 文件也复制到 C:\Program Files (x86)\Java\ jre1.8.0_45\lib\ext 中. 注意 可以到作者的网盘 http://pan.baidu.com/s/1qYCv0ra 下载 jexcelapi_2_6_6.zip. 2)存储试题的 Sheet 表 在标准化试题训练系统中,按照要求需要使用 Excel 工作簿中的 Sheet 表存储试题,即Excel 工作簿中的 Sheet 表充当题库的角色. Excel 中Sheet 表的结构对代码的编写是十分重要 第5章标准化试题训练系统
105 的,比如列的数目以及顺序,因为后续的某些代码依赖于这些结构,即某些代码会和 Sheet 表的结构形成紧耦合关系,因此,Sheet 表的结构一旦更改,必然引起代码的修改.对Excel 中Sheet 表的结构要求如下: Sheet 表一共
7 列(A、B、C、D、E、F、G) ,各列的取值规则如下(不可再改变其取 值规则) . ? A 列:试题内容.例如 这个标志是何含义? ? B 列:正确答案.试题的正确答案只可以是 A、B、C、D 字母的组合(不区分大小 写) ,例如 B、ABC、C、D. ? C 列:选择项目.例如 A.沿左侧车道掉头 . ? D 列:选择项目.例如 B.该路口不能掉头 . ? E 列:选择项目.例如 C.选择中间车道掉头 . ? F 列:选择项目.例如 D.多股铁路与道路相交 . ? G 列:题目类型.题目的类型只可以是 p x p#图像文件名字 或 x#图像文件 名字 (字母 p、x 不区分大小写) ,例如 x#hello.jpg、p#java001.jpg.类型 p 表示试题 类型是判断题,类型 x 表示试题类型是选择题,类型 p#表示试题类型是判断题并带 有图像,x#表示试题类型是选择题并带有图像. ? Excel 中Sheet 表的第一行不是试题,是试题的说明,说明文字可任意给定. 根据设计要求打开 Microsoft Excel 设计了 Excel 工作簿以及其中的第一张 Sheet 表(在Excel 工作簿中是 Sheet1 表)――交通理论.xls,Sheet1 表结构如图 5.3 所示. 图5.3 Excel 中的 Sheet 表的结构 下载的操作 Excel 表的 API 要求 Excel 工作簿必须是扩展名为.xls 的Excel 文件,因此在 用Microsoft Excel 保存 Excel 工作簿时需要把保存类型选择为 Excel 97-2003 工作簿 (*.xls) . 3)题库与图像管理 需要建立一个名字是 题库 的文件夹,存放 Excel 工作簿,以及名字是 图像管理 的文件夹,存放所需要的图像文件.文件夹的位置需要和程序在同级目录中.比如,程序中 的包名目录是 ch5\gui , ch5\gui 目录的上一层目录是 D:\,那么 题库 文件夹和 图 像管理 文件夹必须存放在 D:\下,即保持和 ch5 是同级. 为了便于软件的管理以及编写,对于不需要图像的试题,程序统一用默认的图像,该默 认图像的名字固定为 havenot.jpg.另外,程序还需要一个名字是 renew.jpg 的图像,当用户重 新选择试卷时用该图像友好地提示用户, 因此必须将 havenot.jpg 和renew.jpg 图像保存到 图 像管理 文件夹中(图像的外观可自己指定) .havenot.jpg 和renew.jpg 图像如图 5.4 所示. Java 课程设计 第3版106 图5.4 havenot.jpg 和renew.jpg