试卷、更新系统、和窗体的设置、用户的帮助文件等。其具体的功能结构图如(图4-1)所示。
图4-1系统功能结构图
4.2系统功能模块
*登录子模块:登录成功的用户可以对数据库进行修改题库,添加题量,删除以及生成和输出试卷等。同时还可以修改密码。
*信息管理子模块主要包括:试题类型的增加、试题信息和章节信息的录入、编辑、查询三个子模块。具体可以实现信息的录入、修改或删除题库、浏览题库、增加题型和章节、修改难度系数和查询当前题号、试题个数、章节信息等功能。试题库是试题来源,对试题库进行管理非常重要。试题录入时可集中录入或随时录入;对于录入的试题在一定的权限下可作修改或删除;在浏览题库时可查看已建立的试题库,并对其进行分类统计;对不同的课程可增加新的题型和新的章节;可修改题目的难度系数。
编辑题签:对所选出的试题进行修改和编辑。
*更新系统子模块主要包括:更新用户信息、清空试题库和清空章节库三个子模块。
更新用户信息:修改登录时用户名或用户密码。
清空试题库和清空章节库:删除所有题库中的信息。
*窗口和帮助子模块:为用户在使用本系统中提供一定的方便。
5系统
5.1主界面的设计
系统的主界面主要是考虑到界面友好、用户使用方便。首先,设计一个总的菜单,在其上面均能看到上述功能的菜单项。用户根据需要进行选择。同时为了消除使用者面对枯燥的题库所产生的疲劳还设计了动画和配有轻松的音乐。具体如图:(图5-1)
图5-1数据库题库管理系统主界面
5.2登录子模块
5.2.1登录子模块的设计思想
在登录子模块中可以实现两个功能,这两个功能共用一个窗体,一个是在用户登录时对身份进行验证,另一个是在用户修改密码时使用。具体如图:(图5-2)
图5-2登录对话框
5.2.2登录子模块的具体实现
这两个功能的实现均采用记录集与后台数据库建立关联,在用户登录进行身份验证时通过对记录集指针的移动让用户所输入的信息与数据库中的记录进行比较如果存在这样的记录则用户通过了身份验证,给用户三次机会,如果用户登录都未成功,则用户无权使用本题库管理系统,退出应用程序。在修改用户信息时,用户必须单击修改按钮此时确定按钮是不可用的,用户修改完以后单击"确定"数据将被存到数据库中,修改成功,此时修改按钮是不可用的。
5.2.3登录子模块的设计要点
在这个模块的设计中,"修改"是打开记录集;"确定"是对记录集操作和关闭,因此只有先选中"修改"后"确定"才可用,否则访问记录集就出现错误。
5.3试题录入子模块
本模块能实现试题的录入、编辑、查询等三个方面的功能。共包括录入试题、录入章节、添加类型、编辑试题、编辑章节和查询六个窗体。
5.3.1试题录入子模块的设计思想
运用ADO技术与后台数据库创建数据连接Connection对象。再分别用Connection对象和Command对象创建记录集Recordset对象。文本框与数据库通过Recordset建立起关联,对于记录集的操作均能在前台文本框中体现出来,使用户能够获得所需数据。
录入子模块:用户主要完成信息的录入又可以分为录入试题、录入章节和添加类型。在录入的过程中用户所输入的数据必须通过数据的合法性、一致性和唯一性的检查才能保存到数据库中。
编辑子模块:用户对数据库现有的信息进行编辑。分为编辑试题和编辑章节。在编辑试题时用户可以按题号或者按章节号、类型、难度三者中任一组合进行查询来获得所要的数据信息对其进行浏览、更新、删除和添加。在编辑章节时可以浏览本教材的全部信息也可分章节浏览部分信息并对其进行修改、添加、删除。在编辑的过程中也将对数据的合法性、一致性和唯一性进行检查。
查询子模块:本模块可实现查询当前题号、试题个数、试题内容、章节信息四个功能。在查询试题个数时可获得章节号、类型、难度三者中任一组合的试题个数。
5.3.2试题录入子模块的具体实现
录入子模块中有两个窗体分别是录入试题窗体和录入章节窗体。在这两个窗体中文本框是输入要录入的信息,它的DataSource属性是记录集RS,DataField属性是记录的字段RS.field,这样通过记录集RS直接与数据库绑定在一起,命令按钮有保存、取消、添加,利用的是记录集的RS.updata、RS.addnew、RS.delete来对数据库操作。完成的功能比较单一。还有一个添加类型窗体,由一个文档框和两个命令按钮组成实现的方法与上述方法类似。
编辑子模块中也有两个窗体分别是编辑试题窗体和编辑章节窗体。这一部分实现相对比较烦琐,在编辑试题窗体中有两种查询方
式,用户通过输入查询条件找到所要编辑的试题信息。第一种用户必须输入试题的题号这一种比较简单,第二种是用了三个复选框用户根据需要选择,每一个选择都将被存入相应的字符串中,再把这三个字符串的内容传递给Command的Parameter集合,用Command命令的执行command.execute找到符合条件的记录集并对记录集进行操作,比如:记录的更新rs.updata、添加rs.addnew、删除rs.delete、前一个rs.movepreviouse、后一个rs.movenext等。在编辑章节窗体中则用到了数据绑定控件Adodc、树形显示篇章信息treeview和网格显示小节信息datagrid控件来达到更直观的效果,同时也添加了命令按钮保存、添加、删除、取消、前一个、后一个等。具体代码也是建立记录集并对记录集进行操作。
查询子模块主要用到的是SSTab选项卡控件,这个控件是添加的MicrosoftTabbedDialogControls部件,它与MicrosoftWindowsCommonControls中的TabStrip相比更具有使用性。选项卡数目是4个各实现一个功能。其中试题个数、试题内容、当前题号与编辑窗体的实现方法类似,章节信息则自动计算了篇章数目和小节数目。
5.3.3试题录入子模块的主要算法
1、数据的合法性、一致性、唯一性检查:如图(5-3)
图5-3数据的合法性、一致性和唯一性检查的流程图
2、试题个数的查询:设三个字符串str1,str2,str3分别存储章节号、类型和难度,如果章节号、类型、难度前的复选框被选中则把输入的值对应的存到字符串中否则在对应的字符串中输入"-",把三个字符串按章节号、类型、难度的顺序连接起来再加上"----"组成符合条件作为查询条件中题号的输入值。用Command命令建立Recordset对象记录集通过对记录指针的移动来获得符合查询条件的记录。如:select*fromquestiontablewhere题号like?,?=str1&str2&str3&"----"(其中"-"起到屏蔽的作用)
3、编辑章节:用TreeView和ADODC控件与数据库建立连接在运行时动态的添加篇章信息并用与查询相同的方法获得记录信息。
其它功能的算法与上述方法类似具体内容请参阅附录A:程序代码。
6系统测试及性能分析
6.1系统测试
软件的开发经过了问题的定义、可行性研究、需求分析、总体设计、详细设计和编码阶段以后就进入软件的测试阶段。测试的目的是为了发现程序中存在的错误。在对本系统编码完成以后,我主要从以下几个方面对系统进行了一系列的测试。
1、人工测试:和同组合作的同学在编程思想基本一致的前提下互相交换所编写的程序,检查对方在编写过程中存在的错误或失误之处,采用的测试算法主要是黑白盒测试相结合的原则(主要有等价类测试,边界值测试,模糊测试等)。
2、机器测试:交换程序后按照各自对系统所应完成的功能的理解设计测试用例,尽可能"多和全"
上一篇:
VB+Access酒店客房管理系统(论文和程序)
下一篇:
多年来只想说一句,我不怪你