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

📄 service1.asmx.vb

📁 visual basic课程设计案例精编
💻 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 + -