VB编程题自动评分系统的设计与实现
- 格式:pdf
- 大小:578.47 KB
- 文档页数:4
VB答题系统制作图文教程1、打开Visual Basic 6.0企业版程序,选择创建exe文件2、创建后,根据自己的需求设置窗口大小,窗口名称等属性值。
如:3、在窗口上放置四个按钮(commandButton1-4)控件、两个标签(Label1-2)控件、一个(TextBox1)控件、十个[TextBox(1-10)]控件和两个(Frame1-2)控件。
如图:控件名属性值Label1 1Label2 第题Command1 最前一题Command2 上一题Command3 下一题Command4 最后一题Option1(1) AOption1(2) BOption1(3) COption1(4) DFrame1 题目区Frame2 答题区Text1 MultiLine = true ; ScrollBars = 2 如图下:6、在所在工程文件目录下创建一个新文件夹,命名为question ; 同时再创建一个文件夹,命名为answer 。
如图:7、在question文件夹中创建文本文档,命名为1-10,题目以及选项都需输入。
8、在answer 文件中创建文本文档,命名为1-10,所对应的答案按序号入座。
9、双击窗体,输入以下代码:'______________________________________________________________________________ Private Sub Form_Load()Text1.Text = "" '卸载Text1的文本内容Dim Lstr As String '定义数据类型Open App.Path + "\question\" & Label1.Caption & ".txt" For Input As #1 '读取文本文档Do While Not EOF(1)Line Input #1, LstrIf Lstr <> "" ThenText1.Text = Text1.Text & Lstr & vbCrLfEnd IfLoopClose #1For i = 1 To 10Text2(i).Text = ""Next iCommand1.Enabled = False '第一题时前两个按钮失效Command2.Enabled = FalseEnd Sub'______________________________________________________________________________ Private Sub Command1_Click()For i = 1 To 4Option1(i).ForeColor = vbBlackOption1(i).V alue = FalseNext iLabel1.Caption = 1Command1.Enabled = False: Command2.Enabled = False: Command3.Enabled = True: Command4.Enabled = TrueIf Text2(Label1.Caption).Text <> "" ThenFor i = 1 To 4If Text2(Label1.Caption).Text = Option1(i).Caption ThenOption1(i).ForeColor = vbRedOption1(i).Value = TrueEnd IfNext iEnd IfText1.Text = ""Dim Lstr As StringOpen App.Path + "\question\" & Label1.Caption & ".txt" For Input As #1Do While Not EOF(1)Line Input #1, LstrIf Lstr <> "" ThenText1.Text = Text1.Text & Lstr & vbCrLfEnd IfLoopClose #1End Sub'______________________________________________________________________________ Private Sub Command2_Click()For i = 1 To 4Option1(i).ForeColor = vbBlackOption1(i).V alue = FalseNext iDim X As IntegerX = Val(Label1.Caption): X = X - 1: Label1.Caption = XIf X > 1 And X < 10 Then Command1.Enabled = True: Command2.Enabled = True: Command3.Enabled = True: Command4.Enabled = TrueIf X = 1 Then Command1.Enabled = False: Command2.Enabled = FalseIf X = 10 Then Command3.Enabled = False: Command4.Enabled = FalseIf Text2(Label1.Caption).Text <> "" ThenFor i = 1 To 4If Text2(Label1.Caption).Text = Option1(i).Caption ThenOption1(i).ForeColor = vbRedOption1(i).Value = TrueEnd IfNext iEnd IfText1.Text = ""Dim Lstr As StringOpen App.Path + "\question\" & Label1.Caption & ".txt" For Input As #1Do While Not EOF(1)Line Input #1, LstrIf Lstr <> "" ThenText1.Text = Text1.Text & Lstr & vbCrLfEnd IfLoopClose #1End Sub'______________________________________________________________________________ Private Sub Command3_Click()For i = 1 To 4Option1(i).ForeColor = vbBlackOption1(i).V alue = FalseNext iDim X As IntegerX = Val(Label1.Caption): X = X + 1: Label1.Caption = XIf X > 1 And X < 10 Then Command1.Enabled = True: Command2.Enabled = True: Command3.Enabled = True: Command4.Enabled = TrueIf X = 1 Then Command1.Enabled = False: Command2.Enabled = FalseIf X = 10 Then Command3.Enabled = False: Command4.Enabled = FalseIf Text2(Label1.Caption).Text <> "" ThenFor i = 1 To 4If Text2(Label1.Caption).Text = Option1(i).Caption ThenOption1(i).ForeColor = vbRedOption1(i).Value = TrueEnd IfNext iEnd IfText1.Text = ""Dim Lstr As StringOpen App.Path + "\question\" & Label1.Caption & ".txt" For Input As #1Do While Not EOF(1)Line Input #1, LstrIf Lstr <> "" ThenText1.Text = Text1.Text & Lstr & vbCrLfEnd IfLoopClose #1End Sub'______________________________________________________________________________ Private Sub Command4_Click()For i = 1 To 4Option1(i).ForeColor = vbBlackOption1(i).V alue = FalseNext iLabel1.Caption = 10Command1.Enabled = True: Command2.Enabled = True: Command3.Enabled = False: Command4.Enabled = FalseIf Text2(Label1.Caption).Text <> "" ThenFor i = 1 To 4If Text2(Label1.Caption).Text = Option1(i).Caption ThenOption1(i).ForeColor = vbRedOption1(i).Value = TrueEnd IfNext iEnd IfText1.Text = ""Dim Lstr As StringOpen App.Path + "\question\" & Label1.Caption & ".txt" For Input As #1Do While Not EOF(1)Line Input #1, LstrIf Lstr <> "" ThenText1.Text = Text1.Text & Lstr & vbCrLfEnd IfLoopClose #1End Sub'______________________________________________________________________________ Private Sub Option1_Click(Index As Integer)For i = 1 To 4Option1(i).ForeColor = vbBlackNext ia = IndexOption1(a).Value = TrueOption1(a).ForeColor = vbRedText2(Label1.Caption).Text = Option1(a).CaptionEnd Sub'______________________________________________________________________________ Private Sub Text2_Change(Index As Integer)Dim s As Integers = 0For i = 1 To 10If Text2(i).Text = "" Then Exit SubNext imessage = MsgBox("答题完毕!是否结分?", vbOKCancel, "VB答题系统")If message = vbOK ThenFor i = 1 To 10Open App.Path + "\answer\" & i & ".txt" For Input As #1Line Input #1, LstrIf Text2(i).Text = Lstr Thens = s + 10End IfClose #1Next iEnd IfMsgBox "得分" & sendEnd Sub'______________________________________________________________________________ 10、测试运行。
自动评分程序设计一个由计算机来当小学低年级学生算术老师的VB应用程序,要求给出一系列的两个1~9数的四则运算的算术题,学生输入该题的答案,计算机根据学生的答案判断正确与否,并给出成绩,单击出题命令按钮,开始答题,输入答案后按回车键即可继续答下一题,单击结束命令按钮,退出应用程序。
1、用到的控件:1个PictureBox控件,1个Timer控件,2个CommandButton 控件,5个Label控件,5个TextBox控件,1个Frame控件。
2、运行界面:3、答题过程的界面:4、详细代码:Option ExplicitDim X As Integer, Y As Integer, js As Integer, arr, a As String Public cuo As Integer, zq As Integer, sum As Integer, k As String Private Sub Command1_Click()EndEnd SubPrivate Sub Command2_Click()RandomizeX = Int((9 * Rnd) + 1)Y = Int((9 * Rnd) + 1)k = arr(Int(Rnd * 4))Select Case kCase "+"js = X + YCase "-"If Y > X Then a = X: X = Y: Y = ajs = X - YCase "×"js = X * YCase ElseIf Y > X Then a = X: X = Y: Y = ajs = X / YEnd SelectLabel1.Caption = Trim(Str(X)) & k & Trim(Str(Y)) & "="Text1.Text = ""Text1.SetFocusEnd SubPrivate Sub Form_Load()arr = Array("+", "-", "×", "÷")Text2.Enabled = FalseText3.Enabled = FalseText4.Enabled = FalseText5.Enabled = FalseEnd SubPrivate Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii = 13 ThenIf Label1.Caption <> "" Thensum = sum + 1If V al(Text1.Text) = js Thenzq = zq + 1Picture1.Print Label1.Caption & V al(Text1.Text) & " " & "√" ElsePicture1.Print Label1.Caption & V al(Text1.Text) & " " & "×" cuo = cuo + 1End IfText2.Text = sumText3.Text = zqText4.Text = cuoText5.Text = Format(Str(zq / sum) * 100, "0.00") & "%" Command2_ClickEnd IfKeyAscii = 0End IfEnd Sub。
VBA的OFFICE操作题自动批阅技术的实现唐学军【摘要】"Fundamentals of Computer Application," is one of the more important basic education classes, students learn that it is mainly to allow students to better grasp the Word, Excelland other basic work used in more applications. However, most of these applications run in VBA programming. However, when the end of the student teacher test, marking papers become their problem. On the one hand, OFFICE larger amount of operating problems, more objective questions, there is no uniform measure;other papers of these operations when the theme marking the workload is relatively large, low teacher marking efficiency. This paper will present the reasons for the development of VBA OFFICE operating problems automatically marking technology and simple exposition universities now use automatic marking technology and its principles, the last of the VBA OFFICE operation of an automatic marking simple programming.%《计算机应用基础》是我国高等教育中比较重要的基础课之一,学生学习它主要是为了让学生更好的掌握Word,Excel等最基本、工作中使用较多的应用程序。
基于VB的学生成绩管理系统设计与实现【1】简介学生成绩管理系统是一种能够帮助学校和老师管理学生成绩信息的工具。
通过该系统,可以方便地录入、查询、统计学生成绩,为学校和老师提供了高效便捷的管理方式。
本文将重点讨论基于VB的学生成绩管理系统的设计与实现。
【2】系统需求分析(1)功能需求学生成绩管理系统需要包括学生信息录入、成绩录入、成绩查询、成绩统计和报表打印等功能。
系统需要具有数据安全性和稳定性,能够保证学生成绩信息的准确性和完整性。
(2)性能需求系统需要能够实现快速的数据录入和查询,响应速度要较快。
系统需要支持大量数据的存储和处理,能够满足学校成绩管理的实际需求。
(3)界面需求系统的界面设计应简洁美观,操作要简单易懂,能够方便老师和管理员进行使用。
【3】系统设计(1)数据库设计设计学生成绩管理系统的数据库结构,包括学生信息表、成绩信息表和其他相关信息表。
需要考虑数据表的关联性和索引,以提高数据检索和统计的效率。
(2)界面设计通过VB的界面设计工具,设计系统的用户界面。
采用直观的界面布局和人性化的操作方式,使用户能够方便地进行各项操作。
(3)功能模块设计根据系统需求,划分出学生信息管理模块、成绩信息管理模块、成绩查询模块、成绩统计模块和报表打印模块。
设计各个功能模块的具体实现方式,并确保模块之间的协调和配合。
【4】系统实现(1)数据库连接与操作在VB中使用ADO技术,进行与数据库的连接和操作。
通过VB代码编写,实现对学生成绩数据库的增删改查等操作,确保数据的准确性和完整性。
(2)界面实现利用VB的窗体和控件设计,实现系统的用户界面。
包括各个功能模块的窗体设计和按钮控件的添加,使用户能够方便地进行各项操作。
(3)功能实现通过VB的编程语言,实现学生信息录入、成绩录入、成绩查询、成绩统计和报表打印等功能。
确保系统的稳定性和高效性,满足学校成绩管理的实际需求。
【5】个人观点与总结基于VB的学生成绩管理系统的设计与实现是一个综合性的工作,需要考虑到功能、性能和界面等多方面的需求。
自动组卷及评分系统的设计与实现摘要:利用vb语言开发了一个自动组卷及评分系统。
系统主要由试题库、自动组卷、答题及评分三大部分组成。
试题库中存有大量的试题资料,为自动组卷提供了充足的试题来源;自动组卷模块能够根据出题者的意图,自动生成一套合理的试卷;而答题及评分模块能对生成的试题给出正确答案并对答题及答卷实现自动译分。
关键词:自动组卷;考试系统;试题库;评分系统design and implementation of a system of automatic composition of examination papers and gradingyang xiaomin(department of computer science and technology, yuncheng university, yuncheng, shanxi 044000, china)abstract: in this paper, the author develops a system of automatic composition of examination papers and grading by using vb language. it is mainly made up by three parts: the question database, the auto-paper-composing module, and the module of testing and grading on computers. the question database stores enough test questions. theauto-paper-composition module creates an examination paper automatically following the mind of examiner. the testing andgrading module gets examinees answer questions on computer and gives score automatically.key words: auto-paper-composition; examination system;question database; grading system0 引言考试是对学生的学习效果和技能达标的一种快捷方便的检验方法。
VB程序主观题自动评阅系统的设计与实现作者:姜彦伟来源:《硅谷》2014年第16期摘要 VB程序主观题是对考生掌握VB程序编写能力的集中测试,能够较好地反映出考生的真实水平。
设计并实现自动评阅系统,可以最大限度地保持客观、谨慎的态度来对考生的答案进行核对。
同时节省了大量的人力,减轻了教师的工作负担。
关键词 VB程序;自动评阅系统中图分类号:TP311 文献标识码:A 文章编号:1671-7597(2014)16-0019-01随着计算机教育事业不断发展,各种程序的编写学习受到了学生的偏好。
特别是VB程序,VB就是Visual Basic,是目前windows操作程序所采用的最常见的设计编程语言。
它在程序编写方面的表现十分优异,受到广大用户的一致好评。
可以预见的是,未来的程序设计考试中,VB必然会占据更加重要的地位。
与此同时,数量庞大的程序题给教师的阅卷工作带来了极大的负担,为了将教师从繁重的评阅工作中解放出来,也为了更好地保证评阅工作的公平性和客观性,VB程序主观题自动评阅系统应运而生。
它采用了DLL技术,实现了Visual Basic 程序主观题目的自动评阅,整个系统的操作界面简洁流畅,易于上手,在有效避免传统考试方法中容易出现的一些漏洞的同时,还能够保证阅卷的公正性。
这既是对考生程序编写能力的最有效的测试方法,也能够较为客观地反应出考生掌握VB程序的能力。
1 系统设计目标根据系统的实际应用背景,即需要对大量考生的数据编写题目进行详细的审查阅览,考虑到系统未来的可发展空间,在建立系统的初期,要保证系统能够具有以下两种重要特点,也就是系统设计的最初目标:实用性和适应性。
1.1 实用性自动评阅系统面对的是广大学生和教师,其中可能不乏一些计算机水平并不高的初学者。
既然用户的素质参差不齐,就要考虑到系统的实用性,保证每一个用户都能够很快地学会系统的基本操作,熟练地使用各项技能。
同时,简洁的操作流程能够很好地提高教师评阅的工作效率。
VB程序员考试自动阅卷系统的设计与实现
关键词:自动阅卷系统;vb;算法
随着计算机应用技能培训与考核的开展,越来越多的市民参与了计算机考核,因而机械阅卷替代人工阅卷成为必定。
在系统运转进程中,主动处置考生顺序中所呈现的各类错误,克制用户顺序中所呈现的各类错误对阅卷系统的影响,包管系统运转的强健性。
本文首要阐述了树立高效的主动阅卷系统的完成机制。
系统使用VB平台开发,运用真正的的32位计算机系统,包管系统运转的不变性和平安性,采用Windows处置机制模仿驱动用户顺序并引入脚本战略,对用户供应一个友好的接口,适应不同的VB应用程序的考核。
浅析基于VB的成绩评价系统设计[摘要]成绩评价系统以教育测量学为依据,采用教育测量的理论与方法,对试卷进行成绩评价、测验各大题型的统计与分析及测验之间的对比分析。
本文分析了基于VB语言的成绩评价系统开发工程。
[关键词]成绩评价系统;Visual Basic;教育测量学It is based on the results of evaluation system design vbCHEN Ping-lan[Abstract]Performance appraisal system for measuring learning and education based on the education of theory and methods of the papers on the results of evaluation, test and analysis and statistical the test of the comparative analysis. this article analyzes the vb language based on the results of evaluation systems development project.[Key words]Performance appraisal system;Visual Basic;Educational measure learning1 引言教育测量是对于教育领域内的事物或现象,根据一定客观标准,作缜密的考核,并依一定的规则将考核的结果予以数量的描述。
由于它要测量的数据复杂、测量数据大,要求计算的精度高,原始的手工管理方式已不能完全胜任,这就迫切需要标准的、高效率的计算机管理方式来对教育测量进行管理。
成绩评价系统以教育测量学为依据,采用教育测量的理论与方法,对试卷进行成绩评价、测验各大题型的统计与分析及测验之间的对比分析。
第17卷 第5期长 春 大 学 学 报V o.l 17 N o .5 2007年10月J OU RNAL OF CHANGCHUN UN I VER SI TY O ct .2007 文章编号:1009-3907(2007)05-0074-03收稿日期:2007-09-19作者简介:刘刚(1972-),男,吉林省柳河县人,长春大学计算机科学技术学院实习研究员,主要从事计算机教学管理工作。
VB 上机操作题自动判分程序的设计刘 刚(长春大学 计算机科学技术学院 吉林 长春 130022)摘 要:介绍了VB 上机操作题的自动判分程序的主要算法,对上机操作题的评分标准格式进行了描述,阐述如何提取考生提交的答案并使用评分标准进行自动判分,并给出判分过程记录。
关键词:VB 上机操作;评分标准;自动判分中图分类号:TP312.VB 文献标识码:A0 引 言V isual Basic 是W indo w s 操作系统下应用程序的一个大型开发环境。
1998年推出的V isua l Basic 6.0版,其功能已经非常完善。
我国很多高等院校都将V isual Basic 作为学习计算机程序设计的第一种语言,开设了相关课程。
在各级非计算机专业计算机等级考试系列中,也都将V i s ua l Basic 语言作为二级考试的一个主要语种[1]。
V isual Basic 程序设计主要注重对学生动手能力的培养,为了能够提供一个很好的学习平台,特开发了本上机考试系统,能够实现程序自动判分。
图1 VB 上机操作题完成后的界面1 VB 上机操作题1.1 VB 上机操作题的For m 界面在V isual Basic 中,窗体(For m )就是一个自定义的窗口,在这个窗口上创建程序的用户界面。
在运行程序时,窗体就是你看到的、正在运行的那个窗口。
窗体中可以包括菜单、按钮、列表框、滚动条以及其它一些界面元素,在典型的W indo w s 程序中你会看到这些元素[2]。
基于VB程序设计题考点的自动阅卷方法研究摘要:针对Visual Basic程序设计的考核,在研究其程序设计题目特点的基础上,提出以考点及位置为评分标准对程序设计题进行功能动态测试、逻辑结构分析和语句格式模糊匹配的一种研究方法。
详细介绍了整个设计的研究思路。
关键词:自动阅卷;程序设计;考核;动态测试;模糊匹配目前对于VB程序设计题的自动阅卷,一般采用两种方法:一种是分析源程序是否拥有规定的控件,针对相应的控件事件判断源程序中是否编写了功能代码。
在保证不会对程序功能产生任何影响的情况下加入测试代码及辅助临时代码使VB程序能够在运行过程中输出反映功能的运行参数。
在这种系统中,主要是测重于VB本身控件事件等运用,而对程序设计方面很难去做很好的测试,如循环分支等结构、函数表达式的运用,这些都是程序设计中很重要的测评标准。
对于运行查看结果,也是很不全面的,有些代码它可能没办法编译运行。
这时,就需要具体知道考生代码的详细情况,像人工阅卷一样去检测考生掌握哪些知识点,以此来评分。
另一种方法是模糊匹配,采用的是关键字模糊匹配方式,也就是系统把能决定该程序设计题答案的关键词逐一找出来,存储在一个临时数组里,然后将此数组中的字符与考生的答案进行匹配,在考生答案中找这些关键词,再根据匹配的程度来对考生的试卷进行打分。
但其也存在一定的问题。
比如考生答案中存在这些关键词,但是由于顺序相反使得语义完全改变,或者考生答案中并未出现关键词,但是他的语义和标准答案的语义是一致的。
如果采用这种机制进行评分可能会导致误判。
1自动阅卷方法1.1总体方案VB是以工程来组织文件的,在集成环境中打开一个VB工程时,首先装载.vbp文件,从中分析出该工程中存在的窗体、模块等对象,然后进一步加载并分析这些对象及其存在的控件、事件、函数和过程等。
利用VB的运行环境,可以对VB工程文件进行编译运行。
VB程序是一个标准的Windows应用程序,它遵循Windows操作系统的消息驱动(或事件驱动)模式,即可以通过Windows消息与其程序进行通讯。
用VB编写自动评分程序
孙春美
【期刊名称】《电脑知识与技术-经验技巧》
【年(卷),期】2003(000)032
【摘要】我们学校经常举行各种各样的竞赛活动,比如优质大课竞赛、演讲比赛、歌唱比赛等,这样就涉及到评分的问题,为了节省人力物力,能更快速的亮出评委打出的分数并能快速的算出最后得分,于是我用VB编写了一个自动评分程序。
【总页数】2页(P39-40)
【作者】孙春美
【作者单位】无
【正文语种】中文
【中图分类】G434
【相关文献】
1.VB程序自动评分系统的分析与设计 [J], 刘瑞军
2.VB程序自动评分系统研究与设计 [J], 郑杰
3.用VB编写串口通讯程序实现应用程序与扫描器通讯 [J], 王成国;何勇
4.基于VBA的都江堰灌区蓄水量查询程序编写 [J], 徐兴文; 方可; 李鹏中; 陈小琳
5.VB编写自动处理程序在网刊建设中的应用 [J], 李金丽;杨海亮
因版权原因,仅展示原文概要,查看原文内容请购买。
考试系统中操作题自动评分的设计与实现史娟【摘要】目前的计算机考试系统大多数是采用标准答案文档与考生文档直接比对的方式来实现操作题的自动阅卷,评分效率不高,成绩容易出现误差.针对这一现象,以Word 2003操作题为例,提出了改进的思路及具体的实现方法,即基于VBA技术和Word对象模型,采用将标准答案存储到数据库中的方式,利用设置好的标准答案数据库,启动自动评分系统对操作题进行自动评分.实验结果表明,采用此方法设计的评分系统,平均30s左右就可以实现一个文档的自动评分,显著提高了操作题的评分效率.%At present, the standard answer document is adopted to directly compare with the candidate documents to realize the operational problems automatic scoring in most of the computer examination systems, in which the scoring efficiency is not high and scoring results prone to error. In view of this phenomenon, taking Word 2003 operating problem as an example, an idea for improvement and a specific realization method for scoring are put forward. The method is based on visual basic for application (VBA) technology and Word object model. In this way, the standard answers are stored in the database, and the automatic scoring system conducts the automatic scoring of operation problems by means of the standard answer database. The experimental results show that the automatic scoring system designed in this way can fulfil a candidate's document scoring in about 30 s automatically. It significantly improved the scoring efficiency of operation questions.【期刊名称】《现代电子技术》【年(卷),期】2012(035)014【总页数】4页(P33-36)【关键词】考试系统;自动评分;VBA;Word对象模型【作者】史娟【作者单位】青海建筑职业技术学院,青海西宁810012【正文语种】中文【中图分类】TN919-34;TP310 引言随着计算机应用技术和网络技术的不断发展,利用计算机考试正在逐渐取代传统的考试模式。
VB程序自动评分系统的分析与设计刘瑞军【摘要】非计算机专业公共必修课“VB程序设计”教学过程中的电子作业批改是一项繁重任务,目前已有的自动化评分系统系统基本是以API为核心来控制VB应用程序进行评分,存在评分误差大、开发难度大等问题。
对此,结合Windows API函数特性和VB程序自身特点,提出并设计了一种效率和精确度更高的VB程序自动评分解决方案,提高了评分精确度,同时也降低了开发难度。
%The electronic homework correcting of VB programming, a public compulsory course for non-computer profes⁃sionals, becomes an onerous task in teaching. Basically taking API as the core to control VB application in scoring, the ex⁃isting automatic scoring systems have problems such as having great errors and being difficult to develop. Combined with characteristics of Windows API function and VB program, a new design of automatic scoring system of VB program with higher efficiency and accuracy was put forward which reduces the difficulty of development.【期刊名称】《宜宾学院学报》【年(卷),期】2016(016)006【总页数】4页(P46-49)【关键词】API;VB;自动评分【作者】刘瑞军【作者单位】武夷学院实验室管理中心,福建武夷山354300【正文语种】中文【中图分类】TP311.1LIU RJ.Analysis and Design of Automatic Scoring System of VB Program [J].Journal of Yibin University,2016,16(6):46-49.随着计算机技术的发展和教学的不断改革,计算机技术逐渐成为了教学过程中的一种必备辅助工具.VB作为一门高校非计算机专业的公共基础课,依然扮演的着重要的角色,在公共教学过程中,一名教师往往要面向多个班级进行教学,人数相对较多,批改课程作业成了教师教学过程中一项艰巨任务,这极大地影响教师对于课程教学其他方面的投入,间接地影响了教学效果.因此,开发一套VB作业自动批改系统是具有现实的意义.目前,对于客观题的自动评分基本能完成,但对于程序设计题目(主观因素较多)的自动评分还处于积极探索阶段,文献[1]给出了一种基于C++开发的解决方案,将评分方案分为静态和动态方案,静态主要是关键字比对,而动态借助API函数对用户程序的控制,模拟程序功能,分析运行结果是否与要求一致.在此解决方案中,需要读取用户的静态文本,完全控制应用程序的方法,程序运行效率相对较低.鉴于此,本文提出了基于VB环境开发VB程序自动评分系统,采用标准程序注入的方法,通过注入程序对VB程序进行评分,在降低开发难度的同时提高了程序的运行效率.实现对VB应用程序的自动批阅,有两个方面的工作,一是要检测程序中的对象(即控件)的属性是否正确,此部分称之为静态检测[2];二是检测程序的行为(即功能)是否符合要求,此部分称之为动态检测[2].在批阅过程中,首先要制定标准的评分代码,然后将评分代码嵌入到学生的应用程序中,接着利用评分程序启动学生的VB程序,进行编译、运行,验证程序的正确性,最后关闭程序窗体,输出分数和评语.根据VB程序的特点,VB对象的基本属性设置都保存在窗体文件中,如下面的程序形式以纯文本格式保存在frm文件中:以文本框控件为例,文献[1]和文献[2]中对于静态检测部分的思想是利用VB 控件保存的特点,批改的方法就是将学生文件读入,然后和标准文件进行比较从而判断控件的正确性,此方法从理论角度来讲是可行的,但实际程序设计中,需要编写大量的重复代码,而且标准代码必须十分精确,否则就会出错,如丢失一个空格有可能造成判断错误,而且对于多余控件很难进行检测.对于动态检测过程,就是检测程序功能是否满足,一方面要检测的语法是否合法,另一方面检测程序的功能是否满足,对于语法的检测,可以借助VB编译系统即可完成.对于功能检测,文献[2]的基本思想是利用Windows程序运行的机制,通过Windows API函数控制窗体[3],向窗体控件发送消息,如鼠标单击、字符等,模拟程序运行过程,判断程序功能是否与既定功能一致,从而判断程序的正确与否.例如某一简单程序,效果和要求如图1所示.首先利用Windows API函数启动VB程序,并获取窗口句柄,然后向窗口发送键盘消息〈F5〉启动窗体,然后搜索窗体上的控件句柄,然后根据其句柄向其发送消息,如分别向两个文本框发送消息字符“12”和“22”,再向“=”按钮发送鼠标单击消息,最后检测第3个文本框中的值是否等于前两个文本发送消息之和,此解决方案的问题主要有:如果学生的标题设置错误,将无法获取控件的句柄;VB中的某些控件没有窗口句柄,如标签控件,利用此方法将无法进行评阅.文献[1]对此方案进行了改进,通过在学生程序的Form_Load事件过程中内嵌代码,将各控件的句柄输出到临时文件中,评分程序再将此句柄读入,从而进一步控制用户控件.事件驱动模式是VB程序设计的主流[4-5],根据此特性,提出将评分程序制作为标准VB代码,在评分过程中,将代码内嵌到学生程序中.对于静态检测部分,代码放在窗体的Active事件过程中,此代码主要是遍历学生窗体中的所有控件,然后逐一比较控件的属性,从而实现程序的静态检测;动态检测部分,代码放在Unload事件[6]过程中,在此过程中,根据程序功能调用对应的事件过程来检测程序的正确与否,这样的好处在于:一是批改程序只需要控制程序主窗体,不需要直接控制窗体控件,大大降低了程序的复杂性;二是把检测代码和学生代码集成于一个整体,大大提高了评阅程序的效率和正确性.2.1 程序流程批改程序流程的整体过程如图2所示.具体过程为:(1)制定评分代码,将所有评分的代码保存在一个文本文件中.(2)将评分代码附加到学生的窗体文件(.frm)中,静态评分代码放置在窗体的Form_Active事件过程,动态评分代码放置在Form_UnLoad事件过程中. (3)利用Shell函数启动学生的VB作业程序,利用API函数FindWindow()获取当前窗体的句柄.(4)利用PostMessage()函数向窗体发送〈F5〉键消息,从而启动程序窗体. (5-1)如果编译通过,则启动窗体程序,这时出发了窗体的Active事件,从而执行嵌入的评分代码中的Form_Active事件过程,即可评阅静态部分,如果编译没有通过,则说明程序的语法检测不通过,为了合理、公平性,在此将启动静态评分二程序,此程序的原理与文献[1]和文献[2]中方法一致,通过文本比对的方法来评阅学生的静态部分.(5-2)如果编译通过,利用API函数GetForegroundWindow()获取启动窗体的句柄.(6)关闭窗体,这时会触发窗体的UnLoad事件,从而执行嵌入的评分代码中Form_UnLoad事件过程,该事件过程的内容即可评阅动态部分.2.2 静态检测过程静态检测的首先是制作静态检测代码,静态检测代码由评分系统自动生成,系统读入作业标准文件后将会遍历作业文件中所有控件及其相关属性,最终生成标准评分代码以文本文件形式保存.静态检测过程中,系统会将评分代码注入到学生作业文件的Form_Active事件过程中,然后遍历控件数组Controls,通过名称获取控件对象,然后逐一比对其属性是否正确,其过程如下面程序所示(以判断名称为“cmd_ok”的按钮控件为例).2.3 动态检测过程动态监测需要判断程序的功能性问题,目前动态监测代码手动制作评分文件,将评分文件以文本文件形式保存.在评阅过程中,系统将动态检测的代码注入到窗体的Form_UnLoad事件过程中,当关闭窗体时,将执行评分代码,检测功能的正确与否.以图2为例,程序首先为各输入框设置值,然后调用功能程序,最后判断输出结果与期望结果是否一致.评阅过程如下程序所示.为了验证程序的功能性,以实际学生程序为例子,实验内容要求如下:随机抽取了20名学生的程序,进行评分,评分程序运行效果如图3所示.为了检测系统批改成绩的准确性,对20个学生的程序进行手动评分,两组评分结果的对比如表1所示.从实验结果数据来看,程序评分两个部分中,静态评分和手动评分没有误差,完全适应,而动态评分则存在评分结果不一致的情况,但总体来说能满足日常的教学要求.造成这样的结果有两方面的原因,一是学生程序不能通过编译,评分程序无法正常运行作业程序;二是学生没有按照作业要求编写程序,评分程序无法调用学生过程函数.本文通过对VB程序设计语言的特点,利用Windows API,基于Windows消息机制、模拟Windows系统发送消息,通过为源程序加载、注入评分代码,驱动学生程序自动运行,利用静态检测和动态检测相结合的方法实现了VB程序自动评分的功能,并通过测试数据反映了程序的稳定性和可用性,但在动态检测部分还存在一定的误差,这是后续需要改进的地方.【相关文献】[1]付亚臣.基于Windows消息机制的VB编程题评分系统的研究与应用[D].大连:大连海事大学,2012.[2]段汉周.VB程序设计考核自动评阅系统中若干问题的研究[J].计算机工程,2001(4):167-168.[3]金龙海.略论如何用API函数优化VB窗口程序[J].吉林师范大学学报(自然科学版),2012(3):55-56.[4]章可,刘永生.利用VB实现Windows操作题的自动评分[J].福建电脑,2013(4):161-163.[5]周东明,王进忠.基于VB和Windows API的游戏监控系统[J].辽宁大学学报(自然科学版),2003(3):252-254.[6]朱荆州.Windows API在VB中的应用[J].计算机与数字工程,2003(6):21-23.。
基于的在线考试系统设计与实现摘要:该文基于技术开发出在线考试系统,实现试题随机生成、考生在线即时考试、即时评分、管理员对试题进行增删改查、成绩统计和查询及管理用户信息功能。
具有良好的开放性、方便性和灵活性。
既减少了教师的工作量,又提高教学效率,从而使考试更趋于公正、客观、更激发学生的学习兴趣。
同时也节约了考试资源,保护了环境。
关键词:在线考试;试卷;;即时评分中图分类号:tp311 文献标识码:a 文章编号:1009-3044(2013)07-1503-04随着网络技术的发展和广泛应用,传统教育的方式和方法面临着新的挑战,远程教育已被广泛的应用到学校和社会其他部门,为教育提供了新的途径,。
但是,远程教育软件的开发目前还处于起步阶段,随着计算机技术的不断发展,就要求有更好、更完善的软件系统应用到远程教育当中去。
远程教育包括很多环节,如教学系统、答疑系统和考试系统等。
其中很重要的一个环节就是在线考试系统,同时它也是最难实现的环节[1]。
在传统方式下,考试管理者的出题、批改试卷及统计成绩都是非常繁重的工作,但随着计算机科学技术的日趋完善,软硬件技术的发展,人们传统的思想观念和生活方式开始改变,一切向着高效率发展,利用现代的信息技术可以使考试这项繁重的工作变得高效、简捷。
一个完善的在线考试系统应可以通过网络自动完成题目生成,试卷提交、成绩批阅及统计分析等工作,能够提供一个更轻松、更快捷的考试环境。
考生提交试卷后,系统自动评分,学生在考试结束后能立即查看自己的考试结果,并可随时查阅已作答试题,发现自己的不足,从而查漏补缺,更好的提高学习效率。
开发的应用程序(尤其是数据库应用程序)代码操作数据库效率高、具有组件丰富、语言简单、功能强大的优点,使我们能在最短的时间内完成系统开发满足模拟考试系统的需要[2]。
是.net的一个关于数据库访问的子系统,利用提供的支持,用户可以在中自由访问和操作数据库,实现对数据库的操作[3]。
自动组卷及评分系统的设计与实现作者:杨晓敏来源:《计算机时代》2012年第03期摘要:利用VB语言开发了一个自动组卷及评分系统。
系统主要由试题库、自动组卷、答题及评分三大部分组成。
试题库中存有大量的试题资料,为自动组卷提供了充足的试题来源;自动组卷模块能够根据出题者的意图,自动生成一套合理的试卷;而答题及评分模块能对生成的试题给出正确答案并对答题及答卷实现自动译分。
关键词:自动组卷;考试系统;试题库;评分系统中图分类号:TP311.1 文献标志码:A 文章编号:1006-8228(2012)03-10-02Design and implementation of a system of automatic composition of examination papers and gradingYang Xiaomin(Department of Computer Science and Technology, Yuncheng University, Yuncheng,Shanxi 044000, China)Abstract: In this paper, the author develops a system of automatic composition of examination papers and grading by using VB language. It is mainly made up by three parts: the question database, the auto-paper-composing module, and the module of testing and grading on computers. The question database stores enough test questions. The auto-paper-composition module creates an examination paper automatically following the mind of examiner. The testing and grading module gets examinees answer questions on computer and gives score automatically.Key words: auto-paper-composition; examination system; question database; grading system0 引言考试是对学生的学习效果和技能达标的一种快捷方便的检验方法。
Design and Implementation Of Automatic Assessment System of Visual Basic Programming 作者: 胡海峰[1] 赵阳[2]
作者机构: [1]嘉兴学院,浙江平湖314200 [2]宁波大学,浙江宁波315212
出版物刊名: 金华职业技术学院学报
页码: 78-81页
主题词: 自动阅卷 Visual Basic WSH
摘要:VB编程题的传统人工阅卷缺乏客观性与公正性,并且存在阅卷工作量大等诸多的缺点。
针对一般VB程序编程考核题的自动评判的阅卷系统的实现,对多种不同类型考题给出了不同的解决方案,并详细描述了该系统的设计思想、设计目的,给出了阅卷过程的实现要点,经实践该系统用户界面设计友好,易于操作。
长江大学Yangtze university VB课程设计实习报告专业班级﹕储运11001学生学号﹕201007078学生姓名﹕彭壮班级序号﹕16指导老师﹕冯翠丽完成时间﹕2011-12-22一.设计题目学生成绩管理系统二.设计思路从文本中读取文件数据,利用VB的顺序结构,选择结构,循环结构编写程序代码,最终将各代码写入界面设计中的各菜单下。
三.程序实现的目标本程序将实现从文本中读取数据,赋值数据,运算数据,实现对学生的加权平均值,名次,全班每门课的分数段,不及格同学名单,优等生名单等运算,并写入文件。
四.程序设计框图五.运行结果原始成绩课程学分原始成绩和原始课程学分文件读取原始课程文件加权平均分成绩排名每门课程的班级平均分加权平均分分布每门课程及分布成绩条优等生名单不及格学生名单成绩查询系统按姓名查找按学号查找按名次查找六.源程序模块代码:Type xscjbxh As Stringxm As Stringcj(1 To 5) As Integeraver As Singlemc As IntegerEnd TypeType kechen编号As Integer课程名As String学分As SingleEnd TypePublic stu() As xscjbPublic ke() As kechenPublic N%, M%, Zxf%Public str As String窗体代码:①Form1:Public Function space1(ByVal sss As String) Dim x%x = InStr(sss, " ")Do While x > 0sss = Replace(sss, " ", " ")x = InStr(sss, " ")Loopspace1 = sssEnd FunctionPrivate Sub ajqfspm_Click()Dim t!, k As SingleForm1.ClsForm1.FontSize = 12Form1.Print Tab(25); "学号姓名平均分名次" stu(0).mc = 0stu(0).aver = 0t = 1For i = 1 To Nt = 1If stu(i).aver = stu(i - 1).aver Thenstu(i).mc = stu(i - 1).mcElse:For j = 1 To NIf stu(i).aver < stu(j).aver Thent = t + 1End IfNext jEnd Ifstu(i).mc = tForm1.Print Tab(25); stu(i).xh; Tab(34); stu(i).xm; Tab(44); stu(i).aver; Tab(54); stu(i).mcNext iEnd SubPrivate Sub amccz_Click()Dim l!, x!Form1.Clsl = Val(InputBox("请输入名次"))For i = 1 To NIf stu(i).mc = l Thenx = x + 1: Form1.Print "学号姓名英语VB 化学物理数学加权平均分名次":Print Tab(2); stu(i).xh; Tab(9); stu(i).xm; Tab(18); stu(i).cj(1); Tab(27); stu(i).cj(2); Tab(34); stu(i).cj(3); Tab(43); stu(i).cj(4); Tab(52); stu(i).cj(5); Tab(60); stu(i).aver; Tab(75); stu(i).mc: Form1.Print End IfNext iIf x = 0 Then MsgBox ("无效请重新输入!")End SubPrivate Sub axhcz_Click()Form1.ClsDim v!, x!v = Val(InputBox("请输入学号"))For i = 1 To NIf stu(i).xh = v Thenx = x + 1: Form1.Print "学号姓名英语VB 化学物理数学加权平均分名次":Print Tab(2); stu(i).xh; Tab(9); stu(i).xm; Tab(18); stu(i).cj(1); Tab(27); stu(i).cj(2); Tab(34); stu(i).cj(3); Tab(43); stu(i).cj(4); Tab(52); stu(i).cj(5); Tab(60); stu(i).aver; Tab(75); stu(i).mc: Form1.Print End IfNext iIf x = 0 Then MsgBox ("学号无效请重新输入!")End SubPrivate Sub axmcz_Click()Form1.ClsForm1.FontSize = 9Dim k$, x!k = InputBox("请输入姓名")For i = 1 To NIf stu(i).xm = k Thenx = i: Form1.Print "学号姓名英语VB 化学物理数学加权平均分名次":Tab(27); stu(i).cj(2); Tab(34); stu(i).cj(3); Tab(43); stu(i).cj(4); Tab(52); stu(i).cj(5); Tab(60); stu(i).aver; Tab(75); stu(i).mc: Form1.Print End IfNext iIf x = 0 Then MsgBox ("查无此人请重新输入!")End SubPrivate Sub bjgxsmd_Click()Form1.ClsForm1.FontSize = 16Form1.Print Tab(12); "挂科学生的名单!"Form1.FontSize = 12Form1.PrintForm1.PrintOpen "不及格学生名单.txt" For Output As #1Form1.Print Tab(30); "学号"; Tab(38); "姓名"; Tab(46); "课程名"; Tab(54); "学分"; Tab(62); "成绩"Write #1, "学号", "姓名", "课程名", "学分", "成绩"Form1.PrintFor i = 1 To MFor j = 1 To NIf stu(j).cj(i) < 60 ThenTab(54); ke(i).学分; Tab(62); stu(j).cj(i)Write #1, stu(j).xh, stu(j).xm, ke(i).课程名, ke(i).学分, stu(j).cj(i) End IfNext jNext iClose #1End SubPrivate Sub Form_Load()Dim st$(), Str1$Open App.Path + "\学生成绩.txt" For Input As #1Open App.Path + "\课程学分.txt" For Input As #2N = 0: M = 0: Zxf = 0Line Input #1, Str1Do While Not EOF(1)N = N + 1ReDim Preserve stu(N)Line Input #1, Str1Str1 = Trim(Str1)Str1 = space1(Str1)st1 = Split(Str1, " ")stu(N).xh = st1(0)stu(N).xm = st1(1)stu(N).cj(1) = st1(2)stu(N).cj(2) = st1(3)stu(N).cj(3) = st1(4)stu(N).cj(4) = st1(5)stu(N).cj(5) = st1(6)stu(N).aver = 0stu(N).mc = 0LoopLine Input #2, Str1Do While Not EOF(2)M = M + 1ReDim Preserve ke(M) Line Input #2, Str1Str1 = Trim(Str1)Str1 = space1(Str1)st1 = Split(Str1, " ")ke(M).编号= st1(0)ke(M).课程名= st1(1)ke(M).学分= st1(2)Zxf = Zxf + ke(M).学分LoopClose #1Close #2End SubPrivate Sub jqpjffb_Click() Form1.ClsForm1.FontSize = 12 PrintForm1.PrintFor i = 1 To 6Form1.PrintNext iDim s(5 To 10), gFor i = 1 To Ng = stu(i).aver \ 10Select Case gCase 0 To 5s(5) = s(5) + 1Case 6s(6) = s(6) + 1Case 7s(7) = s(7) + 1Case 8s(8) = s(8) + 1Case 9s(9) = s(9) + 1End SelectNext iPrint Tab(30); " 范围人数"If s(5) <> 0 Then Print Tab(19); "<60分"; s(5)PrintFor i = 6 To 8If s(i) <> 0 Then Print Tab(29); i * 10; "-"; (i * 10 + 9); Tab(44); s(i) PrintNext iIf s(9) <> 0 Or s(10) <> 0 Then Print Tab(30); "90-100"; Tab(44); s(9) + s(10)End SubPrivate Sub mmkcdbjpjf_Click()Form1.ClsDim a, b, c, d, ea = 0:b = 0:c = 0:d = 0:e = 0For i = 1 To Na = a + stu(i).cj(1)b = b + stu(i).cj(2)c = c + stu(i).cj(3)d = d + stu(i).cj(4)e = e + stu(i).cj(5)Next ia = Format(a / N, "0.00")b = Format(b / N, "0.00")c = Format(c / N, "0.00")d = Format(d / N, "0.00")e = Format(e / N, "0.00")Form1.FontSize = 12Form1.Print Tab(10); "课程平均分" Form1.PrintForm1.FontSize = 12Form1.Print Tab(10); "英语"; Tab(26); aForm1.PrintForm1.Print Tab(10); "VB"; Tab(26); bForm1.PrintForm1.Print Tab(10); "化学"; Tab(26); cForm1.PrintForm1.Print Tab(10); "物理"; Tab(26); dForm1.PrintForm1.Print Tab(10); "数学"; Tab(26); e End SubPrivate Sub mmkcjfb_Click()Form2.ShowForm1.ClsForm1.FontSize = 12PrintForm1.PrintFor i = 1 To 6Form1.PrintNext iDim s(5 To 10), gFor i = 1 To Ng = stu(i).aver \ 10Select Case gCase 0 To 5s(5) = s(5) + 1Case 6s(6) = s(6) + 1Case 7s(7) = s(7) + 1Case 8s(8) = s(8) + 1Case 9s(9) = s(9) + 1End SelectNext iPrint Tab(30); " 范围人数"If s(5) <> 0 Then Print Tab(19); "<60分"; s(5)PrintFor i = 6 To 8If s(i) <> 0 Then Print Tab(29); i * 10; "-"; (i * 10 + 9); Tab(44); s(i) PrintNext iIf s(9) <> 0 Or s(10) <> 0 Then Print Tab(30); "90-100"; Tab(44); s(9) + s(10)End SubPrivate Sub mwxsdcjt_Click()Form1.ClsForm1.FontSize = 12Open "学生成绩条.Txt" For Output As #1Form1.Print "学号姓名英语VB 化学物理数学加权平均分名次"Write #1, "学号", "姓名", "英语", "VB", "化学", "物理", "数学", "加权平均分", "名次"For i = 1 To Nstu(i).aver = 0For j = 1 To Mstu(i).aver = stu(i).aver + stu(i).cj(j) * ke(j).学分Next jstu(i).aver = Round(stu(i).aver / Zxf, 2)Next iFor i = 1 To NPrint Tab(2); stu(i).xh; Tab(9); stu(i).xm; Tab(18); stu(i).cj(1); Tab(27); stu(i).cj(2); Tab(34); stu(i).cj(3); Tab(43); stu(i).cj(4); Tab(52); stu(i).cj(5); Tab(60); stu(i).aver; Tab(75); stu(i).mcWrite #1, stu(i).xh, stu(i).xm, stu(i).cj(1), stu(i).cj(2), stu(i).cj(3), stu(i).cj(4), stu(i).cj(5), stu(i).aver, stu(i).mcNext iClose #1End SubPrivate Sub mwxsdjqfs_Click()Form1.ClsForm1.FontSize = 12数学加权平均分"For i = 1 To Nstu(i).aver = 0For j = 1 To Mstu(i).aver = stu(i).aver + stu(i).cj(j) * ke(j).学分Next jstu(i).aver = Round(stu(i).aver / Zxf, 2)Next iFor i = 1 To NPrint Tab(2); stu(i).xh; Tab(9); stu(i).xm; Tab(18); stu(i).cj(1); Tab(27); stu(i).cj(2); Tab(34); stu(i).cj(3); Tab(43); stu(i).cj(4); Tab(52); stu(i).cj(5); Tab(60); stu(i).averNext iEnd SubPrivate Sub ydsmd_Click()Form1.ClsForm1.PrintForm1.PrintOpen "优等生名单.txt" For Output As #1数学加权平均分名次"Write #1, "学号", "姓名", "英语", "VB", "化学", "物理", "数学", "加权平均分", "名次"Form1.PrintDim e!For i = 1 To NFor j = 1 To MIf stu(i).cj(j) >= 95 Thene = e + 1End IfNext jIf stu(i).aver >= 90 Or stu(i).mc <= 3 Or (stu(i).aver >= 85 And e = 2) ThenForm1.Print Tab(2); stu(i).xh; Tab(9); stu(i).xm; Tab(18); stu(i).cj(1); Tab(27); stu(i).cj(2); Tab(34); stu(i).cj(3); Tab(43); stu(i).cj(4); Tab(52); stu(i).cj(5); Tab(60); stu(i).aver; Tab(75); stu(i).mcWrite #1, stu(i).xh, stu(i).xm, stu(i).cj(1), stu(i).cj(2), stu(i).cj(3), stu(i).cj(4), stu(i).cj(5), stu(i).aver, stu(i).mcEnd IfNext iClose #1End SubPrivate Sub yscjwj_Click()Dim k!Form1.ClsForm1.FontSize = 12Form1.PrintForm1.Print "学号姓名英语VB 化学物理数学"For i = 1 To NForm1.Print Tab(2); stu(i).xh; Tab(9); stu(i).xm; Tab(18); stu(i).cj(1); Tab(27); stu(i).cj(2); Tab(34); stu(i).cj(3); Tab(43); stu(i).cj(4); Tab(52); stu(i).cj(5)Next iEnd SubPrivate Sub yskcwj_Click()Dim i!Form1.ClsForm1.PrintForm1.PrintForm1.FontSize = 12Form1.Print Tab(8); "编号课程名称课程学分" Form1.PrintFor i = 1 To MForm1.Print Tab(9); ke(i).编号; Tab(21); ke(i).课程名; Tab(41); ke(i).学分Form1.PrintNext iEnd Sub②Form2:Dim s(5 To 10), i!, k!, j!Private Sub Command1_Click()Form2.ClsForm2.PrintForm2.FontSize = 12Form2.Print Tab(30); "范围"; Tab(41); "课程"; Tab(52); "人数"Form2.FontSize = 12Form2.PrintFor k = 5 To 10s(k) = 0Next ki = 1For j = 1 To Ng = stu(j).cj(i) \ 10Select Case gCase 0 To 5s(5) = s(5) + 1Case 6s(6) = s(6) + 1Case 7s(7) = s(7) + 1Case 8s(8) = s(8) + 1Case 9s(9) = s(9) + 1Case 10s(10) = s(10) + 1End SelectNext jForm2.Print Tab(30); "60分以下"; Tab(41); ke(i).课程名; Tab(51); s(5)Open App.Path + "\英语.Txt" For Output As #1Write #1, "60分以下", s(5)For k = 6 To 8Form2.Print Tab(29); k * 10; "-"; (k * 10 + 9); Tab(41); ke(i).课程名; Tab(51); s(k)Write #1, k * 10 & "-" & (k * 10 + 9), s(k)Next kForm2.Print Tab(30); "90-100"; Tab(41); ke(i).课程名; Tab(51); s(9) + s(10)Form2.PrintWrite #1, "90 - 100", s(9) + s(10)Close #1For k = 5 To 10s(k) = 0Next kEnd SubPrivate Sub Command2_Click()Form2.ClsForm2.PrintForm2.FontSize = 12Form2.Print Tab(30); "范围"; Tab(41); "课程"; Tab(52); "人数"Form2.FontSize = 12Form2.Printi = 2For j = 1 To Ng = stu(j).cj(i) \ 10Select Case gCase 0 To 5s(5) = s(5) + 1Case 6s(6) = s(6) + 1Case 7s(7) = s(7) + 1Case 8s(8) = s(8) + 1Case 9s(9) = s(9) + 1Case 10s(10) = s(10) + 1End SelectNext jForm2.Print Tab(30); "60分以下"; Tab(41); ke(i).课程名; Tab(51); s(5)Open App.Path + "\VB.Txt" For Output As #1Write #1, "60分以下", s(5)For k = 6 To 8Form2.Print Tab(29); k * 10; "-"; (k * 10 + 9); Tab(41); ke(i).课程名; Tab(51); s(k)Write #1, k * 10 & "-" & (k * 10 + 9), s(k)Next kForm2.Print Tab(30); "90-100"; Tab(41); ke(i).课程名; Tab(51); s(9) + s(10)Form2.PrintWrite #1, "90 - 100", s(9) + s(10)Close #1For k = 5 To 10s(k) = 0Next kEnd SubPrivate Sub Command3_Click()Form2.ClsForm2.PrintForm2.FontSize = 12Form2.Print Tab(30); "范围"; Tab(41); "课程"; Tab(52); "人数"Form2.FontSize = 12Form2.Printi = 3For j = 1 To Ng = stu(j).cj(i) \ 10Select Case gCase 0 To 5s(5) = s(5) + 1Case 6s(6) = s(6) + 1Case 7s(7) = s(7) + 1Case 8s(8) = s(8) + 1Case 9s(9) = s(9) + 1Case 10s(10) = s(10) + 1End SelectNext jForm2.Print Tab(30); "60分以下"; Tab(41); ke(i).课程名; Tab(51); s(5)Open App.Path + "\化学.Txt" For Output As #1Write #1, "60分以下", s(5)For k = 6 To 8Form2.Print Tab(29); k * 10; "-"; (k * 10 + 9); Tab(41); ke(i).课程名; Tab(51); s(k)Write #1, k * 10 & "-" & (k * 10 + 9), s(k)Next kForm2.Print Tab(30); "90-100"; Tab(41); ke(i).课程名; Tab(51); s(9) + s(10)Form2.PrintWrite #1, "90 - 100", s(9) + s(10)Close #1For k = 5 To 10s(k) = 0Next kEnd SubPrivate Sub Command4_Click()Form2.ClsForm2.PrintForm2.FontSize = 12Form2.Print Tab(30); "范围"; Tab(41); "课程"; Tab(52); "人数"Form2.FontSize = 12Form2.Printi = 4For j = 1 To Ng = stu(j).cj(i) \ 10Select Case gCase 0 To 5s(5) = s(5) + 1Case 6s(6) = s(6) + 1Case 7s(7) = s(7) + 1Case 8s(8) = s(8) + 1Case 9s(9) = s(9) + 1Case 10s(10) = s(10) + 1End SelectNext jForm2.Print Tab(30); "60分以下"; Tab(41); ke(i).课程名; Tab(51); s(5)Open App.Path + "\物理.Txt" For Output As #1Write #1, "60分以下", s(5)For k = 6 To 8Form2.Print Tab(29); k * 10; "-"; (k * 10 + 9); Tab(41); ke(i).课程名; Tab(51); s(k)Write #1, k * 10 & "-" & (k * 10 + 9), s(k)Next kForm2.Print Tab(30); "90-100"; Tab(41); ke(i).课程名; Tab(51); s(9) + s(10)Form2.PrintWrite #1, "90 - 100", s(9) + s(10)Close #1For k = 5 To 10s(k) = 0Next kEnd SubPrivate Sub Command5_Click()Form2.ClsForm2.PrintForm2.FontSize = 12Form2.Print Tab(30); "范围"; Tab(41); "课程"; Tab(52); "人数"Form2.FontSize = 12Form2.Printi = 5For j = 1 To Ng = stu(j).cj(i) \ 10Select Case gCase 0 To 5s(5) = s(5) + 1Case 6s(6) = s(6) + 1Case 7s(7) = s(7) + 1Case 8s(8) = s(8) + 1Case 9s(9) = s(9) + 1Case 10s(10) = s(10) + 1End SelectNext jForm2.Print Tab(30); "60分以下"; Tab(41); ke(i).课程名; Tab(51); s(5)Open App.Path + "\数学.Txt" For Output As #1Write #1, "60分以下", s(5)For k = 6 To 8Form2.Print Tab(29); k * 10; "-"; (k * 10 + 9); Tab(41); ke(i).课程名; Tab(51); s(k)Write #1, k * 10 & "-" & (k * 10 + 9), s(k)Next kForm2.Print Tab(30); "90-100"; Tab(41); ke(i).课程名; Tab(51); s(9) + s(10)Form2.PrintWrite #1, "90 - 100", s(9) + s(10)Close #1For k = 5 To 10s(k) = 0Next kEnd Sub七.程序运行中待改进的缺点1.没有修改的功能2.运行顺序有局限性,必须先运行计算平均分步骤,才能正常完成后面的排序及查询等3.部分数据统计出的结果表达方式不够直观4.查询成绩时取消按钮未发挥作用,最好改为关闭窗口。
基于WindowsAPI的VB编程题自动评分系统的研究与实现的开题报告一、选题背景及意义随着计算机科学技术的发展,编程已经成为了重要的技能之一,同时对于计算机专业的学生来说,编程也是必修的课程之一。
在学习编程的过程中,编程题是不可或缺的一部分,而编程题的评分体系对于学生的学习和老师的教学也非常重要。
传统的编程题评分通常是通过手动评分的方式进行的,这种方式虽然准确度高,但是效率低,且不能实现自动化评分,因此需要人力投入较多。
基于上述的问题和需求,本文提出了一种基于WindowsAPI的VB编程题自动评分系统,旨在解决传统评分方式的缺陷,提高编程题评分的速度和精度。
同时,该系统还可以提高教学效果,通过对学生代码的详细分析,可以帮助学生更好地理解语法规则、调试技巧等知识点。
二、研究内容本文的主要研究内容包括以下几个方面:1. WindowsAPI的使用技术通过学习WindowsAPI的相关技术,研究WindowsAPI的调用方式和使用方法,为编程题自动评分系统提供技术支持。
2. VB语言的应用技术研究VB语言的基础知识和高级应用技术,了解VB编程的各种数据类型、语法结构和调试方法等,为编程题自动评分系统的开发提供技术支持。
3. 编程题自动评分系统的设计与实现基于WindowsAPI和VB语言的技术特点,设计编程题自动评分系统的核心算法和功能模块,实现系统的自动评分、报告生成、数据存储等功能。
三、研究方法本文的研究方法主要采用文献资料法、调查法和实验法。
1. 文献资料法对于WindowsAPI和VB语言的使用技术,本文将通过文献调研、阅读相关书籍、文章、论文和课程资料等方式,系统地了解相关技术知识和理论,为编程题自动评分系统的设计和实现提供技术支持。
2. 调查法通过对学生和教师的调查,了解编程题评分的实际需求和评分方式,为系统开发提供需求分析和技术支持。
3. 实验法以WindowsAPI和VB语言为基础,设计并实现编程题自动评分系统的原型,通过实验及用户反馈等方式,不断对系统进行改进和完善,最终达到高效自动化评分的目的。