⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exam.asmx.vb

📁 系统概要: 本系统采用VB.NET开发. 开发平台:Windows XP Professional SP2 (English Version) 开发环境:Visual Studio .NET
💻 VB
📖 第 1 页 / 共 2 页
字号:
            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 + -