📄 exam.asmx.vb
字号:
Return False
Finally
If oCnn.State = ConnectionState.Open Then
oCnn.Close()
End If
oCmd = Nothing
oCnn = Nothing
End Try
oSql = New SqlDataAccess(strSql)
oSql.ExecuteNonQuery()
'将考试答卷存档
If SubPaper(dsPaper, SID) Then
Return True
Else
Return False
End If
End Function
'
' 函数名称:SavePaper(ByVal dsPaper As DataSet, ByVal SID As String) As Boolean
' 摘 要:保存考试卷,返回存存是否成功
'
<WebMethod(Description:="保存考试卷,返回保存是否成功,True表示保存成功,False表示保存失败.", CacheDuration:=0, BufferResponse:=False, EnableSession:=False)> _
Public Function SavePaper(ByVal dsPaper As DataSet, ByVal SID As String) As Boolean
Dim FileName As String
Dim FolderName As String
Dim oFileInfo As FileInfo
Try
FolderName = GetTempPath(SID)
FileName = FolderName + "\" + SID + ".xml"
oFileInfo = New FileInfo(FileName)
'如果原文件已存在,另存原文件,然后删除
If oFileInfo.Exists Then
oFileInfo.CopyTo(FolderName + "\" + SID + Common.NowToString() + ".xml")
oFileInfo.Delete()
End If
'将数据集写到文件中
dsPaper.WriteXml(FileName)
Catch ex As Exception
Return False
End Try
Return True
End Function
'
' 函数名称:SubDrawing(ByVal FileData As Byte(), ByVal FileName As String) As Boolean
' 摘 要:提交作图题文件,返回文件上载成功与否
'
<WebMethod(Description:="提交作图题文件,返回文件上传成功与否,True表示上传成功,False表示上传失败.", CacheDuration:=0, BufferResponse:=False, EnableSession:=False)> _
Public Function SubDrawing(ByVal FileData As Byte(), ByVal FileName As String, ByVal SID As String) As Boolean
Try
Dim MemStream As MemoryStream
Dim FileStream As FileStream
Dim UploadDir As String
Dim FolderName As String
Dim FolderInfo As DirectoryInfo
Dim strSql As String
Dim oSql As SqlDataAccess
strSql = "Select ExamName From vExam Where (SID='" + SID + "')"
oSql = New SqlDataAccess(strSql)
FolderName = CType(oSql.ExecuteScalar(), String)
'考试安排不存在,返回
If FolderName = Nothing Then
Return False
End If
'获取文件上传路径文件夹
UploadDir = Server.MapPath(Common.getParameters("UPLOADDRAWDIR"))
UploadDir += "\" + FolderName
'验证文件夹是否存在,如果不存在,创建文件夹
FolderInfo = New DirectoryInfo(UploadDir)
If Not FolderInfo.Exists Then
FolderInfo.Create()
End If
FolderInfo = Nothing
MemStream = New MemoryStream(FileData)
FileStream = New FileStream(UploadDir + "\" + FileName, FileMode.OpenOrCreate)
MemStream.WriteTo(FileStream)
FileStream.Flush()
MemStream.Close()
FileStream.Close()
MemStream = Nothing
FileStream = Nothing
Catch ex As Exception
Return False
End Try
Return True
End Function
'
' 函数名称:RegionExam(ByVal SID As String) As Boolean
' 摘 要:登记已考试
'
<WebMethod(Description:="根据考号,对考号进行已考试登记,返回True表示登记成功,False表示登记失败.")> _
Public Function RegionExam(ByVal SID As String) As Boolean
Dim strSql As String
Dim oSql As SqlDataAccess
strSql = "Update ExamStudent Set Exam=1 Where (SID='" + SID + "')"
oSql = New SqlDataAccess(strSql)
If oSql.ExecuteNonQuery > 0 Then
Return True
Else
Return False
End If
End Function
'
' 函数名称:ValidateMonitor(ByVal Name As String, ByVal Password As String) As Boolean
' 摘 要:验证监考员信息
'
<WebMethod(Description:="验证监考员信息,返回True表示验证成功,False表示验证失败.")> _
Public Function ValidateMonitor(ByVal Name As String, ByVal Password As String) As Boolean
Dim oAdmin As Administrator
oAdmin = New Administrator(Name, Password)
Return oAdmin.CheckPassword()
End Function
'
' 函数名称:CreatePaper(ByVal EID As integer) As DataSet
' 摘 要:产生试卷
'
<WebMethod(Description:="根据考场安排,预生成该考场考生试题,返回True表示生成成功,False表示生成失败.")> _
Public Function CreatPaper(ByVal EID As Integer) As Boolean
Dim PaperFile As FileInfo
Dim FolderInfo As DirectoryInfo
Dim FolderName As String
Dim FileName As String
Dim ExamName As String
Dim strSql As String
Dim oSql As New SqlDataAccess
Dim dsPaper As DataSet
Dim dsExam As DataSet
'取得考场名称
'并以考场名称命名一个文件夹保存试卷
strSql = "Select Exam From Exam Where EID=" + EID.ToString()
oSql.Sql = strSql
ExamName = CType(oSql.ExecuteScalar(), String)
'如果考试安排不存在,返回
If ExamName = Nothing Then
Return False
End If
FolderName = Server.MapPath(getParameters("PAPERDIR") + "\" + ExamName)
'验证文件夹是否存在,不存在则创建
FolderInfo = New DirectoryInfo(FolderName)
If Not FolderInfo.Exists Then
FolderInfo.Create()
End If
FolderInfo = Nothing
'为每场考试的考生创建考试题文件XML
strSql = "Select SID From vExam Where (EID='" + EID.ToString() + "')"
oSql.Sql = strSql
dsExam = oSql.DataSet()
For i As Integer = 0 To dsExam.Tables(0).Rows.Count - 1
'获取试卷文件名
FileName = FolderName + "\" + Common.GetExamFileName(CType(dsExam.Tables(0).Rows(i).Item("SID"), String))
'验证文件是否存在
'如果存在,另存为,然后将原文件删除
Dim oFileInfo As System.IO.FileInfo
oFileInfo = New System.IO.FileInfo(FileName)
If oFileInfo.Exists Then
oFileInfo.CopyTo(FileName + Common.NowToString() + ".bak")
oFileInfo.Delete()
End If
oFileInfo = Nothing
'抽取考试题
dsPaper = Common.ExamPaper(CType(dsExam.Tables(0).Rows(i).Item("SID"), String))
'将试卷数据集保存到文件中
dsPaper.WriteXml(FileName)
dsPaper.Clear()
Next
Return True
End Function
'
' 函数名称:GetExamPath(ByVal SID As String) As String
' 摘 要:私有方法.根据考生号,获到考生试题文件所在文件夹
'
Private Function GetExamPath(ByVal SID As String) As String
Dim FolderName As String
FolderName = GetCommonPath(SID, "PAPERDIR")
Return FolderName
End Function
'
' 函数名称:GetExamFile(ByVal SID As String) As String
' 摘 要:私有方法.根据考生号,获到考生试卷文件全名
'
Private Function GetExamFile(ByVal SID As String) As String
Dim ExamFileName As String
'考生考题文件全名
'GetExamPath(SID)获到考生试卷文件所在文件夹
'GetExamFileName(SID)获到考生试卷文件名
ExamFileName = GetExamPath(SID) + "\" + Common.GetExamFileName(SID)
Return ExamFileName
End Function
'
' 函数名称:GetDrawFilePath() As String
' 摘 要:私有方法.获取作图文件所在文件夹
'
Private Function GetDrawFilePath() As String
Dim FolderName As String
Dim FolderInfo As System.IO.DirectoryInfo
FolderName = Server.MapPath(Common.getParameters("DRAWDIR"))
'验证文件夹存在,不存在就创建
FolderInfo = New System.IO.DirectoryInfo(FolderName)
If Not FolderInfo.Exists Then
FolderInfo.Create()
End If
FolderInfo = Nothing
Return FolderName
End Function
'
' 函数名称:GetTempPath() As String
' 摘 要:私有方法.获取保存临时试卷的临时目录
'
Private Function GetTempPath(ByVal SID As String) As String
Dim FolderName As String
FolderName = GetCommonPath(SID, "TEMPDIR") + "Temp"
Return FolderName
End Function
'
' 函数名称:GetSubPaperPath(ByVal SID As String) As String
' 摘 要:私有方法.获取保存提交试卷的目录
'
Private Function GetSubPaperPath(ByVal SID As String) As String
Dim FolderName As String
FolderName = GetCommonPath(SID, "UPLOADPAPERDIR")
Return FolderName
End Function
'
' 函数名称:GetCommonPath(ByVal SID As String) As String
' 摘 要:私有方法.根据考号,和系统配置参数值,获取一个文件夹路径
'
Private Function GetCommonPath(ByVal SID As String, ByVal Param As String) As String
Dim FolderInfo As DirectoryInfo
Dim FolderName As String
Dim ExamName As String
Dim strSql As String
Dim oSql As New SqlDataAccess
'读取数据库获取考场名称
strSql = "Select ExamName From vExam Where (SID='" + SID + "')"
oSql.Sql = strSql
ExamName = CType(oSql.ExecuteScalar(), String)
'系统配置参数TEMPDIR设置 临时试卷文件夹
FolderName = Server.MapPath(Common.getParameters(Param) + "\" + ExamName)
'验证文件夹存在,不存在就创建
FolderInfo = New System.IO.DirectoryInfo(FolderName)
If Not FolderInfo.Exists Then
FolderInfo.Create()
End If
FolderInfo = Nothing
Return FolderName
End Function
'
' 函数名称:SubPaper(ByVal dsPaper As DataSet, ByVal SID As String) As Boolean
' 摘 要:提交考试卷,返回交卷是否成功
'
Private Function SubPaper(ByVal dsPaper As DataSet, ByVal SID As String) As Boolean
Dim FileName As String
Dim FolderName As String
Dim oFileInfo As FileInfo
Try
FolderName = GetSubPaperPath(SID)
FileName = FolderName + "\" + SID + ".xml"
oFileInfo = New FileInfo(FileName)
'如果原文件已存在,另存原文件
If oFileInfo.Exists Then
oFileInfo.CopyTo(FolderName + "\" + SID + Now.ToString() + ".xml")
oFileInfo.Delete()
End If
oFileInfo = Nothing
'将数据集写到文件中
dsPaper.WriteXml(FileName)
Catch ex As Exception
Return False
End Try
Return True
End Function
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -