📄 service1.asmx.vb
字号:
Imports System.Web.Services
<System.Web.Services.WebService(Namespace := "http://tempuri.org/WebService/Service1")> _
Public Class Service1
Inherits System.Web.Services.WebService
#Region " Web 服务设计器生成的代码 "
Public Sub New()
MyBase.New()
'该调用是 Web 服务设计器所必需的。
InitializeComponent()
'在 InitializeComponent() 调用之后添加您自己的初始化代码
End Sub
'Web 服务设计器所必需的
Private components As System.ComponentModel.IContainer
'注意: 以下过程是 Web 服务设计器所必需的
'可以使用 Web 服务设计器修改此过程。
'不要使用代码编辑器修改它。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
components = New System.ComponentModel.Container()
End Sub
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
'CODEGEN: 此过程是 Web 服务设计器所必需的
'不要使用代码编辑器修改它。
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
#End Region
' Web 服务示例
' HelloWorld() 示例服务返回字符串 Hello World。
' 若要生成项目,请取消注释以下行,然后保存并生成项目。
' 若要测试此 Web 服务,请确保 .asmx 文件是起始页
' 并按 F5 键。
'
'<WebMethod()> _
'Public Function HelloWorld() As String
' Return "Hello World"
'End Function
<WebMethod()> Public Function CalculateEntry(ByVal InputExpression As String, ByVal AngMod As Boolean, ByVal RadMod As Boolean, ByVal InputLogBase As String, ByVal TxtDecimal As String, ByVal BaseMod As String) As String
Dim Answer As String
Dim BinAnswer As String '二进制答案
Dim DecimalCheck As Integer
Dim i As Short
Dim LenAfterDecimal As Integer '小数点后的数字串长度
Dim NumOfDecimals As Short '小数点前的数字个数
Dim Remainder As String '余数
Dim Tag As String '进制标识
AngleMode = AngMod '获得用户输入的角度模式
RadiusMode = RadMod '获得用户输入的角度模式
logbase = Val(InputLogBase) '获得用户输入的对数底数
'设定默认值
CurrentEntryIndex = 1 '语法分析中字符的定位指针
InError = False
InputString_Renamed = InputExpression '获得用户输入的表达式
PrevEntry = InputExpression '保存上一次用户输入的表达式
SetVariable = False
ExtractToken() '提取表达式的第一个符号
Answer = CStr(GetE()) '对整个表达式进行语法分析
If Not InError And OutputString <> "EOS" Then '如果语法分析发生错误
TrapErrors(0)
End If
If InError Then '如果发生错误
Answer = ErrorMessage
Else
PrevAnswer = CDbl(Answer) '保存上一次计算的答案
Tag = ""
If BaseMod = "Bin" Then '转换为2进制
If CDbl(Answer) <= 32767 Then
BinAnswer = ""
DecimalCheck = InStr(1, CStr(Answer), ".")
If DecimalCheck <> 0 Then
If CShort(Mid(CStr(Answer), DecimalCheck + 1, 1)) < 5 Then
Answer = CStr(CDbl(Left(Answer, DecimalCheck - 1)))
Else
Answer = CStr(CDbl(Left(Answer, DecimalCheck - 1)) + 1)
End If
End If
Do
Answer = CStr(CDbl(Answer) / 2)
DecimalCheck = InStr(1, CStr(Answer), ".")
If DecimalCheck = 0 Then
Remainder = "0"
Else
Answer = CStr(CDbl(Left(Answer, DecimalCheck - 1)))
Remainder = "1"
End If
BinAnswer = Remainder & BinAnswer
Loop Until CDbl(Answer) < 1
Answer = CStr(CDbl(BinAnswer))
Tag = " (bin)" '以bin表明计算结果是2进制
End If
ElseIf BaseMod = "Hex" Then
'转换为16进制
Answer = Hex(CInt(Answer))
Tag = " (hex)" '以hex表明计算结果是16进制
ElseIf BaseMod = "Oct" Then
'转换为8进制
Answer = Oct(CInt(Answer))
Tag = " (oct)" '以oct表明计算结果是8进制
Else
If TxtDecimal <> "F" Then
NumOfDecimals = Val(TxtDecimal)
DecimalCheck = InStr(1, CStr(Answer), ".")
If DecimalCheck = 0 Then
If NumOfDecimals <> CDbl("0") Then
Answer = Answer & "."
For i = 1 To NumOfDecimals '十进制计算
Answer = Answer & "0"
Next i
End If
Else
LenAfterDecimal = Len(Answer) - DecimalCheck
If LenAfterDecimal > NumOfDecimals Then
If NumOfDecimals = CDbl("0") Then
DecimalCheck = DecimalCheck - 1
End If
Answer = Mid(Answer, 1, DecimalCheck + NumOfDecimals)
Else
For i = 1 To (NumOfDecimals - LenAfterDecimal) '取得用户指定的有效数字
Answer = Answer & "0"
Next i
End If
End If
End If
End If
Answer = Answer & Tag '计算结果
End If
Return Answer '返回最后的计算结果
Exit Function
ErrorHandler:
TrapErrors(Err.Number) '捕获错误
End Function
Structure StatisticsResult
Dim Xmean As String '平均值
Dim Xmod As String '模
Dim SumX As String '加和
Dim SumX2 As String '平方和
Dim Sample As String '样本
Dim Var As String '方差
Dim StVar As String '标准方差
Dim Max As String '最大值
Dim Min As String '最小值
Dim Mid As String '中间数
Dim StErr As String ' 标准误差
Dim Div As String '偏差
End Structure
<WebMethod()> Public Function Statistics(ByVal InputString As String) As StatisticsResult
Dim i As Integer
ReDim MainArray(0)
CurrentEntryIndex = 1 '语法分析中字符的定位指针
InputString_Renamed = InputString '获得用户输入的数据
ExtractToken() '获取第一个字符,判断它是否为数字
If OutputString = "Number" Then
MainArray(0) = OutputValue
Else
TrapErrors(Err.Number) '捕获错误()
Exit Function
End If
'循环到字符串到末尾,直到得到所有的数字
Do While CurrentEntryIndex < Len(InputString_Renamed)
If Mid(InputString_Renamed, CurrentEntryIndex, 1) <> "," Then
'查找逗号
TrapErrors(Err.Number) '捕获错误
End If
CurrentEntryIndex = CurrentEntryIndex + 1
ExtractToken() '查找数字
If OutputString = "Number" Then
ReDim Preserve MainArray(UBound(MainArray) + 1)
MainArray(UBound(MainArray)) = OutputValue
Else
TrapErrors(Err.Number) '捕获错误
Exit Function
End If
Loop
Dim temp As StatisticsResult '定义一个结构存放统计信息
temp.Max = CType(maxX(), String) '调用函数并进行类型转换
temp.Xmean = CType(Mean(), String)
temp.Xmod = CType(Mode(), String)
temp.SumX = CType(SumX(), String)
temp.SumX2 = CType(SumX2(), String)
temp.Min = CType(minX(), String)
temp.Var = CType(Variance(), String)
temp.StVar = CType(SD(), String)
temp.Mid = CType(Median(), String)
temp.StErr = CType(SE(), String)
temp.Sample = CType(SS(), String)
temp.Div = CType(Deviations(), String)
Return temp
End Function
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -