基于Visual Basic的题目训练器的设计与实现
2021-03-22刘平
刘平
摘要:理论课程不仅能对实践课程提供必要的指导,还对增强学生人文素质、提高人才核心竞争力、提升可持续职业能力等至关重要。高职院校的学生文化基础差,普遍对理论课程缺乏兴趣。为提高学生学习兴趣,设计并实训了基于Visual Basic的信息系统——题目训练器,使学生通过在计算机上答题,特别是针对错得比较多的薄弱环节,在得到反馈和解析基础上反复训练,达到熟记理论知识的目的。文章详细地介绍了该系统的设计与实现过程。
关键词:理论知识;训练;反馈;信息系统;数据库
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2021)06-0099-04
Abstract: Theory Course not only can guide practical courses, but also is important to enhance the quality of humanity, improve core competitiveness and sustainable professional ability for students. For the students of higher vocational colleges, their cultural foundation is poor. So they have less interesting for theory course universally. To improve students interesting, the writer designed and realized information system—test question trainer。Students can answer questions on this system of computers repeatedly. Especially, they can get feedback of weak link which they always do wrong in real time. With repeated training, students can memorize the theoretical knowledge. The article introduces the design and implementation process of the information system in detail.
Key words: theory course;train;feedback;information system;database
理論课程和实践课程是现代职业教育课程体系的两大组成部分,理论课程与实践课程是相辅相成的。只有在必要的理论指导下开展的实践活动才能真正培养学生的实际动手能力,另外理论课程是增强学生人文素质、提高人才核心竞争力、提升可持续职业能力的有效途径。但在实际教学过程中,往往轻理论,重实践。高职院校的学生文化基础较差,枯燥的理论学习让他们提不起学习兴趣,再加之“背功”差,对理论学习“前学后忘”,教学效果不理想。我们应根据高职学生的特点,采用适合他们的教学模式,多给他们动手操作的机会,使之从枯燥乏味的理论学习中解脱出来。
基于此,笔者进行了信息系统辅助理论教学模式的尝试。基于Visual Basic设计并实现了题目训练器,通过在计算机上对理论题反复训练,并同步得到反馈与解析,达到熟记的目的。
1 总体设计
系统的主要功能是:批量导入理论题,让学生答题并给出结果反馈,同时对学生做题的正误情况进行统计,学生可以查询出错误较多的题,进行反复训练。系统主要包括以下几大模块:用户管理、学期管理、科目管理、试题类型管理、题库管理、题目训练、错题查询。
用户管理:包括密码修改、用户维护。用户分为管理员和普通用户。普通用户可以修改自己的密码,管理员可以对用户进行维护,包括对用户进行添加、修改、删除、查询等操作。
学期管理、科目管理、试题类型管理用于对学期、科目、试题类型等基础信息进行添加或删除操作。
题库管理:对试题进行维护,包括从Excel表格批量导入试题,对试题进行添加、修改、删除、查询等操作。
题目训练:用于对所选试题进行答题、批改及解析等。
错题查询:用于根据查询条件显示相应错题,查询条件包括:用户名、学期、科目、试题类型、错题次数、错题日期等。
系统流程图如图1所示。
2 数据库设计
本系统涉及的对象主要包括:操作用户、学期、科目、试题类型、试题、错题等。分别设计数据表对这些对象进行维护。
系统用户分为管理员和普通用户,管理员负责系统的维护,普通用户主要是做题及各类信息的查询。用户表(User)包括字段为:序号(ID)、用户名(UserName)、密码(UserCode)、权限(UserRight)。
试题表(Question)存储试题信息,包括字段为:序号、学期、科目、试卷编号、试题内容、试题答案、试题类型、考查知识点、试题解析、录入日期。其中学期字段关联于学期表,科目字段关联于科目表,试题类型字段关联于试题类型表,录入日期字段在导入系统时读取系统日期。
错题表(Wrongques)记录用户错题情况,包括字段为:试题编号、用户名、答错题次数、答对题次数、最近做题日期。试题编号字段关联于试题表,最近做题日期读取最近一次做题时的系统日期。
试题表与错题表通过试题编号关联,用户表与错题表通过用户编号关联。用户表、试题表及错题表三者的关联关系如图2所示。
3 系统实现
3.1数据库连接
要实现对数据库的操作,首先要连接数据库。在系统中添加了Module1, 在这里创建TransactSQL()函数用于连接数据库,并通过传递的SQL语句参数对数据库进行查询、更新等操作。主要代码如下所示。
Public Function TransactSQL(ByVal sql As String) As ADODB.Recordset
…
Set con = New ADODB.Connection
Set rs = New ADODB.Recordset
'连接并打开数据库
con.Provider = "Microsoft.Jet.OLEDB.4.0"
con.ConnectionString = "Data Source=" & App.Path & "\exercise.mdb;"
con.Open
'执行由过程参数传过来的SQL语句
strArray = Split(sql)
If StrComp(VBA.UCase(strArray(0)), "select", vbTextCompare) = 0 Then
rs.Open VBA.Trim(sql), con, adOpenKeyset, adLockOptimistic
Set TransactSQL = rs
Else
con.Execute sql
End If
…
End Function
3.2用户管理模块设计与实现
用户管理模块主要实现对用户信息的添加、修改、删除及查询操作。在窗体上添加了MSHFlexGrid1控件,用于显示用户信息。在窗体的load事件中,默认加载所有用户信息。用户可点击“查询”按钮,设置查询条件,如用户名、权限等,以显示所需要的用户信息。用户管理界面如图3所示。
3.3题库管理模块设计与实现
题库管理模块用于实现对题库中试题的批量导入、单条添加、修改、删除及查询等功能。其功能设计概图如图4所示。
批量导入功能是通过打开Excel文件,从文件中逐行读取试题信息并插入到数据库的试题表(Question)中。主要代码如下所示:
Private Sub Cmdimport_Click()
…
' 打开文件
With CommonDialog1
' .CancelError = True
.Flags = cdlOFNHideReadOnly Or cdlOFNAllowMultiselect Or cdlOFNExplorer Or cdlOFNNoDereferenceLinks
.Filter = "excel文件(*.xls)|*.xls"
.ShowOpen
End With
filename = CommonDialog1.filename
…
Set xlapp = CreateObject("Excel.Application") '创建EXCEL对象
Set xlbook = xlapp.Workbooks.Open(filename) '打开已经存在的工作簿文件
xlbook.RunAutoMacros (xlAutoOpen) '运行EXCEL启动宏
xlbook.RunAutoMacros (xlAutoClose) '运行EXCEL关闭宏
xlapp.Visible = False '设置EXCEL不可见
Set xlsheet = xlbook.Worksheets(1) '设置活动工作表
…
'逐行读取Excel文件内容,并插入到Question表中
For i = 2 To lastrow
…
sql = "insert into [Question](Term,Subject,QueNo,Questions,Keys,Quetype,Querange,Queanalys,Quedate) values('" & Trim(xlsheet.Cells(i, 1)) & "','" & Trim(xlsheet.Cells(i, 2)) & "','" & Trim(xlsheet.Cells(i, 3)) & "','" & CheckString(xlsheet.Cells(i, 4)) & "','" & CheckString(xlsheet.Cells(i, 5)) & "','" & Trim(xlsheet.Cells(i, 6)) & "','" & Trim(xlsheet.Cells(i, 7)) & "','" & Trim(xlsheet.Cells(i, 8)) & "','" & Date & "')"
Call TransactSQL(sql)
k = 1
End If
Next
If k = 1 Then MsgBox ("導入成功!")
Call viewData(viewsql) //显示导入结果
…
End Sub
值得一提的是,上述代码中在“insert”SQL语句中,引用了CheckString()函数,这个函数的作用是:当需插入表中的字符串内容含单引号时,在单引号前再插入一个转义字符单引号,使该单引号转成普通字符。因为在SQL语句中单引号表示字符串的开始和结束,如果字符串中含有单引号的,就需要把它转化为普通字符,否则SQL语句将无法正常执行。CheckString()函数的具体代码如下:
Public Function CheckString(ByVal str As String) As String
Dim returnStr As String
returnStr = ""
If InStr(1, str, "'") <> 0 Then
returnStr = Replace(str, "'", "''")
Else
returnStr = str
End If
CheckString = returnStr
End Function
导入模版是Excel文件,该文件中第一行各列标题分别为:学期、科目、编号、题目、答案、题目类型、考查知识点、解析,用户需在对应标题下填写好各行的内容,系统将根据逐行将Excel表格中的内容插入到数据库的Question表中。
在VB中要想调用Excel,需要打开VB编程环境“工程”菜单中的“引用”项目,并选取项目中的“MicrosoftExcel 11.0 object library”项。由于Excel版本不同,这个选项的版本号也是不同的。
因为EXCEL是以层次结构组织对象的,其对象模型中含有许多不同的对象元素。
第一层:Application对象,即Excel本身;
第二层:workbooks对象集,指Excel的工作簿文件;
第三层:worksheets对象集,表示的是Excel的一个工作表;
第四层:Cells和Range对象,指向Excel工作表中的单元格。
因此需要定义好各层,代码如下:
Dim xlapp As Excel.Application 'Excel对象
Dim xlbook As Excel.Workbook '工作簿
Dim xlsheet As Excel.Worksheet '工作表
再创建各对象,代码如下:
Set xlapp = CreateObject("Excel.Application") '创建EXCEL对象
Set xlbook = xlapp.Workbooks.Open(filename) '打开已经存在的test.xls工作簿文件
Set xlsheet = xlbook.Worksheets(1) '设置活动工作表
再逐行读取单元格xlsheet.Cells(i, j)的内容,i,j分别代表行号和列号。
3.4试题训练模块设计与实现
该模块用于对所选试题进行训练,提交后反馈答题结果及试题解析。每答错或答对一道题,在错题表(WrongQues)中会有相应纪录:如果是未做过的题,则新增一条纪录,错题数或对题数为1;如果是做过的题,根据试题编号找到这条纪录,将其错题数或对题数增加1。通过“查询”功能,输入查询条件,选择需要的试题。查询条件包括学期、科目、试题类型、考查知识点、试题编号范围、试题录入日期、错题次数等。试题训练界面,如图5所示。在这个界面中,用户在回答文本框中输入问题答案,再点击“提交”,系统会将用户的回答与“Question”表中的对应纪录的“Keys”值进行比较,如果一致,则显示回答正确;如果不一致,则显示回答错误及正确答案。同步显示试题解析,并在错题表(WrongQues)中做相应纪录。
3.5错题查询模块设计与实现
该模块通过设置查询条件,在错题表(WrongQues)中查询错题情况。查询条件包括用户名、学期、科目、试题类型、考查知识点、试题编号范围、错题次数范围、对题次数范围、答题日期范围等。错题查询界面如图6所示。单击其中的某一条纪录,可以根据试题编号查看到该试题的详细信息。
4 结束语
本系统初步实现了让学生在计算机上对理论试题进行反复训练,并同步提供反馈与解析的目的。通过动手练,一定程度上提高了学生对枯燥的理论学习的学习兴趣,从而达到较好的学习效果。以英语学习为例,因为知识点多而散,不容易记忆,学生在系统中进行训练并得到及时反馈,并通过错题库查询,根据错题频率找到薄弱环节,从而有针对性地强化训练,边训练并记忆,可以大大提高学习效率。但系统功能还需在实践中不断完善,以更好地提高使用效率。特别是试题导入功能,虽然已经实现了使用Excel文件批量导入,但如果能改成扫描導入等方式,将能更好地提高试题导入的效率。
参考文献:
[1] 梁海鹏,薛建红.基于ACCESS的库存管理系统设计与实现[J].物探装备,2018,28(3):191-193.
[2] 张桃林,胡春.基于ACCESS数据库系统开发下的数据库备份操作实现[J].科技经济导刊,2016(7):116-117.
[3] 秦文宁,张若楠,王璀,等.基于Access的河南师范大学图书管理系统[J].无线互联科技,2019(6):57-58.
[4] 李丽,史运平.基于Visual Basic6.0的ADO数据库访问技术[J].山西建筑,2007,33(22):367-368.
[5] 梁凤兰.基于校网络教学平台的混合式教学设计与应用[J].软件工程,2018,21(12):50-53.
[6] 李晶. 基于Bb 平台的大学理论课程互动教学方案设计[J].航海教育研究(MER),2019,2(36):90-93.
[7] 王绍建,黄代华,冯宝贵. 高职院校理论课程教学困境及解决途径[J].湖南工业职业技术学院学报,2016,16(6):98-100.
[8] 顾馨梅,唐灿.终身教育视野下构建现代职业教育体系的思考[J].襄阳职业技术学院学报,2019,18(6):11-14.
【通联编辑:王力】