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

📄 common.vb

📁 系统概要: 本系统采用VB.NET开发. 开发平台:Windows XP Professional SP2 (English Version) 开发环境:Visual Studio .NET
💻 VB
字号:

'
'    Copyright(C)2006,济南大学材料科学与工程学院
'    All right reserved.
'
'    文件名称:
'    文件标识:
'    摘    要:
'
'    当前版本:1.0.0
'    作    者:梁  海
'    完成日期:2006-12-4
'
'    取代版本:
'    原作者  :
'    完成日期:
'
'    修改历史:
'
Module Common

    '
    '    函数名称:GetPaper(ByVal SID As String, Optional ByVal ReGet As Boolean) As Boolean
    '    摘    要:从服务器将试题抽取到本地
    '             参数SID考生考号
    '             参数ReGet是否重新抽题
    '
    Public Function GetPaper(ByVal SID As String, Optional ByVal ReGet As Boolean = False) As Boolean

        Dim dsPaper As DataSet
        Dim FileName As String
        Dim oExam As New AutoCAD.Exam
        Dim frmConnect As New Conn

        '设置并打开连接服务器窗体
        frmConnect.Text = "正在抽取试题,请稍候...."
        frmConnect.Show()

        Try
            '获取以考号命名的考试题文件名
            FileName = GetExamFile(SID)
            If ReGet Then
                dsPaper = oExam.ReGetPaper(SID)
            Else
                dsPaper = oExam.GetPaper(SID)
            End If

            '保存读取的考试题到一个文件
            dsPaper.WriteXml(FileName)
            frmConnect.Close()

        Catch ex As Exception
            frmConnect.Close()
            Return False
        End Try

        Return True

    End Function

    '
    '    函数名称:SubPaper(ByVal SID As String) As Boolean
    '    摘    要:将考试题提交到服务器
    '             参数SID考生考号
    '
    Public Function SubPaper(ByVal SID As String) As Boolean

        Dim dsPaper As New DataSet
        Dim oExam As New AutoCAD.Exam
        Dim FileName As String
        Dim oFileInfo As System.IO.FileInfo
        Dim strAnswers As String
        Dim tempAnswer As String
        Dim IsSuccess As Boolean = False

        Try
            FileName = GetExamFile(SID)
            oFileInfo = New System.IO.FileInfo(FileName)

            '验证是试卷文件是否存在
            '验证文件是否存在
            '如果不存在, 打开文件打开窗体, 以便用户选择
            If Not oFileInfo.Exists Then
                Dim oFileDial As New System.Windows.Forms.OpenFileDialog
                oFileDial.Title = "请选择要提交的试卷文件"
                oFileDial.Filter = "试卷文件(*.xml)|*.xml|所有文件(*.*)|*.*"
                oFileDial.ShowDialog()
                If oFileDial.FileName <> "" Then
                    FileName = oFileDial.FileName
                Else
                    Return False
                End If
            End If
            dsPaper.ReadXml(FileName)

            strAnswers = ""
            tempAnswer = ""
            '读取选择题答案
            For i As Integer = 0 To dsPaper.Tables("Choose").Rows.Count - 1
                With dsPaper.Tables("Choose").Rows(i)
                    If .Item("Answer") Is DBNull.Value Then
                        tempAnswer = "0"    '未答题
                    Else
                        tempAnswer = CType(.Item("Answer"), String)
                    End If
                    If i = 0 Then
                        strAnswers += TextEncoding(tempAnswer)
                    Else
                        strAnswers += "#" + TextEncoding(tempAnswer)
                    End If
                End With
            Next

            tempAnswer = ""
            strAnswers += "|"
            '读取填空题答案
            For i As Integer = 0 To dsPaper.Tables("Vacancy").Rows.Count - 1
                With dsPaper.Tables("Vacancy").Rows(i)
                    If .Item("Answer") Is DBNull.Value Then
                        tempAnswer = ""    '未答题
                    Else
                        tempAnswer = CType(.Item("Answer"), String)
                    End If
                    If i = 0 Then
                        strAnswers += TextEncoding(tempAnswer)
                    Else
                        strAnswers += "#" + TextEncoding(tempAnswer)
                    End If
                End With
            Next

            tempAnswer = ""
            strAnswers += "|"
            '读取作图题
            If dsPaper.Tables("Drawing").Rows(0).Item("Answer") Is DBNull.Value Then
                tempAnswer = SID + Common.GetAppSetting("CADEXT")
            Else
                tempAnswer = CType(dsPaper.Tables("Drawing").Rows(0).Item("Answer"), String)
            End If
            strAnswers += TextEncoding(tempAnswer)

            '提交试题
            IsSuccess = oExam.SubPaper(dsPaper, strAnswers, SID)

        Catch ex As Exception
            Return False
        End Try

        Return IsSuccess

    End Function

    '
    '    函数名称:TextEncoding(ByVal strEncoding As String) As String
    '    摘    要:将试题答案中的特殊字符替换掉
    '
    Public Function TextEncoding(ByVal strEncoding As String) As String

        strEncoding = strEncoding.Replace("#", "_")         '题与题答案之间的分隔符
        strEncoding = strEncoding.Replace("|", "_")         '题型与题型之间的分隔符
        strEncoding = strEncoding.Replace(Chr(34), " ")     '双引号,防止SQL操作出错
        strEncoding = strEncoding.Replace(Chr(39), " ")     '单引号,防止SQL操作出错

        Return strEncoding

    End Function

    '
    '    函数名称:SavePaper(ByVal SID As String) As Boolean
    '    摘    要:将考试题保存到服务器
    '             参数SID考生考号
    '
    Public Function SavePaper(ByVal SID As String) As Boolean

        Dim dsPaper As New DataSet
        Dim oExam As New AutoCAD.Exam
        dsPaper.ReadXml(GetExamFile(SID))
        oExam.SavePaper(dsPaper, SID)

    End Function

    '
    '    函数名称:GetExamFile(ByVal SID As String) As String
    '    摘    要:根据考号,获取以考号命名的考试题文件名
    '             GetDataPath()获取系统数据文件夹路径
    '             GetAppSetting("EXAMEXT")获取考试文件扩展名
    Public Function GetExamFile(ByVal SID As String) As String

        Return GetDataPath() + "\" + GetExamFileName(SID)

    End Function

    '
    '    函数名称:GetExamFileName(ByVal SID As String) As String
    '    摘    要:根据考号,获取以考号命名的考试题文件名
    '             GetDataPath()获取系统数据文件夹路径
    '             GetAppSetting("EXAMEXT")获取考试文件扩展名
    Public Function GetExamFileName(ByVal SID As String) As String

        Return SID + GetAppSetting("EXAMEXT")

    End Function

    '
    '    函数名称:ReadDrawXml(ByVal FileName As String) As Boolean
    '    摘    要:从服务器读取文件名为FileName的作图文件
    '
    Public Function ReadDrawXml(ByVal FileName As String) As Boolean

        Dim oExam As New AutoCAD.Exam
        Dim FileByte As Byte()

        Try
            FileByte = oExam.GetDrawingFile(FileName)
            '验证读取是否成功
            If FileByte Is Nothing Then
                MessageBox.Show("读取作图文件失败,请与监考员联系!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
                Return False
            End If

            Dim File As System.IO.FileStream
            File = New System.IO.FileStream(GetDrawFilePath() + "\" + FileName, IO.FileMode.OpenOrCreate, IO.FileAccess.Write, IO.FileShare.ReadWrite)
            File.Write(FileByte, 0, FileByte.GetUpperBound(0) + 1)
            File.Flush()
            File.Close()
            File = Nothing

        Catch ex As Exception
            Return False
        End Try

        Return True

    End Function

    '
    '    函数名称:ReadTmpDrawFile(ByVal FileName As String) As Boolean
    '    摘    要:从服务器读取AutoCAD模板文件,并另存为FileName
    '
    Public Function ReadTmpDrawFile(ByVal FileName As String) As Boolean

        Dim oExam As New AutoCAD.Exam
        Dim FileByte As Byte()

        Try
            FileByte = oExam.GetTmpFile()
            '验证读取是否成功
            If FileByte Is Nothing Then
                MessageBox.Show("读取AutoCAD模板文件失败,请与监考员联系!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
                Return False
            End If

            Dim File As System.IO.FileStream
            File = New System.IO.FileStream(FileName, IO.FileMode.OpenOrCreate, IO.FileAccess.Write, IO.FileShare.ReadWrite)
            File.Write(FileByte, 0, FileByte.GetUpperBound(0) + 1)
            File.Flush()
            File.Close()
            File = Nothing

        Catch ex As Exception
            Return False
        End Try

        Return True

    End Function

    '
    '    函数名称:GetDrawFilePath() As String
    '    摘    要:获取作图题文件所在的路径
    '
    Public Function GetDrawFilePath() As String

        Dim FolderName As String
        Dim FolderInfo As System.IO.DirectoryInfo

        FolderName = Application.StartupPath() + "\" + GetAppSetting("CADPATH")
        FolderInfo = New System.IO.DirectoryInfo(FolderName)

        '如果试题存放路径不存在,新建目录
        If Not FolderInfo.Exists Then
            FolderInfo.Create()
        End If
        FolderInfo = Nothing

        Return FolderName

    End Function

    '
    '    函数名称:GetAppSetting(Byval ParamName as String) as String
    '    摘    要:返加应用程序的数据路径
    '
    Public Function GetAppSetting(ByVal ParamName As String) As String

        '读取系统配置信息
        Dim oAppReader As System.Configuration.AppSettingsReader
        oAppReader = New System.Configuration.AppSettingsReader

        Return CType(oAppReader.GetValue(ParamName, GetType(String)), String)

    End Function
    '
    '    函数名称:GetDataPath()
    '    摘    要:返加应用程序的数据路径
    '
    Public Function GetDataPath() As String

        Dim FolderName As String
        Dim FolderInfo As System.IO.DirectoryInfo

        FolderName = Application.StartupPath() + "\" + GetAppSetting("PAPERDIR")
        FolderInfo = New System.IO.DirectoryInfo(FolderName)

        '如果试题存放路径不存在,新建目录
        If Not FolderInfo.Exists Then
            FolderInfo.Create()
        End If
        FolderInfo = Nothing

        Return FolderName

    End Function

    '
    '    函数名称:GetDataPath(ByVal FileName As String) As String
    '    摘    要:返加应用程序的数据文件FileName的路径
    '             参数FileName为应用程序数据路径下的一个文件名
    '
    Public Function GetDataPath(ByVal FileName As String) As String

        Return GetDataPath() + "\" + FileName

    End Function

    '
    '    函数名称:SubDrawingFile()
    '    摘    要:上传文件到服务器
    '             参数FileName是本地的文件路径
    '             参数UploadFileName上传到服务器上的文件名
    '             参数SID考生的考号
    '
    Public Function SubDrawingFile(ByVal FileName As String, ByVal UploadFileName As String, ByVal SID As String) As Boolean

        Dim FileByte As Byte()
        Dim oFileInfo As System.IO.FileInfo
        Dim IsSuccess As Boolean
        Dim int2byte As Integer
        Dim FileLength As Long
        Dim oExam As New AutoCAD.Exam
        Dim oFileStream As System.IO.FileStream
        Dim tempStream As System.IO.MemoryStream

        Try
            '验证文件是否存在
            oFileInfo = New System.IO.FileInfo(FileName)
            If Not oFileInfo.Exists Then
                MessageBox.Show("Sorry!你要上传的文件不存在!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
                Return False
            End If

            '将文件转化为二进制流
            oFileStream = System.IO.File.OpenRead(FileName)
            tempStream = New System.IO.MemoryStream
            int2byte = oFileStream.ReadByte()
            While (int2byte <> -1)
                tempStream.WriteByte(CType(int2byte, Byte))
                int2byte = oFileStream.ReadByte()
            End While
            FileByte = tempStream.ToArray()

            '调用WebService上传文件,返回上传是否成功
            IsSuccess = oExam.SubDrawing(FileByte, UploadFileName, SID)
            oFileStream.Close()

        Catch ex As Exception
            Return False
        End Try

        Return IsSuccess

    End Function


End Module

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -