节的信息)。
addUnitButton_actionPerformed(ActionEvente):该方法用于将左侧章节树中选择的章节添加到界面右侧的章节选择列表中。右侧的章节选择列表是指最后生成的试卷涵盖的章节列表。
deleteUnitButton_actionPerformed(ActionEvente):该方法用于将用户在右侧的章节选择列表中选择的项删除。
genPaperButton_actionPerformed(ActionEvente):该方法用于根据界面上输入的生成试卷条件和试卷基本信息,自动生成试卷,并且将试题和参考答案输出到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)界面设计
此界面是手工改动现有试卷界面,在该界面中可以对试卷的基本信息进行修改,同时也可以打开试题查询界面,将试题手动添加到选中的试卷中。
图4.11手工改动现有试卷界面
(2)模块内主要算法的描述
图4.12手工改动现有试卷流程图
(3)该模块的JAVA类设计
实现该模块的JAVA类为:ui.MaintainPaperDialog类
ui.MaintainPaperDialog类:
该类实现对已生成试卷进行维护的功能,负责显示维护已生成试卷对话框。
主要方法介绍:
deleteButton_actionPerformed(ActionEvente):该方法用于从试卷中删除一道题,实现对试卷中题目的手工删除。
addButton_actionPerformed(ActionEvente):该方法用于添加一道题到试卷中,实现对试卷中题目的手工添加。内部实现时首先打开查询试题界面,查询到想要的试题后,点击界面上的"添加该试题"按钮,即可将试题添加到试卷中。
saveButton_actionPerformed(ActionEvente):该方法用于保存试卷的基本信息。
genWordPaperButton_actionPerformed(ActionEvente):该方法用于将选中的试卷生成WORD试卷文件。
第5章系统测试
5.1系统测试方案
在基本完成了程序的详细设计和编码,剩下的工作就是对软件进行测试。软件测试是发现软件中错误和缺陷的主要手段。在一般情况下,软件测试的过程与整个软件开发过程基本上是平行进行的。软件测试是非常重要的因为测试是为了及时发现应用程序中的错误而执行程序的过程,它的目标是暴露程序中的错误,及时发现问题,提出相应的修改方案,及时解决问题,使系统更加完善。
单元测试也称模块测试或程序测试,单元测试是对每个模块单独进行的,验证模块接口与设计说明书是否一致,对模块的所有主要处理路径进行测试且与预期的结构进行对照,还要对所有错误处理路径进行测试。对源码进行审查,对照设计说明书,表态地检查源程序是否符合功能的逻辑要求,是进行单元测试前的重要工作工。单元测试一般是由程序员完成,也称程序调试。
5.2测试结果分析与调试
首先,我对这个毕业设计程序的每个模块和方法都进行了单体测试,由于第一次正式的按照软件工程的开发流程开发一套软件程序,在测试时感触颇深。感叹自己编写的程序在测试环节的时候问题出现之多。其中有些问题很棘手,感到很莫名其妙,但后来经过查阅书籍和相关资料,都依依得到了顺利解决,其中大部分感觉莫名其妙的问题的产生是因为自己对相关技术掌握的不够扎实和细致,同时也感叹到编写出一套商用的软件是多么的不容易。在调试和测试的过程中,在老师和同学的帮助下,在查阅了一些书籍后,慢慢学会了JBuilder2006的调试功能,提高了测试的效率。
下面简单的介绍一下,测试过程中都遇到了哪些典型的问题,以及解决的办法。
从数据库中读出数据后,以Object类型返回,直接调用Object.toString()方法输出该对象的字符串表示。该错误在调试的过程中没有发现,但是在真正测试的时候,JAVA的控制台抛出了NullPointerException,后来查找到原因:因为数据库表中某些字段可以为NULL,所以数据库表中相应的字段可以没有数据,所以返回的Object是null,这样在调用Object.toString()的时候,就发生了空指针异常,后来在调用Object.toString()之前,加了if判断,问题得以解决。
在生成试卷的程序里,需要取得数据库表的结构,刚开始编写了一个方法getResultSetMetaData()返回ResultSetMetaData对象,然后将该参数传递给另外一个方法genPaper(),但在取得字段的名字和类型时,控制台抛出了数据库连接已关闭的异常信息。后来通过查阅资料和书籍,发现在getResultSetMetaData方法里面关闭了数据库连接(Connection),所以出现了该异常,后来将这两个方法合并,问题得到了解决。
在生成试卷的程序里,需要先生成SQL的插入语句,在测试时抛出了SQLException异常,后来我检查了一下插入语句,问题出在插入语句上,生成了下面的形式insertinto试卷(试卷名称,试卷名称,......)values("名称1","期末考试",......)这样的语句,在字段名的位置,第一个字段重复出现,经过认真调试和检查,发现取得字段的语句在循环的外面,所以取得的是第一个字段的名称,将其放到循环的里面问题就解决了。
其次,我对整个程序做了整体测试,经过前一阶段的单体测试,本以为整体测试不会发生什么问题,但结果出乎了我的意料。在整体测试过程中暴露了设计过程中的一些问题,比如预先设计的方法参数不足,导致前端用户界面输入的数据没办法发挥作用。还有发现设计中漏写了一些方法,导致整个系统不能正常运行,后来发现问题一一修正后,系统得以完好运行。
调试和测试阶段是软件工程开发过程中很重要的一个阶段,没有测试就没有可以健壮运行的软件,如果一套软件不能有一定的容错能力,就没有办法正式的投入使用。调试和测试的过程是需要耐心和严谨的,一个小小的误差往往是需要反复测试才能得以改正的。最后经过调试和测试,系统全部功能运行完好,实现了异构数据库间利用XML文件进行数据交互。
通过以上的测试方案和测试方法,对该系统的各个细节的功能进行了详细的测试,得出以下的测试结果。
本系统已基本上实现来题目要求的各项功能。本系统的界面友好,可以很快的掌握操作方法。
系统的优点:
(1)界面友好,操作简单。接触计算机较少的操作人员也能根据菜单项提示进行操作。
(2)信息管理详细,提供了强大查询功
上一篇:
JAVA+access做的毕业设计综合测评系统(论文和程序)
下一篇:
口腔科的院内感染控制