国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于VHD技術(shù)的通用計算機考試系統(tǒng)的應(yīng)用研究

2017-03-04 21:21張丹玨
現(xiàn)代電子技術(shù) 2017年3期

摘 要: 針對現(xiàn)有計算機考試系統(tǒng)中客戶端與服務(wù)器之間的文件傳輸問題提出一種解決方案并加以實現(xiàn)。利用VHD技術(shù)可以將客戶端文件作為一個獨立磁盤上交。特別是客戶端文件被鎖死后導(dǎo)致上傳失敗的情況。實測結(jié)果證明,將VHD技術(shù)應(yīng)用到考試系統(tǒng)中可以很好地解決考試系統(tǒng)中的傳輸問題,特別是客戶端文件被鎖死后導(dǎo)致上傳失敗的情況。

關(guān)鍵詞: VHD; 考試系統(tǒng); 文件傳輸; 文件上傳

中圖分類號: TN911?34; TP31 文獻標識碼: A 文章編號: 1004?373X(2017)03?0121?03

Application research on general?purpose computer examination

system based on VHD technology

ZHANG Danjue

(School of Information Science and Technology, Sanda University, Shanghai 201209, China)

Abstract: A solution is proposed and implemented to solve the file transfer problem between the client and server in the available computer examination system. The VHD technology is used to take the client file as an independent disk for handing in. The actual measurement results show that the VHD technology applied to the computer examination system can solve the transmission problem better, especially for the uploading failure situation caused by the locked client file.

Keywords: VHD; examination system; file transfer; file uploading

0 引 言

隨著網(wǎng)絡(luò)技術(shù)和計算機技術(shù)的迅猛發(fā)展,將各類考試移植到計算機上進行已經(jīng)是大勢所趨,與傳統(tǒng)考試相比,它具有無可比擬的優(yōu)越性[1]。至今為止,用于考試的計算機軟件系統(tǒng)種類繁多,其中,有不少較為成功的產(chǎn)品,但是,這些考試系統(tǒng)對于客戶端與服務(wù)器之間的文件傳輸都沒有較好的解決方案。目前,大多數(shù)考試系統(tǒng)將考生文件保存在客戶端,當考試結(jié)束后再通過底層拷貝將考生文件復(fù)制到服務(wù)器上,但經(jīng)常遇到各類問題而造成傳輸錯誤的狀況,特別是文件被鎖死后導(dǎo)致上傳失敗的情況尤為突出。為此,在對現(xiàn)有多種考試系統(tǒng)進行分析研究的基礎(chǔ)上提出將VHD技術(shù)應(yīng)用到考試系統(tǒng)中,以解決文件傳輸?shù)膯栴}。

1 VHD概述

VHD是Virtual Hard Disk(虛擬磁盤)的簡稱,利用電腦硬盤空間在電腦里虛擬出一個磁盤,用戶可以像普通磁盤一樣使用(包括格式化、分區(qū)以及讀寫等操作),但是,它并不是物理上真實存在的磁盤,而是以文件形式(擴展名為.vhd)存放在物理硬盤上的。其優(yōu)點如下:

(1) 維護簡單:與普通磁盤操作一樣,容易上手。

(2) 加載與卸載容易:在不關(guān)機或重啟的情況下,可以像U盤一樣使用。

(3) 備份和遷移方便:僅僅需要將物理硬盤上的虛擬文件進行備份,再將該文件復(fù)制到目標計算機上即可。

(4) 安全性好:既可以對虛擬磁盤中的分區(qū)進行讀寫權(quán)限的設(shè)置,也可以對虛擬文件本身設(shè)置相應(yīng)權(quán)限,以保證該文件的安全性。

2 通用計算機考試系統(tǒng)中VHD的設(shè)計

通用計算機考試系統(tǒng)是由組卷模塊、考試模塊和閱卷及評價模塊三部分組成,如圖1所示。

在考試中經(jīng)常會涉及到文件的傳輸,例如,考試開始時需要由服務(wù)器下發(fā)考試素材,考試結(jié)束后需要由客戶端上傳考試結(jié)果等,在實際測試中發(fā)現(xiàn)有以下狀況出現(xiàn):

(1) 當文件夾嵌套層次較多時,會出現(xiàn)文件缺失的情況。

(2) 當使用文件端口打印文件時,輸出的文件容易被鎖死。

(3) 相關(guān)應(yīng)用程序未關(guān)閉時,如:PS,F(xiàn)lash等,容易造成系統(tǒng)藍屏。

(4) 當使用SQL Server考核數(shù)據(jù)庫相關(guān)課程時,必須強制關(guān)閉相應(yīng)SQL進程才能上傳數(shù)據(jù)庫文件。

鑒于以上情況,將VHD技術(shù)應(yīng)用到考試系統(tǒng)中,以解決文件傳輸?shù)膯栴},其流程如下:

(1) 在組卷模塊中,由管理員設(shè)置考試數(shù)據(jù)盤的屬性,例如:盤符號、容量、使用權(quán)限等,系統(tǒng)根據(jù)設(shè)置的參數(shù)生成虛擬磁盤文件,即VHD文件,并把考試所要用到的素材、樣張等加載到該虛擬磁盤中。

(2) 考試前,由監(jiān)考老師使用考試模塊為每個考生隨機指定考試座位,當考生信息和考試計算機(即客戶端)綁定時,服務(wù)器會自動下發(fā)VHD文件。

(3) 當考生登錄考試模塊時,考試系統(tǒng)將根據(jù)之前設(shè)置的盤符號加載VHD文件,生成虛擬磁盤,考生在考試中使用到的所有文件都包含在該磁盤中。

(4) 考試過程中,考試模塊會根據(jù)之前設(shè)置的時間間隔定時在后臺備份該VHD文件,備份時無需卸載虛擬磁盤,也不影響學(xué)生考試。

(5) 考試結(jié)束后,客戶端卸載虛擬磁盤,將VHD文件上傳服務(wù)器即可。

(6) 在閱卷及評價模塊中,讀取VHD文件中的考試數(shù)據(jù)即可評分。

根據(jù)以上構(gòu)思可以很好地解決文件傳輸問題,避免文件缺失、鎖死等造成交卷失敗的情況頻繁出現(xiàn)。

3 通用計算機考試系統(tǒng)中VHD的實現(xiàn)

VHD技術(shù)通常用于安裝多個操作系統(tǒng),一般和虛擬機一起使用,而用于考試系統(tǒng)中是一種創(chuàng)新,且考慮到公共機房軟件安裝的問題,不可能在每臺計算機上面都安裝Virtual PC等相關(guān)虛擬化軟件,所以,考試系統(tǒng)需要自行解決虛擬磁盤的加載、權(quán)限設(shè)置、卸載等一系列問題。經(jīng)過研究,利用微軟提供的一些VHD接口以及自行編寫的函數(shù)來完成這些工作。

加載虛擬磁盤使用微軟提供的 “AttachVirtualDisk”API,通過設(shè)置“ATTACH_VIRTUAL_DISK_FLAG_PERMANENT_LIFETIME”來限制該虛擬磁盤只能被考試系統(tǒng)管理,設(shè)置“ATTACH_VIRTUAL_DISK_FLAG_READ_ ONLY”來限制該虛擬磁盤為只讀屬性,設(shè)置“ATTACH_VIRTUAL_DISK_FLAG_NO_DRIVE_LETTER”來限制該虛擬磁盤加載后無盤符號,主要代碼如下所示:

Int virtualDisk::attach(bcol readOnly)

{ ATTACH_VIRTUAL_DISK_FLAG flags;

flags=ATTACH_VIRTUAL_DISK_FLAG_PERMANENT_ LIFETIME;

If(readOnly)

Flags|=ATTACH_VIRTUAL_DISK_FLAG_READ_ONLY;

ATTACH_VIRTUAL_DISK_PARAMETERS attachParameters;

attachParameters.Version=ATTACH_VIRTUAL_DISK_VERSION_1;

return AttachVirtualDisk(vhdHandle,0,flags,0,&attachParameters,0);

}

加載虛擬磁盤后,需要給該磁盤分配一個盤符號,但考慮到各個公共機房計算機的磁盤設(shè)置有所不同,所以,在組卷模塊中由系統(tǒng)管理員給定一個可以使用的盤符號,首先,通過“GetVirtualDiskPhysicalPath”函數(shù)獲取虛擬磁盤的屬性,然后,通過“FindFirstVolume”函數(shù)和“FindNextVolume”函數(shù)獲取盤符號,再通過“CreateFile”函數(shù)測試該盤符號是否可用,即有無沖突,最后,通過“SetVolumeMountPoint”方法將該盤符號綁定給虛擬磁盤。部分代碼如下所示:

int virtualDisk::mount(const QString &mountPoint)

{ wchar_t physicalDrive[MAX_PATH];

ULONG bufferSize = sizeof(physicalDrive);

GetVirtualDiskPhysicalPath(vhdHandle, &bufferSize, physicalDrive);

wchar_t volumeName[MAX_PATH];

DWORD bytesReturned;

VOLUME_DISK_EXTENTS diskExtents;

HANDLE hFVol = FindFirstVolume(volumeName, sizeof(volumeName));

bool hadTrailingBackslash = false;

do {

int backslashPos = wcslen(volumeName) ? 1;

if (hadTrailingBackslash = volumeName[backslashPos] == ′\\′)

{ volumeName[backslashPos] = 0; }

HANDLE hVol=CreateFile(volumeName,0, FILE_SHARE_ READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0, NULL);

if (hVol == INVALID_HANDLE_VALUE) { return 0; }

DeviceIoControl(hVol, IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS, NULL, 0, &diskExtents, sizeof(diskExtents), &bytesReturned, NULL);

if (diskExtents.Extents[0].DiskNumber == 0) {

if (hadTrailingBackslash) { volumeName[backslashPos] = ′\\′; }

SetVolumeMountPoint(TEXT("H:\\"), volumeName); }

} while (FindNextVolume(hFVol, volumeName, sizeof(volumeName)));

FindVolumeClose(hFVol);

return 0;

}

完成加載和盤符號設(shè)置后,客戶端的設(shè)備管理器中就出現(xiàn)了一塊虛擬磁盤,如圖2所示。

考試完成后,所有的考試結(jié)果都保存至虛擬磁盤中,因此,需要將虛擬磁盤進行卸載,并將其以考生準考證號命名,保存到考試服務(wù)器中,以便閱卷及評價模塊進行調(diào)用。通過“detach”函數(shù)完成該項工作,部分代碼如下所示:

int virtualDisk::detach()

{ DETACH_VIRTUAL_DISK_FLAG flags;

flags = DETACH_VIRTUAL_DISK_FLAG_NONE;

return DetachVirtualDisk(vhdHandle, flags, 0);

}

int virtualDisk::close()

{ return CloseHandle(vhdHandle);}

Int workThread::vhdDetah(const QString &vhdFile,int sessionid)

{ virtualDisk vhdDisk;

If (int error=vhdDisk.open(vhdFile))

{ emit vhdFinished(error,sessionid);

Return error;}

If (int error=vhdDisk.detach())

{ if(error!=1168)

{vhdDisk.close();

Emit vhdFinished(error,sessionid)l

Return error;}

}

vhdDisk.close();

emit vhdFinished(0,sessionid);

return 0;

}

以某學(xué)院的3 300人的計算機文化基礎(chǔ)考試為例,收卷成功率達到100%,無收卷異常出現(xiàn),考后閱卷正常,成績分布如圖3所示。

4 結(jié) 語

將VHD技術(shù)應(yīng)用到計算機考試系統(tǒng)中是個創(chuàng)新,這個創(chuàng)新基本上解決了考試系統(tǒng)在收卷時因為種種原因造成系統(tǒng)卡死的問題。實測結(jié)果說明該技術(shù)運用于通用計算機考試系統(tǒng)是可行的。

參考文獻

[1] 張丹玨,姚偉.多課程計算機考試系統(tǒng)的研究[J].微型電腦應(yīng)用,2010,26(11):15?17.

[2] MSDN. Developers resource [EB/OL]. [2015?03?21]. https://msdn.microsoft.com/en?us/library/windows/desktop/dd323700(v=vs.85).aspx.

[3] 陳俊斌.基于任務(wù)驅(qū)動法的高校計算機基礎(chǔ)教學(xué)改革[J].物聯(lián)網(wǎng)技術(shù),2015,5(2):107?108.

[4] 李淑俠,魏廣平.動態(tài)可重構(gòu)可穿戴計算機軟件平臺的設(shè)計與實現(xiàn)[J].物聯(lián)網(wǎng)技術(shù),2014,4(6):50?51.

[5] 張婷婷.基于網(wǎng)絡(luò)的新型計算機考試系統(tǒng)[J].科研,2015(8):22?23.

[6] 高金麗.高職院校計算機網(wǎng)絡(luò)技術(shù)人才培養(yǎng)模式的探討:基于工業(yè)互聯(lián)網(wǎng)[J].物聯(lián)網(wǎng)技術(shù),2015,5(5):95?96.