JAVA+SQL离散数学题库管理系统的设计与开发

news2024/11/25 14:42:27

       题库、试卷建设是教学活动的重要组成部分,传统手工编制的试卷经常出现内容雷同、知识点不合理以及笔误、印刷错误等情况。为了实现离散数学题库管理的信息化而开发了离散数学题库管理系统。

      该系统采用C/S 模式,前台采用JAVA(JBuilder2006),后台采用SQLServer2000数据库。本文详细论述了系统总体设计思想、数据库设计以及功能模块设计等。应用软件工程中的瀑布开发模型,开发实现了以下功能:题库的管理与维护、自动生成试卷、手工改动生成试卷、生成WORD试卷和答案。

        离散数学题库管理系统能够实现离散数学题库管理的信息化,规范化和试卷生成的自动化,并且在操作上实现简单、方便、快捷。

1.1 题目的来源及背景

随着生产社会化趋势的扩大、科学技术的进步、人类知识总量的增长速度不断加快、以及市场竞争的日益激烈,使人们对信息的认识产生了根本性的变化。信息被列为与物质、能源并列的人类社会发展的三大资源之一。信息化水平已成为衡量一个国家现代化水平和综合国力的重要标志。我国也正处于改革开放进一步深化的环境下,因此我们应当抓住机遇,充分利用信息,扎实的做好信息管理系统的基础工作,建设开发较为先进的应用系统,加快我国信息化建设的步伐。

邓小平同志指出“教育要面向现代化、面向世界、面向未来”。信息社会的到来已预示着电脑网络会在教育技术现代化中扮演重要角色,在实施教育技术现代化的过程中我们深刻认识到,在教学及考试的过程中应用网络化的手段解决传统的教师出题已经迫在眉睫,系统就是建立在这个基础上才得以全面、健康地发展。

目前,大多数高等院校学生考试仍采用任课教师人工出题的方式,教务管理部门通常要求教师同时出多套试卷,其题量与难度要求相同,且要求近几年试题重复率不超过30%,并且要同时给出答案和评分标准,这样做给教师增加了很大的工作负担,并且若上下届学生的同一门课程由同一教师承担,则难免几届学生用相同几套试卷,很难保证试题的保密性。采用计算机信息管理技术与数据库技术,建立合理出题、公正阅卷和科学评价为一体的试题库管理系统,每次考试前由题库中题目随机生成试卷,则可较好地解决教考分离的问题,体现考试的公正性,也可将广大教师从繁重的命题工作中解放出来。

1.2 研究意义

随着科技发展和社会进步,尤其是计算机大范围的普及,计算机应用逐渐由海量数据处理转向大规模的事务处理和对工作流的管理,这就产生了以台式计算机为核心,以数据库管理系统为开发环境的管理信息系统,以及在大规模的事务处理和对工作流的管理等方面的应用。

教学评价是检验教学设计效果,修订和完善教学设计的一个基本因素。教学评价通过单元测验和最终考试环节来完成。题库、试卷是教育部本科评估的指标和观测点,随着5年一轮的本科教学评估活动的开展,对高等院校试卷的质量提出了更高的要求。采用传统的手工编制试卷方式,容易出现试卷题目与往年雷同、考核的知识点不合理或笔误、印刷错误等现象,也不能适应网络环境下的教学要求。

设计完成的题库管理与试卷自动生成系统的使用对象为教师。教师可以利用系统对不同课程建立题库并进行管理,根据不同的要求自动生成试卷和参考答案,使用系统提供的试卷自动生成功能可以大大提高试卷的质量,减轻教师的工作负担,提高教师的工作效率。

1.3 软件工程瀑布模型介绍

最初发表的软件工程开发过程起源于其他的工程过程。如下图所示,因为该图从一个阶段到另一个阶段逐次下降,这个模型因此以“瀑布模型”命名或软件生命周期模型。

模型中主要的阶段映射为一些基本的开发活动:

  1. 需求分析和定义

通过咨询系统用户建立系统的服务、约束和目标。并对其详细定义从而为系统描述服务。

  1. 系统和软件设计

系统设计过程区分硬件和软件系统的需求。硬件设计是指建立一个总体的系统体系结构。软件设计包括识别和描述一些基本的软件系统的抽象及其之间的关系。

  1. 实现和单元测试

在这个阶段,软件设计是作为一组程序或程序单元实现的。单元测试就是检验每个单元是否符合其描述。

  1. 集成和系统测试

集成单个的程序单元或程序,并对系统整体进行测试以确保其满足需求。在测试之后,软件系统交付给客户使用。

  1. 运行和维护

正常情况下(虽然不是必须的),这是一个具有最长生命周期的阶段。系统被安装并且进入实际的使用中。维护包括改正在早期各阶段未被发现的错误,改善系统单元的实现,当新的需求出现时提高系统的服务能力。

原则上,每个阶段的结果是一个或多个经过核准的文件。直到上一个阶段完成,下一阶段才能启动。在实际的过程中,这些阶段经常是重叠和彼此间有信息交换的。在设计阶段,需求中的问题被发现;在编程阶段,设计问题被发现,以此类推。软件过程不是一个简单的线性模型,它包括开发活动的多个反复。

第2章  需求分析

开发软件首先做的是开发过程中最主要的就是系统的需求分析,需求分析同时也是软件生存周期中关键的一步。根据软件工程学中开发软件的要求,对离散数学题库管理系统全部功能和相关的技术进行具体的分析,分析时采用结构化的分析方法,自顶向下、逐层分解问题。

2.1  项目内容及要求

根据此次项目的要求,主要完成对离散数学题库管理系统的设计。

2.1.1 具体完成功能

本系统具体完成的功能如下:

1)题库的管理与维护:新题的录入,修改,删除等功能。

2)生成试卷:包括自动生成与手工改动,要求可以对生成的试卷进行打印和WORD排版,并且对生成的试卷能自动生成其参考答案。

其次还应考虑到试题的实际应用性,如:题目的覆盖率,雷同度,难度系数及近三年内不能重题等问题。

2.1.2 实现目标

该系统具有较好的现实意义,特别是计算机发展迅速的今天,实现了由传统的手工化管理向信息化管理,充分的利用了计算机的强大计算能力。该系统界面美观、操作方便、简捷,对于没有操作经验的人员根据系统的提示也能很快的熟悉操作该系统。该系统具有实用性和通用性。

2.2 可行性分析

可行性分析是研究技术领域的经济问题和经济规律的科学,是研究一定技术条件下如何提高经济效果的科学,是技术与经济的交叉。其主要研究技术的经济效果问题,技术与经济的最佳组合问题。

2.2.1 经济可行性

由于该软件是一个小型的离散数学题库管理系统,所以进行该软件的开发经费和投资较少,只需一台普通的计算机即可,系统的开发并不太复杂和繁琐,操作尽可能简单易行。在开发过程中,由一个人独立开发,用时三个月左右,所需成本费用主要为人工费用,再加上计算机和软件等构成该系统的开发成本。

经济上的合理性:在系统开发上,现在普通的计算机市场价4000元左右,操作系统是Windows XP加上Microsoft Office其正版软件也不过5000元,数据库采用SQL Server2000,前端采用JBuilder2006。开发人员1名(假设月薪1500),开发本软件如果是网络开发的技术人员最多1个月,开发费用合计大概是10000元左右,且计算机和软件可重复使用。选择自行开发系统,既节省了费用,又可以使本软件符合我们自己的要求并拥有及源码,使以后系统的可扩展性也很大。

2.2.2 技术可行性

由于该系统是小型的离散数学题库管理系统,采用C/S模式,开发难度适中。通过对各种开发工具和数据库之间进行比较以及指导老师的建议,最终确定采用JAVA(Jbuilder2006)。数据库方面则选用了SQL Server2000进行设计。

C/S是指:客户/服务器。其主要由客户机、服务器、网络三要素主成。用户在个人机(客户机)上工作,可以与中心计算机(服务器)互相通信。网络软件则保证客户机和服务器互相连通。C/S结构的最大优点是具有强大的使用和处理数据的能力,它将数据处理任务分开在客户端和数据库服务器上进行,有利于充分利用网络的计算资源,该操作还大大减少了网络的传输量,从客户发往数据库服务器的只是查询请求,从数据库传回的只是查询的结果。以简单的两层客户机/服务器系统而言,客户端是指应用软件以图形接口显示数据并让用户进行添加、修改等并行输入输出作业的部分,也就是用户接口负责向后端的数据库索取数据,执行客户端软件的工作。服务器所执行的后端数据库服务器,则专门执行数据的存储、检索、管理、备份等种种关键操作。C/S体系结构图如图2.1。

 

数据库的设计是以关系型数据库理论作为指导,将数据库建立在服务器上,应用程序则运行在客户机/服务器体系结构中的客户机上。

关于JAVA生成WORD文件的技术,虽然Sun公司的JDK开发包中本身没有提供该功能,但是可以利用JACOB开源类库实现。JACOB是一个JAVA到微软的COM接口的桥梁。使用JACOB允许任何JVM访问COM对象,从而使JAVA应用程序能够调用COM对象。可以利用它对MS Word、Excel进行处理,目前最新公开版本是1.10.1。

以上的这些技术已经较为成熟,并且在诸多的领域中得到了有效的验证。有了这样的技术支持,也为离散数学题库管理系统开发的最终成功奠定了坚实的基础。

2.3 开发工具的论述

本软件为离散数学题库管理系统,是C/S模式的信息管理系统。前台采用JAVA技术, 后台采用SQL Server 2000数据库, 操作系统采用Windows XP。

2.3.1 前台开发工具

Java是一个由Sun公司开发而成的新一代编程语言。使用它可在各式各样不同种机器、不同种操作平台的网络环境中开发软件。不论你使用的是哪一种WWW浏览器,哪一种计算机,哪一种操作系统,只要WWW浏览器上面注明了“支持Java”,你就可以看到生动的主页。Java正在逐步成为Internet应用的主要开发语言。它彻底改变了应用软件的开发模式,带来了自PC机以来又一次技术革命,为迅速发展的信息世界增添了新的活力。

JBuilder2006企业版是Borland公司最新推出的JAVA集成开发环境。通过可视化的开发工具,使得EJB,Web Service, XML和数据库应用程序的开发更加简单,方便,大大提高了开发人员的效率。比以前更快地在支持J2EE,Web Applications, EJB的单元测试工具的支持下,使用灵活的开发方法开发软件。使用改进的编辑器增加了产生力和代码可靠性,还有Hot Swap调试和改善的性能。

2.3.2 后台数据库

SQL Server 2000数据库逐渐成为Windows操作系统平台下进行数据库应用开发中较为理想的选择之一。SQL Server 2000数据库管理系统是目前最常用的关系型数据库系统之一,它是基于客户机/服务器模式下的数据库,扮演着后端数据库的角色,它对中等规模的数据库支持较好且具有强大的功能和稳定性及易于维护等优点。它具有真正的客户机/服务器体系结构,能与WINDOWS 2000 操作系统有机的结合,在目前的数据库开发中被广泛的应用。

第3章  系统结构特性设计

本章主要介绍离散数学题库管理软件中后台数据库的结构设计。数据库结构设计是继需求分析和确定开发工具后的重要阶段,是管理型软件开发设计的核心和重要组成部分。数据库结构设计的好坏与否将对应用系统的运行效率以及实现的效果产生很大影响。科学、合理的数据库结构设计可以提高数据访问的速度,有效保持数据的完整性、一致性和共享性,因此数据库结构设计对系统设计来说至关重要。

3.1  数据库概念模型

根据系统的设计要求,设计了E-R图,实体为教师、课程、题库和试卷,关系为试卷抽题表。

教师实体包含了教师编号、密码、教师姓名、住址、电话、手机、EMAIL、学历、职称和备注等属性。

 

 

 

3.2  数据库逻辑设计

在管理系统中,后台数据存储的地位相当重要合理的设计能缩减软件开发的周期和降低开发难度,并提高维护升级的可行性。而建立数据库最重要的一步是定义数据库表,数据是数据库中存储的基本对象,通过设计会以一定的组织结构存储在相关的基本表中。将基本信息分类、统计,根据数据库设计的基本原理,建立基本表构成数据库。在进行数据库的需求分析时,不但要考虑到软件系统当前要实现的功能,更要注重软件的可维护性和扩展性。

首先将离散数学题库管理系统的数据库概念结构转化为SQL Server2000数据库系统所支持的实际数据模型,即:数据库的逻辑结构。创建离散数学题库管理系统中的各个数据库表。

字段名

字段类型

字段长度

说明

教师编号

VARCHAR

20

关键字,如:001

密码

VARCHAR

10

密码

教师姓名

VARCHAR

20

教师姓名

住址

VARCHAR

200

可以输入英文字符200,但是汉字只能输入100个

电话

VARCHAR

15

电话

手机

VARCHAR

15

手机

EMAIL

VARCHAR

40

EMAIL

学历

VARCHAR

10

学历

职称

VARCHAR

10

职称

备注

TEXT

16

备注

表3.1  教师数据库表

教师数据库表:用来记录教师的基本信息。该表的关键字字段是:教师编号。教师编号字段同时也是下面课程数据库表和试卷表的外键。

字段名

字段类型

字段长度

说明

课程编号

INT

4

关键字

课程名

VARCHAR

30

如:离散数学

任课教师

VARCHAR

20

外键,对应教师表的教师编号字段

备注

TEXT

16

备注

表3.2 课程数据库表

课程数据库表:用来记录课程的基本信息,可用于存储多个课程,用于系统的扩展。该表的关键字字段是:课程编号,同时也是下面题库数据库表和试卷数据库表的外键。该表中的任课教师字段是外键,对应教师表的教师编号字段,表示该课程的任课教师。

字段名

字段类型

字段长度

说明

题号

INT

4

关键字

课程编号

INT

4

外键,对应课程表的课程编号字段

所属章节

VARCHAR

100

此题所属课程的章节,比如第二章第三节,就是“2-3”

试题内容

TEXT

16

包括试题内容和四个选项内容

正确答案

TEXT

16

正确答案

分值

INT

4

题目的分数

题型

VARCHAR

200

选择题、填空题、简答题、计算题、证明题、其它

难度系数

DECIMAL

5

以往考试中该题答错人数 除以 总人数 得到的值,初次设置时根据教师的经验手动设置

录入日期

DATETIME

8

录入日期

备注

TEXT

16

备注

表3.3  题库数据库表

题库数据库表:用来记录各门课程所对应的试题,是生成试卷提供试题来源。该表的关键字字段是:题号,用来唯一表示一道题目。该表中的课程编号是外键,对应课程数据库表的课程编号,表示该题目对应的是哪门课程。

字段名

字段类型

字段长度

说明

试卷编号

INT

4

主键

试卷名称

VARCHAR

200

试卷名称

课程编号

INT

4

外键,对应课程表的课程编号字段

考试类型

VARCHAR

20

单元测试、期中考试、期末考试以及补考等类型

出题教师号

VARCHAR

200

一人或多人
出题人默认为当前生成试卷的操作员的号。多人情况时,教师的编号如:1,2,3 表示 由1号和2号和3号老师同时出题

试卷总分

INT

4

用户设定的试卷总分

组卷时间

DATETIME

8

组卷时间

备注

TEXT

16

备注

表3.4 试卷数据库表

试卷数据库表:记录了试卷的基本信息,用于生成试卷的标题。该表的主键字段是:试卷编号。该表中的课程编号是外键,对应课程数据库表的课程编号,表示该试卷对应的是哪门课程。

字段名

字段类型

字段长度

说明

试卷编号

INT

4

主键,同时也是外键,对应试卷表的试卷编号字段。

题目编号

INT

4

主键,同时也是外键,对应题库表中的题号字段。

备注

TEXT

16

备注

表3.5 试卷抽题表数据库表

试卷抽题表:用来记录每张试卷对应的试题,是生成WORD文件的数据来源。该表的主键字段是:试卷编号和题目编号。这两个字段同时也是外键,分别对应试卷表的试卷编号字段和题库表中的题号字段。

第4章  系统行为特性设计

4.1 软件结构设计

本系统共分3个大功能模块。如图:

上图即为总体的功能模块图,它清晰的显示了系统的各个模块的分布。教师登陆模块是用来验证用户是否为系统的合法用户,题库的管理与维护模块完成对题目的录入、删除、修改和查询。生成试卷模块完成根据用户输入的生成试卷要求,自动生成试卷,维护已经生成的试卷和生成WORD试卷和参考答案。

4.2功能子模块设计

下面将详细描述每个子模块的详细设计。

4.2.1 教师登录模块

(1) 界面设计

此界面为教师登录界面,在用户登录时检查用户名和密码是否有填写,如果未填写则提示并返回,检查通过之后把数据提交给服务器,打开数据库检查用户填写的信息是否正确,登录名称、密码是否相符合,若符合管理员登录信息则登录成功,进入主界面。此模块用于验证用户的信息,保证了系统内部资料的安全性。

 (2) 模块内主要算法的描述

(3) 该模块的JAVA类设计

实现该模块的JAVA类为:ui.LoginFrame和app.DBAccess类

ui.LoginFrame类:

该类用于显示教师登陆窗口,并且负责判断用户输入的用户名密码是否正确。

主要方法介绍:

okButton_actionPerformed(ActionEvent e):该方法在用户点击确定按钮时被调用,取得界面上输入的用户名和密码,如果用户名或者密码不正确,则提示用户重新输入。若用户为系统合法用户,则允许用户登陆系统,打开系统主界面。

app.DBAccess类:

该类为底层数据库操作类。实现基本的数据库操作,如插入,删除,修改。

主要方法介绍:

getConnection():用于返回一个JDBC数据库连接(Connection)对象。

executeUpdate(Connection conn, String sql):执行insert、delete和update语句。对数据库表进行插入删除和更新。

executeQuery(Connection dbCon, String querySQL ):根据给定的sql语句,进行查询,返回 DefaultTableModel对象。

4.2.2 题库的管理与维护模块

(1) 界面设计

此界面是题库的维护界面,是对试题的基本信息进行录入,删除和更改。

若要添加试题,先点击添加按钮,然后在上面的试题信息部分填入试题的内容,填写好后,点击保存按钮即可将试题保存到数据库。若要修改试题,在下面的表格中选择要修改的试题,修改上面的试题内容,然后点击保存按钮即可将修改后的试题保存到数据库。若要删除试题,在下面的表格中选择要删除的试题,然后点击删除按钮,如果确认删除,系统将会把指定的试题删除。

 

(2) 模块内主要算法的描述

 

(3) 该模块的JAVA类设计

实现该模块的JAVA类为:ui.AddTestDialog类和app.TestLibraryHandler类

ui.AddTestDialog类:

该类负责显示题库维护窗口和响应用户的各种操作。

主要方法介绍:

addjButton2_actionPerformed(ActionEvent e):该方法用于处理添加试题请求。首先将题库记录集(QueryDataSet)移动到最后一行,然后插入一条新记录。

deletejButton2_actionPerformed(ActionEvent e):该方法用于处理删除试题请求。内部实现时首先判断用户是否选中了一条记录,若没有选中则不能删除试题,提示错误消息。然后询问用户是否确认删除,若确认删除则删除选中的试题。

savejButton1_actionPerformed(ActionEvent e):该方法用于处理保存数据请求,当用户修改或者插入了一条数据后,需要点击保存按钮,也就是调用该方法,插入或者修改结果才能插入到数据库中。

app.TestLibraryHandler类:

该类主要用于处理添加试题相关的数据库操作,与界面类一起实现题库的维护和查询功能。

主要方法介绍:

String[] getAllCourseNames():该方法用于返回课程表的所有课程名,这个方法在添加试题和查询试题窗口中被使用。

addCourseNameItems( JComboBox courseNamejdbComboBox1 ):该方法用于给课程名称控件添加课程名称项。在显示添加试题和查询试题窗口时,需要先调用这个方法,将所有的课程名添加到课程名下拉框中。

getCourseIdByName( String courseName ):该方法用于根据课程名取得课程编号,在添加试题到数据库中时被调用。因为用户操作界面上输入的是课程名,而题库数据库表中保存的是课程编号,所以需要调用该方法进行转换。

4.2.3 试题查询模块

(1) 界面设计

此界面是试题的查询界面,该功能允许用户试题的查询条件,进行查询试题操作。该功能可用于手工改动现有试卷模块。

 

 (2) 模块内主要算法的描述

(3) 该模块的JAVA类设计

实现该模块的JAVA类为:ui.QueryTestDialog类

ui.QueryTestDialog

该类用于实现查询已有题目功能,负责显示查询试卷对话框。

主要方法介绍:

okjButton1_actionPerformed(ActionEvent e):该方法在提交查询按钮被点击时被调用。内部实现时,首先取得所有用户输入的查询条件,生成查询用的SQL语句。然后利用JBuilder自带的DbExpress类库中的QueryDataSet类实现用户的查询操作。

4.2.4 自动生成试卷模块

(1) 界面设计

此界面是自动生成试卷界面。教师在上面输入试卷的基本信息,在下面抽取试题选项中设置试题要抽取的章节,题型,与往年试卷雷同度的最大值,平均难度系数的最大值。

其中雷同度的计算方法为:两张试卷相同的题目的数量*2 / 两张试卷总的题目数。平均难度系数的计算方法为:所有试题的难度系数的和 / 试题的总数。

 

(2) 模块内主要算法的描述

 

该模块为系统的核心业务模块,考虑了三年内不能出现重复的题目,与往年试卷的雷同度和试卷的平均难度。首先,统计今年,去年,和前年的试卷中包含的题目题号,这些题目号将不能用于这次的试题抽取(三年内不能出现重复的题目)。然后根据上步的结果、选中的课程名、设置的题型和章节选项执行查询,先按照章节排序,再按照题型排序,查询出的试题可以用于此次试卷的生成。

然后按照设定的试卷总分进行循环,当抽取试题的总分不大于设定的总分,并且仍有题目可抽取时,根据查询结果的数量,生成一个随机数,抽取一道题目加到已抽取试题列表中,将该试题的分数累加到抽取试题的总分上,将该试题从待抽取列表中去掉。这样循环下去,当退出循环的时候,已抽取试题列表中已经包含了一些题目,满足了试卷总分设定要求。

然后按照设定的最大雷同度进行循环,首先将已抽取试题列表中的试题题号与往年试卷中的题号相比较,计算出雷同度,找出往年试卷中雷同度最高的试卷。判断雷同度是否超过设定值,若超过设定值,并且仍有试题可抽取,则去掉一道与雷同度最高试卷中的雷同试题,另外抽取一道与去掉的题目题型相同并且在雷同度最高试卷中没有的题目。这样循环下去,当退出循环的时候,已抽取试题列表中的题目即会满足试卷最大雷同度设定要求,或者由于题库中试题有限,待抽取试题列表已经没有试题了。

然后按照设定的最大平均难度系数进行循环,首先计算已生成试卷的平均难度,若难度超过设定值,并且仍有试题可抽取,则去掉一道难度超过平均值的题目,抽取另一道同类型题目。这样循环下去,当退出循环的时候,已抽取试题列表中的题目即会满足试卷最大平均难度系数设定要求,或者由于题库中试题有限,待抽取试题列表已经没有试题了。

(3) 该模块的JAVA类设计

实现该模块的JAVA类为:ui.GeneratePaperDialog类,app. MsWordHandler类和app. TestPaperHandler类

ui.GeneratePaperDialog类:

该类用于实现自动生成试卷功能,并且负责显示自动生成试卷对话框。

主要方法介绍:

initUnitTree(Connection connection):该方法用于初始化表示章节的树(查询出题库表的所有章节,按照章节顺序显示),在自动生成试卷对话框初始化的时候会调用该方法,将界面中的章节树初始化(填充章节的信息)。

addUnitButton_actionPerformed(ActionEvent e):该方法用于将左侧章节树中选择的章节添加到界面右侧的章节选择列表中。右侧的章节选择列表是指最后生成的试卷涵盖的章节列表。

deleteUnitButton_actionPerformed(ActionEvent e):该方法用于将用户在右侧的章节选择列表中选择的项删除。

genPaperButton_actionPerformed(ActionEvent e):该方法用于根据界面上输入的生成试卷条件和试卷基本信息,自动生成试卷,并且将试题和参考答案输出到WORD文件中。

app. MsWordHandler类:

该类是操作WORD文件的类,包含WORD文件的基本操作方法。

主要方法介绍:

MsWordHandler():构造函数。初始化 WORD应用程序,新建一个WORD文档。

insertParagraph(...):向WORD中添加一个新的段落。该方法有5个参数,分别为aParagraph,表示段落的内容;fontName表示段落的字体;isBold表示是否设定为黑体;isItalic表示是否设定为斜体;fontSize表示字体的大小。

该类还有其他一些方法,比如添加试卷的标题,添加一道大题,添加一道题目等方法,这些方法都通过调用insertParagraph(...)方法实现。在这里就不仔细讲解了。

app. TestPaperHandler类:

该类将已抽取的试题列表生成WORD文档。

主要方法介绍:

genWordPaper(...):根据抽取的试题,生成WORD文件。该方法共有4个参数,selectedTestItems表示已抽取的试题列表;paperTitle表示试卷标题;courseName表示课程名称;testStyle表示测试类型。该方法的具体实现:首先弹出保存文件框,让用户选择保存位置;然后计算出已抽取的试题的总分,用于WORD文件输出;然后利用循环,将选择的题目输出到WORD文件中。

addSpecifiedTestToWord(...):将指定的题型的题目添加到 WORD 文件中。调用MsWordHandler类具体实现。

addSpecifiedAnswerToWord(...):将指定的题型的题目答案添加到 WORD文件中。调用MsWordHandler类具体实现。

4.2.5 手工改动现有试卷模块

(1) 界面设计

此界面是手工改动现有试卷界面,在该界面中可以对试卷的基本信息进行修改,同时也可以打开试题查询界面,将试题手动添加到选中的试卷中。

 

(2)模块内主要算法的描述

 

(3) 该模块的JAVA类设计

实现该模块的JAVA类为:ui. MaintainPaperDialog类

ui. MaintainPaperDialog类:

该类实现对已生成试卷进行维护的功能,负责显示维护已生成试卷对话框。

主要方法介绍:

deleteButton_actionPerformed(ActionEvent e):该方法用于从试卷中删除一道题,实现对试卷中题目的手工删除。

addButton_actionPerformed(ActionEvent e):该方法用于添加一道题到试卷中,实现对试卷中题目的手工添加。内部实现时首先打开查询试题界面,查询到想要的试题后,点击界面上的“添加该试题”按钮,即可将试题添加到试卷中。

saveButton_actionPerformed(ActionEvent e):该方法用于保存试卷的基本信息。

genWordPaperButton_actionPerformed(ActionEvent e):该方法用于将选中的试卷生成WORD试卷文件。

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/429562.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面试官:自动化测试都没弄明白,你怎么敢来面试的?

最近看了很多简历,很多候选人年限不小,但是做的都是一些非常传统的项目,想着也不能通过简历就直接否定一个人,何况现在大环境越来 越难,大家找工作也不容易,于是就打算见一见。 在沟通中发现,由…

全国青少年信息素养大赛图形化编程初赛·模拟二卷,含答案解析

全国青少年电子信息智能创新大赛 图形化编程选做题模拟二卷 一、单选题 1. 下图中的程序执行一次之后,“我的变量”最终的值是?( ) A、0或者1 B、true或者false C、包含或者不包含 D、成立或者不成立

纯虚函数和抽象类

什么时候使用纯虚函数: 某些类,在现实角度和项目实现角度,都不需要实例化(不需要创建它的对象),这个类中定义的某些成员函数,只是为了提供一个形式上的借口,准备让子类来做具体化的实现,此时,这个方法就可以定义为"纯虚函数",包含纯虚函数的类,就称为抽象类. 纯虚函…

token详解

token详解前言什么是token?为什么要使用token?那么如何使用token呢?使用Token进行身份验证和授权的过程具体步骤项目上如何运用的tokentoken过期了什么办?总结升华前言 本篇博客主要从什么是token?为什么要使用token&…

C++ 图系列之基于有向无环图的拓扑排序算法

1. 前言 有向无环图,字面而言,指图中不存在环(回路),意味着从任一顶点出发都不可能回到顶点本身。有向无环图也称为 DAG(Directed Acycline Graph)。 有向无环图可用来描述顶点之间的依赖关系,依赖这个概…

MLX90640 热成像 STM32

点击此处了解详情点击此处了解详情点击此处了解详情点击此处了解详情点击此处了解详情 1、描述 这是一款手持式多功能热像仪,小巧轻便,搭载3.2英寸TFT显示屏、MLX90640热红外探头,锂电池供电,可以在各种场合使用,温度…

( “树” 之 DFS) 572. 另一棵树的子树 ——【Leetcode每日一题】

572. 另一棵树的子树 给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。 二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tr…

Densely Connected Convolutional Networks(引言翻译(有选择性))

翻译得有可能会不太专业,望见谅的同时,如果有些地方翻译错了,欢迎批评指正! as information about the input or gradient passes through many layers, it can vanish and "wash out" by the time it reaches the end …

淄博烧烤、洛阳汉服......爆火,揭秘实体店客流爆满的秘诀!

淄博烧烤、云南泼水、洛阳穿越...... 沉寂了3年后,线下实体消费终于又开始火热起来,临近五一小长假,国内外旅游订单出现井喷式增长,线下消费持续迎来新一轮的高峰。 而这些热点,也带动了周边很多相关的实体店&#xff…

美团外卖平台的部分外卖 SPU数据实操练习

一、环境要求 Hadoop hive spark hbase开发环境 开启hadoop:start-all.sh开启zookeeper:zkServer.sh start开启hive:nohup hive --service metastore &nohup hive --service hiveserver2 & 打开hive界面:beeline -u j…

Ubuntu16.04安装NCNN和Opencv

一、安装NCNN 官网:NCNN官方文档 On Debian, Ubuntu or Raspberry Pi OS, you can install all required dependencies using: 首先安装NCNN的依赖项,根据官网安装以下依赖项。 sudo apt install build-essential git cmake libprotobuf-dev protobuf-…

dc-4靶机渗透

1.信息搜集,扫描存活主机,扫描端口,服务,发现开放80,22端口,cms没有看到 nmap 192.168.85.0/24 nmap -p1-66535 192.168.85.175 nmap -sv 192.168.85.1752.访问网站,发现登录框,根据提示&#…

360安全卫士 - 设置技巧 / 关闭广告

360安全卫士 - 设置技巧 / 关闭广告前言同步设置基本设置弹窗设置开机小助手安全防护中心漏洞修复木马查杀功能大全管理360文件夹游戏管家健康助手前言 360安全卫士是一款免费的PC安全软件,拥有垃圾清理、病毒查杀、启动项管理等功能。虽然有一些广告,但…

【Python】python技能树之包含元祖的列表升降序

文章目录前言一、实际操作二、使用步骤总结前言 大家都知道,在Python里面可以使用.sort方法或者sorted函数对各种数据进行排序,例如: 一、实际操作 a [2, 3, 1, 9, 3, 7, 4] a.sort() b [2, 3, 1, 9, 3, 7, 4] c sorted(b, reverseTrue…

Linux中的网络

文章目录一 、查看网络配置1.2 route命令—查看路由条目1.3 1.3hostname命令—查看主机名称1.4netstat命令—查看网络连接情况二 、测试网络连接2.1 ping 命令2.2 traceroute命令—跟踪数据包的路由途径2.3 mtr—动态跟踪网络2.4 nslookup命令—测试域名解析三 、使用网络配置命…

迎难而上,阿里高频考点2023Java岗面试突击手册

上周我接到一位粉丝的私信说目前互联网形势实在对他太不友好,感觉自己每个技术栈都会一点,但不是完全精通。基本二面三面的时候就挂了,已经完全不知道该朝哪个方向努力了,希望可以给他一些建议和方法指导。那么,本次就…

[golang gin框架] 20.Gin 商城项目-商品模块功能

一.商品模块数据表ER图关系分析商品模块数据表相关功能关系见:[golang gin框架] 16.Gin 商城项目-商品模块数据表ER图关系分析二.商品相关界面展示商品列表该商品列表有如下功能1.增加商品按钮:跳转到增加商品页面2.搜索功能:输入商品名称,点击搜索3.修改商品字段(上架,精品,新…

软件测试入门第一步:编写测试报告

什么是测试报告? 1、说明:是指把测试的过程和结果写成文档,对发现的问题和缺陷进行分析,为纠正软件的存在的质量问题提供依据,同时为软件验收和交付打下基础。 ps. 【测试过程和测试结果的分析报告,以及上线…

大爽pygame入门教程 第一节 基础知识 练习提示与答案

作者自我介绍:大爽歌, b站小UP主 ,编程1对1辅导老师 1 逐行展示 思路提示 点击触发 之前的多行展示,是通过循环实现的。 这一回要点击触发一行的展示,不能直接使用循环了。 这里我们往更深层次去思考一下: 之前循环…

【CSS】margin 外边距负值使用案例 ( 正常外边距 | 使用外边距负值实现边框重叠 | 重叠边框突出显示 )

文章目录一、正常外边距案例二、使用外边距负值实现边框重叠三、重叠边框突出显示案例1、使用相对定位2、使用 z-index 设置定位盒子层级一、正常外边距案例 margine 正常情况下使用 , 设置 float 浮动 , 使得相邻的盒子模型紧贴在一起 ; 如果设置边框 , 则相邻的边框会重叠在…