2013-03-27 3 views
-2

Я новичок в Visual Basic, поэтому мне нужно немного помочь начать работу над проектом, над которым я работаю. Я открываю текстовый файл, содержащий имена и классы учеников, используя StreamReader, но я хочу выбрать определенные значения из текстового файла (например, их высшую оценку, средние и общие оценки). Будет ли я лучше создавать массив для отображения этих значений или записи функций для получения данных, которые я хочу? Я немного потерял и не хочу тратить свое время, поэтому любые предложения были бы очень желанными.Загрузите определенные значения из текстового файла с помощью StreamReader

данные хранятся в виде файла txt следующим образом: имя ученика, класс 1, класс 2, класс 3, класс 4, общий знак.

Спасибо.

+0

Не могли бы вы поделиться с нами своим кодом, показывающим, что вы пробовали? –

+2

И как ваш текстовый файл будет отформатирован, будет очень полезно. – Steve

+1

Как сказал @Steve, самый большой вопрос - это формат вашего текстового файла и объем данных ... Основываясь на этих вещах, вы бы выбрали правильный способ справиться с этим ... –

ответ

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 
0

Private Sub btnAverage_Click (ByVal отправитель Как System.Object, ByVal е Как System.EventArgs) Ручки 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 

Это код, который я до сих пор так что любые предложения было бы здорово ,

Смежные вопросы