📄 common.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 + -