-2

私は Visual Basic の初心者なので、現在取り組んでいるプロジェクトを始めるにあたって少し助けが必要です。を使用して生徒の名前と成績を含むテキスト ファイルを開きますがStreamReader、テキスト ファイルから特定の値 (最高成績、平均、総合点など) を選択したいと考えています。これらの値を表示する配列を作成するか、必要なデータを取得する関数を作成するのが最善でしょうか? 私は少し途方に暮れており、時間を無駄にしたくないので、どんな提案も大歓迎です.

データは生徒名、学年1、学年2、学年3、学年4、総合点のようにtxtファイルとして保存されます。

ありがとう。

4

2 に答える 2

1

必要なプロパティを持つクラスを作成し、(オブジェクトの) リストを作成します。例については、以下を参照してください。

Public Sub GetStudentData()
    Dim oStudents As New List(Of Student)
    Using r As IO.StreamReader = New IO.StreamReader("file.txt")
        ' Store contents in this String.
        Dim line As String

        ' Read first line.
        line = r.ReadLine
        oStudents.Add(New Student(line))
        Do While (line IsNot Nothing)
            ' Read in the next line.
            line = r.ReadLine
            oStudents.Add(New Student(line))
        Loop
    End Using
End Sub

Public Class Student
    Public Property StudentID As String
    Public Property FirstName As String
    Public Property LastName As String
    Public Property HighestGrade As String
    Public Property Averages As String
    Public Property OverAllMarks As String

    Public Sub New(line As String)
        _StudentID = line ' Get specific string from text line
        _FirstName = line ' Get specific string from text line
        _LastName = line ' Get specific string from text line
        _HighestGrade = line ' Get specific string from text line
        _Averages = line ' Get specific string from text line
        _OverAllMarks = line ' Get specific string from text line
    End Sub
End Class
于 2013-03-27T13:35:19.573 に答える
0

Private Sub btnAverage_Click (System.Object としての ByVal 送信者、System.EventArgs としての ByVal e) btnAverage.Click を処理します

    Using myreader As New Microsoft.VisualBasic.FileIO.TextFieldParser("c:\Users\documents\studentresults.txt")
        myreader.TextFieldType = FileIO.FieldType.Delimited
        myreader.SetDelimiters(",")
        Dim currentrow As String()
        While Not myreader.EndOfData
            Try
                currentrow = myreader.ReadFields()
                Dim average As Double
                currentrow.Skip(1).Skip(2).Average(Function(s) Convert.ToDouble(s))
                MsgBox("Average is " & currentrow(0))
                Convert.ToString(average)
            Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
                MsgBox("line" & ex.Message &
                       "is not valid and will be skipped")
            End Try
        End While
    End Using 

これは私がこれまでに持っているコードなので、どんな提案も素晴らしいでしょう。

于 2013-04-11T12:31:57.083 に答える