One of the exercises in my AS computing class is to have a user enter student information(name,ID,exam mark) and have it be stored in a .txt file. I have got the add part down but when i want to edit the data i can edit the first one but it overwrites everything in the file. When i try and edit the second record it gives me an error.
Any help?
Any help?
Imports System.IO Module Module1 Dim myfilewriter As StreamWriter Dim myFileReader As StreamReader Dim myStudentArray() As StudentRec Dim studentRecord As StudentRec Dim strFileName As String = "student.txt" Dim intNumOfRecs As Integer = 0 Structure StudentRec Dim intStudentID As Integer Dim strStudentName As String Dim intExamMark As Integer End Structure Sub readRecIntoArray() myFileReader = New StreamReader(strFileName) intNumOfRecs = myFileReader.ReadLine ReDim myStudentArray(intNumOfRecs) For intCounter = 1 To intNumOfRecs myStudentArray(intNumOfRecs).intStudentID = myFileReader.ReadLine myStudentArray(intNumOfRecs).strStudentName = myFileReader.ReadLine myStudentArray(intNumOfRecs).intExamMark = myFileReader.ReadLine Next myFileReader.Close() End Sub Sub addRecord() myfilewriter = New StreamWriter(strFileName, True) intNumOfRecs = intNumOfRecs + 1 myfilewriter.WriteLine(intNumOfRecs) ReDim Preserve myStudentArray(intNumOfRecs) Console.WriteLine("Enter the students ID number: ") myStudentArray(intNumOfRecs).intStudentID = Console.ReadLine() Console.WriteLine("Enter the students name: ") myStudentArray(intNumOfRecs).strStudentName = Console.ReadLine() Console.WriteLine("Enter the students Exam Mark: ") myStudentArray(intNumOfRecs).intExamMark = Console.ReadLine() myfilewriter.WriteLine(myStudentArray(intNumOfRecs).intStudentID) myfilewriter.WriteLine(myStudentArray(intNumOfRecs).strStudentName) myfilewriter.WriteLine(myStudentArray(intNumOfRecs).intExamMark) myfilewriter.Close() End Sub Sub editRecord() myfilewriter = New StreamWriter(strFileName) Dim intEditRec As Integer Dim intExam As Integer Console.WriteLine("Enter the Record to edit") intEditRec = Console.ReadLine() ReDim Preserve myStudentArray(intNumOfRecs) Console.WriteLine("Current Student ID is: " & myStudentArray(intEditRec).intStudentID) Console.WriteLine("Current Student Name is: " & myStudentArray(intEditRec).strStudentName) Console.WriteLine("Current Student exam mark is: " & myStudentArray(intEditRec).intExamMark) Console.WriteLine("Enter new exam mark: ") intExam = Console.ReadLine() myStudentArray(intEditRec).intExamMark = intExam myfilewriter.WriteLine(myStudentArray(intEditRec).intExamMark) Console.ReadLine() myfilewriter.Close() End Sub Sub Main() Dim strMenu As String Do If My.Computer.FileSystem.FileExists("student.txt") = True Then Call readRecIntoArray() End If Console.WriteLine("Press 'A' to add a record") Console.WriteLine("Press 'E' to edit a record") Console.WriteLine("Press 'D' to display all record") Console.WriteLine("Press 'C' to calculate the average class mark") Console.WriteLine("Press 'G' to calculate exam grade") Console.WriteLine("Press 'R' to delete a record") Console.WriteLine("Press 'S' to sort the records into exam order") Console.WriteLine("Press 'Q' to quit") strMenu = Console.ReadLine Select Case strMenu Case "A" Call addRecord() Case "E" Call editRecord() Case "D" Case "C" Case "G" Case "R" Case "S" End Select Loop Until strMenu = "Q" End Sub End Module