999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

SQL考試隨機組卷改卷系統(tǒng)的設計和實現(xiàn)

2015-04-29 00:00:00龍瓊芳
科技資訊 2015年1期

作者簡介:

龍瓊芳(1982年2月),女,漢族,湖南攸縣人,現(xiàn)任教于廣東省東莞市經(jīng)濟貿(mào)易學校計算機科組,講師,碩士學位,研究方向:軟件工程。

摘要:針對SQL(結構化查詢語言)課程操作考試的組卷和閱卷中的實際問題,對VB訪問SQL Server 2000 數(shù)據(jù)庫使用的ADO技術進行了闡述,論述采用VB結合SQL Server 2000實現(xiàn)SQL考試隨機組卷改卷系統(tǒng)設計的依據(jù)和實現(xiàn)方法,并給出了系統(tǒng)開發(fā)過程中所需的一些關鍵技術的程序代碼。

關鍵詞:ADO VB SQL 隨機組卷 自動閱卷

中圖分類號:G712文獻標識碼:A 文章編號:1672-3791(2012)01(a)-0000-00

1 問題的提出

SQL是結構化查詢語言的簡稱,課程目標是要求學生掌握在SQL Server 2000中編寫查詢的能力,在教學過程中每次課每個學生都需要完成大量的練習,由于每一個查詢都是一個獨立的“.sql”文件,因此如果采用人工檢查的方式不但工作量大而且容易出錯。而使用計算機輔助改題不但速度快而且效率高。

此外,為了避免考試的時候相鄰學生互相抄襲、減少考生作弊的情況,用計算機生成試卷也利實行隨機組卷。

2 設計思想、關鍵技術和關鍵問題

SQL課程練習和考試都在SQL Server 2000 下完成,每一個小題都是一個獨立的“.sql”文件。因此改卷的過程就是驗證每一個“.sql”文件在SQL Server 2000環(huán)境下執(zhí)行的結果是否正確的過程。SQL練習和考試的題目都是一個個獨立的查詢要求,例如:請查詢“學生課程”數(shù)據(jù)庫中姓“何”或“蘇”的教師且學時數(shù)大于70的教師名和學時數(shù)。因此出卷的過程就是將一組難度分布合理的查詢題目列出來。為了能夠單獨使用組卷和改卷兩個模塊,例如平時練習時題目是固定的只需要使用改卷部分,這兩個模塊并不整合在一起而是獨立開來的。

系統(tǒng)包括試題數(shù)據(jù)庫、題庫數(shù)據(jù)庫、改卷程序、組卷程序,其中,試題數(shù)據(jù)庫是指題目本身進行查詢或修改操作的數(shù)據(jù)庫,題庫數(shù)據(jù)庫是存放所有試題的數(shù)據(jù)庫,改卷程序和組卷程序均由Visual Basic 6.0編寫,標準答案和學生答案均為一組“.sql”文件,生成的試卷可以選擇文本文檔或者word文檔。

2.1 Visual Basic訪問SQL Server數(shù)據(jù)庫技術

使用Visual Basic作為前端開發(fā)語言,與SQL Server接口有幾種常用的方法,即:數(shù)據(jù)訪問對象/Jet、為ODBC API編程、使用SQL Server的Visual Basic庫(VBSQL)為DB庫的API編程、ADO 數(shù)據(jù)對象(Active Data Objects)。以上幾種訪問SQL Server的方法各有各的特點。DAOs方法是基于對象的,因而便于使用,但是它是從Visual Basic到SQL Server最慢的連接方式。ODBC API和VBSQL方法從本質(zhì)上講是基于程序的。ODBC API方法通用性好,允許最強的互操作性,編程簡單,但速度慢于VBSQL方法。VBSQL方法通過VBSQL控件,提供了重要的SQL Server前端應用程序所需的靈活性、強大功能和良好性能。它具有真正的事件驅動及錯誤處理能力,完全支持異步處理、游標和計算列等。這些都是VBSQL方法超出其它方法的優(yōu)勢,但其編程稍復雜。

2.2 ADO技術

ADO向我們提供了一個熟悉的,高層的對OLE DB的Automation封裝接口。對那些熟悉RDO的程序員來說,你可以把OLE DB比作是ODBC驅動程序。如同RDO對象是ODBC驅動程序接口一樣,ADO對象是OLE DB的接口;如同不同的數(shù)據(jù)庫系統(tǒng)需要它們自己的ODBC驅動程序一樣,不同的數(shù)據(jù)源要求它們自己的OLE DB提供者(OLE DB provider)。

ADO向VB程序員提供了很多好處。包括易于使用,熟悉的界面,高速度以及較低的內(nèi)存占用。同傳統(tǒng)的數(shù)據(jù)對象層次(DAO和RDO)不同,ADO可以獨立創(chuàng)建。因此你可以只創(chuàng)建一個”Connection”對象,但是可以有多個、獨立的”Recordset”對象來使用它。

2.3 改卷的依據(jù)

檢驗學生答案是否正確有兩種方法:

②判定過程

判定過程即分析學生的“.sql”文件是否正確。例如:請查詢“學生課程”數(shù)據(jù)庫中姓“何”或“蘇”的教師且學時數(shù)大于70的教師名和學時數(shù)。

標準的答案應該為:

use 學生課程

select 教師名,學時數(shù)

from 授課表

where (教師名 like ‘何%’or 教師名 like ‘蘇%’)and(學時數(shù)>70)

go

如果學生的答案與標準答案一致則判定該題得分。方法是讀取學生的“.sql”文件和標準答案的“.sql”文件,進行比對。這種方法的優(yōu)點在于實現(xiàn)簡單,執(zhí)行的效率高,改題速度快,但是也有一些缺點。

A.比對的過程中有些字符甚至語句是結果無關的。例如這里的“use 學生課程”,在實際做題時本條語句若缺不影響查詢。因此對比前應先把學生答案和標準答案中這些結果無關的語句刪除。再如學生若在“from”和“授課表”中間插入了若干空格,由于這些空格不影響語句的執(zhí)行,因此對比前應也先把學生答案和標準答案中這些空格刪除。但是如果學生答案是“fr om”,在“fr”和“om”中間插入了若干空格則應視為錯誤答案,因為這在查詢中將影響查詢的結果。因此像這樣位置不同時有可能結果無關也可能結果相關的字符在實際處理起來比較困難。這種情況一般是學生的誤操作導致,學生只要在做題之后執(zhí)行查詢檢查一下就能發(fā)現(xiàn),因此這種情況發(fā)生的概率非常小,不過仍有可能。

B.有些查詢可能有多種方法實現(xiàn),例如上面的查詢也可以編寫查詢?nèi)缦?/p>

use 學生課程

select 教師名,學時數(shù)

from 授課表

where (教師名 like ‘何%’ and 學時數(shù)>70)or (教師名 like ‘蘇%’ and 學時數(shù)>70)

go

加下劃線的部分有了較大的改變,但實際與where (教師名 like ‘何%’or 教師名 like ‘蘇%’)and(學時數(shù)>70)是一樣的。這樣有多種方法實現(xiàn)的查詢在練習和考試中非常多。

因此,使用判定過程的方法有可能導致判斷錯誤。原因A導致原本錯誤的答案判為正確,而原因B導致原本正確的答案判為錯誤。

② 判定結果

判定結果與判定過程正好相反,不關心學生是如何編寫“.sql”文件的,而是執(zhí)行“.sql”文件然后判斷結果是否與標準答案的執(zhí)行結果相同。

這種方法可以避免上述的原因A和原因B所導致的錯誤判斷,是比較理想的判斷方法。只要仔細的設置試題數(shù)據(jù)庫中的記錄和數(shù)據(jù)就能使得不同的查詢具有不同的結果記錄集合,因而可以避免不同的查詢結果相同,也就不會出現(xiàn)錯判的現(xiàn)象。

但是這種方法也有缺點,由于要對比學生答案的執(zhí)行結果和標準答案的執(zhí)行結果,就必須至少訪問試題數(shù)據(jù)庫兩次,這樣改卷的速度必然會慢很多。

綜合分析以上兩種判定方法的優(yōu)缺點,可以設定先用判定過程比對兩個答案,若比對結果不相同再進行結果判定。這樣既兼顧了改卷的速度又可較大限度的避免錯判。

2.4 試題的設置

根據(jù)考試和改卷的需要,試題的設置需要遵循以下原則:

2.4.1 難易結合,涵蓋所有知識點

對試題根據(jù)考查的知識點和難易程度進行分類,隨機抽題時依據(jù)這種分類進行組卷,使得得到的試卷能夠覆蓋大部分知識點并可以兼顧難易不同程度的比例。這樣可以避免不同學生抽取的試卷難度不一、考查知識點較偏等問題,使得生成的試卷真正反映學生的實際掌握情況。

2.4.2 試題之間沒有交叉干擾

前面的試題不能影響后續(xù)試題的完成結果。例如,如果有試題要更新學號為“200009001”的學生記錄,則之前不能有刪除查詢刪除該記錄,也不能有更新查詢修改該學生的學號。

因此正確安排題目的順序非常重要,也可以在題庫數(shù)據(jù)庫中設置一字段使得某些題目不能同時被抽中。

因此在隨機抽題組成的一份試卷中,選擇查詢的試題要在前,動作查詢的試題應放在選擇查詢后,且所有的動作查詢試題所操作的記錄均不能相同。

2.4.3 所有查詢結果集合要包括特征記錄和邊緣記錄

采用判定結果方法驗證答案的時候,如果試題數(shù)據(jù)庫中的記錄數(shù)量不夠、或者沒有特征記錄、或者沒有邊緣記錄、或者這些記錄不完整,都會導致判斷錯誤。

查詢得到的是一個記錄集合,在這個記錄集合中,有些記錄位于集合中間被稱為特征記錄,有些位于集合邊緣被稱為邊緣記錄。特征記錄反映了這個查詢的一般性,而邊緣記錄反映了這個查詢的特殊性。

例如:1、查找成績小于等于80的學生記錄。在結果集合中成績?yōu)?0的記錄就是一個特征記錄;而成績?yōu)?0的就是這個查詢的邊緣記錄。

再如:2、查找成績大于60的學生記錄。在結果集合中成績?yōu)?0的記錄就是一個特征記錄;而成績?yōu)?0的記錄雖然不在結果集合中,但位于集合的邊緣,它也是一個邊緣記錄。

在以上兩個例子中:如果例1的試題數(shù)據(jù)庫中沒有成績?yōu)?0的記錄,則如果學生的實際查詢?yōu)椤安檎页煽冃∮?0的學生記錄”所得到的結果集合將與預期的結果集合相同。如果例2的試題數(shù)據(jù)庫中沒有成績?yōu)?0的記錄,一旦學生的實際查詢?yōu)椤安檎页煽兇笥诘扔?0的學生記錄” 所得到的結果集合也會與預期的結果集合相同。這樣就會產(chǎn)生誤判。

因此,在設計試題數(shù)據(jù)庫的時候,一定要分析試題本身,找出所有的邊緣特征記錄和一定數(shù)量的特征記錄。試題數(shù)據(jù)庫必須涵蓋這些記錄,采用結果判定才不會出現(xiàn)錯判的情況。

3 隨機組卷程序的設計和實現(xiàn)

組卷程序重點包括連接題庫數(shù)據(jù)庫,抽取試題,最后斷開題庫數(shù)據(jù)庫等操作。

3.1 連接題庫數(shù)據(jù)庫的代碼

(其中Text1.Text為題庫數(shù)據(jù)庫所在服務器名或IP)

‘創(chuàng)建對象

Dim objcn As Connection

Dim objcom As Command

Dim objrs As Recordset

‘實例化對象

Set objcn = New Connection

Set objcom = New Command

Set objrs = New Recordset

‘創(chuàng)建數(shù)據(jù)庫連接

objcn.Provider = “SQLOLEDB”

objcn.ConnectionString = “User ID=sa;PWD=;Data Source=” + Text1.Text + “;Initial Catalog=SQL期末考試試題”

RichTextBox1.Text = “SQL期末考試試題” vbCrLf

3.2 斷開題庫數(shù)據(jù)庫的代碼

‘斷開連接

objcn.Close

‘釋放連接

Set objcn = Nothing

3.3抽取試題的代碼如下:(以生成第一大題的代碼為例)

‘生成第一大題

For i = 1 To 12

Label1: Randomize ‘ 對隨機數(shù)生成器做初始化的動作。

MyValue = Int((102 * Rnd) + 1001) ‘ 生成 1001 到 1102 之間的隨機數(shù)值。

For j = 1 To i – 1

If one(j) = MyValue Then

GoTo Label1:

End If

Next j

one(i) = MyValue

Next i

4 改卷程序的設計和實現(xiàn)

改卷程序依次讀取學生的.sql文件,全部讀取并改卷后退出。

4.1 讀取學生文件和初始化學生文件代碼如下:

‘讀取學生文件

Open Dir1.Path “\” title For Input As #1

Do While Not EOF(1)

Line Input #1, s_add

‘將大寫字母轉換為小寫字母

s_add = LCase(s_add)

‘去除go

s_add = Replace(s_add, “go”, “”)

s_stu_show = s_stu_show + s_add + Chr(13) + Chr(10)

‘去除空格

s_add = Replace(s_add, “ “, “”)

‘去除引號

s_add = Replace(s_add, “’”, “”)

‘去除回車

‘s_add = Replace(s_add, “’”, “”)

If pos = InStr(1, s_add, “/*”) < 0 Then

‘獲取文檔內(nèi)容

s_stu = s_stu + s_add

End If

Loop

Close #1

4.2 判斷結果集合是否相同代碼如下:

'分別執(zhí)行兩個語句,判斷結果是否相同

temp = \"Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=\" + temp + \";Data Source=\" + Text4.Text

Adodc1.ConnectionString = temp

Adodc2.ConnectionString = temp

Adodc1.Enabled = True

Adodc1.Enabled = True

Adodc1.RecordSource = s_stu_show

Adodc2.RecordSource = s_ansr_show

Adodc1.Refresh

On Error GoTo tag2:

Adodc2.Refresh

5 總結和展望

在期中考試和期末考試以及部分平時練習中使用了這個組卷改卷系統(tǒng),運行良好,無故障,改卷的效率也有很大的提高,基本達到了最初的目的。但由于時間倉促,本系統(tǒng)有很多有待改進的地方,主要總結如下:

1、系統(tǒng)的安全性較差。在程序中實現(xiàn)了拒絕學生重復抽題的代碼,這在一定程度上避免了學生人為選題的操作,有一定的安全考慮。并且考試的時候題庫數(shù)據(jù)庫位于教師機上,抽題領卷在學生機器上,但是由于數(shù)據(jù)庫所在的一端并沒有編寫服務器代碼,學生通過領卷程序直接訪問教師機上的題庫數(shù)據(jù)庫,造成了數(shù)據(jù)的安全性較差。若將題庫數(shù)據(jù)庫、領卷程序、服務程序分置三臺機器上則可大大提高安全性能。同時也可避免一部分較聰明的學生直接訪問題庫數(shù)據(jù)庫的可能。

2、系統(tǒng)的應用范圍較窄。本系統(tǒng)是針對SQL一門課程設計和編寫的,因此講授完本門課程后該系統(tǒng)很難修改應用到其它課程的組卷和改卷中來。且一旦試題改動了,試題數(shù)據(jù)庫也要隨之改動(原因見二.4.③),使得擴充試題比較難。如果能夠找到一種方法自動尋找邊緣記錄,則擴充試題后可自動調(diào)整試題數(shù)據(jù)庫,則應用的范圍將大大擴展。

參考文獻

[1] 宋琦凡,付敬平.《使用Visual Basic開發(fā)數(shù)據(jù)庫應用軟件》.北京:電子工業(yè)出版社

[2] Evangelos Petroutsos. 《Visual Basic從入門到精通》.北京:電子工業(yè)出版社

[3] 孟小峰.《開放數(shù)據(jù)庫互連—ODBC 2.0使用大全》.北京:清華大學出版社

[4] 廖衛(wèi)東,趙軍.《Visual Basic編程手冊》.北京:機械工業(yè)出版社

[5] 《電腦編程技巧與維護》

主站蜘蛛池模板: 亚洲va在线∨a天堂va欧美va| 第九色区aⅴ天堂久久香| 91蜜芽尤物福利在线观看| 国产微拍一区二区三区四区| 久久亚洲天堂| 欧美天堂在线| 丰满人妻久久中文字幕| 国产成人综合亚洲欧美在| 这里只有精品在线播放| 国产成人永久免费视频| www.国产福利| 久久精品中文字幕少妇| 国产91在线|日本| 亚洲综合色吧| 中文字幕久久精品波多野结| 欧美日韩免费在线视频| 亚洲国产高清精品线久久| 91破解版在线亚洲| 免费观看国产小粉嫩喷水| 超碰91免费人妻| 熟妇人妻无乱码中文字幕真矢织江| 精品国产中文一级毛片在线看| 色一情一乱一伦一区二区三区小说| 日韩不卡高清视频| 日本黄色a视频| 中文字幕在线一区二区在线| 国产精品九九视频| 欧美 国产 人人视频| 国产一区成人| 狼友视频国产精品首页| 九色免费视频| AV在线天堂进入| 高清大学生毛片一级| 91免费观看视频| 中文一区二区视频| 97人妻精品专区久久久久| 久久青草免费91观看| 男人天堂亚洲天堂| 青青热久免费精品视频6| 四虎永久在线| 国产裸舞福利在线视频合集| 亚洲国产成人精品青青草原| 天天色天天操综合网| 久久精品日日躁夜夜躁欧美| 亚洲精品麻豆| 老司机久久99久久精品播放| 国产亚洲高清视频| 久久人搡人人玩人妻精品一| 亚洲人成影院在线观看| 一本无码在线观看| 毛片网站在线看| 男女精品视频| 久久免费视频6| 国产精品久久久免费视频| 少妇极品熟妇人妻专区视频| 好久久免费视频高清| 国产美女无遮挡免费视频| 国产乱子精品一区二区在线观看| 国产激情在线视频| 四虎永久在线精品国产免费 | 99久久国产精品无码| 91精品国产一区自在线拍| av尤物免费在线观看| 久久精品中文无码资源站| 狼友av永久网站免费观看| 91欧美在线| 国产成人亚洲综合A∨在线播放| 婷婷五月在线视频| 日韩欧美中文字幕在线精品| 国产免费久久精品99re丫丫一| 性喷潮久久久久久久久| 欧美亚洲国产一区| 欧美日韩精品在线播放| 久久免费精品琪琪| 欧美成人免费一区在线播放| 国产精品国产主播在线观看| 国产91精选在线观看| 日韩 欧美 国产 精品 综合| 毛片免费在线视频| a网站在线观看| 婷婷六月在线| 国产在线观看高清不卡|